Впервые про программируемый логический контроллер по имени CONTROLLINO мне довелось узнать году еще в 2014-м в случайной переписке с человеком, который подбирал себе ПЛК для домашней автоматизации. Я ему рекомендовал какие-то классические модели, а он в ответ сообщил, мол, видел на кикстартере некий интересный проект под названием CONTROLLINIO. Это промышленный ПЛК, который программируется так же, как Arduino, в его родной IDE.
Тот парень работал php-программером и С++ был для него не проблема. Деньги и идеи имел, а желания изучать LAD или Codesys нет. В итоге отписался, что сделал предзаказ на CONTROLLINO и больше на связь не выходил.
Не знаю, что и как у него вышло в конце концов, а вот мне через 3 года выпало поработать с этим девайсом.
Пока скрипел пером, понял, что материала будет много. Поэтому рассказ про 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.
Многие тут справедливо возразят, что стандарты ПЛК это конечно хорошо, но этот ПЛК стоит как ПЛК, а из ардуины и шилдов можно собрать под свои нужды систему намного дешевле. Не буду спорить, сам так делал и все работало. Выглядело примерно так, как фото прототипа героя статьи на страничке кикстартера.
С другой стороны, я знаю немало тех, кто загорался возможностями платформы Arduino, покупал их, мигал светодиодами и… на этом забрасывал. Освоив азы программирования они неожиданно понимали, что нужно на порядок больше времени что бы разобраться с электроникой, довести все до ума и собрать законченное изделие. Вдруг оказывается, что твое время реально стоит денег и тратить его без видимых перспектив не хочется.
Естественно, возникла идея автоматизировать производство. Обратился ко мне за советом, я ему рассказал про ПЛК и все такое. А через время набирает меня и говорит, что купил замечательную штуку, Ардуино называется. Уже помигал светодиодами- в ардуине язык си, а он его не забыл еще с того времени, как мы учились на компьютерщиков. Осталось дело за малым: прикупить шилдов, что-то спаять самому и тогда выведет производство на новый уровень.
Но прошел год, два, еще сколько-то, а дальше светодиодов дело не пошло. Хотя, может быть мешает новое увлечение- пчеловодство.
На мой взгляд, CONTROLLINO будет интересен тем ардуинщикам, кто не может или не хочет самостоятельно мастерить ПЛК для домашней автоматизации, а вместо этого готов купить уже готовое изделие. Тем более, что у CONTROLLINO есть все для применения в 'умном доме': 34 точки ввода/вывода, несколько интерфейсов связи и возможность управления всем этим из интернета.
В конце концов, CONTROLLINO просто красив.
Конструкция
Снимем крышку.
Внутри корпуса находятся 3 платы. Вынимаем верхнюю.
Видим старую добрую микросхему W5100, которая обеспечивает работу Ethernet.
Еще тут есть микропроцессор atmega16. Не то, что бы я удивился. ПЛК с несколькими микропроцессорами я уже наблюдал, например, в моделях фирмы ОВЕН. Но что этот процессор делает тут? Оказалось все просто- он отвечает за загрузку по USB. Точно так же, как и в оригинальной итальянской плате Arduino MEGA 2560.
У вас, как и у меня, скорее всего китайский клон, а в нем на загрузке стоит обычный usb/rs232 преобразователь.
Средняя и нижняя платы CONTROLLINO MAXI спаяны друг с другом, увы.
На нижней 'релейной' плате видны реле HF41F на ~250V/6A. Среднюю плату можем посмотреть только с одной стороны.
Видим микропроцессор ATmega2560 и обвязку входов и выходов. Для того, что бы найти соответствие входов и выходов CONTROLLINO пинам платы Arduino MEGA 2560, разработчик нарисовал большую схему.
Желтым отмечены названия клемм ПЛК, а синим- названия пинов Arduino Mega 2560. Например, реле R0 на ПЛК соответствует пину 22 Arduino Mega 2560.
Что бы замкнуть реле R0, в скетче нужно написать такие инструкции:
void setup() {
pinMode(22, OUTPUT);
}
void loop() {
digitalWrite(22, HIGH);
}
Но это тема уже следующей статьи.
Универсальные входа
12 входов, каждый можно в программе считать как аналоговый или дискретный. Два из них, IN0 и IN1, можно использовать как входы прерываний.
Аналоговые входа вольтовые, их диапазон зависит от напряжения питания ПЛК. Если ПЛК работает от 12V, то аналоговые сигналы имеют диапазон 0...13,2V. Если ПЛК работает от 24V, то диапазон аналоговых сигналов составляет 0...26,4V. АЦП 10 бит.
Транзисторные выхода
12 дискретных транзисторных выходов, каждый можно использовать как ШИМ.
Релейные выхода
Реле HF41F на ~250V/6A. 6 Ампер как-то маловато. Предположу, что такие реле выбраны потому, что они узкие и их можно больше разместить на небольшой площади.
Энергонезависимые часы реального времени
В качестве часов реального времени (RTC) тут не используется привычная ардуинщикам микросхема DS1307, которая работает по шине I2C. Здесь часами трудится микросхема RV-2123-C2-TA-QC-020 с интерфейсом SPI.
Вообще, их трех 'дополнительных' микросхем (Ethernet, RS-485 и RTC) в CONTROLLINO две работают по шине SPI и ни одной по I2C. Это удобно- 'квадратная' шина полностью свободна для подключения пользовательских устройств, например моей самодельной панели оператора с шиной I2C.
Посмотрите на схему подключения RTC и обратите внимание на прочерки в синих полях.
Прочерки означают, что к соответствующим контактам этой и других 'дополнительных' микросхем подключены те ножки микропроцессора ATmega2560, которые не выведены на пины Arduino MEGA 2560. Из Arduino IDE управлять этими ножками стандартной командой digitalWrite() нельзя, а можно только командами прямого доступа к портам. Такое схематическое решение имеет при программировании свои достоинства и недостатки(чего больше- вопрос), о чем я напишу в следующей части.
RS-485
Ни один современный ПЛК не обходится без порта RS-485 и CONTROLLINO тут не исключение. Для этого в нем установлена микросхема SN65HVD08.
RS-485 может работать в режиме и мастера и слейва.
Ethernet
Наконец-то знакомая микросхема! Чип W5100 уже стал синонимом понятия 'подключение ардуино к интернету'. Именно W5100 обеспечивает интерфейс Ethernet в CONTROLLINO.
То, что к контакту SCS подключена не 4 нога Ардуино, как принято в стандартных схемах подключения, а очередной 'прочерк', не усложняет программирование- все примеры работают без проблем.
Экспериментируя с эзернет, я и разворачивал на CONTROLLINO веб-сервер, и делал управление этим ПЛК через смартфон с помощью андроид-приложения Blynk.
Разъемы X1 и X2
Некоторые сигналы микроконтроллера выведены не только на клеммы в виде входов и выходов с соответствующей обвязкой, но и напрямую на два 26-пиновых разъема X1 и X2 через защитные резисторы.
Какие-то сигналы микропроцессора выведены и на клеммы и на разъемы, какие-то имеются только на клеммах, а какие-то только на разъемах. Например, интерфейсы SPI и I2C выведены только на разъем, сигналы релейных выходов R0...R9 есть только на клеммах, а аналоговые входа A0...IN1 есть и на разъемах и на клеммах.
Конечно, один и тот же сигнал на клемме и разъеме подключается и используется по-разному. Например, универсальные входа A0...IN1 можно запрограммировать в программе как выхода и использовать их таковыми через разъем, но через клемму выходами они работать не смогут- обвязка помешает.
Разъемы X1 и X2 делают использование ПЛК более гибким, позволяя подключать модули, которые привыкли применять ардуинщики в своих поделках. Скажем, датчики DTH22 или микросхемы, работающие по квадратной шине.
Вот я сделал панель оператора, которая работает по I2C и подключается к CONTROLLINO через разъем X1.
На этом про железо все. В следующей части я расскажу про особенности программирования ПЛК CONTROLLINO, как им управлять через интернет со смартфона из любой точки мира, как CONTROLLINO работает по ModbusRTU и о многом другом.
Ссылки
→ Официальный сайт CONTROLLINO
→ Страничка на кикстартере
→ Фейсбук проекта
→ RV-2123 SPI RTC
→ SN65HVD08 RS-485
→ HF41F реле
Автор: ExplodeMan