5.0 KiB
5.0 KiB
BOAT DTU 无线通信协议 (RF433)
本文档采用直观图示方式定义 BOAT DTU 在 433MHz 无线频段的报文格式。
1. 通用报文结构图示
所有无线报文均遵循以下结构:
AA TYPE LEN ID [PAYLOAD] SUM
-- ---- --- -- --------- ---
| | | | | |
| | | | | +-- 校验和:从 AA 到 PAYLOAD 结束的所有字节累加和 (取低8位)
| | | | +---------- 载荷数据:具体的业务数据内容
| | | +------------------ 设备 ID:当前发送设备的唯一标识 (MY_DEVICE_ID)
| | +---------------------- 长度:指明后续 [ID + PAYLOAD + SUM] 的总字节数
| +--------------------------- 数据类型:区分数据来源 (10, 55, 48, AA)
+-------------------------------- 起始符:固定为 0xAA
2. 详细指令集定义
2.1 报警状态变化上报 (主动上报)
当 Modbus RTU 轮询到的报警状态发生变化时,立即发送此包。 格式与原 DI 变化通知完全一致,上位机代码无需修改。
AA 10 03 ID XX SUM
-- -- -- -- -- ---
| | | | | |
| | | | | +-- 校验和
| | | | +------ 报警状态字节 (Bit0:火灾, Bit1:水密门, Bit2:舱底水, Bit3:气体检测)
| | | +---------- 本机设备 ID
| | +-------------- 长度固定为 0x03 (ID + 1字节状态 + SUM)
| +------------------ 类型标识:0x10 (Alarm Data)
+---------------------- 固定起始符
2.2 RS485 透传数据包
将 RS485 接口收到的原始串口数据封装后发出。
AA 48 LEN ID [DATA] SUM
-- -- --- -- ------ ---
| | | | | |
| | | | | +-- 校验和
| | | | +--------- RS485 原始数据内容
| | | +--------------- 本机设备 ID
| | +------------------- 长度:(1 + 原始数据长度 + SUM)
| +----------------------- 类型标识:0x48 (RS485 Data)
+--------------------------- 固定起始符
2.3 W5500 网络透传数据包
将以太网口收到的 UDP/TCP 原始数据封装后发出。
AA 55 LEN ID [DATA] SUM
-- -- --- -- ------ ---
| | | | | |
| | | | | +-- 校验和
| | | | +--------- 网络原始数据内容
| | | +--------------- 本机设备 ID
| | +------------------- 长度:(1 + 原始数据长度 + SUM)
| +----------------------- 类型标识:0x55 (Net Data)
+--------------------------- 固定起始符
2.4 系统心跳包 (30秒/次)
系统定时上报当前存活状态,包含报警状态、防丢包序列号、固件版本及 Modbus TCP 寄存器值。
2.4.1 标准心跳包 (7字节Payload)
AA AA 09 ID [SEQ_H] [SEQ_L] [FW_H] [FW_L] [RTU] [TCP_H] [TCP_L] SUM
-- -- -- -- --------------- ------------- ----- --------------- ---
| | | | | | | | |
| | | | | | | | +-- 校验和
| | | | | | | +-------------- Modbus TCP 寄存器值
| | | | | | +--------------------------- Modbus RTU 报警状态
| | | | | | Bit0:火灾 Bit1:水密门
| | | | | | Bit2:舱底水 Bit3:气体检测
| | | | | +---------------------------------------- 2字节固件版本编码
| | | | +------------------------------------------------------- 2字节序列号 (0-65535)
| | | +------------------------------------------------------------------ 1字节本机设备 ID
| | +----------------------------------------------------------------------- LEN = 0x09 (9)
| +--------------------------------------------------------------------------- 类型 0xAA
+------------------------------------------------------------------------------- 固定起始符
Payload 字段说明:
| 偏移 | 字段 | 长度 | 说明 |
|---|---|---|---|
| 0-1 | SEQ | 2 | 2字节序列号 (0-65535, 循环自增) |
| 2-3 | FW | 2 | 2字节固件版本编码 (MAKE_XTELL_CODE 宏定义) |
| 4 | RTU | 1 | Modbus RTU 报警状态 (Bit0:火灾, Bit1:水密门, Bit2:舱底水, Bit3:气体检测) |
| 5-6 | TCP | 2 | Modbus TCP 寄存器值 (0xFFFF 表示无效) |
3. 示例说明 (假设 Device ID = 0x69 = 105)
- 报警变化通知示例:
AA 10 03 69 0F [SUM]- 表示:ID为105的设备,报警状态 = 0x0F (火灾+水密门+舱底水+气体检测 全部激活)
- 心跳包示例:
AA AA 09 69 00 05 06 41 0F 01 2C [SUM]- 表示:ID=105,序列号5,固件版本 0x0641 (2026年5月10日第1次编译),
- RTU报警=0x0F(全报警),Modbus TCP=0x012C(300)(7字节payload)
- 485透传示例:
AA 48 05 69 41 42 43 44 4D- 表示:ID为105的设备,转发了 485 数据 "ABCD" (长度 4+1=5)。