当前位置:首页-文章-Matlab/Simulink测试-正文

Simulink 需求关联与模型测试

模型的开发往往是根据需求进行,Simulink Requirements与Simulink Test集成了需求与测试功能,以验证在需求给定的要求下,模型的性能。

这是一个简单的PI控制器模型,且PI参数都已经调整完毕。我拥有测试输入数据(error)与测试输出数据(out),接下来的操作类似于对训练好的神经网络进行验证。

Simulink 需求关联与模型测试 - 第1张

首先,要确定是对整个模型进行测试还是仅对一个模块(子系统)进行测试。接下来主要讲对一个模块(子系统)进行测试。对于整个模型的测试,可以不需要Harness,直接引入输入端,调用测试用例即可。

1 单个子系统的测试

这里我要测试我的控制器能否在测试输入下产生测试输出。

1.1 Test Harness的产生

首先要把子系统从模型中隔离出来,我们右击controller这个模块,然后点击Test Harness、 Create for ‘controller’。弹出的界面,可以不进行更改,点击 ok 即可,得到以下测试模型。

Simulink 需求关联与模型测试 - 第2张

接着,点击模型工具栏的Analysis、Test Manager,弹出测试管家窗口,点击左上角 New 、 Test File 来新建测试文件,这里我们取名为demo

Simulink 需求关联与模型测试 - 第3张

在右侧窗口的SYSTEM UNDER TEST部分,我们选择我们要测试的模型为 demo.slx,进一步,点击下方的 TEST HARNESS 刷新后选择我们新建的Harness(由于我这边多次创建,我的harness已经编号为6)

Simulink 需求关联与模型测试 - 第4张
Simulink 需求关联与模型测试 - 第5张

1.2 载入测试数据

前面完毕后,定义测试输入与测试输出的数据集合。在Test Manager的demo树中,选中New Test Case 1,右侧窗口的右下角会有INPUTS栏与BASELINE栏(两栏默认展开),前者是输入数据文件的调用,后者是输出数据文件的调用,且看下图,注意数据文件格式

Simulink 需求关联与模型测试 - 第6张

数据采用EXCEL表格制作,为节省,我将输入与输出放在了一个文件下,即两个sheet,每个sheet至少需要两列,默认第一列是采样时间列,这个必须有。此外,需要给每个sheet的第一行起标签,标签名需要对应于测试模块的输入输出端口名,时间列的标签可随意。展开INPUT栏,点击下方Add,选择数据集(test_data.xlsx),仅勾选输入测试数据(Error),然后点击 Map Inputs,若STATUS显示绿色,最后点击Add即可,若为红色叉叉,请检查数据文件是否满足格式要求。

Simulink 需求关联与模型测试 - 第7张
Simulink 需求关联与模型测试 - 第8张

之后,同样的操作,展开BASELINE CRITERIA,对测试输出进行数据导入操作。

1.3 需求的产生

需求一般以文字的形式出现,仿真结果确实数据的形式出现,Simulink如何测试模型是否满足需求?难道Simulink内部自带语义识别,可以将文字转化为数字?不是的,Simulink的需求有如下两种方式

  • 代码
  • 测试数据集

这里,我们仅就测试数据集进行讨论,我们可以通过文字描述需求,进而将需求与测试数据相关联,若模型的测试结果符合测试数据,则认为该需求能够被满足。

首先,我们要创建需求,即Simulink Requirements。回到我们的顶层模型(demo0.slx),右下角鼠标找到虚化的图标,可显示如下

Simulink 需求关联与模型测试 - 第9张

点击中间的大图标,可以调出需求编辑器

Simulink 需求关联与模型测试 - 第10张

点击绿色的新建按钮,创建新的需求集。

Simulink 需求关联与模型测试 - 第11张

点击创建需求,编辑Summary(可修改为输出误差)

Simulink 需求关联与模型测试 - 第12张
Simulink 需求关联与模型测试 - 第13张

右键点击demo0slreqx可以设置该需求集,例如显示需求的部署情况与测试通过情况。左击controller模块,再右击第一条需求任意位置后,选择Link From ‘controller’以及Link From Selected Test Case,使需求与模块、测试管家相关联,更新部署状态与验证状态后,如下图,蓝色满进度表示完全部署,黄色满进度表示完全未测试

Simulink 需求关联与模型测试 - 第14张
Simulink 需求关联与模型测试 - 第15张

1.4 测试与结果分析

前面都做完之后,回到测试管家,点击demo树下的New Test Case 1,然后点击工具栏的Run,见下图。发现一堆叉叉,说明模型未通过,这是理所当然的(测试数据的输出原先就设定了高度不匹配)。

Simulink 需求关联与模型测试 - 第16张

我们回到simulink顶层模型,更新需求状态,得到

Simulink 需求关联与模型测试 - 第17张

红色表示需求完全不满足。

回到测试管家,点击结果中的Baseline Criteria Results下的out,可视化结果如下。发现误差不小。

Simulink 需求关联与模型测试 - 第18张

我们可以通过调整容许的误差,产生误差带,以使需求通过(根据实际而定),这里我选择了20的绝对误差,这时候,我们的需求就满足了

Simulink 需求关联与模型测试 - 第19张
本文来源:知乎,作者:我不是MATLAB。

相关文章

换一批