切换深色模式
上报协议详表
本章用于平台接入和报文核对。FPort 用十进制,报文字节用十六进制;多字节数值除另有说明外均为高字节在前。以下样例是按当前格式构造的教学数据,不是现场抓包。
1. 按端口选择解析规则
| FPort | 消息 | 应用载荷结构 |
|---|---|---|
| 1~16 | 独立脚本结果;D2/D2P 仅 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 | 设备类型 | 标准 10、PA 11、LOW 12、D2 17、D2P 18 |
| 1 | 1 | 配置协议版本 | 当前格式对应版本值 07;实际以收到值为准 |
| 2~3 | 2 | 应用固件版本 | 主/次版本,例如 01 07 表示 1.7 |
| 4~7 | 4 | 脚本启用位图 | bit0 为心跳;标准/PA/LOW 为 bit1~16,D2/D2P 为 bit1~8 |
| 8 | 1 | 电量等级 | 0~4 的分档值,不是电压或百分比 |
text
10 07 01 07 00 00 00 03 04该示例表示标准 DTU、协议版本 7、固件 1.7、心跳和用户脚本 1 启用,电量等级为 4。标准 DTU 的这个等级来源与心跳的外部电源采样字段不同,不能用它代替输入电压测量。
两种采集模式下保留的脚本配置可以不同于实际执行方式。启动包的脚本位图不包含合并任务列表,不能据此恢复合并采集映射。
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 为心跳;标准/PA/LOW 为 bit1~16,D2/D2P 为 bit1~8 |
| 14~17 | 4 | 独立脚本执行状态位图 | bit1~16 对应用户脚本,D2/D2P 只用 bit1~8;bit0 为 0 |
| 18 | 1 | XOR 校验 | 从偏移 2 到 17 逐字节异或 |
| 19~20 | 2 | 帧尾 | EC ED |
心跳示例
text
CE DE | 34 | 00 00 3C | 0A 82 | 04 D2 | 00 00 00 03 | 00 00 00 02 | 57 | EC ED竖线用于阅读,不属于实际数据。此例适用于标准 DTU/PA 的电源字段解释,LOW、D2/D2P 不能照此换算。此例心跳周期为 60 秒,内部温度为 26.90℃;在下述常规电源换算范围内,04 D2 表示 12.34V。启用位图 00000003 表示心跳和脚本 1 启用;执行位图 00000002 表示脚本 1 最近记录为采集成功。
位图不是成功数量
执行状态的位为 1 表示该条独立脚本最近记录的收集结果为成功;位为 0 可能是失败或尚未执行,需结合启用状态和运行过程判断。脚本 1、2、3 均成功时,执行位图为 0000000E,不是 00000003。
这不是本轮采集成功次数或累计次数。合并采集任务的失败情况应读 FPort 33 的失败任务位图,不能用心跳中的独立脚本状态代替。
电源字段的换算边界
| 型号 | 两字节原始字段的含义 | 处理方法 |
|---|---|---|
| 标准 DTU、DTU-PA | 外部供电采样 | 常规范围按原始值 ÷ 100 得 V;存在下述缩放边界 |
| DTU-LOW | 电量等级 | 0~4 分档值,保留等级;不是伏特,也不是 0~100% |
| DTU-D2、DTU-D2P | 芯片内部供电电压 | 原始值 ÷ 100 得 V;不能当作外部电源输入电压 |
例如 D2 字段 01 4A 的原始值为 330,对应内部 3.30V;LOW 字段 00 04 为等级 4,不是 0.04V 或 4%。电量等级是电压分档结果,不等于经过容量标定的剩余电量。
标准 DTU/PA 常规路径按 0.01V/单位 保存外部采样结果。当前处理还会在中间结果小于 170 或大于 2800 时再缩小十倍,报文没有另外标记这次缩放。因此异常供电或越界读数不能仅靠最终两字节可靠还原,需结合实测输入电压核查。
平台建议同时保留原始字段与换算结果,匹配现场固件后再用于告警。不要套用旧手册“所有型号均为内部 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需先识别失败文本,再按仪表协议解析正常结果。透明上传同样保留原始字节:UART1 用 FPort 51,UART2 用 FPort 52。标准/PA 对应 RS232、RS485;LOW 对应 RS485_1、RS485_2。D2/D2P 的采集口为 RS485;不要因隐藏 RS232 采集选项就认为透传下行已按一路隔离,详见型号对照。
过长的独立回复或透传数据可能被分段发送,但不携带 FPort 33 的分包头。接收端不能据此保证自动重组完整仪表帧,项目应控制回复长度或另行约定接收处理。
6. 合并采集:FPort 33
固定格式为:
text
设备类型(1B) | 总包数与索引(1B) | 失败任务位图(2B) | 本片数据它 没有 CE DE / EC ED、配置帧 XOR 或仪表原始 CRC。01/02 的选中状态各占一字节,03/04 的选中寄存器各占两字节;失败任务的字段原位填零,但这些零值无效。
以下为标准 DTU 的单包成功示例;其他型号使用本机类型字节,失败位图和数据结构相同:
text
10 10 00 00 12 34 56 78单包中任务列表第一条失败的示例:
text
10 10 00 01 00 00 00 00完整分包规则、失败判定、解析函数和平台缓存要求见数据上报与解析。
与旧版手册的主要区别
| 旧资料中的写法 | 当前应怎样理解 |
|---|---|
心跳 00000001 表示脚本 1 开启 | bit0 是心跳;脚本 1 用 bit1,心跳与脚本 1 同时启用为 00000003 |
| 最后四字节是采集成功数量 | 实际为独立脚本执行状态位图 |
| 重启值 03、05 各对应一个固定原因 | 当前按复位原因位图解释组合值 |
| 电压示例固定解释为模组电压 | 标准 DTU 心跳实际采外部供电,并存在换算边界 |
| 独立脚本最小周期 10 秒 | 当前上位机编辑范围 1~86400 秒;实际周期应满足采集及发送耗时 |
| 只有原脚本上报端口 | 支持合并采集的固件增加 FPort 33 与四字节报告头 |
旧手册的设备示例和协议版本不能当作当前设备的实际版本或参数;平台按收到的类型、版本和现场保存的采集配置选择解析规则。