建模与仿真.ppt
《建模与仿真.ppt》由会员分享,可在线阅读,更多相关《建模与仿真.ppt(127页珍藏版)》请在三一办公上搜索。
1、第七章 Simulink建模和仿真,在计算机技术飞速发展的今天,许多科学研究、工程设计由于其复杂性越来越高,因此与计算机的接合日趋紧密。也正是计算机技术的介入,改变了许多学科的结构、研究内容和研究方向。例如,计算流体力学、计算物理学、计算声学等新兴学科的兴起,均与计算机技术的发展分不开。控制理论、仿真技术本身与计算机的接合就十分紧密,而随着专业领域的研究深入和计算机软硬件技术的发展,这种联系呈现更加紧密。计算控制论的建立,足以说明这个问题。而这种发展,又以系统仿真技术的发展分不开的。为了满足用户对工程计算的要求,一些软件公司相继推出一批数学类科技应用软件,如Matlab、Xmath、Mathe
2、matica、Maple等。其中MathWorks公司推出的Matlab由于有强大的功能和友好的用户界面受到越来越多的科技工作者的青睐,尤其是控制领域的专家和学者.,第七章 Simulink建模和仿真,Matlab具有友好的工作平台和编程环境、简单易学的编程语言、强大的科学计算和数据处理能力、出色的图形和图像处理功能、能适应多领域应用的工具葙、适应多种语言的程序接口、模块化的设计和系统级的仿真功能等,诸多的优点和特点。支持Matlab仿真是Simulink工具箱,Simulink一般可以附在Matlab上同时安装,也有独立版本来单独使用。但大多数用户都是附在Matlab上,以便能更好地发挥Ma
3、tlab在科学计算上的优势,进一步扩展Simulink的使用领域和功能。本章详细地向用户介绍Simulink地建模方法、使用操作、以及使用Simulink进行系统级的仿真和设计原理。使读者通过本章地学习,不但可以进一步掌握计算机仿真的基本概念和理论,也可以初步学会使用Simulink去真正地运用仿真技术解决科研和工程中地实际问题。,第七章 Simulink建模和仿真 7.1 Simulink的概述和基本操作,近几年来,在学术界和工业领域,Simulink已经成为动态系统建模和仿真领域中应用最为广泛的软件之一。Simulink可以很方便地创建和维护一个完整地模块,评估不同地算法和结构,并验证系统
4、的性能。由于Simulink是采用模块组合方式来建模,从而可以使得用户能够快速、准确地创建动态系统的计算机仿真模型,特别是对复杂的不确定非线性系统,更为方便。Simulink模型可以用来模拟线性和非线性、连续和离散或者两者的混合系统,也就是说它可以用来模拟几乎所有可能遇到动态系统。另外Simulink还提供一套图形动画的处理方法,使用户可以方便的观察到仿真的整个过程。Simulink没有单独的语言,但是它提供了S函数规则。所谓的S函数可以是一个M函数文件、FORTRAN程序、C或C+语言程序等,通过特殊的语法规则使之能够被Simulink模型或模块调用。S函数使Simulink更加充实、完备,
5、具有更强的处理能力。,第七章 Simulink建模和仿真 7.1 Simulink的概述和基本操作,同Matlab一样,Simulink也不是封闭的,他允许用户可以很方便的定制自己的模块和模块库。同时Simulink也同样有比较完整的帮助系统,使用户可以随时找到对应模块的说明,便于应用。综上所述,Simulink就是一种开放性的,用来模拟线性或非线性的以及连续或离散的或者两者混合的动态系统的强有力的系统级仿真工具。目前,随着软件的升级换代,在软硬件的接口方面有了长足的进步,使用Simulink可以很方便地进行实时的信号控制和处理、信息通信以及DSP的处理。世界上许多知名的大公司已经使用Simu
6、link作为他们产品设计和开发的强有力工具。,第七章 Simulink建模和仿真 7.1 Simulink的概述和基本操作,图7.1.1 Simulink模型元素关联图,7.1.2 基本操作 一、模型基本结构 一个典型的Simulink模型包括如下三种类型的元素:信号源模块 被模拟的系统模块 输出显示模块 如图7.1.1所示说明了这三种元素之间的典型关系。系统模块作为中心模块是Simulink仿真建模所要解决的主要部分;信号源为系统的输入,它包括常数信号源函数信号发生器(如正弦和阶跃函数波等)和用户自己在Matlab中创建的自定义信号或Matlab工作间中三种。输出模块主要在Sinks库中。,
7、第七章Simulink建模和仿真 7.1 Simulink的概述和基本操作,Simulink模型并不一定要包含全部的三种元素,在实际应用中通常可以缺少其中的一个或两个。例如,若要模拟一个系统偏离平衡位置后的恢复行为,就可以建立一个没有输入而只有系统模块加一个显示模块的模型。在某种情况下,也可以建立一个只有源模块和显示模块的系统。若需要一个由几个函数复合的特殊信号,则可以使用源模块生成信号并将其送入Matlab工作间或文件中。二、仿真运行原理 Simulink仿真包括两个阶段;初始化阶段和模型执行阶段(1)模块初始化 在初始化阶段主要完成以下工作:模型参数传给Matlab进行估值,得到的数值结果
8、将作为模型的实际参数;展开模型的各个层次,每一个非条件执行的子系统被它所包含的模块所代替;,第七章Simulink建模和仿真 7.1 Simulink的概述和基本操作,模型中的模块按更新的次序进行排序。排序算法产生一个列表以确保具有代数环的模块在产生它的驱动输入的模块被更新后才更新。当然,这一步要先检测出模型中存在的代数环。决定模型中有无显示设定的信号属性,例如名称、数据类型、数值类型以及大小等,并且检查每个模块是否能够接受连接到它输入端的信号。Simulink使用属性传递的过程来确定未被设定的属性,这个过程将源信号的属性传递到它所驱动的模块的输入信号;决定所有无显示设定采样时间的模块的采样时
9、间;分配和初始化用于存储每个模块的状态和输入当前值的存储空间。完成这些工作后就可以进行仿真了。2)模型执行 一般模型是使用数值积分来进行仿真的。所运用的仿真解法器(仿真算法)依赖于模型提供它的连续状态微分能力。计算微分可以分两步进行:,第七章Simulink建模和仿真 7.1 Simulink的概述和基本操作,首先,按照排序所决定的次序计算每个模块的输出。然后,根据当前时刻的输入和状态来决定状态的微分;得到微分向量后再把它返回给解法器;后者用来计算下一个采样点的状态向量。一旦新的状态向量计算完毕,被采样的数据源模块和接受模块才被更新。在仿真开始时模型设定待仿真系统的初始状态和输出。在每一个时间
10、步中,Simulink计算系统的输入、状态和输出,并更新模型来反映计算出的值。在仿真结束时,模型得出系统的输入、状态和输出。在每个时间步中,Simulink所采取的动作依次为:按排列好的次序更新模型中模块的输出。Simulink通过调用模块的输出函数计算模块的输出。Simulink只把当前值、模块的输入以及状态量传给这些函数计算模块的输出。对于离散系统,Simulink只有在当前时间是模块采样时间的整数倍时,才会更新模块的输出。,第七章Simulink建模和仿真 7.1 Simulink的概述和基本操作,按排列好的次序更新模型中模块的状态,Simulink计算一个模块的离散状态的方法时调用模块
11、的离散状态更新函数。而对于连续状态,则对连续状态的微分(在模块可调用的函数里,有一个用于计算连续微分的函数)进行数值积分来获得当前的连续状态。检查模块连续状态的不连续点。Simulink使用过零检测来检测连续状态的不连续点。计算下一个仿真时间步的时间。这是通过调用模块获得下一个采样时间函数来完成的。(3)定模块更新次序在仿真中,Simulink更新状态和输出都要根据事先确定的模块更新次序,而更新次序对方针结果的有效性来说非常关键。特别当模块的输出是当前输入值的函数时,这个模块必须在驱动它的模块被更新之后才能被更新,否则,模块的输出将没有意义。,第七章Simulink建模和仿真 7.1 Simu
12、link的概述和基本操作,注意:不要把模块保存到模块文件的次序与仿真过程模块被更新的次序相混淆。Simulink在模块初始化时以将模块排好正确的次序。为了建立有效的更新次序,Simulink根据输入和输出的关系将模块分类。其中,当前输出依赖于当前输入的模块称为直接馈入模块,所有其他的模块都称为非虚拟模块。直接馈入模块的例子有Gain、Product和Sum模块;非直接馈入模块的例子有Integrator模块(它的输出只依赖于它的状态),Constant模块(没有输入)和Memory模块(它的输出只依赖于前一个模块的输入)。基于上述分类,Simulink使用下面两个基本规则对模块进行排序:每个模
13、块必须在它驱动的所有模块更新之前被更新。这条规则确保了模块被更新时输入有效。若非直接馈入模块在直接馈入模块之前更新,则它们的更新次序可以是任意的。这条规则允许Simulink在排序过程中忽略非虚拟模块。另外一个约束模块更新次序的因素是用户给模块设定优先级,Simulink在低优先级模块之前更新高优先级模块。,第七章 Simulink建模和仿真 7.2 基本模块,由于大多数物理系统都可以用微分方程组和代数方程组来描述,Simulink也采用的是本教材第四章介绍的面向结构图的数字仿真原理。但其功能块的类型、数值解法、功能快的描述、以及建模方式和方法远远超出CSS仿真程序包,其界面也更加友好。Sim
14、ulink 4把功能块分成9类,分别放置在9个库中,如图7.2.1所示:源模块库(Sources)、输出显示库(Sinks)、离散模块库(Discrete)、连续模块库(Continuous)、非线性模块库(Nonlinear)、数学函数库(Math)、通用函数及列表库(Functions and Tables)、信号处理及系统类模块库(Signal and Systems)和子系统模块库(Subsystems)。表7.2.1到表7.2.8列出了个库包含的主要模块及简单说明。图7.2.2到图7.2.10列出了各库包含的主要模块种类图形。,第七章 Simulink建模和仿真 7.2 基本模块,表
15、7.2.1 Source库,第七章 Simulink建模和仿真 7.2 基本模块,表7.2.2 Sinks库,第七章 Simulink建模和仿真 7.2 基本模块,表7.2.3 Discrete库,第七章 Simulink建模和仿真 7.2 基本模块,表7.2.4 Continuous库,第七章 Simulink建模和仿真 7.2 基本模块,表7.2.5 Math库,第七章 Simulink建模和仿真 7.2 基本模块,第七章 Simulink建模和仿真 7.2 基本模块,表7.2.6 Function and Tables函数,第七章 Simulink建模和仿真 7.2 基本模块,表7.2.
16、7 Nonlinear 库,第七章 Simulink建模和仿真 7.2 基本模块,表7.2.8 Signal and Systems库,第七章 Simulink建模和仿真 7.2 基本模块,表7.2.8 Signal and Systems库,第七章 Simulink建模和仿真 7.2 基本模块,图7.2.1 库的类型 图7.2.2 Sources库,第七章 Simulink建模和仿真 7.2 基本模块,图7.2.3 Sinks库,图7.2.4 Discrete库,图7.2.5 Continuous库,第七章 Simulink建模和仿真 7.2 基本模块,图7.2.6 Math库,图7.2.7
17、 Nonlinear库,第七章 Simulink建模和仿真 7.2 基本模块,图7.2.8 Signak&Systems库,第七章 Simulink建模和仿真 7.2 基本模块,图7.2.9 Subsystems库,第七章 Simulink建模和仿真 7.2 基本模块,图7.2.10 Functions&Tables库,第七章 Simulink建模和仿真 7.2 基本模块,在Simulink中,各功能模块的参数描述都可以由用户通过该模块的模块属性对话框进行操作给出或修改。图7.2.11是积分模块的属性对话框,从图可见,它有9个可控参数。(1)External reset 为外部重置选项。它用在
18、当重置信号中发生触发事件时,模块将照初始条件重置状态。(2)initial condition source 此项用来从初始条件参数或外部模块中获取初始条件。(3)initial condition 此区域用来设置初始条件。(4)Limit output 如果此项被选中,则状态将被限制在饱和度下限和上限之间。(5)Upper saturation limit 此参数用来设置饱和度上限。(6)Lower saturation limit此参数用来设置饱和度下限。(7)Show saturation port 若此项被选中,则模块上将增加一个饱和度端口。(8)Show state port 若此项
19、被选中,则模块上将增加一个状态端口。,第七章 Simulink建模和仿真 7.2 基本模块,(9)Absolute tolerance 此参数用来设置模块状态的绝对误差。,图7.2.11 积分模块属性对话框,第七章 Simulink建模和仿真 7.3 建模方法,利用Simulink建立物理系统和数学系统的仿真模型,关键是对Simulink提供的功能模块进行操作,即用适当的方式将各种模块连接在一起。本小节将介绍模块的基本操作。在介绍具体的操作之前先对建模过程提两点建议:在建模之前,应对模块和信号线有一个整体、清晰和仔细的安排,以便能减少建模时间;及时对模块和信号线命名、及时对模型加标注,以增强模
20、型的可读性。本小节将详细介绍创建Simulink仿真模型的过程,包括模块操作、编辑信号线及标注模型等。,第七章 Simulink建模和仿真 7.3 建模方法,7.3.1 模块的操作模块是建立Simulink模型的基本单元。用适当的方法把各种模块连接在一起就能够建立任何动态系统的模型。一、选取模块当选取单个模块时,只要用鼠标在模块上单击即可,这是模块的角上出现黑色的小方块。选取多个模块时,在所有模块所占区域的一角按下鼠标左键不放,拖向该区域的对角,在此过程中会出现虚框,当虚框包住了要选的所有模块后,放开鼠标左键,这时在所有被选模块的角上都会出现小黑方块,表示模块被选中了。此过程如图7.3.1所示
21、。,图7.3.1 选取多个模块,第七章 Simulink建模和仿真 7.3 建模方法,二、复制、删除模块(1)在不同的窗口之间复制当我们建立模型时,需要从模块库窗口或者已经存在的窗口把需要的模块复制到新建模型文件的窗口。要对已经存在的模块进行编辑时,有时也需要从模块库窗口或另一个已经存在的模型窗口复制模块。最简单的办法是用鼠标左键点住要复制的模块(首先打开源模块和目标模块所在的窗口),按住左键移动鼠标到相应窗口(不用按住Ctrl键),然后释放,该模块就会被复制过来,而源模块不会被删除。当然还可以使用Edit菜单的Copy和Paste命令来完成复制:先选定要复制的模块,选择Edit菜单下的Cop
22、y命令,到目标窗口的Edit菜单下选择Paste命令。(2)在同一个模型窗口内复制有时一个模型需要多个相同的模块,这时的复制方法如下:用鼠标左键点住要复制的模块,按住左键移动鼠标,同时按下Ctrl键,到适当位置释放鼠标,该模块就被复制到当前位置。更简单的方法是按住鼠标右键(不按Ctrl键)移动鼠标。,第七章 Simulink建模和仿真 7.3 建模方法,另一种方法是先选定要复制的模块,选择Edit下的Copy命令,然后选择Paste命令。在图7.3.2的复制结果中我们会发现复制出的模块名称在原名称的基础上又加了编号,这是Simulink的约定:每个模型中的模块和名称是一一对应的,相同的模块或不
23、同的模块都不能用同一个名字。,图7.3.2 在同一模型窗口内复制模块,第七章 Simulink建模和仿真 7.3 建模方法,(3)删除模块选定模块,选择Edit菜单下的Cut(删除到剪贴板)或Clear(彻底删除)命令。或者在模块上单击鼠标右键,在弹出菜单上选择Cut或Clear命令。三、模块的参数和特性设置Simulink中几乎所有模块的参数(Parameter)都允许用户进行设置。只要双击要设置参数的模块就会弹出设置对话框,如图7.3.3所示。这是正弦波模块的参数设置对话框,您可以设置它的幅值、频率、相位、采样时间等参数。模块参数还可以用set-param命令修改,这在后面将会讲到。,第七
24、章 Simulink建模和仿真 7.3 建模方法,每个模块都有一个内容相同的特性(Properties)设置对话框,如图7.3.4所示。它包括如下几项:(1)说明(Description)是对该模块在模型中用法的注释。(2)优先级(Priority)规定该模块在模型中相对于其他模块执行的有限顺序。优先级的数值必须是整数或不输入数值,这时系统会自动选取合适的优先级。优先级的数值越小(可以是负整数),优先级越高。(3)标记(Tag)用户为模块添加的文本格式的标记。(4)调用函数(Open function)当用户双击该模块时调用的Matlab函数。(5)属性格式字符串(Attributes for
25、mat string),第七章 Simulink建模和仿真 7.3 建模方法,图7.3.3 模块参数设置对话,图7.3.4 模块特性设置对话框,第七章 Simulink建模和仿真 7.3 建模方法,指定在该模块的图标下显示模块的那个参数,以什么格式显示。属性格式字符串由任意的文本字符串加嵌入式参数名组成。例如,对一个传递函数模块指定如下的属性格式字符串:优先级n传函分母该模块显示如图7.3.5的内容:,如果参数的值不是字符串或数字,参数值的位置会显示N/S(not supported)。如果参数名无效,参数值的位置将显示“?”。,图7.3.5 设置属性格式字符串后的效果,第七章 Simulin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 建模 仿真
链接地址:https://www.31ppt.com/p-5326315.html