Проблема в каком-то виде воспроизводится уже месяц (с момента перехода на WB7, но справедливости ради стоит допустить, что в момент переключения что-то с линией произошло.).
Итого, есть линия modbus, на которой подключены последовательно:
Стороннее modbus-устройство
WB-MIR v2 (первый)
WB-MIR v2 (второй)
Линия отличается тем, что у неё stop-bits=1 (для работы стороннего устройства). У WB-MIR конфиг под это тоже поправлен.
Какие “странности” встречаются:
У стороннего устройства. периодически не читаются какие-то значения (в интерфейсе красным отмечается)
Ниже всё скриншоты с разницей в пару секунд. В настройках на всех каналах read period выставлен в 5000.
В логах:
12-08-2022 09:15:20.282 WARNING: [modbus] failed to read 1 holding(s) @ 1 of device modbus:3: Serial protocol error: malformed response: invalid crc
Стороннее устройство в какой-то момент вообще полностью отваливается
Все каналы становятся красными, лечится только перезагрузкой wb-mqtt-serial. Повторяется не быстро, но по ощущению только через пару дней работы.
У WB-MIR v2 перестали читаться каналы с ROM size
Это появилось, если не ошибаюсь, только сегодня.
В логах куча
|12-08-2022 09:15:21.056 |WARNING: [modbus] failed to read 10 input(s) @ 5400 of device modbus:23: Serial protocol error: request timed out|
|---|---|
|12-08-2022 09:15:20.799 |WARNING: [modbus] failed to read 10 input(s) @ 5400 of device modbus:235: Serial protocol error: request timed out|
Спустя где-то час работы оно скорее похоже на новогоднюю ёлку - периодически мигают то чёрным, то красным.
При всём при этом, значения температуры из этих WB-MIR читаются постоянно и без проблем (и значения меняются) из чего делаю вывод, что в принципе-то с линией всё ок и проблема в чём-то другом:
Здравствуйте!
Для диагностики проблемы пришлите, пожалуйста, архив с диагностической информацией контроллера. Создание архива описано в инструкции.
Для начала нужно проверить физическое подключение шины RS-485: нет ли обрывов проводов или замыканий между ними, включен ли терминатор на конце: RS-485:Физическое подключение — Wiren Board
Проверьте работу каждого из устройства по отдельности, когда остальные отключены. Есть ли ошибки?
Также попробуйте для проблемного порта задать время ожидания ответа, например, 1000 мс, и задержку перед записью в порт 5000 мс:
250-265 0x00FA - 0x0109 Input RO string Версия прошивки
Регистр 258 (input) - это символы версии прошивки. Какую температуру вы хотите считать?
Если значение в регистре не изменяется, то публиковаться по mqtt оно не будет, также не будет записываться в базу данных.
Не “считался” а попал в базу, как изменившийся.
Значения в базу пишутся не постоянно а в соответствии с ее (wb-mqtt-db) настройками.
Обратите внимание на скриншоты во втором сообщении. В истории последнее значение (25,8) отличалось от того, что запрашивал через утилиту (26,5).
Сейчас попробовал воспроизвести - пока совпадает и не понятно, работает ли корректно или просто пока повезло.
Регистр 258 (input) - это символы версии прошивки. Какую температуру вы хотите считать?
И стороннее вроде как тоже, но при всё при этом всё ещё вижу странное поведение
Сорри, если плохо сформулировал. Я читаю НЕ из WB-MIR, а из другого стороннего устройства, висящего на той же линии.
Оживлю эту тему. Прошёл месяц, нарабатывал какую-то статистику.
В итоге вижу всю ту же картину, что и в прошлый раз. С течением времени у одного из устройств всё больше и больше адресов перестают в принципе читаться WB, становятся красными.
Собственно на текущий момент, из 6 - “живых” осталось всего 2:
Если через веб-интерфейс смотреть, за всё время - только 2 ошибки про invalid CRC (адрес - как раз это устройство);
08-09-2022 17:28:41.639 WARNING: [modbus] failed to read 1 holding_single(s) @ 3 of device modbus:3: Serial protocol error: malformed response: invalid crc
07-09-2022 07:39:34.727 WARNING: [modbus] failed to read 1 holding_single(s) @ 3 of device modbus:3: Serial protocol error: malformed response: invalid crc
Тем не менее, на WB6 подобные ошибки периодически возникали в каком-то виде по разным устройствам с периодичностью раз в пару недель, т.е. всего 2 строчки не выглядят сильно страшными
Полу-оффтопик, в var/log/messages миллионами ошибки вида
что, возможно, вытесняет все другие записи в логе - по F7 не ищутся другие вхождения (по вашей инструкции отключал wifi - видимо последствия этого) Нет способа избавиться?
root@wirenboard-AXEZ4M3D:~# modbus_client --debug -mrtu -pnone -s1 /dev/ttyRS485-2 -a3 -t0x03 -r1
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 1)
[03][03][00][01][00][01][D4][28]
Waiting for a confirmation...
<03><03><02><00><01><00><44>
SUCCESS: read 1 of elements:
Data: 0x0001
Логи
11-09-2022 05:10:49.329 WARNING: [modbus] failed to read 1 input(s) @ 257 of device modbus:3: Serial protocol error: malformed response: invalid crc
11-09-2022 03:23:43.623 WARNING: [modbus] failed to read 1 holding_single(s) @ 3 of device modbus:3: Serial protocol error: request timed out
11-09-2022 01:18:23.809 WARNING: [modbus] failed to read 1 holding_single(s) @ 3 of device modbus:3: Serial protocol error: request timed out
10-09-2022 21:06:25.016 WARNING: [modbus] failed to read 1 holding(s) @ 1 of device modbus:3: Serial protocol error: illegal data value
10-09-2022 20:56:12.389 WARNING: [modbus] failed to read 1 input(s) @ 258 of device modbus:3: Serial protocol error: malformed response: invalid crc
10-09-2022 20:38:23.346 WARNING: [modbus] failed to read 1 holding_single(s) @ 3 of device modbus:3: Serial protocol error: malformed response: invalid crc
10-09-2022 19:41:25.722 WARNING: [modbus] failed to read 1 holding_single(s) @ 2 of device modbus:3: Serial protocol error: malformed response: invalid crc
10-09-2022 15:26:15.869 WARNING: [modbus] failed to read 1 input(s) @ 258 of device modbus:3: Serial protocol error: malformed response: invalid crc
10-09-2022 14:22:53.846 WARNING: [modbus] failed to read 1 holding_single(s) @ 2 of device modbus:3: Serial protocol error: malformed response: invalid crc
10-09-2022 11:15:30.217 WARNING: [modbus] failed to read 1 input(s) @ 257 of device modbus:3: Serial protocol error: malformed response: invalid crc
10-09-2022 08:27:55.756 WARNING: [modbus] failed to read 1 holding(s) @ 4 of device modbus:3: Serial protocol error: malformed response: invalid crc
10-09-2022 07:38:10.651 WARNING: [modbus] failed to read 1 holding_single(s) @ 2 of device modbus:3: Serial protocol error: malformed response: invalid crc
10-09-2022 07:09:32.797 WARNING: [modbus] failed to read 1 input(s) @ 257 of device modbus:3: Serial protocol error: malformed response: invalid crc
10-09-2022 01:58:01.431 WARNING: [modbus] failed to read 1 input(s) @ 258 of device modbus:3: Serial protocol error: malformed response: invalid crc
10-09-2022 01:57:01.370 WARNING: [modbus] failed to read 1 input(s) @ 258 of device modbus:3: Serial protocol error: malformed response: invalid crc
09-09-2022 23:59:42.048 WARNING: [modbus] failed to read 1 input(s) @ 258 of device modbus:3: Serial protocol error: malformed response: invalid crc
09-09-2022 23:02:20.401 WARNING: [modbus] failed to read 1 holding_single(s) @ 2 of device modbus:3: Serial protocol error: malformed response: invalid crc
09-09-2022 21:06:56.262 WARNING: [modbus] failed to read 1 input(s) @ 258 of device modbus:3: Serial protocol error: request timed out
09-09-2022 20:06:21.418 WARNING: [modbus] failed to read 1 holding(s) @ 4 of device modbus:3: Serial protocol error: malformed response: invalid crc
По логам предположил бы, что чтение прекращается после первой ошибки “illegal data value” просто потому что по остальным регистрам ошибки другие и они продолжают читаться, а по этому (1) была только одна такя ошибка и всё, больше читать не пытается.
Так. Вообще поведение правильное, сделано специально для того чтобы не опрашивать несуществующие (отсутствующие) регистры. Но почему возвращается (именно корректный ответ) периодически от устройства - непонятно. У устройства в документации нет ли для некоторых регистров такого поведения?
Про несуществующие/отсутствующие - опасение понятное, но как будто немного странно, что пользователь настроил считывание, значит скорее всего регистр есть. Почему нельзя сделать по аналогии с другими кодами ошибок?
12-09-2022 18:46:58.017 WARNING: [modbus] failed to read 1 holding_single(s) @ 3 of device modbus:3: Serial protocol error: illegal data value
Из интересного - в отличие от старой версии (см. скрины из первого сообщения), теперь отключение происходит строго последовательно, т.е. предположу, что именно первый опрос устройства приводит к такому состоянию.