中国国旗 中国智造
中国国旗 中国智造

Modbus

Modbus 协议用于建立设备之间的客户端-服务器通信。 协议完全开放,简单易用且成本低廉,从 1979 年推出至今, 已成为事实上的标准,是工业制造环境中最广泛使用的网络协议。 Modbus 协议分为 ASCII、RTU 和 TCP 三种类型, Modbus TCP 适用于以太网通信, Modbus RTU 常用于串行通信(RS-232/RS-485), Modbus ASCII 因传输效率较低已淘汰。

网络接驳

采用 Modbus TCP 协议的设备可通过以太网接口(RJ45)接驳网络; 采用 Modbus RTU 协议的设备通常仅具有串行接口(RS-232/RS-485), 须通过串行网关转接到以太网。

由于采用 Modbus 协议通信的设备受其连接模式所限, 只能在局域网中通信, 无法直接与云端服务器通信,因此,若要与云端服务器通信, 则需要通过 VPN 或通信换向技术实现。

Modbus Topology
Modbus 网络拓扑结构示意图

以太网直连

采用 Modbus TCP 协议的设备通常具有网络接口(RJ45),可直接接驳到局域网中。 设备须配置规划的网络地址和端口以及设备地址标识, 有关设备网络参数设置的更多信息,请查阅设备厂商提供的技术手册。

设备地址标识的范围为 0 ~ 255, 0 为广播地址,1 ~ 247 为从站地址,248 ~ 255 保留, 主要用于在串行链路中作为设备地址,用以识别多个串接设备。 对于独立运行并采用 Modbus TCP 协议通信的设备, 已不存在串接的多个设备,但仍需准确设定此识别号。

串行链路

采用 Modbus RTU 协议的设备通过串行链路(RS-232/RS-485)实现通信, 由于串行链路无法直接与以太网兼容, 接入以太网时须通过专用的串行链路网关设备,将其转接入以太网。

串行网关同时提供以太网接口(RJ45)和串行接口(RS-232/RS-485), 以太网接口用于接驳局域网,串行接口用于接驳设备。 网关的以太网接口通常可提供 Modbus RTU 协议透传模式以及 Modbus TCP 转换模式。 网关的串行接口(RS-232/RS-485)须设定正确的串行链路参数: 波特率、数据位、停止位和校验位,方能与设备通信。 有关网关参数设置的更多信息, 请查阅厂商提供的技术手册。

网关选型: 串行网关应支持数据缓存功能, 以协调以太网和串行链路之间速度差。 以太网理论速度 100 Mbps (12.2 MByte/s), RS-232/RS-485 在常用 9600 波特率时理论速度 9.6 Kbps (14.4 KByte/s)。

RS-232

采用 RS-232 链路的设备在转接以太网时, 设备的 RS-232 接口必须处于空闲状态(未被占用), 因为 RS-232 链路属于点对点接口,不能实现串接或共享。 如果接口已被占用,则无法转接。

注意识别: 某些设备的 RS-232 接口,外形虽然为标准的D型接口, 但是实际上属于 RS-485 链路。 请查阅设备厂商提供的技术手册进行确认。

无效方案: 采用 数据监听接口分支 等方案均无法获得可用效果, 数据监听 方案无法获取原接设备未请求的数据; 接口分支 方案会导致原接设备的通信冲突; 这些方案均已在实践中被弃用。

RS-485

采用 RS-485 链路的设备,通常支持多设备串接(俗称:手牵手模式), 即将多个采用 RS-485 链路的设备串接到同一根双绞线(总线), 各个设备通过地址标识进行区分,总线上的设备地址不能相同,必须确保唯一性。 网关为主站,以相同的方式接入 RS-485 总线, 主站没有地址,其余设备为从站。

设备地址标识的范围为 0 ~ 255, 0 为广播地址,1 ~ 247 为从站地址,248 ~ 255 保留, 因此理论上 RS-485 总线可接驳 247 个设备。 但受链路传输模式和速度限制, 设备串接越多其通信效率越低, 实践中单总线不应超过 32 个设备。

串接弊端: 当多个设备采用 RS-485 总线通过“手牵手”模式串接时, 如果其中某个设备因关机或故障离线, 将导致整个总线通信效率严重降低。 原因在于主从通信模式要求所有指令均须排队执行, 当请求已离线设备时其它设备均需要等待超时之后才能继续通信。

良好连接: RS-485 总线应采用屏蔽双绞线,并且将屏蔽层良好接地; 设备间线缆尽量短,拓扑为无分支直线; 总线两端并接 120Ω 终端电阻,防止信号反射。

通信配置

MODBUS_TCP_SLAVE

JOYZL SCADA 作为从端(SLAVE)主动发起连接到设备, 设备由以太网接口(RJ45)连接到网络, 设备通信参数按如下方式进行设置。

  • 驱动:MODBUS_TCP_SLAVE
  • 接点:设备地址和端口(IP:PORT),默认端口 502,例如 192.168.1.2:502
  • 地址:设备地址识别号,范围 1 ~ 247
