一、设置仿真参数和选择解法器 自动控制网www.eadianqi.com版权所有 构建好一个系统的模型之后,接下来的事情就是运行模型,得出仿真结果。运行一个仿真的完整过程分成三个步骤:设置仿真参数,启动仿真和仿真结果分析。 本文来自www.eadianqi.com
设置仿真参数和选择解法器,选择Simulation菜单下的Parameters命令,就会弹出一个仿真参数对话框,它主要用三个页面来管理仿真的参数。 本文来自www.eadianqi.com i)Solver页,它允许用户设置仿真的开始和结束时间,选择解法器,说明解法器参数及选择一些输出选项。 自动控制网www.eadianqi.com版权所有 ii)WorkspaceI/O页,作用是管理模型从MATLAB工作空间的输入和对它的输出。 自动控制网www.eadianqi.com版权所有 iii)Diagnostics页,允许用户选择Simulink在仿真中显示的警告信息的等级。 自动控制网www.eadianqi.com版权所有 (一)Solver页 本文来自www.eadianqi.com 此页可以进行的设置有:选择仿真开始和结束的时间;选择解法器,并设定它的参数;选择输出项。 自动控制网www.eadianqi.com版权所有 1)仿真时间:注意这里的时间概念与真实的时间并不一样,只是计算机仿真中对时间的一种表示,比如10秒的仿真时间,如果采样步长定为0.1,则需要执行100步,若把步长减小,则采样点数增加,那么实际的执行时间就会增加。一般仿真开始时间设为0,而结束时间视不同的因素而选择。总的说来,执行一次仿真要耗费的时间依赖于很多因素,包括模型的复杂程度解法器及其步长的选择计算机时钟的速度等等。 自动控制网www.eadianqi.com版权所有 2)仿真步长模式:用户在Type后面的第一个下拉选项框中指定仿真的步长选取方式,可供选择的有Variable-step(变步长)和Fixed-step(固定步长)方式。变步长模式可以在仿真的过程中改变步长,提供误差控制和过零检测。固定步长模式在仿真过程中提供固定的步长,不提供误差控制和过零检测。用户还可以在第二个下拉选项框中选择对应模式下仿真所采用的算法。 本文来自www.eadianqi.com 3)步长参数:对于变步长模式,用户可以设置最大的和推荐的初始步长参数,缺省情况下,步长自动地确定,它由值auto表示。 本文来自www.eadianqi.com
a)Maximumstepsize(最大步长参数):它决定了解法器能够使用的最大时间步长,它的缺省值为“仿真时间/50”,即整个仿真过程中至少取50个取样点,但这样的取法对于仿真时间较长的系统则可能带来取样点过于稀疏,而使仿真结果失真。一般建议对于仿真时间不超过15s的采用默认值即可,对于超过15s的每秒至少保证5个采样点,对于超过100s的,每秒至少保证3个采样点。 本文来自www.eadianqi.com b)Initialstepsize(初始步长参数):一般建议使用“auto”默认值即可。 自动控制网www.eadianqi.com版权所有 4)仿真精度的定义(对于变步长模式) 本文来自www.eadianqi.com
a)Relativetolerance(相对误差):它是指误差相对于状态的值,是一个百分比,缺省值为1e-3,表示状态的计算值要精确到0.1%。 自动控制网www.eadianqi.com版权所有 b)Absolutetolerance(绝对误差):表示误差值的门限,或者是说在状态值为零的情况下,可以接受的误差。如果它被设成了auto,那么simulink为每一个状态设置初始绝对误差为1e-6。 自动控制网www.eadianqi.com版权所有 5)Mode(固定步长模式选择) 本文来自www.eadianqi.com a)Multitasking:选择这种模式时,当simulink检测到模块间非法的采样速率转换,它会给出错误提示。所谓的非法采样速率转换指两个工作在不同采样速率的模块之间的直接连接。在实时多任务系统中,如果任务之间存在非法采样速率转换,那么就有可能出现一个模块的输出在另一个模块需要时却无法利用的情况。通过检查这种转换,Multitasking将有助于用户建立一个符合现实的多任务系统的有效模型。 本文来自www.eadianqi.com 使用速率转换模块可以减少模型中的非法速率转换。Simulink提供了两个这样的模块:unitdelay模块和zero-orderhold模块。对于从慢速率到快速率的非法转换,可以在慢输出端口和快输入端口插入一个单位延时unitdelay模块。而对于快速率到慢速率的转换,则可以插入一个零阶采样保持器zero-orderhold。 本文来自www.eadianqi.com b)Singletasking:这种模式不检查模块间的速率转换,它在建立单任务系统模型时非常有用,在这种系统就不存在任务同步问题。 自动控制网www.eadianqi.com版权所有 c)Auto:这种模式,simulink会根据模型中模块的采样速率是否一致,自动决定切换到multitasking和singletasking。 自动控制网www.eadianqi.com版权所有
6)输出选项 自动控制网www.eadianqi.com版权所有
a)Refineoutput:这个选项可以理解成精细输出,其意义是在仿真输出太稀松时,simulink会产生额外的精细输出,这一点就像插值处理一样。用户可以在refinefactor设置仿真时间步间插入的输出点数。 自动控制网www.eadianqi.com版权所有 产生更光滑的输出曲线,改变精细因子比减小仿真步长更有效。精细输出只能在变步长模式中才能使用,并且在ode45效果最好。 自动控制网www.eadianqi.com版权所有 b)Produceadditionaloutput:它允许用户直接指定产生输出的时间点。一旦选择了该项,则在它的右边出现一个outputtimes编辑框,在这里用户指定额外的仿真输出点,它既可以是一个时间向量,也可以是表达式。与精细因子相比,这个选项会改变仿真的步长。 自动控制网www.eadianqi.com版权所有
c)Producespecifiedoutputonly:它的意思是让simulink只在指定的时间点上产生输出。为此解法器要调整仿真步长以使之和指定的时间点重合。这个选项在比较不同的仿真时可以确保它们在相同的时间输出。 本文来自www.eadianqi.com (二)WorkspaceI/O页 本文来自www.eadianqi.com
此页主要用来设置SIMULINK与MATLAB工作空间交换数值的有关选项。 本文来自www.eadianqi.com a)Loadfromworkspace:选中前面的复选框即可从MATLAB工作空间获取时间和输入变量,一般时间变量定义为t,输入变量定义为u。Initialstate用来定义从MATLAB工作空间获得的状态初始值的变量名。 自动控制网www.eadianqi.com版权所有 b)Savetoworkspace:用来设置存往MATLAB工作空间的变量类型和变量名,选中变量类型前的复选框使相应的变量有效。一般存往工作空间的变量包括输出时间向量(Time)状态向量(States)和输出变量(Output)。Finalstate用来定义将系统稳态值存往工作空间所使用的变量名。 本文来自www.eadianqi.com c)Saveoption:用来设置存往工作空间的有关选项。Limitrowstolast用来设定SIMULINK仿真结果最终可存往MATLAB工作空间的变量的规模,对于向量而言即其维数,对于矩阵而言即其秩;Decimation设定了一个亚采样因子,它的缺省值为1,也就是对每一个仿真时间点产生值都保存,而若为2,则是每隔一个仿真时刻才保存一个值。Format用来说明返回数据的格式,包括矩阵matrix结构struct及带时间的结构structwithtime。 本文来自www.eadianqi.com (三)Diagnostics页 本文来自www.eadianqi.com 此页分成两个部分:仿真选项和配置选项。配置选项下的列表框主要列举了一些常见的事件类型,以及当SIMULINK检查到这些事件时给予的处理。仿真选项options主要包括是否进行一致性检验是否禁用过零检测是否禁止复用缓存是否进行不同版本的SIMULINK的检验等几项。 本文来自www.eadianqi.com 除了上述3个主要的页外,仿真参数设置窗口还包括real-timeworkshop页,主要用于与C语言编辑器的交换,通过它可以直接从SIMULINK模型生成代码并且自动建立可以在不同环境下运行的程序,这些环境包括实时系统和单机仿真。 本文来自www.eadianqi.com 二、启动仿真 自动控制网www.eadianqi.com版权所有 设置仿真参数和选择解法器之后,就可以启动仿真而运行。 本文来自www.eadianqi.com 选择Simulink菜单下的start选项来启动仿真,如果模型中有些参数没有定义,则会出现错误信息提示框。如果一切设置无误,则开始仿真运行,结束时系统会发出一鸣叫声。 本文来自www.eadianqi.com 除了直接在SIMULINK环境下启动仿真外,还可以在MATLAB命令窗口中通过函数进行,格式如下: 本文来自www.eadianqi.com [t,x,y]=sim(‘模型文件名’,[totf],simset(‘参数1’,参数值1,‘参数2’,参数值2,…)) 自动控制网www.eadianqi.com版权所有 其中to为仿真起始时间,tf为仿真终止时间。[t,x,y]为返回值,t为返回的时间向量值,x为返回的状态值,y为返回的输出向量值。simset定义了仿真参数,包括以下一些主要参数: 本文来自www.eadianqi.com AbsTol:默认值为1e-6设定绝对误差范围。 自动控制网www.eadianqi.com版权所有
Decimation:默认值为1,决定隔多少个点返回状态和输出值。 自动控制网www.eadianqi.com版权所有 Solver:解法器的选择。 自动控制网www.eadianqi.com版权所有 MaxRows:默认值为0,表示不限制。若为大于零的值,则表示限制输出和状态的规模,使其最大行数等于该数值。 本文来自www.eadianqi.com InitialState:一个向量值,用于设定初始状态。 自动控制网www.eadianqi.com版权所有 FixedStep:用一个正数表示步阶的大小,仅用于固定步长模式。 自动控制网www.eadianqi.com版权所有
MaxStep:默认值为auto。用于变步长模式,表示最大的步阶大小。 自动控制网www.eadianqi.com版权所有 如果知道模型文件名称,可以用以下命令得到该模型的仿真参数: 本文来自www.eadianqi.com
simget(‘模型文件名’) 本文来自www.eadianqi.com |