跳转至

PX4SILIntFloatSend 模块文档

所属工具箱:RflySim Model

PX4SILIntFloatSend 模块外观

简介

一句话描述:将自定义的整型数组与浮点数组打包,通过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)

特性项
支持的数据类型 doublesingleint32int
直接馈通(Direct Feedthrough)
采样时间 继承
代码生成支持

数据通信协议

本模块基于UDP协议发送数据,具体规则如下:

  1. 端口规则:目标UDP端口号为 30100 + (CopterID - 1) * 2,其中CopterID从1开始计数,为目标无人机的序号
  2. 数据格式:数据按10i20f格式打包,即10个32位整型 + 20个单精度浮点数,具体结构体定义:
struct PX4SILIntFloat{
 int checksum;         //固定值 1234567897
 int CopterID;         //目标无人机序号,输入大于0时使用输入值,否则使用模块参数配置值
 int inSILInts[8];     //8维自定义整型数据
 float inSILFLoats[20];//20维自定义单精度浮点数数据
};
  1. 目标地址:通过模块参数配置目标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数据的功能。