配电柜DTU数据采集与上传技术指南

21k 词

本文整理自现场工程实践,覆盖配电柜数据采集与上传的完整链路:一次/二次设备 → 传感器 → RS485/Modbus RTU → DTU → 4G/以太网 → 服务器 → 数据库与监控平台。文中的周期、超时、阈值和端口号多为示例,实际项目必须以设备说明书、项目点表、电气图纸及安全规程为准。

本文所称 DTU 需结合项目语境确认:既可能是 Data Transfer Unit(数据传输单元),也可能是 Distribution Terminal Unit(配电终端),两者职责差别见第七章。

从现场设备、RS485 与 Modbus RTU 到服务器接入

文档版本: V1.0
整理日期: 2026-08-17
适用对象: 配电柜数据采集、DTU/工业网关配置、后台接入与现场联调人员


阅读说明

本文围绕一条完整工程链路展开:

配电柜一次设备与传感器 → 仪表/保护装置 → RS485/Modbus RTU → DTU → 4G/以太网 → 服务器 → 数据库与监控平台

全文按“先认识设备,再理解信号,然后打通通信与上传”的顺序组织。文中的周期、超时、阈值和端口号多为说明原理的示例,实际项目必须以设备说明书、项目点表、电气图纸及安全规程为准。

本文所称 DTU 需要结合项目语境确认:它既可能是 Data Transfer Unit(数据传输单元),也可能是 Distribution Terminal Unit(配电终端)。两者的职责差别将在第七章专门说明。


目录

  1. 配电柜常见设备与数据来源
  2. DI、DO、AI、AO 与“四遥”
  3. 配电柜中的 RS485 现场总线
  4. Modbus RTU 报文与通信过程
  5. 设备协议手册与寄存器表解析
  6. DTU 轮询策略与多设备采集
  7. DTU 工作模式与职责边界
  8. DTU 到服务器的网络通信
  9. 附录:项目资料表与联调检查清单

第1章 配电柜常见设备与数据来源

1.1 配电柜的作用

配电柜的核心作用是把上级电源安全、可控地分配给电动机、生产设备、照明系统或下级配电柜。它不仅负责供电,还承担电路接通与切断、电能分配、短路与过流保护、电气量测量、设备状态监控、故障报警、远程控制和数据上传。

DTU 主要参与状态监控、数据采集、故障上报、远程命令接收和数据上传。

1.2 一次设备与二次设备

配电柜中的设备可以先分成两类:

  • 一次设备直接参与电能传输,主回路的大电流或高电压作用于它,例如母线、断路器、隔离开关、接地开关、熔断器、接触器、CT 和 PT。
  • 二次设备负责测量、保护、控制、通信和显示,例如电力仪表、电能表、综合保护装置、温湿度控制器、PLC、DTU、继电器、开关电源和端子排。

可以概括为:一次设备负责“输送和切断电能”,二次设备负责“观察、判断、控制和通信”。

1.3 母线

母线是配电柜内部传输和分配大电流的导体,常见为铜排或铝排。三相系统通常包含 A、B、C 三相,并可能包含中性线 N 和保护接地线 PE。

母线本身只是导体,通常不能直接与 DTU 通信。DTU 若要获取母线电压、电流,通常要通过 CT、PT、电力仪表或保护装置间接获得。

1.4 断路器

断路器可以接通、承载和切断正常电流,也能在短路、严重过流等故障下切断电路。它是配电柜中最核心的执行设备之一。

常见采集状态包括:

  • 合闸位置;
  • 分闸位置;
  • 故障跳闸;
  • 储能状态;
  • 就地/远方模式;
  • 控制电源状态。

“分闸”描述断路器由接通变为断开,可以由人工操作;“跳闸”通常强调保护装置检测到故障后自动断开。结果都可能是断开,但原因不同。

断路器一般通过辅助触点输出分位、合位和故障状态,接入 DTU 的 DI。重要设备通常同时采集分位和合位,不能简单地把“合位信号为 0”直接解释为“已经分闸”,因为也可能是断线、掉电或通道故障。

1.5 隔离开关

隔离开关用于形成明显的电气断开点,方便检修和保证人员安全。它一般不用于直接切断较大的负载电流。常见操作顺序是先让断路器分闸,确认电流被切断,再操作隔离开关。

DTU 可能采集隔离开关的分位、合位、机构异常和闭锁状态,这些通常属于遥信。

1.6 接地开关

接地开关用于在检修时将线路或设备可靠接地,防止残余电荷、感应电压或误送电危及人员。它通常与断路器、隔离开关存在机械或电气联锁,例如接地开关合位时禁止断路器合闸。

DTU 通常通过辅助触点采集接地开关分位和合位。

1.7 熔断器

熔断器在电流超过允许范围并持续一定时间后熔断,从而切断电路。其结构简单、短路保护能力强,但动作后通常需要更换。

熔断器本身一般没有通信能力。需要监测熔断状态时,应使用熔断监测触点或其他检测装置。

1.8 接触器与热继电器

接触器是一种适合频繁接通和切断负载的电磁开关,常用于电动机、风机、水泵、加热器和电容器投切。接触器不承担完整的短路保护功能。

电机回路中常见组合是:

断路器 + 接触器 + 热继电器

  • 断路器负责短路保护;
  • 接触器负责频繁启停;
  • 热继电器负责过载保护。

DTU 可以通过 DI 读取接触器或热继电器状态,也可以通过 DO 和中间继电器控制接触器线圈。

1.9 电流互感器 CT

CT 用于把主回路的大电流按比例转换成仪表或保护装置能够测量的标准小电流。例如 CT 铭牌为 400/5 A,其变比为:

[
K_{CT}=\frac{400}{5}=80
]

若二次侧测得 2 A,则对应的一次侧电流为:

[
I_1=2\times80=160\text{ A}
]

CT 通常不直接连接 DTU,而是先接电力仪表或综合保护装置,再由后者通过 RS485/Modbus 向 DTU提供计算后的电流值。

安全提示: CT 一次侧有电流时,二次侧不能随意开路,否则可能产生危险高压。现场操作必须由具备资质的电气人员按规程执行。

1.10 电压互感器 PT/VT

PT/VT 用于把较高电压转换成仪表和保护装置可测量的标准电压。例如 10 kV/100 V 的变比为 100。若二次侧测得 98 V,则一次侧约为 9.8 kV。

PT 同样通常先接入仪表或保护装置,DTU 再通过通信读取换算后的数据。

1.11 多功能电力仪表

多功能电力仪表是 DTU 项目中最常见的数据来源之一,可以采集或计算:

  • 三相相电压和线电压;
  • 三相电流;
  • 有功、无功和视在功率;
  • 功率因数;
  • 电网频率;
  • 有功和无功电能;
  • 部分谐波数据。

典型链路为:

CT/PT → 多功能电力仪表 → RS485/Modbus RTU → DTU

仪表协议手册会给出站号、串口参数、功能码、寄存器地址、数据类型、倍率和单位。

1.12 电能表

电能表主要用于统计用电量,其中 1 kWh = 1 度电。它可能提供正反向有功电能、无功电能、分时电能、最大需量、电压、电流、功率及事件记录。

