simulink动态系统建模仿真-第4章.ppt

上传人:豆**** 文档编号:34218498 上传时间:2022-08-14 格式:PPT 页数:108 大小:2.64MB
返回 下载 相关 举报
simulink动态系统建模仿真-第4章.ppt_第1页
第1页 / 共108页
simulink动态系统建模仿真-第4章.ppt_第2页
第2页 / 共108页
点击查看更多>>
资源描述

《simulink动态系统建模仿真-第4章.ppt》由会员分享,可在线阅读,更多相关《simulink动态系统建模仿真-第4章.ppt(108页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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定步长算法和变步长算法定步长算法和变步

26、长算法Simulink算法分为定步长算法和变步长算法两类。定步长算法:顾名思义,仿真步长是固定不变的,这些算法依据相等的时间间隔来解算模型,时间间隔称为步长。用户可以指定步长的大小,或者由算法自己选择步长。通常,减小步长可以提高仿真结果的精度,但同时也增加了系统仿真所需要的时间。第4章 Simulink动态系统建模变步长算法:在仿真过程中,步长是变化的。当模型的状态变化很快时,减小步长可提高精度,而当模型的状态变化很慢时,可增加步长以避免不必要的计算步数。当然,在每一步中计算步长势必增加了计算负荷,但却减少了仿真的总步数,而且对于快速变化的模型或具有分段连续状态的模型,在保证其所要求的精度的前

27、提下缩短了仿真时间。 第4章 Simulink动态系统建模2连续算法和离散算法连续算法和离散算法Simulink提供了连续算法和离散算法。连续算法:利用数值积分来计算当前时间步上模型的连续状态,当前时刻的状态是由在此时刻之前的所有状态和这些状态的微分来决定的。对于离散状态,连续算法依赖模型中的模块来计算每个时间步上模型的离散状态值。目前,有很多种数值积分算法可以求取动态系统连续状态的常微分方程(ODE),Simulink提供了多种定步长和变步长的连续算法,用户可以根据自己的实际模型来选择这些算法。第4章 Simulink动态系统建模离散算法:主要用来求解纯离散模型,这些算法只是计算下一步的仿真

28、时刻,而不进行其他的运算。它们并不求解连续状态值,而且这些算法依赖模型中的模块来更新模型的离散状态。Simulink有两种离散算法:定步长离散算法和变步长离散算法。缺省时,定步长算法选择一个步长,选择的步长足以使仿真速度跟踪模型中最快速变化的模块;变步长算法可调整仿真步长,以便与模型中离散状态的实际变化率相一致,这对于多速率模型来说可以避免不必要的仿真步数,并因此缩短仿真时间。 第4章 Simulink动态系统建模4.2 Simulink开放式动态系统建模开放式动态系统建模真实世界中到处都是动态系统,有些动态系统本身就是自然存在的,而有些动态系统则是人为建立起来的。例如,生物有机体和弹球的运动

29、等就是固有的动态系统;而热力学中的自动控制系统(可以使房屋保持舒适的温度),汽车的速度控制系统,飞机的自动驾驶仪系统,实现电话通讯的信号处理系统等,都是人工的动态系统。动态系统可以看做是由许多基本的动态系统组成的,如以人体为例,它包含着抗感染系统和维持体温平衡系统,以及许多其他的功能系统。可以把动态系统看做为一个整体或对象,它存在着外部激励(“输入”),并产生响应(“输出”),如果以方块图形式表示,则这样的系统可以用包含输入和/或输出的模块来描述,如图4-2所示。第4章 Simulink动态系统建模图4-2第4章 Simulink动态系统建模Simulink方块图是动态系统数学模型的图形化描述

30、。动态系统的数学模型由一组方程组成,这些数学方程就是众所周知的代数方程、微分方程和/或差分方程。在给定的时间点上,这些方程可以看做是系统输出响应(输出)、系统输入激励(输入)、系统当前状态、系统参数和时间之间的关系,系统状态可以看做是系统结构动态变化的数值描述。例如,在建立简单的钟摆物理系统时,系统的状态是钟摆的当前位置和速度;同理,过滤信号的信号处理系统可以把先前的一组输入看做为系统状态。系统参数是系统静态结构的数值描述,也可以看做为系统方程的常系数。对于钟摆系统,钟摆的长度就是系统的参数。 第4章 Simulink动态系统建模动态系统可以是连续系统和/或离散系统。举例来说,用户可以用Sim

31、ulink建立汽车的防抱死刹车系统,这个系统可以在给定条件下运行。在整个制动系统内,用户可以建立其他子系统的模型,同时,用户也可以利用仿真结果观察整个制动系统是如何操作的,并了解制动块相对于制动盘的滑动情况。在真实系统中,制动盘上制动块的强度在整个刹车过程中是连续变化的,Simulink把这个系统建模为连续系统处理。但汽车中的制动系统也有可能存在离散系统,例如,汽车上有可能使用计算机芯片来控制制动块作用在四个轮子上的准确制动力,运行在计算机芯片上的软件是以某个时钟频率操作的,这种操作是离散变化的,因此只有一个离散的时间量值来控制汽车的制动系统。对于这样的制动系统,整个系统就是由连续系统和离散系

32、统组成的。 第4章 Simulink动态系统建模Simulink的主要设计目的是建模、分析和实现动态系统。它提供了一个图形编辑器,用户可以利用模块库浏览器中的模块类型来创建动态系统模型。Simulink中的模块库表示的是基本动态系统,这些模块称为内嵌模块。用户也可以创建自己的模块类型,即用户模块。此外,Simulink有一个开放式的用户接口,可以与其他方提供的工具交互使用。例如,它可以与MathWorks公司提供的产品和第三方产品协同工作,从而简化了动态系统的建模工作。图4-3说明了MathWorks公司提供的一些工具,这些工具可以帮助用户设计、分析和实现动态系统。 第4章 Simulink动

33、态系统建模图4-3 第4章 Simulink动态系统建模Simulink提供了丰富的动态系统建模功能,这些功能可以由某些特定的组件进行扩展,如Stateflow用于事件驱动系统,SimMechanics用于建模物理系统,许多模块库如DSP Blockset用于信号处理领域。如果用户建模的系统已经超过了仿真环境的配置,那么用户可以用实时工作区(Real-Time Workshop)和相关的组件为模型方块图自动生成更优化的代码,然后用MathWorks提供的实时目标设计组件执行系统模型。此外,许多目标都支持Simulink环境中的监视和参数调整功能,从而可以查看实时系统中的信号并改变系统参数。正因

34、为如此,在整个Simulink模型设计的任何时候,用户都可以利用MATLAB功能和许多工具箱来分析仿真或实时查看运行结果,或改进模型设计。第4章 Simulink动态系统建模 4.3 动态系统数学模型分类动态系统数学模型分类在动态系统的分析和设计中,有四种常用的数学模型类型:常微分方程(ODEs)、差分方程、代数方程和混合方程。4.3.1 常微分方程常微分方程常微分方程由两个方程组成:输出方程和微分方程,如图4-4所示。 第4章 Simulink动态系统建模图4-4 第4章 Simulink动态系统建模输出方程在给定的时间,以系统的输入、状态、参数和时间为函数计算系统的当前输出;微分方程是常微

35、分方程,以系统的输入、状态、参数和时间为函数计算在当前时刻状态的导数。这种模型类型适用于跟踪响应连续时间函数的系统,这样的连续时间系统通常为物理系统,即机械系统、热力学系统或电子系统。对于简单系统,利用输出方程和微分方程就可以求取输出响应y(t),但是对于大多数复杂的实际系统,系统的响应是通过对状态的数值积分来得到的。 第4章 Simulink动态系统建模Simulink利用Integrator模块实现微分方程中的积分算法,积分器是构成动态系统的基本模块。在建立系统模型时,用户需要首先确定积分器的数目,一个积分器就表示一阶微分,通过积分把导数量转变为状态量从而确定系统的状态。例如,如果方程中包

36、含y的二阶导数,则需要两个积分器,一个积分器输入d2y/dt2,并输出dy/dt;另一个积分器输入dy/dt,并输出y。实现的状态量之间的关系如图4-5所示。在每个积分块中给出了各变量的初始条件,并利用原始方程建立各个状态之间的代数关系。 第4章 Simulink动态系统建模图4-5 第4章 Simulink动态系统建模这里举一个ODE方程的例子,如以65公里/小时在公路上奔驰的汽车。我们的直觉告诉我们,汽车的当前位置(也就是汽车里程表上读取的数)与汽车当前的速度有关。假设1:00时,汽车里程表的读数是1000公里,那么在3:00时里程表的读数就会是1130公里,然后用1130减去1000再除

37、以时间差(3:00-1:00=2小时),得到65,即平均速度。这样的计算可能会随着时间范围的缩小而更加精确,当时间趋近于0时,我们得到相对于时间的位置导数,也就是即时速度(汽车速度表中读取的数)。从数学的角度讲,汽车的位置可以表示为状态xc(t),则速度表示为,它是位置对时间的导数。假设汽车一直匀速行驶,那么这个行驶系统的ODE方程为 第4章 Simulink动态系统建模65)()()(txtxty假设初始条件为x(0) = 1000,建立的Simulink方块图模型如图4-6(a)所示,运行模型后的仿真结果如图4-6(b)所示。 第4章 Simulink动态系统建模(a) (b) 图4-6

38、第4章 Simulink动态系统建模对这个简单系统来说,我们可以求取输出响应。但是,大多数系统是无法求解的,即使有解,要解算出结果将非常困难。例如,对上面这个汽车运动系统,我们忽略了许多实际系统中的因素,如空气阻力、滚动摩擦、重力、发动机控制系统、航迹控制系统等。Simulink模型可能是线性模型也可能是非线性模型。大多数真实世界中的系统都是非线性的,线性模型通常是在满足某些规则下的非线性系统的近似。线性模型的好处就在于在分析和设计线性系统时存在着大量的数学描述形式。Simulink处理线性模型和非线性模型的能力有助于解决线性理论和实际的非线性系统之间存在的差异。第4章 Simulink动态系

39、统建模4.3.2 差分方程差分方程另一种描述系统的数学模型是差分方程。差分方程由两个方程组成:输出方程和更新方程,如图4-7所示。 图4-7 第4章 Simulink动态系统建模图4-7输出方程用系统的输入、先前时刻的状态、参数和时间的函数计算给定时刻的系统输出响应;更新方程是差分方程,它用系统的输入、先前时刻的状态、参数和时间的函数计算当前时刻的系统状态。这种模型类型适用于在离散时刻跟踪系统响应的系统。这种离散时间系统常常用来描述离散控制系统和数字信号处理系统。对于简单系统,使用输出方程和更新方程就可以获得系统的输出响应,但对于真实世界中大多数的复杂系统,系统响应是通过迭代进行求解的,在一段

40、时间内,系统会反复利用输出方程和更新方程求解系统响应。 第4章 Simulink动态系统建模目前,大多数的离散时间系统都是人工动态系统,这是由于数字计算机、微型控制器和定制硅(FPGA,即特定用途集成电路)的发展带动了离散时间控制系统和信号处理系统的发展。例如,从控制房屋温度、汽车驾驶、飞机航行的控制系统到控制儿童玩具的控制系统等,都是用离散时间控制理论设计的,而且,在信号处理领域,信号处理理论也得到了很大发展,如改进的通信系统、音效质量等。 第4章 Simulink动态系统建模在设计离散时间系统时,Simulink提供了丰富的建模模块,尤其是Simulink还支持多速率模型,也就是带有离散时

41、间组件的系统模型可以有不同的采样速率。当在多任务环境下执行多速率模型时,这是很重要的方面,它保证了系统的完整性,因为在多任务模型中,每一任务是以不同的速率执行的。例如,如果信号要在一个任务中重新计算(更新),而在另一任务中读取这个信号,那么必须确保这个系统不处于紊乱状况下,否则,第二个任务读取的就是受损的数据。 第4章 Simulink动态系统建模典型的多任务编程环境(如C/C+/Java)利用“notion”(类似20世纪60年代Dijkstra发明的信号装置)来限制对共享资源(如存储位置)的访问。对编程人员来说,在正确使用操作系统方面,最困难的莫过于合理协调多任务环境中的各个活动任务,许多

42、系统就是因为采用了大量的代码复用和检测而导致失败。例如,1997年7月发射的火星探测器就是由于系统任务的优先权倒置而导致了失败。 第4章 Simulink动态系统建模Simulink在进行多任务模型设计时使用了不同的方法,也就是模型可以直接配置在多任务环境中而不必考虑系统的完整性问题。特别是Simulink中的所有模块都可以有一个或多个采样时间,每一种采样时间可以应用到一个独立的任务中,当模块需要读取以不同采样时间更新的信号时,这时就出现了速率转换问题。在这种速率转换过程中,比较明确的一点就是,不同的任务正在访问共享资源信号,因此,Simulink提供了特定的速率转换模块,以确保系统的完整性,

43、而且又满足离散时间理论,Simulink(和Real-Time Workshop)会利用速率转换模块、Unit Delay或Zero Order Hold模块自动处理这种情况。与此同时,Simulink也提供了检测功能,以确保系统在多任务环境中的正确建模。正因为Simulink在建立多速率系统的同时又保证了系统的完整性,从而大大简化了动态系统的建模和设计过程。 第4章 Simulink动态系统建模4.3.3 代数方程代数方程另一种描述系统的数学模型是代数方程,它需要在每一时刻都求解系统输出,如图4-8所示。 图4-8 第4章 Simulink动态系统建模对于简单系统,很容易就能求得系统的输入和

44、输出,但实际的代数方程通常用数值方法(包括扰动和迭代)进行迭代求解。以下面这组代数方程为例: )(2)()()()(tytgtgtuty可以求得: )(31)()(2)()(tutytytuty第4章 Simulink动态系统建模图4-9 第4章 Simulink动态系统建模这个例子说明了在编程和数学方程之间一个非常重要的问题,正如我们前面已经提到的,在Simulink模块之间的连接定义了数学关系,尤其是方程中的“=”表示了数学上的一种相等关系。对于第一次使用Simulink的用户,容易混淆的就是把Simulink模块看做了编程操作,如果我们把方程中的“=”解释为赋值关系,那么就会得到不同的结

45、果。这里,我们把上面的方程直接转换为MATLAB的M代码,并赋值u(t)=6,即 u = 6; y = u-2*y? Undefined function or variable y. 第4章 Simulink动态系统建模结果是错误的,这是因为我们使用了先前的y值为变量y赋值,MATLAB无法确定先前的y值。为了避免错误,必须先选择一个y值,这里随机选择一个0值,即 u = 6; y = 0; y = u-2*yy = 6 这与数学方程求解的值不同,这是因为在程序中赋值与数学含义的相等是完全不同的。这就是为什么我们看到的只是Simulink定义的数学关系,而不是执行程序操作的原因。 第4章 S

46、imulink动态系统建模4.3.4 组合系统组合系统另一种描述系统数学模型的是组合方程,这类方程中包含了上述三种模型类型,大多数真实世界中的复杂系统都属于这种类型。这类系统包含输出方程、微分方程、更新方程和某些其他方程,如图4-10所示。 第4章 Simulink动态系统建模)()()()( )()()()( )()()(adcadcdctytytytytututututxtxtxkkk图4-10 第4章 Simulink动态系统建模求解这类系统的输出响应需要利用上面讨论的几种解算方法,因为这类系统内部包含了由输出和状态所定义的关系(方程)。例如,有的组合方程定义了微分变量的有限积分关系,这

47、种关系需要由一组方程来表达,包括输出方程、更新方程、微分方程和过零方程,过零方程定义了有限积分中的上限和下限时间。再举一个组合方程的例子,由使能方程和禁止(关闭使能)方程定义的状态和信号之间的关系也属于这类系统,这两个方程确定了系统执行过程中激活或关闭部分子系统的时间。 第4章 Simulink动态系统建模在上面讨论的四种系统方程类型中都有一个系统固有特性,就是系统的采样时间。采样时间是系统在一个时间范围内跟踪系统输入、状态或输出的时间间隔,根据采样时间的不同,系统可以描述为离散时间系统、连续时间系统和混合系统。离散时间系统以有限的时间间隔跟踪系统响应,如果令这个有限的时间间隔趋近于零,那么离

48、散时间系统也就变成了连续时间系统。时间间隔可以是周期性的或非周期性的。非周期率系统有时是指非匀速率系统,意思就是对系统响应的跟踪不是匀速的,非匀速率系统可以归为组合系统,它利用附加方程(GetTimeOfNextVarHit)确定求解系统方程的时间。连续时间系统是系统响应连续变化的系统,连续时间信号在整个数值积分区间(使用最小时间步)是连续改变的。混合系统是由离散时间系统和连续时间系统组成的系统。第4章 Simulink动态系统建模如果系统只有一个采样时间,那么这个系统就是单速率系统;如果系统有多个采样时间,那么这个系统就是多速率系统。多速率系统可以用单任务模式或多任务模式执行。系统也可以用数

49、值积分的算法类型进行分类:定步长系统是使用定步长算法的系统,定步长算法实际就是用指定的方法计算系统在下一时刻(采用固定时间间隔)的连续状态;变步长系统使用变步长算法,变步长算法实际就是用隐式或显式计算下一个非周期时刻的连续状态值。通常,变步长算法使用误差控制来调整采样时间间隔的大小,以使系统满足希望的误差容限。第4章 Simulink动态系统建模事实上,除了基本系统,描述动态系统的数学模型都涉及复杂的数学转换,每个基本转换都可以归类为上面所论述的一种简单系统。因此,一个复杂的动态系统可以用多个不同的简单动态系统进行建模,这种简单系统相互连接的图示性描述就是现在的方块图。方块图模型现在已经成为表

50、述系统的一种标准形式,在教科书、图纸设计、期刊论文以及说明书中广泛采用这种方式来描述动态系统。 第4章 Simulink动态系统建模 4.4 建立方程模型建立方程模型4.4.1 建立代数方程模型建立代数方程模型例4-1 摄氏温度转换为华氏温度。这里以房屋热力学系统中的温度转换方程为例,利用TF = 9/5(TC) + 32方程可将摄氏温度转换为华氏温度。为了建立该方程的模型,首先必须明确构成该模型的模块:Ramp模块:属于Sources库,可以输入温度信号;Constant模块:也属于Sources库,可以定义常值,如32;Gain模块:属于Math库,可以实现9/5乘以输入信号;Sun模块:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