跳到主要内容

Modbus 服务端

插件用途

将转发组内的变量映射为 Modbus TCP 或 Modbus RTU 的线圈、离散输入、输入寄存器或保持寄存器,供外部 Modbus 主站读取,并按权限接受写入。

转发组范围和目标启停见数据转发。本页只说明 Modbus 类型、站号、数据格式、地址映射、客户端权限和专用调试。

功能入口

进入“开发配置 → 数据转发”,按以下顺序配置:

  1. 保存转发组变量范围;只有范围内变量才可以映射到 Modbus 地址。
  2. 新增目标,选择“Modbus 服务端”,填写目标名称、启用状态、日志级别和启动超时。
  3. 打开“目标属性”,先选择 Modbus 报文类型和通道类型,再配置协议、权限、串口或 TLS 参数。
  4. 保存目标后,打开“变量属性”,为每个对外提供的变量填写必填的“从站变量地址”。
  5. 启用目标,用外部 Modbus 主站或目标“调试”页读取测试点;需要写入时先确认三层权限。

协议与通道

参数默认值如何配置
Modbus类型ModbusTcp当前版本只有 ModbusTcp(MBAP 报文)和 ModbusRtu(二进制 RTU + CRC16),没有 ASCII 选项。TCP 通常配 TcpService;RTU 通常配 SerialPort
默认站号1变量地址没有 S= 前缀时使用。站号必须与主站点表一致;使用多站点时在地址中显式写站号。
多站点模式开启开启后同一目标可映射多个站号;只使用一个站号时可关闭。
通道类型TcpService选择 TcpServiceSerialPort 或部署需要的其它通道。通道类型决定后续显示和生效的地址、串口、DTU 和 TLS 字段。

选择通道后,只填写该通道对应的字段。TCP 服务端通常在“本地绑定地址”填写 0.0.0.0:502;生产环境建议绑定指定网卡地址,或使用客户端权限列表限制来源。串口通道填写串口参数;DTU 通道填写 DtuIdDtuId是否HexDtu服务类型。TLS 参数只在启用 SSL 的通道上配置。

数据格式与权限

参数默认值如何配置
数据解析顺序ABCD可选 ABCDBADCCDABDCBA,必须与主站的字节序和字序一致。
字符串反转字节关闭按字反转字符串字节;只在主站字符串布局相反时开启。
允许RPC写入开启目标级写入总开关。只读监控服务应关闭。
客户端权限列表列表为空时 TCP 客户端不限制来源 IP;列表非空时只允许匹配 AllowedClientIp 的客户端连接。每条匹配项还必须 AllowWrite=true 才允许写入。
立即写入内存开启接受外部写入后立即调用网关变量写入;关闭时不立即更新内存。
发送延时时间0 毫秒回复报文前等待的毫秒数。仅在主站明确要求报文间隔时调整。

通道、串口和容量属性

参数默认值如何配置
远程地址127.0.0.1:502仅客户端或需要远程端点的通道使用。Modbus TCP 服务端通常不填写。
本地绑定地址0.0.0.0:502TCP 服务端监听地址。生产环境不要无条件监听全部网卡。
连接超时3000 毫秒建立连接的超时时间,最小 100 毫秒。
最大并发数1同时处理的协议请求数,最小 1
最大连接数10000服务端允许的客户端连接上限,按现场客户端数量设置。
组包缓存时间500 毫秒粘包/拆包等待窗口,最小 100 毫秒。
客户端清理时间120000 毫秒检查并清理空闲客户端的周期。
心跳内容 / 心跳是否Hex / 心跳时间空 / 关闭 / 60000 毫秒只有主站或 DTU 要求应用层心跳时配置;Hex 开启后按十六进制解析内容。
串口 / 波特率 / 数据位 / 校验位 / 停止位COM1 / 9600 / 8 / None / One仅串口通道生效,必须与外部设备完全一致。
DtrEnable / RtsEnable / 异步流 / 握手方式开启 / 开启 / 开启 / 默认按串口硬件流控和驱动要求配置。
串口输入/输出缓冲区大小4096 / 2048 字节长帧或持续流量不足时再增大。
DtuId / DtuId是否Hex / Dtu服务类型空 / 关闭 / Default仅 DTU 通道使用;按 DTU 注册报文约定填写。

启用 SSL 时还需填写“SSL客户端证书”“SSL服务端证书”“SSL CA证书”“SSL目标主机名”“SSL协议”“允许不受信任证书”和“检查证书吊销”。服务端模式至少需要服务端证书;生产环境关闭“允许不受信任证书”。

目标变量属性

保存目标后,打开“变量属性”,为每个需要提供给主站的变量配置 Modbus 映射。

参数默认值如何配置
从站变量地址空(必填)填写对外暴露的 Modbus 地址。未填写或格式无效时,该变量不会建立映射。
数据类型Int16选择 ObjectStringBooleanByteInt16UInt16Int32UInt32Int64UInt64FloatDoubleDecimal;占用寄存器数量必须与主站点表一致。
允许RPC写入开启变量级写入权限。外部写入必须同时通过目标“允许RPC写入”、客户端权限 AllowWrite 和该开关。

变量必须已在转发组范围内;新增目标变量属性不会把变量加入转发组。

地址规则

地址写法数据区常用读取功能码
00001线圈FC1
10001离散输入FC2
30001输入寄存器FC4
40001保持寄存器FC3

标准地址按 1 起始填写;当前 Modbus 地址解析只支持 TCP/RTU 对应的数据区:

  • S=2;40001:站号 2 的保持寄存器 40001。
  • F=3;0:显式使用 FC3 和 0 起始偏移。
  • 40001.3:保持寄存器 40001 的第 3 位。

同一目标内的站号、功能码和起始地址组合不得冲突。多寄存器数据占用的地址不能与相邻变量重叠。

目标调试

进入“开发配置 → 数据转发”,选择 Modbus 服务端目标后打开“调试”。

功能作用
读写按当前映射地址读取或写入,检查站号、功能码、数据类型和权限。
转发管线查看转发组变量如何进入 Modbus 服务端映射。
协议服务查看监听端点、已连接客户端和协议服务状态。

读写

Modbus 服务端读写调试

转发管线

Modbus 服务端转发管线

协议服务

Modbus 服务端协议服务

先执行读取确认地址和格式。写入或断开客户端前,必须确认变量、客户端和现场影响。

验证方法

  1. 启用目标,确认协议服务正在监听。
  2. 使用外部 Modbus 主站连接服务端。
  3. 在每个已配置数据区读取一个测试变量,核对地址、值和数据格式。
  4. 需要写入时,确认目标、客户端和变量权限,再写一个安全值并核对网关变量。

常见问题

现象检查方法
主站无法连接通道类型、本地绑定地址、端口占用、防火墙、最大连接数和客户端权限。
主站读不到值站号、功能码、目标变量地址、转发组范围和数据类型。
数值字节顺序不对数据解析顺序、字符串反转、目标数据类型和主站格式。
写入被拒绝目标“允许RPC写入”、客户端权限、变量权限和主站写功能码。
串口没有响应串口占用、波特率、数据位、校验位、停止位、流控和帧间隔。

相关操作

  • 数据转发:配置转发组范围和公共目标操作。
  • 证书管理:维护 TLS 服务端、客户端和 CA 证书。
  • 插件索引:查找其它采集或数据转发插件。