Modbus 中的 CRC 校验是什么?如何计算 CRC 校验值?

Modbus 中的 CRC 校验是什么?如何计算 CRC 校验值?缩略图

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

Modbus 中的 CRC 校验是什么?如何计算 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

对新的16位寄存器的值进行8次

技术术语(共 1 个)—— 点击展开
寄存器Modbus 寄存器存储数据单元,分线圈/离散输入/保持/输入寄存器四类
来源/工具信息 —— 点击展开
来源 Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 分类 Modbus技术文档 字数 593 字 · 阅读约 2 分钟 更新 2024-05-07 永久链接 https://www.modbus.cn/modbus-%e4%b8%ad%e7%9a%84-crc-%e6%a0%a1%e9%aa%8c%e6%98%af%e4%bb%80%e4%b9%88%ef%bc%9f%e5%a6%82%e4%bd%95%e8%ae%a1%e7%ae%97-crc-%e6%a0%a1%e9%aa%8c%e5%80%bc%ef%bc%9f/
推荐工具:Modbus调试助手 微信小程序
Modbus中文网官方推出的Modbus调试工具,支持 Modbus RTU/TCP 实时通信调试、寄存器读写、线圈控制、数据监控和报文分析。 无需安装,微信搜索「Modbus调试助手」即可使用。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
把这篇资料用于真实项目?

进入工具中心进行报文解析、CRC 校验和设备调试,或提交需求获取选型与接入建议。

《“Modbus 中的 CRC 校验是什么?如何计算 CRC 校验值?”》 有 1 条评论

发表回复

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

http://www.ip33