Main Content

将模型参数配置为全局变量以在运行时调整

默认情况下,代码生成优化可避免存储不参与入口函数接口的模型参数和大多数信号。要使参数可调和相关信号可访问,请通过显式配置方式来标识它们。

在模型 RollAxisAutopilotBasicRollMode 子系统中,将 PID 控制参数配置为在代码中显示为可调整其值的全局变量。

  1. 打开 BasicRollMode 子系统。

  2. 打开模型数据编辑器。在建模选项卡上,点击模型数据编辑器

  3. 在模型数据编辑器中,选择参数选项卡。

  4. 在过滤器字段中,键入 IntGain。模型数据编辑器会显示一个与增益参数对应的行以及一个与工作区变量对应的行。

  5. 列中,点击 IntGain。Gain 模块在模型图中高亮显示。

  6. 列中的 intGain 旁边,点击操作按钮(具有三个纵点的按钮)并选择浏览

  7. 将模型工作区变量转换为参数对象。在模型资源管理器中,右键点击 intGain,然后选择转换为参数对象

  8. 对话框窗格的代码生成选项卡上,点击在 Coder App 中配置

  9. 在代码映射编辑器的参数选项卡上,将 intGain存储类设置更改为模型默认,这表示参数对象会避免在代码生成优化期间消除变量存储。使用此设置时,该对象会将在代码映射编辑器中指定的存储类用作模型参数类别的数据默认值。

  10. 保存模型并重新生成代码。

    最小化代码生成报告窗口,以便在本教程中的后面部分进行浏览。

  11. 在代码视图中:

    1. 搜索 intGain

    2. RollAxisAutopilot.c 中,将光标放在高亮代码 P.intGainP 的上方。

    3. 要在 RollAxisAutopilot_data.c 中查看 intGain 的参数对象定义,请点击对话框中的定义代码。

您从模型生成的代码会将参数对象存储在内存中。由于您在代码映射编辑器中将模型参数类别的默认存储类设置保留为默认,因此代码生成器会确定存储格式,例如确定为结构体的字段。

接下来,使用测试框架模型和软件在环 (SIL) 仿真来比较模型仿真和生成代码的结果。