资源描述
,第二级,第三级,第四级,第五级,Simulink,高级技术,1,Simulink,求解器概念,2,系统过零的概念与解决方案,3,系统代数环的概念与解决方案,4,高级积分器,5,仿真参数设置:高级选项与诊断选项,1,Simulink,求解器概念,1.1,离散求解器,第,3,章中简单介绍了动态系统的模型及其描述,其中指出,离散系统的动态行为一般可以由差分方程描述。众所周知,离散系统的输入与输出仅在离散的时刻上取值,系统状态每隔固定的时间才更新一次;而,Simulink,对离散系统的仿真核心是对离散系统差分方程的求解。,在对纯粹的离散系统进行仿真时,需要选择离散求解器对其进行求解。用户只需选择,Simulink,仿真参数设置对话框中的求解器选项卡中的,discrete,(,no continuous states,),选项,即没有连续状态的离散求解器,便可以对离散系统进行精确的求解与仿真。,1.2,连续求解器,与离散系统不同,连续系统具有连续的输入与输出,并且系统中一般都存在着连续的状态变量。连续系统中存在的状态变量往往是系统中某些信号的微分或积分,因此连续系统一般由微分方程或与之等价的其它方式进行描述。这就决定了使用数字计算机不可能得到连续系统的精确解,而只能得到系统的数字解(即近似解)。,采用不同的连续求解器会对连续系统的仿真结果与仿真速度产生不同的影响,但一般不会对系统的性能分析产生较大的影响,因为用户可以设置具有一定的误差范围的连续求解器进行相应的控制。离散求解器与连续求解器设置的不同之处如图,1,所示。,图,1,离散求解器与连续求解器设置的比较,由于连续系统状态变量不能够被精确地计算出来,因而积分的误差值同样也是一个近似值。通常,连续求解器采用两个不同阶次的近似方法进行积分,然后计算它们之间的积分差值作为积分误差。连续求解器积分误差的计算如图,2,所示。,图,2,连续求解器积分误差计算,图,2,中,h,为积分步长,。注意,此图以最,简单的多边形积分近似算法为例说明积分误差的计算,在实际中具体的方法视连续求解器的不同而不同。如果积分误差满足绝对误差或相对误差,则仿真继续进行;如果不满足,则求解器尝试一个更小的步长,并重复这个过程。当然,连续求解器在选择更小步长时采用的方法也不尽相同。如果误差上限值的选择或连续求解器的选择不适合待求解的连续系统,则仿真步长有可能会变得非常小,使仿真速度变得非常慢。,(,用户需要注意这一点。,),混合系统仿真时连续状态求解与离散状态求解的协调如图,3,所示。其中,h,为初始步长,由于在时刻,t,与,t,h,之间系统存在着离散状态的更新,因而连续变步长求解器将会减小步长至,之后再计算积分误差以控制求解。如果求解误差满足误差范围,则进行下一步仿真,否则缩小时间间隔,重复此过程进行求解仿真。,图,3,连续状态求解与离散状态求解的协调示意图,2,系统过零的概念与解决方案,1,节中对,Simulink,的求解器进行了较为深入的介绍。,Simulink,求解器固然是系统仿真的核心,但,Simulink,对动态系统求解仿真的控制流程也是非常关键的。,Simulink,对系统仿真的控制是通过系统模型与求解器之间建立对话的方式进行的:,Simulink,将系统模型、模块参数与系统方程传递给,Simulink,的求解器,而求解器将计算出的系统状态与仿真时间通过,Simulink,环境传递给系统模型本身,通过这样的交互作用方式来完成动态系统的仿真。,系统的时间分类,连续时间系统:状态随时间连续变化,离散事件系统:状态的变化在随机的离散时间点上发生,混杂系统(混合动态系统):混杂上述两种系统状态行为,系统,离散时间系统(模型):时间离散,状态离散,采样系统:对象连续,控制离散,系统的数学描述,连续时间系统:,微分方程、传递函数、状态方程,离散事件系统:,事件调度、活动扫描、进程交互,混杂系统(混合动态系统):,上述方法的综合,系统,离散时间系统:,差分方程、状态方程,采样系统:,差分方程、状态方程,系统的数学描述,确定型数学描述:状态随时间连续变化,随机型数学描述系统,系统,连续时间模型:微分方程、脉冲响应函数,传递函数、状态空间模型,离散时间模型:差分方程、脉冲传递函数,权系列、离散状态空间模型,常见的数学模型,第三章 连续系统建模方法,常用数学模型:微分方程、传递函数和状态空间模型。,各种模型的特点:,微分方程:线性、非线性系统。,时域方法;,传递函数:仅适用于线性系统;初始条件为零;,用代数的方法或图解分析进行系统分析与综合;,频域方法;,状态方程:系统的完整描述;化高阶为低阶;降低复杂性,便于处理多变量系统,时域方法;,微分方程,传递函数,状态方程,系统,时域方法,频域方法,不完全描述,完全描述,线性系统,线性系统 非线性系统,3.1,微分方程的机理建模方法,建立微分方程的方法,1,)根据规律列方程,2,)微元分析方法,3,)模拟近似法,在生物、经济等学科的实际问题中,许多现象的规律性不很清楚,即使有所了解也是极其复杂的,建模时在不同的假设下去模拟实际的现象,建立能近似反映问题的微分方程,然后从数学上求解或分析所建方程及其解的性质,再去同实际情况对比,检验此模型能否刻画、模拟某些实际现象。,建模示例,图,1,机械平移系统,图,2,机械传动系统,图,3 R-L-C,电路,f,相似系统,3.2,非线性系统模型的线性化,非线性系统:含有一个或多个非线性元件的系统。,非线性元件:,y=f (x) ,若,f (x),是直线,则该元件是线性元 件,反之,则为非线性元件。,典型的非线性特性:死区、饱和、间隙、继电器特性,非线性系统,一些系统作为线性系统来分析,这是由于:,系统的非线性不明显,可近似为线性系统。,某些系统的非线性特性虽然较明显,但在某些条件下,可进行线性化处理,作为线性系统来分析。,这类系统统称为,非本质非线性系统,。,但当系统的非线性特征明显且不能进行线性化处理时,就必须采用非线性系统理论来分析。这类非线性称为,本质非线性,。,关于线性与非线性的认识,非线性是大自然的普遍特性;线性系统其实只是对少数简单非线性系统的一种理论近似,非线性才是世界的魂魄。,生态学和混沌学家罗伯特,梅(,Robert,,,May,)认为,目前全世界标准的科学教育,向人们灌输的是关于世界图景的偏见和歪曲的印象。不管线性的数学获得了多大的成功,都只能给学生一个关于实际大自然的普遍存在的非线性事实的失真形象。,伊恩,斯图尔特感叹地说:,“,如果你断定,只有线性方程才值得研究,那无异于自我禁锢。你的课本充满了线性分析的成功,它的失败埋藏得如此之深,以致连坟墓都看不见,坟墓的存在也没人注意。如同,18,世纪笃信钟表世界一样,,20,世纪中叶则恪守线性世界。,”,非线性系统模型的处理,等效线性化方法,:,描述函数法,(谐波线性化)、,分段线性化法,、小参数法等都属于这种方法。,小参数法(摄动方法),:把系统视为理想模型的参数或结构作了微小扰动的结果来研究其运动过程的数学方法。,直接分析方法,:李雅普诺夫第二方法 (李雅普诺夫稳定性理论),双线性系统理论,:对于特殊的双线性系统;,流形上的控制理论,:以微分几何为主要数学工具的一种分析方法,可用以研究非线性系统的某些全局和局部性质。,反馈线性化,:代数变换将一个非线性系统的运动特性(全部或部分地)变换成线性的动态特性。,小偏差线性化,/,局部线性化,所谓线性化,就是在一定的条件下作某种近似,或者缩小一些工作范围,而将非线性微分方程近似地作为线性微分方程来处理。,由级数理论可知,若非线性函数在给定区域内存在各阶导数,便可在工作点的邻域将非线性函数展开为泰勒级数。当偏差范围很小时,可略去,2,次以上高次项,从而得到只包含偏差一次项的线性化方程式,实现函数的线性化。这种线性化方法称为小偏差线性化或局部线性化。,非线性数学模型的线性化,A,x,0,y,0,小偏差线性化的这种近似,对大多数控制系统来说都是可行的。,1,)控制系统在通常情况下,都有一个正常、稳定的工作状态,称为平衡工作点。例如,恒温控制系统的正常工作状态是输入、输出为常值,(,输出为被控温度,输入为期望值,),。,2,)当系统的输入或输出相对于正常工作状态发生微小偏差时,系统会立即进行控制调节,力图去消除此偏差,因此可以看出,这种偏差是,“,小偏差,”,,不会很大。,非线性数学模型的线性化,对,在,附近,进行泰勒展开:,条件:,忽略高阶项:,增量方程,建立系统线性化数学模型的步骤,首先确定系统处于正常工作状态,(,平衡工作点,),时各组成元件的工作点,然后列出各组成元件在工作点附近的,增量方程,,最后消去中间变量,得到系统以增量表示的线性化微分方程。,增量方程的数学含义,就是将参考坐标的原点移到系统或元件的平衡工作点上,对于实际系统就是以正常工作状态为研究系统运动的起始点,这时系统所有的初始条件均为零。,Matlab,是如何解微分方程的?,答案:线性微分方程和低阶特殊微分方程一般通过解析解的方法求解,但一般的非线性微分方程是没有解析解的,需要使用数值解的方式求解。,对于多元非线性常微分方程来说,,Euler,算法是最直观的一类求解算法,精度较高的算法是,Runge-Kutta,法、,Adams,法等。但是至今尚没有一种算法可以有效地适用于所有场合。,解算指令,求解算法,适用场合,ode45,4,、,5,阶,Runge-Kutta,大多数场合的首选,ode23,2,、,3,阶,Runge-Kutta,较低精度场合,ode113,Adams,ode45,计算时间太长时,ode23t,Euler,适度刚性,ode15s,Gear,反向数值微分,ode45,失败时,ode23s,2,阶,Rosenbrock,低精度时,比,ode15s,有效,ode23tb,Euler,,反向数值微分,低精度时,比,ode15s,有效,在用微分方程描述的一个变化过程中,若往往又包含着多个相互作用但变化速度相差十分悬殊的子过程,这样一类过程就认为具有“刚性”。描述这类过程的微分方程初值问题称为“刚性问题”。,例,1,:单容水箱液位系统,设供水阀前压力稳定,出水阀其流量公式为:,其中,为流量系数。,试列写液位波动的微分方程,,并对其进行线性化处理。,非线性系统的线性化,多变量系统局部线性化,将该方程式在工作点,附近展开成泰勒级数,并忽略二,若输出变量,y,与输入变量,x,1,,,x,2,有非线性关系,即,阶和高阶导数项,便可得到,y,的线性方程为:,写成增量形式,:,称为系统的静态,/,稳态方程。,滑阀系统压力,-,流量特性线性化,滑阀系统压力,-,流量特性线性化,某滑阀的压力,-,流量特性如图所示,其非线性方程为:,设系统的静态工作点为,A,点。,为阀芯位移;,为负载压差;,为负载流量;,这里:,滑阀系统压力,-,流量特性线性化,将式,在工作点,处泰勒展开,,上式与静态方程相减:,写作:,图示:负载流量特性的线性化,应用范围:,非线性系统的线性化,局部线性化,线性化是相对某一工作点进行的。工作点不同,得到的线性化微分方程的系数也不同。,若使线性化具有足够的精度,调节过程中变量偏离工作点的偏差信号应足够小。,线性化不适用于含本质非线性的系统。,线性化是以直线代替曲线,略去了泰勒级数展开式中的二阶以上无穷小项,这是一种近似处理。如果系统输入量工作在较大范围内,所建立的线性化数学模型势必会带来较大的误差。所以,非线性数学模型线性化是,有条件的,。,线性化以后得到的微分方程是,增量微分方程,,只是为书写方便,略去了增量符号。,连续系统数字仿真,连续系统的仿真,主要的计算工作是求解一阶微分方程。,阶段,技术,建模技术,仿真算法,软件技术,模型建立,模型变换,仿真试验,连续系统数字仿真,一般过程,连续系统数字仿真方法,基于数值,积分方法,面向方程,连续系统,数字仿真方法,基于,离散化方法,面向方程结构图:,微分方程,传递函数,状态模型,传递函数,+,非线性环节,面向方程,面向方程结构图:,传递函数,+,非线性环节,传递函数,状态模型,连续系统数字仿真方法,基于数值积分方法,连续系统的仿真,主要的计算工作是求解一阶微分方程。,数值解法:寻求解,y(t,),在一系列离散点,上的近似解,(,即数值解,),数值积分方法,连续变量问题,离散的差分方程,的初值问题,常用的几种数值积分方法,单步法,欧拉法:精度差(解释概念),数值积分方法,多步法:,改进的欧拉法:精度提高,速度快,Adams,法,Adams,隐式公式,龙格,-,库塔法:精度高,常用,Adams,显式公式,预估,-,校正法,计算量小,单步法(欧拉法),1.,由泰勒展开式得到:,2.,矩形近似解法:,3.,切线近似解法:,特点:方法简单、计算量小,但精度差,泰勒级数方法,优点:,方法概念的简单性,并且具有非常高精度的潜力。,缺点:,依赖于给定的微分方程的反复求导。,几何解释,图,a,矩形近似及其误差,图,b,切线近似及其误差,改进的欧拉法,预估:,曲边梯形面积:,直边梯形面积:,h,较小时,,简记为:,改进的欧拉法,龙格,-,库塔(,Runge-kutta,)法,泰勒展开方法:,思路:,利用几个点上的,y(t,),的一阶导数值的线性组合来近似代替,y(t,),在某一个点的高阶导数值。然后再利用泰勒展开式确定线性组合的各加权系数。这样既避免了计算高阶倒数,又提高了数值积分的精度。,考虑一阶微分方程:,这里:,将,写成线性组合形式:,一阶,RK,公式,欧拉公式,改进欧拉公式,特点:,1,)单步法;,2,)同样精度,,RK4,的,h,比,RK2,的,h,大十倍,而计算量仅大一倍,常用,RK4,多变量形式,例:已知系统方程为:,解:原系统方程可化为下列方程组,,多步法(,Adams,),预估,校正法,常用的几种数值积分方法,单步法,欧拉法:精度差,数值积分方法,多步法:,改进的欧拉法:精度提高,速度快,Adams,法,Adams,隐式公式,龙格,-,库塔法:精度高,常用,Adams,显式公式,预估,-,校正法,计算量小,误差、收敛性与稳定性分析,1.,误差:截断误差与舍入误差,2.,收敛性:,3.,稳定性:,采用数值积分方法进行仿真时常常会出现这样的现象:,本来是稳定的系统,仿真结果却得出不稳定的结论。这种现象是由于计算步长太大造成的,因为,当步长,h,选得过大时,计算误差较大,数值积分方法会使误差传播,以致引起计算不稳定。,因稳定性与步长有密切关系,故在处理实际问题时,可用两个显著不同的步长进行计算,若所得结果基本相同,则一般是稳定的;反之,则很可能不稳定;,数值积分方法的选择,1.,精度要求:,a.,步长确定时,算法阶次越高,截断误差越小。,b.,阶次确定时,多步法,单步法,隐式,显式,2.,计算速度:,同步长,,RK4,比,4,阶,Adams,预估校正法慢。,3.,数值解的稳定性:,小于,4,阶时,隐式,AdamsRK4,显式,Adams,步长控制,1.,经验公式,2.,变步长计算公式,连续系统数字仿真方法,基于数值,积分方法,面向方程,连续系统,数字仿真方法,基于离,散化方法,面向方程结构图:,微分方程,传递函数,状态模型,传递函数,+,非线性环节,面向方程,面向方程结构图:,传递函数,+,非线性环节,传递函数,状态模型,离散相似法,基本原理:,将一个连续系统进行离散化处理,然后求得等价的离散模型。,传递函数,状态方程,Z,域离散相似模型,时域离散相似模型,传递函数,- Z,域离散相似模型,状态方程,-,时域离散相似模型,图斯汀置换法:传递函数,- Z,域离散相似模型,连续系统数字仿真方法,基于数值,积分方法,面向方程,连续系统,数字仿真方法,基于离,散化方法,面向方程结构图:,微分方程,传递函数,状态模型,传递函数,+,非线性环节,面向方程,面向方程结构图:,传递函数,+,非线性环节,传递函数,状态模型,RK,法,Adams,法,离散相似法,置换法,仿真算法的选择与比较,1,4,1.75,1.25,2.1,过零的产生,在动态系统的仿真过程中,所谓过零,是指系统模型中的信号或系统模块特征的某种改变。这种特征改变包括以下两种情况:,(1),信号在上一个仿真时间步长之内改变了符号。,(2),系统模块在上一个仿真时间步长改变了模式(如积分器进入了饱和区段)。,2.2,事件通知,在动态系统仿真中,采用变步长求解器可以使,Simulink,正确地检测到系统模块与信号中过零事件的发生。当一个模块通过,Simulink,仿真环境通知求解器,在系统前一仿真步长时间内发生了过零事件,变步长求解器就会缩小仿真步长,即使求解误差满足绝对误差和相对误差的上限要求。缩小仿真步长的目的是判定事件发生的准确时间(也就是过零事件发生的准确时刻)。,2.3,支持过零的模块,在,Simulink,的模块库中,并非所有的模块都能够产生过零事件。,图,4,系统模型与求解器之间的交互作用示意图,对于其它的许多模块而言,它们不具有过零检测的能力。如果需要对这些模块进行过零检测,则可以使用信号与系统库(,Signals & Systems,),中的,Hit Crossing,零交叉模块来实现。当,Hit Crossing,模块的输入穿过某一偏移值(,offset,),时会产生一个过零事件,所以它可以用来为不带过零能力的模块提供过零检测的能力。,一般而言,系统模型中模块过零的作用有两种类型,:,一是用来通知求解器,系统的运行模式是否发生了改变,也就是系统的动态特性是否发生改变;二是驱动系统模型中其它模块。过零信号包含三种类型:上升沿、下降沿、双边沿,如图,5,所示。,图,5,过零信号的类型,下面分别对这三种类型进行简单的介绍。,(1),上升沿:系统中的,信号上升到零或穿过零,或者是信号由零变为正。,(2),下降沿:系统中的信号下降到零或穿过零,或者是信号由零变为负。,(3),双边沿:任何信号的上升或下降沿的发生。,2.4,过零的举例,过零的产生与关闭过零,1.,过零点的产生,【,例,1,】,过零的产生与影响。,这里以一个很简单的例子来说明系统中过零的概念以及它对系统仿真所造成的影响。在这个例子中,采用,Functions & Tables-,函数与表库中的,Function,函数模块和,Math,数学库中的,Abs,绝对值模块分别计算对应输入的绝对值。我们知道,,Function,模块不会产生过零事件,所以在求取绝对值时,一些拐角点被漏掉了;但是,Abs,模块能够产生过零事件,所以每当它的输入信号改变符号时,它都能够精确地得到零点结果。图,6,所示为此系统的,Simulink,模型以及系统仿真结果。,图,6,过零产生的影响,从仿真的结果中可以明显地看出,对于不带有过零检测的,Function,函数模块,在求取输入信号的绝对值时,漏掉了信号的过零点(即结果中的拐角点);而对于具有过零检测能力的,Abs,求取绝对值模块,它可以使仿真在过零点处的仿真步长足够小,从而可以获得精确的结果。为说明这一点,在,MATLAB,命令窗口中输入如下语句:, semilogy(tout(1:end1,diff(tout),%,绘制系统仿真时刻的一阶差分(即系统仿真步长),如图,7,所示,其中常规步长为,0.2 s,,,%,当发生过零的情况时,系统仿真步长自动缩小至约,s,图,7,系统仿真中过零处步长变化,2.,关闭过零,【,例,2,】,过零的关闭与影响。,在,【,例,1】,中,过零表示系统中信号穿过了零点。其实,过零不仅用来表示信号穿过了零点,还可以用来表示信号的,陡沿和饱和。在这个例子中,系统实现了输入信号由其绝对值跳变到饱和值的功能,而且跳变过程受到仿真时刻的控制。在此系统模型中所使用的,Abs,模块与,Saturation,模块都支持过零事件的产生,因此在系统的响应输出中得到了理想的陡沿。其中系统模型如图,8(a),所示,系统仿真结果如图,8(b),所示。,图,8,系统模型及系统仿真结果,从图,8,中可以明显看出,使用过零检测可以获得很好的仿真结果,系统的输出具有很好的陡沿。,在使用,Simulink,进行动态系统仿真中,其默认参数选择使用过零检测的功能。如果使用过零检测并不能给系统的仿真带来很大的好处,用户可以关闭仿真过程中过零事件的检测功能。用户可以在,Simulation Parameters,参数设置对话框中的,Advanced,选项卡中进行设置,以关闭过零检测功能,然后再次对系统进行仿真。图,9(a),、,(b),所示分别为关闭过零检测的设置以及在关闭过零检测后系统的仿真结果。,图,9,关闭系统过零检测的设置和关闭过零检测后的仿真结果,2.5,使用过零检测的其它注意事项,在使用过零检测时,用户需要注意如下几点:,(1),关闭系统仿真参数设置中的过零事件检测,可以使动态系统的仿真速度得到很大的提高。但可能会引起系统仿真结果的不精确,甚至出现错误结果。,(2),关闭系统过零检测对,Hit Crossing,零交叉模块并无影响。,(3),对于离散模块及其产生的离散信号不需要进行过零检测。,3,系统代数环的概念与解决方案,3.1,直接馈通模块,在使用,Simulink,的模块库建立动态系统的模型时,有些系统模块的输入端口(,Input ports,),具有直接馈通(,Direct,feedthrough,),的特性。所谓模块的直接馈通,是指如果在这些模块的输入端口中没有输入信号,则无法计算此模块的输出信号。换句话说,直接馈通就是模块输出直接依赖于模块的输入。在,Simulink,中具有直接馈通特性的模块有如下的几种:,(1) Math Function,数学函数模块。,(2) Gain,增益模块。,(3) Product,乘法模块。,(4) State-Space,状态空间模块(其中矩阵,D,不为,0,)。,(5) Transfer,Fcn,传递函数模块(分子与分母多项式阶次相同)。,(6) Sum,求和模块。,(7) Zero-Pole,零极点模块(零点与极点数目相同)。,(8) Integrator,积分模块。,3.2,代数环的产生,在介绍完具有直接馈通特性的系统模块之后,来介绍代数环的产生。系统模型中产生代数环的条件如下:,(1),具有直接馈通特性的系统模块的输入,直接由此模块的输出来驱动。,(2),具有直接馈通特性的系统模块的输入,由其它直接馈通模块所构成的反馈回路间接来驱动。,图,10,所示为一个非常简单的标量代数环的构成。,图,10,标量代数环,3.3,代数环的举例与解决方案之一:直接求解系统方程,【,例,3,】,代数环的直接求解。在图,11,中所示的两个系统模型中均存在代数环结构,试对这两个系统进行求解,解,:为,了计算求和模块,Sum,的输出,需要知道其输入,但是其输入恰恰包含模块的输出。对于此二系统,很容易写出如下所示的系统的动态方程:,图,11,具有代数环的系统模型,3.4,代数环的举例与解决方案之二:代数约束,用户除了可以使用,Simulink,内置的代数环求解器对含有代数环的动态系统进行仿真,还可以使用,Math,模块库中的代数约束,Algebraic Constraint,模块对动态系统数学方程进行求解。,使用代数约束模块并给出约束初始值,可以方便地对代数方程进行求解。代数约束模块通过调整其输出代数状态以使其输入为零。其中为模块的输出状态,为一代数表达式,它作为模块的输,入。,【,例,4,】,使用代数约束求解代数环。,在如图,12,所示的系统模型中代,数约束模块的输出分别为代数状态。分别通过反馈回路作为代数约束模块的输入。运行此系统相当于对如下的代数方程进行求解:,其仿真结果如图,12,中,Display,模块所显示的那样,其中,。,图,12,使用代数约束求解的代数环结构,【,例,5,】,代数状态的初始值选取。使用代数约束来求解方程,的根(显然此方程的根为,解,:首先建立如图,13,所示的系统模型,然后对代数约束模块的初始值进行设置,如图,13,所示(仿真结果如,Display,模块中所示)。,)。,图,13,代数状态的初始值选择,3.5,代数环的举例与解决方案之三:切断环,至此,读者能够采用两种方法对含有代数环的动态系统进行仿真分析:一是直接对系统方程进行手工求解,但是在很多情况下难以进行手工求解甚至不可能进行手工求解;二是使用代数约束,由,Simulink,内置的代数环求解器对含有代数环的系统进行仿真。,【,例,6,】,对于如下的连续线性系统:,建立如图,14,所示的系统模型。,图,14,切断代数环,图,14,中为线性连续系统的零极点描述,其相应的状态空间描述矩阵分别为,A,,,B,,,C,,,D,。,建立此系统的模型以求出系统在恒定输入下的状态值。为了说明切断代数环的影响,我们在此模型中给出系统状态求取的三种不同方法以作为比较。图中最上方为使用,Simulink,的内置代数环求解器进行状态求解,最下方为使用手工方式进行状态求解,中间为使用,Memory,模块切断代数环,然后进行状态求解。,4,高级积分器,在使用,Simulink,对实际的动态系统进行仿真时,积分运算可以说是,Simulink,求解器的核心技术之一。前面在介绍动态系统的仿真实现时,仅仅使用了最简单的积分器设置。在这一节中,将简单介绍高级积分器的概念及其应用。,首先对积分器的各个端口进行简单的介绍。图,15,所示为使用缺省参数设置下的积分器外观与选择所有参数设置后积分器的外观比较。,图,15,积分器外观比较,对于使用缺省参数设置下的积分器,其输出信号为输入信号的数值积分,想必读者对其已经比较熟悉了,这里不再赘述。下面详细介绍一下选择所有参数设置后的积分器,各个端口的含义以及对积分器的设置。首先介绍一下积分器参数设置对话框,如图,16,所示。,图,16,高级积分器设置,1.,积分器的初始条件端口(,Initial condition,),设置积分器初始条件的方法有两种,它们分别是:,(1),在积分器模块参数设置对话框中设置初始条件:在初始条件源设置(,Initial condition source,),中选择内部设置(,Internal,),,并在下面的文本框中键入给定的初始条件,此时不显示积分器端口。,(2),从外部输入源设置积分器初始条件:在初始条件源设置中选择外部设置(,External,),,初始条件设置端口以作为标志。此时需要使用,Signals & Systems,模块库中的,IC,模块设置积分器初始值。,2.,积分器状态端口(,State,),当出现下述的两种情况时,需要使用积分器的状态端口而非其输出端口:,(1),当积分器模块的输出经重置端口或初始条件端口反馈至模块本身时,会造成系统模型中出现代数环结构的问题,此时需要使用状态端口。,(2),当从一个条件执行子系统向另外的条件执行子系统传递状态时,可能会引起时间同步问题。此时也需要使用状态端口而非输出端口。至于条件执行子系统的有关内容,将在第,7,章中介绍。,3.,积分器输出范围限制与饱和输出端口(,Saturation,),在某些情况下,积分器的输出可能会超过系统本身所允许的上限或下限值,选择积分器输出范围限制框(,Limit output,),,并设置上限值(,Upper saturation limit,),与下限值(,Lower saturation limit,),,可以将积分器的输出限制在一个给定的范围之内。此时积分器的输出服从下面的规则:,(1),当积分结果小于或等于下限值并且输入信号为负,积分器输出保持在下限值(下饱和区)。,(2),当积分结果在上限值与下限值之间时,积分器输出为实际的积分结果。,(3),当积分结果大于或等于上限值并且输入信号为正,积分器输出保持在上限值(上饱和区)。,选择,Show saturation port,复选框可以在积分器中显示饱和端口,此端口位于输出端口的下方。饱和端口的输出取值有三种情况,用来表示积分器的饱和状态:,(1),输出为,1,,表示积分器处于上饱和区。,(2),输出为,0,,表示积分器处于正常范围之内。,(3),输出为,-,1,,表示积分器处于下饱和区。,4.,积分器重置,选择积分器状态重置框可以重新设置积分器的状态,其值由外部输入信号决定。此时,在积分器输入端口下方出现重置触发端口。可以采用不同的触发方式对积分器状态进行重置:,(1),当重置信号具有上升沿(,rising,),时,触发重置方式选择为上升沿。,(2),当重置信号具有下降沿(,falling,),时,触发重置方式选择为下降沿。,(3),当重置信号具有上升或下降沿(即双边沿)时,触发重置方式可选择为,either,。,(4),当重置信号非零时,选择,level,重置积分器状态,并使积分器输出保持在初始状态。,积分器的重置端口具有直接馈通的特性。积分器模块的输出,无论是直接反馈还是通过具体直接馈通特性的模块反馈至其重置端口,都会使系统模型中出现代数环结构。而使用状态端口代替输出端口可以避免代数环的出现。,5.,积分器绝对误差设置(,Absolute tolerance,),在默认情况下,积分器采用,Simulink,自动设置的绝对误差限。用户也可以根据自己的需要设置积分器的绝对误差限,在,Absolute tolerance,下键入误差上限即可。,至此,我们对高级积分器设置做了一个比较全面的介绍,下面举例说明。,【,例,7,】,高级积分器的使用。系统模型如图,17,所示。,图,17,高级积分器的使用,设置合适的仿真参数如下:仿真时间范围为,0,200,,积分器的输出上限为,20,,下限为,状态重置选择信号上升沿,rising,,,其余参数如系统模型框图中所示。运行仿真结果如图,18,所示。,从仿真结果中可以看出,在系统运行的初始时刻,积分器状态由,IC,模块所决定;而当系统的输出大于或等于,20,时,积分器状态重置为,。,图,18,系统仿真结果,5,仿真参数设置:高级选项与诊断选项,1.1,高级选项,首先介绍,Simulink,仿真参数的高级选项,如图,19,所示。,图,19,仿真参数的高级选项卡,其中各个选项的意义如下:,(1),状态设置(,Action,):,显示当前参数所处的状态,其取值为开(,on,),或关(,off,)。,(2),模块组合(,Block reduction,):,使用一个合成模块替代一组模块。,(3),逻辑信号检测(,Boolean logic signals,):,检测逻辑模块的输入是否为,0,。激活此状态(,Action,设置为,on,),可以强制模块输入为逻辑值。,(4),信号存储复用(,Signal storage reuse,):,复用内存空间以节省信号所使用的内存。,( (5),过零检测(,Zero crossing detection,):,检测过零事件的发生。,(6),模型参数设置(,Model parameter configuration,):,设置整个系统模型的参数,此参数仅影响到在执行过程中可以改变系统参数的仿真或模型本身的参数可以由其它模型访问的系统模型产生的代码。,5.2,诊断选项,在对动态系统进行仿真时,很难避免一些问题的出现,如系统模型中存在的代数环结构、系统中数据连续的转换以及信号的越界等等。使用,Simulink,仿真参数对话框中的诊断选项可以对动态系统仿真过程中出现的问题进行诊断,同时也可以在系统仿真之前进行特定的测试,以有效地提高系统仿真的性能。,图,20,仿真参数之诊断选项卡,
展开阅读全文