主要内容

仿真并验证生成的 C 代码

R2026b

在教程的此步骤中,您将验证在执行时生成的代码在数值上等效于 Simulink® 中建模的算法。您使用测试框架模型在普通模式下对 ComponentDeploymentFcn 进行仿真,并在 SIL 模式下进行仿真,然后使用仿真数据检查器比较这两个仿真。

要测试生成的代码,您可以运行软件在环 (SIL) 和处理器在环 (PIL) 仿真。SIL 仿真在开发计算机上编译并运行生成的代码。PIL 仿真在开发计算机上交叉编译源代码,然后,PIL 仿真在目标处理器或等效的指令集仿真器上下载并运行目标代码。您可以使用 SIL 和 PIL 仿真:

  • 验证仿真和代码执行结果在数值上是否等效。

  • 收集代码覆盖率和执行时间度量。

  • 符合 IEC 61508、IEC 62304、ISO 26262、EN 50128 或 DO-178 认证目标。

本教程说明如何使用测试框架 ComponentDeploymentFcnHarness 来验证组件模型 ComponentDeploymentFcn 的仿真和代码执行结果是否等效。但是,如果您有 Simulink Test™ 许可证,您可以使用测试管理器从组件模型中创建一个测试框架。请参阅创建或导入测试框架并选择属性 (Simulink Test)。

检查并配置测试框架模型

模型 ComponentDeploymentFcnHarness 通过使用 Model 模块引用待测模型 ComponentDeploymentFcn。框架模型为引用的模型生成测试输入。还可以轻松地在普通、SIL 和 PIL 仿真模式之间切换 Model 模块。

  1. 在当前工作文件夹中保存模型 ComponentDeploymentFcn 和 ComponentDeploymentFcnHarness 的副本。

  2. 打开模型 ComponentDeploymentFcnHarness。

    openExample('ComponentDeploymentFcnHarness');

    Test harness model for component model ComponentDeploymentFcn.

  3. 打开模型 ComponentDeploymentFcn。

    openExample('ComponentDeploymentFcn');
  4. 在 ComponentDeploymentFcnHarness 模型中,右键点击 Model 模块,然后点击“刷新”按钮 。

  5. 通过调整“配置参数”对话框的数据导入/导出窗格中的以下模型配置参数设置,将两个模型配置为与仿真数据检查器结合使用:

    • 选择状态。

    • 将格式设置为数据集。

    • 选择在仿真数据检查器中记录所记录的工作区数据。

  6. 点击确定。然后保存模型。

在普通模式下仿真模型

在普通模式下运行测试框架模型,并在仿真数据检查器中捕获结果。

  1. 在模型 ComponentDeploymentFcnHarness 中,右键点击 ComponenDeploymentFcn 的 Model 模块,然后点击“模块参数”按钮 。

  2. 在“模块参数”对话框中,验证参数仿真模式设置为普通。点击确定。

  3. 仿真 ComponentDeploymentFcnHarness。

  4. 完成仿真后,在仿真数据检查器中查看仿真结果。如果仿真数据检查器尚未打开,请在仿真选项卡上,点击数据检查器。

  5. 对于最近(当前)运行,在属性窗格中,双击运行字段,然后将运行重命名为 ComponentDeploymentFcn: Normal mode。

  6. 将仿真数据检查器可视化更改为迷你图。点击可视化图标并点击迷你图。然后,在过滤信号窗格中,展开状态节点,然后选择 UnitDelay (10)。

  7. 在“多维信号”对话框中,选择转换为通道。

  8. 展开 UnitDelay (10) 节点。

  9. 选择一个或多个 UnitDelay 信号线。仿真数据检查器显示选定通道的迷你图。

此图窗显示 UnitDelay (1) 和 UnitDelay (2) 的迷你图。

在 SIL 模式下仿真模型

SIL 仿真在您的开发计算机上编译并执行生成的代码。仿真数据检查器记录结果。

  1. 在 ComponentDeploymentFcnHarness 模型窗口中,右键点击 ComponenDeploymentFcn Model 模块,然后点击“模块参数”按钮 。

  2. 在“模块参数”对话框中,进行以下参数更改:

    • 将仿真模式设置为软件在环(SIL)。

    • 将代码接口设置为顶层模型。

    点击确定。

  3. 对于组件模型 ComponenDeploymentFcn,在“配置参数”对话框中,进行以下模型配置参数更改:

    • 在代码生成窗格中,将工具链设置为自动定位已安装的工具链。

    • 在代码生成 > 优化窗格中,清除删除内部数据零初始化。

    保存配置更改。

  4. 仿真 ComponentDeploymentFcnHarness 模型。“诊断查看器”面板打开并显示编译和代码生成状态。如果代码生成报告窗口打开,请将其最小化,以便稍后在本教程中浏览。

  5. 在仿真完成后,在仿真数据检查器的属性窗格中,双击运行字段,然后将新运行重命名为 ComponentDeploymentFcn: SIL mode。

  6. 将仿真数据检查器可视化更改为迷你图。点击可视化图标并点击迷你图。然后,在过滤信号窗格中,展开状态节点,然后选择 delay (10)。

  7. 在“多维信号”对话框中,选择转换为通道。

  8. 展开 delay (10) 节点。

  9. 选择一个或多个 UnitDelay 信号线。仿真数据检查器显示选定通道的迷你图。

比较仿真结果

在仿真数据检查器中:

  1. 点击比较选项卡。

  2. 从基线列表中,选择 ComponentDeploymentFcn: Normal mode。

  3. 从比较项列表中,选择 ComponentDeploymentFcn: SIL mode。

  4. 点击比较。

Simulation Data Inspector comparison of normal mode and SIL mode results.

此仿真数据检查器显示普通模式和 SIL 模式的结果相匹配。使用 SIL 和 PIL 仿真比较普通模式仿真的结果可以帮助您验证生成的代码是否按预期执行。

您也可以通过 SIL/PIL 管理器使用验证从模型生成的代码的简化工作流。

接下来,我们将了解可用于部署生成的代码的方法。