文章目录
前言
Simulink Test模块
静态测试
动态测试
逻辑测试
验证评估
分析和应用
总结
前言
见《开箱报告,Simulink Toolbox库模块使用指南(四)——S-Fuction模块》
见《开箱报告,Simulink Toolbox库模块使用指南(五)——S-Fuction模块(C MEX S-Function)》
见《开箱报告,Simulink Toolbox库模块使用指南(六)——S-Fuction模块(TLC)》
见《开箱报告,Simulink Toolbox库模块使用指南(七)——S-Fuction Builder模块》
见《研发日记,MatlabSimulink开箱报告(八)——Lookup Table模块》
Simulink Test模块
Simulink Test模块是Simulink中实现测试和验证功能的的一类模块,Mathworks官方Help对该部分内容的说明如下所示:
Simulink Test模块在Simulink Toolbox库中的位置如下图所示:
本文选取其中两个有代表性的模块为例,介绍一下具体的应用方法。
静态测试
静态测试一般的做法是使用Constant作为信号源,示例如下:
上述这种用法值适用于单个的静态测试场景,但是如果有大量的静态测试场景要一个挨着一个测试时就会比较费劲。这时候使用Test Sequence模块就可以一次测试n个测试场景,示例如下:
动态测试
动态测试一般的做法是使用Sources模块作为信号源,示例如下:
上述这个用法也是一次只能测试一个动态场景,比如正弦信号从始至终都是正弦,而且还是频率幅值相位都固定的。如果有大量的场景需要连续测试,也还是使用Test Sequence模块,示例如下:
Tips:rand是均匀分步的随机值,randn是正态分步的随机值。
逻辑测试
逻辑测试一般的做法是使用Stateflow模块作为信号源,示例如下:
由于Stateflow的应用足够灵活,使用Stateflow实现逻辑测试本身是没有什么问题的,而且Test Sequence模块本质上也就是一种状态机应用,这里就多提供一个选项,每个人根据自己的习惯来选择,示例如下:
Tips:当一个Step后面有多个Transition时,会按顺序优先检查前面的,如果前面符合就直接跳转,不再检查后面的了,类似与switch case中的break。
验证评估
输出结果的评估一般的做法是使用Sinks模块或者Simulation Data Inspector窗口来检查,示例如下:
Tip1:Display模块适用于检查静态结果,优势表现在对多元素数组、十六进制数据、二进制数据有特别好的展示效果。
Tip2:Scope模块适用于检查动态结果,用法就像一个数字示波器。
Tip3:Simulation Data Inspector窗口是在Scope模块的基础上更进了一步,优势是不需要在模型窗口中增加额外的连线,另外还能对历史数据深度存储和自动对比,还能方便地导出数据生成报告。
上述检查输出结果的方法都是只能展示数据,然后人工判定对错。然而要想通过输入规则自动判断对错,可以用Test Assessment模块来实现,示例如下:
Tip1:verify()函数中的第一个参数是一个判定表达式,如果该判定false则会输出第二个参数中的字符串。
Tip2:如果要将一个测试步分解成多个子步骤,需要先右键设置该测试步为When decomposition模式,然后在添加子步骤,并在子不重中设置when判别式。
分析和应用
Simulink Test模块在Simulink模型仿真测试方面的应用功能非常强大,尤其是应用于需要复杂场景进行测试的模型,或者需要大量场景进行批量测试的算法时优势非常明显,例如一些滤波算法、故障诊断算法、统计算法、状态识别算法、控制管理算法等等的测试。项目中使用Simulink Test模块后,能够有利于测试场景的覆盖度,大大提高测试速度,减少在测试结果判定方面投入的人力和时间。主要适用于配备专门软件测试人员的开发团队,可以合理协调团队成员的分工合作,提高代码可控性,减少软件Bug。
总结
以上就是本人在使用Simulink Test时,一些个人理解和分析的总结,首先介绍了Simulink Test的基本知识,然后展示它的使用方法,最后分析了该模块的特点和适用场景。
后续还会分享另外几个最近总结的Simulink Toolbox库模块,欢迎评论区留言、点赞、收藏和关注,这些鼓励和支持都将成文本人持续分享的动力。
另外,上述例程使用的Demo工程,可以到笔者的主页查找和下载。
版权声明,原创文章,转载和引用请注明出处和链接,侵权必究!
参考阅读
发表评论