WB-MSW - invalid crc + invalid packet size: 0

Добрый день, на шине 4е датчиков WB-MSW v.3 + 2а датчика WB-MSW v.4. все было ок, пока не обновил firmware до 4.30.0 для WB-MSW v.4, и до 4.29.11 для WB-MSW v.3. После чего по шине пошли ошибки, см. лог

|11-09-2023 10:48:38.182 [wb-mqtt-serial]|WARNING: [modbus] failed to read 12 coil(s) @ 0 of device modbus:117: Serial protocol error: malformed response: invalid crc|
|---|---|
|11-09-2023 10:48:38.182 [wb-mqtt-serial]|WARNING: [modbus] failed to read 12 coil(s) @ 0 of device modbus:117: Serial protocol error: malformed response: invalid crc|
|11-09-2023 10:48:38.164 [wb-mqtt-serial]|WARNING: [serial client] Reading events failed: Serial protocol error: malformed response: invalid crc|
|11-09-2023 10:48:38.136 [wb-mqtt-serial]|WARNING: [serial client] Reading events failed: Serial protocol error: malformed response: invalid packet size: 0|
|11-09-2023 10:48:38.086 [wb-mqtt-serial]|WARNING: [serial client] Reading events failed: Serial protocol error: malformed response: invalid crc|
|11-09-2023 10:48:37.955 [wb-mqtt-serial]|WARNING: [modbus] failed to read 3 input(s) @ 106 of device modbus:117: Serial protocol error: malformed response: invalid crc|
|11-09-2023 10:48:37.937 [wb-mqtt-serial]|WARNING: [serial client] Reading events failed: Serial protocol error: malformed response: invalid crc|
|11-09-2023 10:48:37.907 [wb-mqtt-serial]|WARNING: [serial client] Reading events failed: Serial protocol error: malformed response: invalid packet size: 0|
|11-09-2023 10:48:37.859 [wb-mqtt-serial]|WARNING: [serial client] Reading events failed: Serial protocol error: malformed response: invalid crc|
|11-09-2023 10:48:37.510 [wb-mqtt-serial]|WARNING: [serial client] Reading events failed: Serial protocol error: malformed response: invalid packet size: 0|
|11-09-2023 10:48:37.461 [wb-mqtt-serial]|WARNING: [serial client] Reading events failed: Serial protocol error: malformed response: invalid crc|
|11-09-2023 10:48:37.461 [wb-mqtt-serial]|WARNING: [serial client] Reading events failed: Serial protocol error: malformed response: invalid crc|
|11-09-2023 10:48:37.069 [wb-mqtt-serial]|WARNING: [serial client] Reading events failed: Serial protocol error: malformed response: invalid packet size: 0|
|11-09-2023 10:48:37.019 [wb-mqtt-serial]|WARNING: [serial client] Reading events failed: Serial protocol error: malformed response: invalid crc|

методом проб и ошибок нашел WB-MSW v.4 из-за которого это происходит. Не уверен на 100%, но вроде он ближайший к контроллеру. Снимаем его - все ок. Перставил его в другое место - все ОК. Установил на его места другого WB-MSW v.4 с прошивкой 4.30.0, - проблема воспроизводится. Уже начал грешить на шину, но поставил на “проблемное место” WB-MSW v.3 со старой прошивкой 4.22.0 - и все работает, ошибок нет.

Помогите с решением. Вариант откатить датчики на предыдущую версию - тоже вариант, только стабильные версии подскажите пожалуйста для 3 и 4 поколения датчиков

Заранее спасибо,
Андрей

Добрый день.
Пришлите диагностический архив. А также серийные номера всех датчиков.

По данному описанию, я бы все-таки перепроверил физическое состояние шины.

1 лайк

Перепроверил линию, проблем не обнаружил. Зато выяснил, что из заказанных 7и датчиков глюки в любом месте шины от следующих 2х датчиков:

