1、 本章内容(1)熟悉在数字计算机仿真技术中常用的几种数值积分法,特别是四阶龙格-库塔法;(2)典型环节及其系数矩阵的确定;(3)各连接矩阵的确定;(4)利用MATLAB在四阶龙格-库塔法的基础上,对以状态 空间表达式和方框图描述的连续系统进行仿真;l 用数字计算机来仿真或模拟一个连续控制系统的目的就是求解系统的数学模型。由控制理论知,一个n阶连续系统可以被描述成由n个积分器组成的模拟结构图。因此利用数字计算机来进行连续系统的仿真,从本质上讲就是要在数字计算机上构造出n个数字积分器,也就是让数字计算机进行n次数值积分运算。可见,连续系统数字仿真中的最基本的算法是数值积分算法。l 连续系统通常把数
2、学模型化为状态空间表达式,为了对n阶连续系统在数字计算机上仿真及求解,就要采用数值积分法来求解系统数学模型中的n个一阶微分方程。l 设n阶连续系统所包含的n个一阶微分方程中的第i个一阶微分方程为l (3-1)l所谓数值积分法,就是要逐个求出区间a,b内若干个离散点a t0 t1 t0时,x(t)是未知的,因此式(3-2)右端的积分是求不出的。为了解决这个问题,把积分间隔取得足够小,使得在tk与tk+1之间的f(t,x(t)可以近似看作常数f(tk,x(tk),这样便得到用矩形公式积分的近似公式l或简化为l l这就是欧拉公式。htxtftxtxkkkk)(,()()(1hxtfxxkkkk),(
3、1l即 k=0,x1x0+f(t0,x0)hl k=1,x2x1+f(t1,x1)hl l k=n-1,xnxn-1+f(tn-1,xn-1)hl 这样式(3-1)的解x(t)就求出来了。欧拉法的计算虽然比较简单,但精度较低。图3-1为欧拉法的几何解释。l由图3-2知,用矩形面积tkabtk+1代替积分,其误差就是图中阴影部分。为了提高精度,现用梯形面积tkactk+1来代替积分,即l于是可得梯形法的计算公式为 111(,()(,)(,)2kktkkkkthf t xt dtf t xf tx111(,)(,)2kkkkkkhxxf txf txl 由于上式右边包含未知量xk+1,所以每一步都
4、必须通过迭代求解,每一步迭代的初值xk+1(0)通常采用欧拉公式来计算,因此梯形法每一步迭代公式为l l (3-3)l式中 迭代次数R=0,1,2,(0)1(1)()111(,)(,)(,)2kkkkRRkkkkkkxxhf txhxxf txf txl3.1.3 3.1.3 预估校正法预估校正法l虽然梯形法比欧拉法精确,但是由于每一步都要进行多次叠代,计算量大,为了简化计算,有时只对式(3-3)进行一次叠代就可以了,因此可得l通常称这类方法为预估校正方法。它首先根据欧拉公式计算出xk+1的预估值xk+1(0),然后再对它进行校正,以得到更准确的近似值xk+1(1)。),(),(2),()0(
5、11)1(1k)0(1kkkkkkkkkxtfxtfhxxxthfxxl3.1.4 3.1.4 龙格库塔法龙格库塔法l 根据泰勒级数将式(3-1)在tk+1=tk+h时刻的解xk+1=x(tk+h)在tk附近展开,有l l (3-5)l 可以看出,提高截断误差的阶次,便可提高其精度,但是由于计算各阶导数相当麻烦,所以直接采用泰勒级数公式是不适用的,为了解决提高精度问题,龙格和库塔两人先后提出了间接使用泰勒级数公式的方法,即用函数值f(t,x)的线性组合来代替f(t,x)的导数,然后按泰勒公式确定其中的系数,这样既能避免计算f(t,x)的导数,又可以提高数值计算精度,其方法如下。)(0!21 1
6、)(21 ppkpkkkkhxphxhxhxxl因l故式(3-5)可写成l (3-6)l为了避免计算式(3-6)中的各阶导数项,可令xk+1由以下多项式表示。l (3-7)kxkxxttxxttkkkkkfffdtdxxftfdtxtdfxfxtfxkkkkk)(),(),()(0)(!2121pkxkkkkhfffhhfxxkvmmmkkkahxx11l式中 am为待定因子,v为使用f函数值的个数,km满足下列方程l (3-8)l即:l将式(3-7)展开成h的幂级数并与微分方程式(3-1)精确解式(3-6)逐项比较,便可求得式(3-7)和式(3-8)中的系数am,bmj和cm等。vmchkb
7、xhctfkmjjmjkmkm,2,1,0),(111),(),(),(23213133121221hkbhkbxhctfkhkbxhctfkxtfkkkkkkkl现以v=2为例,来说明这些参数的确定方法。设v=2,则有l(3-9)l l将k1和k2在同一点(tk,xk)上用二元函数展开为),(),()(12122122111hkbxhctfkxtfkkakahxxkkkkkkkkkfxtfk),(1)(0)(0),(3212312122hff hbf hcfhxfhkbtfhcxtfkkxkkxxttxxttkkkkkkkl将k1和k2代入式(3-9)整理后可得l l(3-10)l将上式与式
8、(3-6)逐项进行比较,可得以下关系式l若取 l则)(0)()(3212222211hffbafcahfaahxxkxkkkkk21,21,12122221bacaaa12c1,212121baal于是由式3-9可得l (3-11)l 由于式(3-11)只取到泰勒级数展开式的h2项,故称这种方法为两阶龙格库塔法,其截断误差为0(h3)。)(2211kkhxxkk),(),(121hkxhtfkxtfkkkkkl 同理当v=4时,仿照上述方法可得如下四阶龙格-库塔公式),()2,2()2,2(),()22(6342312143211hkxhtfkkhxhtfkkhxhtfkxtfkkkkkhxx
9、kkkkkkkkkk(3-12)l 通过上述龙格-库塔法的介绍,可以把以上介绍的几种数值积分法统一起来,它们都是基于在初值附近展开成泰勒级数的原理,所不同的是取泰勒级数多少项。欧拉公式仅取到h项,梯形法与二阶龙格库塔法相同,均取到h2项,四阶龙格库塔法取到h4项。从理论上讲,取得的项数愈多,计算精度愈高,但计算量愈大,愈复杂,计算误差也将增加,因此要适当的选择。目前在数字仿真中,最常用的是四阶龙格库塔法,其截断误差为(h5),已能满足仿真精度的要求。l3.1.5 3.1.5 关于仿真数值积分法的几点讨论关于仿真数值积分法的几点讨论l1单步法和多步法l 解初值问题的数值解法的共同特点是步进式,即
10、从最初一点或几点出发,每一步根据xk一点或前面几点xk-1,xk-2 ,来计算新的xk+1的值,这样逐步推进。l当从tk推进到tk+1只需用tk时刻的数据时,称为单步法,例如欧拉法和龙格库塔法。l 相反,需要用到tk以及过去时刻tk-1 ,tk-2 ,的数据时称为多步法。线性多步法的一般形式是l (3-13)l 多步法不能从t=0自启动,通常需要选用相同阶次精度的单步法来启动,获得所需前k步数据后,方可转入相应多步法,因多步法利用信息量大,因而比单步法更精确。)(0111101nknkknknkkkfffhxxxxl2显式和隐式l 在计算xk+1时公式右端所用到的数据均已知时,称为显式算法。例
11、如欧拉法、龙格库塔法和式(3-13)中-1=0的情况。相反,在算式右端中隐含有未知量xk+1时,称为隐式算法。例如梯形法、预估校正法和式(3-13)中-10的情况。l 显式算法利用前几步计算结果即可进行递推求解下步结果,因而易于计算。而隐式计算需要迭代法,先用另一同阶次显式公式估计出一个初值xk+1(0),并求得fk+1,然后再用隐式求得校正值xk+1(1),若未达到所需精度要求,则再次迭代求解,直到两次迭代值xk+1(i)和xk+1(i+1)之间的误差在要求的范围内为止,故隐式算法精度高,对误差有较强的抑制作用。尽管隐式算法计算过程复杂,计算速度慢,但有时基于对精度、数值稳定性等考虑,仍然经
12、常被使用,如求解病态方程等问题。l3.数值稳定性与仿真误差 数值积分法求解微分方程,实质上是通过差分方程作为递推公式进行的,因此,在将微分方程差分化的变化过程中,应保持原系统稳定的特征,即要求用于计算的差分方程是稳定的。但是,在计算机逐次计算时,初始数据的误差及计算过程的舍入误差等都会使误差不断积累。如果这种仿真误差积累能够抑制,不会随计算时间增加而无限增大,则可以认为相应的计算方法是数值稳定的。反之,则是数值不稳定的。l(1)截断误差由于仿真模型仅是原系统模型的一种逼近,以及各种数值积分法的计算都是近似的算法。通常计算步长愈小,截断误差也愈小。l(2)舍入误差由于计算机的精度有限(有限位数)
13、所产生。通常计算步长愈小,计算次数愈多,舍入误差愈大。l 对截断误差而言,计算步长愈小愈好,但太小不但会增加计算时间,而且由于舍入误差的增加,不一定能达到提高精度的目的,甚至可能出现数值不稳情况。显然计算步长太大,不但精度不能满足要求,而且计算步长超过该算法的判稳条件时,也会出现不稳定情况。由此可见,计算步长只能在某一范围内选择,图中的h0为最佳计算步长。l 一般控制系统的输出动态响应在开始段变化较快,到最后变化将会很缓慢。这时,计算可以采用变步长的方法,即在开始阶段步长取得小一些,在最后阶段取得大一些,这样即可以保证计算的精度,也可以加快计算的速度。l 对于一般工程计算,计算精度要求并不太高
14、,故常用定步长的方法。作为经验数据,当采用四阶龙格库塔法作数值积分计算时,取计算步长l h=tr/10或ts/40l式中 tr系统在阶跃函数作用下的上升时间;ts系统在阶跃函数作用下的过渡过程时间。若系统有多个回路,则应按反应最快的回路考虑。自动控制系统常常是由许多环节组成的。应用上节介绍的数字仿真方法对系统分析和研究 时,首先需要求出总的传递函数,再转化为状态空间表达式的形式,然后对其求解。当改变系统某一环节的参数时,尤其是要改变小闭环中某一环节的参数时,以上整个过程又需重新计算,这对研究对象参数变化对整个控制系统的影响是十分不便的。为了克服这些缺点,同时大多数从事自动化工作的科技人员更习惯
15、于用结构图的形式来分析和研究控制系统,为此产生了面向结构图的仿真方法。该方法只需将各环节的参数及各环节间的连接方式输入计算机,仿真程序就能自动求出闭环系统的状态空间表达式。本节主要介绍由典型环节参数和连接关系构成闭环系统的状态方程的方法,而动态响应的计算,仍采用四阶龙格-库塔法。l 这种方法与上节介绍的方法相比,有以下几个主要优点:l)便于研究各环节参数对系统的影响;l)可以得到每个环节的动态响应;l)可对多入多出系统进行仿真。l下面具体介绍面向结构图的仿真方法。l3.3.1 3.3.1 典型环节的确定典型环节的确定l 一个控制系统可能由各种各样的环节所组成,但比较常见环节有:(1)比例环节:
16、G(s)=k (2)积分环节:(3)比例积分环节:(4)惯性环节:(5)超前滞后环节:(6)二阶振荡环节:()kG ss2121()kk skG skss()1kG sTs211()1T sG skTs22()21kG sT sTsl 为了编制比较简单而且通用的仿真程序,必须恰当选择仿真环节。在这里选用图3-7所示的典型环节作为仿真环节,即l式中 u为典型环节的输入,x为典型环节的输出。l 利用这个典型环节,只要改变a,b,c 和d参数的值,便可分别表示以上所述的各一阶环节,至于二阶振荡环节,则可用l两个一阶环节等效连l接得到,如图3-8所示。bsadscsUsXsG)()()(ux图3-7
17、典型环节kux图3-8 二阶振荡环节的等效结构图l3.3.2 3.3.2 连接矩阵连接矩阵l一个控制系统用典型环节来描述时,必须用连接矩阵把各个典型环节连接起来。所谓连接矩阵,就是用矩阵的形式表示各个典型环节之间的关系。下面介绍连接矩阵的建立方法,假设多输入多输出系统的结构图如图3-9所示。同理,三阶及三阶以上的环节也完全可以用若干个一阶环节等效连接得到。由此可见,任何一个复杂的控制系统都可以用若干个典型环节来组成。l 图中带数字的方框表示典型环节,表示比例系数。235,IIIIIIIV235Vl 由图可得各环节的输入与各环节的输出间的关系,以及系统的输出与环节的输出间关系分别为l和 4534
18、33323222121551xuxurxxurxxurxu3241xyxyl写成矩阵形式l和32154321325543210000001000100010100000100001000010000rrrxxxxxuuuuu54321210010001000 xxxxxyyl或写成l (3-20)l l定义式中的W,W0 和 Wc阵为连接矩阵,W反映了各典型环节输入输出间的连接关系,W0反映了系统的参考输入与各环节输入间的连接关系,Wc反映了系统的输出与各环节输出间的关系。xWyrWWxuc0l 一般也将系统中各典型环节的系数写成如下矩阵的形式(假设系统由n个典型环节组成)l (3-21)nn
19、nndcbadcbadcbaP22221111l3.3.3 3.3.3 确定系统的状态方程确定系统的状态方程l 典型环节和连接矩阵确定后,便可求得系统的状态空间表达式,推导过程如下。l 假设系统由n个典型环节组成,则根据典型环节的传递函数有l l (i=1,2,)l即l l(i=1,2,)sbasdcsUsXsGiiiiiii)()()()()()()(sUsdcsXsbaiiiiii112200000000,0000nnabababAB112200000000,0000nncdcdcdCD()()()()ssssA B XC+D Ul 将式(3-20)中的上式进行拉氏变换后代入式(3-22)
20、中可得l对上式两边取拉氏反变换得l(3-23)l 若参考输入向量r=r1 r2 rmT中的r1,r2,rm均为阶跃函数,则上式可简化为l (3-24)000()()()()()()()()()()()sssssssssssA+B XC+D WXWRB-DW XCWA XCWRDW R00(B-DW)x(CW-A)x CW rDW r0()()B-DW xCW-A xCW rl令l则式(3-24)可写成l若H的逆存在,则有l再令l可得 (3-25)l 上式即为闭环系统的状态方程,它是一个典型的状态方程,利用前面介绍的求解方法可方便地求出各典型环节的输出响应,最后根据式(3-20)中的第二式便可求
21、出系统的输出响应。H=B-DW,Q=CW-A0Hx=Qx+CW r0-1-1x=H Qx+H CW r0-1-1A=H Q,B=HCWBrAxx在建立系统的各典型环节时应注意以下两点:(1)为保证H的逆H-1存在,应严格按照的原则,确定每个典型环节。即避免以纯比例、纯微分环节作为典型环节。(2)在输入向量不全为阶跃函数的情况下,只要在确定典型环节时,注意使含有微分项系数(即 )的环节不直接与参考输入连接,也可避免式3-23中出现r的导数。0ib 0id l 面向结构图的数字仿真程序框图如图-10所示,其程序清单通过下例给出。给定典型环节参数和连接矩阵输入仿真时间Tf Tf和计算步长h开始给定输
22、入信号求H,H-1和Q阵值求A,B阵根据龙格-库塔法求状态方程的解计算系统输出yT=TfyN输出结果l例例3-23-2 假设某一系统由四个典型环节组成,如图3-11所示。求输出量y的动态响应。r=10图3-111.05.0sss122s1010sy+-x1 u2x2 u3x3 u4u1x4l解解 由图可得各环节的输入与输出以及系统的输出与环节的输出间关系为rxxxxuuuu000101000010000110004321432143211000 xxxxyl根据以上两式和各典型环节的系数值,可得如下连接矩阵和系数矩阵1000,000101000010000110000cWWW010110021
23、2011015.011.04444333322221111dcbadcbadcbadcbaPl仿真程序如下l%Example3.2lr=10;lP=0.1 1 0.5 1;0 1 1 0;2 1 2 0;10 1 10 0;lW=0 0 0-1;1 0 0 0;0 1 0 0;0 0 1 0;lW0=1;0;0;0;Wc=0 0 0 1;lTf=input(仿真时间Tf=);lh=input(计算步长h=);lA1=diag(P(:,1);B1=diag(P(:,2);lC1=diag(P(:,3);D1=diag(P(:,4);lH=B1-D1*W;lQ=C1*W-A1;lA=inv(H)*
24、Q;B=inv(H)*C1*W0;lx=zeros(length(A),1);ly=zeros(length(Wc(:,1),1);t=0;lfor i=1:Tf/h lK1=A*x+B*r;lK2=A*(x+h*K1/2)+B*r;lK3=A*(x+h*K2/2)+B*r;lK4=A*(x+h*K3)+B*r;lx=x+h*(K1+2*K2+2*K3+K4)/6;ly=y,Wc*x;t=t,t(i)+h;lend;plot(t,y)l取仿真时间:Tf=10;计算步长:h=0.05 l 在MATLAB环境下执行以上程序可得如图3-12所示仿真曲线。图3-12 仿真曲线本章小结:本章在数值积分法的基础上,详细介绍了数字仿真原理和连续系统的两种基本仿真方法。通过本章学习应重点掌握以下内容:(1)熟悉在数字计算机仿真技术中常用的几种数值积分法,特别是四阶龙格-库塔法。(2)典型环节及其系数矩阵的确定。(3)各连接矩阵的确定。(4)利用MATLAB在四阶龙格-库塔法基础上,对以状态空间表达式和方框图描述的连续系统进行仿真。课后作业:书p110,习题3-1,3-2.
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。