Добрый день.
Планирую использовать стандартное железо 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]
…
Сколько это будет стоить? Отзовитесь если кому интересно.
Планирую использовать стандартное железо 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]
…
Сколько это будет стоить? Отзовитесь если кому интересно.