Обновление MR6C привело к ошибке

Добрый день.

WB7, testing, обновил систему через “apt update && apt upgrade”, затем запустил “wb-mcu-fw-updater update-all”, который в ходе своей работы предложил обновить bootloader у всех устройств. При обновлении MR6C возникли проблемы, устройство стало работать не корректно, в частности, выходы K1 и K5 не реагируют на команды из веб-интерфейса.

Журнал обновления этого модуля:

2024-03-03 12:18:08,994 Bootloader update (v1.2.0 -> v1.4.0) for mr6cG /dev/ttyRS485-1:244 is available! (bootloader updates are highly recommended to install) Do a bootloader update? [Y/N]
2024-03-03 12:18:15,748 Flashing /var/lib/wb-mcu-fw-updater/bootloader/wb-bootloader-updater_mr6cG__1.4.0_master_c654e11.wbfw (36 data chunks)
100%|###########################################################################################################################################################################################################|36/36
2024-03-03 12:18:25,614 Flashing /var/lib/wb-mcu-fw-updater/mr6cG__1.21.1_master_ebe20ba.wbfw (213 data chunks)
100%|#########################################################################################################################################################################################################|213/213
2024-03-03 12:19:13,280 Checksum error in rtu mode: '²X' instead of '\x19k' . The response is: 'ô\x03\x18\x00m\x00r\x006\x00c\x00G\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00²X' (plain response: 'ô\x03\x18\x00m\x00r\x006\x00c\x00G\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00²X')
2024-03-03 12:19:13,300 No answer from:
2024-03-03 12:19:13,300 WB-MR6C (244, /dev/ttyRS485-1)
2024-03-03 12:19:13,301 Devices are possibly disconnected

Перезагрузка WB7 и повторная попутка дала следующие строки:

