PX4SILIntFloatSend 模块文档¶
所属工具箱:RflySim Model

简介¶
一句话描述:将自定义的整型数组与浮点数组打包,通过UDP发送给CopterSim中SIL模式DLL模型的自定义输入接口。
该模块是RflySim工具链中SIL(Software-in-the-Loop)仿真开发的自定义接口模块,用于支持用户向PX4飞控的SIL仿真DLL传递自定义用户数据。它会将输入的8维自定义整型数组、16维自定义浮点数组,按照PX4SILIntFloat协议格式添加校验和与无人机ID,打包后通过指定UDP端口发送,端口号遵循30100+(copterID-1)*2的规则,适配多机仿真场景。
该模块主要用于PX4 SIL仿真开发中的自定义数据交互场景,用户可通过该模块将Simulink中生成的自定义自定义配置、参考指令、传感器额外数据发送给运行在CopterSim中的PX4 SIL仿真DLL,配合接收端自定义接口实现定制化的仿真功能开发,支持单机与多机SIL仿真的自定义数据交互需求。
端口说明¶
输入端口(Inputs)¶
| 端口名 | 数据类型 | 维度 | 说明 |
|---|---|---|---|
inSILInts |
int32/double |
1×8 |
用户自定义的整型数据,最多支持8个元素 |
inSILFloats |
double |
1×20 |
用户自定义的浮点型数据,最多支持20个元素 |
输出端口(Outputs)¶
本模块无输出端口。
参数配置(Parameters)¶
双击模块打开的 Mask 对话框中可配置以下参数:
| 参数名 | 类型 | 默认值 | 可选值/范围 | 说明 |
|---|---|---|---|---|
Target IP Address |
string |
127.0.0.1 |
任意合法IPv4地址 | 目标CopterSim进程所在主机的IP地址 |
CopterID |
int |
1 |
1~255 |
目标无人机的ID编号,用于确定UDP通讯端口 |
参数设置说明¶
Target IP Address¶
指定接收自定义数据的CopterSim所在主机的IP地址,若CopterSim与Simulink仿真运行在同一台主机,使用默认值127.0.0.1即可。
CopterID¶
目标无人机的序号,从1开始计数,模块将自动计算目标UDP端口号为30100+(CopterID-1)*2,与对应ID无人机的SIL接口进行通讯。当输入端口传入的CopterID大于0时,模块会优先使用传入的CopterID,否则使用本参数配置的值。
模块特性(Block Characteristics)¶
| 特性项 | 值 |
|---|---|
| 支持的数据类型 | double、single、int32、int |
| 直接馈通(Direct Feedthrough) | 是 |
| 采样时间 | 继承 |
| 代码生成支持 | 否 |
数据通信协议¶
本模块基于UDP协议发送数据,具体规则如下:
- 端口规则:目标UDP端口号为
30100 + (CopterID - 1) * 2,其中CopterID从1开始计数,为目标无人机的序号 - 数据格式:数据按
10i20f格式打包,即10个32位整型 + 20个单精度浮点数,具体结构体定义:
struct PX4SILIntFloat{
int checksum; //固定值 1234567897
int CopterID; //目标无人机序号,输入大于0时使用输入值,否则使用模块参数配置值
int inSILInts[8]; //8维自定义整型数据
float inSILFLoats[20];//20维自定义单精度浮点数数据
};
- 目标地址:通过模块参数配置目标CopterSim的IP地址。
相关模块¶
| 模块名 | 说明 |
|---|---|
PX4SILIntFloatReceive |
从CopterSim接收自定义整型和浮点数SIL接口数据 |
PX4SILActuatorSend |
发送执行器控制信号到CopterSim的SIL接口 |
PX4SILSensorReceive |
从CopterSim接收传感器仿真数据 |
PX4OffboardControl |
实现PX4 offboard模式的控制指令发送 |
使用示例¶
相关使用示例请参考以下路径:
[RflySim安装路径]/RflySimAPIs/4.RflySimModel/0.ApiExps/11.inSILAPI/1.InSILIntsFloats/2.InSILIntsFloats_sim/Readme.pdf
请在上述路径中查看
Readme.pdf获取完整的示例说明与操作步骤。
注意事项与常见问题¶
- 初始化顺序:需要先启动CopterSim并完成PX4 SIL仿真环境初始化后,再运行Simulink仿真,否则UDP数据无法正常发送到目标接口。
- 维度匹配要求:输入的
inSILInts必须为固定8维整数数组,inSILFloats必须为固定20维浮点数数组,模块会自动对长度不符的输入做截断或补零处理,可能导致发送数据异常,请严格匹配输入维度。 - 端口号规则:模块使用的UDP端口号规则为
30100+(CopterID-1)*2,请确保该端口未被本地防火墙或其他进程占用,且CopterSim中目标无人机的ID与模块参数中配置的CopterID一致,否则无法接收数据。 - CopterID优先级:若输入数据中传入的CopterID大于0,模块会优先使用输入的CopterID替换模块参数中配置的CopterID,同时会自动修改目标UDP端口号,使用时请注意该规则。
- IP地址配置:当CopterSim与Simulink运行在同一台计算机时,
Target IP Address可配置为默认的127.0.0.1;若二者运行在不同主机,请填写CopterSim所在主机的实际局域网IP地址。 - 校验和规则:模块会自动生成符合要求的固定校验和
1234567897,用户不需要手动修改输入数据中的校验和字段,否则会导致CopterSim端校验失败,丢弃接收的数据。
更新日志¶
v4.20(2024-08-21): 初始版本发布,实现向CopterSim中DLL模型的inSILInts和inSILFloats接口打包发送UDP数据的功能。