Глюки с устройствами после обновления

Добрый день.
Пару дней назад обновил контроллер (тестовый релиз). Параллельно пришли прошивки на устройства. Стал обновлять через вебку абсолютно бОльшая часть устройств обновились с ошибками, приходилось дообновлять через wb-mcu-fw-updater recover. При этом одно устройство так и не ожило. Хотя лампочкой моргает.
Дальше начались странности. Все устройства на всех шинах ведут себя крайне нестабильно. То отваливаются, то появляются. При попытке поиска устройств могут появиться в списке настроенных, а могут и нет. Также стали появляться устройства “Unknown”, однако судя по адресу это как раз живые модули.
изображение_2024-11-01_215603064

Опять же картина меняется. Пробовал всё ребутать. Отключать шину от устройств. Позитивных изменений нет.
В журнале много событий типа “WARNING: [serial client] Reading events failed: malformed response: invalid packet”. При этом механических изменений в систему не вносилось, началось исключительно после обновления прошивок. Короче паника. Чего делать, не понятно. Диагностические данные прилагаю.
diag_output_AIVY6QRV_2024-11-01-18.47.59.zip (205,2 КБ)

Здравствуйте.

Как именно это устройство моргает?

Что конкретно имеете ввиду под «отваливаются» и «появляются»?

Какие именно устройства ведут себя «странно»?

Благодарю за ответы.

Лампочка “S” то горит ровно, то начинает моргать. Потом опять ровно горит.
Устройства в списке устройств то отображаются чёрным. Потом вдруг покраснеют. Потом опять черным. Закономерности не понимаю. Например WB-LED 36, WB-MRWM2 215.
Датчики вынесены на отдельный порт (RS485-2) но также ведут себя нестабильно.

А сейчас при попытке запуска поиска вылезла вот такая штука:
Произошла ошибка во время сканирования портов: /dev/ttyRS485-1 9600-N-2. Более детальную информацию можно посмотреть в системном журнале
При этом в журнале все те же события.
изображение_2024-11-02_121945341
В общем “всё болит”. Может есть смысл предоставить вам доступ к живому контроллеру, проще будет.

Давайте начнем с /dev/ttyRS485-2 там вижу четыре датчика WB-MSW v.4.

  • Остановите wb-mqtt-serial:
systemctl stop wb-mqtt-serial
  • Прочитайте, пожалуйста, на скорости 57600 12 holding регистров, начиная с 290. Для каждого устройства (76, 85, 94, 134). На примере датчик с адресом 76
modbus_client --debug -mrtu -b57600 -pnone -s2 /dev/ttyRS485-2 -a76 -t3 -r 290 -c12

Пришлите, пожалуйста, вывод консоли.

root@wirenboard-AIVY6QRV:~# modbus_client --debug -mrtu -b57600 -pnone -s2 /dev/ttyRS485-2 -a76 -t3 -r 290 -c12
Opening /dev/ttyRS485-2 at 57600 bauds (N, 8, 2)
[4C][03][01][22][00][0C][EB][E4]
Waiting for a confirmation…
<4C><03><18><00><6D><00><73><00><77><00><35><00><47><00><00><00><00><00><00><00><00><00><00><00><00><00><00>
SUCCESS: read 12 of elements:
Data: 0x006d 0x0073 0x0077 0x0035 0x0047 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
root@wirenboard-AIVY6QRV:~# modbus_client --debug -mrtu -b57600 -pnone -s2 /dev/ttyRS485-2 -a85 -t3 -r 290 -c12
Opening /dev/ttyRS485-2 at 57600 bauds (N, 8, 2)
[55][03][01][22][00][0C][E9][ED]
Waiting for a confirmation…
<55><03><18><00><6D><00><73><00><77><00><35><00><47><00><00><00><00><00><00><00><00><00><00><00><00><00><00><03>
SUCCESS: read 12 of elements:
Data: 0x006d 0x0073 0x0077 0x0035 0x0047 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
root@wirenboard-AIVY6QRV:~# modbus_client --debug -mrtu -b57600 -pnone -s2 /dev/ttyRS485-2 -a94 -t3 -r 290 -c12
Opening /dev/ttyRS485-2 at 57600 bauds (N, 8, 2)
[5E][03][01][22][00][0C][E8][96]
Waiting for a confirmation…
<5E><18><6D>
ERROR CRC received 0xFE6D != CRC calculated 0x5328
ERROR occured!
root@wirenboard-AIVY6QRV:~# modbus_client --debug -mrtu -b57600 -pnone -s2 /dev/ttyRS485-2 -a134 -t3 -r 290 -c12
Opening /dev/ttyRS485-2 at 57600 bauds (N, 8, 2)
[86][03][01][22][00][0C][FA][4E]
Waiting for a confirmation…
<86><03><18><00><6D><00><73><00><77><00><35><00><47><00><00><00><00><00><00><00><00><00><00><00><00><00><00>
SUCCESS: read 12 of elements:
Data: 0x006d 0x0073 0x0077 0x0035 0x0047 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
root@wirenboard-AIVY6QRV:~#

