跳到主要内容

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选择 TcpService、SerialPort 或部署需要的其它通道。通道类型决定后续显示和生效的地址、串口、DTU 和 TLS 字段。

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

数据格式与权限​

参数默认值如何配置
数据解析顺序ABCD可选 ABCD、BADC、CDAB、DCBA,必须与主站的字节序和字序一致。
字符串反转字节关闭按字反转字符串字节;只在主站字符串布局相反时开启。
允许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选择 Object、String、Boolean、Byte、Int16、UInt16、Int32、UInt32、Int64、UInt64、Float、Double 或 Decimal;占用寄存器数量必须与主站点表一致。
允许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 证书。
  • 插件索引:查找其它采集或数据转发插件。