现代控制系统分析与设计(4)

2019-08-31 13:20

figure('pos',[50 50 200 150],'color','w');

A=[0 1;-5 -6];B=[2;0];C=[1 2]; syms s;

G=inv(s*eye(size(A))-A);

phet=ilaplace(G); %计算状态转移矩阵 u=1/(s+1);

x=ilaplace(G*B*u); %计算状态响应的解析解 y=C*x; %计算输出响应的解析解 for i=1:61 tt=0.1*(i-1);

xt(:,i)=subs(x(:),'t',tt); yt(i)=subs(y,'t',tt);

end %计算状态响应和输出响应的数值解 plot(0:60,xt,':k',0:60,yt,'-k') gtext('y','FontSize',8) gtext('x1','FontSize',8)

gtext('x2','FontSize',8)

在命令窗中运行该程序得到状态和输出响应解析解和数值解,以及相应的曲线如图5。

图5 状态和输出响应曲线 图6 阶跃响应曲线 3. 线性定常离散系统状态方程的解

如果线性定常离散系统的状态空间表达式为

x(k?1)?Gx(k)?Hu(k)

y(k)?Cx(k)?Du(k) (3-2-7)

初始状态为x(0),那么状态方程的解为 x(k)?Z?1{(zI?G)?1z}x(0)?Zk?1{(zI?G)?1?1HU(z)} (3-2-8)

系统的状态转移矩阵为?(k)?G系统的输出为 y(k)?Z(3-2-10)

?1?Z?1{(zI?G)z} (3-2-9)

{C(zI?G)?1z}x(0)?Z?1{C?(zI?G)?1HU(z)}?Du(k)

16

例2-5 已知系统

x(k?1)?? y(k)??1?01??0?x(k)????u(k) ?1??1???0.16?1?x(k)

求状态转移矩阵,求初始状态为零时系统的单位阶跃响应。 编制程序%ex251求状态转移矩阵。该程序如下

%ex251 G=[0 1;-0.16 -1];

syms z; phez=inv(z*eye(size(G))-G)*z; %计算(zI?G)?1z phek=iztrans(phez) %计算Z在命令窗中运行该程序后返回 phek =

[ 4/3*(-1/5)^n-1/3*(-4/5)^n, 5/3*(-1/5)^n-5/3*(-4/5)^n] [ -4/15*(-1/5)^n+4/15*(-4/5)^n, -1/3*(-1/5)^n+4/3*(-4/5)^n]

编制程序%ex252求出系统的单位阶跃响应并绘制阶跃响应曲线。该程序如下 %ex252

figure('pos',[50 50 200 150],'color','w');

G=[0 1;-0.16 -1];H=[0;1];C=[1 -1];D=0; u=1;n=20;

y= dstep(G,H,C,D,u,n); dstep(G,H,C,D,u,n);

在命令窗中运行该程序后得到系统的阶跃响应曲线如图6。

?1{(zI?G)?1z}

三 线性定常系统的能控性和能观测性

1. 能控性

1)线性定常系统状态能控性的判断

n阶线性定常连续或离散系统?(A,B)状态完全能控的充分必要条件是:能控性矩阵

Uc?B?ABAB2?An?1B的秩为n。

?能控性矩阵可用MATLAB提供的函数ctrb( )自动产生,其调用格式为:

Uc?ctrb(A,B)

其中A,B分别为系统矩阵和输入矩阵,Uc为能控性矩阵。

能控性矩阵的秩即rank(Uc)称为能控性指数,表示系统能控状态变量的数目,可由MATLAB提供的函数rank( )求出。

17

例3-1 判断系统的能控性 ?1???0 x???0?2 y???0321112??2??0x?1???3????11??x 0?1??1u ??1??在命令窗中运行下列命令

>> A=[1 3 2;0 2 0;0 1 3]; B=[2 1; 1 1;-1 -1]; Uc=ctrb(A,B); rank(Uc)

返回 ans =

2

因为rank(Uc)=2?n,所以系统的状态不完全能控。

也可编制判断系统状态能控性的函数sctrb( ),其程序如下: function sctrb(A,B) %判断系统状态的能控性 Uc=ctrb(A,B); nc=rank(Uc); n=length(A); if n==nc