Хм, устройство с адресом 94 не правильный ответ дало…Вернемся к нему, если будут проблемы. А теперь:
Попробуйте обновить каждый датчик через flasher. Здесь найдете файл прошивки для своих WB-MSW v.4. Выбирайте актуальную 4.31.11

Прошу поделиться результатами.

root@wirenboard-AIVY6QRV:~# wb-mcu-fw-flasher -d /dev/ttyRS485-2 -a 76 -f /home/msw5G__4.31.11_master_c37be2e.wbfw
/dev/ttyRS485-2 opened successfully.
/home/msw5G__4.31.11_master_c37be2e.wbfw opened successfully, size 42328 bytes

Sending info block…
Error while sending info block: Connection timed out

Error while sending info block: Connection timed out

Error while sending info block: Connection timed out
Error while sending info block.
Check connection, jump to bootloader and try again.
root@wirenboard-AIVY6QRV:~#

и так все

Обратите ввнимание, тут у вас устройства отвечают на 57600.
А точно ли они в загрузчике?

Не очень понял вопроса. Судя по настройкам флешера там можно отдельно указывать частоту для загрузчика и прошивки. Видимо вы это имеете в виду? Я не знаю, на какой частоте работает загрузчик, и не знаю, как проверить. Попробовал вот так.
root@wirenboard-AIVY6QRV:~# wb-mcu-fw-flasher -b57600 -B57600 -d /dev/ttyRS485-2 -a 76 -f /home/msw5G__4.31.11_master_c37be2e.wbfw
/dev/ttyRS485-2 opened successfully.
/home/msw5G__4.31.11_master_c37be2e.wbfw opened successfully, size 42328 bytes

Sending info block…
Error while sending info block: Illegal data address
Not in bootloader mode? Try repeating with -j
root@wirenboard-AIVY6QRV:~#
результат, как я понимаю, опять не очень

Добавьте, пожалуйста, флаг -j в свою команду:

wb-mcu-fw-flasher -j -d /dev/ttyRS485-2 -a 76 -f /home/msw5G__4.31.11_master_c37be2e.wbfw

Прошу поделиться результатом

root@wirenboard-AIVY6QRV:~# wb-mcu-fw-flasher -j -d /dev/ttyRS485-2 -a 76 -f /home/msw5G__4.31.11_master_c37be2e.wbfw
/dev/ttyRS485-2 opened successfully.
Send jump to bootloader command and wait 2 seconds…
Error: Connection timed out.
May be device already in bootloader, check status led
/home/msw5G__4.31.11_master_c37be2e.wbfw opened successfully, size 42328 bytes

Sending info block…
Error while sending info block: Connection timed out

Error while sending info block: Connection timed out

Error while sending info block: Connection timed out
Error while sending info block.
Check connection, jump to bootloader and try again.
root@wirenboard-AIVY6QRV:~#

Здравствуйте. Благодарю за ожидание.

Давайте попробуем еще одно. Выполнить обновлении на скорости 57600:

wb-mcu-fw-flasher -j -b57600 -d /dev/ttyRS485-2 -a 76 -f /home/msw5G__4.31.11_master_c37be2e.wbfw

те датчики, что изначально отвечали нормально, все успешно обновились
а тот, что 94, не захотел
root@wirenboard-AIVY6QRV:~# wb-mcu-fw-flasher -j -b57600 -d /dev/ttyRS485-2 -a 94 -f /home/msw5G__4.31.11_master_c37be2e.wbfw
/dev/ttyRS485-2 opened successfully.
Send jump to bootloader command and wait 2 seconds…
Error: Connection timed out.
May be device already in bootloader, check status led
/home/msw5G__4.31.11_master_c37be2e.wbfw opened successfully, size 42328 bytes

Sending info block…
Error while sending info block: Response not from requested slave

Error while sending info block: Response not from requested slave

Error while sending info block: Response not from requested slave
Error while sending info block.
Check connection, jump to bootloader and try again.

