Matlab基础与应用(六)MATLABBasicandApplication-----SIMULINK动态仿真自动控制与测试教学实验中心第6讲内容1Simulink基本操作2系统仿真模型3系统的仿真4使用命令操作对系统进行仿真5子系统及其封装技术6S函数的设计与应用Simulink简介SIMULINK是MATLAB最重要的组件之一,它向用户提供一个动态系统图形建模、仿真和综合分析的集成环境。在这环境中,用户无须书写大量的程序,而只需通过简单直观的鼠标操作,选取适当的库模块,就可构造出复杂的仿真模型.1.Simulink的启动与退出Simulink的启动1.在MATLAB的命令窗口输入simulink2.单击MATLAB主窗口工具栏上的Simulink命令按钮即可3.双击*.mdl文件图标Simulink启动后会显示Simulink模块库浏览器(SimulinkLibraryBrowser)窗口4.Simulink的退出关闭所有模型编辑窗口和Simulink模块库浏览器窗口即可建立新模型1.在MATLAB主窗口File菜单中选择New菜单项下的Model命令,在出现Simulink模块库浏览器的同时,还会出现一个名字为untitled的模型编辑窗口。2.在Simulink窗口File菜单中选择New菜单项下的Model命令3.在启动Simulink模块库浏览器后再单击其工具栏中的Createanewmodel命令按钮,也会弹出模型编辑窗口。利用模型编辑窗口,可以通过鼠标的拖放操作创建一个模型。Simulink模型的修改与保存如果要对一个已经存在的模型文件进行编辑修改,需要打开该模型文件,其方法是,1.在MATLAB命令窗口直接输入模型文件名(不要加扩展名.mdl)。2.在模块库浏览器窗口或模型编辑窗口的File菜单中选择Open命令,然后选择或输入欲编辑模型的名字,也能打开已经存在的模型文件。3.单击模块库浏览器窗口工具栏上的Openamodel命令按钮4.模型编辑窗口工具栏上的Openmodel命令按钮。模型创建完成后,从模型编辑窗口的File菜单项中选择Save或SaveAs命令,可以将模型以模型文件的格式(扩展名为.mdl)存入磁盘。Simulink操作基础点击进入Simulink点击打开新建模型拖拽模块加入模型添加连线模块库浏览器2系统仿真模型2.1Simulink的模块Simulink的模块库提供了大量模块。单击模块库浏览器中Simulink前面的“+”号,将看到Simulink模块库中包含的子模块库,单击所需要的子模块库,在右边的窗口中将看到相应的基本模块,选择所需基本模块,可用鼠标将其拖到模型编辑窗口。同样,在模块库浏览器左侧的Simulink栏上单击鼠标右键,在弹出的快捷菜单中单击Openthe‘Simulink’Libray命令,将打开Simulink基本模块库窗口。单击其中的子模块库图标,打开子模块库,找到仿真所需要的基本模块。Simulink的子模块库连续系统模块库(Continuous)离散系统模块库(Discrete)数学运算模块库(Math)非线性模块库(Nonlinear)信号与系统模块库(Signals&System)接收模块库(Sinks)输入源模块库(Source)端口和子系统模块库(Port&Subsystem)通用模块库(CommonlyUsed)连续系统基本模块微分环节积分环节状态方程传递函数时间延迟可变时间延迟可变传输延迟零-极点模型连续系统模块库(Continuous)离散系统模块库(Discrete)信号与系统模块库(Signals&System)非线性模块库(Nonlinear)数学运算模块库(Math)接收模块库(Sinks)端口和子系统模块库(Port&Subsystem)2.2模块的编辑1.添加模块---在模型库中选定模块,按住鼠标左键拖出2.选取模块---在模块上点击鼠标左键,模块四周出现4个小黑点3.复制模块----选中模块,按住鼠标左键和Ctrl键拖出即可4.模块外形的调整---选中模块,鼠标移动到4角的小黑点,光标变化后按住左键拖动即可5.模块名的处理---单击模块名后即可修改2.3模块的连接连线---移动鼠标到模块的输出端,鼠标便变成十字,按住鼠标左键移动到模块的输入端,十字光标出现重影时释放左键。连线的折弯-----按住Shift键,在折弯点单击鼠标,产生折弯点。给连线加分支-----鼠标移动到分支起点,按住鼠标右键拉出或按住Ctrl键和鼠标左键,拖到模块输入端释放。改变线型-----选中线段,选择Format菜单下的相应命令标注连线----在线上双击,即可标注连线2.4模块的参数和属性设置1.模块的参数设置Simulink中几乎所有模块的参数都允许用户进行设置(1)双击要设置的模块或在模块上按鼠标右键并在弹出的快捷菜单中选择相应模块的参数设置命令就会弹出模块参数对话框。该对话框分为两部分,上面一部分是模块功能说明,下面一部分用来进行模块参数设置。(2)选择要设置的模块,在模型编辑窗口Edit菜单下选择相应模块的参数设置命令也可以打开模块参数对话框。2.模块的属性设置(1)选定要设置属性的模块,然后在模块上按鼠标右键并在弹出的快捷菜单中选择Blockproperties(2)先选择要设置的模块,再在模型编辑窗口的Edit菜单下选择Blockproperties命令,将打开模块属性对话框。该对话框包括General、Blockannotation(注释)和Callbacks3个可以相互切换的选项卡。其中General选项卡中可以设置3个基本属性:Description(说明)、Priority(优先级)、Tag(标记)。例1给定微分方程,试建立系统仿真模型操作过程如下:(1)在MATLAB主菜单中,选择File菜单中New菜单项的Model命令,打开一个模型编辑窗口。(2)将所需模块添加到模型中。(3)设置模块参数并连接各个模块组成仿真模型。设置模块参数后,用连线将各个模块连接起来组成系统仿真模型。模型建好后,从模型编辑窗口的File菜单中选择Save或Saveas命令将它存盘。uxx2uxx2继承输入极性、数量增益初值输入参数幅值时间3系统的仿真3.1设置仿真参数打开系统仿真模型,从模型编辑窗口的Simulation菜单中选择Simulationparameters命令,打开一个仿真参数配置窗,点击左面的选择栏,选择不同的仿真参数对话栏,在其中可以设置仿真参数:(1)Solver解算选项栏:用于设置仿真起始和停止时间,选择微分方程求解算法并为其规定参数,以及选择某些输出选项。(2)DataImport/Export选项栏:用于管理对MATLAB工作空间的输入和输出。(3)Diagnostics选项栏:用于设置在仿真过程中出现各类错误时发出警告的等级。(4)Optimization选项栏:用于设置一些高级仿真属性,更好地控制仿真过程。(5)Real-timeWorkshop选项卡:用于设置若干实时工具中的参数。如果没有安装实时工具箱,则将不出现该选项卡。仿真参数配置窗算法步长仿真积分算法积分算法算法说明(收敛性、稳定性)Discrete离散系统,差分方程Ode44阶Runge-Kutta法数值积分,应用最广Ode1Eula法,速度快,误差大Ode113Adams-Bashforth-Moulton的变阶解法,比Ode45有效,精度高Ode15sGear法,用于解刚性方程数值积分问题Ode23s修正的Rosenbrock二阶法,解决部分Ode15s无法解决的刚性方程问题3.2启动系统仿真与仿真结果分析设置完仿真参数之后,从Simulation中选择Start菜单项或单击模型编辑窗口中的StartSimulation命令按钮,便可启动对当前模型的仿真。此时,Start菜单项变成不可选,而Stop菜单项变成可选,以供中途停止仿真使用。从Simulation菜单中选择Stop项停止仿真后,Start项又变成可选。为了观察仿真结果的变化轨迹可以采用3种方法:(1)把输出结果送给Scope模块或者XYGraph模块。(2)把仿真结果送到输出端口并作为返回变量,然后使用MATLAB命令画出该变量的变化曲线。(3)把输出结果送到ToWorkspace模块,从而将结果直接存入工作空间,然后用MATLAB命令画出该变量的变化曲线。例不同步长刚性方程Eula算法的仿真方程:其中k=100,x(0)=5kxx例不同算法刚性方程的仿真方程:Step:0.0015其中k=1000,x(0)=5Eula欧拉法Heun改进欧拉法RK4外推法kxx例2基于微分方程的SIMULINK建模在图所示的弹簧—质量—阻尼系统系统中,已知质量m=1kg,阻尼b=2Nsec/m,弹簧系数k=100N/m,且质量块的初始位移x(0)=0.05m,其初始速度为0m/sec,要求创建该系统的SIMULINK模型,并进行仿真运行。(1)建立理论数学模型对于无外力作用的“弹簧—质量—阻尼”系统,据牛顿定律可写出代入具体数值并整理,可得0kxxbxmxxx1002建模基本思路整理方程如用“积分”而不是用“求导”模块描写导数关系右边各项系数用“增益”模块实现等号右面的代数和运算采用“求和”模块用“示波器”模块观察结果xxx1002(2)添加模块(3)添加信号连线(4)设置模块参数设置模块参数初值示波器模块的设置单击右键,设置幅值,添加图标示波器模块的设置3.3系统仿真实例可以总结出利用Simulink进行系统仿真的步骤如下:(1)建立系统仿真模型,这包括添加模块、设置模块参数以及进行模块连接等操作。(2)设置仿真参数。(3)启动仿真并分析仿真结果。例3有初始状态为0的二阶微分方程x+0.2x'+0.4x=2u(t),其中u(t)是单位阶跃函数,试建立系统模型并仿真。方法1:用积分器直接构造x”=-0.2x’-0.4x+2u,求解微分方程的模型。方法2:利用传递函数模块建模。方法3:利用状态方程模块建模。1:用积分器直接构造求解微分方程的模型x”=-0.2x’-0.4x+2u2:利用传递函数模块建模微分方程拉式变换传递函数)(24.02.0tuxx)(2)(4.0)(2.0)(2susxssxsxs4.02.02)()(2sssusx2:利用传递函数模块建模参数3:利用状态方程模块建模微分方程状态方程状态方程的矩阵形式)(24.02.0tuxxuxxxxx22.04.021221uxxyuxxxx001202.04.010212121DUCXYBUAXX3:利用状态方程模块建模矩阵参数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,n