disp('system is completely state controllable') else

disp('system is not completely state controllable') end

在命令窗中运行下列命令 >> A=[1 3 2;0 2 0;0 1 3];B=[2 1;1 1;-1 -1];sctrb(A,B) 返回

system is not completely state controllable 2)线性定常系统输出能控性的判断

线性定常连续或离散系统?(A,B,C,D)输出能控的充分必要条件是:m?(n?1)r矩阵U?CBy?CABCAB2?CAn?1BD的秩为m,其中r为系统的输入个数,m为

?输出个数。

矩阵Uy可以通过能控性矩阵Uc得到,即U例3-2 判断系统的输出能控性

??4???x?15???5?x????u 0?1??y??C*UcD?

y??1?1?x

在命令窗中运行下列命令

>> A=[-4 5;1 0];B=[-5;1];C=[1 -1];D=0;Uc=ctrb(A,B);Uy=[C*Uc D];rank(Uy)

18

返回

ans= 1

因为rank(Uy)=1=m,故系统是输出能控的。

类似的,也可编制判断输出能控性的函数。 2. 能观测性

n阶线性定常连续或离散系统?(A,C)状态完全能观测的充分必要条件是:能观测性矩?C???CA??2阵Vo??CA?的秩为n。

?????n?1???CA?能观测性矩阵可以用MATLAB提供的函数obsv( )自动产生,其调用格式为:

Vo?obsv(A,C)

其中A, C分别为系统矩阵和输出矩阵,Vo为能观测性矩阵。

能观测性矩阵的秩即rank(Vo)称为能观测性指数,表示系统能观测状态变量的数目。可由MATLAB提供的函数rank( )求出。

例3-3 判断例1中系统的能观测性

在命令窗中运行下列命令

>> A=[1 3 2;0 2 0;0 1 3]; C=[2 1 1;0 1 0]; Vo=obsv(A,C); rank(Vo) 返回 ans=

3

因为rank(Vo)=3=n,故系统状态完全能观测。

类似地,也可编制判断状态能观测性的函数。 3. 线性系统的结构分解 1) 按能控性分解

如果线性系统的状态不完全能控,则可通过非奇异线性变换, 将系统(或状态)分解为 能控和不能控两部分。

MATLAB提供的函数ctrbf( ), 可将系统(或状态)分解为如下形式:

???A?xcc??????xc??A210??xc??0???????u Ac??xc??Bc?y?Cc??xc?Cc?? (3-3-1)

?xc??该函数的调用格式为:

?Ac

BcCcTcKc??ctrbf(A,B,C)

19

其中?ABC?为给定系统的状态空间模型,?AcBcCc?为分解后系统的状态空间模

型。T为相应线性变换矩阵,Kc返回系统中能控状态变量的数目。 例3-4 按能控性分解

?0???1x???0001?1??1?????3x?1u ?????3???0??y??01?2?x

在命令窗中运行下列命令

>> A=[0 0 -1;1 0 -3;0 1 -3]; B=[1;1;0]; C=[0 1 -2]; [Ac Bc Cc Tc Kc]=ctrbf(A,B,C)

返回

Ac =

-1.0000 0.0000 -0.0000 -2.1213 -2.5000 0.8660 -1.2247 -2.5981 0.5000 Bc = 0 0

-1.4142 Cc =

1.7321 1.2247 -0.7071 Tc =

-0.5774 0.5774 -0.5774 0.4082 -0.4082 -0.8165 -0.7071 -0.7071 0 Kc =

1 1 0

另一种按能控性分解的形式为

???A?xcc??????xc??0A12??xc??Bc???????u Ac??xc??0?y?Cc?Cc??xc??? (3-3-2) ?xc??将由ctrbf( )函数得到的各系数矩阵均利用MATLAB提供的函数rot90( )旋转180就可得这种形式。函数rot90( )的调用格式为

rot90(a,k) 将矩阵a逆时针旋转k?90.

我们编制的函数cdescom ( )能够将系统分解为这种形式。该函数的调用格式为 ?Ac

?BcCcTck??cdesco(mA,B,C)

20


现代控制系统分析与设计(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:福建申远新材料有限公司年产40万吨聚酰胺一体化项目20万-连江

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: