标签:
无标签
关于MODBUS RTU的crc校验,在百度上居然发现某些网页给出的算法有误,真是晕,还好找到了两段程序,一个是lad写的(就是亿万论坛上有网友发的340做slave的例程)另外一个是scl写的,模拟了下发现结果是相同的,再对照算法看完程序心中有数了。
附crc-16的算法(应该是正确的,呵呵):
①装入一个16位寄存器,所有数位均为1。
②该16位寄存器与开始8位字节进行"异或"运算。运算结果放入这个16位寄存器。
③把这个16寄存器向右移一位。
④若向右(标记位)移出的数位是1,则生成多项式1010000000000001和这个寄存器进行"异或"运算;若向右移出的数位是0,则返回③。
⑤重复③和④,直至移出8位。
⑥另外8位与该十六位寄存器进行"异或"运算。
⑦重复③~⑥,直至该报文所有字节均与16位寄存器进行"异或"运算,并移位8次。
⑧这个16位寄存器的内容即2字节CRC错误校验,被加到报文的最高有效位。
系统分类:
PLC/PAC | 用户分类:
杂谈 | 来源:
原创