simulink动态系统建模仿真-第4章.ppt
《simulink动态系统建模仿真-第4章.ppt》由会员分享,可在线阅读,更多相关《simulink动态系统建模仿真-第4章.ppt(108页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第4章 Simulink动态系统建模4.1 创建动态系统模型的要素创建动态系统模型的要素 4.1.1 方块图方块图Simulink方块图是动态系统数学模型的图形化描述。动态系统的数学模型是由一组方程来表示的,而由方块图模型所描述的数学方程就是众所周知的代数方程、微分方程和/或差分方程。一个典型的动态系统方块图模型是由一组模块和相互连接的线(信号)组成的,这些方块图模型都来源于工程领域,如反馈控制系统理论和信号处理理论等。每个模块本身就定义了一个基本的动态系统,而方块图中每个基本动态系统之间的关系就是通过模块之间相互连接的线来说明的,方块图中的所有模块和连线就描述了整个动态系统。 第4章 Sim
2、ulink动态系统建模方块图模型中的每个模块都属于一个特定的Simulink模块类型,模块的类型决定了模块的输出、输入、状态与时间的关系。在建立系统模型图时,Simulink方块图中可以包含任意数目、任意类型的模块。关于模块的类型,这里介绍两个关键的概念Simulink中的模块包括非虚拟模块和虚拟模块。非虚拟模块是基本系统,虚拟模块则是为了模型方块图组织结构的方便化而建立的,它在模型方块图所描述的系统方程定义中不起任何作用,如Bus Creator模块和Bus Selector模块就是虚拟模块,它们的作用只是把信号“捆绑”在一起用来简化方块图,而且也增加了模型的可读性。 第4章 Simulin
3、k动态系统建模在Simulink中,方块图(或者说模型)表示的是“基于时间的方块图”。这个含义如下: (1) Simulink方块图定义了信号和状态变量的时间关系,方块图的解是通过求解整个时间过程中所有的函数方程来获得的,这个时间过程就是由用户指定的“起始时间”开始,至用户定义的“终止时间”结束,每次计算都是在一个时间步内求解这些函数关系。 (2) 信号表示的是整个时间范围内的量值,在方块图的起始时间到终止时间之间的每个时间点上都定义了信号。 第4章 Simulink动态系统建模 (3) 信号和状态变量之间的关系是通过模块所表示的一组方程定义的,每个模块都是由一组方程(也称为模块方法)组成的。
4、这些方程定义了输入信号、输出信号和状态变量之间的关系,方程定义中的所有值称为参数,也就是方程中的系数。第4章 Simulink动态系统建模4.1.2 系统函数系统函数每个Simulink模块的类型都是与一组系统函数相关联的,系统函数指定了模块的输入、状态和输出之间的时间关系。这个系统函数包括:输出函数:表示的是系统输出、输入、状态和时间的关系。更新函数:表示的是系统离散状态的将来值与当前时刻、输入和状态之间的关系。微分函数:表示的是系统连续状态对时间的微分、模块当前状态值和输入之间的关系。 第4章 Simulink动态系统建模系统函数可以表示为: ),(ouxtfy 输出函数 ),(ud1ux
5、tfxk 更新函数 ),(dcuxtfx 微分函数 第4章 Simulink动态系统建模4.1.3 状态状态Simulink模块可能包含有状态,状态(state)是确定模块输出的变量,它的当前值是模块状态和(或)前一时刻输入值的函数。含有状态的模块必须存储前一时刻的状态值,用以计算当前时刻的状态值,因此说,状态是可以保持的。由于含有状态的模块必须存储前一时刻的状态值和(或)输出值用以计算当前时刻的状态值,因此这样的模块也一定都需要内存。模块的输出是模块输入、状态和时间的函数,描述模块输出对输入、状态和时间的特定函数取决于模块的类型。Simulink模型有两种状态类型:离散状态和连续状态。连续状
6、态是连续变化的,如汽车的位置和速度;离散状态是连续状态的近似,这些状态在有限的时间间隔(周期性或非周期性)内进行更新(重新计算),例如,在数字里程表中显示的汽车位置就是离散状态,这些位置在每秒内进行更新。如果离散状态的时间间隔趋近于零,那么离散状态也相当于连续状态。 第4章 Simulink动态系统建模Simulink模块明确定义了模型的状态,尤其是需要某些先前时刻的输出或所有输出才能计算当前输出的模块。这些模块明确定义了两个时间步之间需要保存的一组状态,因此说,这样的模块都是有状态的。图4-1是含有状态的模块中输入、输出和状态的图形表示。模型中状态的总数是模型中所有模块定义的所有状态之和。为
7、了确定模型中的状态总数,Simulink需要分析模型中所包含的模块类型,然后再确定模块类型所定义的状态数目。Simulink会在仿真汇编阶段执行这个工作。 第4章 Simulink动态系统建模图4-1 第4章 Simulink动态系统建模举例来说,Simulink的Integrator(积分器)模块就是一个含有状态的模块。Integrator模块输出的是由仿真起始时刻到当前时刻的输入信号的积分值,当前时刻的输出值取决于在此时刻之前Integrator模块的所有输入值。事实上,积分值只是Integrator模块的一个状态。再举一个例子,Simulink的Memory模块也是一个含有状态的模块,M
8、emory模块存储当前仿真时刻的输入值,并在此时刻之后输出这些值,因此Memory模块的状态就是前一时刻的输入值。 第4章 Simulink动态系统建模Simulink的Gain模块是个无状态模块,Gain模块的输出值是输入信号值乘以增益常数,它的输出完全是由当前的输入值和增益来决定的,因此Gain模块没有状态。此外,Sum模块和Product模块也是无状态模块,它们的输出均是当前输入的函数,因此都是无状态的。 第4章 Simulink动态系统建模1连续状态连续状态计算连续状态需要知道状态的变化率或微分,由于连续状态的变化率自身也是连续的(也就是,它自身也是一个状态),因此计算当前时间步上连续
9、状态的值需要从仿真的起始时刻开始对状态的微分值进行积分,这样,在Simulink中建立连续状态的模型需要Simulink能够表示积分操作并描述每一时刻上状态微分的计算过程。Simulink方块图使用Integrator模块表示积分过程,并利用与Integrator模块相连的一串操作模块表示计算状态微分的方法,这串与Integrator模块相连的模块实际上就是图形化的常微分方程(ODE)。第4章 Simulink动态系统建模通常,除了简单动态系统外,对由常微分方程所描述的真实世界动态系统中状态的积分是不存在解析法的,对状态积分需要利用称为ODE算法的数值方法,这些不同的方法需要在计算精度和计算负
10、荷之间进行折衷选择。Simulink给出了最通用的ODE积分方法的计算机实现,并允许用户在仿真一个系统时确定使用哪一种方法来积分由Integrator模块表示的状态。第4章 Simulink动态系统建模计算当前时间步上连续状态的值需要从仿真的起始时刻开始对这个状态值进行积分,数值积分的精度取决于两个时间步间隔的大小,通常,时间间隔越小,仿真精度越高。有些变时间步的ODE算法可以根据状态的变化率自动改变时间步的大小,以满足整个仿真期间的精度要求。Simulink允许用户在选择定步长或变步长算法时均可指定仿真步长的大小,若要使计算负荷最小,则变步长算法会选择最大步长,这样,对于模型中变化最快的状态
11、,Simulink所选择的步长仍然能够满足用户指定的精度要求,也就保证了模型中计算的所有状态均满足用户指定的精度。第4章 Simulink动态系统建模2离散状态离散状态计算离散状态需要知道当前时间和在此时间之前所有状态值之间的关系,Simulink会在状态的更新函数中参考这种关系。由于离散状态不仅依赖于先前时间步的值,而且还依赖于模型的输出值,因此,在Simulink中建立离散状态的模型也需要建立状态与先前时间步上系统输入之间的关系模型。Simulink方块图使用特定的模块类型,即离散模块来建立状态与系统输入之间的关系模型。 第4章 Simulink动态系统建模与连续状态一样,离散状态在设置上
12、也可以限制仿真步长的大小,对于有些模型,如果要求模型状态的所有采样点都必须在仿真步上,那么必须明确指定仿真步长,Simulink利用离散求解器来实现这些设置要求。Simulink给出了两种离散求解器:定步长离散求解器和变步长离散求解器。定步长离散求解器确定满足模型中所有离散状态的所有采样时间的固定步长,而不考虑在采样时刻状态是否改变;相比之下,变步长离散求解器会根据状态的改变而改变步长,以确保采样时间只在状态值发生改变的时刻。第4章 Simulink动态系统建模3混合系统的状态混合系统的状态混合系统是既有离散状态,又有连续状态的系统。严格地说,混合系统模型应该是既有离散采样时间,又有连续采样时
13、间的模型,这些采样时间都来自于离散状态和连续状态。求解这样的系统模型,在选择步长时既要能满足对连续状态积分的精度要求,又要满足对离散状态采样时间的限制,因此,Simulink利用传递由离散求解器确定的下一个采样时间作为连续求解器的附加限制来实现这个要求,也就是说,连续求解器选择的步长在步进仿真的同时必须不能超过下一个采样时间。连续求解器可以缩短下一个采样时间的步长以满足它的精度限制,但即使精度满足要求,它所选择的步长也不能越过下一个采样时刻。第4章 Simulink动态系统建模4.1.4 模块参数模块参数Simulink中的许多标准模块的关键属性都是可以参数化的。例如,Simulink的Gai
14、n模块中的gain变量就是一个参数。每个参数化模块都有一个在编辑或仿真模型时用以设置参数值的对话框,用户可以使用MATLAB表达式指定参数值,Simulink会在仿真运行前求取表达式的值。当然,用户也可以在仿真运行期间改变参数值,也就是说,可以用交互的方式确定最适合的参数值。 第4章 Simulink动态系统建模一个参数化模块可以用来表示一组相似模块。例如,在创建模型时,用户可以分别把每个Gain模块的gain参数设置为不同的值,从而让每个Gain模块执行不同的任务,正因为Simulink允许用每个标准模块来表示一组相似模块,所以,模块的参数化大大提高了标准Simulink模块库的建模能力。
15、第4章 Simulink动态系统建模Simulink中许多模块的参数都是可调的,可调参数(tunable parameter)是指在Simulink仿真模型的过程中,用户可以改变这些参数的数值。例如,Gain模块的gain参数是可调的,当进行仿真运算时,用户可以改变模块的gain值。如果模块的参数不可调,则在运行仿真期间,Simulink会关闭设置参数的对话框。正因为如此,为了提高仿真的执行速度,除了用户希望改变的参数外,用户可以将模型中的所有其他参数均指定为不可调,这可以加快大模型的执行速度,而且也会加快代码的生成速度。 第4章 Simulink动态系统建模4.1.5 模块采样时间模块采样时
16、间标准的Simulink模块包括连续模块和离散模块,连续模块对连续变化的输入信号进行连续响应,而离散模块只对采样时刻(即固定时间间隔的整数倍时刻)的输入信号进行响应。所有的Simulink模块都有采样时间,包括没有定义状态的模块,如Gain模块。连续模块可以有无限小的采样时间,称为连续采样时间;离散模块可以通过Sample Time参数指定采样时间,离散模块在两个连续的采样时刻之间会一直保持其输出值。举例来说,Constant模块及Continuous模块库中的模块都是连续模块,Discrete Pulse Generator模块和Discrete模块库中的模块都是离散模块。 第4章 Simu
17、link动态系统建模此外,有许多Simulink模块既可作为连续模块,也可作为离散模块,这取决于激励这些模块的模块是连续模块还是离散模块,如Gain模块。对于这些既不是连续模块也不是离散模块的模块,用户可以指定隐含的采样时间,也就是从模块输入端继承的采样时间,如果模块的任一输入是连续的,那么隐含的采样时间也是连续的,否则,隐含的采样时间就是离散的。而且,如果所有输入的采样时间是输入最短时间的整数倍,那么隐含的离散采样时间就等于最短的输入采样时间,否则,隐含的采样时间就等于输入的基本采样时间(fundamental sample time)。一组采样时间的基本采样时间被定义为这组采样时间的最大整
18、数因子。Simulink可以为方块图标注颜色,用以表示模块所包含的采样时间,如黑色(连续模块)、洋红(常值)、黄色(混合)、红色(最快的离散模块)等。 第4章 Simulink动态系统建模4.1.6 用户模块用户模块Simulink允许用户创建用户模块库,而且用户可以在之后的建模过程中使用自建的模块。用户模块的创建可以利用图形的方式,也可以通过编程来实现。如果要用图形的方式创建用户模块,则必须绘制模块的方块图,然后把这个方块图放置到Subsystem模块中,并为Subsystem模块提供一个参数对话框。如果要用编程的方式创建模块,则必须编写M文件或编写包含模块系统函数的MEX文件(读者可以阅读
19、第12章“编写M语言S-函数”),最终的结果文件被称为S函数,然后将S函数与用户所创建系统模型中的Simulink S-Function模块相关联,用户可以通过把模型中S-Function模块放置到Subsystem模块中,并为该Subsystem模块添加参数框的方式为用户的S-Function模块添加参数框。 第4章 Simulink动态系统建模4.1.7 系统和子系统系统和子系统Simulink方块图可以包含层级,每一层定义了一个子系统,也就是用相互连接的子系统建立复杂系统的模型。子系统是整个方块图的一部分,实际上对方块图的含义没有任何影响,它主要是在方块图的结构组织上提供帮助,使用户的模
20、型图更易读,但它不能定义一个独立的方块图。用户可以用Subsystem模块和Simulink模型编辑器来创建子系统,也可以在子系统内嵌套任意层的子系统来创建层级子系统。此外,用户也可以创建依条件执行的子系统,这样的子系统只有在触发或使能输入时才可以执行。 第4章 Simulink动态系统建模Simulink把子系统类型分为虚拟子系统或原子子系统。对于虚拟子系统,它是一个虚块,只是用于图形显示目的,并不改变整个模型的执行顺序,当确定模块的更新顺序时,Simulink会忽略虚拟子系统的边界。与此相反,对于原子子系统,Simulink在执行到下一个模块之前会执行子系统内的所有模块,依条件执行的子系统
21、也是原子子系统。缺省时,无条件执行的子系统都被作为虚拟子系统处理。当然,如果要求在执行任意模块之前必须执行所有的子系统,那么用户也可以将一个无条件执行子系统指定为原子子系统。 第4章 Simulink动态系统建模此外,当准备执行模型仿真时,Simulink会生成一个内部“系统”,这个系统是需要求值的一组模块方法集(即方程)。基于时间的方块图并不要求建立这样的系统,Simulink建立这样的内部系统的目的主要是作为管理模型执行的一种手段。严格地说,Simulink把顶层方块图系统作为一个系统,称为根系统,其他来自于非虚拟子系统和模型中其他元素的系统作为底层系统,用户可以在Simulink的调试器
22、窗口中看到这些系统。实际上,创建这个内部系统的动作就是常说的平铺模型层级。 第4章 Simulink动态系统建模4.1.8 信号信号Simulink使用术语“信号(Signal)”来表示模块的输出值,用户可以指定信号的属性,包括信号名称、数据类型(如8位、16位或32位)、数值类型(实数或复数)以及信号维数(一维或二维数组)。Simulink中的许多模块都可以接收或输出任意数据类型、任意数值类型和任意维数的信号,而其他模块则对可以选择的信号属性进行了限制。在Simulink方块图中,带有箭头的线表示信号,信号的源对应于Simulink在计算模块算法(方程)的过程中将数据写入到信号中的模块,称为
23、该模块的输入模块。在求解模块算法(方程)的过程中,输入模块提供的这些信号,求解模块则依据用户指定的时间步读取信号。 第4章 Simulink动态系统建模4.1.9 模块方法和模型方法模块方法和模型方法Simulink中的模块可以表示多个方程,这些方程在Simulink中被描述为模块方法,当用户执行方块图时,Simulink会求取(或执行)这些模块方法的值。这些模块方法的求取在仿真循环内执行。 第4章 Simulink动态系统建模1模块方法模块方法Simulink会为模块方法所执行的函数类型指定类型名称,共用的方法类型包括:Outputs:给定当前时间步上模块的输入和先前时间步上的模块状态,计算
24、模块输出。Update:给定当前时间步上模块的输入和先前时间步上模块的离散状态,计算模块的离散状态值。Derivatives:给定先前时间步上模块的输入和状态值,计算当前时间步上模块连续状态的微分值。 第4章 Simulink动态系统建模对于不同的模块类型,模块方法以不同的方式执行相同模块类型的操作。Simulink的用户接口和文档使用圆点来标识由模块方法执行的特定函数:BlockType.MethodType。例如,Simulink把计算Gain模块输出的方法表示为Gain.Outputs。在仿真过程中,Simulink调试器会遵守这个命名规则,并使用模块名称来指定方法类型和调用这个方法的模
25、块,如gl.Outputs。 第4章 Simulink动态系统建模2模型方法模型方法除了模块方法,Simulink也提供了一组计算模型属性和模型输出的方法,在仿真过程中,Simulink会同样调用这些方法来确定模型的属性和输出,模型方法通常通过调用相同类型的模块方法来执行不同的任务。例如,模型的Outputs方法根据模型指定的顺序调用它所包含模块的Outputs方法来计算模型的输出。模型的Derivatives方法同样也会调用它所包含模块的Derivatives方法来确定模型状态的微分。 第4章 Simulink动态系统建模4.1.10 仿真算法仿真算法1定步长算法和变步长算法定步长算法和变步
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- simulink 动态 系统 建模 仿真
限制150内