crc16校验码不对

已锁定

知秋CAC

  • 帖子

    145
  • 精华

    0
  • 被关注

    14

论坛等级:侠士

注册时间:2017-02-28

普通 普通 如何晋级?

crc16校验码不对

845

9

2018-01-18 15:43:15

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

① 装一个 16 位寄存器,所有数位均为 1。

② 取被校验串的一个字节与 16 位寄存器的高位字节进行“异或”运算。运算结果放

入这个 16 位寄存器。 

③ 把这个 16 寄存器向右移一位。 

④ 若向右(标记位)移出的数位是 1,则生成多项式 1010 0000 0000 0001 和这个寄

存器进行“异或”运算;若向右移出的数位是 0,则返回③。 

⑤ 重复③和④,直至移出 8 位。 

⑥ 取被校验串的下一个字节 

⑦ 重复③~⑥,直至被校验串的所有字节均与 16 位寄存器进行“异或”运算,并移位

8 次。 

⑧ 这个 16 位寄存器的内容即 2 字节 CRC 错误校验码。

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

——————————————————————————————————————————

crc校验过程如上,和modbus crc校验区别就第二步高位字节异或,程序测试下来不对,代码如下:

LD     SM0.0

MOVB   16#FF, #CRC高位:LB6

MOVB   16#FF, #CRC低位:LB7

————————————————

LD     SM0.0

FOR    LW8, +1, #数据个数:LW4

——————————————————

LD     SM0.0

XORB   *#首地址:*LD0, #CRC高位:LB6

——————————————————

LD     SM0.0

FOR    LW10, +1, +8

——————————————————

LD     SM0.0

SRW    LW6, 1

A      SM1.1

XORW   16#A001, LW6

————————————————

NEXT

————————————————

LD     SM0.0

+D     1, #首地址:LD0

————————————————

NEXT

crc16校验码不对 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33782条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。