首先,对不起!我是一个初学者...
我在modbus上得到了下面的字节序列:“01 04 08 00 00 00 09 00 00 00 00 00f8 0 c"。此字节序列上粗体显示的CRC是正确的。但是,要检查/创建CRC,我必须遵循以下设备,特别是:
- 必须使用16位CRC(作为两个8位字节实现)进行错误检查。CRC作为最后一个字段附加到帧中。首先附加CRC的低位字节,然后是高位字节。因此,CRC高位字节是帧中要发送的最后一个字节。用于生成CRC的多项式值必须为0xA 001。*
现在,如何使用crcmod检查CRC?我的代码是:
import crcmod
crc16 = crcmod.mkCrcFun(0x1A001, rev=True, initCrc=0xFFFF, xorOut=0x0000)
print crc16("0104080000000900000000".decode("hex"))
我尝试了所有方法,但无法获得正确的字节序列“f8 0 C”...
2条答案
按热度按时间piah890a1#
使用
0x18005
而不是0x1A001
。ffvjumwh2#
Modbus快捷方式,如果未深入CRC详细信息