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

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

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

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

资源描述

第4章Simulink动态系统建模第4章Simulink动态系统建模4.1创建动态系统模型的要素4.2Simulink开放式动态系统建模4.3动态系统数学模型分类4.4建立方程模型第4章Simulink动态系统建模4.1创建动态系统模型的要素4.1.1方块图Simulink方块图是动态系统数学模型的图形化描述。动态系统的数学模型是由一组方程来表示的,而由方块图模型所描述的数学方程就是众所周知的代数方程、微分方程和/或差分方程。一个典型的动态系统方块图模型是由一组模块和相互连接的线(信号)组成的,这些方块图模型都来源于工程领域,如反馈控制系统理论和信号处理理论等。每个模块本身就定义了一个基本的动态系统,而方块图中每个基本动态系统之间的关系就是通过模块之间相互连接的线来说明的,方块图中的所有模块和连线就描述了整个动态系统。第4章Simulink动态系统建模方块图模型中的每个模块都属于一个特定的Simulink模块类型,模块的类型决定了模块的输出、输入、状态与时间的关系。在建立系统模型图时,Simulink方块图中可以包含任意数目、任意类型的模块。关于模块的类型,这里介绍两个关键的概念—Simulink中的模块包括非虚拟模块和虚拟模块。非虚拟模块是基本系统,虚拟模块则是为了模型方块图组织结构的方便化而建立的,它在模型方块图所描述的系统方程定义中不起任何作用,如BusCreator模块和BusSelector模块就是虚拟模块,它们的作用只是把信号“捆绑”在一起用来简化方块图,而且也增加了模型的可读性。第4章Simulink动态系统建模在Simulink中,方块图(或者说模型)表示的是“基于时间的方块图”。这个含义如下:(1)Simulink方块图定义了信号和状态变量的时间关系,方块图的解是通过求解整个时间过程中所有的函数方程来获得的,这个时间过程就是由用户指定的“起始时间”开始,至用户定义的“终止时间”结束,每次计算都是在一个时间步内求解这些函数关系。(2)信号表示的是整个时间范围内的量值,在方块图的起始时间到终止时间之间的每个时间点上都定义了信号。第4章Simulink动态系统建模(3)信号和状态变量之间的关系是通过模块所表示的一组方程定义的,每个模块都是由一组方程(也称为模块方法)组成的。这些方程定义了输入信号、输出信号和状态变量之间的关系,方程定义中的所有值称为参数,也就是方程中的系数。第4章Simulink动态系统建模4.1.2系统函数每个Simulink模块的类型都是与一组系统函数相关联的,系统函数指定了模块的输入、状态和输出之间的时间关系。这个系统函数包括:输出函数:表示的是系统输出、输入、状态和时间的关系。更新函数:表示的是系统离散状态的将来值与当前时刻、输入和状态之间的关系。微分函数:表示的是系统连续状态对时间的微分、模块当前状态值和输入之间的关系。第4章Simulink动态系统建模系统函数可以表示为:),,(ouxtfy输出函数),,(ud1uxtfxk更新函数),,(dcuxtfx微分函数这里,kxxxdc,t是当前时间,x是模块的状态,u是模块的输入,y是模块的输出,xd是模块离散状态的微分,'cx是模块连续状态的微分。在进行仿真的过程中,Simulink利用系统函数计算系统的状态值和输出值。第4章Simulink动态系统建模4.1.3状态Simulink模块可能包含有状态,状态(state)是确定模块输出的变量,它的当前值是模块状态和(或)前一时刻输入值的函数。含有状态的模块必须存储前一时刻的状态值,用以计算当前时刻的状态值,因此说,状态是可以保持的。由于含有状态的模块必须存储前一时刻的状态值和(或)输出值用以计算当前时刻的状态值,因此这样的模块也一定都需要内存。模块的输出是模块输入、状态和时间的函数,描述模块输出对输入、状态和时间的特定函数取决于模块的类型。Simulink模型有两种状态类型:离散状态和连续状态。连续状态是连续变化的,如汽车的位置和速度;离散状态是连续状态的近似,这些状态在有限的时间间隔(周期性或非周期性)内进行更新(重新计算),例如,在数字里程表中显示的汽车位置就是离散状态,这些位置在每秒内进行更新。如果离散状态的时间间隔趋近于零,那么离散状态也相当于连续状态。第4章Simulink动态系统建模Simulink模块明确定义了模型的状态,尤其是需要某些先前时刻的输出或所有输出才能计算当前输出的模块。这些模块明确定义了两个时间步之间需要保存的一组状态,因此说,这样的模块都是有状态的。图4-1是含有状态的模块中输入、输出和状态的图形表示。模型中状态的总数是模型中所有模块定义的所有状态之和。为了确定模型中的状态总数,Simulink需要分析模型中所包含的模块类型,然后再确定模块类型所定义的状态数目。Simulink会在仿真汇编阶段执行这个工作。第4章Simulink动态系统建模x(状态)u(t)(输入)y(t)(输出)图4-1第4章Simulink动态系统建模举例来说,Simulink的Integrator(积分器)模块就是一个含有状态的模块。Integrator模块输出的是由仿真起始时刻到当前时刻的输入信号的积分值,当前时刻的输出值取决于在此时刻之前Integrator模块的所有输入值。事实上,积分值只是Integrator模块的一个状态。再举一个例子,Simulink的Memory模块也是一个含有状态的模块,Memory模块存储当前仿真时刻的输入值,并在此时刻之后输出这些值,因此Memory模块的状态就是前一时刻的输入值。第4章Simulink动态系统建模Simulink的Gain模块是个无状态模块,Gain模块的输出值是输入信号值乘以增益常数,它的输出完全是由当前的输入值和增益来决定的,因此Gain模块没有状态。此外,Sum模块和Product模块也是无状态模块,它们的输出均是当前输入的函数,因此都是无状态的。第4章Simulink动态系统建模1.连续状态计算连续状态需要知道状态的变化率或微分,由于连续状态的变化率自身也是连续的(也就是,它自身也是一个状态),因此计算当前时间步上连续状态的值需要从仿真的起始时刻开始对状态的微分值进行积分,这样,在Simulink中建立连续状态的模型需要Simulink能够表示积分操作并描述每一时刻上状态微分的计算过程。Simulink方块图使用Integrator模块表示积分过程,并利用与Integrator模块相连的一串操作模块表示计算状态微分的方法,这串与Integrator模块相连的模块实际上就是图形化的常微分方程(ODE)。第4章Simulink动态系统建模通常,除了简单动态系统外,对由常微分方程所描述的真实世界动态系统中状态的积分是不存在解析法的,对状态积分需要利用称为ODE算法的数值方法,这些不同的方法需要在计算精度和计算负荷之间进行折衷选择。Simulink给出了最通用的ODE积分方法的计算机实现,并允许用户在仿真一个系统时确定使用哪一种方法来积分由Integrator模块表示的状态。第4章Simulink动态系统建模计算当前时间步上连续状态的值需要从仿真的起始时刻开始对这个状态值进行积分,数值积分的精度取决于两个时间步间隔的大小,通常,时间间隔越小,仿真精度越高。有些变时间步的ODE算法可以根据状态的变化率自动改变时间步的大小,以满足整个仿真期间的精度要求。Simulink允许用户在选择定步长或变步长算法时均可指定仿真步长的大小,若要使计算负荷最小,则变步长算法会选择最大步长,这样,对于模型中变化最快的状态,Simulink所选择的步长仍然能够满足用户指定的精度要求,也就保证了模型中计算的所有状态均满足用户指定的精度。第4章Simulink动态系统建模2.离散状态计算离散状态需要知道当前时间和在此时间之前所有状态值之间的关系,Simulink会在状态的更新函数中参考这种关系。由于离散状态不仅依赖于先前时间步的值,而且还依赖于模型的输出值,因此,在Simulink中建立离散状态的模型也需要建立状态与先前时间步上系统输入之间的关系模型。Simulink方块图使用特定的模块类型,即离散模块来建立状态与系统输入之间的关系模型。第4章Simulink动态系统建模与连续状态一样,离散状态在设置上也可以限制仿真步长的大小,对于有些模型,如果要求模型状态的所有采样点都必须在仿真步上,那么必须明确指定仿真步长,Simulink利用离散求解器来实现这些设置要求。Simulink给出了两种离散求解器:定步长离散求解器和变步长离散求解器。定步长离散求解器确定满足模型中所有离散状态的所有采样时间的固定步长,而不考虑在采样时刻状态是否改变;相比之下,变步长离散求解器会根据状态的改变而改变步长,以确保采样时间只在状态值发生改变的时刻。第4章Simulink动态系统建模3.混合系统的状态混合系统是既有离散状态,又有连续状态的系统。严格地说,混合系统模型应该是既有离散采样时间,又有连续采样时间的模型,这些采样时间都来自于离散状态和连续状态。求解这样的系统模型,在选择步长时既要能满足对连续状态积分的精度要求,又要满足对离散状态采样时间的限制,因此,Simulink利用传递由离散求解器确定的下一个采样时间作为连续求解器的附加限制来实现这个要求,也就是说,连续求解器选择的步长在步进仿真的同时必须不能超过下一个采样时间。连续求解器可以缩短下一个采样时间的步长以满足它的精度限制,但即使精度满足要求,它所选择的步长也不能越过下一个采样时刻。第4章Simulink动态系统建模4.1.4模块参数Simulink中的许多标准模块的关键属性都是可以参数化的。例如,Simulink的Gain模块中的gain变量就是一个参数。每个参数化模块都有一个在编辑或仿真模型时用以设置参数值的对话框,用户可以使用MATLAB表达式指定参数值,Simulink会在仿真运行前求取表达式的值。当然,用户也可以在仿真运行期间改变参数值,也就是说,可以用交互的方式确定最适合的参数值。第4章Simulink动态系统建模一个参数化模块可以用来表示一组相似模块。例如,在创建模型时,用户可以分别把每个Gain模块的gain参数设置为不同的值,从而让每个Gain模块执行不同的任务,正因为Simulink允许用每个标准模块来表示一组相似模块,所以,模块的参数化大大提高了标准Simulink模块库的建模能力。第4章Simulink动态系统建模Simulink中许多模块的参数都是可调的,可调参数(tunableparameter)是指在Simulink仿真模型的过程中,用户可以改变这些参数的数值。例如,Gain模块的gain参数是可调的,当进行仿真运算时,用户可以改变模块的gain值。如果模块的参数不可调,则在运行仿真期间,Simulink会关闭设置参数的对话框。正因为如此,为了提高仿真的执行速度,除了用户希望改变的参数外,用户可以将模型中的所有其他参数均指定为不可调,这可以加快大模型的执行速度,而且也会加快代码的生成速度。第4章Simulink动态系统建模4.1.5模块采样时间标准的Simulink模块包括连续模块和离散模块,连续模块对连续变化的输入信号进行连续响应,而离散模块只对采样时刻(即固定时间间隔的整数倍时刻)的输入信号进行响应。所有的Simulink模块都有采样时间,包括没有定义状态的模块,如Gain模块。连续模块可以有无限小的采样时间,称为连续采样时间;离散模块可以通过SampleTime参数指定采样时间,离散模块在两个连续的采样时刻之间会一直保持其输出值。举例来说,Constant模块及Continuous模块库中的模块都是连续模块,DiscretePulseGenerator模块和Discrete模块库中的模块都是离散模块。第4章Simulink动态系统建模此外,有许多Simulink模块既可作为连续模块,也可作为离散模块,这取决于激励这些模块的模块是连续模块还是离散模块,如Ga

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

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

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

×
保存成功