Modbus通信理解

Modbus串行链路协议是一个主-从协议。在同一时刻,只有一个主节点连接于总线,一个或者多个子节点(最多247个)连接于同一个串行总线。Modbus通信总是由主节点发起。子节点在没有收到来自主节点的请求时,从不会发送数据。子节点之间从不会互相通信。主节点在同一时刻只会发起一个Modbus事务处理。

差错校验方法分:每个单独字节的奇偶校验和一帧数据的帧错误校验
奇偶校验分:奇校验和偶校验,另外还有无校验,无校验即认为有两个停止位。
奇校验:紧接着字节后面,如果字节里有奇数个1,该位为0;如果字节里面有偶数个1,该位为1。这样将整个保持奇数个1.
偶校验:紧接着字节后面,如果字节里有偶数个1,该位为0;如果字节里面有奇数个1,该位为1。这样将整个保持偶数个1.
例如:字节数据为1100 0101,为1的数目为4,是偶数,如果是偶校验,奇偶校验位就为0;如果是奇校验,奇偶校验位就为1.

帧校验分:LRC校验和CRC校验。
LRC校验:除去帧头帧尾校验字节外,所有数据都参与校验,这些数据累加,不计算进位,累加完后,再算其和的反码(即取反+1).这种校验方法,只能对帧的单一方向错误有作用,如帧中有一个字节由于干扰增加了1,而帧中另外一个字节由于干扰减少了1,这样LRC校验是无法识别出错误的。

CRC校验:又名循环冗余校验,这种校验是对帧中每一个字节每一位进行计算。将每个字节除以一个多项式。相当于将这个字节对多项式进行或运算8次。计算完一个字节后,继续算后面的字节,直到运算完所有数据字节。这种计算将字节中每一位都进行计算了,只要一个字节中每一位出现错误,都可以检测出来,可靠非常高。实际应用,不会这样一位一位的移计算,而是将0-FF种情况全部移位8次计算出来结果,直接放到一个表格中,这样只需要去取出就行。

;