Main Content

本页采用了机器翻译。点击此处可查看英文原文。

子系统的 SIL 验证

此示例通过确保软件在环(SIL) 代码的输出与模型子系统的输出匹配来展示子系统验证。您生成 SIL 验证框架,收集仿真结果,并使用仿真数据检查器比较结果。您可以应用类似的过程进行处理器在环(PIL)验证。

通过 SIL 仿真,您可以在主机上验证生产源代码的行为。通过 PIL 仿真,您可以验证您打算在生产中部署的编译目标代码。您可以在真实目标硬件或指令集仿真器上运行 PIL 目标代码。

如果您拥有 Embedded Coder® 许可证,您可以创建 SIL 或 PIL 模式的测试框架进行模型验证。您可以将 SIL 或 PIL 模块结果与模型结果进行比较并收集度量,包括执行时间和模型代码覆盖率。您无法收集 SIL 或 PIL 区模块的覆盖率。使用测试框架执行 SIL 和 PIL 验证,您可以:

  • 使用你的模型来管理框架。生成测试框架会生成 SIL 模块。测试框架与正在验证的组件相关联。您可以将测试框架与主模型一起保存。

  • 使用内置工具执行这些测试-设计-测试工作流程:

    • 检查 SIL 或 PIL 模块等效性

    • 将 SIL 或 PIL 模块更新为最新模型设计

  • 使用测试管理器和仿真数据检查器查看并比较记录的数据和信号。

当您创建等效性测试来比较普通和 SIL 或 PIL 仿真模式时,将使用单独的测试框架来测试每种模式。但是,如果您正在对原子子系统或 Model 模块进行等效性测试,则可以使用单个测试框架进行普通和 SIL 或 PIL 仿真。有关何时使用单个框架进行原子子系统等效性测试的信息,请参阅 为模型或组件生成测试和测试框架

这个例子模拟了一个闭环控制器-工厂系统。控制器调节工厂的产量。

为控制器创建 SIL 验证框架

使用从闭环控制器工厂系统记录的数据创建 SIL 验证框架。控制器子系统调节工厂的输出。您需要一个 Embedded Coder 许可证才能完成此示例。创建 SIL 框架的另一种方法是使用创建模型组件向导的测试(参见 为模型或组件生成测试和测试框架创建并运行背靠背测试)。

  1. 通过在 MATLAB® 命令窗口中输入此命令来打开示例模型。

    openExample('ecoder/SILPILVerificationExample', ...
                 supportingFile='SILBlock.slx')

    This image shows the SILBlock model.

  2. 使用名称 controller_model 将模型的副本保存在新文件夹中,位于 MATLAB 路径上的可写位置。

  3. 为模型启用信号记录。在命令提示符下输入

    set_param(bdroot,SignalLogging="on",SignalLoggingName=...
    "SIL_signals",SignalLoggingSaveFormat="Dataset");
  4. 右键单击进入控制器端口 In1 的信号,然后选择属性。在信号属性对话框中,对于信号名称,输入 controller_model_input。选择记录信号数据并点击确定

  5. 右键单击控制器端口 Out1 的信号输出,并选择属性。在信号属性对话框中,对于信号名称,输入 controller_model_output。选择记录信号数据并点击确定

  6. 仿真模型。

  7. 将仿真输出中记录的信号放入工作区。在命令提示符下输入

    out_data = out.get("SIL_signals");
    control_in1 = out_data.get("controller_model_input");
    control_out1 = out_data.get("controller_model_output");
  8. 创建软件在环测试框架。右键单击控制器子系统并选择测试框架 > 为 'Controller' 创建

  9. 设置框架属性:

    • 名称SIL_harness

    • 信源和信宿输入端口输出端口

    • 选择创建后打开框架

    • 高级属性 – 验证模式软件在环(SIL)|

    点击确定。生成的测试框架有一个 SIL 模块。

    Test harness for Controller subsystem

配置并仿真 SIL 验证框架

为控制器子系统配置并仿真 SIL 验证框架。

  1. 配置测试框架以导入记录的控制器输入值。从测试框架的顶层,在模型配置参数对话框的数据导入/导出窗格中,选择输入。输入 control_in1.Values 作为输入,然后点击确定

  2. 为测试框架启用信号日志记录。在命令提示符下输入

    set_param("SIL_harness",SignalLogging="on",SignalLoggingName=...
    "harness_signals",SignalLoggingSaveFormat="Dataset");
  3. 右键单击 SIL 模块的输出信号并选择属性。在信号属性对话框中,对于信号名称,输入 SIL_block_out。选择记录信号数据并点击确定

  4. 仿真框架。

比较 SIL 模块和模型控制器输出

比较验证框架和控制器子系统的输出。

  1. 在测试框架模型中,在仿真选项卡的查看结果部分中,点击数据检查器 以打开仿真数据检查器。

  2. 在仿真数据检查器中,点击导入。在导入对话框中。

    • 导入自设置为:Base workspace

    • 导入至设置为:New Run

    • 在“名称”下,选中所有复选框以从所有来源导入数据。

  3. 点击导入

  4. 在数据检查器窗口的运行|次运行窗格中选择 SIL_block_outcontroller_model_out 信号。

    该图显示了两个重叠的信号。该结果表明 SIL 代码具有等效性。您可以使用 SDI 中的比较选项卡绘制信号差异,并执行更详细的分析进行验证。有关更多信息,请参阅 Compare Simulation Data

    Plot comparing test harness and controller subsystem output

  5. 关闭测试框架窗口。您将返回主模型。控制器模块上的徽章 表示 SIL 框架与子系统相关联。

相关主题