Simulink建模和仿真(基础版)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Simulink建模和仿真在计算机技术飞速发展的今天,许多科学研究、工程设计由于其复杂性越来越高,因此与计算机的接合日趋紧密。也正是计算机技术的介入,改变了许多学科的结构、研究内容和研究方向。例如,计算流体力学、计算物理学、计算声学等新兴学科的兴起,均与计算机技术的发展分不开。控制理论、仿真技术本身与计算机的接合就十分紧密,而随着专业领域的研究深入和计算机软硬件技术的发展,这种联系呈现更加紧密。计算控制论的建立,足以说明这个问题。而这种发展,又以系统仿真技术的发展分不开的。为了满足用户对工程计算的要求,一些软件公司相继推出一批数学类科技应用软件,如Matlab、Xmath、Mathematica、Maple等。其中MathWorks公司推出的Matlab由于有强大的功能和友好的用户界面受到越来越多的科技工作者的青睐,尤其是控制领域的专家和学者.第七章Simulink建模和仿真Matlab具有友好的工作平台和编程环境、简单易学的编程语言、强大的科学计算和数据处理能力、出色的图形和图像处理功能、能适应多领域应用的工具葙、适应多种语言的程序接口、模块化的设计和系统级的仿真功能等,诸多的优点和特点。支持Matlab仿真是Simulink工具箱,Simulink一般可以附在Matlab上同时安装,也有独立版本来单独使用。但大多数用户都是附在Matlab上,以便能更好地发挥Matlab在科学计算上的优势,进一步扩展Simulink的使用领域和功能。本章详细地向用户介绍Simulink地建模方法、使用操作、以及使用Simulink进行系统级的仿真和设计原理。使读者通过本章地学习,不但可以进一步掌握计算机仿真的基本概念和理论,也可以初步学会使用Simulink去真正地运用仿真技术解决科研和工程中地实际问题。第七章Simulink建模和仿真7.1Simulink的概述和基本操作近几年来,在学术界和工业领域,Simulink已经成为动态系统建模和仿真领域中应用最为广泛的软件之一。Simulink可以很方便地创建和维护一个完整地模块,评估不同地算法和结构,并验证系统的性能。由于Simulink是采用模块组合方式来建模,从而可以使得用户能够快速、准确地创建动态系统的计算机仿真模型,特别是对复杂的不确定非线性系统,更为方便。Simulink模型可以用来模拟线性和非线性、连续和离散或者两者的混合系统,也就是说它可以用来模拟几乎所有可能遇到动态系统。另外Simulink还提供一套图形动画的处理方法,使用户可以方便的观察到仿真的整个过程。Simulink没有单独的语言,但是它提供了S函数规则。所谓的S函数可以是一个M函数文件、FORTRAN程序、C或C++语言程序等,通过特殊的语法规则使之能够被Simulink模型或模块调用。S函数使Simulink更加充实、完备,具有更强的处理能力。第七章Simulink建模和仿真7.1Simulink的概述和基本操作同Matlab一样,Simulink也不是封闭的,他允许用户可以很方便的定制自己的模块和模块库。同时Simulink也同样有比较完整的帮助系统,使用户可以随时找到对应模块的说明,便于应用。综上所述,Simulink就是一种开放性的,用来模拟线性或非线性的以及连续或离散的或者两者混合的动态系统的强有力的系统级仿真工具。目前,随着软件的升级换代,在软硬件的接口方面有了长足的进步,使用Simulink可以很方便地进行实时的信号控制和处理、信息通信以及DSP的处理。世界上许多知名的大公司已经使用Simulink作为他们产品设计和开发的强有力工具。第七章Simulink建模和仿真7.1Simulink的概述和基本操作图7.1.1Simulink模型元素关联图源模块显示模块系统模块7.1.2基本操作一、模型基本结构一个典型的Simulink模型包括如下三种类型的元素:①信号源模块②被模拟的系统模块③输出显示模块如图7.1.1所示说明了这三种元素之间的典型关系。系统模块作为中心模块是Simulink仿真建模所要解决的主要部分;信号源为系统的输入,它包括常数信号源函数信号发生器(如正弦和阶跃函数波等)和用户自己在Matlab中创建的自定义信号或Matlab工作间中三种。输出模块主要在Sinks库中。第七章Simulink建模和仿真7.1Simulink的概述和基本操作Simulink模型并不一定要包含全部的三种元素,在实际应用中通常可以缺少其中的一个或两个。例如,若要模拟一个系统偏离平衡位置后的恢复行为,就可以建立一个没有输入而只有系统模块加一个显示模块的模型。在某种情况下,也可以建立一个只有源模块和显示模块的系统。若需要一个由几个函数复合的特殊信号,则可以使用源模块生成信号并将其送入Matlab工作间或文件中。二、仿真运行原理Simulink仿真包括两个阶段;初始化阶段和模型执行阶段(1)模块初始化在初始化阶段主要完成以下工作:①模型参数传给Matlab进行估值,得到的数值结果将作为模型的实际参数;②展开模型的各个层次,每一个非条件执行的子系统被它所包含的模块所代替;第七章Simulink建模和仿真7.1Simulink的概述和基本操作③模型中的模块按更新的次序进行排序。排序算法产生一个列表以确保具有代数环的模块在产生它的驱动输入的模块被更新后才更新。当然,这一步要先检测出模型中存在的代数环。④决定模型中有无显示设定的信号属性,例如名称、数据类型、数值类型以及大小等,并且检查每个模块是否能够接受连接到它输入端的信号。Simulink使用属性传递的过程来确定未被设定的属性,这个过程将源信号的属性传递到它所驱动的模块的输入信号;⑤决定所有无显示设定采样时间的模块的采样时间;⑥分配和初始化用于存储每个模块的状态和输入当前值的存储空间。完成这些工作后就可以进行仿真了。2)模型执行一般模型是使用数值积分来进行仿真的。所运用的仿真解法器(仿真算法)依赖于模型提供它的连续状态微分能力。计算微分可以分两步进行:第七章Simulink建模和仿真7.1Simulink的概述和基本操作①首先,按照排序所决定的次序计算每个模块的输出。②然后,根据当前时刻的输入和状态来决定状态的微分;得到微分向量后再把它返回给解法器;后者用来计算下一个采样点的状态向量。一旦新的状态向量计算完毕,被采样的数据源模块和接受模块才被更新。在仿真开始时模型设定待仿真系统的初始状态和输出。在每一个时间步中,Simulink计算系统的输入、状态和输出,并更新模型来反映计算出的值。在仿真结束时,模型得出系统的输入、状态和输出。在每个时间步中,Simulink所采取的动作依次为:①按排列好的次序更新模型中模块的输出。Simulink通过调用模块的输出函数计算模块的输出。Simulink只把当前值、模块的输入以及状态量传给这些函数计算模块的输出。对于离散系统,Simulink只有在当前时间是模块采样时间的整数倍时,才会更新模块的输出。第七章Simulink建模和仿真7.1Simulink的概述和基本操作②按排列好的次序更新模型中模块的状态,Simulink计算一个模块的离散状态的方法时调用模块的离散状态更新函数。而对于连续状态,则对连续状态的微分(在模块可调用的函数里,有一个用于计算连续微分的函数)进行数值积分来获得当前的连续状态。③检查模块连续状态的不连续点。Simulink使用过零检测来检测连续状态的不连续点。④计算下一个仿真时间步的时间。这是通过调用模块获得下一个采样时间函数来完成的。(3)定模块更新次序在仿真中,Simulink更新状态和输出都要根据事先确定的模块更新次序,而更新次序对方针结果的有效性来说非常关键。特别当模块的输出是当前输入值的函数时,这个模块必须在驱动它的模块被更新之后才能被更新,否则,模块的输出将没有意义。第七章Simulink建模和仿真7.1Simulink的概述和基本操作注意:不要把模块保存到模块文件的次序与仿真过程模块被更新的次序相混淆。Simulink在模块初始化时以将模块排好正确的次序。为了建立有效的更新次序,Simulink根据输入和输出的关系将模块分类。其中,当前输出依赖于当前输入的模块称为直接馈入模块,所有其他的模块都称为非虚拟模块。直接馈入模块的例子有Gain、Product和Sum模块;非直接馈入模块的例子有Integrator模块(它的输出只依赖于它的状态),Constant模块(没有输入)和Memory模块(它的输出只依赖于前一个模块的输入)。基于上述分类,Simulink使用下面两个基本规则对模块进行排序:①每个模块必须在它驱动的所有模块更新之前被更新。这条规则确保了模块被更新时输入有效。②若非直接馈入模块在直接馈入模块之前更新,则它们的更新次序可以是任意的。这条规则允许Simulink在排序过程中忽略非虚拟模块。另外一个约束模块更新次序的因素是用户给模块设定优先级,Simulink在低优先级模块之前更新高优先级模块。第七章Simulink建模和仿真7.2基本模块由于大多数物理系统都可以用微分方程组和代数方程组来描述,Simulink也采用的是本教材第四章介绍的面向结构图的数字仿真原理。但其功能块的类型、数值解法、功能快的描述、以及建模方式和方法远远超出CSS仿真程序包,其界面也更加友好。Simulink4把功能块分成9类,分别放置在9个库中,如图7.2.1所示:源模块库(Sources)、输出显示库(Sinks)、离散模块库(Discrete)、连续模块库(Continuous)、非线性模块库(Nonlinear)、数学函数库(Math)、通用函数及列表库(FunctionsandTables)、信号处理及系统类模块库(SignalandSystems)和子系统模块库(Subsystems)。表7.2.1到表7.2.8列出了个库包含的主要模块及简单说明。图7.2.2到图7.2.10列出了各库包含的主要模块种类图形。第七章Simulink建模和仿真7.2基本模块表7.2.1Source库模块名说明Clock显示或者提供仿真时间Constant产生一个常数值信号Digitalclock产生数字采样时间信号Digitalpulsegenerator产生数字脉冲信号Fromfile从文件读取数据输入Fromworkspace从工作间定义的矩阵读入数据Pulsegenerator产生脉冲信号Ramp产生“斜坡”信号Randomnumber产生正态分布的随机信号Repeatingsequence产生周期序列信号Signalgenerator信号发生器Sinewave正弦波信号Step产生一个阶跃信号Uniformrandomnumber产生均匀分布的随机信号第七章Simulink建模和仿真7.2基本模块模块名说明Display显示输入信号的值Scope显示信号的波形Stopsimulation当输入信号为0时结束仿真Tofile向文件中写数据Toworkspace向工作间定义的变量写数据到XYgraphMatlab图形窗口显示信号的二维图表7.2.2Sinks库第七章Simulink建模和仿真7.2基本模块模块名说明Discretefilter实现IIR和FIR滤波器Discretestate-space实现离散状态空间系统Discrete-timeintegrator离散时间积分器Discretetransferfcn实现离散传递函数Discretezero-pol实现用零极点表达的离散传递函数First-orderhold实现一阶采样保持系统Unitdelay单位采样时间延迟器Zero-orderhold实现采样的零阶保持表7.2.3Discrete库第七章Simulink建模和仿真7.2基本模块模块名说明Derivative信号的微分运算Integrator信号的积分运算Memory输出前一个时间步的输入值State-space实现线性状态空间系统Tran

1 / 127
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功