本次重构完成了 433MHz 全链路协议统一:实现了 AA TYPE LEN ID PAYLOAD SUM 统一帧格式;引入了基于 AUX 的 LBT 避让与 TX 优先调度,确保高频发送稳定;完成了端口语义化重命名;并成功集成了 IO 监控、RS485 及 W5500 以太网 的标准化打包转发,实现了多源数据的高效、稳定透传。
This commit is contained in:
93
docs/报文.md
Normal file
93
docs/报文.md
Normal file
@ -0,0 +1,93 @@
|
||||
# BOAT DTU 无线通信协议 (RF433)
|
||||
|
||||
本文档采用直观图示方式定义 BOAT DTU 在 433MHz 无线频段的报文格式。
|
||||
|
||||
## 1. 通用报文结构图示
|
||||
|
||||
所有无线报文均遵循以下结构:
|
||||
|
||||
```text
|
||||
AA TYPE LEN ID [PAYLOAD] SUM
|
||||
-- ---- --- -- --------- ---
|
||||
| | | | | |
|
||||
| | | | | +-- 校验和:从 AA 到 PAYLOAD 结束的所有字节累加和 (取低8位)
|
||||
| | | | +---------- 载荷数据:具体的业务数据内容
|
||||
| | | +------------------ 设备 ID:当前发送设备的唯一标识 (MY_DEVICE_ID)
|
||||
| | +---------------------- 长度:指明后续 [ID + PAYLOAD] 的总字节数
|
||||
| +--------------------------- 数据类型:区分数据来源 (10, 55, 48, AA)
|
||||
+-------------------------------- 起始符:固定为 0xAA
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. 详细指令集定义
|
||||
|
||||
### 2.1 I/O 状态变化上报 (主动上报)
|
||||
当板载 4 路数字输入 (DI) 电平发生变化时,立即发送此包。
|
||||
|
||||
```text
|
||||
AA 10 02 ID XX SUM
|
||||
-- -- -- -- -- ---
|
||||
| | | | | |
|
||||
| | | | | +-- 校验和
|
||||
| | | | +------ I/O 状态位 (Bit0:DI1, Bit1:DI2, Bit2:DI3, Bit3:DI4)
|
||||
| | | +---------- 本机设备 ID
|
||||
| | +-------------- 长度固定为 0x02 (ID + 1字节状态)
|
||||
| +------------------ 类型标识:0x10 (I/O Data)
|
||||
+---------------------- 固定起始符
|
||||
```
|
||||
|
||||
### 2.2 RS485 透传数据包
|
||||
将 RS485 接口收到的原始串口数据封装后发出。
|
||||
|
||||
```text
|
||||
AA 48 LEN ID [DATA] SUM
|
||||
-- -- --- -- ------ ---
|
||||
| | | | | |
|
||||
| | | | | +-- 校验和
|
||||
| | | | +--------- RS485 原始数据内容
|
||||
| | | +--------------- 本机设备 ID
|
||||
| | +------------------- 长度:(1 + 原始数据长度)
|
||||
| +----------------------- 类型标识:0x48 (RS485 Data)
|
||||
+--------------------------- 固定起始符
|
||||
```
|
||||
|
||||
### 2.3 W5500 网络透传数据包
|
||||
将以太网口收到的 UDP/TCP 原始数据封装后发出。
|
||||
|
||||
```text
|
||||
AA 55 LEN ID [DATA] SUM
|
||||
-- -- --- -- ------ ---
|
||||
| | | | | |
|
||||
| | | | | +-- 校验和
|
||||
| | | | +--------- 网络原始数据内容
|
||||
| | | +--------------- 本机设备 ID
|
||||
| | +------------------- 长度:(1 + 原始数据长度)
|
||||
| +----------------------- 类型标识:0x55 (Net Data)
|
||||
+--------------------------- 固定起始符
|
||||
```
|
||||
|
||||
### 2.4 系统心跳包 (30秒/次)
|
||||
系统定时上报当前存活状态,包含当前的 I/O 状态及防丢包序列号。
|
||||
|
||||
```text
|
||||
AA AA 04 ID [IO] [SEQ_H] [SEQ_L] SUM
|
||||
-- -- -- -- ---- ------- ------- ---
|
||||
| | | | | | | |
|
||||
| | | | | | | +-- 校验和
|
||||
| | | | | +-------+-------- 2字节序列号 (0-65535, 循环自增)
|
||||
| | | | +----------------------- 当前 4 路 I/O 状态位
|
||||
| | | +---------------------------- 本机设备 ID
|
||||
| | +-------------------------------- 长度固定为 0x04 (ID + 3字节Payload)
|
||||
| +------------------------------------ 类型标识:0xAA (Heartbeat)
|
||||
+---------------------------------------- 固定起始符
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. 示例说明 (假设 Device ID = 0x01)
|
||||
|
||||
* **心跳包示例**:`AA AA 04 01 0F 00 05 72`
|
||||
* 表示:ID为1的设备,I/O全为高,序列号为5。
|
||||
* **485透传示例**:`AA 48 05 01 41 42 43 44 4D`
|
||||
* 表示:ID为1的设备,转发了 485 数据 "ABCD" (长度 4+1=5)。
|
||||
Reference in New Issue
Block a user