为基本测试用例加载输入数据
您可以为模型开发测试,以在继续开发时验证关键行为是否符合预期和需求。您可以创建一个输入信号并将其加载到模型中,从而创建一个基本测试用例。输入信号定义系统在特定感兴趣的时间的输入值。通过记录仿真结果,您可以验证目标信号在每个感兴趣的点都具有预期值。
创建输入数据
对于基本测试用例,您通常希望分析尽可能少的感兴趣的点来验证您的系统行为。为了确保仿真在每个感兴趣的点上执行一个时间步,请在输入数据中包含不连续点并使用支持过零检测的模块来加载数据。使用变步长求解器进行仿真时,From File、From Workspace、Signal Editor 和 Playback 模块都支持输入数据的过零检测。
要创建输入信号,请创建一个时间值向量和一个信号值向量,用于定义每个感兴趣的点的时间和输入值。在数据中每个不连续点包含一个重复的时间和信号值。加载模块通过检查输入数据中的重复时间值来检测输入信号中的过零。
对于此示例,使用这些时间和信号数据的向量来定义基本测试用例的感兴趣的点。输入数据包括重复时间以捕获在时间 1
、5
和 8
处的不连续性。
time = [0 1 1 5 5 8 8 10]'; vals = [0 0 2 2 2 3 3 3]';
这些时间和信号值定义输入信号,其中:
在时间
0
和1
之间,输入值为0
。在时间
1
,输入值从0
跳到2
。在时间
1
和5
之间,值保持为2
。在时间
5
和8
之间,信号值线性增加到最终值3
。值保持为
3
,直到时间10
。
为了可视化信号,对数据进行绘图。
plot(time,vals)
为了加载测试用例的输入数据,您必须使用您选择的加载模块所支持的输入数据格式。
对于此示例,使用 From Workspace 模块创建一个 timetable
以进行加载。要创建 timetable
,时间数据必须为 duration
向量。使用 seconds
函数创建一个以秒为单位的 duration
向量。
time = seconds(time); simin = timetable(time,vals);
打开示例模型
打开模型 FromWorkspaceTestCase
。该模型包含一个 From Workspace 模块,它将数据加载到变量 simin
中。输入数据使用 Gain 模块进行条件化,从 Gain 模块输出的条件化信号连接到 Outport 模块。
mdl = "FromWorkspaceTestCase";
open_system(mdl)
为模型和模块配置过零检测
为了确保仿真在每个感兴趣的点上执行一个主时间步,模型和模块必须配置为检测输入数据中的过零。模型 FromWorkspaceTestCase
使用默认模型和模块参数值,并且已进行适当的配置。
要检查或配置模型的过零检测,请执行以下操作:
在建模选项卡上的设置下,点击模型设置。
在求解器选项卡上,展开求解器详细信息。
将过零控制设置为
Use local settings
或Enable all
。当您选择Use local settings
时,您会为每个模块配置过零检测。当您选择Enable all
时,无论每个模块的模块参数值如何,所有支持过零检测的模块都会启用过零检测。点击确定。
或者,使用 get_param
函数或 set_param
函数来检查或设置参数值。
get_param(mdl,"ZeroCrossControl")
ans = 'UseLocalSettings'
要检查或配置 From Workspace 模块的过零检测,请执行以下操作:
在模型中选择模块。
点击 Simulink 编辑器右侧的属性检查器选项卡或按 Ctrl+Shift+I,打开属性检查器。
选择启用过零检测。
或者,使用 get_param
函数或 set_param
函数来检查或设置参数值。
get_param(strcat(mdl,"/From Workspace"),"ZeroCross")
ans = 'on'
运行测试用例并分析结果
对模型进行仿真。
out = sim(mdl);
您可以通过绘制信号数据或分析记录的输出数据来验证每个感兴趣的点的模型行为。
此示例中的模型使用 Dashboard Scope 模块来显示输入信号和条件化后的输出信号。通过检查图中的信号值,您可以看到模型在每个感兴趣的点上正确地将每个输入值乘以 2
。
另请参阅
From Workspace | Signal Editor | Playback | From File