一、算法设置
1.变步长(Variable—Step)求解器
可以选择的变步长求解器有:ode45,ode23,ode113,odel5s,ode23s和discret.缺省情况下,具有状态的系统用的是ode45;没有状态的系统用的是discrete。
1)ode45基于显式Runge—Kutta(4,5)公式,Dormand—Prince对.它是—个单步求解器(solver)。也就是说它在计算y(tn)时,仅仅利用前一步的计算结果y(tn-1).对于大多数问题.在第一次仿真时、可用ode45试一下。
2)ode23是基于显式Runge—Kutta(2,3).Bogackt和Shampine对.对于宽误差容限和存在轻微刚性的系统、它比ode45更有效一些.ode23也是单步求解器。
3)odell3是变阶Adams-Bashforth—Moulton PECE求解器.在误差容限比较严时,它比ode45更有效.odell3是一个多步求解器,即为了计算当前的结果y(tn),不仅要知道前一步结果y(tn-1),还要知道前几步的结果y(tn-2),y(tn-3),…;
4)odel5s是基于数值微分公式(NDFs)的变阶求解器.它与后向微分公式BDFs(也叫Gear方法)有联系.但比它更有效.ode15s是一个多步求解器,如果认为一个问题是刚性的,或者在用ode45s时仿真失败或不够有效时,可以试试odel5s。 odel5s是基于一到五阶的NDF公式的求解器.尽管公式的阶数越高结果越精确,但稳定性会差一些.如果模型是刚性的,并且要求有比较好的稳定性,应将最大的阶数减小到2.选择odel5s求解器时,对话框中会显示这一参数. 可以用ode23求解器代替。del5s,ode23是定步长、低阶求解器。
5)ode23s是基于一个2阶改进的Rosenbrock公式.因为它是一个单步求解器,所以对于宽误差容限,它比odel5s更有效.对于一些用odel5s不是很有效的刚性问题,可以用它解决。
6)ode23t是使用“自由”内插式梯形规则来实现的.如果问题是适度刚性,而且需要没有数字阻尼的结果,可采用该求解器。
7)ode23tb是使用TR—BDF2来实现的,即基于隐式Runge—Kutta公式,其第一级是梯形规则步长和第二级是二阶反向微分公式.两级计算使用相同的迭代矩阵.与ode23s相似,对于宽误差容限,它比odtl5s更有效。
8)discrete(变步长)是simulink在检测到模型中没有连续状态时所选择的一种求解器。
2.定步长(Flxed—Step)求解器
可以选择的定步长求解器有:ode5,ode4,ode3,ode2,ode1和discrete。
1)ode5是ode45的一个定步长版本,基于Dormand—Prince公式。
2)ode4是RK4,基于四阶Runge—Kutta公式。
3) ode3是ode23的定步长版本,基于Bogacki-Sbampine公式。
4) ode2是Heun方法,也叫作改进Euler公式。
5) odel是Euler方法。
6) discrete(定步长)是不执行积分的定步长求解器.它适用于没有状态的模型,以及对过零点检测和误差控制不重要的模型。
3.总结
ode45绝对是第一选择,当你弄不清情况的时候都可以选它。但是如果遇到刚性系统时,运算会很慢很慢,这时候你可以选择ode23tb算法(有关资料显示这个算法收敛速度较快)。如果还不行,那你就可以考虑选择discrete方式了。当然,这是万金油式选择,对我这种菜鸟来说这样足够了。但如果对算法有研究的大湿们,当然可以具体情况具体分析了。
二、powergui设置
simulink仿真用到simpowersystom库时,一般都要加powergui模块,它储存了电路模型的等效数学模型(状态空间方程),有三种运行模式:连续方法(continous)、离散方法(discret)、相量方法(phasor)。
小型系统(状态量10个以下)用continous运行比较好,连续变步长方法更快更精确,因为离散算法要想给出一个同等精度的结果需要的计算量要比连续的多出不少。使用二极管和晶闸管等整流电力电子器件情况下,变步长算法由于对事件更为敏感,有误差限制和过零检测,可以精确探测到电流的过零点,故结果波形中不会有电流间断。算法可以根据模型选择合适的ode算法。
对于包含了许多状态和非线性模块(如电力电子器件)较多的大型系统建议用discrete来运行,加快仿真速度。一旦系统被离散化,电路系统再无连续状态了,因此如果你不需要变步长积分方法进行仿真,前文所述的算法设置Simulation parameters可选择Fixed-step和discrete(no continous state)。当你离散化系统时,仿真的精度由时间步长控制。若使用太大的时间步长,精度可能不够。确定时间步长是否合适的唯一方法是通过改变时间步长,反复仿真,比较仿真结果。通常,对于在50Hz 或60Hz的功率系统上或使用了线性整流功率电子元件(如二极管、可控硅等)的系统上进行暂态仿真,取20us-50us的时间步长一般能取得较好的仿真效果。对于使用了强制整流功率电子开关的系统,必须减小时间步长。IGBT、场效应管、门极关断晶闸管等通常工作在很高的开关频率状态下,例如,要仿真一个工作在8Hz的PWM转换器,需要设置步长大约为8us。
phasor就是稳态模型,没有状态量。 如果你只对电压电流的相位和幅值变化感兴趣,使用相量法是一个不错的选择。求解时不再解全部的微分方程,只要解关于电流电压相量的代数方程就行了,代数方程可比微分方程简单多了!正如名字,相量法将电流电压视为相量。相量法对于包含大发电机和电动机的网络的暂态稳定性仿真十分好用 。在这种类型的问题中,我们感兴趣的是电机和调节器交互作用引起的电气机械振荡,这些振荡对基波电流电压产生一个低频的幅度相位调制。一般来讲,连续或者离散的方法不适合这种类型的问题。相量法中,使用一系列的代数方程代替网络微分方程,其中的快速的模态被忽略;使用一个由基频和相关输入输出组成的复矩阵代替网络的状态空间模型。由于相量法使用的是电机、涡轮机和调节器的慢速状态的简化模型,因此大大的减少了必需仿真时间。
三、提高simpowersystem的仿真速度
1)使用ode23解法器但效果很有限。
2)对系统离散化,方法为在你的gui模块里选择discretize electric model,采样时间越大仿真越快,当然采样时间的设定要与你对系统精确性相配合,因为采样时间是与准确性成反比的。
3)在仿真的过程中尽量少开启示波器窗口,示波器参数中的点数限制最好关闭。
4)如果你的系统要从一个特定的状态开始仿真,在仿真参数设置是,最好在i/o选项中设置起始的状态矢量。
5)开启加速器,(方法在菜单 仿真这一 项中可以设置),这个也能大大加快仿真速度。
注:刚性系统是指描述系统的微分方程中包含有数个(大于等于2)相互作用的变量且各个变量变化速度十分悬殊的系统。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删