接下来将验证生成的代码执行时在数值上等效于 Simulink 中建模的算法。您使用测试框架模型在普通模式下对 RollAxisAutopilot
进行仿真,并在 SIL 模式下进行仿真,然后使用仿真数据检查器比较这两个仿真。
要测试生成的代码,您可以运行软件在环 (SIL) 和处理器在环 (PIL) 仿真。SIL 仿真在开发计算机上编译并运行生成的代码。PIL 仿真在开发计算机上交叉编译源代码,然后,PIL 仿真在目标处理器或等效的指令集仿真器上下载并运行目标代码。您可以使用 SIL 和 PIL 仿真:
- 验证代码的数值行为。
- 收集代码覆盖率和执行时间度量。
- 优化代码。
- 推动 IEC 61508、IEC 62304、ISO 26262、EN 50128 或 DO-178 认证的进展。
检查并配置测试框架模型
模型 RollAxisAutopilotHarness
通过 Model 模块引用待测模型 RollAxisAutopilot
。框架模型为引用的模型生成测试输入。还可以轻松地在普通、SIL 或 PIL 仿真模式之间切换 Model 模块。
1.通过键入以下命令打开模型 RollAxisAutopilotHarness
:
openExample('RollAxisAutopilotHarness');
2. 如果您关闭了您的 RollAxisAutopilot
模型副本,请重新打开它。
3. 在 RollAxisAutopilotHarness
模型中,右键点击 Model 模块并选择子系统和模型引用 > 刷新所选模型模块。
4. 在当前工作文件夹中保存 RollAxisAutopilotHarness
的副本。
5. 打开 RollAxisAutopilotHarness
和 RollAxisAutopilot
的“配置参数”对话框。
6. 要运行 SIL 和 PIL 仿真,请在代码生成窗格中,确认已清除参数仅生成代码。对两个模型均执行此操作。
7. 对于这两个模型,在硬件实现窗格中展开设备详细信息。确认已选择支持 long long。
8. 点击确定。然后保存模型。
在普通模式下仿真模型
在普通模式下运行框架模型,并在仿真数据检查器中捕获结果。
- 在
RollAxisAutopilotHarness
模型中,打开模型数据编辑器。在建模选项卡上,点击模型数据编辑器。 - 在模型数据编辑器中,选择信号选项卡。
- 将更改视图列表设置为“
插桩
”。 - 在数据表中,选择所有行。
- 要将信号配置为将仿真数据记录到仿真数据检查器,请选中记录数据列中的复选框。完成后,确保该列中的所有复选框都处于选中状态。
- 右键点击 Model 模块
Roll Axis Autopilot
。从上下文菜单中选择模块参数。 - 在“模块参数”对话框中,验证为仿真模式选择了“
普通
”选项。点击确定。 - 仿真
RollAxisAutopilotHarness
。 - 完成仿真后,在仿真数据检查器中查看仿真结果。如果仿真数据检查器尚未打开,请在仿真选项卡上,点击数据检查器。
- 对于最近(当前)运行,请双击运行名称字段并将运行重命名为
roll_harness: Normal mode
。 - 选择
Ail_Cmd
以绘制信号。
在 SIL 模式下仿真模型
SIL 仿真在开发计算机上生成、编译和执行代码。仿真数据检查器记录结果。
- 在
RollAxisAutopilotHarness
模型窗口中,右键点击Roll Axis Autopilot
模型模块,然后选择模块参数。 - 在“模块参数”对话框中,将仿真模式设置为
Software-in-the-loop (SIL)
,将代码接口设置为Top model
。点击确定。 - 从编译过程中排除外部代码文件。在模型
RollAxisAutopilot
的“配置参数”对话框中,将代码生成 > 自定义代码 > 代码信息 > 源文件设置为默认值,即为空。保存模型。 - 仿真
RollAxisAutopilotHarness
模型。
最小化代码生成报告窗口,以便在本教程中的后面部分进行浏览。
5. 在仿真数据检查器中,双击运行名称字段并将新运行重命名为 roll_harness: SIL mode
。
6. 选择 Ail_Cmd
以绘制信号。
7. 重新配置模型 RollAxisAutopilot
的编译过程以包括外部源文件 roll_input_data.c
和 roll_heading_mode.c
。在“模型配置参数”对话框中,将代码生成 > 自定义代码 > 代码信息 > 源文件设置为 roll_input_data.c roll_heading_mode.c
。点击应用,关闭对话框,然后保存模型。
比较仿真结果
在仿真数据检查器中:
- 点击比较选项卡。
- 在基线字段中,选择
roll_harness: Normal mode
。 - 在比较项字段中,选择
roll_harness: SIL mode
。 - 点击比较。
仿真数据检查器显示普通模式和 SIL 模式的结果相匹配。使用 SIL 和 PIL 仿真比较普通模式仿真的结果可以帮助您验证生成的应用程序是否按预期执行。