modbus协议RTU模式校验码怎么计算
答案:2 悬赏:20 手机版
解决时间 2021-03-21 11:05
- 提问者网友:轻浮
- 2021-03-21 02:11
modbus协议RTU模式校验码怎么计算
最佳答案
- 五星知识达人网友:躲不过心动
- 2021-03-21 03:12
RTU 模式下是CRC - 16 校验码,方法如下:
CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或(异或:二进制运算 相同为0,不同为1;0^0=0;0^1=1;1^0=1;1^1=0), 之后对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移出CRC寄存器)如果为1,则把寄存器与预定义的多项式码进行异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个数据似的8次移位。所有的字符处理完成后CRC寄存器内的值即为最终的CRC值。
希望你懂了。
CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或(异或:二进制运算 相同为0,不同为1;0^0=0;0^1=1;1^0=1;1^1=0), 之后对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移出CRC寄存器)如果为1,则把寄存器与预定义的多项式码进行异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个数据似的8次移位。所有的字符处理完成后CRC寄存器内的值即为最终的CRC值。
希望你懂了。
全部回答
- 1楼网友:怀裏藏嬌
- 2021-03-21 04:04
先看些资料(可通过网络搜索),稍微了解crc校验原理。其实该crc校验的过程就是异或、移位、取余数。
目前crc校验有直接计算和查表法。这两种方法我都用梯形图(编程语言: rslogix 500 )实现过。
直接计算会让plc的执行时间将变得很长,特别是当传输数据量大的时候,因为每个字节的每个位都要进行一次计算。
推荐用查表法,plc执行快,一个字节查表一次,计算一次。至于算法可百度搜索,很多用c语言实现的,想办法把它转为梯形图实现就可以了,其实也并不需要知道它的原理。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