找回密码
 注册
搜索
查看: 902|回复: 2

[讨论] Modbus协议CRC校验码的计算方法

[复制链接]
发表于 2010-4-29 18:33:39 | 显示全部楼层 |阅读模式
1.预置1个16位的寄存器为十六进制FFFF(即全为1);称此寄存器为CRC寄存器;
        2.把第一个8位二进制数据(既通讯信息帧的第一个字节)与16位的CRC寄存器的低8位相异或,把结果放于CRC寄存器;
        3.把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检查最低位;
        4.如果最低位为0:重复第3步(再次右移一位);        如果最低位为1: CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或;
        5.重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;
        6.重复步骤2到步骤5,进行通讯信息帧下一个字节的处理;
         7.最后得到的CRC寄存器内容即为:CRC码。
 楼主| 发表于 2010-4-29 18:39:18 | 显示全部楼层
抱歉,发之前没有细看。帖子中的多项式A001,是某一厂商自己约定的,不具有通用性。
点评回复

使用道具 举报

发表于 2010-4-30 20:19:42 | 显示全部楼层
这个网上有现成的查表算法,比你这个速度更快。
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-24 18:56 , Processed in 0.046345 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表