《第9章_MATLAB的仿真集成环境-Simulink》由会员分享,可在线阅读,更多相关《第9章_MATLAB的仿真集成环境-Simulink(53页珍藏版)》请在人人文库网上搜索。
1、MATLAB与控制系统仿真,第9章MATLAB的仿真集成环境Simulink,引言,Simulink是MATLAB里的一个实现动态系统建模、仿真与分析的仿真集成环境软件工具包,是控制系统计算与仿真最先进的高效工具。本章首先对Simulink环境介绍,对功能模块做了说明,并给出一些示例。对如何建立子系统与模块封装、如何编写S函数也做了介绍。,主要内容,9.1Simulink概述9.2Simulink的基本界面操作9.3Simulink的功能模块及其操作9.3.1Simulink的功能模块9.3.2功能模块的基本操作9.3.3功能模块的连接操作9.4Simulink仿真环境的设置,主要内容(续),。
2、9.5子系统及其封装技术9.5.1子系统的建立9.5.2子系统的封装9.6用Simulink建立系统模型示例9.7Simulink的高级应用S函数的编写本章小结,9.1Simulink概述,在Simulink帮助文档中,将其概括为ToolforModel-BasedDesign,ToolforSimulation,ToolforAnalysis。Simulink是对动态系统进行建模、仿真和综合分析的图形化软件。它可以处理线性和非线性系统,离散、连续和混合系统。也可以处理单任务和多任务系统,并支持具有多种采样频率的系统。,9.1Simulink概述,Simulink的图形化仿真方式,使其具有更直。
3、观形象、更简单方便与更灵活的优点。比如由Simulink创建的控制系统动态方框图模型,是系统最基本的直觉图形化形式,非常直观,容易理解。并且可以在仿真进行的同时,就看到仿真结果。这样可以大大简化设计流程,减轻设计负担和降低设计成本,提高工作效率。,9.1Simulink概述,Simulink内置有各种分析工具,如多种仿真算法、系统线性化、寻找平衡点等,都是非常先进而实用的。Simulink仿真的结果能够以变量的形式保存到MATLAB的工作空间,供做进一步的分析、处理和利用。它还可以将MATLAB工作空间中的数据导入到模型中。,9.1Simulink概述,更为优秀的是,Simulink具有开放的。
4、体系结构,允许用户自己开发各种功能的模块,无限制地添加到Simulink中,以满足不同任务的要求。,9.2Simulink的基本界面操作,Simulink启动命令窗口键入simulink工具栏上选相应图标基本操作在模块库中选择构建系统模型所需的模块直接拖放到所建立的系统模型窗口中按照系统的信号流程将各系统模块正确连接起来,9.2Simulink的基本界面操作,注:演示例1创建一个正弦信号的仿真模型。,9.3Simulink功能模块及操作,为便于仿真,Simulink模块库提供了丰富的功能模块。功能模块既可以通过右键点击左侧的子模块库选Openthe*library(*代表相应的子模块库名)打开。
5、,也可以直接双击右侧的子模块库查看。,常用模块组(CommonlyUsedBlocks),连续系统模块组(Continuous),连续系统模块组(Continuous),连续系统模块组(Continuous),Integrator:积分器模块,输出对输入时间积分。Derivative:微分器模块,输出对输入时间微分。State-Space:状态空间表达式模块,实现线性状态空间系统。TransferFcn:传递函数模块,实现线性传递函数。Zero-Pole:零极点函数模块,实现用零极点方式指定传递函数。TransportDelay:传输延迟模块,以固定的时间延迟输入。VariableTransp。
6、ortDelay:可变传输延迟模块,以变化的时间量延迟输入。VariableTimeDelay:可变时间延迟模块。,非线性模块组(Discontinuities),非线性模块组(Discontinuities),Backlash:磁滞回环模块。Saturation:饱和非线性模块。SaturationDynamic:动态饱和非线性模块。DeadZone:死区非线性模块。DeadZoneDynamic:动态死区非线性模块。Relay:继电模块。Quantizer:量化模块。Coulomb&ViscousFriction:库伦与黏性摩擦非线性模块。RateLimiter:静态限制信号的变化速率。R。
7、ateLimiterDynamic:动态限制信号的变化速率。HitCrossing:过零检测非线性模块。WraptoZero:环零非线性模块。,离散系统模块组(Discrete),离散系统模块组(Discrete),离散系统模块组(Discrete),UnitDelay:单位时间延迟,延迟信号一个采样周期。DiscreteTransferFcn:离散系统的传递函数,实现离散传递函数。DiscreteZero-Pole:离散系统的零极点函数,实现离散零极点模型。DiscreteState-Space:离散系统的状态方程,实现离散状态空间系统。First-OrderHold:一阶保持器,实现一阶采。
8、样保持器。Zero-OrderHold:零阶保持器,实现零阶保持器。Memory:记忆模块,用于返回上一时刻值。DiscreteFilter:离散滤波器,实现IIR和FIR离散滤波器。,数学运算模块组(MathOperations),数学运算模块组(MathOperations),Gain:增益函数模块,输入乘以一个常数,执行比例运算。SliderGain:可调增益函数模块。一般数学函数,如Add(求和函数)、Substract(减法函数)、Product(乘法函数)、Divide(除法函数)、Abs(绝对值函数)、Sign(符号函数)、TrigonometricFunction(三角函数)、。
9、RoundingFunction(取整函数)、Sum(求和函数)等。,数学运算模块组(MathOperations),MathFunction:数据函数模块,包括指数函数,对数函数,求平方,开方等函数。AlgebraicConstraint:代数约束模块,强制输入信号为零。ComplextoReal-Imag:复数的实部虚部提取模块,输出复数输入信号的实数和虚数部分。ComplextoMagnitude-Angle:复数变换成幅值幅角的模块,输出复数输入信号的幅值和相位。,输入源模块组(Sources),输入源模块组(Sources),In1:输入端口模块,为子系统或外部输入生成一个输入端口。。
10、Constant:常数输入模块,生成一个常值。SignalGenerator:普通信号发生器,生成正弦、方波、锯齿波和随意波波形。FromFile:读文件模块,加载文件读数据。FromWorkspace:读工作空间模块。Clock:时间信号模块,显示并输出当前的仿真时间。,输入源模块组(Sources),不同类型的输入信号,如Step(阶跃输入)、Ramp(斜坡输入)、PulseGenerator(脉冲信号)、SineWave(正弦信号)、BandLimitedWhiteNoise(带宽限幅白噪声)等,SignalBuilder模块还允许由用户自己创建信号,ReaptingSequence模块。
11、构造可重复的输入信号。Ground:接地线模块,用来连接输入端口未与其它模块相连的模块。,输出显示模块组(Sinks),输出显示模块组(Sinks),Out1:输出端口模块,为子系统或外部输出创建一个输出端口。Terminator:信号终结模块,终止一个未连接的输出端口。Scope/FloatingScope:示波器模块,显示仿真期间生成的信号。X-YGraph:X-Y示波器,使用MATLAB图形窗口显示信号的X-Y图。,输出显示模块组(Sinks),ToWorkspace:工作空间写入模块,将数据写入到工作空间的变量。ToFile:写文件模块,将数据写入到文件。Display:数字显示模块,。
12、显示输入值。StopSimulation:仿真终止模块,当输入为非零时停止仿真。,Simulink功能模块的操作,对功能模块的基本操作:对其外在属性的操作如移动位置、改变大小等对内在属性的设定,如参数设定、模块输入输出信号设定等注:演示功能模块的基本操作注:演示例2对例1图中的模块进行属性设置。,9.4Simulink仿真环境的设置,9.4Simulink仿真环境的设置,当选择Simulation菜单下的ConfigurationParameters项,就会弹出一个配置参数对话框。在此窗口中允许用户设置仿真控制参数。注:演示该窗口,Solver页,允许用户设置仿真的开始和结束时间选择解法器配置。
13、解法器参数选择一些输出选项注:演示该窗口,DataImport/Export页,管理模型从MATLAB工作空间的输入和对它的输出注:演示该窗口,9.5子系统及封装技术,9.5子系统及封装技术,对于复杂系统来说,因含有大量模块将显得杂乱而不利于分析。子系统的概念正是基于此提出的。它可以将联系比较紧密、相关的模块进行封装,便于系统分层结构的建立,更有利于仿真应用和组态。组合后的子系统可以进行类似于模块的设置,在模型仿真过程中可以作为一个模块。,9.5.1子系统的建立,子系统建立的方法主要有两种:在已有的系统中创建。直接创建子系统。注:结合例3讲解不同创建子系统方法。,9.5.2子系统的封装,子系统。
14、的封装(Masking),是将子系统的内部结构隐藏起来,以便访问该模块时只出现一个对话框来进行内部参数的设置。子系统封装的操作为,选中要封装的部分,右键点击MaskSubsystem。即调出子系统封装界面。,9.5.2子系统的封装,首项Icon对子系统标签设置Parameters项为封装的子系统内部变量建立对话框Initialization项对子系统进行初始化处理。Documentation项用于设置子系统的文字说明注:演示对例3的子系统封装操作,9.6Simulink建立系统模型示例,注:演示例4观察单位阶跃函数经惯性环节后的仿真曲线。注:演示例5用Simulink求以下微分方程:,9.7S。
15、imulink的高级应用S函数的编写,9.7Simulink的高级应用S函数的编写,用户可以通过Simulink模块库中的内置模块构建系统模型。但有时会发现特殊应用无法由这些内置模块完成。S-函数提供了增强和扩展Simulink的强大机制。S-函数是系统函数(SystemFunction)的简称,具有固定的程序编写格式,用户可采用MATLAB语言编写S-函数,此外还允许采用C,C+,FORTRAN或Ada等语言编写。不过用这些语言编写程序时,要将其编译生成动态连接库(DLL)文件,才可在Simulink中直接调用。,9.7Simulink的高级应用S函数的编写,S-函数允许用户向模型中添加自己。
16、编写的模块,只要按照简单的规则,就可以在S-函数添加算法。编写完S-函数之后,将S-函数的名称放在S-Function模块中,利用Simulink中的封装功能自定义模块的用户接口。,S-函数的仿真过程,初始化。在仿真开始前,Simulink在这个阶段初始化S-函数。初始化结构体SimStruct,它包含了S-函数的所有信息;设置输入/输出端口数;设置采样时间;分配存储空间。,S-函数的仿真过程,数值积分。用于连续状态的求解和非采样过零点。如果S-函数存在连续状态,Simulink就在minorsteptime内调用mdlDerivatives和mdlOutput两个S-函数的子函数。如果存在非。
17、采样过零点,Simulink将调用mdlOutput和mdlZeroCrossings子函数(过零点检测子函数),以定位过零点。,S-函数的仿真过程,更新离散状态。此子函数在每个步长处都要执行一次,可以在这个子函数中添加每一个仿真步都需要更新的内容,如离散状态的更新。计算输出。计算所有输出端口的输出值。,S-函数的仿真过程,计算下一个采样时间点。只有在使用变步长求解器进行仿真时,才需要计算下一个采样时间点,即计算下一步的仿真步长。仿真结束。在仿真结束时调用,可以在此完成结束仿真所需的工作。,S函数的设计模板,函数名functionsys,x0,str,ts=sfuntmpl(t,x,u,fla。
18、g)模板文件结构非常清晰。它使用switch语句结构,当条件表达式为不同值时,即调用相应的子函数进行处理。注:打开模板文件,演示并说明其结构。,9.7.2S函数的设计实例,注:演示例6对系统如选取状态变量x=y,则其状态空间方程可表示为对系统建立S-函数,绘制此控制系统的阶跃响应曲线。,9.7.2S函数的设计实例,注:演示例7系统状态方程,其中:,,,,,,,用S-函数实现此系统功能。,本章小结,Simulink是MATLAB里的一个实现动态系统建模、仿真与分析的仿真集成环境软件工具包。熟练掌握Simulink的使用,可以使控制系统计算与仿真更加方便高效。为便于仿真,Simulink模块库提供。
19、了丰富的功能模块。这些模块分属于不同功能、不同类别的子模块库。需要熟悉这些模块所在位置以及它们的功能和使用方法。,本章小结(续),子系统建立与封装。子系统可以将联系比较紧密、相关的模块进行封装,便于系统分层结构的建立,更有利于仿真应用和组态。组合后的子系统可以进行类似于模块的设置,在模型仿真过程中可以作为一个模块。子系统的封装可进一步将子系统的内部结构隐藏起来,在访问该模块时只通过对话框即可进行内部参数的设置。,本章小结(续),S-函数提供了增强和扩展Simulink的强大机制。S-函数允许用户向模型中添加自己编写的模块,只要按照简单的规则,就可以在S-函数添加算法。编写完S-函数之后,将S-函数的名称放在S-Function模块中,利用Simulink中的封装功能自定义模块的用户接口。