跳转至

ExamplePrintFcn 模块文档

所属工具箱:Miscellaneous Utility Blocks

ExamplePrintFcn 模块外观

简介

一句话描述:展示如何通过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)

特性项
支持的数据类型 doublesingleint8int16int32uint8uint16uint32
直接馈通(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做位置融合

使用示例

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

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

请在上述路径中查看 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()的开发方法。