分析查找表边界值的覆盖率
查找表是近似函数的标准模块集。Simulink®Coverage™ 通过检查断点定义的所有网格点在仿真过程中是否被覆盖或满足来定义查找表的覆盖率。有关详细信息,请参阅 N 维查找表 (Simulink Coverage)。
您可以利用 SimulinkDesign Verifier™ 生成达到查找表边界值的测试。每个维度的最小和最大断点,也称为角点,定义查找表的边界。实现这种覆盖是航空航天和汽车领域的常见用例。
考虑这个二维查找表:

代表角点的断点是:
Dimension 1 : 10, 30 Dimension 2: 1, 3
表示此查找表边界的断点是 (10, 1)、(10, 3)、(30, 1) 和 (30,3)。与查找表边界相对应的测试满足以下覆盖率度量:
Corner 1: Input 1 < 10, Input2 < 1 Corner 2: Input 1 < 10, Input2 > 3 Corner 3: Input 1 > 30, Input2 < 1 Corner 4: Input 1 > 30, Input2 > 3
此示例利用了 SimulinkDesign Verifier 提供的模块替换框架来生成测试。
考虑控制器单元 (control logic) 和故障近似单元 (Sensor correction and Fault Redundancy) 如图所示:

control logic:这control logic状态图检查油门、速度和歧管绝对压力 (MAP) 的正常和故障模式。Sensor correction and Fault Redundancy:如果油门、速度和 MAP 值出现故障,子系统Sensor correction and Fault Redundancy使用这些表格来近似它们的值:

Throttle Estimate:查找表Thrott Estimation Table (2-D)根据速度和压力的值估计油门位置。Speed Estimate:查找表Speed Table (2-D)根据油门位置和压力的估计值来估算速度。MAP Estimate:查找表Pressure Estimate (2-D)根据车速和油门估算值来估算 MAP。
SimulinkDesign Verifier 为每个查找表生成边界值覆盖测试。为了描述结果,请考虑为 Throttle Estimate 如图所示:

油门估计查找表使用速度(传感器索引‘2’)和歧管压力(传感器索引‘4’)传感器值作为输入。
查找表有 19 个压力断点,
0.05....0.95作为corner points,以及 18 个速度断点50....1e3作为corner points。
该查找表的角点是:
Breakpoints 1 (speedVect): 50,1000 Breakpoints 2 (press): 0.05,0.95
生成的测试尝试击中表中突出显示的边界点。测试需要这些断点组合来覆盖边界值。
注意
这 Engine Speed 和 MAP 输入是断点的输入 speedVect 和 press,分别。
Corner 1: Engine Speed < 50, MAP < 0.05 Corner 2: Engine Speed < 50, MAP > 0.95 Corner 3: Engine Speed > 1000, MAP < 0.05 Corner 4: Engine Speed > 1000, MAP > 0.95
替换规则,InstrumentLUTForCornerValueCoverage 与这里提到的示例一起提供。
生成查找表边界值的测试
此示例显示如何生成查找表边界值覆盖的测试。
打开模型
open_system('sldvdemo_fuelsys_lookup_corner_value_coverage');

指定分析选项
要指定分析选项:
1.在里面 App 选项卡,点击覆盖率分析器。
2.在里面覆盖率选项卡,点击设置打开配置参数窗户。
3.扩张其他度量,然后选择查找表选项。点击确定。
4.在左侧窗格中,点击模块替换。选择应用模块替换。
5.在模块替换规则列表(按优先级顺序),将规则指定为 InstrumentLUTForCornerValueCoverage。点击确定。
6.在里面测试生成窗格,设置模型覆盖目标更改为无。
注意:由于测试生成设置,测试条件和测试目标启用后,Simulink Design Verifier 会为模块替换规则中定义的自定义测试目标生成测试。
执行分析
仅为查找表的自定义测试目标生成测试:
1.在 Design Verifier 选项卡中,点击生成测试。
2.要查看覆盖率结果,请点击仿真测试并生成模型覆盖率报告关联。
查看结果
仿真测试用例并生成覆盖率报告后,左上角和右上角被覆盖,而左下角和右下角未被覆盖。

与‘Thrott 估计表 (2-D)’查找表相关的测试目标的状态:
状态:满足的目标

从上图可知:
LUT 边界:引擎速度<50,MAP<0.05
角点:左上方
分析:此目标在时间 0.03 时得到满足(步骤 4)。
LUT 边界:引擎速度<50,MAP>0.95
角点:右上方
分析:此目标在时间 0.21 时得到满足(步骤 22)。
状态:目标无法满足

从上图可知:
LUT 边界:引擎速度>1000,MAP<0.05
角点:左下方
分析:在控制逻辑状态图中,输入速度具有以下值:
最小速度:0 最大速度:1000
状态图输入速度直接连接到根输入端口发动机速度。因此,相同的范围约束也被应用于它。由于这些最小/最大约束,发动机速度的值永远不能设置为大于 1000 的值,因此这个测试目标变得无法满足。
LUT 边界:发动机速度 > 1000,MAP > 0.95
角点:右下方
分析:“发动机速度”的值永远不能设置为大于 1000 的值,因此这个测试目标变得无法满足。
清理
为了完成示例,请关闭模型。
close_system('sldvdemo_fuelsys_lookup_corner_value_coverage',0);