В прошлом обзоре была затронута тема подключения к Raspberry Pi готовых модулей, в частности релейного модуля с оптронной развязкой. Учитывая то, что планомерно ведется работа по применению в системе домашней автоматизации для работы с RS485 протокола Modbus RTU, вполне логичным является то, что сегодня мы рассмотрим подключение к Raspberry Pi контроллера китайского производства, работающего по указанному протоколу. На форуме как-то упоминался один из вариантов такого контроллера, который можно заказать на aliexpress, поэтому было решено остановиться именно на этом варианте.
Контроллер представляет собой печатную плату, на которой установлены микроконтроллер, драйвер интерфейса RS485, два реле с транзисторными ключами и элементами индикации состояния реле, индикатор работы последовательного интерфейса, стабилизатор напряжения, разъемы для подключения внешних цепей и матрица движковых переключателей, предназначенная для установки сетевого адреса и режима работы контроллера (рис.1)
Рис.1
Контроллер может работать в двух режимах – с управлением АТ-командами и с управлением по протоколу Modbus RTU. Нас интересует именно второй вариант, поэтому остановимся на нем более подробно.
Для перевода контроллера в режим Modbus RTU необходимо переключатель А5 матрицы переключателей установить в положение ON. Переключателями А0 - А4 в двоичном коде задается сетевой адрес контроллера, который может иметь значение от 1 до 32. В показанном на рис.2 примере контроллеры настроены на работу в режиме Modbus RTU с сетевыми адресами 1, 2, 3…32.
Рис.2
Согласно описанию, контроллер позволяет выполнить по двум каналам следующие команды:
- включить реле;
- отключить реле;
- инвертировать состояние реле;
- включить реле на 1 секунду;
- включить реле на 10 секунд;
- включить реле на 100 секунд.
Для проверки работы контроллер подключается к USB порту компьютера через переходник USB/RS485. В качестве управляющей программы используется терминалка Com Port Toolkit.
Формат каждой команды в режимах АТ и Modbus RTU приведен в описании к контроллеру. Все указанные команды управления при тестировании выполнялись в соответствии с описанием. В качестве ответного сообщения, контроллер ретранслирует полученную команду управления (рис.3):
Рис.3
В контроллере, помимо рассмотренных выше команд, есть еще и команда Latch (защелка), но логика ее работы осталась непонятна – при приеме этой команды просто включается соответствующее реле.
Для использования контроллера в системе домашней автоматизации на Raspberry Pi был написан простой web-интерфейс, который позволяет выполнить команды управления контроллером. Чтобы не создавать под контроллер отдельную web-страницу, элементы управления интегрированы в существующую web-страницу метеостанции (нижняя строка). С помощью элементов управления, можно выполнить наиболее «ходовые» команды – включить, отключить и включить реле на 1 секунду (рис.4).
Рис.4
Хотелось бы отметить и некоторые недостатки контроллера. Самый главный из них – это невозможность считать по Modbus RTU состояние регистров микроконтроллера и, следовательно, определить включено или отключено реле. А ещё лучше было бы наличие хотя бы двух дискретных входов, что бы через них гарантированно контролировать состояние реле. Тем более, что микроконтроллер имеет свободные порты. Кроме того, в случае пропадания питания, контроллер не запоминает последнее состояние реле - после восстановления питания оба реле всегда будут в отключенном состоянии.
Как видите, контроллер не лишен определенных недостатков. Хотя, с другой стороны, что можно хотеть от девайса за 10$, свою невысокую стоимость он полностью оправдывает.
Хотелось бы отметить и некоторые недостатки контроллера. Самый главный из них – это невозможность считать по Modbus RTU состояние регистров микроконтроллера
Команда 01 03 00 02 00 01 25 CA выдает состояние второго реле, где 01 - номер платы, 03 - команда чтения, 00 02 - номер реле, 00 01 - количество байт, 25 CA - crc. Ответ; 01 03 02 00 00 B8 44 - реле выключено, 01 03 02 00 01 79 84 - реле включено
Я считаю, что это идеальное решение управление сервоприводом АРА-651 ESBE через клапан Esbe VRG 131по датчику температуры на подающем трубопроводе, где обратной связью является поддержание заданной температуры, а как щелкают реле нам не интересно.