Modbus_client и Modbus TCP

Я на ESP-01 делаю адаптер для своего сигнализатора загазованности (СЗ) в котельной. Я хотел бы из него (адаптера) по Modbus TCP (чтобы не нагромождать адаптер ещё одним модулем RS-485 (один уже используется для чтения статуса с СЗ), тянуть провода и т.п.) считывать статус клапана и пищалки как discrete input.
Прототип набросал на основе примера - и он успешно работает с modbus_client на десктопе:

$ modbus_client --debug -mtcp 192.168.0.145 -t1 -r123 
Connecting to 192.168.0.145:502
[00][01][00][00][00][06][01][01][00][7B][00][01]
Waiting for a confirmation...
<00><01><00><00><00><04><01><01><01><40>
SUCCESS: read 1 of elements:
        Data: 0x00 

$ modbus_client --debug -mtcp 192.168.0.145 -t5 -r123 1
Data to write: 0x1
Connecting to 192.168.0.145:502
[00][01][00][00][00][06][01][05][00][7B][FF][00]
Waiting for a confirmation...
<00><01><00><00><00><06><01><05><00><7B><FF><00>
SUCCESS: written 1 elements!

$ modbus_client --debug -mtcp 192.168.0.145 -t1 -r123 
Connecting to 192.168.0.145:502
[00][01][00][00][00][06][01][01][00][7B][00][01]
Waiting for a confirmation...
<00><01><00><00><00><04><01><01><01><03>
SUCCESS: read 1 of elements:
        Data: 0x01 

$ modbus_client --debug -mtcp 192.168.0.145 -t5 -r123 0
Data to write: 0x0
Connecting to 192.168.0.145:502
[00][01][00][00][00][06][01][05][00][7B][00][00]
Waiting for a confirmation...
<00><01><00><00><00><06><01><05><00><7B><00><00>
SUCCESS: written 1 elements!

$ modbus_client --debug -mtcp 192.168.0.145 -t1 -r123 
Connecting to 192.168.0.145:502
[00][01][00][00][00][06][01][01][00][7B][00][01]
Waiting for a confirmation...
<00><01><00><00><00><04><01><01><01><10>
SUCCESS: read 1 of elements:
        Data: 0x00 

светодиод включается-выключается - всё ок.

ха! оказывается, но не на WB!

$ modbus_client --debug -mtcp 192.168.0.145 -t1 -r123
0xc0 Connecting to 0.0.0.0
[00][01][00][00][00][06][01][01][00][7B][00][01]
Waiting for a confirmation...
<00><01><00><00><00><03><01><81><02>
ERROR Illegal data address
ERROR occured!

Вопрос планировался про добавление в веб-интерфейс, но, похоже, он откладывается ))

на WB7 (stable)

dpkg -l |grep libmodbus
ii  libmodbus5:armhf              3.0.6-2+deb9u1                        armhf        library for the Modbus protocol
ii  modbus-utils                  1.2.4                                 armhf        Modbus client and server command line tools based on libmodbus

на десктопе

dpkg -l | grep libmodbus
ii  libmodbus5:amd64                             3.1.6-2                                   amd64        library for the Modbus protocol
ii  modbus-utils                                 1.2                                       amd64        Modbus client and server command line tools based on libmodbus

как заставить работать modbus_client c TCP на WB?

Здравствуйте!
Воспроизвёл у себя, разбираемся.

Гуд!
Напишете потом статус разбирательства? ))
а то я возлагаю большие надежды на свои поделки на ESP с доступом по Modbus TCP, ибо провода тянуть у меня не везде можно )

Обязательно.

А зачем, кстати, в ESPшке модбас, почему не закидывать в MQTT сразу?

а так я не буду знать, что датчик (роль которого у меня будет выполнять ESP) отвалился, например

Можно ещё таймштамп передавать. Но да, для модбасия хоть штатное средство есть.

Про работу же на WB - это баг конкретно modbus_client’а, в wb-mqtt-serial всё должно работать как надо.

ну вот я начал писать топик с запросом “как правильно добавить устройство c modbus tcp в конфиг в wb-mqtt-serial?”, ибо после добавления у меня “не работает”, ошибки в логах не помогли (ночью ))) понять почему, а в ходе описания запроса с пруфами, что “всё работает через modbus_client” обнаружилась ЭТА ошибка ))

А скинете свой шаблон и, заодно, список регистров, которые отдаёт ESPшка?

ну, раз wb-mqtt-serial работает по-другому (не связан с modbus_client), тогда я заведу отдельный топик на тему добавления в wb-mqtt-serial, чтобы всё в одну кучу не сваливать

1 Like

не заведу
похоже, что отменяется эта ошибка, т.к. диагностика показывает, что проблема в обработке множественных обращений к ESP ))

JFI

ан нет… похоже, всё же на стороне wb-mqtt-serial есть беда - Wb-mqtt-serial + Modbus TCP. Похоже, не обрабатывает разрыв соединения по инициативе сервера ))