1.0 介绍
Modbus是由AEG-Modicon(莫迪康)公司开发的串行通信协议。它最初设计用于可编程逻辑控制器(PLC)。它是一种应用层消息传递协议,运行在开放系统互连(OSI)协议模型的第7层,提供连接在不同类型网络上的设备之间的客户端-服务器通信。
Modbus协议层如下图所示,它定义了一种通过另一设备访问和控制设备的方法,而不考虑所涉及的物理网络的类型。

Modbus不需要接口,就像许多其他总线一样。用户可以选择RS-422, RS-485或20 mA电流回路。与其他总线相比,Modbus速度相对较慢,但在控制仪表制造商和用户中被广泛接受,具有决定性优势。
自1979年以来,Modbus成为工业串行总线的事实标准。Modbus没有正式的认证方式,制造商的责任是确认他们的产品与Modbus设备兼容。协议描述了一个设备访问另一个设备的方式,如何接收信息,以及如何响应查询。在出现错误的情况下,协议提供了一种向用户发送相应命令的机制。通过将Modbus协议作为数据包嵌入到其他网络的协议中,通信可以在Modbus网络上进行,也可以在其他网络(如以太网)上进行。
Modbus串行通信协议基于主/从原理,由主设备发起事务。该协议提供一个主设备和多达247个从设备。
Modbus的一些特性是固定的,一些特性是用户可以选择的。固定的特征是帧格式、帧序列、通信错误和异常条件的处理以及所执行的功能。可选择的特性是传输介质和传输特性。用户特征一旦设置,在系统运行时就不能更改。
2.0 通信栈
Modbus的实现方法如下:
- 以太网上的传输控制协议(TCP)/互联网协议(IP)。
- 异步串行传输在不同的媒质,如:EIA/TIA-232E, EIA-422, EIA/TIA-485-A; 光纤, 无线通信等.
- Modbus Plus — 一种高速令牌传递方法。
下图,展示了使用TCP/IP、主/从和Modbus Plus物理层实现Modbus通信栈的过程。

3.0 网络结构
Modbus网络架构方案如下图所示。

不同的设备,如PLC、人机界面(HMI)、输入/输出(I/O)等,可以通过单独的网关连接到Modbus TCP/IP。不同的Modbus协议,即MB+上的Modbus, RS-232上的Modbus,RS-485上的Modbus通过TCP/IP发起远程通信。
4.0 通信事务
Modbus串行通信采用主/从协议。主站发起查询,从站通过向主站提供必要的数据或根据请求采取适当的操作来响应。 从站的响应如下:
- 采取适当的行动
- 向主站提供必要的数据/信息
- 通知主站,必要的行动无法执行。
当从站无法按照主站的请求执行所需的操作时,将向主站发送一条错误消息(称为异常响应)。对主站的异常响应包含以下内容:
- 响应从站的地址
- 从站被请求执行的动作和
- 说明行动为什么不能执行。
如果消息包含错误,从站会忽略它。在这种情况下,因为它无法收到从响应的响应,主站将查询重发给从站。
4.1. 主/从和广播通信
主站可以一个一个地对从站寻址(单播模式),也可以同时给所有从站寻址(广播模式)。从站响应单播消息,但不响应多播消息。主/从通信和广播通信方式分别如下图所示:

4.2 查询响应周期
查询由主站发起,从站响应它。查询响应周期是Modbus网络中所有通信事务的基础。来自主站的查询包含四部分:设备地址、功能码、数据/消息和错误检查码。从站的响应结构与主站的响应结构相同。下图显示了查询响应周期。

4.2.1 地址段
主站在其查询中发送的地址字段包含消息所指向的从站的地址。取值范围为 1到247。当从站发送它的响应时,它将自己的地址放在它的地址字段中,以便主站可以知道正确的从站正在响应。地址0指定用于广播。所有从站都读取它们,但不向来自主站的查询提供任何响应。
4.2.2 功能段
虽然不是所有设备都支持所有的功能码,但是功能码的取值范围是1 ~ 255。当功能码在查询中从主站到达从站时,从站就会知道它必须采取的操作。从站所采取的动作的例子可能包括:读取输入状态,读取寄存器内容,改变从站内的状态,操作继电器线圈等。
当从站向主站发送响应时,它重复接收到的佛南功能码。它表示从站已经理解了来自主站的查询并采取了相应的行动。如果从站无法执行指令,则生成异常响应,从站使用功能码和数据字段将异常的原因告知主站。
在生成异常响应的情况下,从站将原始功能码返回给主站,但将MSB设置为1。在这种情况下,从站的响应消息的数据字段向主站指示所发生的错误的性质。因此,主站可以基于此采取适当的操作。主站所采取的行动可能是重复原始消息,或尝试诊断问题,或设置警报等。
4.2.3 数据段
查询中从站接收到的数据字段通常包括寄存器值、寄存器地址或寄存器范围。有些功能不需要数据字段,此时,来自主站的查询中不包含d数据字段。
如果没有发生错误,则从站使用响应的数据字段将数据传递回主主站。当错误发生时,从站的数据字段传递更多的信息,告知主站所检测到的错误的性质。
Modbus本身不编码数据,因此可以采用许多编码方案。用户可以就网络通讯协议做出选择。
4.2.4 错误校验段
错误校验字段允许主站确认从从站接收到的消息的完整性。所采用的错误校验方法取决于所选择的传输模式。在远程终端单元(RTU)模式下,可以采用循环冗余检查(CRC),或者,对ASCII模式的传输采用LRC。
接收设备收到完整消息后,计算错误校验值,并与收到的消息中的错误校验值进行比较。如果两者一致,则没有发生错误并采取相应的行动。如果两个值不一致,接收到的消息将被拒绝。
5.0 协议说明:PDU 和 ADU
Modbus可以在不同类型的总线和网络上实现,但Modbus部分协议数据单元(PDU)必须包含该总线和网络中。PDU由两个字段组成:功能码和数据。
两种最常见的Modbus实现类型是以太网(TCP/IP)和串行通信,串行通信通可以是RS232、RS422或RS485。最常见的Modbus串行协议是Modbus-RTU。无论用于特定应用程序的协议类型是什么,特定于应用程序的寻址和错误校验都附加到PDU上,从而产生应用程序数据单元(ADU)。如下图所示,ADU表示Modbus帧。

