跳到主要内容

Modbus 工作原理

工作模式

Modbus 基于主从模式工作。在一个网络中,Modbus 协议通过主设备(客户端)和从设备(服务器)之间的请求-应答机制来交换信息。

下图展示了典型的 Modbus 网络,其中一个 master 设备(client)控制一个或多个 slave 设备(server)。

在标准的 Modbus 网络中,有 1 个主设备和最多 31 个从设备。

通讯特点

主设备-从设备工作原理有如下特点:

  • 在同一时间只能有一个主设备连接到网络;
  • 只有主设备能够发起通讯并向从设备发送请求;
  • 主设备可以使用专门的地址分别访问每个从设备,也可以使用地址 0 同时访问所有从设备;
  • 从设备只能向主设备发送应答;
  • 从设备不能向主设备或其它从设备发起通讯。

通讯模式

Modbus 协议支持两种通讯模式交换信息:

  • 单播模式 —— 主设备通过专门的地址访问从设备,从设备处理请求,然后向主设备发送应答。
  • 广播模式 —— 主设备通过地址 0 访问所有从设备,在这种模式下,从设备不对广播消息作出应答。(因此,广播模式的请求指令必须是 Modbus 标准功能中的写指令)

应答时间

应答时间是指从设备对主设备发出的请求做出应答所需的时间。其中 Modbus 协议的数值:

  • 典型值 < 10 ms (90% 的信息交换)
  • 最大值大约是 700 ms,因此建议在发送完一个 Modbus 请求后暂停 1 秒钟再继续。

数据交换

Modbus 协议支持两种数据类型:

  • 单个位
  • 寄存器(16 位)

具体的位和寄存器定义由从设备决定。

地址

使用 Modbus 协议交换的消息包含要处理的数据的地址。每个寄存器都有一个寄存器编号,每类数据(位或寄存器)都有一个 16 位的地址。

在 Modbus 协议规定的 PDU 中,规定所有线圈或寄存器地址从 0 开始计算。因此,第 n 号寄存器的地址是 n-1。例如,第 12000 号寄存器的地址是 0x2EDF(11999)。

使用 Modbus 协议交换的所有帧(ADU)最大为 256 字节(ASCII 格式翻倍),其中包括 4 个域:

定义大小(RTU 格式)描述
1从设备号(地址)1 个字节请求的目的地址
- 0 :广播(涉及所有从设备)
- 1-247 :单播,从设备的唯一地址
2功能代码1 个字节参阅 Modbus 功能码
3数据0 到 252 个字节请求数据(或应答数据)
4校验和2 个字节CRC 校验和(ASCII 为 LRC)

下图展示了主设备-从设备工作模型中的帧交换过程。

网络拓扑

Modbus RTU

Modbus RTU 通常基于 RS-485 串行通信链路,RS-485 总线布线规范规定其必须是总线式拓扑结构。在实际布线中,通常采用手牵手菊花链布线方式。例如,Slave 1/2/3 三台 RS-485 设备,Slave1 的 485+ 接入 Slave2 的 485+ 端口,Slave2 的 485+ 再连接到 Slave3 的 485+ 端口,以此类推,485- 的接线方式和 485+ 一样。

Modbus TCP

相对于使用串行链路的 Modbus RTU,Modbus TCP 基于以太网通信,因此其网络拓扑结构更为灵活。从串行链路上一主多从的构造,演变为多客户端/多服务器端的构造模型。

使用 Modbus TCP,主站设备(客户端)可以通过 IP 地址找到 Modbus 从设备(服务器),并通过 Modbus 网关连接到另一个 Modbus RTU 网络。