ВходНаше всё Теги codebook PARTS Поиск Опросы Закон Вторник
5 июля
1169265
Argon (30.01.2022 11:52, просмотров: 2353)
Воткнул в состав своего девайса китайский модулек PZEM-004T, это измеритель сетевого напряжения/тока/мощности. Общение с ним идет по TTL ModbusRTU. В инструкции сказано, что CRC передается старшим байтом вперед. Удивился, но да ладно. 

Час не мог понять, почему в возвращаемых данных вижу CRC в перевернутом виде. Уж начал было копаться в своих алгоритмах вычисления-передачи CRC, но подумалось: китайцы такие китайцы. И проверил разное.

Выяснилось, что возвращается CRC таки привычно, младшим байтом вперед.
А во входную командную последовательность можно подсунуть хоть младшим вперед, хоть старшим. При этом полная туфта в поле CRC приводит к молчанию модуля, т.е. проверка все же идет.


Что бы это значило? Китайский программер не смог разобраться где старший, а где младший байт? Или существует нечто про передачу CRC, чего я не знаю?


Собственно все это слегка напрягает поскольку в инструкции описание таково:

Slave Address + 0x04 + Register Address High Byte + Register Address Low Byte + Number of Registers High Byte + Number of Registers Low Byte + CRC Check High Byte + CRC Check Low Byte

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

Ответы