MODBUS_RTU_SLAVE

JOYZL SCADA 作为从端(SLAVE)主动发起连接到网关, 网关通过串行链路(RS-232/RS-485)连接设备, 设备通信参数按如下方式进行设置。

  • 驱动:MODBUS_RTU_SLAVE
  • 接点:网关地址和端口(IP:PORT),例如 192.168.1.2:502
  • 地址:设备地址识别号,范围 1 ~ 247

单个目标网络地址(IP:PORT)如果串接了多个设备,例如通过网关转接的 RS-485 总线, 应在 JOYZL SCADA 中创建多个通信设备(Device),并且接点(Point)相同, 由地址(设备地址识别号)进行区分。

数据配置

Modbus 采用地址标识寄存器,规划的寻址范围为 0 ~ 65535。 寄存器地址按用途划分为四个区间,从 0 开始寻址。

  • 00000 ~ 09999 数字量输出(DO),数据类型只能为布尔(Boolean);
  • 10000 ~ 19999 数字量输入(DI),数据类型只能为布尔(Boolean);
  • 20000 ~ 29999 保留,用户不可读写;
  • 30000 ~ 39999 输入寄存器(AI),每地址两个字节,数据类型由设备决定;
  • 40000 ~ 49999 保持寄存器(HR),每地址两个字节,数据类型由设备决定。

JOYZL SCADA 属性代码(Code)格式为:

REGISTER.[BIT]

REGISTER 为寄存器地址,采用十进制表示, 第一位数值为寻址区间,必须完整指定五位数字, 即便为零也不可省略,例如 00000 。

BIT 为可选字段,表示字节位,采用十进制表示, 有效范围为 00 ~ 15,必须完整指定两位数字 数据类型固定为布尔型(Boolean); 仅能用于输入寄存器和保持寄存器,未按字节位读取数据时,此字段可省略。

Modbus 数字(开关)量输入和输出的寄存器地址区固定为布尔型数据(False/True); 输入和保持寄存器对使用的数据类型没有严格限制, 数据类型由各设备厂商自行定义。

寄存器数据含义: 有关设备寄存器数据的具体含义,请查阅设备厂商提供的技术手册。

Modbus 采用指针标识队列(FIFO Queue),规划的指针范围为 0 ~ 9999。 队列用于存储单个参数的连续时序值, 从 0 开始寻址,数据类型由设备决定。

JOYZL SCADA 属性代码(Code)格式为:

Q(POINT)

POINT 为队列指针,采用十进制表示, 首字母 'Q' 表示队列,后跟四位数字, 必须完整指定四位数字,即便为零也不可省略, 例如 Q0000 。

队列数据含义: 有关设备队列数据的具体含义,请查阅设备厂商提供的技术手册。

JOYZL SCADA 属性支持的数据类型请参考 数据类型表

标准规范

Modbus 控制指令
  • 读线圈
  • 读离散量输入
  • 读保持寄存器
  • 读输入寄存器
  • 写单个线圈
  • 写单个寄存器
  • 读异常状态(仅用于串行链路)
  • 诊断(仅用于串行链路)
  • 获取通信事件计数器(仅用于串行链路)
  • 获取通信事件计记录(仅用于串行链路)
  • 写多个线圈
  • 写多个寄存器
  • 报告从站地址(仅用于串行链路)
  • 读文件记录
  • 写文件记录
  • 屏蔽写寄存器
  • 读/写多个寄存器
  • 读FIFO队列
  • 封装接口传输

不支持的指令: JOYZL SCADA 未提供对 Modbus 规范中的 封装接口传输指令(43) 的支持, 包括 CANopen(MEI 13) 和 读取设备信息(MEI 14) 以及其它扩展的 MEI 指令。

遵循和参考的标准或规范:
GB/T 19582—2008 基于Modbus协议的工业自动化网络规范
GB/T 19582.1—2008 基于Modbus协议的工业自动化网络规范 第1部分:Modbus应用协议
GB/T 19582.2—2008 基于Modbus协议的工业自动化网络规范 第2部分:Modbus协议在串行链路上的实现指南
GB/T 19582.3—2008 基于Modbus协议的工业自动化网络规范 第3部分:Modbus协议在TCP/IP上的实现指南
ANSI EIA/TIA-485-A-1998 Electrical Characteristics of Generators and Receivers for Use in Balanced Digital Multipoint Systems
ANSI EIA/TIA-232-E-1997 Interface Between Data Terminal Equipment and Data Circuit-Termination Equipment Employing Serial Binary Data Interchange
Modbus.org Modbus application protocol specification

技术支持
电话 JOYZL SCADA 电话 QQ JOYZL SCADA QQ 微信 JOYZL SCADA 微信
技术支持
电话 JOYZL SCADA 电话
QQ JOYZL SCADA QQ 微信 JOYZL SCADA 微信