[ 监测系统 ] [2] MODBUS 通信协议

Modbus 是 Modicon 公司为可编程逻辑控制器(PLC)而提出的一种串行通信协议,目前已成为工业领域通信协议的业界标准。Modbus 协议是一个 master/slave 架构的协议。每个 Modbus 网络存在唯一的 master 节点,其他通信节点为 slave 节点,每一个 slave 设备都有一个唯一的地址。Master 端发送数据请求消息,Slave 端接收到正确消息后就可以发送数据到 Master 端以响应请求。Master 端也可直接发消息修改 Slave 端的数据,实现双向读写。在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和远程终端控制系统(RTU)。

image.png

协议版本

Modbus 协议目前存在用于串口、以太网以及其他支持互联网协议的网络版本。

大多数Modbus设备通信通过串口RS-485物理层进行。

对于通过 TCP/IP(例如以太网)的连接,存在多个Modbus/TCP变种,这种方式不需要校验和计算。

上述通信协议,在数据模型和功能调用上都是相同的,只有封装方式不同。

TCP/IP 上的 Modbus 协议

Modbus TCP/IP是运行在以太网 TCP/IP 网络上的 Modbus 报文传输协议。Modbus TCP/IP 通信系统包括两种不同类型的设备:

1)连接至 TCP/IP 网络的 Modbus TCP/IP 客户机和服务器设备

2)互联设备,例如:在 TCP/IP 网络和串行链路子网之间互连的网桥、路由器或网关。

Modbus 协议提供以太网 TCP/IP 网络上设备之间的客户机/服务器通信。这种客户机/服务器通信模式提供四种类型报文服务:

1)Modbus请求:客户机在网络上发送用来启动事务处理的报文。

2)Modbus指示:服务端接收的请求报文。

3)Modbus响应:服务器发送的响应信息。

4)Modbus证实:在客户端接收的响应信息。

Modbus 协议定义一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网络上的 Modbus 协议能够在应用数据单元(ADU)上引入一些附加域。TCP/IP 上的 Modbus 应用数据单元(ADU)组成如下图所示:

image.png

包括:MBAP报文头(Modbus协议报文头)、功能码、数据。

启动Modbus事务处理的客户机建立Modbus应用数据单元。应用数据单元中功能码向服务器指示执行操作内容。

Modbus TCP/IP 协议上层结构

它是一个既包含Modbus客户机又包含Modbus服务器组件的通用模型,适用于任何设备。

image.png

1)TCP/IP 栈

TCP/IP 栈可以进行参数配置,用于特定产品或系统的数据流控制、地址管理和连接管理。通常 BSD 套接字接口就用来管理 TCP 连接。

2)TCP 管理层

管理通信的建立和结束,管理建立在 TCP 连接上的数据流。

3)通信应用层

一个Modbus设备可以提供一个客户机和/或服务器Modbus接口。可提供一个Modbus后台接口,允许间接地访问用户应用对象。

4)用户应用

用户应用规定了用户、系统以及不同设备可调用的应用功能。

5)资源管理和数据流控制

为平衡Modbus客户机与服务器之间报文传输的数据流,在Modbus报文传输栈的所有各层均设置数据流控制机制。