Files
433_STM32/docs/报文.md

3.4 KiB
Raw Blame History

BOAT DTU 无线通信协议 (RF433)

本文档采用直观图示方式定义 BOAT DTU 在 433MHz 无线频段的报文格式。

1. 通用报文结构图示

所有无线报文均遵循以下结构:

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) 电平发生变化时,立即发送此包。

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 接口收到的原始串口数据封装后发出。

AA  48  LEN  ID  [DATA]  SUM
--  --  ---  --  ------  ---
 |   |   |   |     |      |
 |   |   |   |     |      +-- 校验和
 |   |   |   |     +--------- RS485 原始数据内容
 |   |   |   +--------------- 本机设备 ID
 |   |   +------------------- 长度:(1 + 原始数据长度)
 |   +----------------------- 类型标识0x48 (RS485 Data)
 +--------------------------- 固定起始符

2.3 W5500 网络透传数据包

将以太网口收到的 UDP/TCP 原始数据封装后发出。

AA  55  LEN  ID  [DATA]  SUM
--  --  ---  --  ------  ---
 |   |   |   |     |      |
 |   |   |   |     |      +-- 校验和
 |   |   |   |     +--------- 网络原始数据内容
 |   |   |   +--------------- 本机设备 ID
 |   |   +------------------- 长度:(1 + 原始数据长度)
 |   +----------------------- 类型标识0x55 (Net Data)
 +--------------------------- 固定起始符

2.4 系统心跳包 (30秒/次)

系统定时上报当前存活状态,包含当前的 I/O 状态及防丢包序列号。

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)。