Кнопка отрабатывает то быстро, то держать нужно долго

Случайно не второе устройство с таким же именем получилось?
И, кстати, таймауты для порта можно поднять, ну и проверить чтоб для порта были включены подтяжки:

Честно, ничего не понял что нужно сделать.

Сделать нужно следующее:

  • отключить программно все Modbus модули.
  • Оставить физически подключеным на шину один.
  • Проверить наличие ошибок обмена.
    Если ошибки есть - сменить кабель или подключить модуль другим, заведомо исправным кабелем.

Вот тут можно поподробней, как именно проверить наличие ошибок обмена? К примеру в ip сетях есть ping и traceroute. Что аналогичное и использовать тут? Как считать нужные показания. Возможно можно как-то мультиметром проверить линию? Можете дать конкретики. Я понимаю, что для вас это может быть само собой разумеющимся, но я тут новичек и честно уже перечитал много, но четких мануалов по построению шины rs-485 с её проверкой не нашел. Не отрицаю, что где-то в линии мог накосячить, но как мне найти этот косяк не понятно :frowning:

Включить (проще всего) Debug и посмотреть в журнал journalctl -u wb-mqtt-serial -f
Ошибки обмена, раз в минуту примерно - допустимы.

Да, проще всего - линию данных с одной стороны замкнуть с другой - прогвониь в режиме измерения сопротивления. Должно быть просто сопротивление проводов, при этом на линии “зели” и питания - звониться, замыкать - не должно.
Потом разомкнуть и снова прозвонить. Звониться не должно.

И, как и говорил выше - надо попробовать на одном устройства на линии. Если ошибки есть - то сменить кабель. Если нет - добавлять устройства.

1 лайк

Собрал полностью отдельную линию 485 и бросил её минуя силовых проводов, заземлил.
При тестировании одного WB-MIO:WBIO-DI-WD-14 происходят на линии такие задержки по 20 секунд раз в минуту или две:

May 08 22:33:10 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [modbus] read 14 coil(s) @ 0 of device modbus_io:22:1
May 08 22:33:10 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [port] Sleep 0 us
May 08 22:33:10 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [port] Write: 16 01 03 e8 00 0e 3e 99
May 08 22:33:10 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [port] Sleep 1000 us
May 08 22:33:10 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [port] ReadFrame: 16 01 02 00 00 cd ff
May 08 22:33:10 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN1' of device 'DI0' <-- 0
May 08 22:33:10 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN2' of device 'DI0' <-- 0
May 08 22:33:10 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN3' of device 'DI0' <-- 0
May 08 22:33:10 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN4' of device 'DI0' <-- 0
May 08 22:33:10 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN5' of device 'DI0' <-- 0
May 08 22:33:10 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN6' of device 'DI0' <-- 0
May 08 22:33:10 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN7' of device 'DI0' <-- 0
May 08 22:33:10 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN8' of device 'DI0' <-- 0
May 08 22:33:10 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN9' of device 'DI0' <-- 0
May 08 22:33:10 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN10' of device 'DI0' <-- 0
May 08 22:33:10 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN11' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN1' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN2' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN3' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN4' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN5' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN6' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN7' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN8' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN9' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN10' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN11' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN12' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN13' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'IN14' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [modbus] read 14 holding(s) @ 250 of device modbus_io:22:1
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [port] Sleep 0 us
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [port] Write: 16 03 04 e2 00 0e 66 2f
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [port] Sleep 1000 us
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [port] ReadFrame: 16 03 1c 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 3e 00 28 00 2c 00 0c 00 0c 00 0e 00 12 cb 4f
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'Counter 1' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'Counter 2' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'Counter 3' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'Counter 4' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'Counter 5' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'Counter 6' of device 'DI0' <-- 0
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'Counter 7' of device 'DI0' <-- 64
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'Counter 8' of device 'DI0' <-- 62
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'Counter 9' of device 'DI0' <-- 40
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'Counter 10' of device 'DI0' <-- 44
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'Counter 11' of device 'DI0' <-- 12
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'Counter 12' of device 'DI0' <-- 12
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'Counter 13' of device 'DI0' <-- 14
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [serial port driver] channel 'Counter 14' of device 'DI0' <-- 18
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [modbus] read 14 coil(s) @ 0 of device modbus_io:22:1
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [port] Sleep 0 us
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [port] Write: 16 01 03 e8 00 0e 3e 99
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [port] Sleep 1000 us
May 08 22:33:35 wirenboard-A3XSMV7Z wb-mqtt-serial[16308]: DEBUG: [port] ReadFrame: 16 01 02 00 00 cd ff

