环境空气质量自动监测系统循环冗余校验CRC算法、动态密钥生成算法及加解密、通信数据段、常用Modbus通信规约.pdfVIP

环境空气质量自动监测系统循环冗余校验CRC算法、动态密钥生成算法及加解密、通信数据段、常用Modbus通信规约.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

附录A

(资料性附录)

循环冗余校验(CRC)算法

CRC校验(CyclicRedundancyCheck)是一种数据传输错误检查方法。本协议采用ANSI

CRC16,简称CRC16,参照HJ212的要求执行。

CRC16码由传输设备计算后加入到数据包中。接收设备重新计算接收数据包的CRC16

码,并与接收到的CRC16码比较,如果两值不同,则有误。

CRC16校验字节的生成步骤如下:

1)CRC16校验寄存器赋值为0xFFFF;

2)取被校验串的第一个字节赋值给临时寄存器;

3)临时寄存器与CRC16校验寄存器的高位字节进行“异或”运算,赋值给CRC16

校验寄存器;

4)取CRC16校验寄存器最后一位赋值给检测寄存器;

5)把CRC16校验寄存器右移一位;

6)若检测寄存器值为1,CRC16校验寄存器与多项式0xA001进行“异或”运算,

赋值给CRC16校验寄存器;

7)重复步骤4~6,直至移出8位;

8)取被校验串的下一个字节赋值给临时寄存器;

9)重复步骤3~8,直至被校验串的所有字节均被校验;

10)返回CRC16校验寄存器的值。

校验码按照先高字节后低字节的顺序存放。

CRC校验算法示例:

/**************************************************************************

函数:CRC16_Checkout

描述:CRC16循环冗余校验算法。

参数一:*puchMsg:需要校验的字符串指针

参数二:usDataLen:要校验的字符串长度

返回值:返回CRC16校验码

/**************************************************************************

unsignedintCRC16_Checkout(unsignedchar*puchMsg,unsignedintusDataLen)

{

unsignedinti,j,crc_reg,check;

crc_reg0xFFFF;

for(i0;iusDataLen;i++){

crc_reg(crc_reg8)^puchMsg[i];

for(j0;j8;j++){

checkcrc_reg0x0001;

20

crc_reg1;

if(check0x0001){

crc_reg^0xA001;

}

}

}

returncrc_reg;

}

示例:

##0218QN20250416085412992;ST22;CNSP03;MN101110000U0244;Flag13;CP

DataTime20250416100500;DevBrandAPI,DevSeriesT100,DevType0111,DevMN101110

000U024401001;i13106-Info1;i13107-Info0.12;i13102-Info1324,i13102-FlagY8F81\r\n,

其中8F81为CRC16校验码,是对数据段:

QN20250416085412992;ST22;CNSP03;MN101110000U0244;Flag13;CPDataTime

20250416100500;DevBran

文档评论(0)

雄霸天下 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档