DTU 服务
DTU 服务用于接入通过 TCP 主动连接 GatewayRuntime 的透传终端。GatewayRuntime 作为 TCP 服务端监听端口,DTU 建立连接后先上报终端标识,网关再按照设备中的 DTU ID 把该连接分配给对应采集设备。一个 TCP 服务通道可以同时承载多台 DTU,不需要为每台终端重复创建监听端口。
适用场景
| 场景 | 说明 |
|---|---|
| 4G/5G DTU 主动上网 | 终端位于移动网络或现场内网,由终端主动连接部署在公网或中心网络的 GatewayRuntime。 |
| 多终端共用监听端口 | 多台 DTU 连接同一个 TCP 服务通道,网关通过每台终端的 DTU ID 区分连接。 |
| 串口设备远程透传 | DTU 把 PLC、仪表或采集模块的串口协议透传到 TCP,GatewayRuntime 继续使用 Modbus 等采集插件访问现场设备。 |
| DDP 协议终端 | 终端明确支持 DDP 协议时,把通道的 DTU 服务类型设置为 DDP。普通注册式 DTU 使用“默认”。 |
本页截图来自当前 GatewayRuntime 的实际运行验证。测试通道监听 127.0.0.1:15020,DTU ID 为 modbusDtu831745464586309,Modbus 变量地址为 400001,模拟终端实际返回数值 1234。127.0.0.1 只用于本机验证,生产环境应填写现场可访问的网卡地址或 0.0.0.0:端口。
配置前准备
配置前先向 DTU 厂商或现场人员确认以下信息。
| 信息 | 需要确认的内容 |
|---|---|
| 连接方向 | DTU 必须作为 TCP 客户端主动连接 GatewayRuntime。 |
| 服务地址 | DTU 能访问的网关 IP 或域名,以及允许接入的 TCP 端口。 |
| 注册标识 | DTU 建立连接后上报的终端编号、上报时机和编码方式。 |
| 标识格式 | 标识是普通文本还是原始十六进制字节,是否包含前缀、后缀、换行符或长度字段。 |
| DTU 服务类型 | 普通终端选择“默认”;只有终端协议明确为 DDP 时才选择 DDP。 |
| 透传协议 | DTU 后方设备使用的协议、站号、地址、数据类型、字节序和响应超时。 |
| 保活策略 | DTU 主动发送心跳的内容和周期,以及是否要求服务端响应心跳。 |
| 网络策略 | 防火墙、端口映射、安全组和运营商网络是否允许 DTU 主动连接。 |
快速生成测试配置
GatewayRuntime 可以生成一套 DTU 测试配置,用于快速建立通道、设备和变量骨架。
- 登录 GatewayRuntime Web,进入“开发配置 → 采集配置”。
- 点击变量列表右上角“显示更多 → 测试数据”。
- 选择“DTU测试数据”,设备数量建议先填
1。 - “从站地址”填写本机或测试环境可监听的地址,例如
127.0.0.1:15020。

- 点击“生成”。页面会创建一个 TCP 服务通道、一台 Modbus 采集设备、一个
400001变量,以及配套的测试转发配置。 - 打开自动生成的设备“插件属性”,记录动态生成的
DTU ID。 - 在真实 DTU 或 DTU/Modbus 模拟器中填写监听地址和该 DTU ID,再启动终端连接。
生成成功只表示配置已经写入。要看到通道、设备和变量在线,仍需真实 DTU 或协议模拟器主动连接、发送完全一致的 DTU ID,并正确响应采集协议请求。
配置 TCP 服务通道
进入“开发配置 → 采集配置”,点击“通道管理 → 新增”;已有通道可点击“编辑”。
- “通道名称”填写能表示现场链路的名称,例如
dtu-modbus-service。 - “通道类型”选择
TcpService。 - 开启“使能”。
- “绑定地址”填写 GatewayRuntime 本机监听地址。
0.0.0.0:15020表示监听所有网卡,127.0.0.1:15020只允许本机连接。 - 在高级配置中核对心跳、最大连接数、客户端过期时间、DTU 服务类型和 DTU ID Hex。

