此示例通过确保软件在环(SIL)代码的输出与模型子系统的输出相匹配来显示子系统验证。生成SIL验证线束,收集仿真结果,并使用仿真数据检查器比较结果。您可以为处理器在环(PIL)验证应用类似的过程。
通过SIL模拟,您可以验证主机上生产源代码的行为。此外,通过PIL模拟,您可以验证要在生产中部署的已编译目标代码。您可以在实际目标硬件或指令集模拟器上运行PIL目标代码。
如果你有嵌入式编码器®许可证,您可以在SIL或PIL模式下创建一个测试工具以进行模型验证。您可以将SIL或PIL块结果与模型结果进行比较,并收集指标,包括执行时间和代码覆盖率。使用测试线束进行SIL和PIL验证,可以:
使用您的模型管理线束。生成测试线束将生成SIL块。测试线束与正在验证的部件相关联。可以将测试线束与主模型一起保存。
为这些测试-设计-测试工作流使用内置工具:
检查SIL或PIL块等效性
更新SIL或PIL块到最新的模型设计
使用测试管理器和模拟数据检查器查看和比较记录的数据和信号。
本示例对闭环控制器设备系统进行建模。控制器调节设备输出。
使用从控制器子系统模型模拟中记录的数据创建SIL验证工具。对于本示例,您需要一个Embedded Coder许可证。另一种创建SIL工具的方法是使用“为模型组件创建测试向导”(参见为零部件或模型生成测试和测试线束和创建并运行背靠背测试).
通过输入打开示例模型
rtwdemo_sil_block
使用名称保存模型的副本controller_model
在新文件夹中,位于MATLAB路径上的可写位置。
为模型启用信号记录。在命令提示下,输入
设置参数(bdroot、'SignalLogging'、'on'、'SignalLoggingName'、…'SIL_signals'、'SignalLoggingSaveFormat'、'Dataset')
右键单击进入控制器端口In1的信号,然后选择性质. 在信号特性对话框,用于信号名,输入controller_model_input
.挑选测井信号数据点击好吧.
右键单击控制器端口Out1的信号输出,然后选择性质. 在信号特性对话框,用于信号名,输入controller_model_output
.挑选测井信号数据点击好吧.
模拟模型。
将模拟输出中记录的信号输入工作区。在命令提示下,输入
out_data=out.get(“SIL_信号”);control_in1=out_data.get('controller_model_input');control_out1=out_data.get('controller_model_output');
创建软件在环测试线束。右键单击控制器子系统并选择测试线束>创建测试线束(控制器).
设置线束属性:
名称:SIL_线束
源和汇:轮廓尺寸
和外港
挑选创建后打开线束
高级属性–验证模式:软件在环(SIL)
点击好吧. 由此产生的测试线束具有SIL块。
配置并模拟控制器子系统的SIL验证线束。
配置测试工具以导入记录的控制器输入值。来自模型中测试工具的顶层配置参数对话框中的数据导入/导出窗格中,选择输入.输入control_in1。值
作为输入,单击好吧.
启用测试线束的信号记录。在命令提示下,输入
设置参数('SIL_线束'、'SignalLogging'、'on'、'SignalLoggingName'、…'harness_signals'、'SignalLoggingSaveFormat'、'Dataset')
右键单击SIL块的输出信号并选择性质. 在信号特性对话框,用于信号名,输入屏蔽
.挑选测井信号数据点击好吧.
模拟利用。
比较验证装置和控制器子系统的输出。
在测试线束模型中,在审查结果部分,单击数据检查打开模拟数据检查器。
在模拟数据检查器中,单击进口. 在进口对话框。
设置进口自致:基本工作空间
.
设置导入致:新运行
.
在下面要导入的数据,选择信号名从所有源导入数据。
点击进口.
选择屏蔽
和控制器模型输出
信号的运行“数据检查器”窗口的窗格。
图表显示两个重叠的信号。这一结果表明SIL代码是等效的。您可以使用比较选项卡,并执行更详细的分析以进行验证。有关更多信息,请参见比较模拟数据.
关闭测试线束窗口。返回到主模型。徽章在控制器块上显示SIL线束与子系统关联。