Modbus 协议中的 CRC 校验是一种用于验证 Modbus 数据报文完整性的校验方式,可以有效防止数据传输中的误码和数据篡改。Modbus 协议中使用的 CRC 校验采用了多项式除法的方式,具体计算方法如下:

  1. 首先将 Modbus 数据报文中的所有字节按照顺序组成一个字节数组。
  2. 然后将该字节数组的所有字节依次带入 CRC 计算函数中,计算出 CRC 校验值。
  3. 最后将计算出的 CRC 校验值附加到 Modbus 数据报文的末尾,用于验证数据的完整性。

计算 CRC 校验值的具体步骤如下:

  1. 将一个16位寄存的初值设为0xFFFF。
  2. 对字节数组中的每一个字节进行以下操作:
    • 将该字节的值与0xFF做异或运算。
    • 将上述结果与16位寄存器的低8位进行异或运算,得到一个新的16位寄存器的值。
    • 对新的16位寄存器的值进行8次循环,每次循环:
      • 如果寄存器的最高位为1,就将寄存器左移一位,并与0xA001做异或运算;
      • 如果寄存器的最高位为0,就将寄存器左移一位。
  3. 最终得到的16位寄存器的值就是 CRC 校验值。

需要注意的是,计算 CRC 校验值时,字节的顺序需要按照 Modbus 协议规定的顺序,一般来说是从低位到高位依次排列。此外,CRC 校验值的附加方式也需要按照 Modbus 协议规定的格式进行。

下载整理一些CRC在线效验的网址:

http://www.ip33.com/crc.html

https://www.23bei.com/tool/232.html

相关新闻

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Comments(1)

  • 匿名的头像
    匿名 2024年11月2日 上午11:03

    难道不是右移吗

邮箱

cloud@modbus.cn

QQ
QQ
微信
微信
SHARE
TOP