文档

代码生成验证流程

使用测试束中的植物模型为控制器模型执行代码生成验证。

这个例子展示了如何使用测试工具、测试序列块和测试管理器为模型执行代码生成验证(CGV)。切换到有写权限的目录。

mdl =“sltestFuelRateControlExample”;open_system (mdl);

模型描述

本例使用汽油发动机的燃油率控制器模型。控制器使用来自系统的四个传感器来确定适当的燃油率。系统中使用的四个传感器分别是节气门角度、速度、EGO和歧管绝对压力[MAP]。

该模型使用三个子系统来计算燃料率使用传感器输入:控制逻辑气流calc,fuel_calc。核心控制逻辑在名为Stateflow®的图表中实现control_logic。控制逻辑处理单传感器故障和发动机超速保护。如果单个传感器故障,则继续运行,但空气/燃料混合物更丰富,以更高的排放为代价,使运行更平稳。如果多个传感器失效,作为安全措施,发动机会关闭,因为空气/燃料比无法可靠控制。

该模型估计气流速率,并将估计值乘以所需比率的倒数得到燃料速率。

打开测试线束

一个名为fuel_rate_control_cgv已为整个模型创建。可以通过单击模型画布右下角的透视图拉出图标并选择fuel_rate_control_cgv缩略图。在单击图标之前,确保模型的顶层在视图中。另外,可以使用以下API打开挽具:

sltest.harness.open (mdl“fuel_rate_control_cgv”);

植物建模

测试束被建模为一个带有测试序列块的闭环测试,以驱动燃油率控制器。计算出的fuel_rate该控制器的输出是用来驱动一种型号的汽油机。燃油率与实际空气流量相结合发动机气体动力学子系统,以确定最终的混合比例,因为在排气。从氧传感器到测试序列块的反馈提供了速率估计的闭环调整,以保持理想的混合比例。

请注意,工厂已经在测试装置中建模,而不是在主模型中。主模型没有多余的杂乱,因此只需对模型进行最小的更改,就可以轻松地为ECU构建代码。

传感器故障建模

名为Test Sequence的块序列传感器故障模拟各种传感器故障和发动机超速情况。它接受来自工厂的反馈,并用传感器数据驱动控制器。这种建模模式允许Test Sequence块控制Controller块接收到的反馈信号,并作为创建测试用例的画布。打开Test Sequence块以查看建模的测试场景。

open_system (“fuel_rate_control_cgv/序列传感器故障”);

测试场景

在模拟的前10秒,测试处于稳定模式,其中来自工厂的闭环输入被传递到控制器。油门和速度输入被设置为标称值,在控制器的正常工作范围内。的Stabilize_EngineStep对该状态建模。

测试然后通过以下模式:

  1. Test_Overspeed:油门从30升到700

  2. Reset_To_Normal_Speed:油门降至400

  3. Test_EGO_Fault:模拟故障3秒,然后恢复正常状态

  4. Test_Throttle_Fault:模拟故障3秒,然后恢复正常状态

  5. Test_Speed_Fault:模拟故障3秒,然后恢复正常状态

  6. Test_Map_Fault:模拟故障3秒,然后恢复正常状态

  7. Test_Multi_Fault:模拟MAP和EGO故障3秒

  8. Reset_MAP:归一化MAP传感器,仅模拟EGO故障3秒

  9. Reset_To_Normal:终止测试

测试评估

测试序列块评估控制器类建模的各种测试用例的控制器输出序列传感器故障块。以下评估是建模的:

  1. 断言加油模式已进入热身前4.8秒的模式

  2. 断言加油模式切换到超速实际速度超过628时的模式

  3. 断言加油模式不在Single_Failure多个传感器故障时的模式。

open_system (“fuel_rate_control_cgv /评估控制器”);

运行模拟

模拟测试装置,观察燃油率和空燃比信号。注意,在模拟过程中没有触发断言,这表明建模的所有评估都在评估控制器通过。

open_system (“fuel_rate_control_cgv /范围”);sim卡(“fuel_rate_control_cgv”);

在测试管理器中配置背靠背测试

作为控制器系统的代码生成验证(CGV)的一部分,断言控制器的功能行为在正常和软件在环(SIL)仿真模式下是相同的是很重要的。测试管理器用于执行此验证。

使用函数sltestmgr打开测试管理器。

加载模拟CGV测试的示例测试套件:

sltest.testmanager.load (fullfile (matlabroot,“工具箱”“金宝appsimulinktest”“金宝appsimulinktestdemos”“sltestFuelRateControlComparisonTestSuite.mldatx”));

对测试用例建模

在测试管理器中配置了等效测试,以便在正常和SIL模式下模拟控制器,并比较这两次运行的数值结果。中单击测试层次结构的不同节点来探索测试用例的结构测试浏览器

运行测试用例

在测试管理器中运行测试。

Cgvresult = sltest.testmanager.run;

或者,在测试管理器中,选择CGV Test1节点。测试浏览器窗格,然后单击运行在工具条中。通过/失败结果可在结果和工件窗格。

创建报表

然后可以生成一个报告来查看等效性测试的结果。使用以下命令生成报告。控件的API创建报表后,还可以启动报表LaunchReport选项设置为真正的

sltest.testmanager.report (cgvresult“cgvresult.zip”“IncludeTestResults”int32 (0));
close_system (mdl 0);清晰的mdl;sltest.testmanager.clear;sltest.testmanager.clearResults;