单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,12,章,SIMULINK,动态仿真集成环境,12.1,Simulink,操作基础,12.2,系统仿真模型,12.3,系统的仿真,12.4,使用命令操作对系统进行仿真,12.5,子系统及其封装技术,12.6 S,函数的设计与应用,12.1,Simulink,操作基础,12.1.1,Simulink,简介,Simulink,是,MATLAB,的重要组成部分,提供建立系统模型、选择仿真参数和数值算法、启动仿真程序对该系统进行仿真、设置不同的输出方式来观察仿真结果等功能。,12.1.2,Simulink,的启动与退出,1,Simulink,的启动,在,MATLAB,的命令窗口输入,simulink,或单击,MATLAB,主窗口工具栏上的,Simulink,命令按钮即可启动,Simulink,。,Simulink,启动后会显示,Simulink,模块库浏览器,(,Simulink,Library Browser),窗口。,在,MATLAB,主窗口,File,菜单中选择,New,菜单项下的,Model,命令,在出现,Simulink,模块库浏览器的同时,还会出现一个名字为,untitled,的模型编辑窗口。在启动,Simulink,模块库浏览器后再单击其工具栏中的,Create a new model,命令按钮,也会弹出模型编辑窗口。利用模型编辑窗口,可以通过鼠标的拖放操作创建一个模型。,模型创建完成后,从模型编辑窗口的,File,菜单项中选择,Save,或,Save As,命令,可以将模型以模型文件的格式,(,扩展名为,.,mdl,),存入磁盘。,如果要对一个已经存在的模型文件进行编辑修改,需要打开该模型文件,其方法是,在,MATLAB,命令窗口直接输入模型文件名,(,不要加扩展名,.,mdl,),。在模块库浏览器窗口或模型编辑窗口的,File,菜单中选择,Open,命令,然后选择或输入欲编辑模型的名字,也能打开已经存在的模型文件。另外,单击模块库浏览器窗口工具栏上的,Open a model,命令按钮或模型编辑窗口工具栏上的,Open model,命令按钮,也能打开已经存在的模型文件。,2,Simulink,的退出,为了退出,Simulink,,只要关闭所有模型编辑窗口和,Simulink,模块库浏览器窗口即可。,12.2,系统仿真模型,12.2.1,Simulink,的基本模块,Simulink,的模块库提供了大量模块。单击模块库浏览器中,Simulink,前面的“,+”,号,将看到,Simulink,模块库中包含的子模块库,单击所需要的子模块库,在右边的窗口中将看到相应的基本模块,选择所需基本模块,可用鼠标将其拖到模型编辑窗口。同样,在模块库浏览器左侧的,Simulink,栏上单击鼠标右键,在弹出的快捷菜单中单击,Open the,Simulink,Libray,命令,将打开,Simulink,基本模块库窗口。单击其中的子模块库图标,打开子模块库,找到仿真所需要的基本模块。,12.2.2,模块的编辑,1,添加模块,2,选取模块,3,复制与删除模块,4,模块外形的调整,5,模块名的处理,12.2.3,模块的连接,1,连接两个模块,2,模块间连线的调整,3,连线的分支,4,标注连线,5,删除连线,12.2.4,模块的参数和属性设置,1,模块的参数设置,Simulink,中几乎所有模块的参数都允许用户进行设置,只要双击要设置的模块或在模块上按鼠标右键并在弹出的快捷菜单中选择相应模块的参数设置命令就会弹出模块参数对话框。该对话框分为两部分,上面一部分是模块功能说明,下面一部分用来进行模块参数设置。,同样,先选择要设置的模块,再在模型编辑窗口,Edit,菜单下选择相应模块的参数设置命令也可以打开模块参数对话框。,2,模块的属性设置,选定要设置属性的模块,然后在模块上按鼠标右键并在弹出的快捷菜单中选择,Block properties,,或先选择要设置的模块,再在模型编辑窗口的,Edit,菜单下选择,Block properties,命令,将打开模块属性对话框。该对话框包括,General,、,Block annotation,和,Callbacks 3,个可以相互切换的选项卡。其中选项卡中可以设置,3,个基本属性:,Description(,说明,),、,Priority(,优先级,),、,Tag(,标记,),。,例,12-1,有系统的微分方程,试建立系统仿真模型。,操作过程如下:,(1),在,MATLAB,主菜单中,选择,File,菜单中,New,菜单项的,Model,命令,打开一个模型编辑窗口。,(2),将所需模块添加到模型中。,(3),设置模块参数并连接各个模块组成仿真模型。,设置模块参数后,用连线将各个模块连接起来组成系统仿真模型。模型建好后,从模型编辑窗口的,File,菜单中选择,Save,或,Save as,命令将它存盘。,12.3,系统的仿真,12.3.1,设置仿真参数,打开系统仿真模型,从模型编辑窗口的,Simulation,菜单中选择,Simulation parameters,命令,打开一个仿真参数对话框,在其中可以设置仿真参数。仿真参数对话框包含,5,个可以相互切换的选项卡:,(1)Solver,选项卡:用于设置仿真起始和停止时间,选择微分方程求解算法并为其规定参数,以及选择某些输出选项。,(2)Workspace I/O,选项卡:用于管理对,MATLAB,工作空间的输入和输出。,(3)Diagnostics,选项卡:用于设置在仿真过程中出现各类错误时发出警告的等级。,(4)Advanced,选项卡:用于设置一些高级仿真属性,更好地控制仿真过程。,(5)Real-time Workshop,选项卡:用于设置若干实时工具中的参数。如果没有安装实时工具箱,则将不出现该选项卡。,12.3.2,启动系统仿真与仿真结果分析,设置完仿真参数之后,从,Simulation,中选择,Start,菜单项或单击模型编辑窗口中的,Start Simulation,命令按钮,便可启动对当前模型的仿真。此时,,Start,菜单项变成不可选,而,Stop,菜单项变成可选,以供中途停止仿真使用。从,Simulation,菜单中选择,Stop,项停止仿真后,,Start,项又变成可选。,为了观察仿真结果的变化轨迹可以采用,3,种方法:,(1),把输出结果送给,Scope,模块或者,XY Graph,模块。,(2),把仿真结果送到输出端口并作为返回变量,然后使用,MATLAB,命令画出该变量的变化曲线。,(3),把输出结果送到,To Workspace,模块,从而将结果直接存入工作空间,然后用,MATLAB,命令画出该变量的变化曲线。,例,12-2,利用,Simulink,仿真曲线。,仿真过程如下:,(1),启动,Simulink,并打开模型编辑窗口。,(2),将所需模块添加到模型中。,(3),设置模块参数并连接各个模块组成仿真模型。,设置模块参数后,用连线将各个模块连接起来组成仿真模型。,(4),设置系统仿真参数。,(5),开始系统仿真。,(6),观察仿真结果。,例,12-3,利用,Simulink,仿真求定积分。,仿真过程如下:,(1),打开一个模型编辑窗口。,(2),将所需模块添加到模型中。,(3),设置模块参数并连接各个模块组成仿真模型。,(4),设置系统仿真参数。,(5),开始系统仿真。,(6),观察仿真结果。,12.3.3,系统仿真实例,至此,可以总结出利用,Simulink,进行系统仿真的步骤如下:,(1),建立系统仿真模型,这包括添加模块、设置模块参数以及进行模块连接等操作。,(2),设置仿真参数。,(3),启动仿真并分析仿真结果。,例,12-4,有初始状态为,0,的二阶微分方程,x+0.2x+0.4x=0.2u(t),其中,u(t,),是单位阶跃函数,试建立系统模型并仿真。,方法,1,:用积分器直接构造求解微分方程的模型。,方法,2,:利用传递函数模块建模。,方法,3,:利用状态方程模块建模。,12.4,使用命令操作对系统进行仿真,从命令窗口运行仿真的函数有,4,个,即,sim,、,simset,、,simget,和,set_param,。,1,sim,函数,sim,函数的作用是运行一个由,Simulink,建立的模型,其调用格式为:,t,x,y =,sim(modname,timespan,options,data,);,2,simset,函数,simset,函数用来为,sim,函数建立或编辑仿真参数或规定算法,并把设置结果保存在一个结构变量中。它有如下,4,种用法:,(1)options=,simset(property,value,),:把,property,代表的参数赋值为,value,,结果保存在结构,options,中。,(2)options=,simset(old_opstruct,property,value,),:把已有的结构,old_opstruct,(,由,simset,产生,),中的参数,property,重新赋值为,value,,结果保存在新结构,options,中。,(3)options=,simset(old_opstruct,new_opstruct,),:用结构,new_opstruct,的值替代已经存在的结构,old_opstruct,的值。,(4),simset,:显示所有的参数名和它们可能的值。,3,simget,函数,simget,函数用来获得模型的参数设置值。如果参数值是用一个变量名定义的,,simget,返回的也是该变量的值而不是变量名。如果该变量在工作空间中不存在,(,即变量未被赋值,),,则,Simulink,给出一个出错信息。该函数有如下,3,种用法:,(1),struct,=,simget(modname,),:返回指定模型,model,的参数设置的,options,结构。,(2)value=,simget(modname,property,),:返回指定模型,model,的参数,property,的值。,(3)value=,simget(options,property,),:获取,options,结构中的参数,property,的值。如果在该结构中未指定该参数,则返回一个空阵。,用户只需输入能够唯一识别它的那个参数名称的前几个字符即可,对参数名称中字母的大小写不作区别。,4,set_param,函数,set_param,函数的功能很多,这里只介绍如何用,set_param,函数设置,Simulink,仿真参数以及如何开始、暂停、终止仿真进程或者更新显示一个仿真模型。,(1),设置仿真参数,调用格式为:,set_param(modname,property,value,),其中,modname,为设置的模型名,,property,为要设置的参数,,value,是设置值。这里设置的参数可以有很多种,而且和用,simset,设置的内容不尽相同,相关参数的设置可以参考有关资料。,(2),控制仿真进程,调用格式为:,set_param(modname,SimulationCommand,cmd,),其中,mode,为仿真模型名称,而,cmd,是控制仿真进程的各个命令,包括,start,、,stop,、,pause,、,comtinue,或,update,。,在使用这两个函数的时候,需要注意必须先把模型打开。,12.5,子系统及其封装技术,12.5.1,子系统的建立,建立子系统有两种方法:通过,Subsystem,模块建立子系统和通过已有的模块建立子系统。两者的区别是:前者先建立子系统,再为其添加功能模块;后者先选择模块,再建立子系统。,1,通过,Subsystem,模块建立子系统,操作步骤为:,(1),先打开,Simulink,模块库浏览器,新建一个仿真模型。,(2),打开,S