2 нюанса использования Modbus RTU

May 12, 2016 16:03


Рабочее.

Звёзды сошлись так, что проверка CRC в верификаторе посылки Modbus RTU протокола дала сбой.

Это сообщение проходит проверку CRC, но некорректно:
0x04, 0x03, 0x1c, 0x3f, 0xe9, 0x15, 0x18, 0x03, 0x02, 0x00, 0x01, 0x02, 0x02, 0x00

Вот корректное сообщение:
0x04, 0x03, 0x1c, 0x3f, 0xe9, 0x15, 0x18, 0x03, 0x02, 0x00, 0x01, 0x02, 0x02, 0x00, ( Read more... )

программирование, работа

Leave a comment

Comments 2

ext_3564000 February 14 2017, 11:30:04 UTC
Про ситуацию: спросили адрес 1000, ответа от устройства за N мс нет, спрашиваем адрес 1001, приходит ответ на предыдущий запрос (1000), который интерпретируется ответом на 1001й.

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

Reply

vostnod February 14 2017, 13:51:49 UTC
"судить по значению регистра" - плохая идея, т.к. требует нагромождения логики. Допустима в конкретных случаях.

"разнести диапазоны возможных значений регистров" - не корректно. Мы опрашиваем не 100 регистров, а 2 конкретных последовательно. У нас нет времени перебирать 100 регистров, чтобы потом из 1го и 77го считать нужные данные.

"много раз делать повторный запрос значения и сравнивать" - не корректно, т.к. у 2х регистров могут быть одинаковые значения. А могут и не быть.

Reply


Leave a comment

Up