请教关于CRC16的校验问题 点击:295 | 回复:3



dojiya

    
  • 精华:0帖
  • 求助:2帖
  • 帖子:17帖 | 9回
  • 年度积分:0
  • 历史总积分:115
  • 注册:2005年1月03日
发表于:2008-05-23 21:26:12
楼主

大家好,谁能给我解答一下呢?

        1.设置CRC寄存器,并给其赋值FFFF(hex)。

  2.将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器。

  3.CRC寄存器向右移一位,MSB补零,移出并检查LSB。

  4.如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或。

  5.重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。

  6.重复第2至第5步直到所有数据全部处理完成。

  7.最终CRC寄存器的内容即为CRC值。
我不清楚的是,2中的将“数据”的第一个8位字符中的“数据”的是什么数据呢?是数据帧的数据嘛?下面应该是数据帧的格式:

address function data check
8-bits 8-bits n*8-bits 16-bits

 

那是指哪儿组成的数据呢?希望你们能给我解答,谢谢你们了!!




lmhx

  • 精华:9帖
  • 求助:0帖
  • 帖子:483帖 | 5271回
  • 年度积分:0
  • 历史总积分:8863
  • 注册:2003年11月09日
发表于:2008-05-25 01:27:57
1楼

当然是有效报文的第一个数据,在此应为adrdr

newchp

  • 精华:3帖
  • 求助:0帖
  • 帖子:113帖 | 3966回
  • 年度积分:0
  • 历史总积分:9364
  • 注册:2006年7月15日
发表于:2008-05-25 08:03:02
2楼

上楼上的说法是对的.

thinksoft

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:7
  • 注册:2008年5月30日
发表于:2008-05-30 22:57:26
3楼

我建议使用Modbus调试软件进行调试,然后根据软件发送数据你可以学习

http://hi.baidu.com/thinksoft

最专业的modbus软件,比以前的modbus调试精灵更进一步


热门招聘
相关主题

官方公众号

智造工程师