电能表常见协议包括 Modbus RTU、DL/T 645 和厂家私有协议。看到 RS485 接口不能直接断定其使用 Modbus,因为 RS485 只是物理接口。

1.13 微机综合保护装置

综合保护装置承担测量、保护、控制和故障记录,可实现过流、速断、零序、接地、过压、欠压、过频、欠频等保护,并记录 SOE 或故障录波。

典型过程是:

CT/PT 提供测量信号 → 保护装置判断故障 → 输出跳闸信号 → 断路器分闸

DTU 可读取测量值、保护启动、保护动作类型、断路器状态、装置自检、故障时间和事件记录。

1.14 温湿度控制器

温湿度控制器连接温度和湿度传感器,并可能控制加热器或风机。常见逻辑包括湿度过高启动加热、温度过高启动风机、温湿度越限输出报警。

DTU 可以通过 RS485 获取具体数值,也可以通过 DI 读取超温、超湿触点。

1.15 无线测温装置

无线测温装置常监测母线连接点、电缆接头、断路器触头和隔离开关触头。一般结构为:

温度传感器 → 无线接收主机 → RS485 → DTU

DTU 常从接收主机统一读取测点编号、温度、温升、超温报警、传感器离线和电池状态。

1.16 局部放电检测装置

局部放电可能表示高压设备绝缘正在劣化。局放装置可能输出局放幅值、放电次数、类型、严重程度、趋势和传感器状态。DTU 可能只上传装置分析后的特征值,也可能上传部分波形,具体取决于带宽、平台和设备能力。

1.17 PLC、中间继电器与开关电源

PLC 读取现场输入、执行控制逻辑并输出控制信号,可通过 Modbus RTU、Modbus TCP 或厂家工业以太网协议与 DTU 交互。通常 PLC 偏重实时控制,DTU 偏重采集、协议转换和远程传输。

中间继电器用于电气隔离、触点扩展、电压转换和提高驱动能力。DTU 的 DO 通常先驱动中间继电器,再进入断路器或接触器控制回路。

开关电源常把 AC 220 V 转换为 DC 24 V,为 DTU、PLC、传感器、继电器和通信模块供电。24 V 电源丢失可能导致多个设备同时离线,因此应把电源状态纳入监控。

1.18 DTU 的典型数据来源

现场设备 主要数据 常见接入方式
断路器 分合位、跳闸、储能、模式 DI 或保护装置
隔离/接地开关 分位、合位 DI
接触器/热继电器 运行、停止、过载 DI
CT/PT 主回路电流、电压 先接仪表或保护装置
多功能电力仪表 电压、电流、功率、频率、电能 RS485/Modbus
电能表 电能、需量、事件 Modbus 或 DL/T 645
综合保护装置 测量、保护动作、故障记录 RS485 或以太网
温湿度控制器 温度、湿度、告警 RS485 或 DI
无线测温主机 触头温度、传感器状态 RS485
局放检测装置 局放强度、趋势、报警 RS485 或以太网
PLC 综合状态和控制数据 RS485 或以太网

排查数据错误时,应按“一次设备 → 传感器/CT/PT → 仪表或保护装置 → RS485 → DTU → 上传协议 → 服务器”的顺序逐层确认。


第2章 DI、DO、AI、AO 与“四遥”

2.1 硬接线与通信采集

现场状态进入 DTU 有两类路径:

  • 硬接线采集: 辅助触点、变送器直接接入 DI/AI,控制信号从 DO/AO 输出;
  • 通信采集: 状态先进入仪表、保护装置或 PLC,再由 DTU 通过 RS485、以太网等读取。

硬接线直观、关键状态可靠,但点位越多布线越多;通信接入可以通过一条总线读取大量数据,但依赖站号、串口参数和协议配置。工程中通常组合使用。

2.2 DI:数字量输入

DI(Digital Input)读取 0/1、断开/闭合、正常/报警等离散状态,不能直接表达 230.5 V 或 12.6 A 这样的连续量。

常见 DI 包括断路器分合位、保护跳闸、接地开关位置、手车工作/试验位置、储能、柜门、熔断器、火灾、水浸、电源故障和就地/远方状态。

例如:

DI 通道 含义
DI1 断路器合位
DI2 断路器分位
DI3 故障跳闸
DI4 远方控制允许
DI5 柜门状态

平台必须依靠点表把通道编号转换成业务含义。

2.3 有源信号与无源触点

无源触点本身不输出电压,只负责通断,常见于继电器、断路器辅助触点、限位开关和按钮。有源信号会主动输出电压,例如 0 V/24 V。

接入前必须确认:

  • DTU DI 支持有源还是无源;
  • 允许电压范围;
  • 公共端接法;
  • 高电平还是低电平有效;
  • 共阳、共阴或 PNP/NPN 方式;
  • 是否电气隔离。

不能把 AC 220 V 直接接到只支持 DC 24 V 的 DI。

2.4 常开、常闭和失效安全

常开 NO 在未动作时断开、动作后闭合;常闭 NC 在未动作时闭合、动作后断开。

报警回路使用常闭触点时,正常状态可对应 DI=1,报警、断线或掉电都可能使 DI 变为 0,从而具有一定失效安全能力。但它不能自动区分真实报警和线路断开,必要时仍需双触点或自检信号。

2.5 双点遥信

重要开关通常同时采集合位和分位:

合位 分位 解释
1 0 合闸
0 1 分闸
0 0 中间态、断线或电源异常
1 1 触点、接线或采集异常

双点遥信比只采集合位可靠,尤其适合断路器、隔离开关和接地开关。

2.6 DI 防抖与 SOE

机械触点动作时可能在短时间内反复通断。DTU 应在信号稳定一段时间后再确认变化,这称为防抖。防抖过短会产生多次事件,过长则可能漏掉短脉冲。

SOE(Sequence of Events)记录信号变化前后状态及精确发生时间,用于还原故障顺序。例如:过流保护启动 → 跳闸输出 → 断路器变为分位 → 电流降为零。

关键事件应尽量由现场设备或 DTU 在变化发生时打时间戳,而不是只使用服务器接收时间。

2.7 DO:数字量输出

DO(Digital Output)用于输出开/关控制,常见用途包括接触器控制、风机、加热器、声光报警、告警复位及断路器分合闸。

DTU 通常不直接驱动一次设备,而采用:

服务器命令 → DTU 安全校验 → DO → 中间继电器 → 设备控制回路

DO 可能是继电器输出,也可能是晶体管输出。继电器适合低频交直流控制,隔离较好但有机械寿命;晶体管动作快、寿命长,通常用于直流并需要区分 NPN/PNP。

2.8 保持输出与脉冲输出

  • 保持输出: DO=1 后持续输出,适用于持续运行的风机、加热器或指示灯;
  • 脉冲输出: 输出几百毫秒后自动复位,适用于分闸、合闸、复位和模拟按钮。

断路器分合闸通常使用脉冲,而不是让操作线圈长期通电。

2.9 遥控不是简单写 DO

