1. Modbus协议简介
Modbus协议是一种运用于电子操控器的通用通讯规约。是由MODICON公司最早倡议并于1979年开发的,后来逐步开展成为世界通用的通讯规范。在我国,GB/Z 19582《根据Modbus协议的工业自动化网络规范》于2004年9月发布,该指导性技能文件发布后得到了国内自动化产品出产厂家、自动化系统集成商和广阔用户的高度注重和注重,并极大地推动了根据Modbus协议的产品的开发和运用。2006年4月,Modbus-IDA世界组织在我国正式授权树立了仅有的MODBUS(我国)产品一致性测验实验室(MCTL),为Modbus技能在我国的全面开发和运用供给了硬件渠道支撑。
依照全国工业进程丈量和操控规范化技能委员会关于树立现场总线规范系统的有关要求,有关部门于2007年11月完结了GB/Z 19582《根据Modbus协议的工业自动化网络规范》规范的修订作业,将作为国家引荐规范上报国家规范化办理委员会,2008年3月国家规范化办理委员会正式同意为GB/T 19582-2008。
2. Modbus的两种传输形式
Modbus的两种传输形式分别是ASCII(美国规范信息交流代码)和RTU(长途终端装置)。用户要完结Modbus网络通讯,有必要选中一种传输形式并装备串口通讯参数(波特率、校验方法等)。在同一个Modbus网络上的一切设备都有必要挑选相同的传输形式和串口参数。
当音讯在规范的Modbus系列网络传输时,每个字符或字节以如下方法发送(从左到右):最低有用位…最高有用位。
2.1 ASCII形式
有奇偶校验:
启始位 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
奇偶位 |
中止位 |
无奇偶校验:
启始位 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
中止位 |
中止位 |
ASCII形式编码阐明:
.每发送一个字节包括:
1个开端位、7个数据位(最小的有用位先发送)、1个奇偶校验位(无校验则无)、1个(有校验时)或2个中止位(无校验时)
.过错检测选用LRC(纵向冗长检测)
ASCII形式的音讯帧结构:
冒号符 |
地址码 |
功用代码 |
数据数量 |
数据1 |
… |
数据n |
LRC高字节 |
LRC低字节 |
回车符 |
换行符 |
2.2 RTU形式
有奇偶校验:
启始位 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
奇偶位 |
中止位 |
无奇偶校验:
启始位 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
中止位 |
中止位 |
RTU形式编码阐明:
1个开端位、8个数据位(最小的有用位先发送)、1个奇偶校验位(无校验则无)、1个(有校验时)或2个中止位(无校验时)
.过错检测选用CRC(循环冗长检测)
当操控器设为在Modbus网络上以RTU形式通讯时,在音讯中的每个字节(8Bit)包括两个4Bit的十六进制字符。这种方法的首要长处是:在相同的波特率下,可比ASCII方法传送更多的数据。
RTU形式的音讯帧结构:
地址 |
功用代码 |
数据数量 |
数据1 |
… |
数据n |
CRC低字节 |
CRC高字节 |
3. Modbus的音讯帧结构
3.1 ASCII帧
开端位 |
设备地址 |
功用代码 |
数据 |
LRC校验 |
完毕符 |
1个字符 |
2个字符 |
2个字符 |
n个字符 |
2个字符 |
2个字符 |
3.2 RTU帧
运用RTU形式,每帧音讯发送至少要有3.5个字节时刻的距离中止。不管在何种网络波特率下,这是最简单完结的(如下图的T1-T2-T3-T4所示)。传输的第一个域是设备地址。能够运用的传输字符是十六进制的0…9,A…F。网络上的设备不断侦测网络总线,当第一个域(地址域)接纳届时,每个从设备都进行解码以判别是否发给自己。在最终一个传输字节之后,应至少中止3.5个字节时刻以表明音讯完毕。一个新的音讯可在此中止后再开端。
整个音讯帧有必要作为一个接连的流通输。假如在帧完结之前有超越1.5个字符时刻的中止时刻,接纳设备将改写不完整的音讯并假定下一字节是一个新音讯的地址域。相同,假如一个新音讯在小于3.5个字节时刻内接着前个音讯开端,接纳的设备将以为它是前一音讯的连续,这将导致一个过错,由于在最终的CRC域的值不或许是正确的。典型的音讯帧如下所示:
开端位 |
设备地址 |
功用代码 |
数据 |
CRC校验 |
完毕符 |
T1-T2-T3-T4 |
8Bit |
8Bit |
n个8Bit |
16Bit |
T1-T2-T3-T4 |
3.3地址域
音讯帧的地址域包括两个字符(ASCII)或8Bit(RTU)。答应的从设备地址规模是十进制的0~247。主设备即将联络的从设备的地址放入音讯中的地址域来选通从设备。当从设备发送回应音讯时,它把自己的地址放入回应的地址域中,以便主设备知道是哪一个设备作出的回应。
地址0用作播送地址,以使一切的从设备都能知道。当Modbus协议用于更高水准的网络时,播送或许被制止或以其它方法替代。
3.4功用域
音讯帧中的功用码域包括了两个字符(ASCII)或8Bits(RTU)。或许的代码规模是十进制的1~255。有些功用码适用于一切操控器,有些仅适运用于某种操控器,还有些暂时保存以备后用,参见表1表2。