实际验证通道的 DTU 高级参数如下。截图中的客户端过期时间为当前版本默认值 120000 ms。

通道参数
| 配置项 | 当前默认值 | 说明 |
|---|---|---|
| 通道类型 | TcpClient | DTU 服务必须改为 TcpService,由网关等待终端主动接入。 |
| 绑定地址 | 空 | TCP 服务端必填。生产环境可填写指定网卡地址或 0.0.0.0:端口。 |
| 连接超时 | 3000 ms | 建立连接或执行相关连接操作的超时时间。网络质量差时可适当增大。 |
| 缓存超时 | 500 ms | 通道组包和协议读取使用的缓存窗口。普通场景保持默认。 |
| 最大并发数 | 1 | 同一通道请求并发限制。现场设备要求严格顺序时保持 1。 |
| 心跳内容 | 空 | 按 DTU 协议填写。开启右侧 Hex 后,内容按十六进制字节解析。 |
| 最大连接数 | 10000 | 该 TCP 服务通道允许同时保持的客户端数量。应大于计划接入的 DTU 总数,并预留扩容空间。 |
| 客户端过期时间 | 120000 ms | 客户端在该时间内无通信会被断开。0 表示不检测空闲客户端。 |
| DTU 服务类型 | Default | 普通注册式 DTU 使用默认模式;只有明确支持 DDP 协议的终端才选择 DDP。 |
| DTU ID Hex | 关闭 | 关闭时按文本解析终端标识;开启时按原始十六进制字节解析。 |
DTU 有心跳时,客户端过期时间应明显大于心跳周期,现场通常至少留出 2 到 3 个心跳周期。默认 120000 ms 适合心跳周期明显小于 120 秒的场景。设置为 0 会让空闲连接不再自动清理,只应在明确了解终端行为和连接规模时使用。
配置 DTU 采集设备
点击“设备管理 → 新增”,先完成基本信息,再进入“插件属性”。
- “设备名称”填写现场设备或 DTU 的唯一名称。
- “设备插件”选择实际透传协议。本页使用
ModbusMaster。 - “关联通道”选择前面创建的
TcpService通道。 - “执行间隔”按现场采集周期填写,例如
1000表示每秒执行一次。 - 打开“插件属性”,在
DTU ID中填写终端连接后实际上报的标识。 - 继续核对 Modbus 类型、默认站号、读写超时和数据解析顺序。

设备关键参数
| 配置项 | 说明 |
|---|---|
| 设备插件 | 选择 DTU 后方真实设备使用的采集协议,不是选择一种通用“DTU 插件”。 |
| 关联通道 | 多台 DTU 可以关联同一个 TCP 服务通道。 |
| 执行间隔 | 决定采集请求周期。移动网络延迟较高时不要设置得过小。 |
| DTU ID | 必须与终端注册报文中的标识完全一致,包括大小写、前后缀和编码方式。 |
| 默认站号 | Modbus 等协议的从站地址,必须与 DTU 后方设备一致。 |
| 读写超时时间 | 单次协议请求等待响应的时间,应结合移动网络时延设置。 |
通道上的“DTU ID Hex”决定网关如何解析所有接入连接的注册标识;每台设备插件属性中的“DTU ID”决定该设备使用哪一条已注册连接。一个通道承载多台 DTU 时,每台设备都必须填写不同且真实存在的 DTU ID。
配置变量
回到“变量显示”,点击“新增变量”。先用 1 到 3 个典型点位验证链路,再导入完整点表。
| 配置项 | 示例 | 说明 |
|---|---|---|
| 变量名称 | modbus400001 | 建议能对应现场点表名称。 |
| 所属设备 | 当前 DTU 设备 | 变量必须归属于配置了正确 DTU ID 的设备。 |
| 变量地址 | 400001 | 按采集插件的地址规则填写。 |
| 数据类型 | Int16 | 必须与现场寄存器实际数据一致。 |
| 读写权限 | 只读 | 首次联调建议先使用只读点位。 |
文本与 Hex DTU ID
| 终端实际发送内容 | DTU ID Hex | 设备中的 DTU ID | 说明 |
|---|---|---|---|
文本 DTU-001 | 关闭 | DTU-001 | 常见 ASCII/UTF-8 注册编号。 |
原始字节 44 54 55 2D 30 30 31 | 开启 | 4454552D303031 | 原始字节解析后使用无分隔十六进制标识匹配设备。 |
不要因为终端手册把文本编号显示成十六进制,就直接开启 Hex。应抓取终端建立连接后的第一段注册报文,确认它发送的是字符 D T U - 0 0 1,还是对应的原始字节序列。
实际运行验证
完成配置后,让 DTU 主动连接 GatewayRuntime,并按以下顺序验收。
- 左侧通道显示“在线”,在线设备数量为
1/1。 - 通道下的设备显示绿色在线状态。
- 变量不再显示“异常”,当前值和原始值能够正常刷新。
- 采集时间持续更新,且读取结果与现场设备、PLC 软件或模拟器一致。
以下实际验证截图中,DTU 已使用 modbusDtu831745464586309 注册,变量 400001 的当前值和原始值均为 1234。

