HIL16CtrlsPWM 模块文档¶
所属工具箱:RflySim APIs

简介¶
一句话描述:面向硬件在环仿真,将Simulink生成的16路PWM控制信号发送至CopterSim,同时支持PX4的模式与输出自动切换配置。
该模块属于RflySim APIs工具库,专为无人机硬件在环(HIL)仿真开发,支持用户在Simulink中设计自定义控制器并将控制输出直接接入CopterSim的动力学仿真流程。模块可通过参数配置实现自动解锁、PX4输出屏蔽、模式自动切换等功能,当Simulink控制器使能时接入自定义控制输出,禁用时自动切换PX4至Loiter模式保持无人机悬停,十分适用于自定义飞控算法的HIL验证开发场景。
该模块通过API接口将归一化后的16路PWM控制信号传输至CopterSim的动力学DLL模型输入端口,可适配多旋翼、固定翼等不同构型无人机的控制信号映射需求,配合PX4飞控与RflySim3D可视化模块可完成从算法设计到仿真验证的完整硬件在环仿真流程。
端口说明¶
输入端口(Inputs)¶
| 端口名 | 数据类型 | 维度 | 说明 |
|---|---|---|---|
isEnCtrl |
double |
1×1 |
控制信号使能标志,输入为true时发送CtrlS[16]端口的控制数据,输入为false时发送全1000的控制信号 |
CtrlS |
double |
1×16 |
16维PWM控制信号,范围为1000~2000,用于硬件在环仿真 |
输出端口(Outputs)¶
本模块无输出端口。
参数配置(Parameters)¶
双击模块打开的 Mask 对话框中可配置以下参数:
| 参数名 | 类型 | 默认值 | 可选值/范围 | 说明 |
|---|---|---|---|---|
Auto arm |
bool |
false |
true/false |
自动解锁开关,勾选后当isEnCtrl输入为true时,模块自动发送解锁指令 |
Auto block PX4 |
bool |
false |
true/false |
PX4输出屏蔽开关,勾选后当isEnCtrl输入为true时,模块将屏蔽PX4输出,使用Simulink控制器控制载具 |
Auto Loiter |
bool |
false |
true/false |
自动悬停切换开关,勾选后当isEnCtrl输入为false时,模块解除PX4输出屏蔽并切换PX4到自动Loiter模式,保证载具由PX4控制器维持空中悬停 |
Sample Time(s) |
double |
0.01 |
大于0 | 模块采样时间,单位为秒 |
参数设置说明¶
Auto arm¶
勾选该选项后,模块会在使能控制(isEnCtrl为true)时自动向飞控发送解锁指令,省去手动解锁步骤,适合自动化仿真流程。
Auto block PX4¶
该参数用于实现Simulink自定义控制器对飞控输出的接管,勾选后当使能自定义控制时,PX4原生控制器的输出会被屏蔽,转而使用Simulink模型输出的CtrlS控制信号驱动无人机。
Auto Loiter¶
该参数用于保障仿真安全,当关闭自定义控制(isEnCtrl为false)时,模块会自动切换飞控到Loiter模式,让PX4自动维持无人机悬停,避免仿真过程中无人机失控。
Sample Time(s)¶
该参数匹配飞控的控制周期,一般多旋翼仿真可设置为0.01s(对应100Hz控制频率),需根据自定义控制器的实际采样周期调整。
模块特性(Block Characteristics)¶
| 特性项 | 值 |
|---|---|
| 支持的数据类型 | double、single |
| 直接馈通(Direct Feedthrough) | 是 |
| 采样时间 | 离散 |
| 代码生成支持 | 否 |
数据通信协议¶
本模块通过UDP协议向CopterSim发送16路PWM控制数据,默认目标端口为2010,数据包为连续的17个double类型数值:第一个为控制使能标志isEnCtrl,后续16个依次为16路PWM控制信号CtrlS[16],每个数值占8字节,单包总长度为136字节。
相关模块¶
| 模块名 | 说明 |
|---|---|
PWM_output |
输出多路电机PWM控制信号,用于硬件在环仿真 |
HILActuatorFeedBack |
读取CopterSim反馈的舵机、电机执行器状态 |
VehicleStateGet |
读取CopterSim输出的无人机完整状态信息 |
SetVehiclePos |
发送指令设置CopterSim中无人机的初始位置 |
使用示例¶
相关使用示例请参考以下路径:
请在上述路径中查看
Readme.pdf获取完整的示例说明与操作步骤。
注意事项与常见问题¶
- 初始化顺序:该模块需要依赖CopterSim完成初始化后才能正常发送控制信号,必须确保Simulink仿真启动前CopterSim已经完成模型加载和端口连接,否则会出现控制信号发送失败的问题。
- 采样时间匹配:模块的
Sample Time(s)参数需要和CopterSim中设置的仿真步长保持一致,若采样时间不匹配会导致控制信号发送不同步,引发仿真过程中无人机姿态不稳定。 - 输入信号范围:16维PWM控制信号
CtrlS[16]的输入范围必须保持在1000~2000之间,超出范围会导致CopterSim端归一化转换出错,造成电机输出异常。注意多旋翼和固定翼模型的归一化映射规则不同:多旋翼1000~2000对应输出0~1,固定翼1000~2000对应输出-1~1,开发时需根据载具类型调整输入。 - 模式切换逻辑:若同时勾选
Auto Loiter和Auto block PX4,需保证isEnCtrl端口逻辑正确:当isEnCtrl为false时会自动切换PX4的Loiter模式悬停,切回Simulink控制前需确认载具状态稳定,避免切换过程中出现姿态失控。 - 端口使能逻辑:当
isEnCtrl输入为false时,模块会默认发送全1000的控制信号,若使用旋翼模型会对应零油门输出,仿真前需确认使能逻辑符合设计需求,避免意外掉高。
更新日志¶
v4.20(2024-08-07): 初始版本发布,支持发送硬件在环16维归一化PWM控制信号到CopterSim,提供自动解锁、PX4输出屏蔽、自动Loiter模式配置功能。