使用模型切片器调试等效性测试失败
此示例展示了如何通过使用 Model Slicer 突出显示功能依赖关系来调试 Simulink Test 等效性失败。有关更多信息,请参阅 Highlight Functional Dependencies (Simulink Check)。示例文件包括与 sldemo_fuelsys_dd_controller
模型一起使用的预定义等效性检验。示例测试用例比较了普通模式和软件在环(SIL)模式下的模型仿真。该模型存在数值差异。在此示例中,您使用 Model Slicer 来追踪故障并识别差异。有关调试测试失败的更多信息,请参阅 使用模型切片器调试测试失败 的功能和限制部分。
设置工件
运行测试用例并查看结果。
1.打开 sldemo_fuelsys_dd_controller
模型:
open_system('sldemo_fuelsys_dd_controller');
2.通过来自 airflow_calc
和 fuel_calc
子系统以及 Stateflow 图 control_logic
的信号记录输出,以在分析后生成可视化效果。要记录信号,点击该信号,然后在操作栏中点击“记录选定的信号”。
3.在应用选项卡的模型验证、确认和测试部分中,点击 Simulink Test 以打开 Simulink Test 工具条。
4.在测试选项卡中,点击 Simulink Test 管理器以打开测试管理器。
5.要打开测试文件,点击打开并从示例文件夹中选择 slTestEquivalenceFailureEx
。
6.测试文件加载后,在测试浏览器窗格中选择新建测试用例 1。
7.点击运行。
8.新的测试结果出现在结果和工件窗格中。右键单击结果并选择展开全部以查看等效性准则结果和验证语句 1 部分。
观测到只有一个信号失败:airflow_calc
。如果您看不到故障,请考虑在单击“仿真”选项卡中的模型设置后,从硬件和实施窗格中将设备详细信息从 32 位更改为 64 位。
进入调试会话
设置模型切片器来调试失败的 airflow_calc
信号。
1.要比较不同仿真模式下的 airflow_calc
信号,请选择 airflow_calc
信号旁边的单选按钮。选择失败信号的另一种方法是从工具栏中的要调试的信号下拉列表中选择。
在绘图区域中,比较各个仿真的输出。
2.在工具部分中,点击调试。请注意,您必须绘制失败的等效性或验证信号才能启用调试按钮。
调试选项卡打开并隐藏。调试选项卡隐藏了多个测试管理器选项。
3.要设置模型切片器,点击使用切片器调试。
Model Slicer 通过以下方式准备调试会话:
重新运行测试用例并创建新的调试结果。此操作可确保故障在测试模型的当前状态下仍然存在。
在测试模型上启动模型切片器。
在调试结果中自动绘制选定的失败信号,并设置失败信号作为起始时间点。
在模型启动时暂停仿真以继续调试。
使用模型切片器进行调试
使用模型切片器的调试功能找出失败的原因。
1.使用后退或前进按钮可在仿真时间中后退或前进一步。左侧数据光标移动到当前仿真时间。通过注意每个时间戳的活动信号的模型突出显示和端口值标签的变化来观测数据依赖性的变化。
您还可以使用运行、继续或停止按钮分别来运行、完成或停止当前仿真。
2.在测试管理器中,点击继续到故障以继续模型仿真到下一个故障区域的开始。数据游标显示故障区域的边界。
3.观测失败时的这些变化:
仿真在
T = 4.81
处暂停。数据游标会相应更新。
从模型切片器突出显示中,您可以观测到导致错误的模型分支。
请注意,常数 0 穿过 sldemo_fuelsys_dd_controller/airflow_calc/hold integrator
Switch 模块。要确定控制端口为何计算为 false
,请突出显示模型中的控制依赖关系。
4.从模型切片器对话框窗格中的仿真时间窗口部分启用显示控制依赖关系。观测模型切片器突出显示的可能造成差异的区模块链。为了进一步直观地了解仿真模式之间的数值差异,请结束调试会话,记录活动链中的信号,然后再次调试模型。
完善调试结果
1.单击会话 > 关闭调试退出调试会话。
2.打开模型并记录之前观测路径中的所有信号。
3.保存模型。
4.重复使用模型切片器调试部分中的步骤 1 至 3。
观测是否根据仿真模式在 MATLAB 功能模块中设置枚举常数值。
纳入修复
1.通过单击 SESSION > 关闭调试退出调试会话。
2.打开模型并更新 sldemo_fuelsys_dd_controller/airflow_calc/MATLAB function
以返回相同的值,而不管仿真模式如何。
3.保存模型。
4.运行测试用例并查看结果。
观测测试结果,测试结果通过。