状态空间描述
时间:2015-03-28 15:21 来源:自动控制网
状态方程与输出方程的组合称为状态空间表达式,又称为动态方程,经典控制理论用传递函数将输入—输出关系表达出来,而现代控制理论则用状态方程和输出方程来表达输入—输出关系,揭示了系统内部状态对系统性能的影响。 在MATLAB中,系统状态空间用(A,B,C,D)矩阵组表示。
举例: 系统为一个两输入两输出系统 》A=[16910;31268;47911;5121314]; 》B=[46;24;22;10]; 》C=[0021;8022]; 》D=zeros(2,2); 模型的转换与连接 在一些场合下需要用到某种模型,而在另外一些场合下可能需要另外的模型,这就需要进行模型的转换。 模型转换的函数包括: residue:传递函数模型与部分分式模型互换 ss2tf:状态空间模型转换为传递函数模型 ss2zp:状态空间模型转换为零极点增益模型 tf2ss:传递函数模型转换为状态空间模型 tf2zp:传递函数模型转换为零极点增益模型 zp2ss:零极点增益模型转换为状态空间模型 zp2tf:零极点增益模型转换为传递函数模型 一、模型的转换 用法举例: 1)已知系统状态空间模型为:
》A=[01;-1-2];B=[0;1]; 》C=[1,3];D=[1]; 》[num,den]=ss2tf(A,B,C,D,iu) %iu用来指定第n个输入,当只有一个输入时可忽略。 》num=152;den=121; 》[z,p,k]=ss2zp(A,B,C,D,iu) 》z=-4.5616p=-1k=1 -0.4384-1
2)已知一个单输入三输出系统的传递函数模型为:
》num=[00-2;0-1-5;120];den=[16116]; 》[A,B,C,D]=tf2ss(num,den) 》A=-6-11-6B=1C=00-2D=0 10000-1-50 01001200
3)系统的零极点增益模型:
》z=[-3];p=[-1,-2,-5];k=6; 》[num,den]=zp2tf(z,p,k) 》num=00618den=181710
》[a,b,c,d]=zp2ss(z,p,k) 》a=-1.000000b=1 2.0000-7.0000-3.16231 03.162300 c=001.8974d=0 注意:零极点的输入可以写出行向量,也可以写出列向量。 4)已知部分分式:
》r=[-0.25i,0.25i,-2]; 》p=[2i,-2i,-1];k=2; 》[num,den]=residue(r,p,k) 》num= 2091 》den= 1144 注意余式一定要与极点相对应。 二、模型的连接 (一)并联:parallel 格式: [a,b,c,d]=parallel(a1,b1,c1,d1,a2,b2,c2,d2) %并联连接两个状态空间系统。 [a,b,c,d]=parallel(a1,b1,c1,d1,a2,b2,c2,d2,inp1,inp2,out1,out2) %inp1和inp2分别指定两系统中要连接在一起的输入端编号,从u1,u2,…,un依次编号为1,2,…,n;out1和out2分别指定要作相加的输出端编号,编号方式与输入类似。inp1和inp2既可以是标量也可以是向量。out1和out2用法与之相同。如inp1=1,inp2=3表示系统1的第一个输入端与系统2的第三个输入端相连接。 若inp1=[13],inp2=[21]则表示系统1的第一个输入与系统2的第二个输入连接,以及系统1的第三个输入与系统2的第一个输入连接。 [num,den]=parallel(num1,den1,num2,den2) %将并联连接的传递函数进行相加。 (二)串联:series 格式: [a,b,c,d]=series(a1,b1,c1,d1,a2,b2,c2,d2) %串联连接两个状态空间系统。 [a,b,c,d]=series(a1,b1,c1,d1,a2,b2,c2,d2,out1,in2) %out1和in2分别指定系统1的部分输出和系统2的部分输入进行连接。 [num,den]=series(num1,den1,num2,den2) %将串联连接的传递函数进行相乘。 (三)反馈:feedback 格式: [a,b,c,d]=feedback(a1,b1,c1,d1,a2,b2,c2,d2) %将两个系统按反馈方式连接,一般而言,系统1为对象,系统2为反馈控制器。 [a,b,c,d]=feedback(a1,b1,c1,d1,a2,b2,c2,d2,sign) %系统1的所有输出连接到系统2的输入,系统2的所有输出连接到系统1的输入,sign用来指示系统2输出到系统1输入的连接符号,sign缺省时,默认为负,即sign=-1。总系统的输入/输出数等同于系统1。 [a,b,c,d]=feedback(a1,b1,c1,d1,a2,b2,c2,d2,inp1,out1) %部分反馈连接,将系统1的指定输出out1连接到系统2的输入,系统2的输出连接到系统1的指定输入inp1,以此构成闭环系统。 [num,den]=feedback(num1,den1,num2,den2,sign) %可以得到类似的连接,只是子系统和闭环系统均以传递函数的形式表示。sign的含义与前述相同。 (四)闭环:cloop(单位反馈) 格式: [ac,bc,cc,dc]=cloop(a,b,c,d,sign) %通过将所有的输出反馈到输入,从而产生闭环系统的状态空间模型。当sign=1时采用正反馈;当sign=-1时采用负反馈;sign缺省时,默认为负反馈。 [ac,bc,cc,dc]=cloop(a,b,c,d,outputs,inputs) %表示将指定的输出outputs反馈到指定的输入inputs,以此构成闭环系统的状态空间模型。一般为正反馈,形成负反馈时应在inputs中采用负值。 [numc,denc]=cloop(num,den,sign) %表示由传递函数表示的开环系统构成闭环系统,sign意义与上述相同。 举例应用: 1)系统1为: 系统2为: 求按串联并联正反馈负反馈连接时的系统状态方程及系统1按单位负反馈连接时的状态方程。 exp3_2.m clc clear moreon a1=[01;-1-2]; b1=[0;1]; c1=[13];d1=[1]; a2=[01;-1-3]; b2=[0;1]; c2=[14];d2=[0]; %串联连接 disp('串联连接') [a,b,c,d]=series(a1,b1,c1,d1,a2,b2,c2,d2) %并联连接 disp('并联连接') [a,b,c,d]=parallel(a1,b1,c1,d1,a2,b2,c2,d2) %正反馈 disp('正反馈连接') [a,b,c,d]=feedback(a1,b1,c1,d1,a2,b2,c2,d2,+1) %负反馈 disp('负反馈连接') [a,b,c,d]=feedback(a1,b1,c1,d1,a2,b2,c2,d2) %单位负反馈 disp('单位负反馈连接') [a,b,c,d]=cloop(a1,b1,c1,d1) 三、模型的属性 ctrb和obsv函数可以求出状态空间系统的可控性和可观性矩阵。 格式:co=ctrb(a,b)ob=obsv(a,c) 对于n×n矩阵a,n×m矩阵b和p×n矩阵c ctrb(a,b)可以得到n×nm的可控性矩阵 co=[baba2b…an-1b] obsv(a,c)可以得到nm×n的可观性矩阵 ob=[ccaca2…can-1]’ 当co的秩为n时,系统可控;当ob的秩为n时,系统可观。 exp3_3.m 线性系统H(S)=(s+alph)/(s^3+10s^2+27s+18),当alph分别取-1,0,1时,判别系统的可控性和可观性,并求出相应的状态方程。 clc clear moreon foralph=[-1:1] alph num=[1,alph]; den=[1102718]; [a,b,c,d]=tf2ss(num,den) cam=ctrb(a,b) rcam=rank(cam) oam=obsv(a,c) roam=rank(oam) end moreoff |