Modbus协议的常用基本定义——(RS485总线系统应用之2)续
U模式:
当选用RTU模式时,错误检测域包含一个16Bits值(用两个8位的字符来实现)。错误检测域的内容是通过CRC(循环冗长检测)方法得出的。CRC域附加在消息的最后,CRC的高位字节是发送消息的最后一个字节。
4. Modbus的错误检测方法
4.1奇偶校验
1 1 0 0 0 1 0 1
4.2 LRC校验
LRC方法是将消息中的8Bit的字节连续累加,丢弃了进位。
4.3 CRC校验
CRC域是两个字节,包含一个16位的二进制值。它由传输设备计算后加入到消息中。接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误。
CRC方法比LRC方法繁琐得多,受篇幅限制在此不作介绍。如需了解,请参见本人发表的《CRC校验原理与程序设计》一文。
一个通信实例:
表3是一个以RTU方式读取整数数据的例子。主机向01H号从机发出04H号(读取输入寄存器)功能码,要求读取从0000H地址开始的2个(16Bit)输入寄存器的值。CB71H是01H、04H、00H、00H、00H、02H六个数据的CRC校验值。从机应答时将地址和功能码原样发回,并将2个(16Bit)输入寄存器的值0107H和0251H分成4个(8Bit)数据01H、07H、02H、51H发回。258BH是01H、04H、04H、01H、07H、02H、51H七个数据的CRC校验值。
主机请求消息帧(8个字节)
地址 | 功能码 | 被读首个寄存器的高位地址 | 被读首个寄存器的低位地址 | 被读寄存器的数量的高位 | 被读寄存器的数量的低位 | CRC低位 | CRC高位 | |
01 | 04 | 00 | 00 | 00 | 02 | 71 | CB |
从机应答消息帧(9个字节)
地址 | 功能码 | 数据个数 | 第1个数据 | 第2个数据 | 第3个数据 | 第4个数据 | CRC低位 | CRC高位 |
01 | 04 | 04 | 01 | 07 | 02 | 51 | 8B | 25 |
表3.以RTU方式读取整数数据
参考文献:
①GB/T 19582.1-2008《基于Modbus协议的工业自动化网络规范》
②Modbus协议中文版
Modbus协议基本定义RS485总 相关文章:
- Modbus协议的常用基本定义——(RS485总线系统应用之2)(12-15)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)