CRC16数据校验松下编程 点击:331 | 回复:4



10423008

    
  • 精华:0帖
  • 求助:7帖
  • 帖子:10帖 | 98回
  • 年度积分:136
  • 历史总积分:146
  • 注册:2015年1月20日
发表于:2016-03-01 15:58:47
楼主

有谁能给我发一个CRC16数据校验的程序呀!

要求对0106 0003 00fa 进行验证校验的结果是89f9.

小女子现在这谢过个位路过的大神了。




jtlfguo

  • 精华:0帖
  • 求助:5帖
  • 帖子:24帖 | 328回
  • 年度积分:415
  • 历史总积分:4675
  • 注册:2012年3月28日
发表于:2016-03-01 16:32:35
1楼

 就一条指令就搞定了,f70.不用自己写的。

10423008

  • 精华:0帖
  • 求助:7帖
  • 帖子:10帖 | 98回
  • 年度积分:136
  • 历史总积分:146
  • 注册:2015年1月20日
发表于:2016-03-01 16:53:44
2楼

感激涕零啊~~~~~~

回复内容:

对: jtlfguo  就一条指令就搞定了,f70.不用自己写的。 内容的回复!


心雨心愿

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 6回
  • 年度积分:0
  • 历史总积分:13
  • 注册:2016年4月26日
发表于:2016-04-27 16:57:16
3楼

F70是BCC编码方式啊,要用的是modbus CRC16的吧

RVC小强

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 10回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2017年1月04日
发表于:2017-01-04 21:58:21
4楼


1.  预置一个16位(两个字节)的单元为oxFFFF,称之为CRC寄存器。

2.  把第一个8位数据与16位CRC寄存器的低位相异或,把结果放于寄存器的低位。

3.  把寄存器的内容右移1位(朝低位),用0填补最高位,检查移出来的低位。如果为0,重复第3步(再次移位)。如果为1,CRC寄存器与多项式0xA001相异或,把结果放于寄存器。

4.  重复步骤3,直到右移8次,这样整个8位数据全部进行了处理。

5.  重复步骤2到4,进行下一个8位数据的处理。

最后得到的CRC寄存器即为CRC码。楼主能教下我吗?万分感谢!!!



相关主题

官方公众号

智造工程师