久尹科技发展有限公司 Modbus通讯协议
校验码采用CRC错误检测。CRC是一个16位的二进制值,它检测了整个消息帧的内容(不含CRC域本身)。它由传输设备计算后加入消息中,接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误。 CRC是先调入一个值全为“1”的16位寄存器,然后调用一个过程来处理消息帧中连续的字节。自由每个字符中的8位字节数据参与CRC计算,而起始位,停止位均不参与运算((如有奇偶校验位,奇偶校验也不参与运算)。 CRC产生过程中,每个8位字符都单独与16位寄存器中的内容相异或(XOR),结果向最低有效位(LSB)方向移动,最高有效位(MSB)以0填充。LSB被提取出来进行测试,如果LSB为1,寄存器单独和预置的固定值异或(XOR)一下;否则,则不作任何操作。整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相或。最终寄存器中的值,是消息中所有的字节(不含CRC域本身)都参与计算后的CRC值。
暂无评论