跳到主要内容

DTU 使用说明(适用于 ThingsGateway)

概述

什么是 DTU

DTU(数据透传单元) 是一种通过 蜂窝网络(如 4G/5G、NB-IoT) 或其他无线通信方式进行远程数据通信的设备,主要用于将现场设备的数据通过网络透传到远程服务器或网关。

DTU 的核心功能

  • 数据透传:将现场设备的数据透明传输到远程网关,无需修改数据格式
  • 网络连接:支持多种网络制式,如 2G/3G/4G/5G、NB-IoT、LoRa 等
  • 心跳机制:定期发送心跳包,维持网络连接稳定
  • 注册认证:通过注册包识别设备身份,确保通信安全
  • 断线重连:网络中断后自动尝试重新连接

ThingsGateway 中的 DTU 角色

在 ThingsGateway 中,DTU 通常以 客户端身份 连接至 ThingsGateway,并通过以下流程完成通信:

  1. 主动发起 TCP 连接到 ThingsGateway
  2. 发送注册包完成身份认证
  3. 定期发送心跳包维持连接
  4. 透传现场设备的数据采集协议(如 Modbus、DLT645 等)
  5. 接收并执行来自网关的控制命令

适用场景

典型应用场景

  • 远程设备监控:边缘设备部署在远程、无公网或移动环境下(如油田、电网、交通设施)
  • 集中式数据采集:网关部署在中心机房,作为 TCP 服务端接收来自多个 DTU 的数据
  • 不稳定网络环境:利用 DTU 的断线重连和心跳机制确保通信可靠性
  • 多设备并行采集:支持多个 DTU 同时连接并采集不同区域、不同类型的设备数据
  • 低功耗应用:使用 NB-IoT 等低功耗网络的 DTU 适用于电池供电的场景

技术特点

  • 主动连接:DTU 主动发起连接,解决了边缘设备无法被公网访问的问题
  • 穿透能力:支持穿透 NAT、防火墙等网络障碍
  • 协议无关:可透传任何串行协议数据,如 Modbus、DLT645、自定义协议等
  • 远程管理:部分高级 DTU 支持远程配置和固件升级

网关配置指南

通道配置

基本配置

配置项说明默认值建议值
插件名称选择支持 DTU 的协议插件(如 Modbus、DLT645 等)-根据现场设备协议选择
通道类型选择 TcpService(网关作为服务端)-必须选择 TcpService
本地地址网关监听地址和端口0.0.0.0:9001生产环境建议绑定具体网卡 IP
启用调试日志开启详细的连接和通信日志False调试时开启,生产环境关闭
最大连接数设置可连接的 DTU 数量上限1000根据服务器性能和实际设备数量调整
客户端连接滑动过期时间DTU 无心跳后多久算离线(秒)60建议设置为心跳间隔的 3-5 倍
心跳内容设置与 DTU 协商的心跳包内容-与 DTU 设备配置保持一致
心跳内容Hex心跳包内容是否为十六进制格式-与 DTU 设备配置保持一致
Dtu终端注册包是否Hex注册包是否十六进制格式,通道下的设备注册包-与 DTU 设备配置保持一致

高级配置

配置项说明建议值
DTU服务类型暂时支持透传和DDP(宏电DTU)Default(透传)

设备配置

在 DTU 模式下,一个 DTU 对应 ThingsGateway 中的一个 设备实体

基本配置

配置项说明默认值建议值
通道绑定上一步创建的 TcpService 通道-选择对应的 DTU 服务端通道
默认执行间隔设置数据采集频率(毫秒)1000根据设备响应速度和数据变化频率调整
DtuId设置与 DTU 协商的注册标识-与 DTU 设备配置的注册标识完全一致
设备名称设备的唯一标识符-使用有意义的名称,如站点+设备类型
启用是否启用该设备True根据需要启用或禁用

注册标识配置

