[Simulink] 基于模型的测试与验证学习笔记_Step 3: Detecting Desig Errors


【注】 本文为2018 Mathworks 年会上机教程学习笔记, 讲师:周玲, 如有侵权,立即删除

本文所有模型均为上机练习模型,百度云链接

Simulink Design Verifier

在Simulink中有多种方法对模型进行测试,传统上来讲,验证涉及到用于根据特定的需求创建对应的一系列测试,同事用户还需要根据这些测试用例,给出其预期的结果。测试的创建需要能够覆盖到功能的同事,还需要兼顾系统的稳健性要求。

本例将借助Simulink Design Verifier对模型进行仿真分析,以检查是否存在潜在的始终无法激活的状态或转移,以及除以零这样的设计错误。

Simulink Design Verifier的三大功能:

  • Design Error Detection —— 查找死逻辑、除以零、溢出等问题
  • Test Generation —— 基于模型和覆盖度来生成测试用例,这部分在Step 5中学习
  • Property Proving —— 确定模型的输出和行为是满足预期要求的,这部分在Step 7中学习

对模型做死逻辑检测

使用Simulink Design Verifier对模型进行分析,本节的目标是查找模型中的死逻辑(即无可能被执行到的逻辑),这里仅查找死逻辑,但实际上这种方法还可以用来查找溢出等问题。

Analysis > Design Verfier > Options
在这里插入图片描述
Design VerifierDesign Error Detection中勾选Dead logicIdentify active logic
在这里插入图片描述
Analysis> Design Verifier > Detect Design Errors > Model
在这里插入图片描述
之后会出现下图,
在这里插入图片描述
显示有两个死逻辑,打开模型可以看到死逻辑的位置

在这里插入图片描述

问题分析

Simulink给出的问题是after(incdec/holdrate10,tick) 不可能为false,为什么?进入断点调试
在这里插入图片描述
运行模型,并在Command Window中做调试
在这里插入图片描述
这里我们可以看到问题了,当用整型数据替换掉浮点型数据后,上面的两个转移条件永远都是0,解决方法,将 **after(incdec/holdrate
10,tick)** 改为after(10*incdec/holdrate,tick)

模型除以零的检测

打开示例模型,
Analysis, Design Verifier, and Options
在这里插入图片描述
Design Error Detection ** 勾选check Division by zero**,点击OK
在这里插入图片描述
Analysis > Design Verifier > Detect Design Errors > Model
查看报告,可以看到,当测试用例为holdrate = 0,incdec = 1的时候,出现了不满足的情况

在这里插入图片描述

在这里插入图片描述
在结果中点击Create harness model,会生成对应的测试用例,运行Tets Case1后报错
在这里插入图片描述
在这里插入图片描述

这个原因是因为holdrate的最小值为0,我们在Command Window中将这个参数的最小值设置为1,然后重新在Design Verifier中对Paramters进行设置,先勾选参数Clear后重新Find in Model。
在这里插入图片描述
在这里插入图片描述
再次进行Analysis > Design Verifier > Detect Design Errors > Model,结果如下在这里插入图片描述

自动设计错误检测

在Model Advisor的By Product中就包含了Simulink Design Verifier栏,下设Design Error Detection,可以用来进行检测死逻辑、除以零等设计问题。
在这里插入图片描述

总结

在Simulink Design Verifer中进行设计错误的检查,可以针对设计错误自动生成test harness以测试用例,用于帮助用户快速查找问题的根源。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值