WB7. "Странно" работает одна из линий ModBus

Обновите контроллер пожалуйста. Посмотрим, воспроизведется ли на новом wb-mqtt-serial

Обновил.

изменения пакетов для истории

libwbmqtt1-3/stable 3.8.1 armhf [upgradable from: 3.7.2]
linux-image-wb7/stable 5.10.35-wb120 armhf [upgradable from: 5.10.35-wb114]
linux-libc-dev/stable 5.10.35-wb120 armhf [upgradable from: 5.10.35-wb111]
python3-wb-diag-collect/stable 1.3.0 all [upgradable from: 1.2.0]
python3-wb-mcu-fw-updater/stable 1.5.1 all [upgradable from: 1.3.2]
u-boot-tools-wb/stable 2:2021.10+wb1.4.1 armhf [upgradable from: 2:2021.10+wb1.1.1]
u-boot-wb7/stable 2:2021.10+wb1.4.1 armhf [upgradable from: 2:2021.10+wb1.1.1]
wb-diag-collect/stable 1.3.0 all [upgradable from: 1.2.0]
wb-essential/stable 1.10.0 all [upgradable from: 1.9.0]
wb-hwconf-manager/stable 1.52.7 all [upgradable from: 1.50.0]
wb-mcu-fw-flasher/stable 1.1.0 armhf [upgradable from: 1.0.8]
wb-mcu-fw-updater/stable 1.5.1 all [upgradable from: 1.3.2]
wb-mqtt-adc/stable 2.5.0 armhf [upgradable from: 2.4.3]
wb-mqtt-confed/stable 1.8.1 armhf [upgradable from: 1.8.0]
wb-mqtt-dac/stable 1.2.0 all [upgradable from: 1.1.6]
wb-mqtt-db/stable 2.5.5 armhf [upgradable from: 2.5.3]
wb-mqtt-gpio/stable 2.8.4 armhf [upgradable from: 2.8.3]
wb-mqtt-homeui/stable 2.44.4 all [upgradable from: 2.35.1-wb1]
wb-mqtt-knx/stable 1.9.0 armhf [upgradable from: 1.5.0]
wb-mqtt-logs/stable 1.3.0-wb100 armhf [upgradable from: 1.2.0]
wb-mqtt-serial/stable 2.68.6-wb105 armhf [upgradable from: 2.59.2-wb2]
wb-mqtt-w1/stable 2.2.2 armhf [upgradable from: 2.2.1]
wb-release-info/stable 1.0-stable~wb7+stretch~20220909045255 all [upgradable from: 1.0-stable~wb7+stretch~20220712142907]
wb-rules/stable 2.11.4 armhf [upgradable from: 2.11.3]
wb-rules-system/stable 1.8.1 all [upgradable from: 1.8.0]
wb-suite/stable 1.11.0 all [upgradable from: 1.9.0]
wb-test-suite-deps/stable 1.12.0 all [upgradable from: 1.9.0]
wb-utils/stable 3.7.0 all [upgradable from: 3.5.1]

Пока полёт нормальный, в логах за это время 4 ошибки было (разные линии):

09-09-2022 12:46:24.016 	WARNING: [modbus] failed to read 1 holding_single(s) @ 2 of device modbus:3: Serial protocol error: malformed response: invalid data size
09-09-2022 11:36:55.941 	WARNING: [modbus] failed to read 1 input(s) @ 258 of device modbus:3: Serial protocol error: malformed response: invalid crc
09-09-2022 11:36:55.932 	WARNING: [modbus] failed to read 6 discrete(s) @ 0 of device modbus:97: Serial protocol error: malformed response: invalid crc
09-09-2022 10:20:17.408 	WARNING: [modbus] failed to read 6 coil(s) @ 0 of device modbus:26: Serial protocol error: malformed response: invalid crc

Никакие регистры с концами не отваливаются. Буду дальше наблюдать.

Одна-две ошибки в минуту - вполне допустимы, у вас их, ошибок пренебрежимо мало.

Кажется, что наблюдается примерно то же поведение. Отвалился первый регистр:

Modbus_client данные успешно читает:

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) была только одна такя ошибка и всё, больше читать не пытается.

Так, то есть после первой же “illegal data value”
просто больше нет обращений? Попробую воспроизвести, для этого соберу стенд с эмулятором.

Я бы сказал, что это гипотеза на основе наблюдения и она подтверждается.

Отвалился второй регистр:

