第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所示,判断该系统是否有稳定的极限环,并且分析该系统的稳定性。,运行仿真模型就绘制出该非线性控制系统相轨迹,从相轨迹可以看到该非线性系统具有稳定的极限环。,再建立另一种形式的系统仿真模型,并且得到仿真结果(下图所示)。可以看到极限环对应的等幅振荡的振幅大约为0.6;周期大约为6秒。,5.3子系统与模块封装技术,用户也可以根据自己的需要将一些常用的子系统封装成一些模块,这些模块的用法也类似于标准的Simulink模块。并且还可以将自己开发的一系列模块构建自己的模块集。,5.3.1子系统概念及构成方法,例如,我们可以创建一个简单的三角函数方程的子系统,如下图所示。,选中要压缩的子系统,压缩成子系统以后,5.3.2模块封装方法,创建一个封装模块的主要步骤如下:,(1)创建一个子系统,(2)选中该子系统模块,执行模型窗口菜单中的“Edit→Masksubsystem”命令,将子系统转化为封装模块。这时系统弹出封装编辑对话框(右图所示)。,(3)使用封装编辑对话框设置封装文本、对话框和图标。,我们以简单的三角函数方程的子系统为例,学习如何封装一个子系统。(见教材87页),Icon(图标)设置,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的随时间变化的曲线。,解题过程如下(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文件夹内。其程序如下:,(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章结束,,,
展开阅读全文