Files
433_STM32/docs/报文.md

94 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# BOAT DTU 无线通信协议 (RF433)
本文档采用直观图示方式定义 BOAT DTU 在 433MHz 无线频段的报文格式。
## 1. 通用报文结构图示
所有无线报文均遵循以下结构:
```text
AA TYPE LEN ID [PAYLOAD] SUM
-- ---- --- -- --------- ---
| | | | | |
| | | | | +-- 校验和:从 AA 到 PAYLOAD 结束的所有字节累加和 (取低8位)
| | | | +---------- 载荷数据:具体的业务数据内容
| | | +------------------ 设备 ID当前发送设备的唯一标识 (MY_DEVICE_ID)
| | +---------------------- 长度:指明后续 [ID + PAYLOAD + SUM] 的总字节数
| +--------------------------- 数据类型:区分数据来源 (10, 55, 48, AA)
+-------------------------------- 起始符:固定为 0xAA
```
---
## 2. 详细指令集定义
### 2.1 I/O 状态变化上报 (主动上报)
当板载 4 路数字输入 (DI) 电平发生变化时,立即发送此包。
```text
AA 10 03 ID XX SUM
-- -- -- -- -- ---
| | | | | |
| | | | | +-- 校验和
| | | | +------ I/O 状态位 (Bit0:DI1, Bit1:DI2, Bit2:DI3, Bit3:DI4)
| | | +---------- 本机设备 ID
| | +-------------- 长度固定为 0x03 (ID + 1字节状态 + SUM)
| +------------------ 类型标识0x10 (I/O Data)
+---------------------- 固定起始符
```
### 2.2 RS485 透传数据包
将 RS485 接口收到的原始串口数据封装后发出。
```text
AA 48 LEN ID [DATA] SUM
-- -- --- -- ------ ---
| | | | | |
| | | | | +-- 校验和
| | | | +--------- RS485 原始数据内容
| | | +--------------- 本机设备 ID
| | +------------------- 长度:(1 + 原始数据长度 + SUM)
| +----------------------- 类型标识0x48 (RS485 Data)
+--------------------------- 固定起始符
```
### 2.3 W5500 网络透传数据包
将以太网口收到的 UDP/TCP 原始数据封装后发出。
```text
AA 55 LEN ID [DATA] SUM
-- -- --- -- ------ ---
| | | | | |
| | | | | +-- 校验和
| | | | +--------- 网络原始数据内容
| | | +--------------- 本机设备 ID
| | +------------------- 长度:(1 + 原始数据长度 + SUM)
| +----------------------- 类型标识0x55 (Net Data)
+--------------------------- 固定起始符
```
### 2.4 系统心跳包 (30秒/次)
系统定时上报当前存活状态,包含当前的 I/O 状态及防丢包序列号。
```text
AA AA 05 ID [IO] [SEQ_H] [SEQ_L] SUM
-- -- -- -- ---- ------- ------- ---
| | | | | | | |
| | | | | | | +-- 校验和
| | | | | +-------+-------- 2字节序列号 (0-65535, 循环自增)
| | | | +----------------------- 当前 4 路 I/O 状态位
| | | +---------------------------- 本机设备 ID
| | +-------------------------------- 长度固定为 0x05 (ID + 3字节Payload + SUM)
| +------------------------------------ 类型标识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)。