第5章-simulink在系统仿真中的应用_第1页
第5章-simulink在系统仿真中的应用_第2页
第5章-simulink在系统仿真中的应用_第3页
第5章-simulink在系统仿真中的应用_第4页
第5章-simulink在系统仿真中的应用_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章Simulink在系统仿真中的应用,2020/6/6,1,主要内容,Simulink建模的基础知识Simulink建模与仿真子系统与模块封装技术M-函数、S-函数编写及其应用本章要点小结,2020/6/6,2,5.1Simulink建模的基础知识,Simulink简介Simulink下常用模块简介Simulink下其他工具箱的模块组,2020/6/6,3,5.1.1Simulink简介,控制系统仿真研究的一种很常见的要求是通过计算机得出系统在某信号驱动下的时间响应,从中得出期望的结论。对线性系统来说,可以按照第4章介绍的方法,对于更复杂的系统来说,Simulink环境就是解决这样问题的理想工具,它提供了各种各样的模块,允许用户用框图的形式搭建起任意复杂的系统,从而对之进行准确的仿真。,2020/6/6,4,MATLAB的一个组成部分1990年前后由MathWorks公司推出SimuLAB1992年改为simulinkSimu(仿真)+link(连接)2007年,支持simscape语言,Simulink的发展历史,simulink强大的功能,交互建模交互仿真能够扩充和定制与MATLAB和工具箱集成专用模型库(Blocksets),Simulink可以搭建:,通信系统物理层和数据链路层动力学系统控制系统数字信号处理系统电力系统生物系统金融系统等,单击MATLAB命令窗口工具栏中的Simulink图标,可以打开Simulink模块浏览器窗口。输入open_system(simulink)命令将打开模型库,库中还有下一级的模块组,如连续模块组、离散模块组和输入输出模块组等,用户可以用双击的方式打开下一级的模块组,寻找及使用所需要的模块。,Simulink的打开,SIMULINK库浏览器界面,5.1.2Simulink下常用模块简介,1.输入模块组Sources2.输出模块组sbfSinks3.连续系统模块组Continuous4.离散系统模块组Discrete5.非线性模块组Discontinuities6.数学函数模块组MathOperations7.查表模组块Look-upTables8.用户自定义函数模块组User-definedFunctions9.信号模块组SignalRouting10.信号属性模块组SignalAttributes,2020/6/6,10,5.1.3Simulink下其他工具箱的模块组,除了上述的各个标准模块组之外,随着MATLAB工具箱安装的不同,还有若干工具箱模块组和模块集(blockset),其他模块组如下图所示。,2020/6/6,11,2020/6/6,12,5.2Simulink建模与仿真,Simulink建模方法简介仿真算法与控制参数选择Simulink在控制系统仿真研究中的应用举例,2020/6/6,13,建模仿真步骤:打开模块库打开一个空白的编辑窗口复制相关模块修改模块参数模块连接系统仿真研究,5.2.1Simulink建模方法简介,例5.1用Simulink求出闭环系统的阶跃响应曲线,5.2.2仿真算法与控制参数选择,选中Simulink模型窗口的Simulation菜单项,其中的ConfigurationParameters菜单项允许用户设置仿真控制参数:,2020/6/6,16,设置如下仿真参数:Statetime和Stoptime(仿真时间)Solveroptions(算法)/TypeRelativeTolerance(相对误差限)AbsoluteTolerance(绝对误差限)Maxstepsize/Minstepsize(步长)Diagnostics(警告信息),Solveroptions的Type栏目有两个选项,允许用户选择定步长和变步长算法。仿真精度控制有RelativeTolerance选项、AbsoluteTolerance等,其中相对误差限的默认值设置为1e-3,该值在实际仿真中显得偏大,建议选择1e-6和1e-7。值得指出的是,由于采用的变步长仿真算法,所以将误差限设置到这样小的值也不会增加太大的运算量。,2020/6/6,17,在仿真时还可以选定最大允许的步长和最小允许的步长,这可以通过填写Maxstepsize栏目和Minstepsize的值来实现,如果变步长选择的步长超过这个限制则将弹出警告对话框。一些警告信息和警告级别的设置可以从其中的Diagnostics标签下的对话框来实现。,2020/6/6,18,Sim,除了用simulation菜单启动系统仿真的进程外,还可以调用sim()函数进行仿真分析其中,模型名为对应的simulink文件名后缀.mdl可以省略函数调用后,返回的t为时间向量x为状态矩阵,其各列为各个状态变量返回变量y的各列为各个输出信号(Outport构成的矩阵),Simset(),仿真参数options可以通过simset函数来设置参数名为需要控制的参数名称参数值为具体数值options=simset(RelTol,1e-7),例5-2典型非线性反馈系统,5.2.3Simulink在控制系统仿真研究中的应用举例,Simulink实现,【例5-3】Simulink在控制系统仿真研究中的应用举例,a=0.2;b=0.2;c=5.7;x0=0;0;0;f=(t,x)-x(2)-x(3);x(1)+a*x(2);b+x(1)-c*x(3);t,x=ode45(f,0,10,x0);plot(t,x),这样用下面的语句就可以绘制出各个状态变量的时间响应曲线,如图,2020/6/6,36,Simulink建模,一个典型的Simulink模型包括如下三种类型的元素:信号源模块被模拟的系统模块输出显示模块如图所示说明了这三种元素之间的典型关系。系统模块作为中心模块是Simulink仿真建模所要解决的主要部分;信号源为系统的输入,它包括常数信号源函数信号发生器(如正弦和阶跃函数波等)和用户自己在Matlab中创建的自定义信号或Matlab工作间中三种。输出模块主要在Sinks库中。,复杂系统传递函数的求取,在Siumlink环境下输入系统的方框图则可以方便的得到其传递函数:1、系统方框图的输入(例5.1),2、将构建的方框图保存自定文件名,保存在默认的目录下,文件名例如:li51s。3、求取方框图表示的系统的传递函数有理多项式形式在MATLAB命令窗口(CommandWindow)键入以下程序:n,d=linmod(li51s)注:中是自定的文件名。输出结果:,40,零极点增益模型在MATLAB命令窗口键入以下程序:a,b,c,d=linmod2(li51s);G=ss(a,b,c,d);G1=ZPK(G),41,结果:,如果结果比较复杂,可以minreal()函数得到最小实现。,42,5.2.3Simulink功能模块的基本操作,功能模块的基本操作,包括模块的移动、复制、删除、转向、改变大小、模块命名、颜色设定、参数设定、属性设定、模块输入输出信号等。模块库中的模块可以直接用鼠标进行拖放(选中模块,按住鼠标左键不放)而放到模型窗口中进行处理。在模型窗口中,选中模块,则可以对模块进行以下的基本操作。,43,(1)移动:选中模块,按住鼠标左键将其拖放到所需的位置即可。若要脱离线而移动,可按住shift键,再进行拖放。在按下shift键同时,可以将选中模块从一个窗口拖动到另一个窗口。当移动多个模块及其连线时,首先要选中要移动的模块和连线,然后将光标置于待移动模块及连线任一处,将其拖动到指定位置即可。,44,(2)复制:选中模块,然后按住鼠标左键进行拖放即可在另一窗口复制同样的一个功能模块。在同一窗口中复制模块时按下Ctrl键同时用鼠标选中待复制的模块将其拖放到指定位置即可。如果采用鼠标右键,以上复制过程就省掉按Ctrl键了。(3)删除:选中模块,按Delete键即可。若要删除多个模块,可以同时按住Shift键,再用鼠标选中多个模块,按Delete键即可。也可以用鼠标选取某区域,再按Delete键就可以把该区域中的所有模块和线等全部删除。,45,(4)旋转:从标准模块库中复制到模型编辑窗口中模块,在默认状态下是输入端(大于符号)在左,而输出端(三角符号)在右,在绘制系统方框图时,有时为了使得连线更容易,避免不必要的交叉线,增加框图的可读性,需要对某些模块翻转或旋转,使得其输入端和输出端改变方向。在菜单Format中选择FlipBlock旋转180,选择RotateBlock顺时针旋转90,或者直接按Ctrl+F键执行FlipBlock,按Ctrl+R键执行RotateBlock。,46,(5)改变大小:选中模块,对模块出现的4个黑色标记进行拖放即可。(6)模块命名:先用鼠标在需要更改的名称上单击一下,然后直接更改即可。名称在功能模块上的位置也可以变换180度,可以用Format菜单中的FlipName来实现,也可以直接通过鼠标进行拖放。Hide/ShowName可以隐藏/显示模块名称。,47,(7)颜色设定:Format菜单中的ForegroundColor可以改变模块的前景颜色,BackgroundColor可以改变模块的背景颜色;而模型窗口的颜色可以通过ScreenColor来改变。(8)参数设定:用鼠标双击模块,就可以进入模块的参数设定窗口,从而对模块进行参数设定。参数设定窗口包含了该模块的基本功能描述,为获得更详尽的帮助,可以点击其上的help按钮。通过对模块的参数设定,就可以获得需要的功能模块。,48,(9)属性设定:选中模块,打开Edit菜单的BlockProperties可以对模块进行属性设定。包括Description属性、Priority优先级属性、Tag属性、Openfunction属性、Attributesformatstring属性。其中Openfunction属性是一个很有用的属性,通过它指定一个函数名,则当该模块被双击之后,Simulink就会调用该函数执行,这种函数在MATLAB中称为回调函数。,49,(10)模块的输入输出信号:模块处理的信号包括标量信号和向量信号;标量信号是一种单一信号,而向量信号为一种复合信号,是多个信号的集合,它对应着系统中几条连线的合成。缺省情况下,大多数模块的输出都为标量信号,对于输入信号,模块都具有一种“智能”的识别功能,能自动进行匹配。某些模块通过对参数的设定,可以使模块输出向量信号。,50,5.2.4Simulink线的处理,Simulink模型的构建是通过用线将各种功能模块进行连接而构成的。用鼠标可以在功能模块的输入与输出端之间直接连线。所画的线可以改变粗细、设定标签,也可以把线折弯、分支。,51,(1)改变粗细:线所以有粗细是因为线引出的信号可以是标量信号或向量信号,当选中FormatPort/SignalDisplaysWideNonscalarLines时,线的粗细会根据线所引出的信号是标量还是向量而改变,如果信号为标量则为细线,若为向量则为粗线。选中WideNonscalarLines则可以显示出向量引出线的宽度,即向量信号由多少个单一信号合成。,52,(2)设定标签:只要在线上双击鼠标,即可输入该线的说明标签。也可以通过选中线,然后打开Edit菜单下的SignalProperties进行设定,其中signalname属性的作用是标明信号的名称,设置这个名称反映在模型上的直接效果就是与该信号有关的端口相连的所有直线附近都会出现写有信号名称的标签。,53,(3)线的折弯:按住Shift键,再用鼠标在要折弯的线处单击一下,就会出现圆圈,表示折点,利用折点就可以改变线的形状。(4)线的分支:按住鼠标右键,在需要分支的地方拉出即可以。或者按住Ctrl键,并在要建立分支的地方用鼠标拉出即可。,54,5.2.5模型的注释(1)模型注释的创建在将用作注释区的中心位置,双击鼠标左键,出现编辑框后即可输入所需文字。(2)注释位置的移动在注释文字处单击鼠标,出现编辑框后,按下鼠标左键,即可拖拉注释文本到希望的位置。(3)注释体的控制点击注释编辑框,再选中菜单FormatFont即可引出字体对话框。,55,5.2.6示波器模块(Scope)的用法及配置(1)示波器的功能可接受向量信号,在仿真过程中,实时显示信号波形。仿真一启动,示波器缓冲区就接受送来的信号,最多可接受30个不同的信号,以列的方式排列,数据长度缺省设置为5000。若输入信号是连续的,Scope产生一个连点波形图;若是离散的,就产生阶梯状波形图。,56,(2)示波器工具栏PrintParametersZoomZoomX-axisZoomY-axisautoscaleSavecurrentaxissettingsRestoresavedaxissettingsFloatingscope游离示波器,是指在模型视窗中与系统模型没有任何可见连线的示波器,它在仿真过程中可实时观察任何一点的动态波形。,57,(3)示波器纵坐标范围的设置在坐标框内点击鼠标右键弹出现场菜单AxesProperties,即可设置Y轴范围。(4)示波器坐标的缩放可以在同时放大X轴和Y轴上的数据,或分别放大。当仿真运行时,放大或缩小不起作用。用户通过Saveaxessettings工具栏按钮可将当前X和Y坐标轴的设置存储起来以便用于下一次仿真。(5)打印一个Scope窗口的内容单击工具栏按钮Print图标。,58,(6)多信号显示区设置在显示一个矢量信号时,Scope根据下列次序使用不同的颜色:黄(yellow)、绛红(magenta)、青色(cyan)、红(red)、绿(green)、深蓝(darkblue)。若信号显示数超过6个,Scope模块按上述次序循环使用。(7)Scope属性用户通过选择parameters工具栏按钮可以完成的设置项目有:改变坐标轴限、设置坐标轴数、时间范围、记号标签、采样参数以及保存选项。,59,针对示波器窗口的坐标系与曲线显示方面的参数设置,针对示波器的数据存储与传送方面的参数设置,5.4子系统与模块封装技术,前面介绍了简单系统的建模、仿真方法大型系统怎么处理?本节主要内容:如何把大型的系统分解成各个子系统如何封装可重用子系统,2020/6/6,60,5.4.1子系统,创建Simulink子系统共有两种方法:一种办法是对已存在的模型的某些部分或全部使用菜单命令【Edit/CreateSubsystem】进行压缩转化,使之成为子系统;另一种方法是使用Connections模块库中的Subsystem模块直接创建子系统。,一、压缩子系统把已经存在的Simulink模型中的某个部分或全部压缩成子系统的操作如下:步骤一:首先使用范围框将要压缩成子系统的部分选中,包括模块和信号线,如图所示。,5.4.1子系统,注意:在这种情况下只能用范围框,而不能用Shift逐个选定。,步骤二:在模块窗口菜单选项中选择【EditCreatSubsystem】,Simulink将会用一个子系统模块代替被选中的模块组,如图所示。,5.4.1子系统,步骤三:子系统模块将有一个默认输入端口和输出端口。输入端口和输出端口的默认名分别为In1和Out1。调整子系统和模型窗口的大小使之美观,如图所示。,5.4.1子系统,若想查看子系统内容或对子系统进行再编辑,可以双击子系统模块,则会出现一个显示子系统内容的新窗口。在窗口内,除了原始的模块外,Simulink自动添加了输入模块和输出模块,分别代表子系统的输入端口和输出端口。改变它们的标签会使子系统的输入输出端口的标签也随着变化。特别注意:菜单命令【Edit/CreatSubsystem】没有相反的操作命令。也就是说一旦将一组模块压缩成子系统,就没有直接还原的处理方法了(UNDO除外)。因此一个理想的处理方法是在压缩子系统之前先把模型保存一下,作为备份。,5.4.1子系统,二、子系统模块在创建模型的时候,如果需要一个子系统,可以直接在子系统窗口中创建。这样就省去了上面的压缩子系统和重新安排窗口的步骤。,5.4.1子系统,要使用子系统模块创建新的子系统,先从Signalsport_label(input,1,Controlsingal);color(red);port_label(output,1,Torque);,若要添加图片,需将图片放在模型所在目录下,如:命名PIDCONTROLLER.jpg,在IconDrawingCommand区域内输入命:image(imread(PIDCONTROLLER.jpg)则子模块变为:,2020/6/6,76,2020/6/6,77,变量名必须与框图中的完全一致,对于一个已封装的子系统要想查看其封装前子系统的具体内容,可以选着菜单命令【EditLookUndermask】。若要对已经封装的模块进行解封装操作,要先选中此模块,打开封装编辑器,按下Unmask按钮,则封装就被解开。若要再次封装此子系统,选着【EditMasksubsystem】即可。,二、查看封装和解封装,2020/6/6,81,2020/6/6,82,5.4.3模块集构造,2020/6/6,83,2020/6/6,84,2020/6/6,85,如果想在Simulink的模块浏览器上显示该模块集,则需要在该目录中建立一个名为slblocks.m的文件,编写M函数代码:,functionblkStruct=slblocksblkStruct.Name=sprintf(PIDblock_subsystem);blkStruct.OpenFcn=PIDblock_subsystem;%Browser(1).Library=simulink;Browser(1).Name=simulink;Browser(1).IsFlat=0;Browser(2).Library=PIDblock_subsystem;Browser(2)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论