1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第三章 仿真工具,SIMULINK,SIMULINK,是用来进行动态系统建模、仿真和分析的软件包。,3.1 SIMULINK,概述,SIMULINK,为用户提供了用方框图进行系统建模的窗口。它有着丰富的模块库,在做仿真时,用户只需利用鼠标的点击与拖曳功能,将模块库中的各种标准模块复制到,SIMULINK,的模型窗口中,就可以轻而易举在完成模型的创建。,在,SIMULINK,环境中,用户可以在仿真进程中改变感兴趣的参数,实时地观察系统行为的变化。它还有,Scop,模块与其它的画图模块,在进行仿真的同时,
2、就可以观看到仿真结果。,与传统的仿真软件采用微分方程或者差分方程建模相比,它具有更直观形象、更简单方便与更灵活的优点。,1,启动与退出,在,MATLAB,命令窗口中输入“,simulink”,命令然后回车;,选择工具栏中的 选项即可进入,simulink,模块库浏览器;,直接从,MATLAB,命令窗口中选取“,File Edit Model”,也可进入,SIMULINK,仿真环境。,模型完成后,利用,Save,或,Save as,命令将模型文件存盘,(,扩展名为,.,mdl,),后即可。,退出,simulink,,只要关闭所有模型编辑窗口和模块浏览器即可。,2,6.2 SIMULINK,模块库
3、浏览器,一、模块库浏览器界面,SIMULINK,模块库浏览器界面可分为,5,部分:,菜单栏区:其主菜单有,文件,(File),、,编辑,(Edit),、,查看,(View),、,帮助,(Help),等,4,项。,File,:含,New(,新建模型或者库,),、,open(,打开,),、,Close(,关闭,),和,Preferences(,属性设置,)4,项;,Edit,:含,Add to the current model(,添加到当前模型,),、,Find(,查找,),和,Find next(,查找下一个,)3,项;,View,:由,toolbar(,工具栏,),status bar(,状
4、态栏,),description(,文字说明栏,),stay on top(,将浏览器放在桌面最上层,)View,:,collapse entire browser(,模块库压缩显示,),expand entire browser(,模块库展开显示,),Large icons(,大图标,),Small icons(,小图标,),Show parameters for selection(,显示所选模块的参数,),;,Help(,帮助,),3,工具栏区:含,4,个按钮:是新建与打开按钮,是将模块放在桌面最上层按钮,,Find,是用来查找模块库中的模块按钮。,文字说明区:对所选模块的文字说明;,模
5、块库区:含模块库及其相应的模块组;,状态栏区:即最下方显示,Ready,区,用来显示浏览器状态。,4,二、基本模块库的分类及其用途,SIMULINK,有,13,类基本模块库,分别为:,Continuous(,连续模块组,),、,Discontinuities(,非连续模块组,),、,Discrete(,离散模块组,),、,Look-Up Tables(,表格模块组,),、,Math Operations(,数学运算模块组,),、,Model Verification(,模型检验模块组,),、,Model-Wide Utilities(,公用模块组,),、,Ports&Subsystems(,端
6、口与子系统模块组,),、,Signal Attributes(,信号属性模块组,),、,Signal Routing(,信号传输选择模块组,),、,Sinks(,输出模块组,),、,Sources(,信号源模块组,),、,User-Defined Functions(,用户定义函数模块组,),等,5,包含,7,个基本模块,分为连续时间线性系统与连续时间延迟两种。子模块组的名称和用途见,表,3-1,。,1,、,Continuous(,连续模块组,),6,模块名称,模块用途,Derivative,微分模块,Integrator,积分模块,State-Space,线性状态空间模型模块,Transfe
7、r Fcn,线性传递函数模型模块,Transfer Delay,输入信号按指定时间延迟模块,Variable Transport Delay,第一个输入按第二个输入指定时间做延迟模块,Zero-Pole,零极点形式模型模块,表,3-1,连续模块组子模块的名称及用途,7,包含,25,个基本模块,包括数学运算、向量运算、复数与向量间的转换运算,4,种。其子模块组的名称和用途见,表,3-2,。,2,、,Math Operations(,数学运算模块组,),8,模 块 名 称,模 块 用 途,Abs,绝对值或求模,(,对复数,),模块,Algebraic Constraint,将输入,f(z),强制置
8、为,0,并输出,z,Assignment,分配器,Bitwise Logical Operator,二进制逻辑运算模块,Combinatorial Logic,建立逻辑真值表模块,Complex to Magnitude-Angle,计算复数的幅值与相角模块,Complex to Real-Imag,计算复数实部与虚部模块,Dot Product,计算点积,(,内积,),模块,Gain,增益模块,Logical Operator,逻辑运算模块,表,3-3,数学运算模块组子模块的名称及用途,9,模 块 名 称,模 块 用 途,Magnitude-Angle to Complex,由幅值与相角构造
9、复数模块,Math Function,数学运算函数模块,可进行多种数学函数运算,Matrix Concatenation,矩阵连接模块,Matrix Gain,矩阵增益模块,MinMax,计算极大值与极小值模块,Polynomial,多项式运算模块,Product,乘积运算模块,Real-Imag to Complex,由实部与虚部构造复数模块,Relational Operator,关系运算模块,Reshape,矩阵重新定维模块,Rounding Function,取整模块,表,3-3,续 数学运算模块组子模块的名称及用途,10,模 块 名 称,模 块 用 途,Sign,符号函数模块,Sli
10、der Gain,可变增益模块,(,使用滑尺改变增益值,),Sum,计算代数和或差模块,Trigonometric Function,执行多种常用三角函数模块,表,3-3,续 数学运算模块组子模块的名称及用途,11,共有,15,个基本模块,包括信号传输与信号存储、访问两种。其子模块组的名称和用途见,表,3-3,。,3,、,Signal Routing(,信号传输选择模块组,),12,模 块 名 称,模 块 用 途,Bus Creator,信号总线生成器,Bus Selector,接收来自,Mux,模块或其它输入,Bus Selector,模块的信号,Data Store Memory,定义一个
11、共享数据存储区,Data Store Read,从已定义的数据存储区中读取数据并输出,Data Store Write,将输入数据写入一个已定义的数据存储区,Demux,分路器(一路信号分解成多路信号),From,从,Goto,模块中获得信号并输出,Goto,将其输入传递给相应的,From,模块,Goto Tag Visibility,Goto,模块标记控制器,Manual Switch,双输出选择器(手动),Merge,将输入信号合并为一个输出信号模块,表,3-3,信号传输选择模块组子模块的名称及用途,13,模 块 名 称,模 块 用 途,Multiport Switch,在多输入中选择一输
12、出的开关模块,Mux,信号组合器,(,将多路信号组合成一路信号,),Selector,选择或重组信号,Switch,多路开关,(,当第二个输入端信号大于临界值时,输出第一个输入端的信号,否则输出第三个输入端的信号,),表,3-3,续 信号传输选择模块组子模块的名称及用途,14,共有,9,个基本模块,包括模型及子系统输出、数据观察器与仿真控制,3,种。其子模块组的名称和用途见,表,3-3,。,4,、,Sinks(,输出模块组,),及其用途,15,模 块 名 称,模 块 用 途,Display,实时数字显示模块,Floating Scope,浮动示波器模块,Out1,输出端口模块,(,同端口与子系
13、统模块中,Out1),Scope,示波器模块,Stop Simulation,当输入非,0,时,停止仿真。在仿真停止前完成当前时间步内的仿真。,Terminator,信号终止模块,To File,将其输入写入,MAT-file,文件内的一个矩阵中,To Workspace,将其输入写入工作空间,XY Graph,X-Y,示波器模块,表,3-4,输出模块组子模块的名称及用途,16,18,个基本模块,包括模型及子系统输入与信号发生器两种。其子模块组的名称和用途见,表,3-5,。,5,、,Sources(,信号源模块组,),及其用途,17,模 块 名 称,模 块 用 途,Band-Limited W
14、hite Noise,带宽限幅白噪声模块,Chirp Signal,线性调频信号模块,(,频率随时间线性增加的正弦信号,),,可用于非线性系统谱分析,Clock,在每一仿真步输出当前仿真时间,(,连续时间,),Constant,输出与时间无关的实数或复数,Digital Clock,仅在指定的采样间隔内输出仿真时间,在其它时间输出保持前一次值不变,(,离散时间,),From Workspace,从,MATLAB,工作空间中读取数据,From File,从一个指定的文件中读取数据并输出,Ground,接地模块,In1,输入端口模块,(,同端口与子系统模块中,In1),Pulse Generato
15、r,产生固定频率脉冲序列,表,3-5,信号源模块组子模块的名称及用途,18,模 块 名 称,模 块 用 途,Ramp,产生按指定初始时间、初始幅度和变化率的斜坡信号,Random Number,产生正态分布的随机信号,Repeating Sequence,产生一个任意波形的周期信号,Signal Generator,可以产生三种不同波形的信号:正弦波、方波和锯齿波。信号单位可以是,Hz,或,rad/s,Signal Builder,信号构造器,Sine Wave,正弦波信号模块,Step,在指定时间产生一个可定义上下电平的阶跃信号,Uniform Random Number,产生在整个指定时间
16、周期内均匀分布的随机信号,表,3-5,续 信号源模块组子模块的名称及用途,19,三、部分专业模块库简介,Mathworks,公司还提供了一系列与,SIMULINK,一起使用的专业模块库,主要有:,Control System Toolbox,:控制系统工具箱,;,Communications,Blockset,:通信系统仿真模块;,DSP,Blockset,:数字信号处理工具箱;,Fuzzy Logic Toolbox,:模糊逻辑控制工具箱;,Neural Network,Blockset,:神经网络工具箱;,Simulink,Extras,:补充,Simulink,公共模块库;,Statef
17、low,:用来对复杂的事件驱动系统进行建模和仿真;,Real-Time Workshop(,简称,RTW),:可以直接将,simulink,模型框图和,Stateflow,的状态图转换成高效优化的程序代码。,20,6.3,用,SIMULINK,建立系统模型,建立简单模型的步骤:,建立模型窗口;,将功能模块从模块库中复制到模型窗口;,对模块进行连接,构成所需要的系统模型。,SIMULINK,模型在视觉上表现为直观的方框图,在文件上则是扩展名为,mdl,的,ASCII,代码,在数学上表现为微分方程或差分方程,在行为上则模拟了实际系统的动态特性。,21,一、模块的复制、移动与删除,模块的复制包括两种
18、一是从模块库中将标准模块复制到模型窗口中,另一种是在模型窗口中将模型再复制。,1,、模块的复制,从模块库中复制标准模块:从模块库中选中所需模块,按住鼠标左键不放,将模块拖至模型窗口再松开鼠标左键则完成了复制;,在模型窗口中再复制有,3,种方法:,选中待复制模块,运行“,Edit Copy”,,然后将光标移至将要粘贴的地方,再运行“,Edit Paste”,,就完成复制;或者选中待复制模块,直接用,Ctrl+C,然后再,Ctrl+V,也可以;,用鼠标选取待复制模块后,按住“,Ctrl”,键不放,把该模块拖至目标位置后,松开左键即完成复制;,用鼠标选取待复制模块后,按住鼠标右键不放,把该模块拖至
19、目标位置后,松开右键即完成复制。,22,将光标置于待移动的模块图标上,按住鼠标左键不放,把该模块拖至目标位置后,松开左键就完成了移动。,2,、模块的移动,选中模块,按,Delete,键就可删除或点击鼠标右键,选择,Cut,也可对模块进行剪切。,3,、模块的删除,用鼠标选择模块图标,再将鼠标移到模块对象四周的控制小块处,当鼠标指针变成指向四周的小箭头时,按住鼠标左键不放,拖至合适大小即可。,四、模块外形调整,1,、改变模块对象大小,23,在,Simulink,中,模块输入端口位于模块左侧,输出端口位于模块右侧,但有时需要对其方向进行改变。方法是:用鼠标选中模块对象,利用“,Format Flip
20、 Block”(,快捷键,Ctrl+I),可将模块顺时针旋转,180,;或者利用“,Format Rotate Block”(,快捷键,Ctrl+R),或将模块顺时针旋转,90,。,2,、改变模块对象的方向,Format,菜单中的“,Foreground Color”,命令可以改变模块的前景颜色,“,Background Color”,命令可以改变模块的背景颜色;而模型窗口的颜色可以通过“,Screen Color”,命令来改变。此外,还可以选择“,Format Show drop shadow,”为模块生成阴影等。,3,、颜色设定,24,将构成一个系统的所有环节模块复制到模型窗口后,还必须将
21、所有的模块图标用信号线连接起来才能够描述一个控制系统的系统模型。,五、模块的连接,信号线具有连接功能模块的作用。连接两个模块时,用鼠标左键选取模块,点击该输入或输出端口,看到光标变成十字形后,拖曳十字图形符号到另个一个端口,鼠标指针将变成双十字形,然后松开鼠标左键。一根最简单的信号线就将两模块连接起来了,连线的箭头表示信号的流向。,25,为了对动态系统进行正确的仿真与分析,必须设置正确的系统模块参数与系统仿真参数。模块的内部参数设置时只需在模型窗口中,双击待修改参数模块的图标,就可以打开标准功能模块内部参数设置对话框,然后改变对话框中相关栏目的数据便可。,六、模块内部参数修改,当系统中各模块的
22、参数设置完毕后,可设置合适的系统仿真参数以进行动态系统的仿真。,26,欲建立此简单系统的模型,需要如下的系统模块:,信号源模块组,Sources,中的,Sine Wave,模块:产生一个正弦波信号;,数学运算模块组,Math Operations,中的,Gain,模块:将信号乘上一个常数(即信号增益);,输出模块组,Sinks,中的,Scope,模块:图形方式显示结果。,例:,已知系统的数学描述为,要求建立系统模型,并以图形方式输出系统运算结果。,27,对系统中各模块参数以及系统仿真参数进行正确设置之后,单击系统模型编辑器上的,Play,图标(黑色三角)或选择,Simulation,菜单下的,
23、Start,便可以对系统进行仿真分析。仿真结束后双击,Scope,模块以显示系统仿真的输出结果。,运行仿真,28,29,创建一个新的模型窗口;,从信号源模块组、数学运算模块组、连续模块组和输出模块组库中分别找出所需要的阶跃信号模块、求和器模块、线性传递函数模块和示波器模块,分别复制到模型窗口中;,将各模块按要所需构建的模型连接起来;,修改模块名称、加上信号线标注、模型标注等;,按要求重新设置各模块内部参数;,存盘。,例:,已知单位负反馈二阶系统的开环传递函数为:,试创建该系统的单位阶跃响应模型图并观察仿真结果。,30,阶跃信号模块的参数对话框设置中有,4,个项:“,Step time”,为阶跃
24、信号产生的时间;“,Initial value”,为阶跃信号初始值;“,Final value”,为阶跃信号终了值;“,Sample time”,为采样时间。,传递函数模块参数设置对话框中,“,Numerator”,栏是传递函数分子多项式系数向量,“,Denominator”,栏是传递函数分母多项式系数向量。注意:当多项式缺项时,必须将对应系数的“,0”,输入,不能遗漏。,31,图,6-28,二阶系统单位阶跃响应仿真结果,32,例,6-3,已知单位负反馈二阶系统的开环传递函数为:,试创建该系统的单位阶跃响应模型图并观察仿真结果。,33,6.4,仿真参数设置,在对系统模型中各个模块进行合适的参数
25、设置之后,需要对系统仿真参数进行必要的设置以开始仿真。,在模型窗口中选择“,Simulation”,菜单下的“,Simulation parameters”,,就会出现一个对话框。仿真参数设置共有,5,个选项,分别是,Solver,、,Workspace I/O,、,Diagnostics,、,Advanced,和,RTW,。,34,Solver,中包含,3,部分设置:,Simulation time,(仿真时间)、,Solver options,(仿真器选项)和,Output options,(输出选项设置)。,1,、,Solver,选项及其设置,Simulation time,(仿真时间)
26、包括仿真起始时间和停止时间,它们的差即代表仿真时间;在缺省情况下,,Simulink,默认的仿真起始时间为,0 s,,仿真结束时间为,10 s,。,Solver options,(仿真器选项):,Type,项用来选择变步长或固定步长仿真器。右栏用于选择仿真器的算法。固定步长仿真器在仿真过程中,其步长是不变的。变步长解法可以在仿真过程中根据要求调整运算步长。在采用变步长解法时,应先指定一个容许误差限(在,Relative tolerance,和,Absolute tolerance,中设置),使得当误差超过误差限时自动修正仿真步长。,35,Relative tolerance,(相对误差限)是
27、规定了每个状态相对于步长的误差大小,用百分比来表示一个状态值。默认值是,1e-3,,即状态的计算值要精确到,0.1%,;,Absolute tolerance,(绝对误差限)是一个阈误差值,当测量的状态值接近零时,代表可接受误差。如果将其设定为,auto,,则将每个状态的初始绝对误差限设置在,1e-6,。,Max step size,用于设置最大步长。在默认情况下为“,auto”,,并按下式计算步长:最大步长,=,(终止时间,-,起始时间),/50,。但这样的取法对于仿真时间较长的系统则可能带来取样点过于稀疏,而使仿真结果失真。一般建议对于仿真时间不超过,15s,的采用默认值即可,对于超过,1
28、5s,的每秒至少保证,5,个采样点,对于超过,100s,的,每秒至少保证,3,个采样点。最大步长的选取直接关系到系统仿真结果的准确性。,36,Output options,(输出选项设置):包括,Refine output,(细化输出)、,Produce additional output,(产生附加输出)和,Produce specified output only,(只产生指定输出),3,项。,Refine output,(细化输出):可以根据仿真的步长除了在采样点输出值外,在曲线稀疏处自动增加输出点,以细化曲线,使曲线更加平滑,从而保证系统不失真。如果细化系数定为,2,,则在每段时间步长
29、的中间插入一个平滑数据,如果是,3,,则会在每段时间步长的,1/3,,,2/3,位置上各插入一个数据。细化因子越大,细化程度越高,曲线越平滑,从而曲线的失真度越小。用户可以在,refine factor,设置仿真时间区间插入的输出点数,产生更光滑的输出曲线。改变精细因子比减小仿真步长更有效。细化输出只能在变步长模式中才能使用,并且在,ode45,效果最好。,37,Produce additional output,(产生附加输出):允许用户直接指定产生输出的点。一旦选择了该项,它的右边会出现一个输出时间编辑框,用户可以指定额外的仿真输出点,既可以是一个时间向量也可以是表达式。这个选项会改变仿真
30、的步长以使其和指定的附加输出时间一致。,Produce specified output only,(只产生指定输出):只在指定的时间点上产生输出。这种方式改变仿真步长经使时间步长与指定输出时刻一致。在比较不同的仿真时,要确保在同一个时刻产生输出,就要采用这种方式。,38,主要设置,SIMULINK,与,MATLAB,工作空间交换数据的有关选项。,2,、,Workspace I/O,选项及其设置,Load from workspace,(从工作空间读取数据):用来设置从,MATLAB,工作空间获取变量的性质,可以从工作空间获取时间和输入变量。虽然,Simulink,提供了多种系统输入信号,但并
31、不能完全满足需要。,Simulink,允许使用用户自定义的信号作为系统输入信号。一般地,时间变量定义为,t,,输入变量定义为,u,;在,Load form workspace,框中,用户可以设置,Matlab,中的变量作为系统输入信号或系统状态初始值,如下所述:,(,1,),Input,:用来设置系统输入信号。其格式为,t,,,u,,其中,t,、,u,均为列向量,,t,为输入信号的时间向量,,u,为相应时刻的信号取值,可以使用多个信号输入,如,t,,,u1,,,u2,。输入信号与,Simulink,的接口由,Inport,模块(,In1,模块)实现。,39,Save to workspace,
32、将数据写入工作空间):用来设置往,MATLAB,工作空间写入的变量类型和变量名,选中变量类型前的复选框使相应的变量有效,包括输出时间变量(,Time,)、输出系统模型中所有的状态变量(,States,)、输出系统模型中所有由,Outport,模块(即,Out1,模块)表示的信号(,output,)和输出系统模型中的最终状态变量取值,即最后仿真时刻处的状态值(,Final,state,);,Save option,(存储选项):用来设置载入的保存状态的有关选项:,Limit data points to last-,用来设定存往,MATLAB,工作空间变量的规模,对于向量而言即其维数,对于矩阵
33、而言即其秩;,Decimation,用来设置存往,MATLAB,工作空间的变量的频度,,1,为默认值,表示每点都传送,建议一般不要改动此项设置。,Format,用来选择数据格式。,(2)xInitial state,:用来设置系统状态变量初始值。初始值,xInitial,可为行向量。注意:使用,xInitial state,所设置状态变量初始值会自动覆盖系统模块中的设置。另外,输入信号与状态变量需要按照系统模型中,Inport,模块(即,In1,模块)的顺序进行正确设置。,40,主要用于设置仿真过程中对编译与调试异常的错误处理方式,相当于,C,语言中的编译设置。,3,、,Diagnostics
34、选项及其设置,Simulation option,:,Consistency checking,(一致性检验):是个调试工具,用于设置一致性检验错误的处理方法。该错误主要和,S,函数有关,会导致系统性能严重降低(降到,40%,),因此通常都关闭该项。以免影响仿真速度,即选择“,none”,。,Bound checking,(边界检验):用来检验在仿真过程中模块是否把数据写出了分配的内存。如果激活了该项,在每次仿真模块时对每个模块都执行该检验,会大大降低执行性能。因此,为了避免不必要的性能降低,最好在用户确定模型中包含有编写错误的,S,函数时才激活该检验。,Configuration opti
35、ons,:,SIMULINK,提供了几类异常事件,仅对这几类异常事件进行处理。,41,6.5,仿真结果的观察,控制系统仿真后,观察输出信号的方法大致有,3,种:,将仿真结果输入到输出模块组,Sinks,中的“,Scope,示波器”、“,Display”,数学显示器中查看图形或者数据。,将仿真结果信息返回到,MATLAB,命令窗口里,再利用绘图命令绘制出图形;,将仿真结果信息输入到“,To Workspace”,模块中,再用绘图命令在,MATLAB,窗口里绘制出图形。,42,Scope,模块是观察仿真结果的主要工具。,Scope,模块可以有多个显示坐标(每个端口一个),所有坐标有共同的时间坐标和
36、各自独立的,y,坐标。,当用户启动仿真时,,Simulink,虽然把数据写入连接的,Scope,模块,但并不打开,Scope,窗口。要想显示,则必须在仿真结束后双击,Scope,模块才能打开。,若输入信号是连续的,,Scope,产生一个连点波形图;若是离散的,则产生阶梯状波形图。,双击,Scope,模块,打开其参数设置对话框。,1,、示波器,Scope,43,2,、,Display,可以将仿真结果以数字形式显示出来。它既可以显示单个信号,也可以显示向量信号或矩阵信号(帧信号)。当信号的显示范围超出了,Display,模块的边界,会在,Display,模块的右下角出现一个向下的三角,表示还有信号
37、的值没被显示出来,这时用户只需用鼠标拉大,Display,模块的显示面板即可。,它的参数设置对话框中,“,Format”,用来设置数字显示格式,“,Decimation”,用于设置数据显示的抽选频度:,1,为默认设置,表示每点都显示,设为,n,则表示每隔,n-1,点显示一次,“,Sample time”,设置显示时间间隔,默认为,-1,,表示忽略采样时间间隔。,44,3,、,To Workspace,模块,该模块会自动将数据输出到,MATLAB,命令窗口里,并用变量保存起来,可再用绘图命令在,MATLAB,命令窗口里绘制出图形。,例:,利用“,To Workspace”,模块将数据传送到,MA
38、TLAB,命令窗口并绘制正弦波信号的波形曲线。,45,“,To Workspace”,模块的参数设置对话框中,,Variable name,是变量名,,Limit data points to last,用来限定存储的最多数据点数,若送入数据过多则会自动清除旧数据,若设为,inf,则会保存全部数据。,Decimation,用来设置传送数据的频度,,1,为默认值,表示每点都传送;,n,则表示每隔,n-1,点传送一次。,Sample,用来设置传送时间的间隔,,-1,为忽略采样间隔。,Save format,用来设置存储数据的格式,有三种可选格式:,Structure,(结构)、,Structure with time,(带时间的结构)和,Array,(数组)。,46,