Допускаю, что там с физикой что-то не так, смогу проверить только вечером и результаты сообщить.
Честно говоря меня сильно волнуют устройства на порту 1, в частности led контроллеры. Тот, что 142, вообще кирпич. А 36 иногда выходит на связь, а потом опять пропадает. Остальные реле ведут себя подобным образом. Ту автоматику, которая завязана чисто на них (управление своими выходами со своих входов) они отрабатывают нормально. А ту, что ходит через правила контроллера, сильно через раз.

Проверьте, пожалуйста.

Для второго порта вам следует обновить каждое устройство через flasher аналогично тому, как вы обновляли датчики. Могу ли я как-то упростить для вас эту процедуру?

Чтобы попытаться прошить, нужно знать точную сигнатуру.
А чтобы её добыть, судя по мануалу, нужно чтобы нормально ответил modbus_client (боюсь прошить чем-нибудь не тем).
А оно отвечает криво, например:
root@wirenboard-AIVY6QRV:~# modbus_client --debug -mrtu -b115200 -pnone -s2 /dev/ttyRS485-1 -a36 -t3 -r 290 -c12
Opening /dev/ttyRS485-1 at 115200 bauds (N, 8, 2)
[24][03][01][22][00][0C][E3][0C]
Waiting for a confirmation…
ERROR Connection timed out: select
<24><03><1E><00><6C><00><65><00><64><47><00><00><00><00><00><00><00><00><00><00><00><00><00>ERROR occured!
root@wirenboard-AIVY6QRV:~# modbus_client --debug -mrtu -b115200 -pnone -s2 /dev/ttyRS485-1 -a182 -t3 -r 290 -c12
Opening /dev/ttyRS485-1 at 115200 bauds (N, 8, 2)
[B6][03][01][22][00][0C][FF][BE]
Waiting for a confirmation…
ERROR Connection timed out: select
ERROR occured!
root@wirenboard-AIVY6QRV:~#
Любопытно то, что все устройства на шине отвечают с ошибками, хотя она короткая, в пределах шкафа, и всё сделано последовательно, т.е. максимально соответствует требованиям.
Можете подсказать сигнатуры для WB-MR6C v.3, WB-LED, WB-MWAC v.2, WB-MRWM2?

Проверьте пожалуйста что на момент выполнения команды порт не занят ничем.

а как это сделать?
я тушу службу systemctl stop wb-mqtt-serial и отчаянно надеюсь
есть ещё какие-то способы?

Проверьте с помощью

fuser -v /dev/tty* 

если порт не занят - то ошибок при опросе не должно быть. Если есть - то надо смотреть на шину. Как вариант - проверить терминатор, отключить вообще все и подключать по одному. Ошибок быть не должно (ну, одна-две на несколько тысяч опросов допустимы).

Попытался прошить WB-LED, который не отвечает, вот чего написал:
root@wirenboard-AIVY6QRV:~# wb-mcu-fw-flasher -j -b115200 -d /dev/ttyRS485-1 -a 142 -f /home/ledG__3.5.1_master_cf2e899.wbfw
/dev/ttyRS485-1 opened successfully.
Send jump to bootloader command and wait 2 seconds…
Error: Connection timed out.
May be device already in bootloader, check status led
/home/ledG__3.5.1_master_cf2e899.wbfw opened successfully, size 32808 bytes

Sending info block…
Error while sending info block: Response not from requested slave

Error while sending info block: Response not from requested slave

Error while sending info block: Response not from requested slave
Error while sending info block.
Check connection, jump to bootloader and try again.
root@wirenboard-AIVY6QRV:~#

Если просто попытаться читать его регистры, вот что пишет:
root@wirenboard-AIVY6QRV:~# modbus_client --debug -mrtu -b115200 -pnone -s2 /dev/ttyRS485-1 -a142 -t3 -r 290 -c12
Opening /dev/ttyRS485-1 at 115200 bauds (N, 8, 2)
[8E][03][01][22][00][0C][FB][06]
Waiting for a confirmation…
ERROR Connection timed out: select
ERROR occured!
Перетыкал в разные разъёмы на шине, в т.ч. в те, в которых устройства нормально отвечают. Оставил устройство единственным на шине.
ЗЫ: Сейчас контроллер в релизе testing. Пробовал переводить в stable. Такое ощущение, что работает лучше. Все устройства, кроме тех, что демонстрируют признаки кирпича, работают стабильнее. Может вернуться в stable?

Добрый день.

В таком случае, пришлите пожалуйста два диагностических архива. Один с версией testing, другой со stable.

Благодарю.