第七讲Simulink仿真SIMULINK是MATLAB的一个分支产品,主要用来实现对工程问题的模型化及动态仿真。SIMULINK体现了模块化设计和系统级仿真的思想,从而使得建模仿真如同搭积木一样简单。SIMULINK现已成为系统仿真领域重要的计算机环境。2主要内容7.1初识Simulink7.2Simulink概述7.3模型的创建7.4运行仿真7.5仿真结果分析37.1初识Simulink进入simulink环境在MATLAB的命令窗口输入simulink;单击MATLAB主窗口工具栏上的相应的命令按钮。Simulink启动后会显示Simulink模块库浏览器窗口(SimulinkLibraryBrowser)。47.1初识Simulink典型的Simulink模型包括:元素1:信号源(Source)元素2:被模拟的系统模块元素3:信号输出(Sink)仿真步骤建立系统仿真模型包括添加模块、设置模块参数、进行模块连接等操作设置仿真参数启动仿真分析仿真结果57.1初识Simulink仿真实例步骤:打开一个名为untitled的模型编辑窗口。将所需模块添加到模型中。用连线将各个模块连接起来组成系统仿真模型。设置模块参数并连接各个模块组成仿真模型。67.1初识Simulink设置系统仿真参数。运行仿真模型,查看结果。77.2Simulink概述7.1.1Simulink的概念7.1.2Simulink的工作环境87.2.1Simulink的概念Simulink是MATLAB提供的实现系统建模和仿真的软件包,是其相对独立的重要组成部分。Simulink的突出特点是支持图形用户界面(GUI),模型由模块组成的框图来表示。启动Simulink有如下3种方式:在MATLAB的命令窗口直接键入命令simulink;用鼠标左键单击MATLAB工具条上的按钮;在MATLAB菜单上选择【File】|【New】|【Model】选项97.2.2Simulink的工作环境107.3模型的创建7.3.1Simulink的基本模块7.3.2模块操作7.3.3模块连接7.3.4模块的参数和属性设置117.3.1Simulink的基本模块模块是构成Simulink系统仿真模型的基本单元,建模过程主要涉及Simulink模块的操作。基本模块库基本模块库是MATLAB中最早开发的模块库,包括了连续系统、非连续系统、离散系统、信号源等各类子模块库,具有通用性。专业模块库Simulink在工程仿真领域的广泛应用,相关领域专家为满足需要又开发了诸如通信系统、数字信号处理、模糊控制、神经网络等多种专业模块库,专业模块库提高相关领域的建模效率。127.3.2模块操作操作内容操作目的操作方法选取模块从模块库浏览器中选取需要的模块放入SIMULINK仿真平台窗口中方法1:在目标模块上按下鼠标左键,拖动目标模块进入SIMULINK仿真平台窗口中,松开左键;方法2:在目标模块上单击鼠标右键,弹出快捷菜单,选择“AddtoUntitled”选项选中多个模块可对多个模块同时进行共同的操作,如移动、复制等方法1:按住“Shift”键,同时用鼠标单击所有目标模块;方法2:使用“范围框”,即按住鼠标左键,拖曳鼠标,使范围框包围所有目标模块删除模块删除窗口中不需要的模块方法1:选中模块,按下“Delete”键;方法2:选中模块,同时按下“Ctrl”和“X”键,删除模块并保存到剪贴板中调整模块大小改善模型的外观,调整整个模型的布置选中模块,模块四角将出现小方块;单击一个角上的小方块并按住鼠标左键,拖曳鼠标到合理大小位置移动模块将模块移动到合适位置,调整整个模型的布置单击模块,拖曳模块到合适的位置,松开鼠标按键旋转模块适应实际系统的方向,调整整个模型的布置方法1:选中模块,选择菜单命令[FormatRotateBlock],模块顺时针旋转90°;选择菜单命令[FormatFlipBlock],模块顺时针旋转180°;方法2:右键单击目标模块,在弹出的快捷菜单中进行与方法1同样的菜单项选择复制内部模块内部复制已经设置好的模块,而不用重新到模块库浏览器中选取方法1:先按住“Ctrl”键,再单击模块,拖曳模块到合适的位置,松开鼠标按键;方法2:选中模块,使用[EditCopy]及[EditPaste]命令137.3.2模块操作操作内容操作目的操作方法改变标签内容按照用户自己意愿命名模块,增强模型的可读性在标签的任何位置上双击鼠标,进入模块标签的编辑状态,输入新的标签,在标签编辑框外的窗口中任何地方单击鼠标退出改变标签位置按照用户自己意愿布置标签位置,改善模型的外观方法1:选中模块,选择菜单命令[FormatFlipname],翻转标签和模块的位置,选择菜单命令[FormatHidename],隐藏标签;方法2:右键单击目标模块,在弹出的快捷菜单中进行与方法1同样的菜单项选择147.3.3模块连接模块连接通过信号线实现。信号线是Simulink模型中另一类最基本的元素,熟悉和正确使用信号线是创建模型的基础。信号线并不是简单的连线,它具有一定流向属性且不可逆向,表示实际模型中信号的流向。157.3.3模块连接信号线基本操作操作内容操作目的操作方法在模块间连线在两个模块之间建立信号联系在上级模块的输出端按住鼠标左键,拖动至下级模块的输入端,松开鼠标键移动线段调整线段的位置,改善模型的外观选中目标线段,按住鼠标左键,拖曳到目标位置,松开鼠标左键移动节点可改变折线的走向,改善模型的外观选中目标节点,按住鼠标左键,拖曳到目标位置,松开鼠标左键画分支信号线从一个节点引出多条信号线,应用于不同目的方法1:先按住“Ctrl”键,再选中信号引出点,按住鼠标左键,拖曳到下级目标模块的信号输入端,松开鼠标左键;方法2:先选中信号引出线,然后在信号引出点按住鼠标右键,拖曳到下级目标模块的信号输入端,松开鼠标右键删除信号线删除窗口中不需要的线段或断开模块间连线方法1:选中目标信号线,然后按“Delete”键;方法2:选中目标信号线,使用[EditCut]命令信号线标签设定信号线的标签,增强模型的可读性双击要标注的信号线,进入标签的编辑区,输入信号线标签内容,在标签编辑框外的窗口中单击鼠标退出167.3.4模块的参数和属性设置模块的参数设置双击模块将会弹出模型相应的【参数设置】对话框177.3.4模块的参数和属性设置模块的属性设置Description:对该模块在模型中的用法进行说明。Priority:规定该模块在模型中相对于其他模块执行的优先顺序。Tag:用户为模块添加的文本格式的标记。“BlockAnnotation”选项卡中指定在该模块的图标下显示模块的哪个参数。“Callbacks”选项卡中指定当对该模块实施某种操作时需要执行的MATLAB命令或程序。187.4运行仿真7.4.1仿真过程控制7.4.2仿真参数设置7.4.3示波器的使用197.4.1仿真过程控制通过设置仿真时间、算法、步长等控制。参数设置对话框。选择菜单选项[SimulationConfigurationParameters]可以进行仿真参数的设置。选择此选项后会显示参数设置对话框。207.4.1仿真过程控制参数设置对话框包含的主要属性页的内容及功能如下:Solver:设置仿真的起始时间和终止时间,设置积分解法以及步长等参数;DataImport/Export:Simulink和MATLAB工作空间数据的输入和输出设定,以及数据存储时的格式、长度等参数设置;Diagnostics:允许用户选择在仿真过程中警告信息显示等级。选择适当的算法并设置好其它仿真参数后,选择对话框中的“OK”或“Apply”命令。217.4.2仿真参数设置设置仿真时间设置仿真时间非常重要,它决定了模型仿真的时间或取值区域,其设置根据待仿真系统的特性确定,反映在输出显示上就是示波器的横轴坐标值的取值范围。“Starttime”和“Stoptime”项分别用以设置仿真开始时间(或取值区域下限)和终止时间(或取值区域上限),默认值分别为0.0和10.0。227.4.2仿真参数设置选择仿真算法在Simulink的仿真过程中选择合适的算法是很重要的。仿真算法是求常微分方程、传递函数、状态方程解的数值计算方法。由于动态系统的差异性,使得某种算法对某类问题比较有效,而另外算法对另一类问题更有效。因此,对不同的问题,可以选择不同的适应算法和相应的参数,以得到更准确、快速的解。VariableStep:可变步长类算法,在仿真过程中可以自动调整步长,并通过减小步长来提高计算的精度。FixedStep:固定步长类算法,在仿真过程中采取基准采样时间作为固定步长。23算法特点算法名称算法说明ode45基于显式Runge-Kutta(4,5)和Dormand-Prince组合的算法,是一种一步算法,即只要知道前一时间点的解,就可以立即计算当前时间点的方程解。对大多数仿真模型来说,首先使用ode45来解算模型是最佳的选择,因此在SIMULINK的算法选择中将ode45设为默认的算法ode23基于显式Runge-Kutta(2,3)、Bogacki-Shampine相结合的算法,也是一种一步算法。在容许误差和计算略带刚性的问题方面,该算法比ode45要好ode113可变阶次的Adams-Bashforth-Moulton算法,是一种多步算法,即需要使用前几次节点上的值来计算当前节点的解。在精度要求高的情况下,该算法比ode45更合适ode15s一种可变阶次的多步算法,当遇到带刚性(Stiff)的问题时或者使用ode45算法很慢时,可以一试ode23s刚性方程固定阶次的单步解法。在容许误差较大时,比ode15s有效。因此,如果系统是刚性系统,可以同时尝试两种方法以确定哪一个更快ode23t一种采用自由内插方法的梯形算法。如果系统为中度刚性且要求解没有数值衰减时,可考虑此解法ode23tb采用TR-BDF2算法,即在龙格-库塔法的第一阶段用梯形法,第二阶段用二阶的BackwardDifferentiationFormulas算法。在容差比较大时,ode23tb和ode23t都比ode15s要好可变步长类算法discrete针对非连续系统(离散系统)的特殊算法ode5采用Dormand-Prince的算法,即固定步长的ode45算法ode4采用固定步长的4阶Runge-Kutta算法ode3采用固定步长的Bogacki-Shampine算法ode2采用固定步长的2阶Runge-Kutta算法,也称Heun算法ode1固定步长的Eular算法固定步长类算法discrete不含积分的固定步长算法,适用于没有连续状态仅有离散状态模型的计算若微分方程描述的一个变化过程包含着多个相互作用但变化速度相差十分悬殊的子过程,这样一类过程就认为具有“刚性”,这类方程具有非常分散的特征值。247.4.2仿真参数设置启动仿真完成仿真参数的设置后,就可以开始仿真。确认待仿真的仿真平台窗口为当前窗口,选择菜单选项【Simulation】|【Start】或点击工具栏中的【Startsimulation】图标启动仿真。257.4.2仿真参数设置停止/暂停仿真对于仿真时间较长的模型,如果在仿真过程结束之前,用户想停止此次仿真过程,可以选择菜单选项【Simulation】|【Stop】停止仿真。267.4.2仿真参数设置显示仿真结果如果建立的模型没有错误,选择的参数合适,则仿真过程将顺利进行。这时,双击模型中用来显示输出的模块(如Scope模块),就可以观察到仿真的结果。当然,也可以在仿真开始前先双击打开显示输出模块,再开始仿真。277.4.3示波器的使用示波器(Scope)模块是SIMULINK仿真中非常重要的一个模块,不仅可以实现仿真结果波形的显示,而且可以同时保