6.0 传输模式
在Modbus网络中传输串行数据有两种传输方式:RTU和ASCII。它们在许多方面有所不同:在消息字段中包装信息的方式、解释消息的比特内容的方式、解码消息的方式以及在给定波特率下的操作速度。
不同的模式不能同时使用,用户可以为特定的应用程序选择特定的模式。RTU模式比ASCII模式更快、更健壮。因此,在消息传输方面,它比ASCII形式有更多的应用
RTU传输模式有时被称为Modbus-B, ASCII传输模式被称为Modbus-A。ASCII模式下的典型消息长度大约是等效RTU消息长度的两倍。 在ASCII传输模式下,消息中的每个字节以两个ASCII字符的形式传输,在RTU传输模式下,消息中的每个字节以一个包含两个十六进制数字的8位二进制数的形式发送。
通过将Modbus数据封装在TCP/IP报文中,Modbus报文也可以在局域网和广域网中传输。
7.0 消息分帧
对于消息的传输,在其最终传输之前构造一个帧。帧由开始字符和结束字符、单播设备地址或广播设备地址、功能码、数据和错误校验码组成。
7.1 ASCII 分帧
Modbus ASCII 帧由六个字段组成,如下图所示。

帧以冒号(:)开头,它是ASCII字符3Ah, h表示十六进制。帧以一个end结束,它是一个回车换行符,用两个ASCII字符 0Dh和0Ah表示。中间其余四个字段用十六进制字符 0-9和A-F表示。
ASCII模式允许两个连续传输之间的间隔为1秒,而不会产生任何错误。连接到Modbus网络的所有设备持续监视冒号字符,冒号字符将代表ASCII字符的开始。如果一个特定的设备发现与它自己的地址匹配,那么它将开始解码功能代码和其他字段,并采取相应的行动。
7.2 RTU 分帧
在这种模式下,消息帧以至少3.5倍字符长度的静默时间间隔开始。消息以相同的3.5倍字符长度的时间间隔结束。在开始字段之后,接收设备将监听地址字段,以了解消息是否要发送到该设备。RTU帧格式如下图所示。整个消息帧必须在一个连续流中传输,否则将产生错误。

8.0 Modbus TCP/IP
开放的Modbus TCP/IP规范于1999年引入。使用Modbus TCP/IP协议有几个优点,如简单、使用标准以太网、开放等。在单个站点上可以轻松实现超过1 kB/秒的传输速率。
Modbus TCP/IP是一种互联网协议。它是一个TCP包装过的Modbus协议。因此,Modbus设备可以通过Modbus TCP/IP进行通信。网关设备只需要从物理层(RS-232、RS-485或其他)转换到以太网,并将Modbus协议转换为Modbus TCP/IP。
下图 (a,b)显示了Modbus TCP/IP协议层以及OSI层,以及分别封装在Modbus TCP/IP框架中的Modbus帧:

常规的Modbus帧包含设备地址的任意两个ASCII码(在ASCII模式下)或8位十六进制字节(在RTU模式下),这里被替换为IP地址和设备网络标识符。此外,Modbus帧中的16位校验和被Modbus TCP/IP帧中的TCP的32位CRC所取代。
将Modbus协议的主/从架构修改为Modbus TCP/IP中的客户端-服务器架构。由于TCP是面向连接的协议,对于Modbus TCP/IP中的每个查询,都会有一个响应。
-
以太网
+关注
关注
41文章
5923浏览量
179513 -
CRC校验
+关注
关注
0文章
84浏览量
15845 -
MODBUS总线
+关注
关注
0文章
26浏览量
10276 -
可编程逻辑控制器
+关注
关注
4文章
273浏览量
26613 -
TCP通信
+关注
关注
0文章
146浏览量
4774
发布评论请先 登录
modbus消息帧的模块化架构介绍
什么是Modbus通讯协议?Modbus通讯协议有什么特点?
无线ModBus实训套件应用方案
Modbus TCP转Modbus RTU的实现
基于Modbus RTU的串口调试软件的实现
自动化行业的Modbus TCP和PROFINET
亚信AX58200 EtherCAT转Modbus TCP网关解决方案介绍视频
Modbus on AT32 MCU
如何快速实现Modbus RTU和Modbus TCP协议转换?
Modbus通讯协议的几种实现方式
AB PLC 与MODBUS 网络的通信The commun
Modbus通讯协议应用架构及案例介绍

Modbus的实现方法有哪些?Modbus网络架构方案介绍
评论