Ардуино-совместимый ПЛК CONTROLLINO, часть 1

в 7:06, , рубрики: arduino, arduino mega2560, controllino, plc, Интернет вещей, плк, умный дом, метки: ,

Впервые про программируемый логический контроллер по имени CONTROLLINO мне довелось узнать году еще в 2014-м в случайной переписке с человеком, который подбирал себе ПЛК для домашней автоматизации. Я ему рекомендовал какие-то классические модели, а он в ответ сообщил, мол, видел на кикстартере некий интересный проект под названием CONTROLLINIO. Это промышленный ПЛК, который программируется так же, как Arduino, в его родной IDE.

Тот парень работал php-программером и С++ был для него не проблема. Деньги и идеи имел, а желания изучать LAD или Codesys нет. В итоге отписался, что сделал предзаказ на CONTROLLINO и больше на связь не выходил.

Не знаю, что и как у него вышло в конце концов, а вот мне через 3 года выпало поработать с этим девайсом.

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 1

Пока скрипел пером, понял, что материала будет много. Поэтому рассказ про CONTROLLINO разобью на две части: первая будет про железо, вторая про программирование.

На данный момент производится 4 модели CONTROLLINO: MINI, MAXI, MAXI-AUTOMATION и MEGA. Я работал с MAXI.

Краткие характеристики CONTROLLINO MAXI:

  • Микропроцессор ATmega2560
  • 12 универсальных дискретных/аналоговых входов
  • 12 транзисторных выходов, могут работать в режиме ШИМ
  • 10 релейных выходов, ~250V/6A
  • Энергонезависимые RTC
  • Ethernet
  • RS-485
  • SPI, I2C, 2xRS-232 TTL
  • Питание 12 или 24V DC
  • Размеры 72x90x62мм
  • Корпус на DIN-рейку
  • Программно совместим с Arduino MEGA 2560

CONTROLLINO и ARDUINO

Прежде всего нужно сказать о том, что CONTROLLINO это не Arduino в корпусе с клеммами вместо пинов, как некоторые могут подумать.

CONTROLLINO это программируемый логический контроллер, ПЛК. То есть, законченное изделие, применяемое в автоматизации, с соответствующей защитой входов и выходов. Конструкцию CONTROLLINO с Arduino как таковым (то есть с отладочной платой на базе чипа atmega) роднит только используемый микропроцессор.

Если разобрать CONTROLLINO (а мы разберем), то внутри не обнаружим спаянную с китайскими шилдами ардуину или, еще хуже, просто ардуину с проводами, закрученными на клеммы.
Совместимость же обеспечивается на уровне ПО- CONTROLLINO MAXI можно программировать из Arduino IDE как плату Arduino MEGA 2560. И там и там один и тот же процессор- ATmega2560.

Многие тут справедливо возразят, что стандарты ПЛК это конечно хорошо, но этот ПЛК стоит как ПЛК, а из ардуины и шилдов можно собрать под свои нужды систему намного дешевле. Не буду спорить, сам так делал и все работало. Выглядело примерно так, как фото прототипа героя статьи на страничке кикстартера.

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 2

С другой стороны, я знаю немало тех, кто загорался возможностями платформы Arduino, покупал их, мигал светодиодами и… на этом забрасывал. Освоив азы программирования они неожиданно понимали, что нужно на порядок больше времени что бы разобраться с электроникой, довести все до ума и собрать законченное изделие. Вдруг оказывается, что твое время реально стоит денег и тратить его без видимых перспектив не хочется.

Дима, привет!

Живущий в другом регионе одногруппник, открыл замечательный стартап. Вооружившись передовыми наработками из интернета, он перебрался за город и построил самогонный аппарат с большой производительностью. И все хорошо, продукт получался отменным(с его слов, я мало что в этом понимаю). Но технологический процесс длился 48 часов, в течении которых нужно по времени что-то включить, что-то выключить, отвинтить, закрутить и т.д. Спать доводилось урывками по два-три часа.

Естественно, возникла идея автоматизировать производство. Обратился ко мне за советом, я ему рассказал про ПЛК и все такое. А через время набирает меня и говорит, что купил замечательную штуку, Ардуино называется. Уже помигал светодиодами- в ардуине язык си, а он его не забыл еще с того времени, как мы учились на компьютерщиков. Осталось дело за малым: прикупить шилдов, что-то спаять самому и тогда выведет производство на новый уровень.

Но прошел год, два, еще сколько-то, а дальше светодиодов дело не пошло. Хотя, может быть мешает новое увлечение- пчеловодство.

На мой взгляд, CONTROLLINO будет интересен тем ардуинщикам, кто не может или не хочет самостоятельно мастерить ПЛК для домашней автоматизации, а вместо этого готов купить уже готовое изделие. Тем более, что у CONTROLLINO есть все для применения в 'умном доме': 34 точки ввода/вывода, несколько интерфейсов связи и возможность управления всем этим из интернета.

В конце концов, CONTROLLINO просто красив.

Конструкция

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 3

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 4

Снимем крышку.

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 5

Внутри корпуса находятся 3 платы. Вынимаем верхнюю.

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 6

Видим старую добрую микросхему W5100, которая обеспечивает работу Ethernet.

Еще тут есть микропроцессор atmega16. Не то, что бы я удивился. ПЛК с несколькими микропроцессорами я уже наблюдал, например, в моделях фирмы ОВЕН. Но что этот процессор делает тут? Оказалось все просто- он отвечает за загрузку по USB. Точно так же, как и в оригинальной итальянской плате Arduino MEGA 2560.

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 7

