PWM_output 模块文档¶
所属工具箱:Sensors and Actuators

简介¶
一句话描述:向PX4硬件的I/O PWM输出端口发送指定参数的PWM控制信号,用于驱动电机、舵机等执行机构,支持硬件在环仿真与实飞场景。
该模块属于RflySim工具链的Sensors and Actuators接口库,用于实现Simulink控制算法对PX4硬件执行器的直接输出控制,是无人机自定义控制算法开发中连接控制输出与底层执行机构的核心模块。该模块支持用户自定义配置PWM更新率与输出通道,适配电调、舵机等不同类型执行器的刷新频率需求,可同时控制最多8路PX4硬件PWM输出端口。
该模块支持实飞与硬件在环仿真两种工作模式,勾选Publish Outputs后可适配RflySim平台的硬件在环仿真流程,配合CopterSim和RflySim3D完成半物理仿真验证;不勾选时可直接用于PX4飞控的实机飞行控制。模块通过ARM输入信号实现PWM输出的解锁与锁定控制,保障执行机构启动安全,输入的PWM信号以微秒为单位,符合PX4飞控硬件PWM输出的通用标准。
端口说明¶
输入端口(Inputs)¶
| 端口名 | 数据类型 | 维度 | 说明 |
|---|---|---|---|
ARM Output |
boolean |
1×1 |
解锁/锁定PWM输出,高电平TRUE时启用PWM输出,低电平FALSE时禁用PWM输出,禁用时所有PWM输出设为900微秒空闲值,避免电调进入超时状态 |
PWM1 |
uint16 |
1×1 |
对应PX4硬件1号PWM输出端口的PWM信号值,单位为微秒(usec),通常范围1000-2000usec |
PWM2 |
uint16 |
1×1 |
对应PX4硬件2号PWM输出端口的PWM信号值,单位为微秒(usec),通常范围1000-2000usec |
PWM3 |
uint16 |
1×1 |
对应PX4硬件3号PWM输出端口的PWM信号值,单位为微秒(usec),通常范围1000-2000usec |
PWM4 |
uint16 |
1×1 |
对应PX4硬件4号PWM输出端口的PWM信号值,单位为微秒(usec),通常范围1000-2000usec |
PWM5 |
uint16 |
1×1 |
对应PX4硬件5号PWM输出端口的PWM信号值,单位为微秒(usec),通常范围1000-2000usec |
PWM6 |
uint16 |
1×1 |
对应PX4硬件6号PWM输出端口的PWM信号值,单位为微秒(usec),通常范围1000-2000usec |
PWM7 |
uint16 |
1×1 |
对应PX4硬件7号PWM输出端口的PWM信号值,单位为微秒(usec),通常范围1000-2000usec |
PWM8 |
uint16 |
1×1 |
对应PX4硬件8号PWM输出端口的PWM信号值,单位为微秒(usec),通常范围1000-2000usec |
注:仅勾选使能的PWM端口会在模块中显示对应输入端口。
输出端口(Outputs)¶
本模块无输出端口。
参数配置(Parameters)¶
双击模块打开的 Mask 对话框中可配置以下参数:
| 参数名 | 类型 | 默认值 | 可选值/范围 | 说明 |
|---|---|---|---|---|
Publish Outputs |
bool |
true |
true/false |
勾选后可用于硬件在环仿真,不勾选仅可用于实飞 |
PWM update rate |
enum |
400Hz |
50Hz/125Hz/250Hz/300Hz/400Hz |
PWM信号发送刷新频率,即PWM更新率 |
Enable PWM1 |
bool |
true |
true/false |
是否使能1号PWM输出端口 |
Enable PWM2 |
bool |
true |
true/false |
是否使能2号PWM输出端口 |
Enable PWM3 |
bool |
true |
true/false |
是否使能3号PWM输出端口 |
Enable PWM4 |
bool |
true |
true/false |
是否使能4号PWM输出端口 |
Enable PWM5 |
bool |
false |
true/false |
是否使能5号PWM输出端口 |
Enable PWM6 |
bool |
false |
true/false |
是否使能6号PWM输出端口 |
Enable PWM7 |
bool |
false |
true/false |
是否使能7号PWM输出端口 |
Enable PWM8 |
bool |
false |
true/false |
是否使能8号PWM输出端口 |
Sample time |
double |
-1 |
大于0 | 模块采样时间,单位为秒,默认-1表示继承模型采样设置 |
参数设置说明¶
Publish Outputs¶
若需要进行硬件在环仿真,必须勾选该参数,不勾选的模块仅支持直接实飞场景。
PWM update rate¶
PWM更新率决定PWM信号的发送刷新频率,PX4默认配置为400Hz。不同执行器需要匹配不同更新率:电调(ESC)通常需要更高更新率(如400Hz)来保证控制平滑性与响应速度,普通舵机可使用较低更新率。
使能PWM端口¶
仅勾选使能的PWM端口会在模块生成对应输入端口,无需使用的端口取消勾选即可隐藏,根据实际使用的PX4硬件PWM输出端口数量配置即可。
ARM Output输入说明¶
ARM Output为高电平解锁是启动电机等执行机构的前提,通常由遥控器信号和Simulink模型中的飞行模式逻辑共同控制该输入。当ARM Output为低电平或模块启动时,所有PWM输出会被设置为900微秒的空闲值,避免电调因无有效信号进入超时保护状态。
PWM信号值说明¶
输入的PWM信号单位为微秒(usec),常规范围为1000-2000微秒:其中1000-1100微秒通常对应最小油门或空闲状态,1500微秒通常对应中立位置,1900-2000微秒通常对应最大油门。
模块特性(Block Characteristics)¶
| 特性项 | 值 |
|---|---|
| 支持的数据类型 | boolean、uint16、double、single |
| 直接馈通(Direct Feedthrough) | 是 |
| 采样时间 | 离散 |
| 代码生成支持 | 是 |
数据通信协议¶
本模块通过MAVLink协议与PX4飞控硬件通信,开启Publish Outputs选项后,会将PWM输出数据通过UDP发送至仿真飞控接口,端口遵循RflySim平台默认的HIL仿真通信规则,数据格式为8路16位无符号PWM值加1位解锁状态量封装为MAVLink消息传输。
相关模块¶
| 模块名 | 说明 |
|---|---|
RC_Input |
读取遥控器接收机的PWM输入信号,可用于获取PWM控制指令 |
Servo_output |
输出舵机控制信号,属于PX4硬件的执行器输出类模块 |
GPS_Receiver |
读取GPS定位数据,属于Sensors and Actuators库的传感器输入类模块 |
IMU_Reader |
读取惯性测量单元数据,属于Sensors and Actuators库的传感器输入类模块 |
使用示例¶
相关使用示例请参考以下路径:
请在上述路径中查看
Readme.pdf获取完整的示例说明与操作步骤。
注意事项与常见问题¶
- 初始化顺序:完成PX4固件烧录并正确配置硬件I/O映射后才能使用本模块,仿真启动前请确认PX4飞控已完成上电自检,ARM Output输入未置高时不要接入负载,避免意外启动风险。
- 参数配置一致性:本模块设置的PWM更新率需要与PX4飞控固件中配置的PWM输出更新率保持一致,否则会出现输出频率不匹配、电机控制抖动的问题。
- 输入值范围要求:输入的PWM信号为微秒单位的16位无符号整数,常规应用请保持输入值在1000~2000微秒区间内,输入值超出合理范围可能导致电调识别异常、舵机堵转等问题。
- 硬件在环仿真配置:若要在HIL仿真中使用本模块,必须勾选
Publish Outputs参数选项,不勾选该选项仅支持实机飞控,无法在仿真环境中正常输出PWM控制量。 - 采样时间匹配:模块采样时间需要匹配所选PWM更新率,例如选择400Hz更新率时,建议将采样时间设置为0.0025s,避免输出刷新不同步导致控制不平滑。
- 解锁逻辑要求:PWM输出默认锁定,仅当ARM Output输入为高电平时才会输出有效控制信号,启动电机前必须确保解锁逻辑正确,飞行结束后及时将ARM Output置低锁定输出。
- 端口对应关系:模块的输入端口顺序与PX4硬件I/O的PWM输出端口一一对应,接线时请核对端口编号,避免接错电机通道导致飞行异常。
更新日志¶
v4.00(2024-08-12): 初始版本发布,支持PX4硬件PWM信号输出,提供多通道可选PWM输出、可配置PWM更新率、输出解锁锁定控制功能,支持硬件在环仿真与实飞场景。