Modbus 服务端
插件用途
将转发组内的变量映射为 Modbus TCP 或 Modbus RTU 的线圈、离散输入、输入寄存器或保持寄存器,供外部 Modbus 主站读取,并按权限接受写入。
转发组范围和目标启停见数据转发。本页只说明 Modbus 类型、站号、数据格式、地址映射、客户端权限和专用调试。
功能入口
进入“开发配置 → 数据转发”,按以下顺序配置:
- 保存转发组变量范围;只有范围内变量才可以映射到 Modbus 地址。
- 新增目标,选择“Modbus 服务端”,填写目标名称、启用状态、日志级别和启动超时。
- 打开“目标属性”,先选择 Modbus 报文类型和通道类型,再配置协议、权限、串口或 TLS 参数。
- 保存目标后,打开“变量属性”,为每个对外提供的变量填写必填的“从站变量地址”。
- 启用目标,用外部 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:502 | TCP 服务端监听地址。生产环境不要无条件监听全部网卡。 |
| 连接超时 | 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 主站连接服务端。
- 在每个已配置数据区读取一个测试变量,核对地址、值和数据格式。
- 需要写入时,确认目标、客户端和变量权限,再写一个安全值并核对网关变量。
常见问题
| 现象 | 检查方法 |
|---|---|
| 主站无法连接 | 通道类型、本地绑定地址、端口占用、防火墙、最大连接数和客户端权限。 |
| 主站读不到值 | 站号、功能码、目标变量地址、转发组范围和数据类型。 |
| 数值字节顺序不对 | 数据解析顺序、字符串反转、目标数据类型和主站格式。 |
| 写入被拒绝 | 目标“允许RPC写入”、客户端权限、变量权限和主站写功能码。 |
| 串口没有响应 | 串口占用、波特率、数据位、校验位、停止位、流控和帧间隔。 |