address 10, hw: 5.2B/9, fw: 4.30.0, 147235
address 11, hw: 5.2B/9, fw: 4.30.0, 147239

остальные 5ть работают без проблем на этой же линии в любом месте шины. Вот данные по рабочим:

address 168, hw: 5.2B/9, fw: 4.30.0, serial 146958
address 188, hw: 5.2B/9, fw: 4.30.0, serial 147001
address 203, hw: 5.2B/9, fw: 4.30.0, serial 147069
address 206, hw: 5.2B/9, fw: 4.30.0, serial 147081
address 215, hw: 5.2B/9, fw: 4.30.0, serial 147115

оставив на шине только два датчика WB-MSW v.4 10 и 11 все работает нормально. Методом научного перебора обнаружил, что ошибки валятся если на шине есть датчик протечки

WBMWAC	4264631033	118	1.20.1

и один из WB-MSW v.4 с номерами 10 или 11.

Собрал все обратно, без WBMWAC 118 на шине, но с WB-MSW v.4 10 или 11 - ошибок нет

Подскажите куда копать, что прислать!?
Заранее огромное спасибо

P.S. данная линия уже больше года работает без каких-либо проблем (от слова совсем) пока не появились WB-MSW v.4 10 или 11

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

Приложил три архива:

all_diag - подключены все модули
without_WBMWAC - без модуля протечки, но с датчиками WB-MSW-10-11 
without_WB-MSW-10-11 - без двух датчиков, но с модулем протечки

Огромное спасибо

приложен диагностический архив, доступен только сотрудникам поддержки
(187.9 KB)
приложен диагностический архив, доступен только сотрудникам поддержки
(188.0 KB)
приложен диагностический архив, доступен только сотрудникам поддержки
(187.8 KB)

Вы можете убрать параметр “Читать не чаще” (read_rate_limit_ms) для данного порта? Вы его с какой целью устанавливали? Попробуйте без него и сообщите результат.

Через WebUI я убрать это значение не могу, только выставить в 0. Выставил, сохранил - не помогло, к сожалению. Лог прилагается. Почему на всех портах он выставлен, это хороший вопрос, похоже, что он был выставлен изначально так на контроллере

приложен диагностический архив, доступен только сотрудникам поддержки
(187.0 KB)

Как убрать через веб-интерфейс: заходите в настройку порта, нажимаете на “Свойства” и убираете галочку с пункта “Читать не чаще”

В жизнь бы не догадался, думал, что это только в UI показывать или нет. Убрал на всех портах, не помогло к сожалению (

Спасибо


read_rate_limit_is_removed_diag_AEH7VGI_2023-09-14-11.35.33.zip (187.5 KB)

Странно конечно все.
Пока не вижу ничего явного, но давайте проверим в целом питание: какой блок питания установлен, напряжение на входе контроллера, что выдает Vout, а также какие устройства питаются от Vout, какие напрямую с БП.
Также я бы предложил (если по питанию все норм) в свойствах устройства установить галочку “Опрашивать устройство” и постепенно включать опрос устройств и смотреть появление ошибок. Просто искать проблему, когда устройства физически отключены, но есть в опросе, тяжеловато. Много лишнего. Давайте так попробуем локализовать, только вначале проверить питание.

тут как в зазеркалье, все страннее и страннее )) Откатил прошивку WBMWAC c 1.20.1 на 1.19.1

wb-mcu-fw-updater update-fw /dev/ttyRS485-1 -a118 --version 1.19.1  -f --debug

на шине подключено все, что ранее приводило к бесконечному флуду ошибками CRC. Прошло 10ть минут - флуда нет, эпизодически проскакивает

WARNING: [serial client] Failed to enable events for modbus:118: Serial protocol error: modbus exception, code 1

14-09-2023 12:13:08.668 [wb-mqtt-serial]	WARNING: [modbus] failed to read 7 coil(s) @ 5300 of device modbus:10: Serial protocol error: request timed out

