仿真和验证 C 代码
在教程的此步骤中,您将验证在执行时代码在数值上等效于 Simulink® 中建模的算法。您使用测试框架模型在普通模式下对 RollAxisAutopilot
进行仿真,并在 SIL 模式下进行仿真,然后使用仿真数据检查器比较这两个仿真。
要测试生成的代码,您可以运行软件在环 (SIL) 和处理器在环 (PIL) 仿真。SIL 仿真在开发计算机上编译并运行生成的代码。PIL 仿真在开发计算机上交叉编译源代码,然后,PIL 仿真在目标处理器或等效的指令集仿真器上下载并运行目标代码。您可以使用 SIL 和 PIL 仿真:
验证代码的数值行为。
收集代码覆盖率和执行时间度量。
符合 IEC 61508、IEC 62304、ISO 26262、EN 50128 或 DO-178 认证目标。
本教程说明如何使用测试框架 RollAxisAutopilotHarness
来验证组件模型 RollAxisAutopilot
的仿真和代码执行结果是否等效。但是,如果您有 Simulink Test™ 许可证,您可以使用测试管理器从组件模型中创建一个测试框架。请参阅创建或导入测试框架并选择属性 (Simulink Test)。
检查并配置测试框架模型
模型 RollAxisAutopilotHarness
通过 Model 模块引用待测模型 RollAxisAutopilot
。框架模型为引用的模型生成测试输入。还可以轻松地在普通、SIL 或 PIL 仿真模式之间切换 Model 模块。
在当前工作文件夹中保存模型
RollAxisAutopilot
和RollAxisAutopilotHarness
的副本。打开模型
RollAxisAutopilotHarness
。openExample('RollAxisAutopilotHarness');
打开模型
RollAxisAutopilot
。openExample('RollAxisAutopilot')
在
RollAxisAutopilotHarness
模型中,右键点击 Model 模块并选择子系统和模型引用 > 刷新所选模型模块。对于这两种模型,调整以下模型配置参数设置:
在代码生成窗格上,清除仅生成代码。
在硬件实现窗格上,展开设备详细信息。选择支持 long long。
点击确定。然后保存模型。
在普通模式下仿真模型
在普通模式下运行框架模型,并在仿真数据检查器中捕获结果。
在
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
模型。最小化代码生成报告窗口,以便在本教程中的后面部分进行浏览。
在仿真数据检查器中,双击运行名称字段并将新运行重命名为
roll_harness: SIL mode
。选择
Ail_Cmd
以绘制信号。重新配置模型
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 仿真比较普通模式仿真的结果可以帮助您验证生成的应用程序是否按预期执行。
您也可以通过 SIL/PIL 管理器使用验证从模型生成的代码的简化工作流。
接下来,我们将了解可用于部署生成的代码的方法。