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

一、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校验码高位在左边,低位在右边,使用时请注意高低位顺序。
  • 21
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值