RflyUdpBigMode 模块文档¶
所属工具箱:RflySim Swarm

简介¶
一句话描述:该模块通过固定 UDP 协议接收外部程序发送的大模式或航点数据,并将最多 20 组四维数据输出到 Simulink。
RflyUdpBigMode 是面向大模式控制、任务规划和外部上位机交互的 UDP 接收 S-Function。模块在仿真开始后绑定本机 UDP 5005 端口,接收包含包头、包编号、点数量、航点数据和 CRC32 校验值的数据包;校验通过后,将数据整理为 single 类型向量输出,并向发送端返回 ACK。
该模块适用于由 Python、C++、大语言模型规划器或其他外部程序生成航点/模式控制数据,再在 Simulink 中进行集群控制或路径跟踪的场景。
端口说明¶
输入端口(Inputs)¶
本模块无输入端口。
输出端口(Outputs)¶
| 端口名 | 数据类型 | 维度 | 说明 |
|---|---|---|---|
WaypointData |
single |
80x1 |
最多 20 组四维数据,每组按 [x, y, z, yaw] 输出;未接收到合法数据时全部输出 0 |
上层发送端可根据任务协议将前若干组解释为解锁、起降、Offboard、航点编号或多机控制量,其余组解释为航点坐标。Simulink 侧应与发送端保持相同的数据含义约定。
参数配置(Parameters)¶
本模块无 Mask 参数。
数据通信协议¶
UDP 端口¶
| 项目 | 值 |
|---|---|
| 本地监听端口 | 5005 |
| 接收超时 | 5 ms |
| 采样时间 | 1/30 s |
| 最大数据组数 | 20 |
数据包结构¶
| 字段 | 类型 | 说明 |
|---|---|---|
header |
uint16 |
固定包头 0xAA55 |
packet_id |
uint16 |
包编号,用于 ACK 确认 |
num_points |
uint8 |
当前数据包包含的数据组数量,超过 20 时按 20 组截断 |
reserved |
uint8 |
保留字段 |
waypoints |
Waypoint[num_points] |
每组包含 double x、double y、float z、float yaw |
crc32 |
uint32 |
对包头和数据区计算的 CRC32 校验值 |
ACK 结构¶
| 字段 | 类型 | 说明 |
|---|---|---|
header |
uint16 |
固定包头 0xAA55 |
packet_id |
uint16 |
被确认的数据包编号 |
status |
uint8 |
0x01 表示接收成功,0x02 表示 CRC 校验失败 |
reserved |
uint8 |
保留字段 |
模块特性(Block Characteristics)¶
| 特性项 | 值 |
|---|---|
| 模块类型 | Level-2 C/C++ S-Function |
| S-Function 名称 | RflyUdpBigMode |
| 输入端口数量 | 0 |
| 输出端口数量 | 1 |
| 输出数据类型 | single |
| 输出宽度 | 80 |
| 代码生成支持 | 否 |
使用说明¶
- 启动用于发送大模式或航点数据的外部程序。
- 确认外部程序向 Simulink 所在主机的 UDP
5005端口发送数据。 - 在 Simulink 模型中将
RflyUdpBigMode输出连接到自定义数据解析、航点控制或集群控制模块。 - 在发送端根据 ACK
status判断数据是否被接收并通过 CRC 校验。
注意事项与常见问题¶
- 端口占用:同一台主机上只能有一个进程绑定 UDP
5005端口,启动前需要关闭其他占用该端口的程序。 - 输出补零:模块只输出最近一次通过校验的数据;没有合法数据时输出全零向量,控制逻辑应对全零输入进行保护。
- CRC 一致性:发送端 CRC32 计算范围必须与模块一致,即对包头和航点数据计算,不包含末尾 CRC 字段本身。
- 数据含义约定:模块本身只解析四维数据组,不判断每组数据在任务层的含义,发送端与 Simulink 解析端必须统一协议。
更新日志¶
v4.10(2026-05-07): 新增 RflyUdpBigMode 模块帮助文档,并接入 Simulink Help 按钮索引。