软件开发工具——Simulink仿真过程的调试介绍
北冥有鱼
|
2019.12.30
|
0
+关注

使用Simulink Debugger,模型可以按照每个方法单步执行,可停在任何一个方法执行之后,并检查结果是否正确。通过Simulink Debugger能够精确定位仿真中的异常或错误出现的时刻,具体错误发生在哪个模块,哪个参数甚至哪个端口上。

1. Debugger的启动

通过Simulink模型编辑器的菜单,选择Simulation->Debug->Debug Model即可启动Simulink Debugger,如下图所示。

根据Simulink的运行机理可知,按照采样时间序列顺序,在每个采样步长内,模型按照信号流向和模块优先度依次调用每个模块的子方法来执行仿真。Debug模式下就是将仿真过程变得可控,单步或多步执行,或者全速执行到断点停下来。过程中每个采样时刻所执行的模块及方法名都可以观察到。模型中所有的模块的执行顺序可以通过Sorted List页面查看。

2. Debugger的单步方法

单击Simulink Debugger工具栏的绿色三角按钮可以启动Debug模式的仿真运行,运行一步后停止,左侧的Simulink Loop标签页和右侧的Outputs标签页被自动打开。第一步执行后,下一步将要执行的方法名也显示在Output标签页中,这一步是模型初始化的一步。

3. Debugger的断点设置方法

跟M语言一样,Simulink Debugger中可以设定断点使仿真运行到断点时停止。模型中存在多个断点时,可以从一个断点运行至另一个断点。Simulink Debugger中有两种断点:无条件断点和有条件断点。无条件断点,就是一个断点被设定到模型中的某个方法上,每次运行到这个方法时都会停止;条件断点则是通过Simulink Debugger的对话框上提供的条件复选框来选择,或者编辑框填入希望停止的仿真时间。如下图所示。

3.1 无条件断点的设置

模型在调试模式下运行后,所执行到的各种子方法通过Simulink标签页罗列出来。模型名后有一列复选框控件,用来设置无条件断点。

设定断点之后,可以单击开始或继续调试按钮继续运行仿真,运行到勾选的断点时会停止。

3.2 有条件断点的设置

使用Break on conditions组的控件来触发条件断点。如果希望仿真停在时间步长上,在Break at time 编辑框中输入时间,单击开始或继续调试按钮,再次单击该按钮,会停止在设置时间的方法调用处。

Zero crossings选项被选中时,如果仿真过程中遇到非采样过零检测则会停止。 Step size limited by state选项被选中时,仿真过程如果采用变步长解算器并且遇到一个状态会限制步长大小时则会停止。Solver Errors选项被选中时,当解算器遇到可以恢复的错误时会停止,如果不设置此类型断点,遇到这种错误时解算器自动恢复并继续执行,不显示通知。 NAN values选项被选中时,一旦仿真过程中出现无穷大数或者数据大小超出机器表示范围时则停止,此选项对于定位计算溢出或除数为0的错误很有帮助。

4. 结语

通过Simulink Debugger,可以更细致地掌握模型运行的每一个步骤,从而精确找到问题所发生的位置、仿真时间和问题出现前模型中信号与模块输入输出的变化趋势。

精选留言
延伸阅读
更多报告干货
写留言
2612
阅读
收藏
回到顶部