编写测试序列和测试评估
此示例说明如何使用 Test Sequence 模块和 Test Assessment 模块为变速器换档逻辑控制器创建测试框架。Test Sequence 模块改变控制器的速度输入,Test Assessment 模块验证速度是否适合档位。有关详细信息,请参阅测试序列基础知识。
创建测试序列
1.打开模型。
open_system("sf_car")
2.右键点击 shift_logic 子系统。要向菜单中添加 Simulink Test 选项,请指向选择 App,然后点击 Simulink Test 按钮
。然后,在 Simulink Test 部分中,点击“添加测试框架”按钮
。
3.在“创建测试框架”对话框的信源和信宿下:
将信源下拉菜单设置为
Test Sequence。选中添加单独的 Test Assessment 模块。
选中创建后打开框架。
有关详细信息,请参阅创建测试框架。
4.点击确定。shift_logic 子系统的测试框架将会打开。

5.双击 Test Sequence 模块。测试序列编辑器将会打开。

6.将第一步的名称从 Run 更改为 Accelerate,并添加指定初始节气门设置和速度增加方式的步骤动作:
speed = 10*ramp(et);
throttle = 100;
ramp 函数返回斜率为 1 的斜坡信号在时间 et(即该步骤的历时)处的值。对于此示例,步骤开始后特定时刻的速度是该时刻斜坡值的 10 倍。有关详细信息,请参阅测试序列编辑器。
7.右键点击 Accelerate 步骤,然后选择在后面添加步骤。将此步骤的名称从 step_1 更改为 Stop,并添加在节气门和速度等于 0: 时停止测试的步骤动作
throttle = 0;
speed = 0;
8.在符号窗格中,指向常量,然后点击
。输入 Limit 作为常量名称,然后点击添加数据。
9.指向 Limit,然后点击编辑按钮
。在常量值字段中,输入 2。点击确定。

10.右键点击第一步中的转移列,选择添加转移。输入 Accelerate 步骤的转移条件。在此示例中,当系统处于四档至少两秒时,Accelerate 会转移为 Stop。在转移列中,输入:
duration(gear == 4) >= Limit
11.在下一步列中,选择 Stop。

12.保存更改并关闭测试序列编辑器。
创建测试评估
接下来,向 Test Assessment 模块添加验证。
1.双击 Test Assessment 模块以打开编辑器。编辑器在步骤列中显示默认的 When 分解序列。有关详细信息,请参阅使用信号条件激活 verify 语句。

2.将第一步的名称从 Run 更改为 Assessments。
3.更改四个子步骤的名称并为其添加动作:
将
step_1_1重命名为Check1st。将when条件定义为gear == 1,并添加一个verify语句来计算速度是否小于45。将
step_1_2重命名为Check2nd。将when条件定义为gear == 2,并添加一个verify语句来计算速度是否小于75。右键点击
Check2nd步骤,然后点击在后面添加步骤。将新添加的步骤重命名为Check3rd。将when条件定义为gear == 3,并添加一个verify语句来计算速度是否小于105。右键点击
Check3rd步骤,然后点击在后面添加步骤。将新添加的步骤重命名为else。此步骤处理前面的when条件之外的仿真条件。在此步骤中,您无需指定任何操作。

4.保存更改并关闭测试序列编辑器。
5.在测试框架中,添加一个 Scope 模块,并将 speed、throttle 和 gear 信号连接到示波器。

6.打开 Scope 模块。在视图 > 布局中,选择三列单行布局。
7.在 Simulink® 模型中,在仿真选项卡中将 停止时间 设置为 15,然后点击运行。在 Scope 模块中查看信号数据。速度图显示速度如何增加到最大值 105。节气门图显示,在整个测试过程中,节气门值始终保持在 100。档位图显示,档位会在适当的速度下换到下一个更高的档位。档位保持在 4 档 2 秒钟后,速度和节气门降至零,档位降低。

8.在仿真数据检查器中查看 verify 语句的结果。
在 Simulink 模型中,在仿真选项卡中点击数据检查器。
点击“可视化和布局”按钮
,然后在网格下,将行设置为 3,将列设置为1。选择一个绘图,然后从左窗格中选择一个评估。对每个其他绘图和评估重复上述操作。

模型运行时,Test Assessment 模块会验证每个档位的速度是否在正确的范围内。“通过”表示速度在正确范围内。每个 verify 语句都对应一个特定档位,因此当控制器处于与在测档位不同的档位时,则表示未测试到速度。Check1st 测试评估有两个通过区域,因为在测试序列的第二步中,档位会回到一档。
另请参阅
Test Sequence | Test Assessment