14-09-2023 12:13:44.303 [wb-mqtt-serial]	WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:10: Serial protocol error: malformed response: invalid crc

“Лишние устройства” как-бы не лишние, а временно отключены )) но я сейчас максимально почищу конфигурацию, и пришлю лог еще раз

Подчистил в конфигурации все отключенные сейчас устройства, на шине включены WBMWAC 118 и все новые WB-MSW v.4 включая 10 и 11.

Флуда нет, лог приложил. Ради эксперимента могу обновить прошивку WBMWAC обратно на последнюю.

Жду дальнейших инструкций,
Спасибо

cleaned_diag_AEH7VGI_2023-09-14-12.33.26.zip (189.1 KB)

Да. Было б очень хорошо с обновленной прошивкой WBMWAC. Надо все-таки подтвердить или исключить влияние прошивки.

Ну и сосояние holding регистра 113 до и после обновления прошивки.

Посмотрите пожалуйста, это то что надо?

root@dr-wb:/mnt/data/diag# systemctl stop wb-mqtt-serial 
root@dr-wb:/mnt/data/diag# modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-1 -a118 -t0x03 -r113
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[76][03][00][71][00][01][DE][96]
Waiting for a confirmation...
<76><03><02><00><00><4C><4F>
SUCCESS: read 1 of elements:
	Data: 0x0000

Да. Гипотеза не подтвердилась…

Обновил прошивку на последнюю для WBMWAC 118 и понеслось. Смотрите ниже. Логи нужны?

