您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 11--8-图形化系统建模与仿真工具SIMULINK(1)
8图形化系统建模与仿真工具Simulink本书的第2章、第3章对MATLAB语言及基本编程技巧作了介绍。从第四章到第七章较详细地介绍了控制系统数字仿真及计算机辅助设计的基本原理和数学方法。根据这两方面的知识,即可具体编写有关控制系统的数字仿真程序,实现控制系统的数字仿真及进行一定的计算机辅助设计。对于简单的系统,如此实践还是可以的,特别对于一些新算法的开发研究,经常要求研究人员亲自手工编程。但是对于稍为复杂一点的系统,直接人工编程显然不是一件容易的事情。为此,一种在MATLAB语言平台上,可以进行组态的、图形化的交互式的仿真集成软件的出现也就成了必然。Simulink就是MATLAB产品中的图形化系统建模与仿真工具。它主要用于系统级的设计和仿真,可在MATLAB/Simulink下建立系统框图和仿真环境。Simulink是TheMathWorks公司于1990年推出的产品。目前其版本已升到Simulink5.0。本章将介绍Simulink5.0的基本模块库、基于Simulink的控制系统框图模型建立方法、Simulink仿真环境的启动及运行,最后介绍基于Simulink的控制系统框图建模及仿真举例。8.1图形化建模与仿真Simulink是一个图形化的建模工具。从某种意义上讲,凡是能够用数学方式描述的系统,都可用Simulink建模。当然,针对自己特定的系统,用户应该权衡Simulink的易用性和方便性,以选择是否用Simulink建模及仿真。例如,对于已知各环节数学模型(传递函数)的一般控制系统,用Simulink可以很方便地进行整个系统的建模与仿真。对通信系统网络的仿真,用Simulink加上Stateflow是可以实现的,但不会太方便,所以笔者主张类似的仿真现在还不宜用Simulink。用Simulink可以很容易就搭建的系统主要包括:①控制系统②通信系统物理层和数据链路层③动力学系统④数字信号处理系统⑤电力系统⑥生物系统⑦金融系统为了建立各种各样的系统的模型,Simulink提供了一些基本库(由Simulink基本模块库提供)和针对特定领域的扩展库。用户可以使用这些库中的模块搭建自己的模型。用户为了实现特定领域的系统建模与仿真,购买MATLAB产品时通常需要选择Simulink基本模块和自己所属领域的扩展模块。8.2Simulink5.0基本模块库在MATLAB命令窗口下给出simulink命令,或单击MATLAB工具栏中的Simulink图标,则将打开Simulink模型库窗口,如图8-1所示。也可在MATLAB命令窗口下键入simulink3命令来打开整个模块库,这时模块库的表现形式如图8-2所示,其表现形式和早期版本完全一致,从这个模块库直接访问子模块库的方式也完全一致。使用图8-1所示新的界面去访问各个Simulink模块库,具有目录型结构,更加直观。这里为了更好地介绍各个模块组的基本内容,还是采用传统的形式,这样能更好地显示出每个模块组的全貌。图8-1Simulink5.0模块库界面图8-2Simulink5.0模块库的其他显示形式从图8-2所示的界面左侧可以看出,整个Simulink模块库是由各个模块组构成,故该界面又称为模型库浏览器。可以看出,在标准的Simulink模块库中,包括信号源模块组(Sources)、输出池模块组(Sinks)、连续模块组(Continuous)、离散模块组(Discrete)、数学运算模块组(Math)、函数与表格模块组(Function&Tables)、非线性模块组(Nonlinear)、信号与系统模块组(Signals&Systems)、子系统模块组(Subsystems)和模型转换模块组(ModelVerification)几个部分,此外还有和各个工具箱与模块集之间的联系构成的子模块组,用户还可以将自己编写的模块组挂靠到整个模型库浏览器下。下面将对常用的模块组和模块作一个概述。8.2.1Simulink5.0常用模块组(1)信号源模块组信号源模块组包括各种各样的常用输入信号,其内容如图8-3所示。该模块组的主要模块有:图8-3信号源模块组①输入端口模块(ln)——用来反映整个系统的输入端子,这样的设置在模型线性化与命令行仿真时是必需的。②普通信号源发生器(signaIGenerator)——能够生成若干种常用信号,如方波信号、正弦波信号、锯齿波信号等,允许用户自由地调整其幅值、相位及其他信号。③带宽限幅白噪声(Band-LimtedWhiteNoise)——一般用于连续或混杂系统的白噪声信号输入。除了这样的白噪声信号外,还有一般随机数发生模块,如正态分布随机数模块(Randomnumber)和均匀分布随机数模块(UniformRandomNumber)等,但注意,这两个模块不能直接用于仿真连续系统。④读文件模块(FromFile)和读工作空间模块(FromWorkspace)——两个模块允许从文件或MATLAB工作空间中读取信号作为输入信号。⑤时间信号模块(Clock)——生成当前仿真时钟,在与时间有关的指标求取中是很有意义的,例如获取系统的ITAE准则等,关于这方面的应用后面将详细介绍。⑥常数输入模块(Constant)——此模块以常数作为输入,可以在很多模型中使用该模块。⑦接地线模块(Ground)——一般用于表示零输入模块,如果一个模块的输入端子没有接任何其他模块,在Simulink仿真中经常给出错误信息,这样可以将该模块接入该输入端子即可避免错误信息。⑧各种其他类型的信号输入。如阶跃输入(Step)、斜坡输入(Ramp)、脉冲信号(PulseGenerator)、正弦信号(SineWave)等,还允许由RepeatingSequence模块构造可重复的输入信号。(2)连续模块组连续模块组包括常用的连续模块,连续模块组的内容如图8-4所示,包括:图8-4连续模块组①积分器(Integrator)——连续动态系统最常用的元件,该模块将输入端信号经过数值积分,在输出端直接反映出来。在将常微分方程转换为图形表示时也必须使用此模块。积分器模块随着其采用不同的选项将有不同的变化形式,这将在后面的例子中进行介绍。②数值微分器(Derivative)——该模块的作用是将其输入端的信号经过一阶数值微分,在输出端输出出来。在实际应用中应该尽量避免使用该模块。③线性系统的状态方程(State-Space)——是线性系统的一种时域描述,系统的状态方程数学表示为:(8-1)⎩⎨⎧+=+=DuCxyBuAxx其中A矩阵是n×n方阵,B为n×p矩阵,C为q×n矩阵,D为q×p矩阵,这又称为这些矩阵维数相容。在状态方程模块下,输入信号为u,而输出信号为y。④传递函数(transferFcn)——传递函数是频域下常用的描述线性微分方程的一种方法,通过引入Laplace变换可以将原来的线性微分方程在零初始条件下变换成“代数”的形式,从而以多项式的比值形式描述系统,传递函数的一般形式为G(s)=nnnnnmmmmasasasasbsbsbsb+++++++++−−−+−122111121(8-2)其中的分母多项式又称为系统的特征多项式,分母多项式的最高阶次又称为系统的阶次。物理可实现系统要满足m≤n,这种情况下又称系统为正则(proper)的。传递函数实际上是输出的Laplace变换和输入的Laplace变换直接的比值。⑤零极点(Pole-Zero)——将传递函数模型的分子和分母分别进行因式分解,则可以将其变换成G(s)=K)2)1)21()(()()((nmpspspszszszs++++++(8-3)其中K称为系统的增益,-zi,(i=1,…,m)称为系统的零点,而-pi,(i=1,…,n)称为系统的极点。很显然,对实系数的传递函数模型来说,系统的零极点或者为实数,或者以共轭复数的形式出现。⑥时间延迟(TransportDelay或VariableTransportDelay)——用于将输入信号延迟指定的时间后传输给输出信号。两个模块的区别在于:前者在模块内部参数中设置延迟间,而后者将采用输入信号来定义延迟时间。(3)离散模块组离散模块组主要用于建立离散采样系统的模型。离散模块组的内容如图8-5所示。该模块组主要包括:图8-5离散模块组①零阶保持器(Zero-OrderHold)和一阶保持器(First-OrderHold)——前者在一个计算步长内将输出的值保持在同一个值上,而后者将依照一阶插值的方法计算一个计算步长下的输出值。②离散系统的传递函数和状态方程——定义和连续系统的相类似,其定义分别为(8-4)[]⎩⎨⎧+=+=+)()()()()()1(kTDukTCxkTykTBukTAxTkx和nnnnnmmmmazazazazbzbzbzbzG+++++++++=−−−+−122111121)((8-5)其中T为采样系统的采样周期。模块组中的滤波器(Filter)、单位延迟(UnitDelay)等都应该是离散系统传递函数的特殊情况。(4)函数与表格模块组函数与表格模块组实现各种一维、二维或高维函数的查表,另外用户可以自己编写更复杂的函数,该模块组内容如图8-6所示。该模块组主要包含:图8-6函数与查表模块组①一维查表模块(Look—Up-Table)——给出一组横坐标和纵坐标的参考值,则输入量经过查表和线性插值计算出输出值返回。②二维查表模块(Look—UpTable2D)——给出二维平面网格上的高度值,则输入的两个变量经过查表、插值运算,计算出模块的输出值。③函数计算模块(Fcn)——可以将输入信号进行指定的函数运算,该模块可以对输入信号实现很复杂的函数运算,最后计算出模块的输出值。④MATLAB函数的模块(MATLABFcn)——可以将用户自己按照规定格式编写的MaTLAB函数嵌入到Simulink模型中,这样就可以对输入进行运算,计算生成出输出信号。⑤S-函数模块(S-Function)——按照Simulink规定的标准,允许用户编写自己的S-函数,可以将MATLAB语句、C/C++语句、Fortran语句或Ada语句等编写的函数在Simulink模块中执行,最后计算出模块的输出值。(5)数学运算模块组数学函数模块组实现了各种各样的数学函数模块,如图8-7所示,该模块组主要的模块为:图8-7数学函数模块组①增益函数(Gain)——输出信号等于输入信号乘以增益模块中指定的数值。更一般地,还有对矩阵进行乘法的矩阵增益模块(MatrixGain)。②求和模块(Sum)——将输入的多路信号进行求和或求差,则可以计算出输出信号。在组建反馈控制系统框图时必须采用该模块。③代数约束模块(AIgebraicConstraint)——可以在Simulink模型中引入某些代数方程求解的算法,其功能是约束其输入信号,使其值为零,该模块可以用于微分代数方程的建模。④复数的实部虚部提取模块(ComplextoRealandlmag)、复数变换成幅值幅角的模块(ComplextoMagnitude-Angle)及其反变换。⑤一般数学函数,如绝对值函数(Abs)、符号函数(Sign)、三角函数(TrigonometricFunction)、取整模块(RoundingFunction)等。⑥数字逻辑模块,如逻辑运算模块(LogicOperator)、组合逻辑模块(CombinationalLogic)等,可以用这些模块容易地搭建起数字逻辑电路。(6)非线性模块组非线性模块组包含一些常用的非线性运算模块,如图8-8所示。该模块组的主要模块包括:①Coulomb与黏性摩擦(Coulomb&ViscousFriction)。②开关模块(Switch或MultiportSwitch)——由开关量的值选择由哪路输入信号直接产生输出信号,在很多场合下可以采用此模块。图8-8非线性模块组③磁滞回环模块(Backlash)。和其在控制系统中的定义一致。④在此模块组中定义了很多分段线性的静态非线性模块,如死区非线性(
本文标题:11--8-图形化系统建模与仿真工具SIMULINK(1)
链接地址:https://www.777doc.com/doc-6925985 .html