安全遥控至少需要:

  1. 身份与权限校验;
  2. 命令有效期和防重放检查;
  3. 确认设备处于远方模式;
  4. 检查接地开关、储能和保护闭锁等联锁条件;
  5. 输出规定时长的控制脉冲;
  6. 等待分/合位反馈;
  7. 根据实际反馈返回成功、失败或超时;
  8. 记录完整审计日志。

DO 输出成功只能说明电信号发出,不能证明断路器已经实际动作。

2.10 AI:模拟量输入

AI(Analog Input)读取连续电信号,常见类型包括 4~20 mA、0~20 mA、0~5 V、0~10 V、热电阻和热电偶,对应温度、压力、液位、湿度和气体浓度等物理量。

若 4~20 mA 对应 0~100 ℃,输入为 12 mA,则:

[
T=\frac{12-4}{20-4}\times100=50℃
]

4 mA 作为量程下限又称“活零点”,0 mA 可以帮助识别断线、掉电或传感器故障。

通用线性换算公式为:

[
Y=\frac{X-X_{min}}{X_{max}-X_{min}}(Y_{max}-Y_{min})+Y_{min}
]

2.11 AO:模拟量输出

AO(Analog Output)通过 4~20 mA 或 0~10 V 给设备提供连续设定值,例如变频器速度、阀门开度、温度或压力目标值。

若 0~10 V 对应 0~50 Hz,输出 6 V,则:

[
f=\frac{6}{10}\times50=30\text{ Hz}
]

普通配电柜 DTU 项目中,AO 通常少于 DI、DO 和通信采集。

2.12 I/O 总结

类型 名称 方向(以 DTU 为中心) 内容 示例
DI 数字量输入 设备 → DTU 离散状态 断路器分合位
DO 数字量输出 DTU → 设备 开关控制 分闸、启动风机
AI 模拟量输入 设备 → DTU 连续测量 4~20 mA 温度
AO 模拟量输出 DTU → 设备 连续设定 0~10 V 频率给定

2.13 四遥

  • 遥测: 电压、电流、功率、电能、频率、温湿度等连续测量值;
  • 遥信: 断路器位置、保护动作、柜门、设备故障等离散状态和事件;
  • 遥控: 远程分合闸、风机启停、告警复位等离散控制;
  • 遥调: 温度阈值、功率目标、变频频率、保护定值等参数调整。

四遥是业务分类,I/O 是信号接口分类,两者不是一一等同。例如 A 相电压可以来自 AI,也可以来自 Modbus 寄存器,但都属于遥测。

2.14 点表

点表是连接现场接线、DTU 配置和平台业务的核心文档。硬接线点表至少记录点号、名称、I/O 类型、通道、有效电平、常开常闭和说明;通信点表至少记录设备、站号、功能码、协议地址、长度、数据类型、字序、倍率、单位和无效值。

常见点号前缀:

  • YC:遥测;
  • YX:遥信;
  • YK:遥控;
  • YT:遥调。

第3章 配电柜中的 RS485 现场总线

3.1 RS485 与 Modbus 的关系

RS485 主要规定差分信号、电气特性和多节点连接方式,不规定设备地址、数据含义、寄存器或报文校验。上层协议可以是 Modbus RTU、DL/T 645 或厂家私有协议。

典型 Modbus RTU 系统中,DTU 作为主站轮询,仪表和保护装置作为从站应答。

3.2 A/B 差分线

RS485 常使用 A、B 两根信号线,也可能标记为 D+/D- 或 485+/485-。不同厂家的 A/B 命名可能相反,必须以手册为准。

完全无响应时,A/B 接反是优先检查项,但不能把盲目换线代替图纸和手册确认。

3.3 两线制与四线制

两线制使用同一对差分线收发,属于半双工,是 Modbus RTU 最常见形式。四线制使用两对差分线分开发送和接收。设备是否支持两线/四线转换必须依据说明书,不能随意并接。

3.4 总线拓扑

RS485 适合主干式总线:

DTU ─ 设备1 ─ 设备2 ─ 设备3 ─ 设备4

支线应尽量短。星形结构会产生多个反射分支,在短距离低速时可能暂时可用,但随着距离、速率和干扰增加容易失稳。必须形成多个长分支时,应使用隔离式集线器、中继器、多串口服务器或独立端口。

3.5 终端电阻

长距离或高速线路常在物理两端安装约 120 Ω 终端电阻,用于减小反射。不能在每台设备上都接 120 Ω;两个 120 Ω 并联已形成约 60 Ω,继续增加会使负载过重。

短距离低速柜内线路不一定必须终端,是否安装应结合长度、波特率、电缆、节点数和设备手册判断。

3.6 偏置电阻

当所有节点都不发送时,偏置网络使总线保持确定空闲电平,避免噪声被误判为数据。终端电阻负责阻抗匹配,偏置电阻负责空闲电平,两者作用不同。

一条总线通常只需要一组合理偏置。若多台设备都启用强偏置,会增加总线负载。

3.7 信号地、隔离与接地

差分传输并不等于可以完全忽略参考电位。设备间地电位差过大可能超出收发器共模范围,造成不稳定甚至损坏。

跨柜、长距离或地电位差明显时应优先考虑隔离式 RS485、隔离电源、中继器或光纤。信号地、机壳地和保护地不能随意混接,应遵循设备手册和项目接地方案。

3.8 屏蔽双绞线与布线

双绞可以使外界干扰尽量同时作用于两线,差分接收器能够抵消部分共模干扰。屏蔽层用于降低电场和电磁场影响。

一般工业现场常采用屏蔽层单点接地以减少低频地环流,但跨柜、长距离和高频干扰场景应结合 EMC 与接地系统设计,不能把“永远只接一端”当成绝对规则。

通信线应远离母线、变频器输出线、电动机电缆、接触器和大功率继电器;与强电交叉时尽量接近垂直,不要长距离平行同槽敷设。

3.9 浪涌与电磁干扰

隔离只能降低地环路和共模影响,不等同于完整防雷。恶劣环境还可能需要 TVS、浪涌保护器、隔离电源、可靠接地和合理布线。跨建筑、室外及长线尤其不能只依赖普通 RS485 芯片。

3.10 串口参数

同一物理串口上的设备通常必须使用相同的:

  • 波特率;
  • 数据位;
  • 校验位;
  • 停止位。

9600, 8, N, 1 表示 9600 bit/s、8 数据位、无校验、1 停止位。N/E/O 分别表示无校验、偶校验和奇校验。

无法统一参数的设备应分配到不同 RS485 端口,而不是频繁切换同一串口配置。

3.11 从站地址唯一

同一总线上两个设备站号相同时,可能同时响应,造成报文碰撞、CRC 错误和数据随机变化。设备安装或更换后必须核对站号。

不同物理端口可以出现相同站号,例如 RS485-1 的站号 1 与 RS485-2 的站号 1 并不冲突。

3.12 距离、数量与速率

“32 个节点、1200 m”只是传统参考,不是所有系统的保证值。实际能力取决于收发器单位负载、电缆阻抗与电容、波特率、拓扑、支线、终端、偏置、干扰和中继器。

