




已阅读5页,还剩114页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB/Simulink设计,湖南大学电气与信息工程学院,计算机仿真技术,第7讲MATLAB/Simulink设计,7.1Simulink简介,7.2模块库及简单建模,7.3仿真运行及参数调整,7.4子系统,7.5S函数,1.Simulink简介,Simulink中的“Simu”一词表示可用于计算机仿真,而“Link”一词表示它能进行系统连接,即把一系列模块连接起来,构成复杂的系统模型。Simulink是一个用来对动态系统进行建模、仿真和分析的软件包。它让用户把精力从编程转向模型的构造.使用Simulink来建模、分析和仿真各种动态系统(包括连续系统、离散系统和混合系统),将是一件非常轻松的事情。利用Simulink进行系统的建模仿真,其最大的优点是易学、易用,并能依托MATLAB提供的丰富的仿真资源。,近几年来,在学术界和工业领域,Simulink已经成为动态系统建模和仿真领域中应用最为广泛的软件之一。Simulink可以很方便地创建和维护一个完整地模块,评估不同地算法和结构,并验证系统的性能。由于Simulink是采用模块组合方式来建模,从而可以使得用户能够快速、准确地创建动态系统的计算机仿真模型,特别是对复杂的不确定非线性系统,更为方便。Simulink模型可以用来模拟线性和非线性、连续和离散或者两者的混合系统,也就是说它可以用来模拟几乎所有可能遇到动态系统。另外Simulink还提供一套图形动画的处理方法,使用户可以方便的观察到仿真的整个过程。Simulink没有单独的语言,但是它提供了S函数规则。所谓的S函数可以是一个M函数文件、FORTRAN程序、C或C+语言程序等,通过特殊的语法规则使之能够被Simulink模型或模块调用。S函数使Simulink更加充实、完备,具有更强的处理能力。,提供了仿真库的扩充和定制机制Simulink的开放式结构允许用户扩展仿真环境的功能:采用MATLAB、FORTRAN和C代码生成自定义模块库,并拥有自己的图标和界面。与MATLAB工具箱的集成由于Simulink可以直接利用MATLAB的诸多资源与功能,因而用户可以直接在Simulink下完成诸如数据分析、过程自动化、优化参数等工作。,Simulink应用领域,simulink在matlab家族中的位置,coder,Simulink的启动主要有以下两种方法:在MATLAB的命令窗口中输入simulink,结果是在桌面上出现一个SimulinkLibraryBrowser的窗口。单击MATLAB主窗口的快捷按钮,打开SimulinkLibraryBrowser窗口。,matlab函数仿真与simulink仿真的区别1、数据流仿真按照数据流的顺序,依次执行,即处理的数据首先通过一个运算阶后在激活下一个运算阶。例如:m=16;n=15;k=11;fc=10000;fd=1000;fs=100000;msg=randint(k*100,1);code=encode(msg,n,k,bch);modu=dmod(code,fc,fd,fs,qask,m);modu_noise=modu+randn(length(modu),1);demo=ddemod(modu_noise,fc,fd,fs,qask,m);msg_r=decode(demo,n,k,bch);rate=biterr(msg,msg_r);,2、时间流仿真所有模块在同一时间步长上同时执行。,Simulink模型窗口的建立,在Simulink中打开一个空白的模型窗口的方法:选中Simulink菜单系统中的File|New|Model菜单项后,会生成一个Simulink窗口;单击Simulink工具栏中的“新建模型”图标;在MATLAB的命令窗口中选择File|New|NewModel菜单项;,2.模块库及简单建模,第七章Simulink建模和仿真7.1Simulink的概述和基本操作,图7.1.1Simulink模型元素关联图,7.1.2基本操作一、模型基本结构一个典型的Simulink模型包括如下三种类型的元素:信号源模块被模拟的系统模块输出显示模块如图7.1.1所示说明了这三种元素之间的典型关系。系统模块作为中心模块是Simulink仿真建模所要解决的主要部分;信号源为系统的输入,它包括常数信号源函数信号发生器(如正弦和阶跃函数波等)和用户自己在Matlab中创建的自定义信号或Matlab工作间中三种。输出模块主要在Sinks库中。,第七章Simulink建模和仿真7.1Simulink的概述和基本操作,Simulink模型并不一定要包含全部的三种元素,在实际应用中通常可以缺少其中的一个或两个。例如,若要模拟一个系统偏离平衡位置后的恢复行为,就可以建立一个没有输入而只有系统模块加一个显示模块的模型。在某种情况下,也可以建立一个只有源模块和显示模块的系统。若需要一个由几个函数复合的特殊信号,则可以使用源模块生成信号并将其送入Matlab工作间或文件中。二、仿真运行原理Simulink仿真包括两个阶段;初始化阶段和模型执行阶段(1)模块初始化在初始化阶段主要完成以下工作:模型参数传给Matlab进行估值,得到的数值结果将作为模型的实际参数;展开模型的各个层次,每一个非条件执行的子系统被它所包含的模块所代替;,第七章Simulink建模和仿真7.1Simulink的概述和基本操作,模型中的模块按更新的次序进行排序。排序算法产生一个列表以确保具有代数环的模块在产生它的驱动输入的模块被更新后才更新。当然,这一步要先检测出模型中存在的代数环。决定模型中有无显示设定的信号属性,例如名称、数据类型、数值类型以及大小等,并且检查每个模块是否能够接受连接到它输入端的信号。Simulink使用属性传递的过程来确定未被设定的属性,这个过程将源信号的属性传递到它所驱动的模块的输入信号;决定所有无显示设定采样时间的模块的采样时间;分配和初始化用于存储每个模块的状态和输入当前值的存储空间。完成这些工作后就可以进行仿真了。2)模型执行一般模型是使用数值积分来进行仿真的。所运用的仿真解法器(仿真算法)依赖于模型提供它的连续状态微分能力。计算微分可以分两步进行:,第七章Simulink建模和仿真7.1Simulink的概述和基本操作,首先,按照排序所决定的次序计算每个模块的输出。然后,根据当前时刻的输入和状态来决定状态的微分;得到微分向量后再把它返回给解法器;后者用来计算下一个采样点的状态向量。一旦新的状态向量计算完毕,被采样的数据源模块和接受模块才被更新。在仿真开始时模型设定待仿真系统的初始状态和输出。在每一个时间步中,Simulink计算系统的输入、状态和输出,并更新模型来反映计算出的值。在仿真结束时,模型得出系统的输入、状态和输出。在每个时间步中,Simulink所采取的动作依次为:按排列好的次序更新模型中模块的输出。Simulink通过调用模块的输出函数计算模块的输出。Simulink只把当前值、模块的输入以及状态量传给这些函数计算模块的输出。对于离散系统,Simulink只有在当前时间是模块采样时间的整数倍时,才会更新模块的输出。,第七章Simulink建模和仿真7.1Simulink的概述和基本操作,按排列好的次序更新模型中模块的状态,Simulink计算一个模块的离散状态的方法时调用模块的离散状态更新函数。而对于连续状态,则对连续状态的微分(在模块可调用的函数里,有一个用于计算连续微分的函数)进行数值积分来获得当前的连续状态。检查模块连续状态的不连续点。Simulink使用过零检测来检测连续状态的不连续点。计算下一个仿真时间步的时间。这是通过调用模块获得下一个采样时间函数来完成的。(3)定模块更新次序在仿真中,Simulink更新状态和输出都要根据事先确定的模块更新次序,而更新次序对方针结果的有效性来说非常关键。特别当模块的输出是当前输入值的函数时,这个模块必须在驱动它的模块被更新之后才能被更新,否则,模块的输出将没有意义。,第七章Simulink建模和仿真7.1Simulink的概述和基本操作,注意:不要把模块保存到模块文件的次序与仿真过程模块被更新的次序相混淆。Simulink在模块初始化时以将模块排好正确的次序。为了建立有效的更新次序,Simulink根据输入和输出的关系将模块分类。其中,当前输出依赖于当前输入的模块称为直接馈入模块,所有其他的模块都称为非虚拟模块。直接馈入模块的例子有Gain、Product和Sum模块;非直接馈入模块的例子有Integrator模块(它的输出只依赖于它的状态),Constant模块(没有输入)和Memory模块(它的输出只依赖于前一个模块的输入)。基于上述分类,Simulink使用下面两个基本规则对模块进行排序:每个模块必须在它驱动的所有模块更新之前被更新。这条规则确保了模块被更新时输入有效。若非直接馈入模块在直接馈入模块之前更新,则它们的更新次序可以是任意的。这条规则允许Simulink在排序过程中忽略非虚拟模块。另外一个约束模块更新次序的因素是用户给模块设定优先级,Simulink在低优先级模块之前更新高优先级模块。,SIMULINK模型,外表:直观的方框图文件:MDL文件数学:微分方程或差分方程行为:模拟物理过程的动态性状,Simulink动态仿真,Simulink基本操作利用Simulink进行系统仿真的步骤是:启动Simulink,打开Simulink模块库打开空白模型窗口;建立Simulink仿真模型;设置仿真参数,进行仿真;输出仿真结果。,Simulink仿真过程1初始化阶段对模型的参数进行估计,得到它们实际计算的值。展开模型的各个层次;按照更新的次序对模型进行排序;确定那些显式化的信号属性,并检查每个模块是否能够接受连接它们输入端的信号;确定所有非显式的信号采样时间模块的采样时间;分配和初始化存储空间,以便存储每个模块的状态和当前值的输出。,2模型执行阶段模型仿真是通过数值积分来进行完成的,计算数值积分可以采用以下两步来进行:按照秩序计算每个模块的积分;根据当前输入和状态来决定状态的微分,得到微分矢量,然后把它返回给解法器,以计算下一个采样点的状态矢量。在每一个时间步中,Simulink依次解决下列问题:按照秩序更新模块的输出;按照秩序更新模块的状态;检查模块连续状态的不连续点;计算下一个仿真时间步的时间。,Simulink的模块库,Simulink的模块库能够对系统模块进行有效的管理与组织可以直接将模块库中的模块拖动或者拷贝到用户的系统模型中以构建动态系统模型。,Simulink公共模块库,Simulink中最为基础、最为通用的模块库,它可以被应用到不同的专业领域中。Simulink模块库按功能分为以下16类子模块库:(1)CommonlyUsedBlocks:仿真常用模块库(2)Continuous:连续系统模块库(3)Discontinuities:非线性系统模块库(4)Discrete:离散系统模块库(5)LogicandBitOperations:逻辑运算和位运算模块库(6)LookupTables:查找表模块库(7)MathOperations:数学运算模块库(8)ModelVerification:模型验证模块库(9)Model-WideUtilities:进行模型扩充的实用模块库(10)Ports将系统模块插入到系统模型中;查看系统模块的参数设置;以及回到系统模块的上一层库。,此外还可以进行以下操作:(1)使用鼠标左键选择并拖动系统模块,并将其拷贝到系统模型中。(2)在模块搜索栏中搜索所需的系统模块。,相关操作:,模块库SineWave来自sources;Gain来自MathOperations;Scope来自Sinks连接方法(1)拖动对应端口进行连接(2)单击起始模块后,按Ctrl键再单击目标模块模块复制传统方式Ctrl+C/Ctrl+V、或Ctrl键再拖动模块模块插入对于单输入单输出模块,只需将这个模块移到线上就可以自动连接。,SIMULINK模型,外表:直观的方框图文件:MDL文件数学:微分方程或差分方程行为:模拟物理过程的动态性状,建立私有模块库,步骤:1)在simulink中执行ile/new/library2)将用户定义的模块或是其它模块库中的模块移动到新的模块库中。3)保存新的模块库,模块的基本操作,1模块选取(1)选取单个模块;(2)选取多个模块;2模块复制(1)在同一窗口内复制(2)在不同的窗口之间复制3模块删除选中模块,按Delete键即可。删除多个模块,可以同时按住Shift键,再用鼠标选中多个模块,再按Delete键;4模块外形的调整(1)改变大小(2)转向(3)给模块加阴影5模块名的处理(1)是否显示模块名(2)修改模块名(3)改变模块名的位置6模块颜色设定【Format】菜单中的【ForegroundColor】可以改变模块的前景颜色,【BackgroundColor】可以改变模块的背景颜色,而模型窗口的颜色可以通过【ScreenColor】来改变。7模块属性设定选中模块,打开【Edit】【BlockProperties】可以对模块进行属性设定,包括对Description、Priority、Tag、Openfunction、Attributesformatstring等属性的设定。,连线操作,1模块间连线在模块间连线,有以下几种情况:(1)连接两个模块(2)模块间连线的调整(3)在连线之间插入模块(4)连线的分支2在连线上标示信息在连线上标示的信息包括表示向量、显示数据类型和标记等。(1)标示向量(2)显示数据类型(3)信号标记,信号组合在利用Simulink进行系统仿真时,在很多情况下,需要将系统中某些模块的输出信号(一般为标量)组合成一个向量信号,并将得到的信号作为另外一个模块的输入。,来自SignalRouting的BusCreator,简单建模:,支持向量显示,Mux,支持标量扩展,插入模块,49,例1动态画圆:(1);(用正弦波发生器SineWave)双击图标出现相应的模块参数框,可在其中设置参数.SineWave中Phase(相位)为pi/2,实际为cost;SineWave1中Phase为0.,50,(2);(用正弦波发生器SineWave和积分器Integrator)SineWave中Phase(相位)为pi/2,实际为cost;Integrator中Initialcondition(初始值)为0.XYGraph中,x的范围为1.51.5,y的范围为1.21.2.,51,(3)(用状态空间State-Space)State-Space中,A=0,1;1,0,B=0;0,C=1,0;0,1,D=0;0.Initialconditions为1;0.双击XYGraph图标,可定x的范围为1.51.5,y的范围为1.21.2.Scope的y刻度可右击示波器刻度区出现对话框,进入AxesPropeties窗口确定.,52,显示结果如下:,积分模块应用:复位积分,负变正时强迫清零,微分方程,构造微分方程求解模型,Simulink仿真举例(续),3.仿真运行及参数调整,系统模块参数设置与系统仿真参数设置双击系统模块,打开系统模块的参数设置对话框。在参数设置对话框中设置合适的模块参数。设置合适的系统仿真参数以进行动态系统的仿真在Simulation菜单的Simulationparameters.子菜单中进行设置,如仿真时间等运行仿真单击系统模型编辑器上的Play图标(黑色三角)或选择Simulation菜单下的Start便可以对系统进行仿真分析。仿真结束后双击Scope模块以显示系统仿真的输出结果,图2.11Simulink设置窗口,仿真解法,变步长解法,定步长解法,discrere:针对无连续状态系统的特殊解法ode45:基于Dormand-Prince4-5阶的Runge-Kutta公式ode23:基于Bogachi-Shampine2-3阶的Runge-Kutta公式ode113:变阶次Adams-Bashforth-Moulton解法ode15s:刚性系统的变阶次多步解法ode23s:刚性系统的固定阶次单步解法,discrere:针对无连续状态系统的特殊解法ode5:ode45确定步长的函数解法ode4:使用固定步长的经典4阶的Runge-Kutta公式的函数解法ode3:ode25的确定步长的函数解法ode2:使用固定步长的经典2阶的Runge-Kutta公式的函数解法ode1:固定步长的Euler解法,仿真器参数设置,仿真器参数设置可用于选择仿真开始时间、仿真结束时间、解法器及输出项等。对于一般的仿真,使用默认设置即可。1仿真时间(Simulationtime)设置需要设置的有仿真开始时间(Starttime)和仿真结束时间(Stoptime)。2仿真步长模式设置可供选择的有“Variable-step”(变步长)和“Fixed-step”(固定步长)方式。3解法器设置用户在“Solver”后面的下拉选项中可以选择变步长模式解法器或固定步长模式解法器。变步长模式解法器有:discrete、ode45、ode23、ode113、ode15s、ode23s、ode23t和ode23tb。4变步长的参数设置对于变步长模式,用户常用的设置有:最大和最小步长参数、相对误差和绝对误差、初始步长以及过零控制。默认情况下,步长自动确定,用auto值表示。5固定步长的参数设置对于固定步长模式,用户常用的设置有:(1)Multitasking模式;(2)Singletasking模式;(3)Auto模式,工作空间数据导入/导出设置,工作空间数据导入/导出(DataImport/Export)设置主要在Simulink与MATLAB工作空间交换数值时进行有关选项设置,可以设置以下三个选择项。(1)Loadfromworkspace:选中前面的复选框即可从MATLAB工作空间获取时间和输入变量,一般时间变量定义为t,输入变量定义为u。(2)Savetoworkspace:用来设置保存在MATLAB工作空间的变量类型和变量名。(3)Saveoptions:用来设置存往工作空间的有关选项。,Scope高级使用技术,Scope模块的General选项卡,Scope模块的Datahistory选项卡,使用命令操作对系统进行仿真,支持命令窗口运行仿真的函数有4个,即sim、simset、simget和set_param。(1)sim函数sim函数的作用是运行一个由Simulink建立的模型,其调用格式为:t,x,y=sim(modname,timespan,options,ut);,其中,t为返回的仿真时间向量;x为返回的状态矩阵;y为返回的输出矩阵;modname为系统Simulink模型文件名;timespan为仿真时间;options为仿真参数选择项,由simset设置;ut为选择外部产生输入,ut=T,u1,u2,un。,说明上述参数中,若省略timespan,options,ut则由框图模型的对话框SimulationParameters设置仿真参数。,(2)simset函数simset函数用来为sim函数建立或编辑仿真参数或规定算法,并把设置结果保存在一个结构变量中。它有如下4种用法:(a)options=simset(property,value,):把property代表的参数赋值为value,结果保存在结构options中。(b)options=simset(old_opstruct,property,value,):把已有的结构old_opstruct(由simset产生)中的参数property重新赋值为value,结果保存在新结构options中。(c)options=simset(old_opstruct,new_opstruct):用结构new_opstruct的值替代已经存在的结构old_opstruct的值。(d)simset:显示所有的参数名和它们可能的值。,(3)simget函数simget函数用来获得模型的参数设置值。如果参数值是用一个变量名定义的,simget返回的也是该变量的值而不是变量名。如果该变量在工作空间中不存在(即变量未被赋值),则Simulink给出一个出错信息。该函数有如下3种用法:(a)struct=simget(modname):返回指定模型model的参数设置的options结构。(b)value=simget(modname,property):返回指定模型model的参数property的值。(c)value=simget(options,property):获取options结构中的参数property的值。如果在该结构中未指定该参数,则返回一个空阵。用户只需输入能够唯一识别它的那个参数名称的前几个字符即可,对参数名称中字母的大小写不作区别。,(4)set_param函数set_param函数的功能很多,这里只介绍如何用set_param函数设置Simulink仿真参数以及如何开始、暂停、终止仿真进程或者更新显示一个仿真模型。(a)设置仿真参数调用格式为:set_param(modname,property,value,)其中modname为设置的模型名,property为要设置的参数,value是设置值。这里设置的参数可以有很多种,而且和用simset设置的内容不尽相同,相关参数的设置可以参考有关资料。(b)控制仿真进程调用格式为:set_param(modname,SimulationCommand,cmd)其中mode为仿真模型名称,而cmd是控制仿真进程的各个命令,包括start、stop、pause、comtinue或update。在使用这两个函数的时候,需要注意必须先把模型打开。,Simulink与Matlab的接口,由MATLAB工作空间变量设置系统模块参数模块参数可以是常量也可以工作空间变量直接使用MATLAB工作空间中的变量设置模块参数。使用变量的表达式设置模块参数。例如,如果a是定义在MATLAB中的变量,则表达式a、a2+5、exp(a)等均可以作为系统模块的参数,将信号输出到MATLAB工作空间中使用示波器模块Scope的输出信号,可以使用户对输出的信号进行简单的定性分析。使用Sinks模块库中的ToWorkspace模块,可以轻易地将信号输出到MATLAB工作空间中。信号输出的名称在ToWorkspace模块的对话框中设置,此对话框还可以设置输出数据的点数、输出的间隔,以及输出数据的类型等。其中输出类型有三种形式:数组、结构以及带有时间变量的结构。仿真结束或暂停时信号被输出到工作空间中。,使用工作空间变量作为系统输入信号Simulink与MATLAB的数据交互是相互的,除了可以将信号输出到MATLAB工作空间中之外,用户还可以使用MATLAB工作空间中的变量作为系统模型的输入信号。使用Sources模块库中的FromWorkspace模块可以将MATLAB工作空间中的变量作为系统模型的输入信号。此变量的格式如下所示:t=0:0.1:10;x=sin(t);input=t,x;系统输入信号input的作用相当于Sources模块中的SineWave模块,向量与矩阵Simulink所使用的信号可以是标量也能够传递和使用向量信号。例如,向量增益可以作用在一个标量信号上,产生一个向量输出。Simulink最重要的特性就是支持矩阵形式的信号,它可以区分行和列向量并传递矩阵。通过对模块做适当的配置,可以使模块能够接受矩阵作为模块参数。,MATLABFunction与Function模块除了使用上述的方式进行Simulink与MATLAB之间的数据交互,用户还可以使用FunctionsandTables模块库中的Function模块(简称为Fcn模块)或FunctionsandTables模块库中的MATLABFunction模块(简称为MATLABFcn模块)进行彼此间的数据交互。Fcn模块一般用来实现简单的函数关系,在Fcn模块中:(1)输入总是表示成u,u可以是一个向量。(2)可以使用C语言表达式,例如sin(u1)+cos(u2)。(3)输出永远为一个标量。,(2)可以使用C语言表达式,例如sin(u1)+cos(u2)。(3)输出永远为一个标量。MATLABFcn一般用来调用MATLAB函数来实现一定的功能,在MATLABFcn模块中:(1)所要调用的函数只能有一个输出(可以是一个向量)。(2)单输入函数只需使用函数名,多输入函数输入需要引用相应的元素,如mean、sqrt、myfunc(u(1),u(2)。(3)在每个仿真步长内都需要调用MATLAB解释器。使用Fcn模块与MATLABFcn模块进行Simulink与MATLAB之间的数据交互。,使用Fcn与MATLABFcn模块进行数据交互,4.子系统,建立子系统有助于简化系统结构,提高系统设计的层次性。一、子系统的概念是系统构成的一部分,表现形式为具有几个输入输出端口的模块,内部结构在系统中不表现出来。二、子系统分类无条件子系统条件执行子系统1、使能子系统2、触发子系统3、函数调用子系统,在已有的系统模型中建立子系统:首先框选待封装的区域,即在模型编辑器背景中单击鼠标左键并拖动,选中需要放置到子系统中的模块与信号(或在按下Shift键的同时,用鼠标左键单击所需模块);然后选择Edit菜单下的CreateSubsystem,即可建立子系统。建立空的子系统:Subsystems模块库中的模块建立子系统。这样建立的子系统内容为空,然后双击子系统对其进行编辑。,子系统操作在生成子系统之后,用户可以对子系统进行各种与系统模块相类似的操作,这时子系统相当于具有一定功能的系统模块。例如,子系统的命名、子系统视图的修改、子系统的显示颜色等等。当然子系统也有其特有的操作,如子系统的显示(用鼠标左键双击子系统模块即可打开子系统)、子系统的封装等等。,Inport输入模块与Outport输出模块在系统模型中建立子系统时,Simulink会自动生成Inport模块(Sources模块库中的In1模块)与Outport模块(Sinks模块库中的Out1模块)。Inport模块作为子系统的输入端口,Outport作为子系统的输出端口,它们被用来完成子系统和主系统之间的通讯。Inport和Outport用来对信号进行传递,不改变信号的任何属性;另外,信号标签可以越过它们进行传递。如果需要建立多输入多输出的子系统,则需要使用多个Inport模块与Outport模块,而且最好使用合适的名称对Inport模块与Outport模块进行命名。,三、子系统的封装封装子系统的特点:1)自定义系统模块及图表2)用户双击子系统图表将弹出参数设置框3)可自定义子系统的帮助文件4)拥有自己的工作区使用子系统封装技术的优点:1)向子系统模块中传递参数2)“隐藏”子系统中不需要过多展现的内容3)保护子系统中的内容,防止模块实现被随意篡改。,提示对话框该编辑器分为四页(MATLAB6.5版):Icon(图标)页Parameters(参数页)Initialiation(初始化)页Documentation(文档)页其中对于子系统封装最关键的是Parameters项,用于设置参数变量及其类型等。,子系统的封装Parameters页,Add,Delete,Up,Down,提示符,变量名,直接输入变量名,变量的类型为数值,变量的数值可在线调节,假定子系统(Nonlinearsystem)的参数变量名已由封装编辑器全部输入。双击该子系统图标,即弹出如图所示子系统的参数设置框图。如图所示逐栏输入与变量所对应的参数,即完成对该子系统的参数设置。,1)图表显示界面控制参数iconframe:设置图表边框为可见或不可见icontransparency:设置图表为透明或不透明iconrotation:设置图表为固定或可旋转显示drawingcoordinates:设置图表绘制命令所使用的坐标系单位2)图表绘制命令栏,2、封装编辑器之参数设置对话框,参数设置控制,参数描述,参数对应变量,参数设置列表,1)参数控制设置2)参数描述:对模块输入的参数作简单的说明3)参数对应变量:键入的参数值将传递给封装后的子系统工作空间中相对应的变量,因此要求此处的变量名应和子系统中所使用的变量具有相同的名称4)参数设置描述controltype:edit:需要用户键入参数值checkbox:复选框popup:参数选项(用|隔开)assignment:参数分配类型(evaluate:求值字符串literal:普通文字),3、封装编辑器之初始化设置对话框,初始化命令,initializationcommands(初始化命令栏)一般为matlab命令,在此可定义封装后子系统工作空间中的各种变量,这些变量可以被封装子系统模块图标绘制命令、其它初始化命令或子系统中的模块使用。当出现以下情况时,初始化命令被执行:模型文件被载入框图被更新或模块被旋转绘制封装子系统模块图标时,4、封装编辑器之文档对话框,封装类型,帮助,封装描述,PID控制模块的实现,目的:建立一个通用PID控制模块,通过设置比例、积分、微分的参数直接实现PID控制。,1.利用SIMULINK基本模块构造仿真模型实现PID控制。,PID控制模块的实现,2.选中控制算法各模块后,建立子系统并对其进行封装,设定相应的三个参数及模型描述。,PID控制模块的实现,3.PID控制模块的实际使用。双击该模块,直接设置三个参数值既可实现PID控制算法。,PID控制模块的实现,4.为了便于在其他仿真模型中应用该模块,可以把我们建立的PID控制模块填加到系统模型库中。以后使用时就可直接调用。打开Matlab6p1ToolboxSimulinkBlockssimulink3.mdl进入其中的连续模块中,把PID控制模块复制到该模块中。注意:复制前先去掉模块的锁定状态。,条件子系统使能子系统该子系统当使能端控制信号为正时,系统处于“允许”状态,否则为“禁止”状态。“使能”控制信号可以为标量,也可以为向量。当为标量信号时,只要该信号大于零,子系统就开始执行;当为向量信号时,只要其中一个信号大于零,也“使能”子系统。,【例】积分分离式PID控制器。这种PID控制器可以让控制器中的积分项在系统响应进入稳态时投入运行,以提高稳态精度;而在系统响应处于瞬态过程时,将积分项断开以改善系统动态响应质量。积分分离式PID控制器建立如图所示:,使能模块的控制信号为delta与abs(e)的差值。delta为一很小的正数,当偏差e的绝对值小于delta时,控制器的积分项才投入使用,从而实现了控制器中的积分项的分离控制。,条件子系统触发子系统触发子系统只在触发事件发生的时刻执行。所谓触发事件也就是触发子系统的控制信号,一个触发子系统只能有一个控制信号,在Simulink中称之为触发输入。,(a)触发子系统模块,(b)触发子系统模型,触发事件有4种类型,即上升沿触发、下降沿触发、跳变触发和回调函数触发。双击触发子系统中的触发器模块(Trigger),在弹出的对话框中可选择触发类型。,触发子系统应用的一个示例。触发器设为下降沿触发,正弦输入经触发控制后,成为阶梯波,如图所示。,系统仅在脉冲信号的下降沿导通,并保持导通时刻的输入值至下一个脉冲下降沿。,back,4.Simulink仿真举例1.求解微分方程,初始条件,4.Simulink仿真举例,4.Simulink仿真举例,4.Simulink仿真举例2.当电源电压V时,求解表达式y(t)的波形:,其中y(0)=1。要求交mdl文件及仿真结果的截图。,悬吊式起重机动力学仿真悬吊式起重机动力学Simulink仿真为便于建模,将起重机动力学方程改写为:,4.Simulink仿真举例2.当电源电压V时,求解表达式y(t)的波形:,其中y(0)=1。要求交mdl文件及仿真结果的截图。,4.Simulink仿真举例,4.Simulink仿真举例,4.Simulink仿真举例1.悬吊式起重机动力学仿真悬吊式起重机动力学方程,由(2)、(3)式去掉P,则有,悬吊式起重机动力学Simulink仿真在运行仿真模型前,须先计算出k1、k2和lmp。设mt=50kg,mp=270kg,l=4m,c=20N/ms,在MATLAB指令窗输入以下指令,l=4;c=20;mp=270;mt=50;I=mp*l2;%计算吊重转动惯量lmp=l*mp;k1=1/(mt+mp);k2=mp*l/(I+mp*l2);,悬吊式起重机动力学Simulink仿真设置仿真时间为200s,启动Simulink仿真,则由小车位移示波器和吊重摆角示波器,可观察到系统在初始状态x(0)=0,(0)=0.01rad/s,作用下x、的变化过程曲线:,悬吊式起重机小车位移,悬吊式起重机吊重摆角,四、SIMULINK的仿真实例,双环调速的电流环系统:建立以上系统模型后,设置仿真时间为1S,运行仿真后,观察示波器的输出,例:,SIMULINK的仿真实例(二),系统传递函数如图:求系统单位负反馈闭环单位阶跃响应,要求通过调节器的作用使系统满足超调量20%,上升时间3s,调节时间10s的要求。,示例:,SIMULINK的仿真实例(二),加入比例控制,P=3,可见上升时间加快,超调量增大,稳态误差减小,但仍然存在稳态误差。加入积分环节,结果稳态误差基本为零,但超调量较大,需要调整这两个参数以获得更好效果。Ti=9.1s,P=0.5时,曲线如下图。上升时间为1.81s,调节时间为4.62s,超调量3.23%。,5S函数,S函数是扩展Simulink功能的强有力工具,它使用户可以利用MATLAB、C语言、C+语言等程序创建自己定义的Simulink模块。C,C+,Ada,andFortanS-Functions需要编译为Mex文件,就和其它MEX文件一样,Simulink可以随时动态的调用这些文件。S函数使用的是一种比较特殊的调用格式,可以和Simulink求解器交互式操作。S-Functions功能非常全面,适用于连续、离散以及混合系统。S函数允许用户向模型中添加自己编写的模块,只要按照一些简单的规则,就可以在S-Functions添加设计算法。在编写好S-Functions之后就可以在S-Functions模块中添加相应得函数名,也可以通过封装技术来订制自己的交互界面。,S函数的调用,在Simulink使用S-Functions的方法就是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 时间的脚印课件王晶
- 教务主任期中质量分析
- 护理常规培训内容
- 时钟造型基础知识培训课件
- 二零二五版房屋地基下沉修复赔偿合同
- 2025版出轨离婚赔偿金协议书(含法律咨询与执行)
- 二零二五年度房地产开发项目贷款合同范本正规范本
- 旭东化学课件获取
- 二零二五年度动产抵押消费贷款合同编写指南
- 高三试卷:四川省雅安市2024-2025学年高三上学期11月零诊试题数学答案
- 感冒急性鼻炎护理
- 2024年村秘书述职报告
- 私房摄影保密协议书
- 天麻买卖合同协议
- 展览会会务服务投标方案(技术方案)
- 上门灭蚊合同协议
- 2025届四川省泸州市高三下学期第三次教学质量诊断性考试英语试题(原卷版+解析版)
- 缓刑解除矫正个人的总结(范文模板)
- 2025年中医经典知识竞赛考试题库及答案
- 胸痹心痛护理个案
- 船闸水工建筑物设计规范
评论
0/150
提交评论