ExamplePrintFcn 模块文档¶
所属工具箱:Miscellaneous Utility Blocks

简介¶
一句话描述:展示如何通过MATLAB Coder在PX4嵌入式环境中调用C语言打印函数,可将Simulink传入的信号数据打印到PX4 Nuttx控制台终端。
该模块属于RflySim工具链的杂项工具库,是面向PX4固件二次开发的嵌入式代码生成示例模块,用于展示MATLAB/Simulink生成嵌入式PX4代码过程中,调用外部C函数的开发方法。模块借助coder.ceval()实现对C标准库printf()函数的调用,同时通过目标环境判断保证仅在PX4嵌入式目标运行时才执行打印操作,不会干扰Simulink环境的仿真过程。
该模块的典型使用场景是PX4飞控算法开发过程中的嵌入式端调试,开发者可基于该示例修改,自定义需要打印的调试数据格式与输出方式,最终在PX4 Nuttx控制台查看飞控运行的实时调试数据。配合RflySim工具链的代码生成与固件编译流程,该模块可将调试打印逻辑直接集成到PX4固件中,调试输出会直接展示在PX4的控制台终端中,方便开发者定位嵌入式运行时的算法问题。
端口说明¶
输入端口(Inputs)¶
| 端口名 | 数据类型 | 维度 | 说明 |
|---|---|---|---|
u1 |
double |
1×1 |
需要打印的第一个整数值,由Simulink模型输入 |
u2 |
double |
1×1 |
需要打印的第二个整数值,由Simulink模型输入 |
输出端口(Outputs)¶
本模块无输出端口。
参数配置(Parameters)¶
本模块无可配参数。
参数设置说明¶
无
模块特性(Block Characteristics)¶
| 特性项 | 值 |
|---|---|
| 支持的数据类型 | double、single、int8、int16、int32、uint8、uint16、uint32 |
| 直接馈通(Direct Feedthrough) | 是 |
| 采样时间 | 继承 |
| 代码生成支持 | 是 |
数据通信协议¶
本模块不涉及网络通信。
相关模块¶
| 模块名 | 说明 |
|---|---|
CpxInt32ToVehicle |
将Simulink整数值发送给PX4机载端自定义C代码 |
VehicleDataToSimulink |
将PX4机载端自定义C代码的数值输出到Simulink仿真环境 |
GetPX4Time |
获取PX4机载端当前运行时间,单位为秒 |
ReadAirframeParams |
从PX4机载端的参数表中读取指定参数值 |
WriteAirframeParams |
向PX4机载端的参数表中写入指定参数值 |
Px4GpioSet |
控制PX4飞控硬件GPIO引脚电平 |
Px4PwmOut |
设置PX4飞控PWM输出通道的输出值 |
SimplePx4FmuI2cRead |
I2C读取外部设备数据(仅支持FMU侧) |
SimplePx4FmuI2cWrite |
I2C向外部设备写入数据(仅支持FMU侧) |
SaveInt32ToLog |
将指定的32位整型变量保存到PX4的日志文件中 |
SaveFloatToLog |
将指定的单精度浮点型变量保存到PX4的日志文件中 |
GetPx4LocalPosition |
读取PX4当前的本地位置和速度估计 |
GetPx4GlobalPosition |
读取PX4当前的全球位置和高度估计 |
GetPx4Attitude |
读取PX4当前的姿态估计和角速度 |
GetPx4InputRC |
读取PX4的RC遥控器输入数据 |
SetPx4ActuatorOutput |
直接设置PX4执行器输出值,用于自定义混控 |
SetPx4VehicleCmd |
发送PX4无人机控制指令给机载飞控 |
ViconDataSendToPX4 |
将仿真环境中获得的位姿数据发送给PX4做位置融合 |
OptiTrackDataSendToPX4 |
将OptiTrack获得的实际位姿数据发送给PX4做位置融合 |
使用示例¶
相关使用示例请参考以下路径:
请在上述路径中查看
Readme.pdf获取完整的示例说明与操作步骤。
注意事项与常见问题¶
- 初始化顺序:该模块仅在生成嵌入式代码并部署到PX4飞控硬件时生效,MATLAB/Simulink仿真环境下不会执行打印操作,请勿在仿真阶段等待该模块的打印输出。
- 数据类型匹配:默认配置中模块将输入信号作为整数传递给
printf函数,若需要打印其他类型数据,必须同步修改格式化字符串和输入信号的数据类型,否则会出现打印乱码或内存访问错误。 - 打印频率限制:请勿在高频率控制回路中频繁调用该模块打印数据,过高的打印频率会占用Nuttx控制台带宽,影响飞控核心任务的正常执行。
- 代码生成条件:模块通过
strcmp(coder.target, 'rtw')条件判断限制打印仅在代码生成阶段生效,请勿删除该条件判断,否则会导致Simulink仿真运行时报错。 - 输出查看方式:打印输出仅会显示在PX4 Nuttx控制台终端,需要通过串口或仿真终端连接飞控后查看,不会输出到MATLAB命令行窗口。
更新日志¶
v4.10(2024-08-13): 初始版本发布,提供在PX4 Nuttx嵌入式控制台打印Simulink输入信号的示例功能,演示coder.ceval()调用C语言printf()的开发方法。