一般规律是:速率越高允许距离通常越短;节点越多负载越重;分支越多反射越明显;环境越恶劣越需要预留裕量。

3.13 半双工方向切换

DTU 发送请求后,需要等最后一个字节完全发出,再释放总线并切换接收。切换过早可能丢失请求尾部,切换过晚可能遮挡从站响应开头。成熟 DTU 通常自动处理,自研驱动或 USB 转换器需要确认自动收发控制。

3.14 RS485 故障分层排查

  1. 供电层: 仪表、DTU、隔离模块是否上电;
  2. 物理层: A/B、端子、主干、支线、短路、终端和接地;
  3. 串口层: 波特率、数据位、校验位、停止位;
  4. 寻址层: 站号是否正确、是否重复;
  5. 协议层: 协议类型、功能码、地址、数量、CRC;
  6. 解析层: 类型、字序、倍率、单位和 CT/PT 变比。

常见现象:

现象 优先排查
所有设备无响应 DTU 端口、A/B、串口参数、主干断线
仅一台无响应 该设备供电、站号、支线和参数
单台正常、多台异常 重复站号、拓扑、终端过多、负载
偶发 CRC 错误 干扰、反射、接地、碰撞、速率过高
电机启动时异常 强电干扰、隔离和布线
降低速率后正常 线路质量、拓扑或反射
响应正常但数值错误 类型、字序、倍率、CT/PT

3.15 新设备推荐调试流程

先只连接一台设备,确认供电和串口参数;用 USB 转 RS485 工具读取并保存一组正确请求/响应;核对寄存器和比例;再让 DTU 读取同一区域;之后逐台接回总线,最后验证服务器上传。这样能把设备、总线、DTU、上传和服务器问题分离。


第4章 Modbus RTU 报文与通信过程

4.1 主从通信

典型系统中 DTU 作为主站主动发送请求,从站只响应发给自己的请求。同一时刻通常只能有一个从站发送。主站需要等待正常响应、异常响应或超时后,才能进入下一事务。

4.2 RTU 帧结构

标准结构为:

从站地址 + 功能码 + 数据域 + CRC

例如:

1
01 03 00 00 00 02 C4 0B

表示向站号 1 发送功能码 03 请求,从地址 0 开始读取 2 个保持寄存器。C4 0B 是 CRC 的发送顺序。

4.3 从站地址与广播

常规从站地址为 1~247。地址 0 通常作为广播地址,广播写命令不允许从站响应,否则多个设备同时应答会发生碰撞。配电项目中应谨慎使用广播写入。

4.4 常用功能码

功能码 名称 用途
01 读线圈 读取可读写开关状态
02 读离散输入 读取只读开关状态
03 读保持寄存器 读取测量或配置参数
04 读输入寄存器 读取只读测量值
05 写单个线圈 控制一个开关量
06 写单个保持寄存器 设置一个参数
0F 写多个线圈 批量控制开关量
10 写多个保持寄存器 批量写参数

4.5 四类数据区

数据区 单位 属性 常用功能码
Coil 1 bit 可读写 01、05、0F
Discrete Input 1 bit 只读 02
Holding Register 16 bit 通常可读写 03、06、10
Input Register 16 bit 通常只读 04

厂家未必严格遵循语义,例如可能把全部测量值都放入保持寄存器,最终必须以协议手册为准。

4.6 功能码 03 示例

请求:

1
01 03 00 00 00 02 C4 0B

假设响应:

1
01 03 04 08 FC 09 06 CRC_L CRC_H

04 表示后续有 4 个数据字节,即 2 个寄存器。08 FC=2300,09 06=2310。若比例为 0.1 V,则得到 230.0 V 和 231.0 V。

4.7 功能码 04

04 的请求形式与 03 类似,但访问输入寄存器。手册要求 04 时不能随意改用 03,否则设备可能返回另一数据区、异常响应或完全不响应。

4.8 线圈与离散输入的位打包

01/02 的响应将多个 bit 按字节打包,地址较小的点位对应数据字节的低位。若读取数量不是 8 的整数倍,最后一个字节未使用的高位通常填 0。

例如数据字节 4D 的二进制为 0100 1101,按低位到高位映射,bit0、bit2、bit3、bit6 为 1。

4.9 写单线圈:功能码 05

标准值为:

1
2
FF 00:ON
00 00:OFF

示例:

1
01 05 00 10 FF 00 CRC

表示将站号 1、地址 0x0010 的线圈置为 ON。正常响应通常原样回显,但仍需要读取外部设备反馈,不能仅凭协议回显判断机构已动作。

4.10 写单寄存器:功能码 06

1
01 06 00 20 00 64 CRC

表示向地址 0x0020 写入 0x0064(十进制 100)。具体工程值取决于寄存器含义、倍率和单位。

4.11 写多寄存器:功能码 10

1
01 10 00 20 00 02 04 00 64 00 C8 CRC

表示从地址 0x0020 起写 2 个寄存器,共 4 个数据字节,值分别为 100 和 200。正常响应通常返回起始地址和写入数量。

4.12 逻辑编号与协议地址

传统文档可能用 40001 表示保持寄存器第一个点,但报文地址通常是 0:

逻辑编号 功能码 常见报文地址
40001 03 0
40002 03 1
30001 04 0

厂家也可能直接提供 0 基或 1 基协议地址,必须确认文档定义,不能机械减 1。

4.13 CRC

Modbus RTU 使用 CRC-16,计算范围包含地址、功能码和数据域,不包含 CRC 自身。CRC 在报文中低字节先发送。

例如 CRC 数值为 0x0BC4,发送顺序是 C4 0B。寄存器值通常又是高字节先发,所以不能把两种顺序混淆。

从站收到 CRC 错误通常直接丢弃而不返回异常响应。主站收到错误响应也应丢弃并记录错误。

4.14 静默时间与分帧

Modbus RTU 主要依靠总线静默时间判断帧边界:帧间通常至少约 3.5 个字符时间,帧内不应出现超过约 1.5 个字符时间的空隙。

9600、8N1 下,一个字符约 10 bit:

[
T_{char}=\frac{10}{9600}\approx1.04\text{ ms}
]

3.5 字符时间约为 3.65 ms。高波特率下应遵循规范和设备实现采用的固定时间建议。

4.15 超时、请求间隔和重试

超时过短会把慢响应误判为失败;超时过长会让一台离线设备拖慢总线。应根据实测响应时间留出合理余量,同时限制重试次数并对离线设备降低探测频率。

4.16 异常响应

异常响应功能码通常等于原功能码加 0x80。例如:

1
01 83 02 CRC

表示站号 1 对功能码 03 返回异常码 02,即非法数据地址。

常见异常码:

异常码 含义 常见原因
01 非法功能 不支持该功能码
02 非法数据地址 地址不存在或越界
03 非法数据值 数量或写入值不合法
04 从站设备故障 内部执行故障
05 确认 已接受,需要较长处理
06 从站设备忙 正在处理其他任务
0A 网关路径不可用 无法访问下游路径
0B 网关目标无响应 下游设备超时

