modbus rtu协议的CRC(循环冗余校验)在线计算

发布时间:2024年01月15日

一、CRC校验(循环冗余校验)

??CRC(Cyclic Redundancy Check,循环冗余校验)是一种数据校验方式,主要用于判断数据传输过程中数据是否发生改变、传输是否出错,并在传输时保证数据完整性。CRC是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。
?? 上位机须按照MODBUS协议的命令格式发送数据(包括计算的CRC值),从机才能正确辨识数据。若无CRC值,从机将返回含有错误号的应答包,不会得到正确结果。标准的做法,发送前计算CRC值并一起发送,接收后也计算CRC值并与接收的校验码对比是否相等,以辨别数据是否准确。

  • CRC算法参数模型解释
    • NAME:参数模型名称。
    • WIDTH:宽度,即CRC比特数。
    • POLY:生成项的简写,以16进制表示。例如:CRC-32即是0x04C11DB7,忽略了最高位的"1", 即完整的生成项是0x104C11DB7。
    • INIT:这是算法开始时寄存器(crc)的初始化预置值,十六进制表示。
    • REFIN:待测数据的每个字节是否按位反转,True或False。
    • REFOUT:在计算后之后,异或输出之前,整个数据是否按位反转,True或False。
    • XOROUT:计算结果与此参数异或后得到最终的CRC值。

?? 计算CRC有相应的方法和代码,也有现成的在线计算器,示例如下:

二、如何生成CRC校验码

1
?? 以上述问询帧为例,由前面的通信信息如何生成2位校验码,操作步骤如下:

2.1 on-line CRC calculation and free library

  1. 点击进入网页:on-line CRC calculation and free library
  2. 在网页中输入需要校验的数据信息,如下图所示:
    1
    注意:当放置 CRC 值于命令时,高低字节必须交换 ,所以,报文中 CRC校验码高位在左边,低位在右边,使用时请注意高低位顺序。

2.2 CRC(循环冗余校验)

  1. 点击进入网页:CRC(循环冗余校验)在线计算
  2. 在网页中输入需要校验的数据信息,如下图所示:
    2
  • 这里使用的参数模型是:CRC 16/modbus,点击计算得到CRC值:0BC4

注意:当放置 CRC 值于命令时,高低字节必须交换 ,所以,报文中 CRC校验码高位在左边,低位在右边,使用时请注意高低位顺序。

2.3 16进制(CRC16)(MODBUS RTU通讯)校验码在线计算器

  1. 点击进入网页:16进制(CRC16)(MODBUS RTU通讯)校验码在线计算器
  2. 在网页中输入需要校验的数据信息,如下图所示:
    2
    注意:当放置 CRC 值于命令时,高低字节必须交换 ,所以,报文中 CRC校验码高位在左边,低位在右边,使用时请注意高低位顺序。
文章来源:https://blog.csdn.net/weixin_44462773/article/details/135600021
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。