§§2.42.4基于基于MATLAB/MATLAB/SimulinkSimulink建模与仿真建模与仿真本节摘要§2.4.1MATLAB/Simulink简介§2.4.2基于MATLAB的控制系统建模§2.4.3基于Simulink的控制系统建模与仿真§2.4.1MATLAB/Simulink简介Ø什么是MATLAB?——是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。一、MATLAB介绍§2.4.1MATLAB/Simulink简介ØMATLAB产品族可以用来进行以下各种工作n数值分析n数值和符号计算n工程与科学绘图n控制系统的设计与仿真n数字图像处理技术n数字信号处理技术n通讯系统设计与仿真n财务与金融工程一、MATLAB介绍§2.4.1MATLAB/Simulink简介ØMATLAB特点n数值计算能力强大n绘图功能强大n程序执行效率低,n编程效率、可读性和可移植性高(第四代编程语言)n运算精度高,在矩阵运算中可达10-15数量级一、MATLAB介绍ØMATLAB发展历程n20世纪70年代,美国新墨西哥大学计算机科学系主任CleveMoler为了减轻学生编程的负担,用FORTRAN编写了最早的MATLAB;n1984年由JakeLittle、CleveMoler、SteveBangert合作成立了的MathWorks公司正式把MATLAB推向市场;n20世纪90年代,MATLAB已成为国际控制界的标准计算软件。§2.4.1MATLAB/Simulink简介JackLittleCleveMoler一、MATLAB介绍2003R13SP2MATLAB6.5.22003R13SP1MATLAB6.5.12002R13MATLAB6.52001R12.1MATLAB6.12000R12MATLAB6.01999R11.1MATLAB5.3.11999R11MATLAB5.31998R10.1MATLAB5.2.11998R10MATLAB5.21997R9.1MATLAB5.1.11997R9MATLAB5.11996R8MATLAB5.01994R7MATLAB4.2c1992MATLAB41990MATLAB3.51987MATLAB31986MATALB21984MATLAB1.0发布时间建造编号版本§2.4.1MATLAB/Simulink简介2010.3.5R2010aMATLAB7.102009.9.4R2009bMATLAB7.92009.3.6R2009aMATLAB7.82008R2008bMATLAB7.72008R2008aMATLAB7.62007R2007bMATLAB7.52007R2007aMATLAB7.42006R2006bMATLAB7.32006R2006aMATLAB7.22005R14SP3MATLAB7.12005R14SP2MATLAB7.0.42004R14SP1MATLAB7.0.12004R14MATLAB7一、MATLAB介绍2011bØSimulink是TheMathWorks公司于1990年推出的产品;是MathWorks软件公司为MATLAB提供的新的控制系统模型图输入与仿真工具,并命名为SIMULAB,该工具很快就在控制工程界获得了广泛的认可,使得仿真软件进入了模型化图形组态阶段。但因其名字与当时比较著名的软件SIMULA类似,所以1992年正式将该软件更名为Simulink。§2.4.1MATLAB/Simulink简介Ø什么是Simulink?——交互式仿真(Simulation+Link)的简称,是MATLAB最重要的组件之一,是MATLAB中的一种可视化仿真工具,它提供一个动态系统建模、仿真和综合分析的集成环境,基于MATLAB的框图设计环境。在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。二、Simulink的详细介绍二、Simulink的详细介绍1Simulink工作平台的启动2Simulink仿真原理3Simulink模块库4仿真模型的建立和模块参数及属性的设置5其他应用模块集及Simulink扩展库§2.4.1MATLAB/Simulink简介1Simulink工作平台启动Simulink,通常有两种方法:(1)在MATLAB命令窗口中直接输入Simulink命令;(2)在MATLAB工具栏上单击Simulink按钮,如图所示。这样就可打开了Simulink的SimulinkLibraryBrower(库模块浏览器),在菜单栏中执行File/New/Model命令,就建立了一个名为untitled的模型窗口,在建立了空的模块窗口后,用户可以在此窗口中创建自己需要的Simulink模型。§2.4.1MATLAB/Simulink简介图2.2库模块浏览器图2.3新建的空白模块窗口§2.4.1MATLAB/Simulink简介2Simulink的仿真原理ØSimulink仿真模块Simulink仿真系统包括输入(Input)、状态(states)和输出(Output)三个部分。输入模块:即信号源模块,包括常数字信号源和用户自定义信号;状态模块:即被模拟的系统模块,是系统建模的核心和主要部分;输出模块:即信号显示模块,它能够以图形方式、文件格式进行显示。§2.4.1MATLAB/Simulink简介ØSimulink仿真过程1.初始化阶段①对模型的参数进行估计,得到它们实际计算的值。②展开模型的各个层次;③按照更新的次序对模型进行排序;④确定那些显式化的信号属性,并检查每个模块是否能够接受连接它们输入端的信号;⑤确定所有非显式的信号采样时间模块的采样时间;⑥分配和初始化存储空间,以便存储每个模块的状态和当前值的输出。2.模型执行阶段模型仿真是通过数值积分来进行完成的,计算数值积分可以采用以下两步来进行:①按照秩序计算每个模块的积分;②根据当前输入和状态来决定状态的微分,得到微分矢量,然后把它返回给解法器,以计算下一个采样点的状态矢量。在每一个时间步中,Simulink依次解决下列问题:·按照秩序更新模块的输出;·按照秩序更新模块的状态;·检查模块连续状态的不连续点;·计算下一个仿真时间步的时间。§2.4.1MATLAB/Simulink简介Ø连续模块库(Continuous)在连续模块(Continuous)库中包括了常见的连续模块,这些模块如图所示。3Simulink模块库在库模块浏览器中单击Simulink前面的“+”号,就能够看到Simulink的模块库。§2.4.1MATLAB/Simulink简介⎩⎨⎧+=+=DuCxyBuAxx'4.传递函数模块(TransferFcn)功能:用执行一个线性传递函数。5.零极点传递函数模块(Zero-Pole)功能:用于建立一个预先指定的零点、极点,并用延迟算子s表示的连续。6.存储器模块(Memory)功能:保持输出前一步的输入值。7.传输延迟模块(TransportDelay)功能:用于将输入端的信号延迟指定的时间后再传输给输出信号。8.可变传输延迟模块(VariableTransportDelay)功能:用于将输入端的信号进行可变时间的延迟。1.积分模块(Integrator):功能:对输入变量进行积分。说明:模块的输入可以是标量,也可以是矢量;输入信号的维数必须与输入信号保持一致。2.微分模块(Derivative)功能:通过计算差分∆u/∆t近似计算输入变量的微分。3.线性状态空间模块(State-Space)功能:用于实现以下数学方程描述的系统:§2.4.1MATLAB/Simulink简介Ø离散模块库(Discrete)离散模块库(Discrete)主要用于建立离散采样的系统模型,包括的主要模块,如图所示。1.零阶保持器模块(Zero-Order-Hold)功能:在一个步长内将输出的值保持在同一个值上。§2.4.1MATLAB/Simulink简介2.单位延迟模块(UnitDelay)功能:将输入信号作单位延迟,并且保持一个采样周期相当于时间算子z-1。3.离散时间积分模块(DiscreteTimeIntegrator)功能:在构造完全离散的系统时,代替连续积分的功能。使用的积分方法有:向前欧拉法、向后欧拉法、梯形法。4.离散状态空间模块(DiscreteStateSpace)功能:用于实现如下数学方程描述的系统:⎩⎨⎧+=+=+)()()()()(])1[(nTDunTCxnTynTBunTAxTnx5.离散滤波器模块(DiscreteFilter)功能:用于实现无限脉冲响应(IIR)和有限脉冲响应(FIR)的数字滤波器。6.离散传递函数模块(DiscreteTransferFcn)功能:用于执行一个离散传递函数。7.离散零极点传递函数模块(DiscreteZero-Pole)功能:用于建立一个预先指定的零点、极点,并用延迟算子z-1表示的离散系统。8.一阶保持器模块(FirstOrderHold)功能:在一定时间间隔内保持一阶采样。§2.4.1MATLAB/Simulink简介Ø函数与表格模块库(Function&Table)函数与表格模块库(Function&Table)主要实现各种一维、二维或者更高维函数的查表,另外用户还可以根据自己需要创建更复杂的函数。该模块库包括多个主要模块、如图所示。§2.4.1MATLAB/Simulink简介1.一维查表模块(Look-UpTable)一维查表模块(Look-UpTable)实现对单路输入信号的查表和线性插值。2.二维查表模块(Look-UpTable2-D)功能:根据给定的二维平面网格上的高度值,把输入的两个变量经过查表、插值,计算出模块的输出值,并返回这个值。说明:对二维输入信号进行分段线性变换。3.自定义函数模块(Fcn)功能:用于将输入信号进行指定的函数运算,最后计算出模块的输出值。说明:输入的数学表达式应符合C语言编程规范;与MATLAB中的表达式有所不同,不能完成矩阵运算。4.MATLAB函数模块(MATLABFcn)功能:对输入信号进行MATLAB函数及表达式的处理。说明:模块为单输入模块;能够完成矩阵运算。注意:从运算速度角度,Mathfunction模块要比Fcn模块慢。当需要提高速度时,可以考虑采用Fcn或者S函数模块。5.S-函数模块(S-Function)功能:按照Simulink标准,编写用户自己的Simulink函数。它能够将MATLAB语句、C语言等编写的函数放在Simulink模块中运行,最后计算模块的输出值。§2.4.1MATLAB/Simulink简介Ø数学模块库(Math)数学模块库(Math)包括多个数学运算模块,如图所示。§2.4.1MATLAB/Simulink简介3.矢量的点乘模块(DotProduct)功能:矢量的点乘模块(DotProduct)用于实现输入信号的点积运算。4.增益模块(Gain)功能:增益模块(Gain)的作用是把输入信号乘以一个指定的增益因子,使输入产生增益。1.求和模块(Sum)功能:求和模块(Sum)用于对多路输入信号进行求和运算,并输出结果。2.乘法模块(Product)功能:乘法模块(Product)用于实现对多路输入的乘积、商、矩阵乘法或者模块的转置等。5.常用数学函数模块(MathFunction)功能:用于执行多个通用数学函数,其中包含exp、log、log10、square、sqrt、pow、reciprocal、hypot、rem、mod等。§2.4.1MATLAB/Simulink简介6.三角函数模块(TrigonometricFunction)功能:用于对输入信号进行三角函数运算,共有10种三角函数供选择。7.特殊数学模块特殊数学模