2008年11月18日星期二

在不改变步长的情况下提高simulink的仿真精度

一般情况下,如果我们需要提高simulink的仿真精度,我们会缩短仿真步长,但是如果整个仿真持续很长很长时间呢?
有一种比较广泛的特殊情况,我们无需缩短步长,仍然可以提高仿真精度,这样,就大大减少了我们等待simulink完成仿真的时间~~
问题描述:
在有些时间较长的仿真中,可能存在某一个或几个时刻,要求仿真步长非常短,以达到足够的精度,而在其余时间,整个系统的仿真步长可以较大。比如某个时候发动机需要工作0.017s,而在其他不工作的时刻,系统只需按1s或者10s的步长运行100,000s即可。如果将整个的仿真步长限制在0.001s,这样仿真时间就太长了,得不偿失。
问题的解决:
如何解决这个问题呢,我想了如下一个方法,在此抛砖引玉,希望大家都能发表一下自己的意见:当发动机工作的时候,利用使能子系统(Enable Subsystem)让一个方波信号(Pulse Generator)开始输出(事实上输出并不用做什么,只是用他的采样时间),令方波信号的周期在你希望的步长的2倍上,如上文就是0.002s,其他时刻方波信号不进行输出(使能子系统不工作)。这样的话,即使将整个系统的仿真最大步长设置为10s,当发动机工作时候,还能够提供0.001s的工作精度,并且,Simulink的仿真时间并没有显著没有增长!
使能子系统仿真模块内部构造如下图所示:

没有评论: