资源描述
第4章SIMULINK仿真基础(补充),1990年,MathWorks软件公司为MATLAB提供了新的控制系统模型图输入与仿真工具,并命名为SIMULAB,该工具很快就在控制工程界获得了广泛的认可,使得仿真软件进入了模型化图形组态阶段。但因其名字与当时比较著名的软件SIMULA类似,所以1992年正式将该软件更名为SIMULINK。SIMULINK的出现,给控制系统分析与设计带来了福音。顾名思义,该软件的名称表明了该系统的两个主要功能:Simu(仿真)和Link(连接),即该软件可以利用鼠标在模型窗口上绘制出所需要的控制系统模型,然后利用SIMULINK提供的功能来对系统进行仿真和分析。,4.1SIMULINK6.3简介,SIMULINK是MATLAB软件的扩展,它是实现动态系统建模和仿真的一个软件包,它与MATLAB语言的主要区别在于,其与用户交互接口是基于Windows的模型化图形输入,其结果是使得用户可以把更多的精力投入到系统模型的构建,而非语言的编程上。所谓模型化图形输入是指SIMULINK提供了一些按功能分类的基本的系统模块,用户只需要知道这些模块的输入输出及模块的功能,而不必考察模块内部是如何实现的,通过对这些基本模块的调用,再将它们连接起来就可以构成所需要的系统模型(以.mdl文件进行存取),进而进行仿真与分析。,1、什么是SIMULINK,(1)在matlab的命令窗口里选择Simulink图标,Simulink图标,2、Simulink6.3的启动,(2)选中【Start】里的【Simulink】下【LibraryBrowser】的菜单项命令并执行。(3)在命令窗口输入“simulink”指令后,按回车。(4)在命令窗口输入两条指令“cdd:matlab7.1toolboxsimulink”与“simulink”,然后按回车键。,3、模型窗口简介,在MATLAB的命令窗口中选择FileNewModel菜单项;单击Simulink工具栏中的“新建模型”图标;如果Simulink动态结构图已经存在,那么在MATLAB指令窗口下直接键入模型文件名字,便会直接打开该模型动态结构图的模型窗口。,(1)打开“untitled”窗口,有三种方法:,(2)模型窗口的菜单栏,【File】、【Edit】、【View】、【Simulation】、【Format】、【Tools】,(3)模型窗口的工具栏,4、SIMULINK的模块库介绍,CommonlyUsedBlocks(通用用户模块组)Continuous(连续模块)Discontinuities(断续模块)Discrete(离散模块)LogicandBitOperations(逻辑与位操作模块)LookupTables(表格模块)MathOperations(数学运算模块)ModelVerification(模型验证模块)Model-WideUtilities(模型的充分使用模块组),SIMILINK6.3模块库按功能进行分类,包括以下17类子库:,Ports&Subsystems(端口与子系统模块)SignalAttributes(信号属性模块)SignalRouting(信号传输选择模块)Sinks(输出模块)Sources(信号源模块)User-DefinedFunctions(用户自定义函数模块)AdditionalDiscrete(附加离散模块)AdditionalMath:Increment/Decrement(附加增减运算模块),5、SIMULINK简单模型的建立及模型特点,(1)简单模型的建立1)建立模型窗口2)将功能模块由模块库窗口复制到模型窗口3)对模块进行连接,从而构成需要的系统模型,(2)模型的特点在SIMULINK里提供了许多如Scope的接收器模块,这使得用SIMULNK进行仿真具有像做实验一般的图形化显示效果。SIMULINK的模型具有层次性,通过底层子系统可以构建上层母系统。SIMULINK提供了对子系统进行封装的功能,用户可以自定义子系统的图标和设置参数对话框。,4.2SIMULINK功能模块的处理,(1)模型选择直接用鼠标进行拖曳(选中模块,按住鼠标左键不放)而放到模型窗口中进行处理。在模型窗口中,选中模块,则其4个角会出现黑色标记。此时可以对模块进行以下的基本操作。(2)复制:选中模块,然后按住鼠标右键进行拖曳即可复制同样的一个功能模块。(3)移动:选中模块,按住鼠标左键将其拖曳到所需的位置即可。若要脱离线而移动,可按住shift键,再进行拖曳。(4)删除:选中模块,按Delete键即可。若要删除多个模块,可以同时按住Shift键,再用鼠标选中多个模块,按Delete键即可。也可以用鼠标选取某区域,再按Delete键就可以把该区域中的所有模块和线等全部删除。,功能模块的基本操作,包括模块的移动、复制、删除、转向、改变大小、模块命名、颜色设定、参数设定、属性设定、模块输入输出信号等。,(5)改变大小:选中模块,对模块出现的4个黑色标记进行拖曳即可。(6)转向:为了能够顺序连接功能模块的输入和输出端,功能模块有时需要转向。在菜单Format中选择FlipBlock旋转180度,选择RotateBlock顺时针旋转90度。或者直接按Ctrl+F键执行FlipBlock,按Ctrl+R键执行RotateBlock。(7)模块命名:先用鼠标在需要更改的名称上单击一下,然后直接更改即可。名称在功能模块上的位置也可以变换180度,可以用Format菜单中的FlipName来实现,也可以直接通过鼠标进行拖曳。HideName可以隐藏模块名称。(8)颜色设定:Format菜单中的ForegroundColor可以改变模块的前景颜色,BackgroundColor可以改变模块的背景颜色;而模型窗口的颜色可以通过ScreenColor来改变。,(9)模块的连接:将所有环节的模块复制到untitled模型窗口里,需要用信号线将其连接,才能描述一个控制系统的系统模型。用鼠标可以在功能模块的输入与输出端之间直接连线。所画的线可以改变粗细、设定标签,也可以把线折弯、分支。,1)改变粗细:线所以有粗细是因为线引出的信号可以是标量信号或向量信号,当选中Format菜单下的WideVectorLines时,线的粗细会根据线所引出的信号是标量还是向量而改变,如果信号为标量则为细线,name属性的作用是标明信号的名称,设置这个名称反映在模型上的直接效果就是与该信号有关的端口相连的所有直线附近都会出现写有信号名称的标签。若为向量则为粗线。选中VectorLineWidths则可以显示出向量引出线的宽度,即向量信号由多少个单一信号合成。,2)设定标签:只要在线上双击鼠标,即可输入该线的说明标签。也可以通过选中线,然后打开Edit菜单下的SignalProperties进行设定,其中signalname属性的作用是标明信号的名称,设置这个名称反映在模型上的直接效果就是与该信号有关的端口相连的所有直线附近都会出现写有信号名称的标签。3)线的折弯:按住Shift键,再用鼠标在要折弯的线处单击一下,就会出现圆圈,表示折点,利用折点就可以改变线的形状。4)线的分支:按住鼠标右键,在需要分支的地方拉出即可以。或者按住Ctrl键,并在要建立分支的地方用鼠标拉出即可。,(10)模块标题名称的修改,模块标题名称是指标识模块图标的字符串,通常在模块标题名称设置在模块图标的下方,也可设置在模块图的上方:菜单【Format】-【FlipName】或者隐藏标题名称:菜单【Format】-【Hide(Show)Name】具体的修改方法:1)鼠标左键单击模块标题,按住左键对要修改的字符部分选中使之增亮反相显示。2)按回车键,重新输入新的标题3)用鼠标左键单击窗口中任一地方,修改完成。,(11)模型文件的保存与打开,在”untitled”模型窗口中选择【File】菜单中的【Save】,模型将以原来的文件名存盘,以.mdl格式保存。也可在“untitled”模型窗口中选中【File】菜单中的【Saveas】命令将模型文件在设定的路径与设定的子目录下,以而一个新名称存盘。如果某个文件名以及存在,则再次命的新名将覆盖原来的名字。已经保存的模型文件可以用以下方法打开:使用模型窗口中菜单【File】的【Open】子菜单命令点击库浏览器里或者模型窗口里的打开文件的图标,(1)参数设定:用鼠标双击模块,就可以进入模块的参数设定窗口,从而对模块进行参数设定。参数设定窗口包含了该模块的基本功能帮助,为获得更详尽的帮助,可以点击其上的help按钮。通过对模块的参数设定,就可以获得需要的功能模块。(2)属性设定:选中模块,打开Edit菜单的BlockProperties可以对模块进行属性设定。包括Description属性、Priority优先级属性、Tag属性、Openfunction属性、Attributesformatstring属性。其中Openfunction属性是一个很有用的属性,通过它指定一个函数名,则当该模块被双击之后,Simulink就会调用该函数执行,这种函数在MATLAB中称为回调函数。(3)模块的输入输出信号:模块处理的信号包括标量信号和向量信号;标量信号是一种单一信号,而向量信号为一种复合信号,是多个信号的集合,它对应着系统中几条连线的合成。缺省情况下,大多数模块的输出都为标量信号,对于输入信号,模块都具有一种“智能”的识别功能,能自动进行匹配。某些模块通过对参数的设定,可以使模块输出向量信号。,例exp4_2.mdl,4.3SIMULINK内部参数的设定,例exp4_2.mdl,3.4SIMULINK仿真结果的显示,(1)使用示波器模块:在Sinks模块中,以下三个示波器模块可以观测仿真输出。1)Scope2)XYGraph3)Display,(2)使用ToWorkspace模块:将控制系统仿真结果信号输入到“ToWorkspace”模块中。该模块会自动将数据输出到命令窗口中,并用变量保存,可再用绘图命令绘制出图形。,(3)使用Out模块,3.5SIMULINK自定义功能模块,(1)方法11)将Signal&Systems模块库中的Subsystem功能模块复制到打开的模型窗口中。2)双击Subsystem功能模块,进入自定义功能模块窗口,从而可以利用已有的基本功能模块设计出新的功能模块。,自定义功能模块有两种方法,一种方法是采用Simulink6.3模块库浏览器的“CommonlyUsedBlocks”模块组中的Subsystem功能模块,利用其编辑区设计组合新的功能模块;另一种方法是将现有的多个功能模块组合起来,形成新的功能模块。对于很大的SIMULINK模型,通过自定义功能模块可以简化图形,减少功能模块的个数,有利于模型的分层构建。,(2)方法21)在模型窗口中建立所定义功能模块的子模块。2)用鼠标将这些需要组合的功能模块框住,然后选择Edit菜单下的CreateSubsystem即可。,双击此图标,方法2:,方法1:,用鼠标将这些需要组合的功能模块框住,选择Edit菜单下的CreateSubsystem,(3)自定义功能模块的封装提到的两种方法都只是创建一个功能模块而已,如果要命名该自定义功能模块、对功能模块进行说明、选定模块外观、设定输入数据窗口,则需要对其进行封装处理。,首先选中Subsystem功能模块,再打开Edit菜单中的MaskSubsystem进入mask的编辑窗口,可以看出有4个标签页。,Icon:设定功能模块的外观。Parameters:设定参数。Initialization:设定输入数据窗口(PromptList)。Documentation:设计该功能模块的文字说明。,3.6SIMULINK仿真的运行,1.设置仿真参数和选择解法器设置仿真参数和选择解法器,选择Simulation菜单下的Parameters命令,就会弹出一个仿真参数对话框,它主要用三个页面来管理仿真的参数。,构建好一个系统的模型之后,接下来的事情就是运行模型,得出仿真结果。运行一个仿真的完整过程分成三个步骤:设置仿真参数,启动仿真和仿真结果分析。,Solver页,它允许用户设置仿真的开始和结束时间,选择解法器,说明解法器参数及选择一些输出选项。WorkspaceI/O页,作用是管理模型从MATLAB工作空间的输入和对它的输出。Diagnostics页,允许用户选择Simulink在仿真中显示的警告信息的等级。,(1)Solver页,此页可以进行的设置有:选择仿真开始和结束的时间;选择解法器,并设定它的参数;选择输出项。仿真时间:注意这里的时间概念与真实的时间并不一样,只是计算机仿真中对时间的一种表示,比如10秒的仿真时间,如果采样步长定为0.1,则需要执行100步,若把步长减小,则采样点数增加,那么实际的执行时间就会增加。一般仿真开始时间设为0,而结束时间视不同的因素而选择。总的说来,执行一次仿真要耗费的时间依赖于很多因素,包括模型的复杂程度、解法器及其步长的选择、计算机时钟的速度等等。仿真步长模式:用户在Type后面的第一个下拉选项框中指定仿真的步长选取方式,可供选择的有Variable-step(变步长)和Fixed-step(固定步长)方式。变步长模式可以在仿真的过程中改变步长,提供误差控制和过零检测。固定步长模式在仿真过程中提供固定的步长,不提供误差控制和过零检测。用户还可以在第二个下拉选项框中选择对应模式下仿真所采用的算法。,变步长模式解法器有:ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb和discrete。ode45:缺省值,四/五阶龙格库塔法,适用于大多数连续或离散系统,但不适用于刚性(stiff)系统。它是单步解法器,也就是,在计算y(tn)时,它仅需要最近处理时刻的结果y(tn-1)。一般来说,面对一个仿真问题最好是首先试试ode45。ode23:二/三阶龙格库塔法,它在误差限要求不高和求解的问题不太难的情况下,可能会比ode45更有效。也是一个单步解法器。ode113:是一种阶数可变的解法器,它在误差容许要求严格的情况下通常比ode45有效。ode113是一种多步解法器,也就是在计算当前时刻输出时,它需要以前多个时刻的解。ode15s:是一种基于数字微分公式的解法器(NDFs)。也是一种多步解法器。适用于刚性系统,当用户估计要解决的问题是比较困难的,或者不能使用ode45,或者即使使用效果也不好,就可以用ode15s。,ode23s:它是一种单步解法器,专门应用于刚性系统,在弱误差允许下的效果好于ode15s。它能解决某些ode15s所不能有效解决的stiff问题。ode23t:是梯形规则的一种自由插值实现。这种解法器适用于求解适度stiff的问题而用户又需要一个无数字振荡的解法器的情况。ode23tb:是TR-BDF2的一种实现,TR-BDF2是具有两个阶段的隐式龙格库塔公式。discrtet:当Simulink检查到模型没有连续状态时使用它。,固定步长模式解法器有:ode5,ode4,ode3,ode2,ode1和discrete。ode5:缺省值,是ode45的固定步长版本,适用于大多数连续或离散系统,不适用于刚性系统。ode4:四阶龙格库塔法,具有一定的计算精度。ode3:固定步长的二/三阶龙格库塔法。ode2:改进的欧拉法。ode1:欧拉法。discrete:是一个实现积分的固定步长解法器,它适合于离散无连续状态的系统。,步长参数:对于变步长模式,用户可以设置最大的和推荐的初始步长参数,缺省情况下,步长自动地确定,它由值auto表示。Maximumstepsize(最大步长参数):它决定了解法器能够使用的最大时间步长,它的缺省值为“仿真时间/50”,即整个仿真过程中至少取50个取样点,但这样的取法对于仿真时间较长的系统则可能带来取样点过于稀疏,而使仿真结果失真。一般建议对于仿真时间不超过15s的采用默认值即可,对于超过15s的每秒至少保证5个采样点,对于超过100s的,每秒至少保证3个采样点。Initialstepsize(初始步长参数):一般建议使用“auto”默认值即可。仿真精度的定义(对于变步长模式)Relativetolerance(相对误差):它是指误差相对于状态的值,是一个百分比,缺省值为1e-3,表示状态的计算值要精确到0.1%。Absolutetolerance(绝对误差):表示误差值的门限,或者是说在状态值为零的情况下,可以接受的误差。如果它被设成了auto,那么simulink为每一个状态设置初始绝对误差为1e-6。,Mode(Fixed-step固定步长模式选择)Multitasking:选择这种模式时,当simulink检测到模块间非法的采样速率转换,它会给出错误提示。所谓的非法采样速率转换指两个工作在不同采样速率的模块之间的直接连接。在实时多任务系统中,如果任务之间存在非法采样速率转换,那么就有可能出现一个模块的输出在另一个模块需要时却无法利用的情况。通过检查这种转换,Multitasking将有助于用户建立一个符合现实的多任务系统的有效模型。使用速率转换模块可以减少模型中的非法速率转换。Simulink提供了两个这样的模块:unitdelay模块和zero-orderhold模块。对于从慢速率到快速率的非法转换,可以在慢输出端口和快输入端口插入一个单位延时unitdelay模块。而对于快速率到慢速率的转换,则可以插入一个零阶采样保持器zero-orderhold。Singletasking:这种模式不检查模块间的速率转换,它在建立单任务系统模型时非常有用,在这种系统就不存在任务同步问题。Auto:这种模式,simulink会根据模型中模块的采样速率是否一致,自动决定切换到multitasking和singletasking。,(2)WorkspaceI/O页(DataImport/Export),此页主要用来设置SIMULINK与MATLAB工作空间交换数值的有关选项。Loadfromworkspace:选中前面的复选框即可从MATLAB工作空间获取时间和输入变量,一般时间变量定义为t,输入变量定义为u。Initialstate用来定义从MATLAB工作空间获得的状态初始值的变量名。Savetoworkspace:用来设置存往MATLAB工作空间的变量类型和变量名,选中变量类型前的复选框使相应的变量有效。一般存往工作空间的变量包括输出时间向量(Time)、状态向量(States)和输出变量(Output)。Finalstate用来定义将系统稳态值存往工作空间所使用的变量名。Saveoption:用来设置存往工作空间的有关选项。Limitrowstolast用来设定SIMULINK仿真结果最终可存往MATLAB工作空间的变量的规模,对于向量而言即其维数,对于矩阵而言即其秩;Decimation设定了一个亚采样因子,它的缺省值为1,也就是对每一个仿真时间点产生值都保存,而若为2,则是每隔一个仿真时刻才保存一个值。Format用来说明返回数据的格式,包括矩阵matrix、结构struct及带时间的结构structwithtime。,Outputoptions:输出选项Refineoutput:这个选项可以理解成精细输出,其意义是在仿真输出太稀松时,simulink会产生额外的精细输出,这一点就像插值处理一样。用户可以在refinefactor设置仿真时间步间插入的输出点数。产生更光滑的输出曲线,改变精细因子比减小仿真步长更有效。精细输出只能在变步长模式中才能使用,并且在ode45效果最好。Produceadditionaloutput:它允许用户直接指定产生输出的时间点。一旦选择了该项,则在它的右边出现一个outputtimes编辑框,在这里用户指定额外的仿真输出点,它既可以是一个时间向量,也可以是表达式。与精细因子相比,这个选项会改变仿真的步长。Producespecifiedoutputonly:它的意思是让simulink只在指定的时间点上产生输出。为此解法器要调整仿真步长以使之和指定的时间点重合。这个选项在比较不同的仿真时可以确保它们在相同的时间输出。,(3)Diagnostics页,此页分成两个部分:仿真选项和配置选项。配置选项下的列表框主要列举了一些常见的事件类型,以及当SIMULINK检查到这些事件时给予的处理。仿真选项options主要包括是否进行一致性检验、是否禁用过零检测、是否禁止复用缓存、是否进行不同版本的SIMULINK的检验等几项。除了上述3个主要的页外,仿真参数设置窗口还包括real-timeworkshop页,主要用于与C语言编辑器的交换,通过它可以直接从SIMULINK模型生成代码并且自动建立可以在不同环境下运行的程序,这些环境包括实时系统和单机仿真。,2.启动仿真设置仿真参数和选择解法器之后,就可以启动仿真而运行。选择Simulink菜单下的start选项来启动仿真,如果模型中有些参数没有定义,则会出现错误信息提示框。如果一切设置无误,则开始仿真运行,结束时系统会发出一鸣叫声。除了直接在SIMULINK环境下启动仿真外,还可以在MATLAB命令窗口中通过函数进行,格式如下:t,x,y=sim(模型文件名,totf,simset(参数1,参数值1,参数2,参数值2,)其中to为仿真起始时间,tf为仿真终止时间。t,x,y为返回值,t为返回的时间向量值,x为返回的状态值,y为返回的输出向量值。simset定义了仿真参数,包括以下一些主要参数:AbsTol:默认值为1e-6设定绝对误差范围。Decimation:默认值为1,决定隔多少个点返回状态和输出值。Solver:解法器的选择。,MaxRows:默认值为0,表示不限制。若为大于零的值,则表示限制输出和状态的规模,使其最大行数等于该数值。InitialState:一个向量值,用于设定初始状态。FixedStep:用一个正数表示步阶的大小,仅用于固定步长模式。MaxStep:默认值为auto。用于变步长模式,表示最大的步阶大小。如果知道模型文件名称,可以用以下命令得到该模型的仿真参数:simget(模型文件名),【例】已知一个单位反馈系统框图如图所示,其中。,R=1,试绘制其系统结构图模型,标注模块标题“三阶系统的阶跃响应”,并以文件名“Zhang4sys1”文件名存盘。,3.7SIMULINK仿真举例,绘制该系统结构图步骤如下:按以下步骤创建一个新的“untitled”模型窗口。,点击Sources,选中信号源模块组中的Step模块,并拖拽到“untitled”模型窗口。,在各模块库中,选中需要的标准功能模块并拖拽到“untitled”模型窗口。双击“TransferFcn”模块,在得出的对话框中,分别输入系统的分子和分母参数,即可得到修改后的系统模型。,仿真参数的设置,仿真参数设置,启动仿真,仿真参数对话框及默认值,从仿真曲线看,系统按默认参数仿真,其结果不完整(过渡过程为结束)。需要修改仿真用参数后再仿真。,解算器,工作空间,诊断,用鼠标左键选中并单击I积分环节模块标题“ntegrator”,将原标题字符删除重新输入汉字“积分环节”;并可依次修改其他模块标题。最后,再在窗口空白处,双击鼠标左键,输入文字“二阶系统的阶跃响应”。,对建好的系统结构图模型按“zhang4sys1.mdl”命名并存盘,SIMULINK是MATLAB的一个扩展软件,它是基于模型化图型输入的仿真环境。模型化图型输入使得用户可以把更多的精力投入到模型的构建上来,要求熟悉各功能模块库中各子模块的功能,熟练掌握SIMULINK环境下模块的操作及线的处理,掌握自定义功能模块。掌握SIMULINK解法器的设置。使用SIMULINK进行仿真分析的关键是熟练地运用各功能子模块构建出需要的正确的系统模型并合理地设置解法器以使仿真得以正常运行。,本章小结,
展开阅读全文