收到异常响应说明物理链路、站号和基本报文通常已经正确;完全无响应则还可能是供电、A/B、串口参数、地址、CRC 或协议类型问题。

4.17 读取范围和设备限制

标准协议与具体设备都可能限制单次读取数量。还应避免跨过未定义地址、不同数据块或设备禁止边界。读取 2 个寄存器正常但读取 20 个失败时,应检查最大长度和中间是否存在非法地址。

4.18 写操作风险

错误写入可能改变站号、波特率、CT/PT 变比、阈值、保护定值、控制输出或恢复出厂设置。未知设备调试应优先只读;写操作前保存原配置,确认地址、类型和单位,写后回读验证,并遵守保护定值审批和安全规程。


第5章 设备协议手册与寄存器表解析

5.1 阅读协议手册的顺序

拿到设备手册后,先确认:

  1. 物理接口和协议类型;
  2. 默认站号和串口参数;
  3. 支持的功能码;
  4. 地址从 0 还是 1 开始;
  5. 地址为十进制还是十六进制;
  6. 最大读取数量和跨区规则;
  7. 数据类型、长度和字序;
  8. 比例、偏移和单位;
  9. 无效值和状态位;
  10. CT/PT 是在设备还是平台换算;
  11. 写操作是否需要密码或解锁。

5.2 地址表达方式

40001 可能是逻辑编号,0001 可能是 1 基地址,0x0100 或 0100H 表示十六进制。若手册给 0100H,其十进制是 256。DTU 配置界面究竟要求十进制还是十六进制也必须确认。

建议点表同时记录 地址 HEX 和 地址 DEC,并明确“逻辑编号”与“实际报文地址”。

5.3 数据长度

一个 Modbus 寄存器为 16 bit,即 2 byte:

类型 字节 寄存器
uint16/int16 2 1
uint32/int32/float32 4 2
uint64/double 8 4

一个 float32 从地址 100 开始时通常占用 100、101,下一个同类参数从 102 开始。

5.4 uint16 与 int16

uint16 范围是 0~65535。08 FC 作为 uint16 为 2300,乘以 0.1 V 得 230.0 V。

int16 范围是 -32768~32767,采用补码。FF 9C 作为 uint16 是 65436,作为 int16 则是 -100。若倍率为 0.1 ℃,工程值为 -10.0 ℃。

负数被显示成接近 65535 的大数时,应优先检查是否误用了无符号类型。

5.5 32 位整数和浮点数

32 位值占两个寄存器。00 01 86 A0 按标准高位顺序解析为 100000,若倍率为 0.01 kWh,则为 1000.00 kWh。

IEEE 754 float32 也占两个寄存器。例如 230.5 的一种字节表示为 43 66 80 00。两个寄存器不一定就是 float32,也可能是 uint32、int32、两组 uint16 或厂家编码。

5.6 字节序与字序

把四个字节记为 A B C D,常见排列包括:

名称 顺序
ABCD A B C D
CDAB C D A B
BADC B A D C
DCBA D C B A

DTU 界面可能称为大端、小端、高字在前、低字在前、字交换或字节交换。最可靠的判断方法是读取仪表屏幕上可直接观察且非零的稳定值,用不同顺序解析后与屏幕比对,并用第二个不同数值再次验证。

5.7 比例、除数和偏移

固定小数通常采用:

[
Y=X\times K
]

例如原始电压 2305、系数 0.1 V,得到 230.5 V。手册写“倍率 100”时可能表示除以 100,也可能表示乘 100,必须看定义和示例。

包含偏移时:

[
Y=X\times K+B
]

例如原始 0 对应 -40 ℃、步长 0.1 ℃,则 T=X×0.1-40。

5.8 位域寄存器

一个 16 位寄存器可能同时承载 16 个状态。例如 bit0 合位、bit1 分位、bit2 保护动作、bit3 储能、bit5 远方模式。

提取第 n 位:

1
bit_n = (value >> n) & 0x01;

平台应把状态寄存器拆成多个业务点,不应只显示一个十进制数。

5.9 枚举、BCD 与字符串

枚举寄存器可能定义 0=停止、1=运行、2=告警、3=故障、255=无效,平台应映射为文字状态。

BCD 每 4 bit 表示一个十进制数字,例如 0x25 按普通整数是 37,按 BCD 是 25。BCD 常用于时间、电能表数据和编号,只有手册明确说明时才使用。

型号、序列号和固件版本可能使用 ASCII。例如 44 54 55 2D 30 31 可解析为 DTU-01,还需确认寄存器内字符顺序、长度、结束符和填充方式。

5.10 无效值与质量状态

厂家可能使用 0xFFFF、0xFFFE、0x7FFF 或 0xFFFFFFFF 表示无效、离线、超量程或未初始化。若把 0xFFFF 当温度乘 0.1,会错误得到 6553.5 ℃。

业务数据应包含质量状态,例如:

质量 含义
GOOD 正常
COMM_LOST 通信中断
INVALID 设备返回无效值
OUT_OF_RANGE 超出合理范围
STALE 长期未更新
CONFIG_ERROR 配置或解析异常

设备离线后可以保留最后值,但必须同时标记 COMM_LOST 或 STALE,不能继续作为当前有效数据。

5.11 CT/PT 变比

必须确认设备返回二次值还是已经换算的一次值。若仪表内部已配置 400/5 A 并返回 160 A,平台再次乘 80 会错误得到 12800 A。

若设备返回二次功率,一次功率倍率可能与 K_CT × K_PT 有关;但多数智能仪表会内部换算,是否二次计算必须依据手册和仪表配置。

5.12 单位与方向

设备可能使用 mV/V/kV、mA/A/kA、W/kW/MW、Wh/kWh/MWh、ms/s/min 等不同单位。应分开记录设备倍率和平台单位换算,避免把多种含义混进一个不可解释的系数。

有功和无功功率的正负方向由厂家定义;不能仅凭符号自行判断用电、发电、感性或容性。功率因数也可能采用有符号数、单独方向位或特殊区间编码。

5.13 多寄存器一致性

32 位或 64 位值应尽量在一次请求中连续读取。如果分两次读取高低字,数据在中间发生进位,组合结果可能不一致。需要同一时刻一致性的多项数据应使用连续块读取、设备快照或冻结机制。

5.14 完整点表设计

点表建议分四层:

  1. 设备信息: 设备编号、名称、端口、站号、串口格式、协议和型号;
  2. 原始采集: 功能码、地址、长度、类型、字序;
  3. 工程转换: 比例、偏移、单位、CT/PT、合理范围、无效值;
  4. 平台业务: 点号、字段名、类别、小数位、告警阈值和质量策略。

示例:

点号 名称 站号 功能码 地址 长度 类型 顺序 系数 单位
YC001 A 相电压 1 03 0 1 uint16 AB 0.1 V
YC002 A 相电流 1 03 3 2 float32 CDAB 1 A
YC003 有功功率 1 03 5 2 int32 ABCD 0.01 kW
YX001 断路器合位 2 03 100 1 bit0 AB 1 -

5.15 单点解析流程

