1第7章Simulink仿真7.1Simulink简介作为MATLAB最重要的组件之一,Simulink提供了一个动态系统建模、仿真和综合分析的集成仿真环境。为了实现系统模型的动态仿真,Simulink为某个特许功能的模块建立了一个基于模型方块图的图形用户接口(GUI),用户通过Simulink,不需要书写大量的源代码,而通过简单的鼠标拖曳和键盘操作,就可以构造实现复杂功能的系统,它可以针对控制系统、信号处理及通信系统等进行系统的建模、仿真、分析等工作。2它可以处理的系统包括:线性、非线性系统;离散、连续及混合系统;单任务、多任务离散事件系统。它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。利用Simulink进行系统的建模仿真,最大的优点就是易学易用,同时可以利用Matlab提供的丰富仿真资源,具有适应面广、结构和结果直观明了、仿真精细、效率高、灵活多变等优点,已被广泛应用于各种控制理论、神经网络、数字信号处理的复杂仿真和设计。3Simulink的特点表现在如下几个方面:1.框图式建模Simulink提供一种图形化的建模方式。所谓图形化建模指的是用Simulink中丰富的按功能分类的模块库,帮助用户轻松地建立起动态系统的模型(模型用模块组成的框图表示)。用户只需要知道这些模块的输入、输出及实现的功能,通过对模块的调用、连接就可以构成所需系统的模型。整个建模的过程只需用鼠标进行单击和简单拖动即可实现。4利用Simulink图形化的环境及提供的丰富的功能模块,用户可以创建层次化的系统模型。从建模角度讲,用户可以采用从上到下或从下到上的结构创建模型。从分析研究角度讲,用户可以从最高级观察模型,然后双击其中的子系统,来检查下一级的内容,以此类推,从而看到整个模型的细节,帮助用户理解模型的结构和各个模块之间的关系。52.交互式仿真环境可以利用Simulink中的菜单或者是Matlab的命令窗口输入命令来对模型进行仿真。菜单方式对于交互工作特别方便,而命令行方式对大量重复仿真很有用。Simulink内置很多仿真的分析工具,如仿真算法、系统线性化、寻找平衡点等。仿真的结果可以以图形的方式显示在类似于示波器的窗口内,也可以将输出结果以变量的方式保存起来,并输入到Matlab中,让用户观察系统的输出结果并做进一步的分析。63.专用模块库(Blocksets)Simulink提供了许多专用模块库,如DSPBlocksets和CommunicationBlocksets等。利用这些专用模块库,Simulink可以方便地进行DSP及通信系统等进行仿真分析和原型设计。74.与Matlab的集成由于Matlab和Simulink是集成在一起的,因此用户可以在这两种环境中对自己的模型进行仿真、分析和修改。87.2Simulink常用模块在Simulink中,创建模型实际上是构造模型框图,并且保存为.mdl的ASCII码文件形式。它实际上在数学上体现了一组微分方程或差分方程,也可以是普通的方程。从行为上来说,这种模型模拟了物理器件构成的实际系统的动态特性。9从宏观的框架上看,Simulink模型通常包含3个部分:输入、系统以及输出,如图7-1所示。图7-1simulink模型的基本结构输入(信源)系统(System)输出(信宿)10输入一般用信源(Source)表示,可以为常数、正弦波、方波以及随机信号等信号源,代表实际对系统的输入信号;输出一般用信宿(Sink)表示,可以是示波器、图形记录仪等。无论是信源、系统还是信宿皆可以从Simulink模块库中直接获得,或由用户根据实际要求采用模块库中的模块搭建而成。当然,对于一个具体的Simulink模型而言,这3种结构并不都是必需的,有些模型可能不存在输入或输出部分,比如研究系统的零输入响应就可以不包含信源器件。11Simulink模型的建立离不开其工作环境---库浏览器(SimulinkLibraryBrowser)与模型窗口,库浏览器为用户提供了进行Simulink建模与仿真的标准模块库与专业工具箱,而模型窗口是用户创建模型的主要场所。7.2.1进入Simulink工作环境的方法出于节省内存和加快MATLAB启动速度的需要,MATLAB启动后,Simulink并不随之启动,因此要建立一个Simulink模型,首先要进入Simulink工作环境,有以下4个方法:121.在MATLAB主界面上的工作栏点击(simulink),则可进入如图7-2所示的库浏览器窗口。2.在Matlab命令提示符下输入simulink,则可进入如图7-2所示的库浏览器窗口。3.在MATLAB主界面的左下方点,依次点击simulink-LibraryBrowser,也可以进入如图7-2所示的库浏览器窗口。4.在Matlab命令提示符下输入simulink3,则可进入如图7-3所示的库浏览器窗口。和图7-2相比,只是显示形式不一样,是用图标形式显示的Librarysimulink3。13图7-2Simulink库浏览器窗口14图7-3Simulink3库浏览器窗口15若没有特殊说明,都是以图7-2所示的库浏览器窗口进行操作。7.2.2Simulink模块库图7-2所示窗口的左半部分是Simulink所有库的名称。第一个库是Simulink库,该库为Simulink的通用模块库,Simulink库下面的模块库为专业模块库,服务于不同专业领域,普通用户用得较少。如:ControlSystemToolbox模块库(面向控制系统的设计与分析)、CommunicationsBlockset(面向通信系统的设计与分析)等。窗口的右半部分是对应于左窗口打开的库中包含的子库或模块。161.Simulink通用模块库该库位于library展示栏最上方的第一个库(Simulink),点击前面的+号,即可展开其中包含的子库情况,如Continuous(连续模块库)、Discrete(离散模块库)、Sinks(信宿模块库)、Sources(信源模块库)等,如图7-4所示。这个通用库包含Simulink仿真常用的基本模块,本章建模所需的模块大部分在此库中17图7-4Simulink通用模块库包含的子库情况18Simulink通用模块库的子库简介如下:CommonlyUsedBlocks通用模块BusCreator输入信号合并成向量信号BusSelector输入向量分解成多个信号Creator输出信号Constant输出常量信号DataTypeConversion数据类型转换Demux输入向量转换成标量19Discreat-TimeIntegrator离散积分器模块Gain增益模块In1输入模块Integrator连续积分器模块LogicalOperator逻辑运算模块Mux输入的向量、标量或矩阵信号合成Out1输出模块Product乘法器模块20RelationalOperator关系运算Saturation定义输入信号的最大和最小值Scope输出示波器Subsystem创建子系统Sum加法器Switch选择器,根据第二个输入信号来选择输出第一个还是第三个信号Terminator终止输出UnitDelay延时21Continuous连续模块Derivative:输入信号微分Integrator:一阶积分IntegratorLimited:积分限制IntegratorSecond:二阶积分IntegratorSecond-OrderLimited:二阶积分限制PIDController:比例微分积分控制器State-Space:线性状态空间系统模型Transfer-Fcn:线性传递函数模型TransportDelay:信号延时一个固定时间输出VariableTransportDelay:输入信号延时一个可变时间再输出Zero-Pole:以零极点表示的传递函数模型22Discontinuities分段线性模块DeadZone:产生死区Saturation:饱和输出,让输出超过某一值时能够饱和。Relay:滞环比较器,限制输出值在某一范围内变化。Quantizer:量化器23Discrete离散模块Delay:延时Difference:查分DiscreteDerivative:离散时间微分器Discrete-timeIntegrator:离散时间积分器DiscreteFIRFilter:离散FIR滤波器DiscreteIIRFilter:离散IIR滤波器DiscreteFilter:离散滤波器24DiscretePIDController:离散PID控制器DiscreteState-Space:离散状态空间系统模型DiscreteTransfer-Fcn:离散传递函数模型DiscreteZero-Pole:以零极点表示的离散传递函数模型DiscreteIntegrator:离散时间积分器First-OrderHold:一阶采样和保持器Zero-OrderHold:零阶采样和保持器Memory:存储上一时刻的状态值TappedDelay:多个采样周期的延时25MathOperations数学模块Abs:求绝对值Add:求和AlgebraicConstraint:代数约束Sum:加减运算Product:乘运算Divide:除运算DotProduct:点乘运算Gain:比例运算26MathFunction:包括指数函数、对数函数、求平方、开根号等常用数学函数TrigonometricFunction:三角函数,包括正弦、余弦、正切等MinMax:最值运算Sign:符号函数ComplextoMagnitude-Angle:由复数输入转为幅值和相角输出Magnitude-AngletoComplex:由幅值和相角输入合成复数输出ComplextoReal-Imag:由复数输入转为实部和虚部输出Real-ImagtoComplex:由实部和虚部输入合成复数输出27•LogicandBitOperations逻辑模块BitClear将向量信号某一位置为0BitSet将向量信号某一位置为1BitwiseOperator对输入信号进行自定义的逻辑运算CombinatorialLogic组合逻辑,实现一个真值表CompareToZero定义如何与0比较LogicalOperator逻辑运算RelationalOperator关系运算ShiftArithmetic算术平移28Sinks信宿模块Display:显示Scope:示波器。FloatingScope:浮点示波器Out1:输出端StopSimulation:停止仿真Terminator:连接到没有连接到的输出端。ToFile(.mat):将输出写入数据文件。ToWorkspace:将输出写入MATLAB工作空间。XYGraph:显示二维图形。29Sources输入源模块Band-LimitedWhiteNoise:限带白噪声ChirpSignal:啁啾信号Clock:时钟信号。Constant:常数信号。Ground:接地In1:输入端。30FromWorkspace:来自MATLAB的工作空间。FromFile(.mat):来自数据文件。PulseGenerator:脉冲发生器。RepeatingSequence:重复信号。SignalGenerator:信号发生器,可以产生正弦、方波、锯齿波及随意波。SineWave:正弦波信号。Step:阶跃波信号。31User-DefinedFunction自定义函数Fcn:用自定义的函数(表达式)进行运算MATLABFcn:利用matlab的现有函数进行运算S-Function:调用自编的S函数的程序进行运算322.专业库专业库的模块对应不同的专业,有航天航空模块(AerospaceBlockset)、通信模块库(ComunicationsBlockset)等。在此不再一一介绍。337.3Simulink建模7.3.1新建模型窗口1