Main Content

为基本测试用例加载输入数据

您可以为模型开发测试,以在继续开发时验证关键行为是否符合预期和需求。您可以创建一个输入信号并将其加载到模型中,从而创建一个基本测试用例。输入信号定义系统在特定感兴趣的时间的输入值。通过记录仿真结果,您可以验证目标信号在每个感兴趣的点都具有预期值。

创建输入数据

对于基本测试用例,您通常希望分析尽可能少的感兴趣的点来验证您的系统行为。为了确保仿真在每个感兴趣的点上执行一个时间步,请在输入数据中包含不连续点并使用支持过零检测的模块来加载数据。使用变步长求解器进行仿真时,From File、From Workspace、Signal Editor 和 Playback 模块都支持输入数据的过零检测。

要创建输入信号,请创建一个时间值向量和一个信号值向量,用于定义每个感兴趣的点的时间和输入值。在数据中每个不连续点包含一个重复的时间和信号值。加载模块通过检查输入数据中的重复时间值来检测输入信号中的过零。

对于此示例,使用这些时间和信号数据的向量来定义基本测试用例的感兴趣的点。输入数据包括重复时间以捕获在时间 158 处的不连续性。

time = [0 1 1 5 5 8 8 10]';
vals = [0 0 2 2 2 3 3 3]';

这些时间和信号值定义输入信号,其中:

  • 在时间 01 之间,输入值为 0

  • 在时间 1,输入值从 0 跳到 2

  • 在时间 15 之间,值保持为 2

  • 在时间 58 之间,信号值线性增加到最终值 3

  • 值保持为 3,直到时间 10

为了可视化信号,对数据进行绘图。

plot(time,vals)

Figure contains an axes object. The axes object contains an object of type line.

为了加载测试用例的输入数据,您必须使用您选择的加载模块所支持的输入数据格式。

对于此示例,使用 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)

The model |FromWorkspaceTestCase|.

为模型和模块配置过零检测

为了确保仿真在每个感兴趣的点上执行一个主时间步,模型和模块必须配置为检测输入数据中的过零。模型 FromWorkspaceTestCase 使用默认模型和模块参数值,并且已进行适当的配置。

要检查或配置模型的过零检测,请执行以下操作:

  1. 建模选项卡上的设置下,点击模型设置

  2. 求解器选项卡上,展开求解器详细信息

  3. 过零控制设置为 Use local settingsEnable all。当您选择 Use local settings 时,您会为每个模块配置过零检测。当您选择 Enable all 时,无论每个模块的模块参数值如何,所有支持过零检测的模块都会启用过零检测。

  4. 点击确定

或者,使用 get_param 函数或 set_param 函数来检查或设置参数值。

get_param(mdl,"ZeroCrossControl")
ans = 
'UseLocalSettings'

要检查或配置 From Workspace 模块的过零检测,请执行以下操作:

  1. 在模型中选择模块。

  2. 点击 Simulink 编辑器右侧的属性检查器选项卡或按 Ctrl+Shift+I,打开属性检查器。

  3. 选择启用过零检测

或者,使用 get_param 函数或 set_param 函数来检查或设置参数值。

get_param(strcat(mdl,"/From Workspace"),"ZeroCross")
ans = 
'on'

运行测试用例并分析结果

对模型进行仿真。

out = sim(mdl);

您可以通过绘制信号数据或分析记录的输出数据来验证每个感兴趣的点的模型行为。

此示例中的模型使用 Dashboard Scope 模块来显示输入信号和条件化后的输出信号。通过检查图中的信号值,您可以看到模型在每个感兴趣的点上正确地将每个输入值乘以 2

The Dashboard Scope block displays the input signal and the conditioned signal.

另请参阅

| | |

相关主题