以响应 01 03 02 08 FC CRC 为例:

  1. 校验从站地址、功能码、长度和 CRC;
  2. 提取数据 08 FC;
  3. 按 uint16 得到 2300;
  4. 乘以 0.1 得到 230.0 V;
  5. 检查是否在 0~300 V 合理范围;
  6. 生成带时间戳和质量状态的业务数据。

通信成功但数值错误时,依次检查设备、功能码、地址偏移、进制、长度、类型、字序、符号、倍率、偏移、单位、CT/PT 和特殊无效值。


第6章 DTU 轮询策略与多设备采集

6.1 轮询任务

一个轮询任务至少包含串口、从站地址、功能码、起始地址、数量、周期、超时、重试、优先级和解析模板。主站完成一个请求/响应或超时后,才能在同一 RS485 端口执行下一事务。

6.2 采集周期与上传周期

采集周期是 DTU 读取现场设备的频率,上传周期是 DTU 向服务器发送数据的频率。两者可以不同,例如现场每秒采集一次、每 5 秒上传一次最新值或批量数据。

还可以结合变化上传:数值超过死区立即上传,长时间不变化时仍周期上报完整状态。

6.3 分级采集

不同数据变化速度和业务重要性不同:

数据 典型策略
跳闸、保护、位置 高优先级,尽快发现
电流、功率 较高频率
电压、频率、功率因数 常规周期
温湿度 较低频率
电能、运行时间 低频读取
型号、版本 启动或维护时读取
CT/PT、阈值 启动或配置变更时读取

具体周期由项目实时性、总线容量和设备响应能力决定,不能把示例值直接作为设计要求。

6.4 寄存器分组与合并

连续且周期相同的寄存器应尽量合并读取,从而减少请求、等待和总线占用,并提高多值时间一致性。

不应强行跨越未定义地址、不同功能码区域、厂家禁止边界或最大读取长度。高频与低频数据即使地址相近,也应根据实际需求合理拆组。

6.5 任务耗时

单任务近似耗时:

[
T_{task}=T_{request}+T_{device}+T_{response}+T_{interval}
]

总轮询周期为各任务耗时之和,超时时还要增加超时与重试成本。

9600、8N1 下一个字节约 1.04 ms。03 请求通常 8 字节,约 8.3 ms;读取 10 个寄存器的响应约 25 字节,传输约 26 ms。再加设备处理和间隔后,一个任务可能接近 50 ms。

6.6 总线利用率

[
U=\frac{\text{周期内任务总占用时间}}{\text{任务周期}}
]

若每秒执行 10 个、每个 50 ms,利用率约 50%;若每秒执行 25 个,则理论需求达到 125%,任务不可能按期完成。设计必须给超时、控制命令、处理波动和干扰留出余量,不能长期按 100% 满载运行。

6.7 超时与重试

超时应根据实际响应时间测量。若正常为 20~40 ms、极端 80 ms,可结合环境留出合理余量,而不是无依据设置 5 秒。

“重试 2 次”通常意味着初次请求加 2 次重试。若超时 500 ms,一台离线设备可能占用约 1.5 s。大量离线设备会严重拖慢总线。

6.8 在线状态与退避

不宜一次失败就判离线。可以采用“连续 3 次失败转离线,连续 2 次成功恢复在线”。离线后应降低轮询频率,例如逐步从 1、2、5 秒退避到每 30 秒探测;恢复后再回到正常周期。

离线设备本轮失败后应尽快转向其他设备,不应连续长时间阻塞整条总线。

6.9 优先级和遥控插队

推荐优先级:控制命令与反馈 > 保护和开关状态 > 实时测量 > 环境量 > 电能与设备信息。

遥控命令不能由另一个线程直接同时写同一串口。应进入高优先级队列,等待当前事务结束,暂停普通轮询,完成写命令和位置反馈确认后再恢复轮询。

6.10 时间戳与新鲜度

需要区分:

  • 设备事件时间;
  • DTU 采集时间;
  • 服务器接收时间。

SOE 应尽量使用现场事件时间。普通遥测可以使用 DTU 采集时间。每个点还应记录最后成功时间和最大新鲜度;超过时间后标记 STALE,明确设备离线时标记 COMM_LOST。

6.11 变化死区

绝对死区:

[
|X_{new}-X_{last}|\ge D
]

相对死区:

[
\frac{|X_{new}-X_{last}|}{|X_{last}|}\ge r
]

模拟量可以采用“越过死区立即上传 + 周期兜底”。关键遥信、保护和 SOE 不应被普通死区过滤。

6.12 采集与上传解耦

推荐内部链路:

Modbus 轮询 → 实时缓存/事件队列 → 变化检测 → 上传队列 → 服务器

网络失败时现场轮询仍应继续,数据进入本地缓存;网络恢复后再补传。不能让服务器 ACK 等待阻塞 RS485 采集。

6.13 多端口分配

多个 RS485 端口可按串口参数、设备类型、物理区域或业务重要程度分组。不同参数的设备必须分端口;关键保护设备最好与大量低优先级传感器分开。

6.14 轮询表与点表分离

轮询表负责“何时、向谁、读哪个连续块”;点表负责“块中的字节怎样解释为业务点”。两者应有关联但不要混成一张难维护的表。

轮询表至少包括任务 ID、端口、站号、功能码、起始地址、数量、周期、超时和优先级。


第7章 DTU 工作模式与职责边界

7.1 DTU 的两种含义

  • Data Transfer Unit: 数据传输单元,偏重串口、4G/5G、以太网、TCP/MQTT/HTTP、透传和缓存;
  • Distribution Terminal Unit: 配电终端,偏重四遥、故障检测、SOE、IEC 104、开关控制和馈线自动化。

项目文档必须写明完整名称、厂家和型号,避免职责理解错误。

7.2 模式一:串口透明传输

DTU 不理解寄存器,只在 TCP 与 RS485 之间转发原始字节。服务器负责生成 Modbus RTU 请求、CRC、轮询、超时、寄存器解析和在线判断。

优点是 DTU 配置简单、服务器集中管理、容易支持私有串口协议;缺点是公网延迟进入轮询过程,网络断开时远程采集停止,服务器需要管理大量串口事务。

适合小规模、临时测试、网络稳定或服务器已有成熟串口协议程序的场景。

7.3 透传中的 TCP 角色

4G DTU 通常位于运营商 NAT 后,因此常作为 TCP 客户端主动连接公网服务器。若 DTU 作为服务器,则通常需要公网 IP、专用 APN、VPN 或端口映射。

多台 DTU 连接同一端口时,应在连接后发送注册包,包含设备唯一标识、协议版本和认证信息。不能只依靠远端 IP 识别设备。

7.4 心跳与分层在线状态

心跳用于维持 NAT 映射、检测连接和更新在线状态。平台应区分:

  1. DTU 网络在线;
  2. RS485 从站在线;
  3. 数据点当前有效。

DTU 心跳正常不代表仪表通信正常。

7.5 模式二:Modbus RTU 转 Modbus TCP

