• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужен Шлюз ModbusRTU-MQTT

max_code

New member
Добрый день.
Планирую использовать стандартное железо ESP8266, nodemcu, wemos + TTL -> RS485.
Назовем его "ESP"
Необходимо разработать прошивку:
или предложить другое железо цена/надежность/качество.

Железка нужна для управления и сбора данных с ряда устройств: Расходомер, Контроллер, Преобразователь частоты .. и т.д. Все они с интерфейсом RS485 и протоколом MODBUS RTU.

ТЗ на примере работы ESP и "Контроллера":
Существует контроллер 8 входов, 8 выходов.
Он работает по своей программе и справляется с локальным управлением. Планируется расположить рядом "ESP", который с одной стороны общается с "контроллером" по Modbus RTU, а с другой с брокером по MQTT. Нужно смотреть состояние входов и смотреть или изменить состояние выходов.

Данные 16 битные (каждый бит соответствует состоянию входа или выхода)
Входы можно только читать (функция 03H)
Выходы можно и читать, и писать (функции 03H, 06H)

Устройство "ESP" является шлюзом между Контроллером, MQTT брокером (например cloudmqtt.com или развернутым на основе Mosquitto или любой другой) и стандартной программой MQTT клиент на мобильном устройстве (например IoTmanager, Linear MQTT Dashboard).

Получается цепочка:
Контроллер -- "ESP" -- MQTT broker -- MQTT client

Каждой MOBDUS команде соответствует MQTT топик.

Пример:
MQTT client отправляет топик - client/q1/1, "ESP" читает топик и формирует modbus команду (010600070001F9CB), посылает ее контроллеру, ждет ответ и если все хорошо, то отправляет брокеру подтверждение plc/q1/1.

Путем замены файла\таблицы конфигурации, последующей перекомпиляции и заливки в "ESP" можно изменить список MQTT топиков и соответствующим им MODBUS командам.

Пример файла\таблицы конфигурации (можно и без него):

[Serial port]

Baud 9600

DataBits 8

StopBits 1

[Addr1]

Addr1 1

[MQTT1]

client/q1/1 (Addr0600070001)

plc/q1/1

client/q1/0 (Addr0600070000)

plc/q1/0

client/q2/1 (Addr0600070001)

plc/q2/1

client/q2/0 (Addr0600070000)

plc/q2/0



client/i1 (Addr0300050001)

plc/i1/x

client/i2 (Addr0300050001)

plc/i2/x



[Addr2]
...

[MQTT2]



Сколько это будет стоить? Отзовитесь если кому интересно.
 
Сверху Снизу