Test Squence测试过程中如何按照特定条件暂停或者停止仿真

在Simulink模型做Test Squence测试时,工程师有时候希望测试用例能按照自己期望的条件来停止或暂停仿真,这个期望的特定条件,可以是时间达到,也可以是任何能达到的特定状态。

具体实现方法如下:

1、在Test Harness测试用例中使用 Assertion 模块暂停或者停止仿真

当模块的输入信号为零时,您可以使用 Assertion 模块暂停仿真。在Assertion 模块中使用 set_param 命令暂停仿真。

设置如下:

1、在您的模型中添加一个 Assertion 模块。

2、将 Assertion 模块连接到在所需的暂停时间变成零值的信号。

3、在 Assertion 模块对话框中,清除 Stop simulation when assertion fails 复选框。输入以下两行命令作为 Simulation callback when assertion fails 的值:

set_param(bdroot,‘SimulationCommand’,‘pause’),

disp(sprintf(‘\nSimulation paused.’))

例子1:当仿真时间到5s时,暂停仿真。本例只是以时间达到为条件,这个条件也可以是从 Test Sequence 块生成零(false)输出,并将其馈送到"Asserion"模块的输入端。

在这里插入图片描述

2、在Test Harness测试用例中使用 Stop Simulation模块停止仿真

当输入为非零值时,Stop Simulation 模块将使仿真停止。

例子2:当仿真时间到5s时,停止仿真。本例只是以时间达到为条件,这个条件也可以是从 Test Sequence 块生成非零输出(true),并将其馈送到" Stop Simulation"模块的输入端。

在这里插入图片描述

3、在Test Squence中使用coder.extrinsic 结合set_param暂停或停止仿真

在您希望暂停仿真那一行,插入如下代码,就能达到目的。如果想停止仿真,将pause改为stop就行。

例子3:

在这里插入图片描述
此处注意:由于bdroot是char数组,而Simulink Test仅支持数字或逻辑类型,所以必须先用coder.extrinsic将set_param声明为外部函数才行。

coder.extrinsic说明(来自matlab help):

coder.extrinsic(function) 将 function 声明为外部函数。代码生成器不为外部函数体生成代码,而是使用 MATLAB® 引擎来执行调用。在执行期间,仅当 MATLAB 引擎可用时,此功能才可用。

4、在Test Squence中使用error停止仿真

您可以在所需的步骤中使用错误函数。 这将停止模拟并输出自定义错误消息。

例子4:

在这里插入图片描述
在simulink的Diagnostic Viewer中显示如下:
在这里插入图片描述
第4种不推荐使用。

5、开发"暂停"或"停止"状态功能

我现在用的matlab版本是2020b,寄希望于mathworks公司早日在Test Squence中实现"暂停"或"停止"状态功能。让我们一起期待!!!


资源分享

