0


Simulink模型的MIL单元测试

01 --模型

首先要有一个供测试的模型,这里我以一个子系统和状态机的模型为例。

02 --创建测试框架(test harness)

在进行测试之前,首先要把模型内的测试框架(test harness)创立好,不然的话Simulink test只能对一个总的模型的输入输出编写测试用例。当你的模型太大的时候,这非常不友好,还是想一个个的子系统进行测试。

按如下方式进行创建测试框架:

右击需要创建的子系统

把名称和路径填好,最好就放在该模型的路径下

单独打开的测试框架模型如下

利用相同的方式为状态机也创建好测试框架

03 --使用simulink test 创建一个测试用例表格

通过生成的表格,该表格上面有输入输出信号,及采样时间。输入信号是你要给的测试用例,而输出信号则填写你预期的结果。这个预期的结果会和模型运行之后的实际结果进行比较,这样一来就完成了单元模型的测试。

按如下方式创立表格,当然你也可以自己导入已经做好了的表格。

接下来下图中,第一个空白行选择你要测试的模型,第二个空白行如果选择None,则是测试整个模型的输出,如果选择测试框架,则是测试我们最开始创建好的测试框架模型,这里我们先选其中一个测试框架模型进行测试,确保将所有的最小子系统都能够测试完成。

下图中勾选Comparison signals很重要,如果不选,将没有预期信号的输出,模型运行完成后,只能通过表格和模型生成的实际信号进行肉眼比对,非常不方便。

所生成的表格页数及其命名,默认即可

以下两行是为该模型或测试框架模型生成的两个文件,分别是.mldatx(该文件用于记录测试中的设置)和.xlsx,空白的地方是需要为他们寻找一个路径并命名文件。这里我们都放在模型的路径下。

打开生成的表格后,发现采集信号有1000个点,实在是太多了,不方便内容讲解,我们先把采集点取少一点,这个采集点跟求解器有很大关系,打开求解器后发现采样时间是0.01s,而仿真时间10s,刚好1000个点

我们把停止时间改为0.1s,只采集10个点,再重新配置生成一下表格,我们看到只有10个采集点了

04 --单元测试

把excel表格在外部用excel格式打开并按如下去编辑采样时间,输入输出信号值,即测试用例,由于信号太多,表格生成的信号及采样时间顺序有点乱,对照模型可以知道我们有5个输入信号,6个输出信号。

该子系统的内部模型如下

封装模型如下,即U>U/Z是个脉冲信号,输入置1后输出只在一个采样时间置1后便回到0

回到test manager内并点击run运行模型

从上图中

Test Browser(白色边框)内容是修改表格内的测试用例之后,可运行该模型进行仿真

而Results and Artifacts则是输入输出结果进行比较,其中蓝色线Baseline是你表格内填写的输出信号即预期信号,而Sim Output 则是模型仿真运行后的实际信号。

如果将excel表格中的ell_eol_ena输出信号全部改为1,那么该单元测试将会失败。原因是前面提到过的模型U>U/Z是个脉冲信号

可以看到预期信号和实际信号不相符

测试框架状态机和总的模型配置及测试与上述子系统的测试相似,这里不再进行讲解。

05 --补充

①上述测试过程中,默认只有输出信号的仿真,按如下设置可显示输入信号

②测试报告生成

标签: mcu

本文转载自: https://blog.csdn.net/BlueBachke/article/details/129830286
版权归原作者 火山口车神丶 所有, 如有侵权,请联系我们删除。

“Simulink模型的MIL单元测试”的评论:

还没有评论