DtuId 是 DTU 设备的唯一标识,配置时需注意:

  1. 唯一性:每个 DTU 设备必须使用唯一的 DtuId
  2. 一致性:网关设备配置中的 DtuId 必须与 DTU 设备中配置的注册标识完全一致
  3. 格式要求:建议使用字母、数字、下划线的组合,避免使用特殊字符
  4. 长度限制:一般建议不超过 32 个字符

配置示例

DTU 设备配置

  • 注册标识:DTU_SITE001_DEVICE001
  • 心跳间隔:30 秒
  • 心跳包内容:0x01 0x03 0x00 0x00 0x00 0x02 0xC4 0x0B

网关通道配置

  • 本地地址:0.0.0.0:9001
  • 最大连接数:50
  • 客户端连接滑动过期时间:120 秒
  • 心跳内容:0x01 0x03 0x00 0x00 0x00 0x02 0xC4 0x0B

网关设备配置

  • 设备名称:Site001_Device001
  • DtuId:DTU_SITE001_DEVICE001
  • 默认执行间隔:2000 毫秒

DTU 设备通信流程

基本通信流程

连接建立流程

数据采集流程

通信流程详解

1. 连接建立阶段

  1. TCP 连接:DTU 设备主动发起 TCP 连接到网关的 TcpService 端口
  2. 连接通知:网关接收到连接请求,创建连接实例并通知核心模块
  3. 身份认证:DTU 发送注册包,包含唯一的 DtuId
  4. 设备绑定:网关根据 DtuId 查找对应的设备实体,完成绑定

2. 心跳维持阶段

  1. 心跳发送:DTU 按照配置的间隔定期发送心跳包
  2. 心跳响应:网关接收心跳包并返回响应
  3. 连接监控:网关监控心跳间隔,超过阈值则认为设备离线

3. 数据交互阶段

  1. 数据采集:网关按照设备配置的执行间隔触发数据采集
  2. 指令发送:协议驱动生成采集指令,通过 DTU 透传到现场设备
  3. 数据接收:DTU 透传现场设备的响应数据到网关
  4. 数据解析:协议驱动解析响应数据,更新设备变量值

通信协议栈

+------------------------+
| 应用层(Modbus/DLT645) |
+------------------------+
| DTU透传层 |
+------------------------+
| TCP/IP协议栈 |
+------------------------+
| 蜂窝网络(4G/5G/NB-IoT) |
+------------------------+

常见问题与解决方案

连接问题

问题:DTU 连接不上网关

可能原因

  • 网络防火墙阻止了网关端口
  • 网关公网 IP 或端口配置错误
  • DTU 设备配置的目标地址不正确
  • 网关通道未使用 TcpService 模式
  • DTU 设备网络信号差或 SIM 卡问题
  • 注册包格式不正确或 DtuId 不匹配

解决方案

  • 检查防火墙设置,确保网关监听端口已开放
  • 验证网关公网 IP 和端口配置是否正确
  • 确认 DTU 设备配置的目标地址与网关地址一致
  • 确保网关通道类型设置为 TcpService
  • 检查 DTU 设备的网络信号强度和 SIM 卡状态
  • 打开网关调试日志,查看连接和注册过程的详细信息
  • 验证 DTU 发送的注册包格式和 DtuId 是否与网关配置一致

问题:DTU 连接不稳定,频繁断开

可能原因

  • 网络信号不稳定,导致 TCP 连接断开
  • 心跳间隔设置不合理
  • 网关客户端连接滑动过期时间设置过短
  • DTU 设备电量不足或硬件故障
  • 网关服务器负载过高

解决方案

  • 优化 DTU 安装位置,提高网络信号强度
  • 调整心跳间隔,建议设置为 30-60 秒
  • 调整网关客户端连接滑动过期时间,建议设置为心跳间隔的 3-5 倍
  • 检查 DTU 设备电量和硬件状态
  • 增加网关服务器资源,优化性能

配置问题

问题:多个 DTU 使用同一个端口连接可以吗?

解决方案: 可以。网关作为 TCP 服务端,支持多个 DTU 同时连接到同一个端口。网关会根据每个 DTU 发送的注册包中的 DtuId 来区分不同的设备,并将它们绑定到对应的设备实体。

配置建议

  • 设置合理的最大连接数,根据服务器性能和实际设备数量调整
  • 为每个 DTU 分配唯一的 DtuId,确保设备识别准确性

问题:怎么识别 DTU 的注册标识?

解决方案

  1. 在 DTU 设备配置中设置注册标识(通常称为设备 ID、IMEI 或自定义标识)
  2. 在 ThingsGateway 中为每个设备实体配置对应的 DtuId 属性
  3. 确保两者完全一致,包括大小写和特殊字符

注意事项

  • 注册标识必须在网关设备配置中唯一
  • 注册包格式需与网关协议驱动的要求匹配
  • 部分 DTU 支持使用 IMEI 号作为注册标识

数据传输问题

问题:数据采集失败或数据不正确

可能原因

  • DTU 透传设置不正确
  • 协议配置与现场设备不匹配
  • 数据采集间隔设置不合理
  • 网络延迟导致数据超时

解决方案

  • 检查 DTU 透传模式设置,确保数据透明传输
  • 验证协议配置与现场设备的通信参数一致(如波特率、奇偶校验等)
  • 调整数据采集间隔,确保与设备响应速度匹配
  • 增加数据超时时间,适应网络延迟

性能问题

问题:网关处理 DTU 连接的性能瓶颈

可能原因

  • 最大连接数设置过小
  • 服务器硬件资源不足
  • 网络带宽限制
  • 数据采集频率过高

解决方案

  • 根据服务器性能调整最大连接数
  • 增加服务器 CPU、内存等硬件资源
  • 确保网络带宽满足所有 DTU 同时通信的需求
  • 优化数据采集频率,避免过于频繁的采集

最佳实践

网络配置最佳实践

1. 网关网络配置

  • 公网访问:如果 DTU 设备分布在不同网络环境,网关需要有公网 IP 或使用 VPN/专线
  • 端口规划:为不同类型的 DTU 设备分配不同的端口,便于管理和故障排查
  • 防火墙设置:仅开放必要的端口,建议使用防火墙限制允许访问的 IP 范围
  • 网络冗余:重要场景下,考虑部署双网关实现主备冗余

2. DTU 网络配置

  • 信号强度:安装 DTU 时选择信号强度良好的位置,必要时使用信号放大器
  • 网络选择:根据场景选择合适的网络制式(4G/5G/NB-IoT),平衡带宽和功耗
  • SIM 卡管理:使用工业级 SIM 卡,开启流量监控和告警
  • APN 配置:使用运营商提供的专用 APN,提高网络稳定性和安全性

配置管理最佳实践

1. DtuId 管理

  • 命名规范:使用统一的命名规范,如 DTU_{站点}_{设备类型}_{编号}
  • 唯一性保证:建立 DtuId 分配表,确保不重复
  • 文档化:将每个 DTU 的 DtuId、位置、用途等信息记录在文档中
  • 自动化:对于大规模部署,考虑使用自动化工具生成和管理 DtuId

2. 心跳配置

  • 心跳间隔:根据网络稳定性设置合适的心跳间隔,一般为 30-60 秒
  • 心跳内容:使用与设备协议相关的心跳包,便于设备和网关识别
  • 过期时间:网关客户端连接滑动过期时间设置为心跳间隔的 3-5 倍
  • 双向心跳:确保 DTU 和网关都能发送和响应心跳

性能优化最佳实践

1. 网关性能优化

  • 硬件资源:根据 DTU 数量和数据频率选择合适的服务器配置
  • 连接管理:设置合理的最大连接数和连接超时时间
  • 数据处理:优化数据采集间隔,避免过于频繁的数据采集
  • 日志级别:生产环境使用 Information 级别日志,减少磁盘 I/O

2. DTU 性能优化

  • 透传模式:选择合适的透传模式,平衡实时性和稳定性
  • 数据压缩:对于带宽受限的场景,考虑使用数据压缩
  • 批量传输:支持批量数据传输,减少通信次数
  • 休眠策略:对于低功耗场景,配置合理的休眠策略