WB-M1W2 за WB-MIO-E v2

Добрый день!
Вот какая проблема:
Есть на территории 19 объектов.
К каждому идет оптический кабель. На каждом конце оптики следующая конфигурация:
к WB-MIO-E v2 сбоку подключен WBIO-DO-R10A-8, + по RS485 два модуля WB-M1W2

С модулями реле всё нормально, а вот WB-M1W2 половина красных.
Иногда цепляются, серийные номера некоторые читаются, но из 38 штук, в онлайне стабильно только половина. Одних и тех же.
Сами WB-MIO-E в сети. Подключено всё верно. Два раза проверили. Ошибиться если бы и могли. в 1-2, но не половина.
Прошивки 4.29.11 (одна есть старее, - 4.16.17 но она работает).
Скорость везде 9600. Пробовал на 115200, ничего не меняется в поведении M1W2, только блок реле отваливается. Его тоже надо как то на 115200 переключать?

В какую сторону копать?

Добрый день.
Сами шлюзы настроены в каком режиме?
Для начала - посмотрите в логи, с какими именно ошибками идет обмен.
Точно ли сетевая задержка меньше таймаута?
Ну и - целесообразно проверить с помощью modbus_client - как отрабатывают запросы.

Здравствуйте!
Вот пытаюсь прочитать устройство с ID231 которо подключено к MIO-E c адресом 192.168.100.101

root@wirenboard-AOQ6J7W4:~# systemctl stop wb-mqtt-serial
root@wirenboard-AOQ6J7W4:~# modbus_client --debug -mtcp -t0x03 -p23 -a231 192.168.100.101
Connecting to 192.168.100.101:23
[00][01][00][00][00][06][E7][03][00][64][00][01]
Waiting for a confirmation...
ERROR Connection timed out: select
ERROR occured!
root@wirenboard-AOQ6J7W4:~# modbus_client --debug -mtcp -t0x03 -p23 -a231 192.168.100.101 -c
modbus_client: option requires an argument -- 'c'
Connecting to 192.168.100.101:23
[00][01][00][00][00][06][E7][03][00][64][00][01]
Waiting for a confirmation...
ERROR Connection timed out: select
ERROR occured!

На работающем канале устройства тоже самое
root@wirenboard-AOQ6J7W4:~# modbus_client --debug -mtcp -t0x03 -p23 -a206 192.168.100.109 -c
modbus_client: option requires an argument -- 'c'
Connecting to 192.168.100.109:23
[00][01][00][00][00][06][CE][03][00][64][00][01]
Waiting for a confirmation...
ERROR Connection timed out: select
ERROR occured!


root@wirenboard-AOQ6J7W4:~# ping 192.168.100.101
PING 192.168.100.101 (192.168.100.101) 56(84) bytes of data.
64 bytes from 192.168.100.101: icmp_seq=1 ttl=255 time=0.232 ms
64 bytes from 192.168.100.101: icmp_seq=2 ttl=255 time=0.196 ms
64 bytes from 192.168.100.101: icmp_seq=3 ttl=255 time=0.188 ms
64 bytes from 192.168.100.101: icmp_seq=4 ttl=255 time=0.204 ms
64 bytes from 192.168.100.101: icmp_seq=5 ttl=255 time=0.194 ms
64 bytes from 192.168.100.101: icmp_seq=6 ttl=255 time=0.197 ms
64 bytes from 192.168.100.101: icmp_seq=7 ttl=255 time=0.196 ms
64 bytes from 192.168.100.101: icmp_seq=8 ttl=255 time=0.198 ms
64 bytes from 192.168.100.101: icmp_seq=9 ttl=255 time=0.195 ms
64 bytes from 192.168.100.101: icmp_seq=10 ttl=255 time=0.198 ms
64 bytes from 192.168.100.101: icmp_seq=11 ttl=255 time=0.199 ms
64 bytes from 192.168.100.101: icmp_seq=12 ttl=255 time=0.199 ms
64 bytes from 192.168.100.101: icmp_seq=13 ttl=255 time=0.202 ms

