跳转至

HIL16CtrlsPWM 模块文档

所属工具箱:RflySim APIs

HIL16CtrlsPWM 模块外观

简介

一句话描述:面向硬件在环仿真,将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

勾选该选项后,模块会在使能控制(isEnCtrltrue)时自动向飞控发送解锁指令,省去手动解锁步骤,适合自动化仿真流程。

Auto block PX4

该参数用于实现Simulink自定义控制器对飞控输出的接管,勾选后当使能自定义控制时,PX4原生控制器的输出会被屏蔽,转而使用Simulink模型输出的CtrlS控制信号驱动无人机。

Auto Loiter

该参数用于保障仿真安全,当关闭自定义控制(isEnCtrlfalse)时,模块会自动切换飞控到Loiter模式,让PX4自动维持无人机悬停,避免仿真过程中无人机失控。

Sample Time(s)

该参数匹配飞控的控制周期,一般多旋翼仿真可设置为0.01s(对应100Hz控制频率),需根据自定义控制器的实际采样周期调整。

模块特性(Block Characteristics)

特性项
支持的数据类型 doublesingle
直接馈通(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中无人机的初始位置

使用示例

相关使用示例请参考以下路径:

[RflySim安装路径]/RflySimAPIs/5.RflySimFlyCtrl/0.ApiExps/16.CtrlsSingalsAPI/Readme.pdf

请在上述路径中查看 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 LoiterAuto block PX4,需保证isEnCtrl端口逻辑正确:当isEnCtrl为false时会自动切换PX4的Loiter模式悬停,切回Simulink控制前需确认载具状态稳定,避免切换过程中出现姿态失控。
  • 端口使能逻辑:当isEnCtrl输入为false时,模块会默认发送全1000的控制信号,若使用旋翼模型会对应零油门输出,仿真前需确认使能逻辑符合设计需求,避免意外掉高。

更新日志

  • v4.20 (2024-08-07): 初始版本发布,支持发送硬件在环16维归一化PWM控制信号到CopterSim,提供自动解锁、PX4输出屏蔽、自动Loiter模式配置功能。