Modbus 通信的 CRC 校验

2017-06-04 68 0

Modbus 通信 RTU 模式中规定信息帧最后两个字节用于传递 CRC 码。发送方将信息帧中地址域、功能码、数据域所有字节按规定方式进行位移与 XOR(异或)计算、即可得 2B 的 CRC 码、并把包含 CRC 校验码的信息帧作为一个连续流传输。接收方收帧时按同样方式计算、将结果同收到的 CRC 码双字节比较,若一致认为通信正确、否则认为通信有误、从站将发送 CRC 错误应答。

RTU 模式一般采用 CRC-16 冗余校验方法、校验码 16 位(2B),其中低字节在前、高字节在后。实现 CRC 校验有两种方法:根据 CRC 校验定义公式计算、或在程序中建立 CRC 校验值表。在程序中前者更易实现,需使用 CRC 生成多项式 X¹⁶+X¹⁵+X²+1;该多项式对应码组系数为 18005H,去除最高位对应 16 位余数 8005H、即 CRC-16 常数。CRC-16 校验过程:将 CRC 寄存器每一位预置为 1;把该寄存器值与 8 位信息帧数据异或、结果存于寄存器;对 CRC 寄存器从高到低移位、最高位(MSB)补 0,而最低位(LSB,移位后被移出)若为 1 则把寄存器与 CRC-16 常数异或、若 LSB 为零则无需异或。重复上述由高至低移位 8 次、第一个 8 位数据处理完毕,用此时寄存器值与下一 8 位数据异或并如前做 8 次移位。所有字符处理完成后 CRC 寄存器内值即为最终 CRC 值。CRC 添加到消息时先加入低字节、再加入高字节。CRC-16 子程序框图如图4-16 所示。

图4-16 CRC-16 子程序框图

相关文章

变频器柜内的布线
变频器产生噪声的类型
变频器所处电磁环境中的主要干扰源
抑制变频器对微机控制板的干扰
避免变频调速系统的噪声共振
低压变频器电磁兼容等级的典型值

发布评论