加载中…
个人资料
simscape
simscape
  • 博客等级:
  • 博客积分:0
  • 博客访问:2,756
  • 关注人气:53
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Simulink调试器:监控变步长求解器性能 | Guy and Seth on Simulink

(2012-11-27 14:41:46)
标签:

matlab

simulink

分类: Simulink基础

几个月前,我介绍了几个我分析变步长求解器性能时最喜欢用的命令my favorite command to analyze the performance of a variable-step solver

本周,我将介绍如何使用Simulink Debugger 来对变步长求解器进行进一步的分析。所以,我们这次使用 debugger command-line interface

 

Launching the debugger

 

我们使用vdp这个例子。
sldebug vdp,打开vdp
模型的调试器

strace 1 跟踪记录求解器信息。

tbreak 5,因为我只是想仿真一段时间,所以在5秒的时刻设置断点。

http://s7/middle/b2f5027f4cf7457b25b96&690

continue,或者是使用快捷命令c之后,很多信息列了出来。

 

Solver Information

 

让我们来看一个成功的迭代步,从0.284s0.54s

 

http://s11/middle/b2f5027f4cf7457c7471a&690

(在上面这个截屏里,你可以看到:

  • TM: 我们在0.284s的时候开始一个主迭代步。
  • Tm - Hm: 我们在0.284s开始一个副迭代步。求解器评估上一个迭代步状态,设定本次迭代步长为0.256s合适。
  • Tm - H: 没有什么意外情况,我们开始从0.284s往前迭代0.256s
  • Ts - Hs: 副迭代步成功,所以我们在保证求解公差的前提下推进0.256s
  • Err - Ix: Among all the states in the modelthe one closest to the maximum tolerance was state 1 and it's normalized error was 8.2045e-2. The normalization is made relative to the maximum tolerance. An error above 1 exceeds the tolerance and below one passes.
    在模型的所有状态states,误差最大的那一个也是state 1,它的误差相对于设置的最大误差参数正则化过后是 8.2045e-2error1大则表示超出了设置误差,比1小则通过。
    (这段话没怎么看懂)。

想要了解更多的关于怎么理解求解器跟踪信息的话,可以查看关于strace的文档。 .

要查看哪一个state的误差最大,可以使用states 命令:

 

http://s2/middle/b2f5027f4cf7457d03a31&690

在这一步可以看到,模块x2state很接近最大误差参数(Ix=1)

 

Step limited by maximum step size

 

现在我们来看一下另外一种情况,在时间4.651s的时候,可以看到步长受限 maximum step size:

http://s9/middle/b2f5027f4cf7457dafd18&690

 

如果你的模型里出现很多次这个信息,这表示你可以考虑增加求解器的最大步长的设置。

 

Failed step

 

当然,并不是每一个迭代步都那么一帆风顺。有时候,求解器需要将步长调小来满足设置公差。如果我们继续运行模型,会看到在13.21s的时候,求解器为了保证精度尝试了2次不同步长。

 

http://s11/middle/b2f5027f4cf7457ce895a&690

 

如果这种情况发生多次,你可能需要考虑别的求解器了,比如说刚性求解器stiff solvers。如果这依然不奏效,你需要看看你的方程以及产生最大误差的模块。

 

Conclusion

 

这个例子说明,通过了解Simulink调试器,我们更容易理解变步长求解器如何确定迭代步长。这个例子可能只关注states,但是你可以用一些函数zcbreak zclist,通过类似的原则来研究zero-crossing

 

这篇帖子够长的了,我得结尾了。但是我必须得说明的是,这个例子只是冰山一角。使用Simulink调试器,你还可以看到关于副迭代步的更多细节,可以显示任何模块和任何信号。

 

Now it's your turn

Take the time to go through the list of Simulink debugger Commands and let us know if you find something you will use by leaving a comment here

http://s5/middle/b2f5027f4cf7457e0b854&690

By Guy Rouleau

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有