wb-mcu-fw-updater update-fw /dev/ttyRS485-1 -a118  -f --debug
2023-09-14 13:53:29,264 Will run: fuser /dev/ttyRS485-1
2023-09-14 13:53:29,519 Clients of /dev/ttyRS485-1: 12059
2023-09-14 13:53:29,526 Will run: ps -o cmd= 12059
2023-09-14 13:53:29,728 Will run: fuser -k -STOP /dev/ttyRS485-1
2023-09-14 13:53:29,958 Reading /usr/lib/wb-release for releases info
2023-09-14 13:53:29,963 Got releases info:
2023-09-14 13:53:29,967 	defaultdict(<function parse_releases.<locals>.<lambda> at 0xa5ecf7c0>, {'RELEASE_NAME': 'wb-2307', 'SUITE': 'stable', 'TARGET': 'wb6/bullseye', 'REPO_PREFIX': ''})
2023-09-14 13:53:29,973 GET: http://fw-releases.wirenboard.com/
2023-09-14 13:53:40,327 Set {'baudrate': 9600, 'parity': 'N', 'stopbits': 2} to /dev/ttyRS485-1
2023-09-14 13:53:40,331 /dev/ttyRS485-1 response_timeout -> 0.20
2023-09-14 13:53:40,458 Set {'baudrate': 9600, 'parity': 'N', 'stopbits': 2} to /dev/ttyRS485-1
2023-09-14 13:53:40,462 /dev/ttyRS485-1 response_timeout -> 0.20
2023-09-14 13:53:40,467 Will find serial port settings for (/dev/ttyRS485-1 : 118; response_timeout: 0.20)...
2023-09-14 13:53:40,595 Has found serial port settings: {'baudrate': 9600, 'parity': 'N', 'stopbits': 2}
2023-09-14 13:53:40,940 /dev/ttyRS485-1 118:
2023-09-14 13:53:41,315 	WBMWAC 4264631033 wbmwacG 1.19.1 6447
2023-09-14 13:53:41,449 Removing device: {'slaveid': 118, 'port': '/dev/ttyRS485-1', 'fw_signature': 'wbmwacG'}
2023-09-14 13:53:41,574 FW releases files: ['http://fw-releases.wirenboard.com/fw/by-signature/release-versions.yaml']
2023-09-14 13:53:41,584 Looking to http://fw-releases.wirenboard.com/fw/by-signature/release-versions.yaml (suite: stable)
2023-09-14 13:53:41,591 GET: http://fw-releases.wirenboard.com/fw/by-signature/release-versions.yaml
2023-09-14 13:53:53,758 FW version for wbmwacG on release stable: 1.20.1 (endpoint: fw/by-signature/wbmwacG/main/1.20.1.wbfw)
2023-09-14 13:53:53,764 GET: http://fw-releases.wirenboard.com/fw/by-signature/wbmwacG/main/1.20.1.wbfw
2023-09-14 13:54:04,277 Trying to get fname from content-disposition
2023-09-14 13:54:04,290 Got fname: wbmwacG__1.20.1_master_919a7dc.wbfw
2023-09-14 13:54:04,295 http://fw-releases.wirenboard.com/fw/by-signature/wbmwacG/main/1.20.1.wbfw => /var/lib/wb-mcu-fw-updater/wbmwacG__1.20.1_master_919a7dc.wbfw
2023-09-14 13:54:04,301 fw (wbmwacG 118 on /dev/ttyRS485-1):
2023-09-14 13:54:04,306 Update: 1.19.1 -> 1.20.1 (wbmwacG 118 /dev/ttyRS485-1)
2023-09-14 13:54:04,422 Flashing approved for "wbmwacG" (/dev/ttyRS485-1 : 118)
2023-09-14 13:54:05,356 f = read_u16(<wb_modbus.bindings.WBModbusDeviceBase object at 0xa673d970>, 128) not succeed (try 1/5)
2023-09-14 13:54:05,563 f = read_u16(<wb_modbus.bindings.WBModbusDeviceBase object at 0xa673d970>, 128) not succeed (try 2/5)
2023-09-14 13:54:05,780 f = read_u16(<wb_modbus.bindings.WBModbusDeviceBase object at 0xa673d970>, 128) not succeed (try 3/5)
2023-09-14 13:54:05,990 f = read_u16(<wb_modbus.bindings.WBModbusDeviceBase object at 0xa673d970>, 128) not succeed (try 4/5)
2023-09-14 13:54:06,247 f = read_u16(<wb_modbus.bindings.WBModbusDeviceBase object at 0xa673d970>, 128) not succeed (try 5/5)
2023-09-14 13:54:06,253 Set {'baudrate': 9600, 'parity': 'N', 'stopbits': 2} to /dev/ttyRS485-1
2023-09-14 13:54:06,260 /dev/ttyRS485-1 response_timeout -> 0.20
2023-09-14 13:54:06,264 /dev/ttyRS485-1 response_timeout -> 5.00
2023-09-14 13:54:09,201 Flashing /var/lib/wb-mcu-fw-updater/wbmwacG__1.20.1_master_919a7dc.wbfw
2023-09-14 13:54:09,206 /dev/ttyRS485-1 response_timeout -> 6.00
2023-09-14 13:54:09,425 /dev/ttyRS485-1 response_timeout -> 5.00
100%|#################################################################################################################################################################################################################################################|201/201
2023-09-14 13:55:01,506 Done
2023-09-14 13:55:01,520 Has saved db to /var/lib/wb-mcu-fw-updater/devices.jsondb
2023-09-14 13:55:01,525 Will run: fuser -k -CONT /dev/ttyRS485-1
root@dr-wb:/mnt/data/diag# systemctl stop wb-mqtt-serial 
root@dr-wb:/mnt/data/diag# modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-1 -a118 -t0x03 -r113
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[76][03][00][71][00][01][DE][96]
Waiting for a confirmation...
<76><03><02><00><00><4C><4F>
SUCCESS: read 1 of elements:
	Data: 0x0000 
root@dr-wb:/mnt/data/diag# systemctl start wb-mqtt-serial

Да. Диагностический пришлите. Попробую воспроизвести.

С Debug включенным для wb-mqtt-serial только лучше.