在Python中为modbus计算CRC16

np8igboo  于 2022-11-21  发布在  Python
关注(0)|答案(2)|浏览(211)

首先,对不起!我是一个初学者...
我在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”...

piah890a

piah890a1#

使用0x18005而不是0x1A001

ffvjumwh

ffvjumwh2#

Modbus快捷方式,如果未深入CRC详细信息

from pymodbus.utilities import computeCRC

相关问题