Статья описывает преобразование Modbus RTU/TCP в HTTP с помощью бесплатного Node-RED и контроллера AntexGate. Показаны установка, настройка узлов и примеры HTTP-запросов для чтения и записи регистров.
- Для преобразования Modbus в HTTP предлагается использовать Node-RED и контроллер AntexGate.
- Установка Node-RED выполняется одним скриптом, затем сервис включается и выполняется перезагрузка.
- Плагин node-red-contrib-modbus устанавливается через веб-интерфейс Node-RED.
- Пример конфигурации включает опрос Modbus RTU на порту /dev/ttyRS485-1 115200-8-1-N и чтение 4 регистров с 512 функцией 3.
- HTTP API позволяет выполнять гибкое чтение и запись, включая тестовую запись без Modbus.
- Проверена запись значения 123 функцией 6 в регистр 512 и чтение 5 регистров с 512 функцией 3.
- Modbus RTU TCP
- HTTP
- Node-RED
- AntexGate
- node-red-contrib-modbus
- /dev/ttyRS485-1
- Read Holding Register
- RS485
Кому полезно: Инженерам АСУ ТП, которым нужно преобразовать Modbus в HTTP для веб-приложений.
- Статья Работаем с Zigbee-устройствами через Zigbee2mqtt и Node-RED
- Статья Встраиваемый компьютер AntexGate. От прототипа к серийному производству
- Статья Азы Node-Red: Subflow — зачем нужны и пример использования для управления умным светом
Первоисточник: habr.com
Выжимка составлена редакцией сайта с помощью ИИ по тексту статьи.
В мире промышленной автоматизации интерфейсы HMI устарели, выглядят пугающе и бытует мнение, что чем дороже программно-аппаратный комплекс, тем лучше он будет работать. Молодёжь, которая умеет рисовать красивые «WEB-морды» в этот бизнес не суется, всех пугает так называемые Machine to machine протоколы и интерфейсы, индустрия обросла опытными мужиками, которые понимают как выглядит два байта данных в одном регистре Modbus.
Итак статья для тех, кто столкнулся с задачей преобразовать Modbus RTU TCP в протокол HTTP, который уже можно вытянуть на любую красочную «web-морду», либо другой сервис.
Представим, что вы пришли на производство, в котором уже стоят промышленные приборы — датчики температуры, станки, принимающиепередающие данные по протоколу Modbus RTU TCP, а Вам нужно закинуть некоторые данные в систему мониторинга. Действительно подавляющее большинство систем мониторинга не смогут опросить устройства по Modbus без специального программно-аппаратного шлюза.
Предлагаем бесплатное программное обеспечение Node-Red и контроллер AntexGate и получаем мощный программно-аппаратный комплекс для преобразования различных протоколов. В предыдущей статье мы уже рассмотрели конвертацию ModbusTCP2ModbusRTU.
Первое, что необходимо – это установить программный продукт Node-Red, это делается одним скриптом:
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
Сделать Node-Red после установки сервисом:
sudo systemctl enable nodered.service
Перезагружаем «железяку»:
sudo reboot
Теперь попадаем в среду нашего программного конвертора Node-Red через web браузер по ссылке ip шлюза:1880
В настройках справа устанавливаем плагин node-red-contrib-modbus.
После того, как плагин установлен приступаем к настройке, делается это так же просто из web интерфейса. Нажимаем кнопку меню, импорт, примеры, Modbus-HTTP, импорт.
Итак, настройка почти закончилась, нам остается настроить наши модули опроса и записи на нужные параметры Modbus соединения.
Итак мы настраиваем все 4 узла. В моем случае это опрос Modbus RTU устройства с параметрами аппаратного порта /dev/ttyRS485-1 115200 — 8 — 1 — N. Еще 2 узла отвечают за автоматическое чтение из предустановленных регистров, поэтому я сразу настроил чтение массива 4х регистров начиная с 512, функцией (3) Read Holding Register. Кстати не забудьте собственно подключить конечное устройство к RS485 шине.
Теперь в блоке комментариев вы можете встретить API HTTP для взаимодействия, ниже с ними познакомимся.
## Read ### Flex Read http://ip:1880/modbus/flex/read?value=0&unitid=1&fc=3&address=0&quantity=1 http://ip:1880/modbus/flex/read?value=0&unitid=1&fc=4&address=0&quantity=1 http://ip:1880/modbus/flex/read?value=0&unitid=1&fc=3&address=0&quantity=5 http://ip:1880/modbus/flex/read?value=0&unitid=1&fc=4&address=0&quantity=5 ### Read http://ip:1880/modbus/read ## Write ### Test HTTP without Modbus http://ip:1880/modbus/flex/write/test?value=[1,2,3,4,5]&unitid=1&fc=16&address=0&quantity=5 ### Flex Write http://ip:1880/modbus/flex/write?value=10&unitid=1&fc=6&address=0&quantity=1 http://ip:1880/modbus/flex/write?value=[1,2,3,4,5]&unitid=1&fc=16&address=0&quantity=5 ### Write http://ip:1880/modbus/write
Мне были интересны пару запросов, которые прекрасно сработали.
Сначала тестируем функцию записи — пишем значение 123 в Modbus RTU устройство с адресом 16 функцией 6 в регистр 512 ну и длина записи 1 значение. Можно писать и сразу массивы функцией 16 например [1,2,3,4,5] тогда и длина записи соответственно 5.
Теперь проверим, записалось ли наше значение в нужное адресное пространство и прочитаем состояние 5-ти регистров начиная с 512 функцией 3.
Как видим значение записалось. Теперь мы можем внедрить наши данные в любое web приложение.
Источник: https://habr.com/ru/articles/825946/