自动控制网移动版

自动控制网 > 基础知识 > 计算机仿真控制系统 >

状态空间描述

    状态方程与输出方程的组合称为状态空间表达式,又称为动态方程,经典控制理论用传递函数将输入—输出关系表达出来,而现代控制理论则用状态方程和输出方程来表达输入—输出关系,揭示了系统内部状态对系统性能的影响。

    在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


    本文已影响
    最近关注
    0基础免费学PLC,扫描观看

    扫描上方二维码免费观看PLC视频课程