У вас, как и у меня, скорее всего китайский клон, а в нем на загрузке стоит обычный usb/rs232 преобразователь.

Средняя и нижняя платы CONTROLLINO MAXI спаяны друг с другом, увы.

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 8

На нижней 'релейной' плате видны реле HF41F на ~250V/6A. Среднюю плату можем посмотреть только с одной стороны.

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 9

Видим микропроцессор ATmega2560 и обвязку входов и выходов. Для того, что бы найти соответствие входов и выходов CONTROLLINO пинам платы Arduino MEGA 2560, разработчик нарисовал большую схему.

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 10

Желтым отмечены названия клемм ПЛК, а синим- названия пинов Arduino Mega 2560. Например, реле R0 на ПЛК соответствует пину 22 Arduino Mega 2560.

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 11

Что бы замкнуть реле R0, в скетче нужно написать такие инструкции:

void setup() {
  pinMode(22, OUTPUT);
}
void loop() {
  digitalWrite(22, HIGH);
  }

Но это тема уже следующей статьи.

Универсальные входа

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 12

12 входов, каждый можно в программе считать как аналоговый или дискретный. Два из них, IN0 и IN1, можно использовать как входы прерываний.

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 13

Аналоговые входа вольтовые, их диапазон зависит от напряжения питания ПЛК. Если ПЛК работает от 12V, то аналоговые сигналы имеют диапазон 0...13,2V. Если ПЛК работает от 24V, то диапазон аналоговых сигналов составляет 0...26,4V. АЦП 10 бит.

Транзисторные выхода

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 14

12 дискретных транзисторных выходов, каждый можно использовать как ШИМ.

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 15

Релейные выхода

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 16

Реле HF41F на ~250V/6A. 6 Ампер как-то маловато. Предположу, что такие реле выбраны потому, что они узкие и их можно больше разместить на небольшой площади.

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 17

Энергонезависимые часы реального времени

В качестве часов реального времени (RTC) тут не используется привычная ардуинщикам микросхема DS1307, которая работает по шине I2C. Здесь часами трудится микросхема RV-2123-C2-TA-QC-020 с интерфейсом SPI.

Вообще, их трех 'дополнительных' микросхем (Ethernet, RS-485 и RTC) в CONTROLLINO две работают по шине SPI и ни одной по I2C. Это удобно- 'квадратная' шина полностью свободна для подключения пользовательских устройств, например моей самодельной панели оператора с шиной I2C.

Посмотрите на схему подключения RTC и обратите внимание на прочерки в синих полях.
Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 18
Прочерки означают, что к соответствующим контактам этой и других 'дополнительных' микросхем подключены те ножки микропроцессора ATmega2560, которые не выведены на пины Arduino MEGA 2560. Из Arduino IDE управлять этими ножками стандартной командой digitalWrite() нельзя, а можно только командами прямого доступа к портам. Такое схематическое решение имеет при программировании свои достоинства и недостатки(чего больше- вопрос), о чем я напишу в следующей части.

RS-485

Ни один современный ПЛК не обходится без порта RS-485 и CONTROLLINO тут не исключение. Для этого в нем установлена микросхема SN65HVD08.

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 19

RS-485 может работать в режиме и мастера и слейва.

Ethernet

Наконец-то знакомая микросхема! Чип W5100 уже стал синонимом понятия 'подключение ардуино к интернету'. Именно W5100 обеспечивает интерфейс Ethernet в CONTROLLINO.

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 20

То, что к контакту SCS подключена не 4 нога Ардуино, как принято в стандартных схемах подключения, а очередной 'прочерк', не усложняет программирование- все примеры работают без проблем.

Экспериментируя с эзернет, я и разворачивал на CONTROLLINO веб-сервер, и делал управление этим ПЛК через смартфон с помощью андроид-приложения Blynk.

Разъемы X1 и X2

Некоторые сигналы микроконтроллера выведены не только на клеммы в виде входов и выходов с соответствующей обвязкой, но и напрямую на два 26-пиновых разъема X1 и X2 через защитные резисторы.

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 21
Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 22

Какие-то сигналы микропроцессора выведены и на клеммы и на разъемы, какие-то имеются только на клеммах, а какие-то только на разъемах. Например, интерфейсы SPI и I2C выведены только на разъем, сигналы релейных выходов R0...R9 есть только на клеммах, а аналоговые входа A0...IN1 есть и на разъемах и на клеммах.

Конечно, один и тот же сигнал на клемме и разъеме подключается и используется по-разному. Например, универсальные входа A0...IN1 можно запрограммировать в программе как выхода и использовать их таковыми через разъем, но через клемму выходами они работать не смогут- обвязка помешает.

Разъемы X1 и X2 делают использование ПЛК более гибким, позволяя подключать модули, которые привыкли применять ардуинщики в своих поделках. Скажем, датчики DTH22 или микросхемы, работающие по квадратной шине.

Вот я сделал панель оператора, которая работает по I2C и подключается к CONTROLLINO через разъем X1.

Ардуино-совместимый ПЛК CONTROLLINO, часть 1 - 23

На этом про железо все. В следующей части я расскажу про особенности программирования ПЛК CONTROLLINO, как им управлять через интернет со смартфона из любой точки мира, как CONTROLLINO работает по ModbusRTU и о многом другом.

Ссылки

Официальный сайт CONTROLLINO
Страничка на кикстартере
Фейсбук проекта
RV-2123 SPI RTC
SN65HVD08 RS-485
HF41F реле

Автор: ExplodeMan

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js