子系统的 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 框架的另一种方法是使用创建模型组件向导的测试(参见 为模型或组件生成测试和测试框架 和 创建并运行背靠背测试)。
通过在 MATLAB® 命令窗口中输入此命令来打开示例模型。
openExample('ecoder/SILPILVerificationExample', ... supportingFile='SILBlock.slx')
使用名称
controller_model
将模型的副本保存在新文件夹中,位于 MATLAB 路径上的可写位置。为模型启用信号记录。在命令提示符下输入
set_param(bdroot,SignalLogging="on",SignalLoggingName=... "SIL_signals",SignalLoggingSaveFormat="Dataset");
右键单击进入控制器端口 In1 的信号,然后选择属性。在信号属性对话框中,对于信号名称,输入
controller_model_input
。选择记录信号数据并点击确定。右键单击控制器端口 Out1 的信号输出,并选择属性。在信号属性对话框中,对于信号名称,输入
controller_model_output
。选择记录信号数据并点击确定。仿真模型。
将仿真输出中记录的信号放入工作区。在命令提示符下输入
out_data = out.get("SIL_signals"); control_in1 = out_data.get("controller_model_input"); control_out1 = out_data.get("controller_model_output");
创建软件在环测试框架。右键单击控制器子系统并选择测试框架 > 为 'Controller' 创建。
设置框架属性:
名称:
SIL_harness
信源和信宿:输入端口和输出端口
选择创建后打开框架
高级属性 – 验证模式:软件在环(SIL)|
点击确定。生成的测试框架有一个 SIL 模块。
配置并仿真 SIL 验证框架
为控制器子系统配置并仿真 SIL 验证框架。
配置测试框架以导入记录的控制器输入值。从测试框架的顶层,在模型配置参数对话框的数据导入/导出窗格中,选择输入。输入
control_in1.Values
作为输入,然后点击确定。为测试框架启用信号日志记录。在命令提示符下输入
set_param("SIL_harness",SignalLogging="on",SignalLoggingName=... "harness_signals",SignalLoggingSaveFormat="Dataset");
右键单击 SIL 模块的输出信号并选择属性。在信号属性对话框中,对于信号名称,输入
SIL_block_out
。选择记录信号数据并点击确定。仿真框架。
比较 SIL 模块和模型控制器输出
比较验证框架和控制器子系统的输出。
在测试框架模型中,在仿真选项卡的查看结果部分中,点击数据检查器
以打开仿真数据检查器。
在仿真数据检查器中,点击导入。在导入对话框中。
将导入自设置为:
Base workspace
。将导入至设置为:
New Run
。在“名称”下,选中所有复选框以从所有来源导入数据。
点击导入。
在数据检查器窗口的运行|次运行窗格中选择
SIL_block_out
和controller_model_out
信号。该图显示了两个重叠的信号。该结果表明 SIL 代码具有等效性。您可以使用 SDI 中的比较选项卡绘制信号差异,并执行更详细的分析进行验证。有关更多信息,请参阅 Compare Simulation Data。
关闭测试框架窗口。您将返回主模型。控制器模块上的徽章
表示 SIL 框架与子系统相关联。
相关主题
- 创建并运行背靠背测试
- 为模型或组件生成测试和测试框架
- 配置并运行 SIL 仿真 (Embedded Coder)
- 使用 SIL/PIL 验证早期版本生成的代码
- Generate Subsystem Code as Separate Function and Files (Simulink Coder)