第5章Simulink在系统仿真中的应用Simulink是一种用于在MATLAB下建立模块化的集成软件工具包。是控制系统计算机仿真领域内的一种先进、高效、便捷的工具。5.1Simulink建模的基础知识Simulink含两层含义:“Simu”表示仿真(simulation);而link表示它能够进行系统连接,即:把一系列模块连接起来,构成复杂的系统模型。正是由于它的这些功能和特色,使得它成为计算机仿真领域首选的仿真环境。下图为图形库浏览器界面Simulink的仿真模型窗口界面由标题、功能菜单和用户模型编辑区三部分组成。在用户模型编辑区中,用户可以建立、编辑系统仿真模型的结构图。结构图中所需要的模块可直接从Simulink库浏览器窗口中拖拽复制。当用户完成Simulink系统模型的编辑之后,需要设置模块参数和系统仿真参数,最后就可以进行系统仿真。5.1.1Simulink6.0常用模块简介连续(Continuous)模块组不连续(Discontinuities)模块组离散(Discrete)模块组数学运算(MathOperations)模块组接收器(Sinks)模块组输入源(Sources)模块组5.1.2Simulink其他工具箱模块组除了基本的模块组以外,还有许多其他工具箱模块组。包括:AerospaceBlockset、CDMAReferenceBlockset、ComunicationsBlockset、ControlSystemToolbox、Dials&GaugesBlockset、FuzzyLogicToolbox、ModelPredictiveControlToolbox、NeuralNetworkBlockset、RFBlockset、SignalProcessingBlockset、SimMechanics、SimPowerSystems、SimulinkControlDesign、SimulinkParameterEstimation、SimulinkResponseOptimization、VirtureReality等等。这些模块组或工具箱都是针对各领域的专用工具模块。对于自动控制系统仿真,最常用的是以下几个:ControlSystemToolbox、FuzzyLogicToolbox、ModelPredictiveControlToolbox、NeuralNetworkBlockset、SignalProcessingBlockset、SimMechanics、SimPowerSystems、SimulinkControlDesign、SimulinkParameterEstimation等。5.2Simulink建模与仿真5.2.1Simulink建模方法简介在SimulinkLibraryBrowser的库中选择了所需要的模块以后,可以将模块拖拽到模型窗口中,这样就建立了一个Simulink模型。例如:5.2.2仿真算法与控制参数选择1.参数设置缺省时,Simulink的算法为变步长ode45,仿真时间为:起始0秒,终止10秒。从菜单栏Simulation→ConfigurationParameters,可以打开这一界面,根据自己的要求,重新进行设置。Solver(解题器)参数设置DataImport/Export(数据输入、输出)参数设置Diagnostics(诊断)参数设置HardwareImplementation(硬件实现)参数设置Modelreferencing(模型参考)设置Real-Timeworkshop(实时工作间)参数设置2.运行模型用户在选择适当的算法并且设置好仿真参数后,就可以运行Simulink仿真模型了。有两种方法可以启动仿真:1)选择Simulation→Start;2)点击图标“”。注意:缺省时,示波器历史数据只保存最后的5000个。如果我们希望显示完整的仿真曲线,就需要将“Limitdatatolast5000”前面复选框中的“√”去掉。5.2.3Simulink在控制系统仿真研究中的应用举例【例5-1】某一SISO的线性定常如图所示,试用MATLAB观测其单位阶跃响应曲线。解:建立一个Simulink模型文件,在其中构造如下图所示的仿真模型仿真运行结果:【例5-2】某一非线性控制系统如图5-20所示,判断该系统是否有稳定的极限环,并且分析该系统的稳定性。解:根据题意,可以列写出以下方程1(0.50.50.5;0)21(0.50.50.5;0)cccccecccoror建立绘制系统相轨迹的Simulink模型如下图所示运行仿真模型就绘制出该非线性控制系统相轨迹从相轨迹可以看到该非线性系统具有稳定的极限环。再建立另一种形式的系统仿真模型,并且得到仿真结果(下图所示)。可以看到极限环对应的等幅振荡的振幅大约为0.6;周期大约为6秒。5.3子系统与模块封装技术用户也可以根据自己的需要将一些常用的子系统封装成一些模块,这些模块的用法也类似于标准的Simulink模块。并且还可以将自己开发的一系列模块构建自己的模块集。5.3.1子系统概念及构成方法1.通过子系统模块创建子系统在Simulink的CommonlyUsedBlocks模块集中,提供了子系统模块(Subsystem),可以通过该模块创建子系统。例如,我们可以创建一个简单的三角函数方程的子系统,如下图所示。2.通过压缩已有的模块建立子系统按住鼠标右键并且拖动鼠标,使矩形方框包括希望建立子系统的部分,松开右键,窗口中弹出选项,选择“CreateSubsystem”,就完成了建立子系统的过程选中要压缩的子系统压缩成子系统以后5.3.2模块封装方法创建一个封装模块的主要步骤如下:(1)创建一个子系统(2)选中该子系统模块,执行模型窗口菜单中的“Edit→Masksubsystem”命令,将子系统转化为封装模块。这时系统弹出封装编辑对话框(右图所示)。(3)使用封装编辑对话框设置封装文本、对话框和图标。我们以简单的三角函数方程的子系统为例,学习如何封装一个子系统。(见教材87页)msinyAxIcon(图标)设置Parameter(参数)设置该页分为两个区:对话框参数区(Dialogparameters)和已选择参数选项区(Optionsforselectedparameters)。对话框参数区用于选择和改变封装参数的主要性质。已选择参数选项区用于设置已选择参数的其他选项。Initialization(初始化)设置初始化页分为两个区:对话框变量区(Dialogvariables)和初始化命令区(Initializationcommands)。对话框变量区显示在参数页中设置好的子系统封装参数。初始化命令区中可以输入MATLAB语句,如定义变量、初始化变量等。Documentation(文本)设置文本编辑页分为3个区:封装类型区(Masktype)、封装描述区(Maskdescription)和封装帮助区(Maskhelp)。封装类型区中的内容将作为模块的类型显示在封装模块的对话框中。封装描述区中的内容包括描述该模块功能的简短语句,该区中的内容将显示在封装模块对话框的上部。封装帮助区的内容包括使用该模块的详细说明等,当选择对话框中Help选项时,MATLAB的帮助系统将显示该区的内容。5.3.3模块库构造要构造一个模块库,在Simulink库浏览器的窗口上选择:“File→New→Library”,这时打开一个空白的模块库窗口将需要的模块(用户创建的模块或Simulink本身的系统模块)复制到新的库中,然后给这个模块库命名(例如:mylibrary.mdl),并且保存,这样就创建了自己的模块库。以后创建仿真模型需要用到该模块库中的模块时,首先打开该模块库,再将需要的模块拖拽到新的模型编辑窗口即可。5.4S函数及其应用Simulink中的函数也称为系统函数,简称S函数(S-Function或SystemFunction)。当MATLAB所提供的模型不能完全满足用户要求时,就可以通过S-函数提供给用户自己编写程序来满足自己要求模型的接口,它是Simulink为用户提供的一种功能强大的编程机制。5.4.1S函数的基本结构S-函数模块S-函数引导语句有些算法较为复杂的模块可以用MATLAB语言按照S-函数的格式来编写。需要注意,这样构造的S-函数只能用于基于Simulink的仿真,并不能转换成独立于MATLAB的程序。(详见教材第91页)5.4.2用MATLAB编写S函数举例【例5-3】用m文件S-函数实现乘法,并且绘制当时,u和y的随时间变化的曲线。(2)yusinut解题过程如下(1)为该系统写出S-函数的模块,程序名为ex5_3a,保存在work文件夹内。其程序如下:(2)建立如图所示的Simulink仿真框图。(3)双击S-Function模块,并且在对话框中输入S-函数名和参数名。本例中我们在S-FunctionName栏中输入ex5_3a,就可以建立起该模块和我们编写的ex5_3a.m文件之间的联系。(4)运行仿真,在Workspace中就得到tout和yout两个变量,在MATLAB的命令窗口输入命令:计算机就绘制出了u和y的曲线图【例5-4】用m文件S-函数实现以下连续系统的状态方程解题过程如下(1)为该系统写出S-函数的模块,程序名为ex5_4,保存在work文件夹内。其程序如下:sin()U1()tt,0001YX02022.2551.250.5462.254.251.250.2524XX+U0.250.51.251221.251.750.250.7502,(2)建立如图所示的Simulink仿真框图。(3)双击S-Function模块,并且在对话框中输入S-函数名和参数名。本例中我们在S-FunctionName栏中输入ex5_4,就可以建立起该模块和我们编写的ex5_4.m文件之间的联系。(4)在MATLAB的命令窗口输入参数A、B、C、D矩阵,在Workspace中就存有这些矩阵计算机就绘制出了变量曲线图,如图所示。(5)运行仿真,在Workspace中就得到tout和yout两个变量。其中输出变量yout的前两列为系统的输出信号,后4列为系统的状态变量。在MATLAB的命令窗口输入命令:第5章结束