CRC calculation error

Добрый вечер, подскажите куда смотреть. Есть устройство - термостат с непонятным поведением - то читает и пишет, то ругается на CRC.
В документации CRC check code/verification mode CRC-16 в документации к modbus_client ничего не нашел по этому поводу (или это стандартный мод?). В интерфейсе wirenboard соответственно то работает, то ошибка получения\записи значений.

root@wirenboard:~# modbus_client --debug -mrtu -pnone /dev/ttyRS485-2 -a4 -t0x03 -r0x00
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 1)
[04][03][00][00][00][01][84][5F]
Waiting for a confirmation…
<82><20><21><50>
ERROR CRC received 50B5 != CRC calculated 830
ERROR occured!
root@wirenboard:~# modbus_client --debug -mrtu -pnone /dev/ttyRS485-2 -a4 -t0x03 -r0x00
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 1)
[04][03][00][00][00][01][84][5F]
Waiting for a confirmation…
<04><03><02><00><01><84>
SUCCESS: read 1 of elements:
Data: 0x0001

А вы драйвер wb-mqtt-serial остановили при работе с modbus_client? В каждый момент времени только один процесс может обращаться к порту.

Да, остановлен

Первый ответ от устройства кривой. Источник проблемы:

  1. Кто-то еще отвечает по этому адресу, и происходит коллизия;
  2. Кто-то еще опрашивает этот порт;
  3. Помехи на линии, некачественная линия;
  4. Некачественное устройство.
1 Like

То есть на запрос ответ пришел странный, в нем нет ни одного байта похожего на верный ответ.
Больше всего склоняюсь к тому что wb-mqtt-serial не остановлен. Ну или совсем уж большие наводки.