tanxia
级别: 探索解密
精华主题: 0
发帖数量: 16 个
工控威望: 149 点
下载积分: 611 分
在线时间: 137(小时)
注册时间: 2010-03-04
最后登录: 2012-07-11
查看tanxia的 主题 / 回贴
楼主  发表于: 2010-04-07 21:48
最近在做三菱FX2N与欧母龙变频器的通信,遇到一个问题,就是看不明白欧母龙变频器通信格式中的异常检查-CRC-16要如何计算,请各位帮帮忙
meiyouleya
天黑路滑,社会复杂!!!
级别: 略有小成
精华主题: 0
发帖数量: 385 个
工控威望: 422 点
下载积分: 1377 分
在线时间: 119(小时)
注册时间: 2006-11-01
最后登录: 2021-08-13
查看meiyouleya的 主题 / 回贴
1楼  发表于: 2010-04-07 23:46
说明:CRC循环冗余错误校验计算方法  
  CRC—16(循环冗余错误校验)生成CRC—16校验字节的步骤如下:  
  (1)装入一个16位寄存器,所有数位均为1。  
  (2)该16位寄存器的高位字节与开始8位字节进行“异或”运算。运算结果放入这个16位寄存器。  
  (3)把这个16位寄存器向右移1位。  
  (4a)若向右(标记位)移出的数位是1,则生成多项式1010000000000001和这个寄存器进行“异或”运算。  
  (4b)若向右移出的数位是0,则返回(3)。  
  (5)重复(3)和(4),直至移出8位。  
  (6)另外8位与该16位寄存器进行“异或”运算。  
  (7)重复(3)—(6),直至该报文所有字节均与16位寄存器进行“异或”运算,并移位8次。  
  (8)这个16位寄存器的内容即2字节CRC错误校验
如果还是不明白可以在网上下载一个例子程序看下。