下面这份资源,对于想学习【软件测试】的朋友来说应该是最全面最完整的备战仓库,希望也能帮助到你!在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在MatlabGUI里面启动或者暂停Simulink模型-start_and_stop_gui.m 针对这个问题:https://www.ilovematlab.cn/thread-23233-1-1.html 现在我做一个集解答,从mathworks那里学习了一下。 第一步:创建你自己的Simulink模型,这个不用我讲吧,我们使用以下模型做演示: start_and_stop.mdl 第二步:创建自己的GUI, 这个论坛里也有例子,我们使用以下文件。 start_and_stop_gui.fig start_and_stop_gui.m Figure12.jpg 在start simulation里面,直接用sim函数,这个大家好像都会: % --- Executes on button press in startsim. function startsim_Callback % hObject handle to startsim % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data modelname = get; stoptime = str2num); sim复制代码 在stop simulation,里面,callback这样写: % --- Executes on button press in stopsim. function stopsim_Callback % hObject handle to stopsim % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data global GUIStopFlag; GUIStopFlag = 1; 复制代码第三步:写一个s函数,不停地检测这个GUIStopFlag参数,发送命令给STOP按钮,告诉他,可以结束了,简单吧? sysstop_new.m 第四步:在simulink模型里面,加上这个S函数 Figure13.jpg 好了,大功告成了,现在你就可以在GUI里随意控制Simulink模型了。 注:文所用的模型,GUI文件,由mathworks公司提供。
在MatlabGUI里面启动或者暂停Simulink模型-sysstop_new.m 针对这个问题:https://www.ilovematlab.cn/thread-23233-1-1.html 现在我做一个集解答,从mathworks那里学习了一下。 第一步:创建你自己的Simulink模型,这个不用我讲吧,我们使用以下模型做演示: start_and_stop.mdl 第二步:创建自己的GUI, 这个论坛里也有例子,我们使用以下文件。 start_and_stop_gui.fig start_and_stop_gui.m Figure12.jpg 在start simulation里面,直接用sim函数,这个大家好像都会: % --- Executes on button press in startsim. function startsim_Callback % hObject handle to startsim % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data modelname = get; stoptime = str2num); sim复制代码 在stop simulation,里面,callback这样写: % --- Executes on button press in stopsim. function stopsim_Callback % hObject handle to stopsim % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data global GUIStopFlag; GUIStopFlag = 1; 复制代码第三步:写一个s函数,不停地检测这个GUIStopFlag参数,发送命令给STOP按钮,告诉他,可以结束了,简单吧? sysstop_new.m 第四步:在simulink模型里面,加上这个S函数 Figure13.jpg 好了,大功告成了,现在你就可以在GUI里随意控制Simulink模型了。 注:文所用的模型,GUI文件,由mathworks公司提供。
在MatlabGUI里面启动或者暂停Simulink模型-start_and_stop.mdl 针对这个问题:https://www.ilovematlab.cn/thread-23233-1-1.html 现在我做一个集解答,从mathworks那里学习了一下。 第一步:创建你自己的Simulink模型,这个不用我讲吧,我们使用以下模型做演示: start_and_stop.mdl 第二步:创建自己的GUI, 这个论坛里也有例子,我们使用以下文件。 start_and_stop_gui.fig start_and_stop_gui.m Figure12.jpg 在start simulation里面,直接用sim函数,这个大家好像都会: % --- Executes on button press in startsim. function startsim_Callback % hObject handle to startsim % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data modelname = get; stoptime = str2num); sim复制代码 在stop simulation,里面,callback这样写: % --- Executes on button press in stopsim. function stopsim_Callback % hObject handle to stopsim % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data global GUIStopFlag; GUIStopFlag = 1; 复制代码第三步:写一个s函数,不停地检测这个GUIStopFlag参数,发送命令给STOP按钮,告诉他,可以结束了,简单吧? sysstop_new.m 第四步:在simulink模型里面,加上这个S函数 Figure13.jpg 好了,大功告成了,现在你就可以在GUI里随意控制Simulink模型了。 注:文所用的模型,GUI文件,由mathworks公司提供。
在MatlabGUI里面启动或者暂停Simulink模型-start_and_stop_gui.fig 针对这个问题:https://www.ilovematlab.cn/thread-23233-1-1.html 现在我做一个集解答,从mathworks那里学习了一下。 第一步:创建你自己的Simulink模型,这个不用我讲吧,我们使用以下模型做演示: start_and_stop.mdl 第二步:创建自己的GUI, 这个论坛里也有例子,我们使用以下文件。 start_and_stop_gui.fig start_and_stop_gui.m Figure12.jpg 在start simulation里面,直接用sim函数,这个大家好像都会: % --- Executes on button press in startsim. function startsim_Callback % hObject handle to startsim % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data modelname = get; stoptime = str2num); sim复制代码 在stop simulation,里面,callback这样写: % --- Executes on button press in stopsim. function stopsim_Callback % hObject handle to stopsim % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data global GUIStopFlag; GUIStopFlag = 1; 复制代码第三步:写一个s函数,不停地检测这个GUIStopFlag参数,发送命令给STOP按钮,告诉他,可以结束了,简单吧? sysstop_new.m 第四步:在simulink模型里面,加上这个S函数 Figure13.jpg 好了,大功告成了,现在你就可以在GUI里随意控制Simulink模型了。 注:文所用的模型,GUI文件,由mathworks公司提供。
Simulink是一种基于模型的设计和仿真软件,可用于建立、模拟和分析复杂系统的模型。当使用Simulink进行系统建模和仿真时,有时候我们希望能够及时发现模型的偏离行为,以便采取相应的预警措施。 Simulink偏离预警是指当模型的输出或系统行为超出了预期范围时,Simulink能够发出警告或提醒用户进行相关操作。这种预警功能可以帮助用户快速发现模型的错误或异常情况,并及时进行修正。例如,当模型的输出值超过了事先设定的某个阈值时,Simulink可以通过弹出对话框、输出警告信息等方式提醒用户注意。 为了实现Simulink偏离预警,我们可以使用Simulink的信号监测工具来监测模型的输入和输出。通过配置监测器,我们可以设定期望的信号范围和阈值,并在信号超出范围或阈值时触发相应的动作。例如,我们可以设置一个阈值监测器,在模型输出超过阈值时,Simulink会自动暂停仿真过程,并弹出警告窗口提示用户。 此外,Simulink还提供了可视化工具,如Scope和Display,可以实时监测和显示模型的输入和输出情况。通过观察实时曲线图或输出结果,用户可以直观地判断模型是否偏离预期,从而可以及时采取相应的措施。 总之,Simulink偏离预警是一种非常实用的功能,它可以帮助用户及时察觉到模型性能的偏离,并采取相应的措施。通过合理配置信号监测器和使用可视化工具,我们能够更好地利用Simulink进行系统建模与仿真,从而提高模型的准确性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员二黑

V:testerhei

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值