我在学习modbus协议,遇到一个crc校验问题,我想知道00和01分别进行crc校验后值是多少?
发布网友
发布时间:2022-04-08 19:17
我来回答
共1个回答
热心网友
时间:2022-04-08 20:46
这个不是MODBUS协议的问题,而是对CRC校验的概念不明确,CRC是循环的,全称是循环冗余校验码。
针对你的问题,我们举这样一个例子,我们约定校验方式为“累加和为零”,这个简单好理解。
假设现在要发送N个字节的数据,累加和为0xAB,按字节累加,抛弃进位,
校验字是这样得到的 0x00-0xAB=0x55,
发送方发送N个字节后附上校验字0x55就可以了。
显然,发送的这N+1个字节的“累加和为零”。
接收方收到所有N+1个字节,加起来,检查“累加和为零”就可以了,不用要明确的去检查校验字是不是0x55。使用数据的时候,取N个字节,最后的校验字节丢弃就可以了。
CRC与此类似,不过是用多项式除法代替按字节累加而已。追问抄袭是不好的,谢谢