Аналогичные залипания происходят и на реле по 20 секунд, когда одни к шине подключены.

Такое поведение в пределах нормы?

May 08 23:28:28 wirenboard-A3XSMV7Z wb-mqtt-serial[20824]: INFO: [serial client] device modbus:90 is connected
May 08 23:28:28 wirenboard-A3XSMV7Z wb-mqtt-serial[20824]: INFO: [serial client] device modbus_io:22:1 is connected
May 08 23:28:28 wirenboard-A3XSMV7Z wb-mqtt-serial[20824]: INFO: [serial client] device modbus:130 is connected
May 08 23:37:13 wirenboard-A3XSMV7Z wb-mqtt-serial[20824]: WARNING: [modbus] failed to read 14 coil(s) @ 0 of device modbus_io:22:1: Serial protocol error: request timed out
May 08 23:39:23 wirenboard-A3XSMV7Z wb-mqtt-serial[20824]: WARNING: [modbus] failed to read 14 coil(s) @ 0 of device modbus_io:22:1: Serial protocol error: request timed out
May 08 23:40:30 wirenboard-A3XSMV7Z wb-mqtt-serial[20824]: WARNING: [modbus] failed to read 6 coil(s) @ 0 of device modbus:90: Serial protocol error: request timed out
May 08 23:43:14 wirenboard-A3XSMV7Z wb-mqtt-serial[20824]: WARNING: [modbus] failed to read 14 coil(s) @ 0 of device modbus_io:22:1: Serial protocol error: request timed out
May 08 23:46:54 wirenboard-A3XSMV7Z wb-mqtt-serial[20824]: WARNING: [modbus] failed to read 6 coil(s) @ 0 of device modbus:90: Serial protocol error: request timed out
May 08 23:50:33 wirenboard-A3XSMV7Z wb-mqtt-serial[20824]: WARNING: [modbus] failed to read 6 coil(s) @ 0 of device modbus:90: Serial protocol error: request timed out
May 08 23:50:37 wirenboard-A3XSMV7Z wb-mqtt-serial[20824]: WARNING: [modbus] failed to read 14 coil(s) @ 0 of device modbus_io:22:1: Serial protocol error: request timed out
May 08 23:54:15 wirenboard-A3XSMV7Z wb-mqtt-serial[20824]: WARNING: [modbus] failed to read 14 coil(s) @ 0 of device modbus_io:22:1: Serial protocol error: request timed out
May 09 00:04:18 wirenboard-A3XSMV7Z wb-mqtt-serial[20824]: WARNING: [modbus] failed to read 1 discrete(s) @ 7 of device modbus:130: Serial protocol error: request timed out
May 09 00:06:08 wirenboard-A3XSMV7Z wb-mqtt-serial[20824]: WARNING: [modbus] failed to read 6 coil(s) @ 0 of device modbus:90: Serial protocol error: request timed out
May 09 00:10:25 wirenboard-A3XSMV7Z wb-mqtt-serial[20824]: WARNING: [modbus] failed to read 6 coil(s) @ 0 of device modbus:130: Serial protocol error: request timed out
May 09 00:15:01 wirenboard-A3XSMV7Z wb-mqtt-serial[20824]: WARNING: [modbus] failed to read 6 discrete(s) @ 0 of device modbus:90: Serial protocol error: request timed out
May 09 00:16:45 wirenboard-A3XSMV7Z wb-mqtt-serial[20824]: WARNING: [modbus] failed to read 6 coil(s) @ 0 of device modbus:90: Serial protocol error: request timed out
May 09 00:17:06 wirenboard-A3XSMV7Z wb-mqtt-serial[20824]: WARNING: [modbus] failed to read 14 coil(s) @ 0 of device modbus_io:22:1: Serial protocol error: request timed out
May 09 00:19:10 wirenboard-A3XSMV7Z wb-mqtt-serial[20824]: WARNING: [modbus] failed to read 2 input(s) @ 54 of device modbus:90: Serial protocol error: request timed out
May 09 00:19:32 wirenboard-A3XSMV7Z wb-mqtt-serial[20824]: WARNING: [modbus] failed to read 6 coil(s) @ 0 of device modbus:130: Serial protocol error: request timed out
May 09 00:20:41 wirenboard-A3XSMV7Z wb-mqtt-serial[20824]: WARNING: [modbus] failed to read 14 coil(s) @ 0 of device modbus_io:22:1: Serial protocol error: request timed out