Логи
12-09-2022 07:51:12.184 	WARNING: [modbus] failed to read 1 holding(s) @ 4 of device modbus:3: Serial protocol error: request timed out
12-09-2022 07:34:34.083 	WARNING: [modbus] failed to read 1 holding_single(s) @ 3 of device modbus:3: Serial protocol error: malformed response: invalid crc
12-09-2022 07:17:02.989 	WARNING: [modbus] failed to read 1 holding_single(s) @ 3 of device modbus:3: Serial protocol error: malformed response: invalid crc
12-09-2022 05:58:10.137 	WARNING: [modbus] failed to read 1 input(s) @ 258 of device modbus:3: Serial protocol error: malformed response: invalid crc
12-09-2022 05:45:03.251 	WARNING: [modbus] failed to read 1 input(s) @ 257 of device modbus:3: Serial protocol error: malformed response: invalid crc
12-09-2022 04:11:57.511 	WARNING: [modbus] failed to read 1 holding_single(s) @ 3 of device modbus:3: Serial protocol error: malformed response: invalid crc
12-09-2022 02:05:43.564 	WARNING: [modbus] failed to read 1 holding(s) @ 4 of device modbus:3: Serial protocol error: malformed response: invalid crc
12-09-2022 00:36:19.988 	WARNING: [modbus] failed to read 1 input(s) @ 257 of device modbus:3: Serial protocol error: malformed response: invalid crc
12-09-2022 00:32:12.752 	WARNING: [modbus] failed to read 1 input(s) @ 32 of device modbus:182: Serial protocol error: request timed out
12-09-2022 00:24:49.337 	WARNING: [modbus] failed to read 1 input(s) @ 257 of device modbus:3: Serial protocol error: malformed response: invalid crc
11-09-2022 22:17:35.396 	WARNING: [modbus] failed to read 1 input(s) @ 257 of device modbus:3: Serial protocol error: malformed response: invalid crc
11-09-2022 22:17:05.365 	WARNING: [modbus] failed to read 1 input(s) @ 257 of device modbus:3: Serial protocol error: malformed response: invalid crc
11-09-2022 20:23:34.277 	WARNING: [modbus] failed to read 1 holding_single(s) @ 3 of device modbus:3: Serial protocol error: malformed response: invalid crc
11-09-2022 19:51:02.166 	WARNING: [modbus] failed to read 1 holding_single(s) @ 2 of device modbus:3: Serial protocol error: illegal data value
11-09-2022 19:47:01.994 	WARNING: [modbus] failed to read 1 holding_single(s) @ 2 of device modbus:3: Serial protocol error: malformed response: invalid data size
11-09-2022 18:21:33.652 	WARNING: [modbus] failed to read 1 holding_single(s) @ 3 of device modbus:3: Serial protocol error: request timed out
11-09-2022 17:49:18.645 	WARNING: [modbus] failed to read 1 input(s) @ 257 of device modbus:3: Serial protocol error: malformed response: invalid crc
11-09-2022 16:48:20.840 	WARNING: [modbus] failed to read 1 input(s) @ 258 of device modbus:3: Serial protocol error: malformed response: invalid crc
11-09-2022 15:49:54.185 	WARNING: [modbus] failed to read 1 input(s) @ 258 of device modbus:3: Serial protocol error: request timed out
11-09-2022 14:26:54.012 	WARNING: [modbus] failed to read 1 input(s) @ 258 of device modbus:3: Serial protocol error: malformed response: invalid crc
11-09-2022 14:15:54.319 	WARNING: [modbus] failed to read 1 input(s) @ 258 of device modbus:3: Serial protocol error: request timed out
11-09-2022 14:11:28.982 	WARNING: [modbus] failed to read 1 holding_single(s) @ 2 of device modbus:3: Serial protocol error: malformed response: invalid crc
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

Внимание на строчку

11-09-2022 19:51:02.166 	WARNING: [modbus] failed to read 1 holding_single(s) @ 2 of device modbus:3: Serial protocol error: illegal data value

Адрес “2” как раз соответствует новому отвалившемуся регистру:

Так. Вообще поведение правильное, сделано специально для того чтобы не опрашивать несуществующие (отсутствующие) регистры. Но почему возвращается (именно корректный ответ) периодически от устройства - непонятно. У устройства в документации нет ли для некоторых регистров такого поведения?

В документации, увы, подобного нет.

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

И ещё один отвалился по той же логике:
изображение

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

Из интересного - в отличие от старой версии (см. скрины из первого сообщения), теперь отключение происходит строго последовательно, т.е. предположу, что именно первый опрос устройства приводит к такому состоянию.

Создал багрепорт.

1 лайк

Не подскажите, как успехи с багом?

Здравствуйте!
Задача поставлена, пока еще не взята в работу.

А есть ли какая-то приблизительная оценка по времени? Просто чтобы не дёргать вас уточнениями это время.
Неделя? Месяц? Квартал? Год?

И снова здравствуйте. Не появилось ли понимание, когда возьмёте в работу? :smiling_face_with_tear:

@Explorerol, если не сложно, дайте, пожалуйста, какие-то ориентиры.
Пока приходится 2 раза в день сервис перегружать по крону, уже несколько раз в самый неудачный момент происходило.

Добрый день.
Задачу так и не брали.
тут возникла мысль - при таком количестве неверных crc как в логах - вполне может пройти случайным образом запрос с битыми как адресом регистра так и crc, что дает валидный пакет.
Не пробовали добиться именно безошибочной работы самой шины, чтобы не было ошибок?

Вероятность этого всё же смехотворна и как аргументация скорее сильно напрягает.

Пробовал, предположил бы всё же, что количество ошибок не велико. За последние 2 дня, например, не вижу ни одной.

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

Поймите, пожалуйста, правильно. Есть определённый негатив не потому что вредный и люблю конфликтовать, а потому что было понимание, что с задачей договорились, раз в месяц пытаюсь понять статус, меня игнорируют и в конце концов явно клонят аргументацию к “проблема на стороне пользователя”.

Такое видел, при нескольких тысячах обменаов в час - вполне вероятно.

Тогда гипотезу можно признать маловероятной.

Логика, вся, описана тут:

Пожалуй - да, надо документировать прекращение чтения.
GitHub - wirenboard/wb-mqtt-serial: Wiren Board MQTT serial protocol driver описано, но надо воспроизвести, “стенд” у меня есть.

Я столкнулся с такой же проблемой и поведением установки Turkov Zenit 500. В течение суток все регистры постепенно становились красными и переставали получать данные. В логе также тайм-ауты, ошибки CRC и illegal data value. Началось это после обновления прошивки установки при гарантийном ремонте. При том, что до этого все работало отлично два года на WB6.

После общения с поддержкой Туркова все решилось увеличением guard_interval_us с 5000 до 100000 в шаблоне установки в WB. Вероятно, что можно это значение снизить и найти тот минимальный уровень, при котором ошибок еще нет.

@Darkformer может и вам поможет.

Официальная документация есть на эту тему: Подключение стороннего Modbus-устройства к контроллеру Wiren Board.

2 лайка

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.