切换深色模式
DTU-D2 · 上报协议详表
DTU-D2 · 本机适用范围
设备类型 17(HEX),采集接口 RS485,8 条用户独立脚本,每条最多 40 字节。
仅使用 RS485 与脚本 1~8,不套用 RS232 接线。电源等待编辑项隐藏;合并任务数量仍以读取到的能力为准。
本章用于平台接入和报文核对。FPort 用十进制,报文字节用十六进制;多字节数值除另有说明外均为高字节在前。以下样例是按当前格式构造的教学数据,不是现场抓包。
1. 按端口选择解析规则
| FPort | 消息 | 应用载荷结构 |
|---|---|---|
| 1~8 | 本机用户独立脚本结果 | 仪表原始回复,或失败文本 |
| 33 | 合并采集 | 四字节报告头+选中的状态/寄存器数据 |
| 40 | 心跳 | CE DE+34+15 字节心跳参数+XOR+EC ED |
| 41 | 链路/脚本测试相关消息 | 测试协议数据,不作为周期采集业务解析 |
| 42 | 配置读取回复 | 配置协议帧 |
| 43 | 配置写入回复 | 配置协议帧;需核对返回内容 |
| 51 / 52 | UART1 / UART2 透明上传,物理接口见下文 | 串口收到的原始数据 |
| 214 | 重启原因 | 1 字节复位原因位图 |
| 215 | 启动信息(上电包) | 本机当前为 9 字节 |
| 218 | 配置异常或故障信息 | 按实际内容区分配置错误帧与故障文本 |
不是所有上行都有 CE DE 包头。 心跳、配置回复、合并采集和原始仪表报文各用自己的结构,不能只根据首字节套用同一个解析器。
2. 重启原因:FPort 214
此包载荷为 1 字节。当前原因按位组合:
| 位值(HEX) | 含义 |
|---|---|
01 | 检测到外部复位引脚标志 |
02 | 检测到软件复位标志 |
04 | 检测到看门狗复位标志 |
00 | 未记录到以上标志 |
例如 03 是 01 OR 02,05 是 01 OR 04。应逐位判断;不能把 05 固定命名为“软件看门狗重启”。具体组合也受引导程序传递的复位标志影响。
重启原因和启动信息是在设备进入网络业务启动流程后排队发送,不是在断电瞬间发送。平台暂时未收到重启包,不足以判断设备没有重启。
3. 启动信息:FPort 215
本机采用以下载荷结构,偏移从 0 开始:
| 偏移 | 长度 | 内容 | 解析 |
|---|---|---|---|
| 0 | 1 | 设备类型 | 本机 17 |
| 1 | 1 | 配置协议版本 | 当前格式对应版本值 07;实际以收到值为准 |
| 2~3 | 2 | 应用固件版本 | 主/次版本,例如 01 07 表示 1.7 |
| 4~7 | 4 | 脚本启用位图 | bit0 为心跳;本机用户脚本为 bit1~8 |
| 8 | 1 | 电量等级 | 0~4 的分档值,不是电压或百分比 |
text
17 07 01 07 00 00 00 03 04该构造示例的型号为 DTU-D2,协议版本为 7,固件字段示意为 1.7,心跳与用户脚本 1 启用,末尾电量等级为 4。版本号只是教学值,不代表本机当前版本;以实际接收值为准。启动包电量等级与心跳供电字段分别解释。
两种采集模式下保留的脚本配置可以不同于实际执行方式。启动包的脚本位图不包含合并任务列表,不能据此恢复合并采集映射。
4. 心跳:FPort 40
当前完整心跳帧为 21 字节:
| 偏移 | 长度 | 内容 | 解析 |
|---|---|---|---|
| 0~1 | 2 | 帧头 | CE DE |
| 2 | 1 | 消息类型 | 34 |
| 3~5 | 3 | 心跳周期 | 无符号整数,单位秒 |
| 6~7 | 2 | 内部温度 | 有符号 16 位整数,通常除以 100 得 ℃ |
| 8~9 | 2 | 电源采样字段 | 按型号解释:外部电压、内部电压或电量等级,见下文 |
| 10~13 | 4 | 脚本启用位图 | bit0 为心跳;本机用户脚本为 bit1~8 |
| 14~17 | 4 | 独立脚本执行状态位图 | 本机 bit1~8 对应用户脚本;bit0 为 0 |
| 18 | 1 | XOR 校验 | 从偏移 2 到 17 逐字节异或 |
| 19~20 | 2 | 帧尾 | EC ED |
心跳示例
text
CE DE | 34 | 00 00 3C | 0A 82 | 01 4A | 00 00 00 03 | 00 00 00 02 | CA | EC ED竖线不属于实际数据。本机构造示例:心跳周期 60 秒,内部温度 26.90℃;电源字段 01 4A 表示内部供电 3.30V,不是外部输入电压。启用位图 00000003 表示心跳与脚本 1 启用,执行位图 00000002 表示脚本 1 最近记录采集成功。
位图不是成功数量
执行状态的位为 1 表示该条独立脚本最近记录的收集结果为成功;位为 0 可能是失败或尚未执行,需结合启用状态和运行过程判断。脚本 1、2、3 均成功时,执行位图为 0000000E,不是 00000003。
这不是本轮采集成功次数或累计次数。合并采集任务的失败情况应读 FPort 33 的失败任务位图,不能用心跳中的独立脚本状态代替。
电源字段的换算边界
| 型号 | 两字节原始字段的含义 | 处理方法 |
|---|---|---|
| DTU-D2 | 芯片内部供电电压 | 原始值 ÷ 100 得 V;不能当作外部电源输入电压 |
本机字段 01 4A 的原始值为 330,对应内部 3.30V,不能用来推断外部输入或仪表供电电压。
平台建议同时保留原始字段与换算结果,匹配现场固件后再用于告警。不要套用旧手册“所有型号均为内部 3.3V”或把该字段解释成电池百分比。
5. 独立采集与透明上传
独立采集的正常载荷就是仪表原始回复。例如 Modbus RTU 仪表自身的地址、功能码、字节数及 CRC 都属于仪表帧,DTU 不额外加心跳协议头。
未收到数据时,当前独立采集发送 ASCII 文本 collection failed,对应 17 字节:
text
63 6F 6C 6C 65 63 74 69 6F 6E 20 66 61 69 6C 65 64先识别失败文本,再按仪表协议解析正常结果。DTU-D2 的独立和合并采集仅开放 RS485。当前透明下行仍向内部两路 UART 发送,不能因为页面隐藏 RS232 就认为透传已隔离到单口。只使用本机资料确认的外部接口,不从协议通道推断存在 RS232 端子。合并模式暂停透传。详见本机透明转发边界。
过长的独立回复或透传数据可能被分段发送,但不携带 FPort 33 的分包头。接收端不能据此保证自动重组完整仪表帧,项目应控制回复长度或另行约定接收处理。
6. 合并采集:FPort 33
固定格式为:
text
设备类型(1B) | 总包数与索引(1B) | 失败任务位图(2B) | 本片数据它 没有 CE DE / EC ED、配置帧 XOR 或仪表原始 CRC。01/02 的选中状态各占一字节,03/04 的选中寄存器各占两字节;失败任务的字段原位填零,但这些零值无效。
以下为本机类型 17 的构造单包成功示例,失败位图与数据排列按本机方案解释:
text
17 10 00 00 12 34 56 78单包中任务列表第一条失败的示例:
text
17 10 00 01 00 00 00 00完整分包规则、失败判定、解析函数和平台缓存要求见数据上报与解析。
与旧版手册的主要区别
| 旧资料中的写法 | 当前应怎样理解 |
|---|---|
心跳 00000001 表示脚本 1 开启 | bit0 是心跳;脚本 1 用 bit1,心跳与脚本 1 同时启用为 00000003 |
| 最后四字节是采集成功数量 | 实际为独立脚本执行状态位图 |
| 重启值 03、05 各对应一个固定原因 | 当前按复位原因位图解释组合值 |
| 电源字段统一解释为模组电压 | 心跳电源字段为 芯片内部供电电压,原始值 ÷ 100 得 V,不代表外部输入电压。 |
| 独立脚本最小周期 10 秒 | 当前上位机编辑范围 1~86400 秒;实际周期应满足采集及发送耗时 |
| 只有原脚本上报端口 | 支持合并采集的固件增加 FPort 33 与四字节报告头 |
旧手册的设备示例和协议版本不能当作当前设备的实际版本或参数;平台按收到的类型、版本和现场保存的采集配置选择解析规则。