Help

Welcome!

This community is for professionals and enthusiasts of our products and services.
Share and discuss the best content and new marketing ideas, build your professional profile and become a better marketer together.

0

matlab Simulink:比较模型仿真和生成代码的结果

在教程的此步骤中,您将验证在执行时代码在数值上等效于 Simulink® 中建模的算法。您使用测试框架模型在 Normal 模式下对 rtwdemo_roll 进行仿真,并在 SIL 模式下进行仿真,然后使用 Simulation Data Inspector 比较这两个仿真。

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

  • 验证代码的数值行为。

  • 收集代码覆盖率和执行时间指标。

  • 优化代码。

  • 推动 IEC 61508、IEC 62304、ISO 26262、EN 50128 或 DO-178 认证的进展。

检查并配置测试框架模型

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

  1. 打开模型 rtwdemo_roll_harness。如果您关闭了您的 rtwdemo_roll 模型副本,请重新打开它。

  2. 在 rtwdemo_roll_harness 模型中,右键点击 Model 模块并选择 Subsystem & Model Reference > Refresh Selected Model Block

  3. 在当前工作文件夹中保存 rtwdemo_roll_harness 的副本。

  4. 打开 rtwdemo_roll_harness 和 rtwdemo_roll 的 Configuration Parameters 对话框。

  5. 对于这两个模型,在 Code Generation 窗格中,确认已清除参数 Generate code only 以运行 SIL 和 PIL 仿真。

  6. 对于这两个模型,在 Hardware Implementation 窗格中展开 Device details。确认已选择 Support long long

  7. 点击 OK。然后保存模型。

在 Normal 模式下仿真模型

在 Normal 模式下运行框架模型,并在 Simulation Data Inspector 中捕获结果。

  1. 在 rtwdemo_roll_harness 模型中,选择 View > Model Data Editor

  2. 在 Model Data Editor 中,选择 Signals 选项卡。

  3. 将 Change view 列表设置为 “Instrumentation”。

  4. 在数据表中,选择所有行。

  5. 要将信号配置为将仿真数据记录到 Simulation Data Inspector,请选中 Log Data 列中的复选框。完成后,确保该列中的所有复选框都处于选中状态。

  6. 右键点击 Model 模块 Roll Axis Autopilot。从上下文菜单中选择 Block Parameters

  7. 在 Block Parameters 对话框中,验证为 Simulation mode 选择了 “Normal” 选项。点击 OK

  8. 仿真 rtwdemo_roll_harness

  9. 完成仿真后,在 Simulation Data Inspector 中查看仿真结果。如果 Simulation Data Inspector 尚未打开,请在 Simulink Editor 中点击 Simulation Data Inspector 按钮 

  10. 对于最近(当前)运行,请双击运行名称字段并将运行重命名为 roll_harness: Normal mode

  11. 选择 Ail_Cmd 以绘制信号。

在 SIL 模式下仿真模型

SIL 仿真在开发计算机上生成、编译和执行代码。Simulation Data Inspector 记录结果。

  1. 在 rtwdemo_roll_harness 模型窗口中,右键点击 Roll Axis Autopilot 模型模块,然后选择 Block Parameters

  2. 在 Block Parameters 对话框中,将 Simulation mode 设置为 Software-in-the-loop (SIL),将 Code Interface 设置为 Top model。点击 OK

  3. 从编译过程中排除外部代码文件。在模型 rtwdemo_roll 的 Configuration Parameters 对话框中,将 Code Generation > Custom Code > Additional build information > Source files 设置为默认值,即为空。保存模型。

  4. 仿真 rtwdemo_roll_harness 模型。

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

  5. 在 Simulation Data Inspector 中,双击运行名称字段并将新运行重命名为 roll_harness: SIL mode

  6. 选择 Ail_Cmd 以绘制信号。

  7. 重新配置模型 rtwdemo_roll 的编译过程以包括外部源文件 roll_input_data.c 和 roll_heading_mode.c。在 Model Configuration Parameters 对话框中,将 Code Generation > Custom Code > Additional build information > Source files 设置为 roll_input_data.c roll_heading_mode.c。点击 Apply,关闭对话框,然后保存模型。

比较仿真结果

在 Simulation Data Inspector 中:

  1. 点击 Compare 选项卡。

  2. 在 Baseline 字段中,选择 roll_harness: Normal mode

  3. 在 Compare To 字段中,选择 roll_harness: SIL mode

  4. 点击 Compare

Simulation Data Inspector 显示 Normal 模式和 SIL 模式的结果相匹配。使用 SIL 和 PIL 仿真比较 Normal 模式仿真的结果可以帮助您验证生成的应用程序是否按预期执行。

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

Avatar
Discard