Modbus 协议中的 CRC 校验是一种用于验证 Modbus 数据报文完整性的校验方式,可以有效防止数据传输中的误码和数据篡改。Modbus 协议中使用的 CRC 校验采用了多项式除法的方式,具体计算方法如下:
- 首先将 Modbus 数据报文中的所有字节按照顺序组成一个字节数组。
- 然后将该字节数组的所有字节依次带入 CRC 计算函数中,计算出 CRC 校验值。
- 最后将计算出的 CRC 校验值附加到 Modbus 数据报文的末尾,用于验证数据的完整性。
计算 CRC 校验值的具体步骤如下:
- 将一个16位寄存器的初值设为0xFFFF。
- 对字节数组中的每一个字节进行以下操作:
- 将该字节的值与0xFF做异或运算。
- 将上述结果与16位寄存器的低8位进行异或运算,得到一个新的16位寄存器的值。
- 对新的16位寄存器的值进行8次循环,每次循环:
- 如果寄存器的最高位为1,就将寄存器左移一位,并与0xA001做异或运算;
- 如果寄存器的最高位为0,就将寄存器左移一位。
- 最终得到的16位寄存器的值就是 CRC 校验值。
需要注意的是,计算 CRC 校验值时,字节的顺序需要按照 Modbus 协议规定的顺序,一般来说是从低位到高位依次排列。此外,CRC 校验值的附加方式也需要按照 Modbus 协议规定的格式进行。
下载整理一些CRC在线效验的网址:
http://www.ip33.com/crc.html
https://www.23bei.com/tool/232.html
Comments(1)
难道不是右移吗