1第3章Simulink仿真Simulink两个功能:Simu(仿真)和Link(连接)Link系统连接,即把一系列模型连接起来,构成系统模型。利用鼠标在模型窗口上绘制控制系统模型,然后对系统进行仿真和分析。本章要求了解Simulink基本模块和功能,熟练Simulink的基本操作。23.2Simulink仿真概述Simulink是MATLAB软件的扩展,是实现动态系统建模和仿真的软件包。模型化图形输入:Simulink提供基本功能模块,通过对基本功能模块的调用,再将它们连接起来构成系统模型(以.mdl文件存取),进行仿真与分析。用户只需要知道基本功能模块的输入、输出及功能,而不必知道模块内部是如何实现的。33.2.1Simulink的启动与退出Simulink启动(两种方法):1.启动MATLAB后,单击主窗口的快捷按钮2.在MATLAB命令窗口中输入“Simulink”在桌面上出现SimulinkLibraryBrowser窗口图3.1Simulink模块库浏览界面4SimulinkLibraryBrowser窗口下选择file→new→model出现Simulink仿真编辑窗口Simulink的退出:关闭所有模型窗口和SimulinkLibraryBrowser窗口53.2.2Simulink建模仿真1、Simulink模型的基本结构-------由三种类型的模块构成信号源模块:是系统的输入包括常数信号源、函数信号发生器(如正弦波、阶跃函数等)。被模拟的系统模块:是仿真的中心模块,是仿真建模要解决的主要部分。输出显示模块:由显示模块接受包括图形显示、示波器显示、输出到文件或MATLAB工作空间图3.4构成Simulink模型的模块结构关联图62、Simulink建模仿真的步骤(1)启动Simulink,打开模块库;(2)打开空白模型窗口;(3)建立simulink仿真模型;用鼠标左键选中模块,拖到模型窗口,松开鼠标。再用鼠标在功能模块间连线。(4)设置仿真参数,进行仿真;双击需要设置参数的模块,打开参数设置对话框设置参数。(5)输出仿真结果。73.模块文件的保存新创建的模型窗口保存为simulink模块文件.mdl。具体方法是:选择模型窗口菜单【file:saveas】后,弹出一个“saveas”对话框,添入模型文件名,按“保存”键即可。84.系统仿真运行打开simulink仿真模型窗口,或打开指定的.mdl文件,在模型窗口选择菜单【simulation:start】,仿真开始。95.系统结果的输出利用scope模块在模型窗口内实时显示信号的动态过程;利用out模块将仿真数据保存在MATLAB工作空间中,供调用和分析。10【例3.1】利用Simulink设计一个模型,将正弦信号输出到示波器。解:步骤1:新建一个模型窗口步骤2:为模型添加模块从源模块库(sources)中复制正弦波模块,输出显示模块库(sinks)中复制示波器模块。步骤3:连接模块,构成系统模型。用鼠标先选中正弦波模型,移动鼠标指向示波器模型。步骤4:进行系统仿真,单击模型窗口菜单中的【simulationstart】,仿真执行。步骤5:观察仿真结果-------双击示波器模块,打开scope窗口。11图3.5正弦信号输出到示波器中的模型图3.6示波器中的仿真结果12Simulink模块图形的保存在模型窗口选择edit→copymodeltoclipboard(复制模型到剪贴板)→粘贴到word等文件中。对于已经建立的*.mdl模型,选择file→print打印成pdf格式文件,再复制到word中。13scope波形显示模块实际上也是一种figure窗口,不过matlab把scope的菜单栏隐藏起来,只提供了几个有限的参数设置。可以在打开mdl文件后,在matlab的命令行输入指令恢复显示scope的figure菜单栏:set(0,'showhiddenhandles','on');set(gcf,'menubar','figure');然后点击菜单栏的edit→copyfigure来保持波形图,选择inset来调整scope的各种图形属性,包括添加xlabel、ylabel、title、更改背景颜色等。14153.3Simulink的模块库简介3.3.1Simulink模块库分类Simulink模块库按功能分为16类子模块库(附录B)1.常用模块(CommonlyusedBlocks):提供常用元件。元件可以从这里直接拖过去,而不需要再去里面一个一个找了。162.输入源模块(sources):提供信号源Pulsegenerator:脉冲发生器Step:阶跃输入Ramp:斜坡输入Sinewave:正弦波信号In1:输入信号Signalgenerator:产生各种不同的波形,如正弦波、方波、锯齿波等173.连续模块(continuous):提供连续系统TransferFcn:传递函数模型Zero-pole:零极点模型Derivative:输入信号微分Integrator:输入信号积分State-space:状态空间模型184.数学运算模块(mathoperations)Gain:对输入信号乘上一个常数增益Subtract:减法Add:加法Sum:求和运算Sinewavefunction:正弦波函数MathFunction:包括指数函数、对数函数、求平方、开根号等TrigonometricFunction:三角函数,包括正弦、余弦、正切等195.接收器模块(sinks):提供输出设备元件Scope:示波器Display:数字显示器Tofile(.mat):将数据输出到文件中Toworkspace:将数据输出到MATLAB的工作空间中Out1:输出端口20Mux模块的基本思想是将多路信号集成一束,这一束信号在模型中传递和处理都看作一个整体。(mux实际上代表多路信号)与mux模块配套的是Demux模块,它将各路信号相互分离以便能对各信号进行单独处理。6.信号通路模块(signalrouting)Mux:把几个向量合并成向量形式21Mux将三路信号x,y,z集结为宽为3的单路信号。Demux模块则从复合的单路信号分离出各基本元素。Mux和Demux都不会将信号改变,它们只是“虚拟”的。当模型运行时,这些模块就像不存在一样,只是源和目标的连接保持着,就像这样:223.4Simulink功能模块的处理3.4.1模块参数设置1、功能模块参数设置设置功能模块参数后,才能进行仿真操作。例如:从sources中将sinewave拉到模型窗口,然后用鼠标双击sinewave,自动弹出相应的参数设置对话框。23图3.1Simulink模块库浏览界面24图3.8“功能模块参数设置”对话框25功能对话框由功能模块说明框和参数设置框组成。功能模块说明框:说明该功能模块使用方法和功能。参数设置框:设置该功能模块的参数。每个对话框下面有“ok”(确认)、“cancel”(取消)、“help”(帮助)3个按钮。262、示波器参数设置采用Simulink仿真时,示波器可以接收向量信号,实时显示信号波形,但该波形不能直接打印或嵌入文件。例如:SimulinkLibraryBrowser窗口→sinks→scope将scope用鼠标拖入模型窗口,在模型窗口双击scope自动弹出示波器窗口“scope”。2728设置纵轴下、上限在示波器“坐标框”内,单击鼠标右键,弹出一个现场菜单,选中菜单项【Axesproperties】,出现纵坐标设置对话框。设置所希望的纵轴下、上限。29“示波器属性”对话框单击示波器工具栏上的按钮,打开“示波器属性”对话框。Timerange栏:默认为10,即显示在[0,10]区间的信号。可根据实际情况进行设置图3.10“示波器属性”对话窗框303.4.2模块的基本操作在模型窗口中,选中模块,其4个角会出现黑色标记,此时可对模块进行操作。移动:选中模块,按住鼠标左键将其拖曳到所需位置。复制:选中模块,按住鼠标右键进行拖曳即可。删除:选中模块,按delete键转向:功能模块有时需要转向。Format→FlipBlock旋转1800,Format→RotateBlock顺时针旋转900。改变大小:选中模块,对模块出现的4个黑色标记进行拖曳。31模块命名:用鼠标在需要更改的名称上单击一下,直接更改。Format→FlipName将名称在功能模块上的位置变换180°;HideName隐藏模块名称;Showname显示模块名称。颜色设定:Format→ForegroundColor改变模块的线条颜色,Backgroundcolor改变模块的填充颜色,Screencolor改变模型窗口颜色。参数设定:用鼠标双击模块进入模块参数设置窗口。323.4.3Simulink模块间的连线处理Simulink模型的构建是通过线将功能模型连接而成的。用鼠标在功能模块的输入端和输出端之间直接连线。(1)设定标签:在线上双击鼠标,即可输入说明标签。或选中线,Edit→SignalProperties进行设定,其中Signalname属性的作用是标明信号的名称。33(2)线的折弯:选中线,按住Shift键,再用鼠标选中折点处,移动鼠标就可以改变线的形状。(3)线的分支:按住鼠标右键,在需要分支的地方拉出即可。或按住Ctrl键并在要建立分支的地方用鼠标拉出即可。343.5Simulink仿真设置编辑好仿真程序后,应设置仿真操作参数,以便进行仿真。单击菜单simulation→configurationparameters,弹出设置窗口。包括仿真器参数(solver)设置、工作空间数据导入/导出(DataImport/Export)设置等。35图3.11Simulink设置窗口363.5.1仿真器参数设置一般使用默认设置即可。1、仿真时间设置仿真开始时间(starttime)、仿真结束时间(stoptime)一般仿真开始时间设为0,结束时间视情况而定。2、仿真步长模式设置(type)Variable-step变步长:提供误差控制和过零检测控制。Fixed-step固定步长373.5.2工作空间数据导入/导出设置在simulink与MATLAB工作空间交换数据时进行选项设置。(1)Loadfromworkspace:选中前面的复选框即可从MATLAB工作空间获取时间和输入变量。一般时间变量定义为t,输入变量定义为u。(2)Savetoworkspace:用来设置存在MATLAB工作空间的变量类型和变量名。可以选择保存的选项有:时间、端口输出、状态和最终状态。选中选项前面的复选框并在选项后面的编辑框输入变量名,就会把相应数据保存到指定的变量中。常用输出模块为Out1模块和Sinks中的ToWorkspace模块。383.6Simulink仿真举例解:从数学角度看,由t求得u的数值解。先对sint求余弦运算,然后再积分。需要正弦信号、余弦函数、积分模型、观测结果的模块。分别将SimulinkLibraryBrowser中的相关模块依次拖到untitled窗口中。1)0(),cos(sindusimulinkutdt求解微分方程用【例3.2】39解:步骤1:新建一个模型窗口步骤2:为模型添加所需模块正弦信号:sources→sinewave余弦函数:mathoperations→trigonometicfunction先拖到untitled,再选择余弦函数cos积分模型:continuous→intergrator示波器模块:sinks→scope步骤3:连接模块,构成系统模型。步骤4:系统仿真:单击模型窗口菜单simulation→start,仿真执行。步骤5:观察仿真结果:双击示波器模块,打开scope窗口。40设置y轴最小值0默认y轴最小值-5图3.17微分方程求解的结果图图3.16微分方程求解的simulink模型41【例3.3】产生一个5sin(2t)和sin(5t)叠加的信号,