Все сделал. В результате убрал из цепочки полностью WB-MIO (разочаровался в нем). Оставил только 2 реле WB-MR6C, они вроде не конфликтуют особо:

root@wirenboard-A3XSMV7Z:~# tail -f /var/log/messages | grep -i warning
May  9 08:46:01 wirenboard-A3XSMV7Z wb-mqtt-serial[11326]: WARNING: [modbus] failed to read 1 holding(s) @ 8 of device modbus:130: Serial protocol error: request timed out
May  9 08:46:17 wirenboard-A3XSMV7Z wb-mqtt-serial[11326]: WARNING: [modbus] failed to read 1 input(s) @ 121 of device modbus:90: Serial protocol error: request timed out
^C
root@wirenboard-A3XSMV7Z:~# tail -f /var/log/messages | grep -i warning
May  9 08:55:38 wirenboard-A3XSMV7Z wb-mqtt-serial[11835]: WARNING: [modbus] failed to read 6 coil(s) @ 0 of device modbus:130: Serial protocol error: request timed out
May  9 08:58:02 wirenboard-A3XSMV7Z wb-mqtt-serial[12399]: WARNING: [modbus] failed to read 6 coil(s) @ 0 of device modbus:130: Serial protocol error: request timed out
May  9 08:59:30 wirenboard-A3XSMV7Z wb-mqtt-serial[12399]: WARNING: [modbus] failed to read 6 coil(s) @ 0 of device modbus:130: Serial protocol error: request timed out
May  9 09:03:29 wirenboard-A3XSMV7Z wb-mqtt-serial[12399]: WARNING: [modbus] failed to read 6 coil(s) @ 0 of device modbus:90: Serial protocol error: request timed out
May  9 09:05:21 wirenboard-A3XSMV7Z wb-mqtt-serial[12399]: WARNING: [modbus] failed to read 6 coil(s) @ 0 of device modbus:90: Serial protocol error: request timed out
May  9 09:06:14 wirenboard-A3XSMV7Z wb-mqtt-serial[12399]: WARNING: [modbus] failed to read 13 input(s) @ 39 of device modbus:130: Serial protocol error: request timed out

Это на сколько я понял в пределах нормы?

Вот настройки порта, может подскажете, что подкорректировать для надежности работы?
{
“path”: “/dev/ttyRS485-1”,
“devices”: [
{
“slave_id”: “90”,
“device_type”: “WB-MR6C”,
“name”: “R1”,
“id”: “R1”,
“protocol”: “modbus”,
“enabled”: true,
“response_timeout_ms”: 1,
“frame_timeout_ms”: 8,
“poll_interval”: 10
},
{
“slave_id”: “130”,
“device_type”: “WB-MR6C”,
“name”: “R0”,
“id”: “R0”,
“protocol”: “modbus”,
“response_timeout_ms”: 1,
“frame_timeout_ms”: 8,
“enabled”: true,
“poll_interval”: 10
}
],
“baud_rate”: 115200,
“parity”: “N”,
“data_bits”: 8,
“stop_bits”: 2,
“poll_interval”: 10,
“enabled”: true,
“response_timeout_ms”: 100
}

Я бы поменял на

“frame_timeout_ms”: 15,