crc校验实现 modbus通信的rtu模式中,规定信息帧的最后两个字节用于传递crc(cyclic redundancycheck,循环冗余校验)码。发送方将信息帧中地址域、功能码、数据域的所有字节按规定的方式进行位移并进行xor(异或)计算,即可得到2字节的crc码,并把包含crc校验码的信息帧作为一连续的流进行传输。接收方在收到该信息帧时按同样的方式进行计算,并将结果同收到的crc码的双字节比较,如果一致就认为通信正确,否则认为通信有误,从站将发送crc错误应答。
rtu模式一般采用crc-16冗余校验方法,crc-16的校验码为16位(2字节),其中低字节在前,高字节在后。实现crc校验有两种方法:根据crc校验的定义公式进行计算,或者在程序中建立crc校验值表。在程序中使用前者更容易实现,这里需要使用crc生成多项式x16+x15+x2+1。该多项式对应的码组系数为18005h(16进制),去除最高位,对应的16位余数为8005h,即为crc-16常数。crc-16校验过程如下:将crc寄存器的每一位预置为1;把该寄存器值与8bit的信息帧数据进行异或,结果存于该寄存器;对crc寄存器从高到低进行移位,在最高位(msb)的位置补零,而最低位(lsb,移位后已经被移出crc寄存器)如果为1,则把寄存器与crc-16常数进行异或,否则如果lsb为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8bit数据处理完毕,用此时寄存器的值与下一个8bit数据异或并进行如前一样的8次移位。所有的字符处理完成后crc寄存器内的值即为最终的crc值。crc添加到消息中时,先加入低字节,然后高字节。rtu模式的传输格式是1个数据位,2个停止位,没有奇偶校验位。通信数据安全由控制参数crc-16码保证。rtu接收设备依靠接收字符间经过的时间判断一帧的开始,如果经过3个半的字符时间后仍然没有新的字符或者没有完成帧,接收设备就会放弃该帧,并设下一个字符为新一帧的开始,应用程序中,modbus协议通信由通讯子模块实现,包含crc-16计算与验证、信息帧的编制和分解。
以质量打造品质,以诚信共赢未来!
专注、专心、更专业 值得信赖!
下面是我公司的优势产品,还有不常用的未列出,但都有销售,欢迎您来电询价!
优势产品:ABB、西门子6SN/6FC、施耐德140/TSX、AB等品牌DCS系统卡件、机器人系统备件、伺服控制器模块卡件等…
不买贵的,只选对的。
阿米控技术公司长期供应,一手货源,产品图片信息仅供参考,详情请来电咨询!
竭诚欢迎您来电! 联系人:徐亚婷 手机:18020776785 QQ:2851195472座机:0592-5087595 邮箱:2851195472@qq.com
6159188010 6159188030 CU-8593
6159188000 6159187470 CU-8593
18026-000 180361803-004
18026-000 180361803-003
180260-000 180361835-002
AGH-PV-3
ABB SAPC33IBC SAPC 33 IBC 5761642-3F
1197028b
SBDS 64 V1
CM1001 Lust VF1202S
0722.V00.0S11707
PQ755 Inverter board EAE DSRL 2 296061
PQ756 Inverter board EAE DSRL 3 691030
6FX1120-3CA02
170G1091/S42
Siemens 6A3 617-1JC30-0AX1
6SN1118-0NK01-0AA1 A5E00224089
ELCACLF3024-000P 13058074
Gebraucht
FW-10-6 CPU-1 MOD 12-2 16OE-1
BT8 /061052
64 00 SBDS 64
ABB SNAZ 505 SB9216