Simulink仿真过程
Simulink 模型的执行分几个阶段进行。首先进行的是初始化阶段,在此阶段,Simulink 将库块合并到模型中来,确定传送宽度、数据类型和采样时间,计算块参数,确定块的执行顺序,以及分配内存。然后,Simulink 进入到“仿真循环”,每次循环可认为是一个“仿真步”。在每个仿真步期间,Simulink 按照初始化阶段确定的块执行顺序依次执行模型中的每个块。对于每个块而言,Simulink 调用函数来计算块在当前采样时间下的状态,导数和输出。如此反复,一直持续到仿真结束。下图所示为一个仿真的步骤:

Simulink求解器分类
Simulink求解器可分为两大类:变步长求解器和定步长求解器。也可细分为:连续求解与离散求解、隐式求解与显式求解、单步求解与多步求解以及单阶式与变阶式求解。
(1)定步长与变步长求解器
定步长求解器的仿真步长为定制,没有误差控制机制;变步长求解器在仿真过程中需要计算仿真步长,通过增加/减小步长来满足所设定的误差宽容限。在生成实时运算代码时,必须使用定步长求解器,若不打算配置模型代码生成,求解器的选择根据建立模型而定。通常,变步长求解器可以减少仿真时间,定步长求解步长越小,仿真精度越高,故在同样仿真精度要求下,在采用定步长求解器进行仿真时,整个仿真过程必须采用变步长求解器中的最小步长。
(2)连续与离散求解器
在定步长与变步长求解器中均有连续与离散求解器。连续与离散求解器都是依靠模块来计算所有离散状态值。定义离散状态的模块负责在每个步长的时间点计算离散状态值,连续求解器是通过数值积分来计算定义连续状态的模块的状态值。在选择求解器时,必须先确定模型中是否需要离散求解器。在模型中若没有连续状态模块,求解器采用连续、离散均可,若有连续状态模型必须采用连续求解器。
(3)显式与隐式求解器
隐式求解器的应用主要解决模型中的刚性问题,显式求解器应用解决非刚性问题。譬如,在控制系统中,控制部件反应灵敏是快变的,具有小的时间常数,而受控对象一般惯性大事慢变的,具有大的时间常数。通常将具有非常不同时间尺度的系统称之为刚性系统,通俗讲,就是系统中含有时间快变和慢变解分量(同时含有小时间常数和大时间常数的系统)。刚性系统有非常大的恢复能力使得快变化分量的扰动很快就衰减,当数值积分这样一个系统时,一旦快变分量消失时期望选取合适的时间步长用于计算慢变分量。故刚性系统的实质是要计算的解是慢变化,但存在迅速衰减的扰动,这样的扰动出现使得慢变解的数值计算复杂化。故,对系统中的震荡现象,隐式求解远比显式求解稳定,但计算的消耗比显式求解大,它需要在仿真的每个步长利用Newton-like方法计算所产生的雅克比矩阵和代数方程组。为了减少计算消耗,Simulink提供了计算雅克比方法的参数,提高仿真性能。
(4)单步与多步求解器
在Simulink求解库中提供了单步与多步求解器。单步求解就是在计算系统当前时刻y(tn),需要利用前一时刻y(tn-1)以及在tn-1与tn之间多个时间点的微分量(这些时间点称为微步长);多步求解器就是利用系统前多个时刻的值计算当前时刻的值。Simulink提供了一个显式多步求解器ode113和一个隐式多步求解器ode15s,这两个都是变步长求解器。
(5)变阶式求解器
Simulink提供两种变阶式求解器,ode15s求解器利用1阶到5阶仿真;ode113应用1阶到13阶。对于ode15s可以设置最高阶次。
定步长求解器的选择
(1)定步长离散求解器
定步长离散求解器通过在当前时间点的基础上加上仿真步长来计算下一时间点。故,仿真的精度和时间长度取决于仿真步长的大小。步长越小精度越高。仿真步长可以任意设置,当步长设置为缺省时,若模型中含有离散采样模块,Simulink将最小采样步长作为求解器的基步长(通常指最小仿真步长),若没有则默认整个仿真只有50步,仿真步长为仿真时间历程的1/50。
(2)定步长连续求解器
定步长连续求解器通过在当前时间点的基础上加上仿真步长来计算下一时间点,但通过数值积分计算连续状态。利用上一时间点的值和积分微步计算当前时间点的值。定步长连续求解器可以用于计算没有连续状态的模型,但增加计算负担。通常,模型中没有连续状态模块采用离散求解器仿真。
Simulink提供了两种定步长连续求解器:隐式求解和显式求解。主要区别在于计算速度和稳定性方面,隐式比显式的每步计算量大,但稳定性好。
(a)显式定步长连续求解器
Simulink根据数值积分方法的不同分为多种不同显式定步长连续求解器,其系统显函数的数学表达为:
式中,x为状态,h为时间步长,Dx为状态微分,显式求解器利用当前时间点的状态值和状态微分计算下一时间点的状态值。Simulink提供的求解器具体如下表:
| | |
| | |
| | |
| | |
| Fourth-Order Runge-Kutta (RK4)Formula | |
| Dormand-Prince(RK5)Formula | |
| Dormand-Prince RK8(7) Formula | |
这些求解器都没有误差控制机制,仿真精度和持续时间直接由仿真步长控制。表中的求解器根据数值积分方法的复杂度(精度等级)将求解器由简单到复杂排序。在相同的仿真步长设置下,求解器计算越复杂,计算结果精度越高。
在设置求解器时,若选择定步长求解,Simulink默认为ode3,其支持离散和连续状态求解,且仿真性能适中(计算精度和计算消耗),其仿真步长的设置和离散求解器一样,在缺省步长设置时,若模型中有离散状态模块,则将模型中最小采样时间作为求解器的基步长,若没有则默认整个仿真只有50步,仿真步长为仿真时间历程的1/50。
(b)隐式定步长连续求解器
Simulink提供了一种隐式定步长求解器,ode14x。其系统隐函数的数学表达为:
式中,x为状态,h为时间步长,Dx为状态微分,此求解器综合利用牛顿迭代法和外推法,根据当前状态值计算下一时间点的状态。用户可以设置牛顿法迭代次数和外推阶次。迭代次数越大、外推阶次越高,仿真精度越高,同时每一仿真步长的计算负担也越大。
(3)定步长连续求解选择过程
Simulink中的每个定步长连续求解器,只要设置足够小的仿真步长,都能达到期望的计算精度,但通常不实际,故需要选择最佳的求解器,其选择过程如下图所示。

文章评论(0条评论)
登录后参与讨论