服务器发送 Modbus TCP,网关转换为下游 Modbus RTU;响应反向转换。Modbus TCP 使用 MBAP 头,包括事务 ID、协议 ID、长度和 Unit ID,一般不携带 RTU CRC。

Unit ID 常映射到 RS485 从站地址;多端口网关还可能配置 Unit ID 到“端口 + 站号”的映射。

优点是服务器可以使用标准 Modbus TCP 客户端,缺点是轮询仍依赖网络,服务器仍需解析寄存器。多个 TCP 客户端同时访问时,网关必须对一条 RS485 总线的请求排队。

7.6 模式三:DTU 主动采集并上传

DTU 本地配置站号、功能码、地址、类型、倍率和周期,自主执行 Modbus 轮询,解析后通过 MQTT、HTTP 或私有 TCP 上传 JSON/二进制业务数据。

DTU 负责采集、解析、在线判断、质量状态、时间戳、变化检测、缓存和补传;服务器负责认证、接收、入库、告警、展示、远程配置和权限。

它适合长期运行、多站点、网络不稳定和需要离线缓存的项目,但要求点表配置、版本管理和边缘解析能力可靠。

7.7 点表下发与版本

下发配置应包含版本号、生成时间、适用 DTU、设备型号和校验值。服务器必须知道配置是否下发成功、是否已经生效、DTU 当前运行版本以及失败后的回滚结果。

7.8 模式四:边缘计算网关

边缘网关可以进一步执行本地告警、过滤、趋势计算、联动、本地数据库、容器程序和可视化。例如触头温度持续超过阈值后,本地生成告警并启动风机。

边缘控制必须处理重启、传感器故障、通信中断、配置版本、重复命令、联锁、恢复条件和审计。涉及断路器的核心保护功能不应只依赖普通应用软件。

7.9 配电自动化终端

Distribution Terminal Unit 可能直接连接 CT/PT 和开关触点,完成遥测、遥信、遥控、SOE、故障检测、对时和 IEC 104 接入。此类项目重点会从普通 Modbus 采集扩展到信息体地址、总召唤、遥控选择/执行、故障录波和配电安全要求。

7.10 模式对比

项目 透传 RTU 转 TCP 主动采集 边缘/配电终端
轮询位置 服务器 服务器 DTU DTU/内部采集
解析位置 服务器 服务器 DTU DTU
断网后继续采集 通常否 通常否 是 是
本地缓存 有限 有限 通常有 通常有
DTU 配置复杂度 低 中 较高 高
服务器复杂度 高 较高 中 中
本地控制 弱 弱 中 强

7.11 推荐选择

一般新建物联网采集项目更适合“DTU 本地主动采集 + 结构化上传 + 本地缓存 + 断线补传 + 服务器统一管理配置版本”。

私有协议、小规模临时测试或已有成熟服务器主站时可考虑透传。需要接入调度/配电主站时,应选择符合项目规约和安全要求的配电终端,而不是把普通透传 DTU 当成完整配电自动化终端。


第8章 DTU 到服务器的网络通信

8.1 完整网络链路

典型 4G 上传路径为:

仪表 → RS485 → DTU → 运营商网络 → 公网/专网 → 接入服务 → 数据处理 → 数据库

平台无数据时,需要分别确认仪表、RS485、DTU、SIM/APN、IP 路由、服务器端口、应用协议、解析和入库。

8.2 IP、掩码、网关和 DNS

私有地址常见于 10.0.0.0/8、172.16.0.0/12 和 192.168.0.0/16,通常不能直接被公网访问。

有线 DTU 一般需要配置 IP、子网掩码、默认网关和 DNS。能访问同网段但不能访问外部服务器时,应检查网关、路由、防火墙和 DNS。

域名便于服务器迁移、负载均衡和 TLS 证书管理。固定 IP 可连但域名不可连时,应优先检查 DNS,而不是修改业务报文。

8.3 端口与监听地址

端口区分服务器上的不同服务,例如 502 常用于 Modbus TCP,1883 用于 MQTT 明文,8883 用于 MQTT TLS,80/443 用于 HTTP/HTTPS,自定义 TCP 使用项目端口。

服务程序必须监听正确地址。127.0.0.1:9000 通常只能本机访问,0.0.0.0:9000 表示监听所有 IPv4 接口。还要同时放行操作系统防火墙、云安全组和上级网络策略。

8.4 4G、SIM 与 APN

检查 SIM 是否识别、激活、欠费、流量耗尽,天线和信号是否正常,APN 是否正确以及目标网络是否在白名单内。

状态应分为:未识别 SIM、未注册网络、已注册未获取 IP、已获取 IP 但连接服务器失败、服务器连接成功。

公共 APN 通常允许 DTU 主动访问公网;专用 APN 可以构建企业内网、固定地址、VPN 或配电专网,并可能要求用户名、密码、专用 DNS 和指定路由。

8.5 NAT 与连接方向

4G DTU 多数位于运营商 NAT 后,可以主动连接服务器,但服务器通常不能直接新建连接访问 DTU。因此常采用“DTU 为 TCP 客户端,服务器为 TCP 服务端”,服务器通过已建立的长连接下发命令。

8.6 TCP 连接阶段

一次业务上线通常经历:

  1. 移动网络注册或以太网接入;
  2. 获取 IP;
  3. DNS 解析;
  4. TCP 三次握手;
  5. TLS 握手(如果启用);
  6. 设备注册与认证;
  7. 心跳和业务上传。

TCP 连接成功不代表设备认证成功,更不代表下游 RS485 正常。

8.7 长连接与短连接

长连接适合 MQTT、私有 TCP、IEC 104、实时上传和远程控制,需要心跳、并发连接管理、断线检测和重连。短连接常见于低频 HTTP 上报,逻辑相对简单,但握手开销较大且不利于服务器主动下发命令。

8.8 TCP 是字节流

TCP 保证字节有序可靠传输,但不保留应用消息边界。两次 send() 可能被一次 recv() 收到,一次 send() 也可能被多次 recv() 收到。所谓粘包、半包不是 TCP 故障,而是字节流的正常表现。

因此不能把一次 recv() 直接当成一条完整消息。

8.9 应用层分帧

常见方法包括:

  • 固定长度;
  • 帧头 + 长度字段;
  • 结束符(例如一行一个 JSON);
  • 使用 MQTT、HTTP、WebSocket、IEC 104 等已有协议。

私有二进制协议通常采用:

帧头 + 版本 + 消息类型 + 设备 ID + 序列号 + 数据长度 + 数据体 + 校验

服务器需要为每个连接维护独立缓冲区:追加新字节、寻找帧头、读取长度、等待完整消息、解析后移除已消费部分,并保留剩余半包。

8.10 心跳与 TCP Keepalive

应用心跳用于维持 NAT、识别业务存活和携带信号、电源等状态;TCP Keepalive 主要判断连接层对端是否可达。

网络线程仍存活但采集线程卡死时,TCP Keepalive 可能正常而业务已停止,因此还需要应用心跳和数据新鲜度检查。

8.11 断线检测与重连