通过标准
| 检查项 | 通过标准 |
|---|---|
| TCP 监听 | 通道已启动,端口处于监听状态。 |
| DTU 注册 | 通道在线数量增加,日志出现 DTU 标识连接成功。 |
| 设备状态 | 使用该 DTU ID 的设备显示在线。 |
| 变量质量 | 变量无异常标记,当前值、原始值和采集时间正常更新。 |
| 数值正确性 | 读取结果与现场仪表、PLC 软件或模拟器设定值一致。 |
| 断线恢复 | 断开并重新连接 DTU 后,设备能够恢复在线并继续采集。 |
生产部署建议
| 项目 | 建议 |
|---|---|
| 监听地址 | 只监听业务需要的网卡和端口;使用 0.0.0.0 时配合防火墙限制来源。 |
| 公网接入 | 确认公网 IP、端口映射、安全组和运营商网络策略,不要直接暴露无保护的管理端口。 |
| DTU ID | 为每台终端分配唯一标识,交付时把 DTU ID、设备名称和现场位置形成对应表。 |
| 心跳与过期 | 心跳周期必须小于客户端过期时间,并预留网络抖动和重传时间。 |
| 最大连接数 | 按正式终端数量和扩容计划设置,避免过小拒绝连接,也不要无边界放大。 |
| 日志级别 | 联调时可临时使用 Debug 或 Trace,稳定后恢复 Info。 |
| TLS | DTU 支持 TLS 时启用 SSL 并配置证书;不支持时使用专网、VPN、防火墙和来源限制保护链路。 |
| 写入安全 | 首次联调只验证读取。启用 RPC 写入前确认现场联锁、权限和回读检查。 |
故障排查
| 现象 | 重点检查 |
|---|---|
| 通道无法启动 | 绑定地址是否属于本机、端口是否被占用、监听端口是否有权限、防火墙策略是否正确。 |
通道显示 0/N | DTU 是否主动连接、目标 IP/端口是否正确、注册报文是否已经发送。 |
日志提示 Client (DTU) not connected | 设备中的 DTU ID 与终端注册标识不一致,或终端尚未完成注册。重点核对文本/Hex、大小写、前后缀和空白字符。 |
| 通道在线但设备离线 | 可能有客户端连接,但没有与该设备 DTU ID 匹配的有效连接,或协议请求持续超时。 |
| 设备在线但变量异常 | 检查站号、变量地址、数据类型、Modbus 类型、字节序和读写超时。 |
| 连接周期性断开 | 检查客户端过期时间、DTU 心跳周期和心跳内容。心跳周期不应接近或超过过期时间。 |
| Default 模式无法注册 | 确认终端是否实际使用 DDP;只有协议明确为 DDP 时才切换服务类型。 |
| 多台 DTU 相互顶替 | 检查是否重复使用同一个 DTU ID。每台终端必须使用唯一标识。 |
| 重连后仍使用旧连接 | 检查终端是否在新连接建立后立即发送完整 DTU ID,并通过通道日志确认新连接已注册。 |