使用模型切片器调试测试失败
此示例展示如何使用模型切片器调试 Simulink Test 基线和验证失败。
提供了一个预定义的基线测试用例,用于 sltestDemo_fuelsys
模型。基线是从模型的早期状态捕获的。捕获基线后,模型中引入了设计错误,导致基线测试失败。然后,使用模型切片器来调试故障并定位设计错误。
有关模型切片器的信息,请参阅 Simulink Check 文档。
步骤 1:设置工件
本节介绍如何运行测试用例并查看结果。
1.打开 sltestDemo_fuelsys
模型。
open_system('sltestDemo_fuelsys');
2.单击 APPS > 模型验证、确认和测试 > Simulink Test 以打开 Simulink Test 工具条。
3.点击测试 > Simulink Test 管理器打开测试管理器。
4.要打开现有测试文件,请从测试管理器工具条中点击打开并选择 slTestBaselineFailureEx
。
5.测试文件加载后,在测试浏览器窗格中选择新建测试用例 1。
6.点击运行。
7.新的测试结果出现在结果和工件窗格的顶部。右键单击结果并选择展开全部,这样您便可以看到基线准则结果和验证语句。
观测到四个信号失败了:air_fuel_ratio
、ego
、fuel
和 FuelModeAssertion
。此示例使用失败的 fuel
信号来说明调试工作流程。
步骤 2:进入调试会话
本节介绍如何设置模型切片器来调试失败的 fuel
信号。
1.要比较模型和基线之间的 fuel
信号,请展开基线准则结果并选择 fuel
信号旁边的单选按钮。同样,要调试验证信号,请展开验证语句并选择失败的验证信号。选择失败信号的另一种方法是从工具栏中的要调试的信号下拉列表中选择。
在绘图区域中,将模型输出与基线数据进行比较。
2.单击工具条的工具部分中的调试。请注意,仅当绘制失败的基线或验证信号时,才会启用调试选项。
DEBUG 选项卡替换了所有现有的工具条选项卡。隐藏或禁用多个测试管理器选项以创建调试环境。
3.要设置模型切片器,点击使用切片器调试。
使用 Slicer 进行调试通过以下方式准备调试会话:
重新运行测试用例并创建新的调试结果。这确保了故障在测试模型的当前状态下仍然存在。
在测试模型上启动模型切片器。
在调试结果中自动绘制所选失败信号,并设置失败信号作为起始时间点。
在模型启动时暂停仿真以继续调试。
步骤 3:使用模型切片器进行调试
本节介绍如何使用模型切片器的调试功能来关注失败的原因。
1.使用后退/前进按钮可以在仿真时间中后退或前进一步。左侧数据光标移动到当前仿真时间。通过注意每个时间戳的活动信号的模型突出显示和端口值标签的变化来观测数据依赖性的变化。
您还可以使用运行/继续/停止来运行新的仿真,或者完成或停止当前仿真。
2.在测试管理器中,点击继续到故障以继续模型仿真到下一个故障区域的开始。数据游标显示故障区域的边界。
观测失败时的这些变化:
仿真在 T = 4.81 时暂停。
数据游标相应更新。
基线和模拟输出之间的差异为 0.007。
从模型切片器突出显示中,您可以找到这种差异的原因,并看到 sltestDemo_fuelsys/To Plant/fuel
值依赖于 sltestDemo_fuelsys/To Plant
。
3.打开 sltestDemo_fuelsys/To Plant
。请注意,传播的值没有变化。
4.打开 sltestDemo_fuelsys/fuel_rate_control
。
观测到 fb_correction
值为 0。基线和模拟输出之间的差异为 0.007,这是一个较小的值。可能是 fb_correction
计算不正确。
5.打开 sltestDemo_fuelsys/fuel_rate_control/airflow_calc
,计算 fb_correction
,并观测数据依赖关系。
请注意,常数 0 正在通过 sltestDemo_fuelsys/fuel_rate_control/airflow_calc/hold integrator
开关模块传递。为了确定为什么控制端口对开关模块的求值结果为 false
,需要在模型上突出显示控制依赖关系。
6.从停靠在模型上的模型切片器对话框中的仿真时间窗口部分启用显示控制依赖关系。
请注意:
sltestDemo_fuelsys/fuel_rate_control/airflow_calc/fuel_mode
值为低,但fb_correction
仍然为零。fuel_mode
与sltestDemo_fuelsys/fuel_rate_control/airflow_calc/Enumerated Constant
进行比较,结果为 false。
枚举常量值设置为 sld_FuelModes.RICH
。它应该根据 fuel_mode
值 sld_FuelModes.LOW
进行检查。
步骤 4:纳入修复
1.通过单击 SESSION > 关闭调试退出调试会话。
2.打开模型并将 sltestDemo_fuelsys/fuel_rate_control/airflow_calc/Enumerated Constant
值更新为 sld_FuelModes.LOW
。
3.保存模型。
4.运行测试用例并查看结果。
现在,观测测试结果显示测试已通过。
功能和限制
如果您使用测试管理器将仿真模式设置为非普通模式(例如 SIL 或 PIL),则无法使用模型切片器进行调试。
如果在模型配置中设置了仿真模式,模型切片器会将模型的模式和所有引用模型更改为在普通模式下运行,然后您可以使用模型切片器进行调试。
对于不支持快速重启模式的模型,工具条的仿真部分将被禁用。使用 ANALYSIS 部分来调试故障。
仅当模型未处于仿真状态时,ANALYSIS 部分才可用,例如当您点击 SIMULATION 部分中的继续或停止时。它突出显示的是时间区域而不是时间步。要定义时间区域,请手动移动数据游标,或使用下一次失败或上一次失败。然后,您可以使用更新切片器突出显示来更新定义的时间片的模型突出显示。
结果必须从当前版本生成。