Такой пинг нормальный для работы?

По подключению:
Сначала сделал
Work mode TCP Server None / В портах Передача пакетов через TCP
Пробовал вариант TCP Server ModbusTCP / ModbusTCP
Всё одинаково.

Логи прикладываю.

wb-mqtt-serial.log (5,6 КБ)

Да, вполне.
До нескольких мс - можно и не учитывать, вот когда задержка больше 20 и есть задержки 50-100 - тогда да.

Для выбора режима over TCP - должны, в общем, быть основания, например использование не Modbus устройств на шине после шлюза. У вас, как я понимаю, только Modbus устройства ведь?
Для того чтобы modbus_client работал через over TCP нужно предварительно сделать 3 и 4 пункт отсюда.
Или перенастройте один из шлюзов на Modbus TCP.

Мало, тут нет ошибок… Нужно несколько тысяч строк.

log_20240425T000121.log (1,0 МБ)

Вот логов загрузил побольше.
Посмотрите, пожалуйста.

Вижу таймауты, в основном.
Нормальный путь запроса: wb-mqtt-serial ставит в очередь сетевого драйвера пакет. Пакет Modbus TCP (или over TCP, это кстати важно) отправляется в ethernet шлюз, где принимается и отправляется в RS485 шину как modbus RTU. Уже WBIO шлюз принимает из шины Modbus RTU пакет - и отвечает на него. Ну и ответ следует обратным путем.
При проблеме на любом этапе - мастер не получит ответа.
Поэтому - проверьте, для начала отправляя запрос с помощью modbus_client.

Добрый день!
Первый рабочий экземпляр, второй нет.
(утилитой socat переключался на один адрес, и на другой)
Интересно то, что устройство с адресом 231, некоторое время назад пару дней работало.
Потом снова отвалилось.
Поеду по шкафам лазить, видимо всё таки физика. Хоть там и шлейфы по 20 см. и я уже на них смотрел, но надо поменять и исключить этот фактор. (либо проблема в них)

root@wirenboard-AOQ6J7W4:~# modbus_client --debug -mrtu  -pnone -s2 /dev/ttyRS485-5 -a247 -t0x03 -r128
Opening /dev/ttyRS485-5 at 9600 bauds (N, 8, 2)
[F7][03][00][80][00][01][91][74]
Waiting for a confirmation...
<F7><03><02><00><F7><31><D7>
SUCCESS: read 1 of elements:
        Data: 0x00f7
root@wirenboard-AOQ6J7W4:~# modbus_client --debug -mrtu  -pnone -s2 /dev/ttyRS485-5 -a231 -t0x03 -r128
Opening /dev/ttyRS485-5 at 9600 bauds (N, 8, 2)
[E7][03][00][80][00][01][93][E4]
Waiting for a confirmation...
ERROR Connection timed out: select
ERROR occured!

Да, очень-очень вероятно. Ну и заодно померьте напряжение питания, WB-MIO-E из опыта могут работать и от 6-7 вольт, WB-M1W2 выключаются при питании ниже 9.
Но тут есть способ, так как первые 2 секунды после запуска (перезапуска из-за низкого питания) модуль находится в загрузчике - можно прочитать регистры специфичные именно для загрузчика.
12 регистров с 290 адреса, одним запросом. Например:

modbus_client --debug -mrtu -pnone -s2 -b 9600 /dev/ttyRS485-1 -a28 -t3 -r 290 -c 12
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[1C][03][01][22][00][0C][E7][B4]
Waiting for a confirmation...
<1C><03><18><00><6D><00><63><00><6D><00><38><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><22><1B>
SUCCESS: read 12 of elements:
	Data: 0x006d 0x0063 0x006d 0x0038 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 

Ну и можно вот прямо сейчас включить чтение регистров uptime модулей, они есть в шаблоне.

И терминаторы поставьте, горстка резисторов ценой по рублю, а пользы от них много. Да, даже на 20 сантиметров.