3.5 Simulink仿真设置
在编辑好仿真程序后,应设置仿真操作参数,以便进行仿真。单击Simulation菜单下面的Configuration Parameters项或者直接按快捷键“Ctrl+E”,便弹出如图3.11所示的设置窗口,它包括仿真器参数(Solver)设置、工作空间数据导入/导出(Data Import/Export)设置等。下面对控制系统仿真中常用的仿真设置进行介绍。
图3.11 Simulink设置窗口
3.5.1 仿真器参数设置
仿真器参数设置窗口如图3.12所示,它可用于仿真开始时间、仿真结束时间、解法器及输出项等的设置。对于一般的设置,使用默认设置即可。
图3.12 仿真器参数设置窗口
- 仿真时间设置
这里所指的时间概念与真实的时间并不一样,只是计算机仿真中对时间的一种表示,比如10 s的仿真时间,如果采样步长定为0.1,则需要执行100步,若把步长减小,则采样点数增加,那么实际的执行时间就会增加。
需要设置的有仿真开始时间(Start time)和仿真结束时间(Stop time)。一般仿真开始时间设为0,而结束时间则视不同的情况进行选择。
总的说来,执行一次仿真要耗费的时间取决于很多因素,包括模型的复杂程度、解法器及其步长的选择、计算机时钟的速度等。
- 仿真步长模式设置
用户在Type后面的第一个下拉选项框中指定仿真的步长选取方式,如图3.13所示,可供选择的有Variable-step(变步长)和Fixed-step(固定步长)方式。选择变步长模式则可以在仿真过程中改变步长,提供误差控制和过零检测选择。固定步长模式则可以在仿真过程中提供固定的步长,不提供误差控制和过零检测。
图3.13 仿真类型设置窗口
- 解法器设置
用户在Solver后面的下拉选项中选择变步长模式解法器,如图3.14所示,变步长模式解法器有discrete、ode45、ode23、ode113、ode15s、ode23s、ode23t和ode23tb,下面简要概述一下这些解法器的含义。
图3.14 解法器参数设置窗口
(1)discrete:当Simulink检查到模型没有连续状态时使用它。
(2)ode45:默认值,表示四/五阶龙格-库塔法,适用于大多数连续或离散系统,但不适用于刚性系统。它是单步解法器,即在计算y(tn)时,它仅需要最近处理时刻的结果y(tn-1)。一般来说,面对一个仿真问题最好首先试试ode45。
(3)ode23:表示二/三阶龙格-库塔法,它在误差限要求不高和求解的问题不太难的情况下,可能会比ode45更有效。它也是一个单步解法器。
(4)ode113:表示一种阶数可变的解法器,它在误差容许要求严格的情况下通常比ode45有效。ode113是一种多步解法器,即在计算当前时刻输出时,它需要以前多个时刻的解。
(5)ode15s:表示一种基于数字微分公式的解法器(NDF),它也是一种多步解法器。适用于刚性系统,当用户估计要解决的问题是比较困难的、不能使用ode45或者即使使用效果也不好时,就可以用ode15s。
(6)ode23s:表示一种单步解法器,专门应用于刚性系统,在弱误差允许下的效果优于ode15s。它能解决某些ode15s所不能有效解决的stiff问题。
(7)ode23t:表示梯形规则的一种自由插值实现。这种解法器适用于求解适度stiff而用户又需要一个无数字振荡的解法器的情况。
(8)ode23tb:表示TR-BDF2的一种实现,TR-BDF2是具有两个阶段的隐式龙格-库塔公式。
固定步长模式解法器有:discrete、ode5、ode4、ode3、ode2、ode1和ode14x。
(1)discrete:表示一种实现积分的固定步长解法器,它适合于离散无连续状态的系统。
(2)ode5:默认值,是ode45的固定步长版本,适用于大多数连续或离散系统,不适用于刚性系统。
(3)ode4:表示四阶龙格-库塔法,具有一定的计算精度。
(4)ode3:表示固定步长的二/三阶龙格-库塔法。
(5)ode2:表示改进的欧拉法。
(6)ode1:表示欧拉法。
(7)ode14x:表示固定步长的隐式外推法。
- 变步长模式的步长参数设置
对于变步长模式,用户常用的设置有:最大和最小步长参数、相对误差和绝对误差、初始步长以及Zero crossing control(过零控制)。在默认情况下,步长自动确定,用auto值表示。
(1)Max step size(最大步长参数):决定解法器能够使用的最大时间步长,它的默认值为“仿真时间/50”,即整个仿真过程中至少取50个取样点,但这样的取法对于仿真时间较长的系统则可能带来取样点过于稀疏的问题,继而使仿真结果失真。一般建议对于仿真时间不超过15 s的采用默认值即可,对于超过15 s的每秒至少保证5个采样点,对于超过100 s的,每秒至少保证3个采样点。
(2)Min step size(最小步长参数):用来规定变步长仿真时使用的最小步长。
(3)Relative tolerance(相对误差):指误差相对于状态的值,是一个百分比,默认值为1e-3,表示状态的计算值要精确到0.1%。
(4)Absolute tolerance(绝对误差):表示误差值的门限,或者是在状态值为零的情况下可以接受的误差。如果它被设成了auto,那么Simulink为每一个状态设置初始绝对误差为1e-6。
(5)Initial step size(初始步长参数):一般建议使用auto默认值。
(6)Zero crossing control:过零点控制,用来检查仿真系统的非连续。
- 固定步长模式的步长参数设置
对于固定步长模式,用户常用的设置如下所述。
(1)Multitasking:选择这种模式时,当Simulink检测到模块间非法的采样速率转换时系统会给出错误提示。所谓的非法采样速率转换指两个工作在不同采样速率的模块之间的直接连接。在实时多任务系统中,如果任务之间存在非法采样速率转换,那么就有可能出现一个模块的输出在另一个模块需要时却无法利用的情况。
通过检查这种转换,Multitasking将有助于用户建立一个符合现实的多任务系统的有效模型。使用速率转换模块可以减少模型中的非法速率转换。Simulink提供了两个这样的模块:unit delay模块和zero-order hold模块。对于从慢速率到快速率的非法转换,可以在慢输出端口和快输入端口插入一个单位延时(unit delay)模块。对于快速率到慢速率的转换,则可以插入一个零阶采样保持器(zero-order hold)。
(2)Singletasking:这种模式不检查模块间的速率转换,它在建立单任务系统模型时非常有用,在这种系统中不存在任务同步问题。
(3)Auto:选择这种模式时,Simulink会根据模型中模块的采样速率是否一致,自动决定切换到Multitasking模式或Singletasking模式。
3.5.2 工作空间数据导入/导出设置
工作空间数据导入/导出(Data Import/Export)设置的界面如图3.15所示,它主要在Simulink与MATLAB工作空间交换数值时进行有关选项设置,可以设置Simulink和当前工作空间的数据输入、输出。通过设置,可以从工作空间输入数据、初始化状态模块,也可以把仿真结果、状态变量、时间数据保存到当前工作空间,它包括Load from workspace、Save to workspace和Save options三个选择项。
图3.15 工作空间数据导入/导出设置的界面
(1)Load from workspace:选中前面的复选框即可从MATLAB工作空间获取时间和输入变量,一般时间变量定义为t,输入变量定义为u。Initial state用来定义从MATLAB工作空间获得的状态初始值的变量名。
Simulink通过设置模型的输入端口,实现在仿真过程中从工作空间读入数据,常用的输入端口模块为信号与系统模块库(Signals & Systems)中的In1模块,设置其参数时,选中input前的复选框,并在后面的编辑框键入输入数据的变量名,并可以用命令窗口或M文件编辑器输入数据。Simulink根据输入端口参数中设置的采样时间读取输入数据。
(2)Save to workspace:用来设置存在MATLAB工作空间的变量类型和变量名,可以选择保存的选项有:时间、端口输出、状态和最终状态。选中选项前面的复选框并在选项后面的编辑框输入变量名,就会把相应数据保存到指定的变量中。常用的输出模块为信号与系统模块库(Signals&Systems)中的Out1模块和输出方式库(Sink)中的To Workspace模块。
(3)Save options:用来设置存往工作空间的有关选项。
①Limit date points to last用来设定Simulink仿真结果最终可存往MATLAB工作空间的变量的规模,对于向量而言即其维数,对于矩阵而言即其秩。
②Decimation设定了一个亚采样因子,它的默认值为1,也就是对每一个仿真时间点产生值都保存,若为2则是每隔一个仿真时刻才保存一个值。
③Format用来说明返回数据的格式,包括数组(Array)、结构体(Structure)及带时间的结构体(Structure with time)。
④Signal logging name用来保存仿真中记录的变量名。
⑤Output options用来生成额外的输出信号数据。它有以下3个选项。
- Refine output:这个选项可以理解成精细输出,其意义是在仿真输出太稀松时,Simulink会产生额外的精细输出,这一点就像插值处理一样。用户可以在refine factor设置仿真时间步间插入的输出点数,产生更光滑的输出曲线,改变精细因子比减小仿真步长更有效。精细输出只能在变步长模式中才能使用,并且在ode45效果最好。
- Produce additional output:它允许用户直接指定产生输出的时间点。一旦选择了该项,则在它的右边出现一个output times编辑框,在这里用户指定额外的仿真输出点,它既可以是一个时间向量,也可以是表达式。与精细因子相比,这个选项会改变仿真的步长。
- Produce specified output only:让Simulink只在指定的时间点上产生输出。为此解法器要调整仿真步长以使之和指定的时间点重合。这个选项在比较不同的仿真时可以确保它们在相同的时间输出。
⑥Refine factor用来指定仿真步长之间产生数据的点数。