2024-03-03 12:21:11,780 Probing WB-MR6C (port: /dev/ttyRS485-1, slaveid: 244, uart_params: 115200N2, response_timeout: 0.50)...
2024-03-03 12:21:12,532 Unhandled exception!
Traceback (most recent call last):
  File "/usr/bin/wb-mcu-fw-updater", line 525, in <module>
    args.func(args)
  File "/usr/bin/wb-mcu-fw-updater", line 205, in update_all
    update_monitor._update_all(
  File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/update_monitor.py", line 737, in _update_all
    probing_result = probe_all_devices(
  File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/update_monitor.py", line 690, in probe_all_devices
    modbus_connection=get_correct_modbus_connection(
  File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/update_monitor.py", line 268, in get_correct_modbus_connection
    check_device_is_a_wb_one(modbus_connection)
  File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/update_monitor.py", line 221, in check_device_is_a_wb_one
    fw_sig = modbus_connection.get_fw_signature()
  File "/usr/lib/python3/dist-packages/wb_modbus/bindings.py", line 726, in get_fw_signature
    return self.read_string(self.COMMON_REGS_MAP["fw_signature"], self.FIRMWARE_SIGNATURE_LENGTH)
  File "/usr/lib/python3/dist-packages/wb_modbus/bindings.py", line 42, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/wb_modbus/bindings.py", line 69, in wrapper
    raise thrown_exc
  File "/usr/lib/python3/dist-packages/wb_modbus/bindings.py", line 63, in wrapper
    return f(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/wb_modbus/bindings.py", line 497, in read_string
    ret = minimalmodbus._hexlify(self.device.read_string(addr, regs_lenght, 3))
  File "/usr/lib/python3/dist-packages/wb_modbus/minimalmodbus.py", line 743, in read_string
    return self._generic_command(
  File "/usr/lib/python3/dist-packages/wb_modbus/minimalmodbus.py", line 1139, in _generic_command
    payload_from_slave = self._perform_command(functioncode, payload_to_slave)
  File "/usr/lib/python3/dist-packages/wb_modbus/minimalmodbus.py", line 1206, in _perform_command
    payload_from_slave = _extract_payload(response, self.address, self.mode, functioncode)
  File "/usr/lib/python3/dist-packages/wb_modbus/minimalmodbus.py", line 1688, in _extract_payload
    raise InvalidResponseError(text)
wb_modbus.minimalmodbus.InvalidResponseError: Checksum error in rtu mode: '²X' instead of '\x19k' . The response is: 'ô\x03\x18\x00m\x00r\x006\x00c\x00G\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00²X' (plain response: 'ô\x03\x18\x00m\x00r\x006\x00c\x00G\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00²X')

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

Добрый день.
Прочитайте с модуля сигнатуру, Репозиторий прошивок для Modbus-устройств Wiren Board — Wiren Board пожалуйста и напишите серийный номер модуля.

Не удалось выполнить команду в точности, как указано на сайте - выдаёт ошибку при указании -c 12.

Результат работы команды modbus_client -mrtu -pnone -s2 -b115200 /dev/ttyRS485-1 -a 244 -t3 -r 290 -c 10:

SUCCESS: read 10 of elements:
	Data: 0x006d 0x0072 0x0036 0x0063 0x0047 0x0000 0x0000 0x0000 0x0000 0x0000

Серийный номер из веб-интерфейса: 104091.

Сигнатура mr6cG
Тут она прочитана верно. И она существует, и соответствует этому модулю.
При этом запросом из wb-mcu-fw-updater читается устройство с ошибками. Рекомендую проверить лог wb-mqtt-serial на предмет количества ошибок, если более одной в минуту - то проверить шину, ее монтаж.
Ну и - если подключить модуль заведомо исправным кабелем одним устройством на порт - воспроизводится?

Добрый день.

Подключил устройство напрямую к контроллеру, это ничего не изменило.

В логах ошибок нет, но много warning-ов:

09-03-2024 11:52:07.078	WARNING: [register handler] failed to write: <modbus:244:coil: 0>: Serial protocol error: request timed out
... Здесь около 20 дублей строки выше ...
09-03-2024 11:52:06.348	WARNING: [register handler] failed to write: <modbus:244:coil: 4>: Serial protocol error: request timed out
09-03-2024 11:52:06.313	INFO: [serial client] Events are disabled for <modbus:244: reboot>
09-03-2024 11:52:06.313	INFO: [serial client] Events are enabled for <modbus:244:coil: 5>
09-03-2024 11:52:06.313	INFO: [serial client] Events are enabled for <modbus:244:coil: 4>
09-03-2024 11:52:06.313	INFO: [serial client] Events are enabled for <modbus:244:coil: 3>
09-03-2024 11:52:06.313	INFO: [serial client] Events are enabled for <modbus:244:coil: 3>
09-03-2024 11:52:06.313	INFO: [serial client] Events are enabled for <modbus:244:coil: 2>
09-03-2024 11:52:06.312	INFO: [serial client] Events are enabled for <modbus:244:coil: 1>
09-03-2024 11:52:06.312	INFO: [serial client] Events are enabled for <modbus:244:coil: 0>
09-03-2024 11:52:06.292	INFO: [serial device] device modbus:244 is connected
09-03-2024 11:52:06.292	INFO: [modbus] Init: disable legacy input mode control: setup register <modbus:244:holding: 5> <-- 0 (0x0)
09-03-2024 11:52:06.291	INFO: [modbus] Init: Baud rate: setup register <modbus:244:holding: 110> <-- 1152 (0x480)
09-03-2024 11:52:06.288	INFO: [modbus] Continuous read enabled [slave_id is 244]
09-03-2024 11:52:06.286	WARNING: [register handler] failed to write: <modbus:244:coil: 0>: Serial protocol error: request timed out
09-03-2024 11:52:06.285	WARNING: [serial device] device modbus:244 is disconnected
09-03-2024 11:52:06.285	WARNING: [serial device] device modbus:244 is disconnected
09-03-2024 11:52:06.237	WARNING: [register handler] failed to write: <modbus:244:coil: 4>: Serial protocol error: request timed out
... Здесь около 30 дублей строки выше ...
09-03-2024 11:52:05.100	WARNING: [register handler] failed to write: <modbus:244:coil: 0>: Serial protocol error: request timed out
09-03-2024 11:52:05.058	WARNING: </dev/ttyRS485-1 115200 8 N 2>: closed due to repetitive errors

Кусок лога явно говорит о том что с коммуникацией просто фатальные проблемы.
Покажите пожалуйста фото подключения. Ну и попробуйте записать те же coil с помощью modbus_client.
И выложите диагностический архив.

Добрый день.

Ниже вывод в консоль результата включения K6 и K5:

root@wirenboard ~ modbus_client --debug -mrtu -pnone -s2 -b115200 /dev/ttyRS485-1 -a244 -t0x05 -r5 1
Data to write: 0x1
Opening /dev/ttyRS485-1 at 115200 bauds (N, 8, 2)
[F4][05][00][05][FF][00][88][9E]
Waiting for a confirmation...
<F4><05><00><05><FF><00><88><9E>
SUCCESS: written 1 elements!

root@wirenboard ~ modbus_client --debug -mrtu -pnone -s2 -b115200 /dev/ttyRS485-1 -a244 -t0x05 -r5 0
Data to write: 0x0
Opening /dev/ttyRS485-1 at 115200 bauds (N, 8, 2)
[F4][05][00][05][00][00][C9][6E]
Waiting for a confirmation...
<F4><05><00><05><00><00><C9><6E>
SUCCESS: written 1 elements!

root@wirenboard ~ modbus_client --debug -mrtu -pnone -s2 -b115200 /dev/ttyRS485-1 -a244 -t0x05 -r4 1
Data to write: 0x1
Opening /dev/ttyRS485-1 at 115200 bauds (N, 8, 2)
[F4][05][00][04][FF][00][D9][5E]
Waiting for a confirmation...
<F4><05><00><04><FF><00><D9><5E>
SUCCESS: written 1 elements!

root@wirenboard ~ modbus_client --debug -mrtu -pnone -s2 -b115200 /dev/ttyRS485-1 -a244 -t0x05 -r4 0
Data to write: 0x0
Opening /dev/ttyRS485-1 at 115200 bauds (N, 8, 2)
[F4][05][00][04][00][00][98][AE]
Waiting for a confirmation...
ERROR Connection timed out: select
ERROR occured!

Фото подключения напрямую во вложении. Не обращайте внимание на цвета проводов - взял первый попавшийся короткий провод, что был под рукой. Питается Modbus от одного источника Mean Well HDR-60-12.

diag_output_AXKFM7XC_2024-03-17-13.18.24.zip (219,9 КБ)

Именно сами реле при этом переключаются?
Хочу напомнить что динии данных RS485 выполняются витой парой всегда, в любом случае.

Реле K1 и K5 включены и не выключаются. Остальные выходы включаются и выключаются нормально.

Подключал первый раз коротким сегментом витой пары, результат также неудачный, выше о нём писал.

Включеные реле - это замкнутые их контакты или светящийся светодиод на крышке?
Контакты могут , вполне, быть и сваренными сверхтоком.
Состояние светодиода меняется при записи 1 и 0 в соответствующий coil?
В принципе даже при безопасном режиме, если таймер установлен в несколько секунд - переключаться должны, но проверьте - как настроен.

Контакты замкнуты, диоды K1 и K5 всё время светятся. При записи в coil реле не щёлкают, диод состояние не меняет. Безопасный режим отключен, все выходы настроены одинаково. По крайней мере так это показывает веб-интерфейс.

В момент обновления прошивки MR6C на нём было нагрузки; к нему вообще не были подключены потребители, только фаза 230в на входе C1. Все реле в этот момент были в отключенном состоянии.

Сделайте сброс настроек модуля, для проверки. Опция -w как описано в Сервисная утилита wb-mcu-fw-flasher — Wiren Board

Запустил с остановленным wb-mqtt-serial:

root@wirenboard ~ wb-mcu-fw-flasher -d /dev/ttyRS485-1 -b115200 -s2 -a244 -w
/dev/ttyRS485-1 opened successfully.
Send format FlashFS command...
Error: Connection timed out.

Запустил с запущенным wb-mqtt-serial:

root@wirenboard ~ wb-mcu-fw-flasher -d /dev/ttyRS485-1 -b115200 -s2 -a244 -w
/dev/ttyRS485-1 opened successfully.
Send format FlashFS command...
Ok.
Device is in Bootloader now! To flash FW run
wb-mcu-fw-flasher -d <port> -f <firmware.wbfw>

Итог - ничего не поменялось: реле K1 и K5 не выключаются, прошивка через wb-mcu-fw-updater update-all не устанавливается.

Давайте мы бесплатно поменяем вам оборудование. Курьер привезёт новое оборудование и заберёт старое:

  • WB-MR6C v2 - 1 шт.

Для возврата напишите, пожалуйста, письмо на info@wirenboard.com.

В письме укажите:

  1. ссылку на эту тему,
  2. серийный номер устройства,
  3. ваш действующий телефон, адрес доставки, ФИО получателя.