断线可以由读关闭、写失败、心跳超时、Keepalive 失败或应用 ACK 超时发现。重连建议采用指数退避加随机抖动,例如约 1、2、4、8 秒逐渐增加,最大到 30~60 秒,避免大量 DTU 在服务器恢复时同时重连。

连接稳定后再重置重连计数。

8.12 重连后的恢复

重连后一般应:

  1. 重新注册和认证;
  2. 上报配置版本、时间和运行状态;
  3. 上传一份当前完整数据;
  4. 后台分批补传历史;
  5. 恢复实时上传;
  6. 核查中断前未完成的控制事务。

实时数据应优先或与历史补传交替,不能因大量历史数据导致平台长时间看不到当前状态。

8.13 序列号、ACK 与幂等

消息建议包含设备 ID、序列号、类型和时间戳。序列号有助于检测丢失、重复、乱序、重启和补传范围。

TCP 只保证数据到达对端协议栈,不保证业务已成功入库。需要业务可靠性时,服务器处理成功后返回 ACK。ACK 丢失会导致 DTU 重发,因此服务器必须使用 deviceId + sequence 或唯一消息 ID 做幂等去重。

8.14 时间同步

DTU 可通过 RTC、NTP、4G 网络、GPS 或服务器对时。时间错误会破坏 SOE 顺序、历史曲线、命令有效期和补传逻辑。

推荐使用 Unix 毫秒时间戳,或带时区的 ISO 8601,例如 2026-08-17T13:20:00.125+08:00,不要传不含时区的模糊时间。

8.15 网络安全

公网接入至少应考虑:

  • TLS 加密及服务器证书验证;
  • 每台设备独立身份和密钥;
  • 消息完整性;
  • 防重放和命令有效期;
  • 权限与频率限制;
  • 配置和固件签名;
  • 完整操作审计。

不能只用一个可伪造的设备 ID 作为认证,也不应把无认证的 Modbus TCP 或串口透传端口直接暴露公网。

8.16 分层状态模型

平台最好分别展示:DTU 网络、服务器通信、RS485 总线、每个从站、数据质量、SIM/信号和本地缓存。一个绿色“在线”图标无法表达这些不同故障层次。

8.17 常用调试命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 查看地址与路由
ip addr
ip route

# 查看监听端口
ss -lntp

# 测试 TCP 端口
nc -vz <server> <port>

# 测试 HTTP 健康接口
curl -v http://<server>:<port>/health

# 抓取指定端口并保存
sudo tcpdump -i any -nn port 9000 -w dtu_upload.pcap

ping 不通不一定代表 TCP 端口不通,因为服务器可能禁用了 ICMP。抓包应重点观察 TCP 握手、注册、认证、心跳、数据、ACK、重传、RST、TLS 握手和重连周期。


第9章 附录:项目资料表与联调检查清单

9.1 项目至少需要维护的文档

文档 核心内容
设备清单 厂家、型号、位置、供电、接口、协议
RS485 总线表 端口、站号、串口参数、拓扑、终端
轮询任务表 功能码、起始地址、数量、周期、超时、重试
点表 类型、字序、倍率、单位、无效值、平台字段
I/O 表 DI/DO/AI/AO 通道、有效电平、接线端子
网络配置表 APN、域名、端口、TLS、心跳、重连
告警表 条件、级别、延时、恢复、确认方式
遥控表 权限、联锁、输出脉冲、反馈和超时
配置版本表 DTU 当前版本、下发结果和回滚信息
联调记录 原始报文、抓包、问题、原因和修复结果

9.2 RS485 设备表模板

总线 设备名称 型号 站号 波特率 格式 协议 位置
RS485-1 进线仪表 待填写 1 9600 8N1 Modbus RTU 1号柜

9.3 轮询任务表模板

任务 ID 端口 站号 功能码 起始地址 数量 周期 超时 重试 优先级
P001 RS485-1 1 03 0 10 1 s 300 ms 1 中

9.4 通信点表模板

点号 点名 设备 功能码 地址 长度 类型 顺序 系数 偏移 单位 无效值
YC001 A相电压 METER-001 03 0 1 uint16 AB 0.1 0 V FFFF

9.5 硬接线 I/O 表模板

点号 名称 类型 通道 电气类型 有效状态 防抖/脉冲 说明
YX001 断路器合位 DI DI1 无源触点 闭合有效 50 ms 双点遥信之一

9.6 单台设备接入检查

  • 确认设备供电、型号和协议版本;
  • 记录默认站号和串口参数;
  • 确认 A/B、信号地和屏蔽;
  • 单独使用 USB 转 RS485 读取;
  • 保存至少一组正确请求和响应;
  • 对照屏幕验证一个非零稳定量;
  • 验证地址基准、进制、类型和字序;
  • 核对倍率、单位、CT/PT 和无效值;
  • 再配置 DTU 读取同一区域;
  • 最后接回整条总线。

9.7 整条总线检查

  • 同一端口串口参数是否一致;
  • 站号是否唯一;
  • 是否主干连接、支线过长或星形分支;
  • 终端与偏置是否合理;
  • 是否靠近变频器和动力线;
  • 是否需要隔离、中继和浪涌保护;
  • 总线利用率是否有余量;
  • 离线设备是否拖慢全线;
  • 关键状态是否具有优先级;
  • 遥控命令是否串行插入事务队列。

9.8 DTU 上传检查

  • 明确 DTU 是透传、网关、主动采集还是配电终端;
  • 网络断开后是否继续采集;
  • 是否有注册、认证和心跳;
  • 是否使用域名、正确 DNS 和端口;
  • 是否使用 TLS;
  • TCP 消息是否有明确分帧;
  • 是否包含设备 ID、序列号和时间戳;
  • 是否有业务 ACK 和幂等去重;
  • 是否本地缓存并支持补传;
  • 实时数据是否优先于历史补传;
  • 配置是否有版本、校验和回滚;
  • 是否区分网络在线、从站在线和数据有效。

9.9 故障定位总流程

建议始终按以下顺序排查:

  1. 一次设备及传感器是否正常;
  2. 仪表或保护装置屏幕数据是否正常;
  3. 单台设备 RS485 是否正常;
  4. 整条总线是否稳定;
  5. Modbus 请求和响应是否正确;
  6. 寄存器解析是否正确;
  7. DTU 采集任务是否正常;
  8. DTU 网络和服务器连接是否正常;
  9. 应用协议、认证、心跳和 ACK 是否正常;
  10. 数据是否正确入库和展示。

不要在仪表自身显示异常时先修改服务器代码,也不要在 TCP 握手都未完成时先修改 JSON 字段。


结语

配电柜 DTU 上传并不是单一协议问题,而是电气设备、现场信号、RS485、Modbus、边缘采集、网络协议、服务器处理和安全控制共同组成的系统工程。

真正可靠的项目必须同时做到:

数据来源清楚、接线可靠、报文正确、解析可追溯、轮询有余量、网络可恢复、数据有质量、控制有联锁、操作可审计。

在后续实施中,应基于真实 DTU 型号、仪表手册、现场电气图和服务器协议,把本文的通用框架进一步落成项目专用的设备清单、总线表、轮询表、点表、网络协议和联调记录。