Almanah

<<< Back

Arduino и Serial ModbusTCP

Подключение Arduino к серверу MajorDoMo по ModbusTCP протоколу через последовательный порт UART

Вводные

МиниПК: BananaPiPro
Операционная система: ARMBIAN 5.38 stable Debian GNU/Linux 9 (stretch) 4.14.18-sunxi
Сервер MajorDoMo и модуль ModbusTCP

Установка ОС по ссылке
Установка службы ser2net
Библиотека для Arduino ModbusTCP

Описание

Летом 2017 года использовал MajorDoMo для управления теплицей на даче. В теплице было установлено 4 шт Arduino Pro mini объединенных через RS-485 интерфейс с ESP8266-1 ModbusTCP шлюзом на RTU RS-485. Значения температуры по зонам снимал с датчиков DS18B20 и управлял приводами форточек. На сервере MajorDoMo использовал модуль ModbusTCP. Локальная сеть включала в себя BananaPiPro с сервером MajorDoMo, старенький стационарный ПК с Windows XP для управления системой, роутер Asus RT-N10 в качестве WiFi точки доступа для связи с ESP8266 в теплице и смартфоном. Всё оборудование находилось в доме. Все бы хорошо, но была проблема! Периодически, а вернее очень часто, была потеря связи через WiFi, ESP8266 не могла соединиться с роутером ну и сервер не мог достучаться до теплицы.
В конце сезона производил земляные работы по прокладке трассы с коммуникациями (вода, электричество, связь) в теплицу, проложил витую пару. Решил отказаться от WiFi и ESP8266, и подключить RS-485 от теплицы к серверу через переходник USB to RS-485, т.к. ни Ethernet шилда для Arduino, ни другого сетевого девайса с какой-нибудь OpenWRT у меня нет.
На сервере установил службу ser2net для передачи данных из TCP порта на USB.
Возникает одно несоответствие: шлюз на ESP8266 преобразовывал пакет Modbus из TCP протокола в RTU протокол. Решил переписать библиотеку Arduino ModbusRtu для работы по протоколу ModbusTCP по последовательному порту.

Библиотека ModbusTCP для Arduino

Пакет протокола, так называемый PDU (Protocol Data Unit) у ModbusTCP и ModbusRtu одинаковый. Отличее только в заголовке MBAP (Modbus Application Header) для ModbusTCP и контрольной сумме CRC16 для ModbusRtu.
Описание Modbus тут. Библиотека для Arduino ModbusTCP для последовательного порта тут.
Теперь MajorDoMo общается по ModbusTCP через USB.

Discuss (0) (4)

See also:
2018-03-20 Сервис ser2net
2018-03-20 Arduino IDE на BananaPiPro
2018-03-20 Сервис SAMBA
2018-03-19 Armbian 5.38 (mainline) на BananaPiPro

Омск, Россия

На форуме: Almanah