以matlab自带的示例模型RollAxisAutopilot
为例进行讲解。RollAxisAutopilot
为飞机自动驾驶控制系统模型。
使用快速向导工具生成代码
- 通过键入以下命令打开模型
RollAxisAutopilot
:
openExample('RollAxisAutopilot');
- 如果 C 代码选项卡尚未打开,请在 App 库中的代码生成下,点击 Embedded Coder。
- 在 C 代码选项卡上,点击快速向导。
- 逐步执行快速向导工具的各个步骤,在生成代码步骤停止。每个步骤都会询问有关您要生成的代码的问题。对于本教程,请使用已选择的默认值。该工具根据模型验证您的选择,并显示生成代码所需的参数更改。
- 在生成代码步骤中,点击下一步应用建议的更改并从
RollAxisAutopilot
生成代码。 - 点击完成,然后返回 C 代码选项卡。在该选项卡中,您可以配置代码生成自定义,然后在模型旁边的代码视图中检查结果。
检查生成的代码
生成的代码出现在两个主文件中:RollAxisAutopilot.c
和 RollAxisAutopilot.h
。在您的 MATLAB® 当前文件夹中,RollAxisAutopilot_ert_rtw
文件夹包含这些主文件。
在您的当前文件夹中,代码生成器会创建 slprj
文件夹。此文件夹包含 rtwtypes.h
文件,该文件定义生成的代码默认使用的标准数据类型。通常,此同级文件夹包含可以或必须在多个模型之间共享的生成文件。
您从模型中生成的代码包含从应用程序代码调用的入口函数。对于基于速率的模型,这些函数包括初始化函数、执行函数以及可选的终止和重置函数。这些函数通过您控制的数据接口与应用程序代码交换数据。
点击模型图下方的代码映射 - 组件接口打开代码映射编辑器。在函数选项卡上,您可以看到代码生成器生成的各个入口函数。您可以从外部代码或您修改的生成主函数的版本调用这些生成的函数。对于基于速率的模型的基本速率单步函数和导出函数模型的单步函数,您可以自定义函数名称和参数。
查看代码生成器为模型生成的入口函数的列表。使用此视图有选择地为每个函数指定一个函数自定义模板(代码定义)和名称。对于本教程,代码生成器使用自定义模板和入口函数名称的默认(附带)设置。代码生成器会为初始化函数 RollAxisAutopilot_initialize
和执行(单步)函数 RollAxisAutopilot_step
命名。这两个入口函数都有一个 void-void
接口(它们不传递任何参数)。这些函数通过共享数据结构体访问数据。此类数据的示例包括函数与应用程序代码交换的系统级输入和输出。
要在生成的代码中查看这些入口函数,请执行下列操作:
- 在 Simulink® 编辑器窗口右侧的“代码视图”窗格中,找到搜索栏。
- 在搜索栏中,键入
RollAxisAutopilot_step
。要在生成的代码文件中查找单步函数名称的每个实例,请点击搜索建议。 - 使用右侧的箭头步进每个实例,包括
RollAxisAutopilot.c
中的单步函数定义和RollAxisAutopilot.h
中的声明。您还可以通过左上角的文件菜单查看每个文件中的搜索命中数。 - 重复这些搜索步骤,以在生成的代码中找到初始化函数
RollAxisAutopilot_initialize
。