modbus rtu协议的CRC(循环冗余校验)在线计算
发布时间:2024年01月15日
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校验码
?? 以上述问询帧为例,由前面的通信信息如何生成2位校验码,操作步骤如下:
2.1 on-line CRC calculation and free library
- 点击进入网页:on-line CRC calculation and free library
- 在网页中输入需要校验的数据信息,如下图所示:
注意:当放置 CRC 值于命令时,高低字节必须交换 ,所以,报文中 CRC校验码高位在左边,低位在右边,使用时请注意高低位顺序。
2.2 CRC(循环冗余校验)
- 点击进入网页:CRC(循环冗余校验)在线计算
- 在网页中输入需要校验的数据信息,如下图所示:
- 这里使用的参数模型是:
CRC 16/modbus
,点击计算得到CRC值:0BC4
注意:当放置 CRC 值于命令时,高低字节必须交换 ,所以,报文中 CRC校验码高位在左边,低位在右边,使用时请注意高低位顺序。
2.3 16进制(CRC16)(MODBUS RTU通讯)校验码在线计算器
- 点击进入网页:16进制(CRC16)(MODBUS RTU通讯)校验码在线计算器
- 在网页中输入需要校验的数据信息,如下图所示:
注意:当放置 CRC 值于命令时,高低字节必须交换 ,所以,报文中 CRC校验码高位在左边,低位在右边,使用时请注意高低位顺序。
文章来源:https://blog.csdn.net/weixin_44462773/article/details/135600021
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!