微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Modbus协议的常用基本定义——(RS485总线系统应用之2)

Modbus协议的常用基本定义——(RS485总线系统应用之2)

时间:12-15 来源:互联网 点击:
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。

Modbus协议规定每个控制器必须有自己的设备地址。当一个控制器在Modbus网络上接收到一条消息时,首先要识别是否发给自己。如果是并且需要回应,控制器将生成反馈消息并依据Modbus协议发出。

不论是何种控制器经过何种网络进行通信,Modbus协议定义了一个控制器能够识别的消息域的框架结构和内容的公共格式。它描述了一个控制器请求访问其它设备的过程,以及如何回应来自其它设备的请求。还规定了如何侦测和记录错误。

遵循Modbus协议,不同厂家生产的控制设备可以连接在同一个工业网络。在这个网络上,主机设备可以方便地对各种控制设备进行集中监控,各控制设备之间也可以直接相互通信。

2. Modbus的两种传输模式

Modbus的两种传输模式分别是ASCII(美国标准信息交换代码)和RTU(远程终端装置)。用户要实现Modbus网络通信,必须选中一种传输模式并配置串口通信参数(波特率、校验方式等)。在同一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。

当消息在标准的Modbus系列网络传输时,每个字符或字节以如下方式发送(从左到右):最低有效位...最高有效位。

2.1 ASCII模式

使用ASCII字符帧时,位的发送序列是:

有奇偶校验:

启始位

1

2

3

4

5

6

7

奇偶位

停止位

无奇偶校验:

启始位

1

2

3

4

5

6

7

停止位

停止位

ASCII模式编码说明:

.消息中的每个字节都是一个ASCII字符,由两位十六进制字符组成:0...9,A...F

.每发送一个字节包含:

1个起始位、7个数据位(最小的有效位先发送)、1个奇偶校验位(无校验则无)、1个(有校验时)或2个停止位(无校验时)

.错误检测采用LRC(纵向冗长检测)

当控制器设为在Modbus网络上以ASCII模式通信时,在消息中的每个字节(8Bit)都作为一个ASCII字符发送。这种方式的主要优点是字符发送的时间间隔可达到1秒而不产生错误。

ASCII模式的消息帧结构:

冒号符

地址码

功能代码

数据数量

数据1

...

数据n

LRC高字节

LRC低字节

回车符

换行符

2.2 RTU模式

使用RTU字符帧时,位的发送序列是:

有奇偶校验:

启始位

1

2

3

4

5

6

7

8

奇偶位

停止位

无奇偶校验:

启始位

1

2

3

4

5

6

7

8

停止位

停止位

RTU模式编码说明:

.消息中的每个字节都是由两个十六进制字符组成:0...9,A...F

.每发送一个字节包含:

1个起始位、8个数据位(最小的有效位先发送)、1个奇偶校验位(无校验则无)、1个(有校验时)或2个停止位(无校验时)

.错误检测采用CRC(循环冗长检测)

当控制器设为在Modbus网络上以RTU模式通信时,在消息中的每个字节(8Bit)包含两个4Bit的十六进制字符。这种方式的主要优点是:在同样的波特率下,可比ASCII方式传送更多的数据。

RTU模式的消息帧结构:

地址

功能代码

数据数量

数据1

...

数据n

CRC低字节

CRC高字节

3. Modbus的消息帧结构

在ASCII或RTU两种传输模式中,传输设备将Modbus消息转换为有起点和终点的帧,这就可以使接收设备在消息起始处同步接收数据,读取地址信息,判断哪一个设备被选中(广播方式则传给所有设备),判知何时信息已传送完毕。有些消息也能侦测到错误并且能返回结果。

3.1 ASCII帧

使用ASCII模式,每帧消息以冒号(:)字符(ASCII码3AH)开始,以回车换行符结束(ASCII码0DH,0AH)。

其它域可以使用的传输字符是十六进制的0...9,A...F。网络上的设备不断侦测“:”字符,当有一个冒号接收到时,每个从设备都解码下个域(地址域)来判断是否是发给自己的。

消息中字符间发送的时间间隔最长不能超过1秒,否则接收的设备将认为传输错误。一个典型消息帧如下所示:

起始位

设备地址

功能代码

数据

LRC校验

结束符

1个字符

2个字符

2个字符

n个字符

2个字符

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top