?2???x??11??1?x????u 1??2?试求出使闭环系统极点为-1, 和-2的状态反馈阵K。
在命令窗中运行下列命令 >> A=[2 1;-1 1];B=[1;2];p=[-1 -2];k=acker(A,B,p) 返回
k =
4 1
或运行下列命令
>> A=[2 1;-1 1];B=[1;2];p=[-2 -1];k=place(A,B,p) 返回
k =
4.0000 1.0000 3. 部分极点配置
如果系统不完全能控的,则只能配置能控部分的极点,而不能控的极点不能任意配置,这种配置其中一部分极点的问题称为部分极点配置。
我们编制的函数bfjdpz( )可实现SISO系统的部分极点配置。该函数的调用格式为:
K?bfjdpz(A,B,C)
其中A,B分别为系统矩阵和输入矩阵。C为输出矩阵不能缺省,自然可任意设置。该函数的程序如下。
function K=bfjdpz(A,B,C) %部分极点配置 M=ctrb(A,B); m=rank(M);
n=length(A);
[Af,Bf,Cf,Tf]=ctrbf(A,B,C) %按能控性进行分解 Ac=Af(n-m+1:n,n-m+1:n); Bc=Bf(n-m+1:n);
Pc=input('输入能配置的极点组成的向量')
Kc=acker(Ac,Bc,Pc);
Kf=[ones(1,n-m) Kc]; %Kf为按能控性分解状态空间表达式对应的状态方馈阵,不能控状
态变量对应的反馈系数可任意设置
K=Kf*Tf;
例5-2 已知系统状态方程为 ??1???0 x???000?30??0????1x?0u ????1???1??试判断是否可以采用状态反馈分别配置以下两组闭环极点:{-2,-2,-1};{-2,-2,-3}。若能
配置,求出反馈阵K。
先运行下列命令判断能控性
>> A=[-1 0 0;0 0 1;0 -3 1];B=[0 0 1]';Uc=ctrb(A,B);m=rank(Uc) 返回
31
m =
2
可见系统是不完全能控的,而且其中有两个极点可以任意配置。在命令窗中调用此函数 >> K=bfjdpz(A,B,C) 返回 Af =
-1 0 0 0 0 -1 0 3 1 Bf = 0 0 -1 Cf =
-1 1 -1 Tf =
-1 0 0 0 1 0 0 0 -1
输入能配置的极点组成的向量
由上述能控性分解可见,极点-1是不能控的,另外两个极点是能控的。可判断利用状态反馈第一组极点可以配置,而第二组极点不能配置。在命令窗中输入第一组极点中能控的两个极点,即 [-2 -2] 返回
Pc =
-2 -2 K =
-1 1 5 4.状态观测器 1) 全维状态观测器
如果线性定常系统?(A,B,C)完全能观测,则可构造全维(基本)观测器。全维(基本)状态观测器的状态方程为
???(A?LC)x??Bu?Ly (3-5-11) x观测器的反馈矩阵L为L??0T*?01?(Vo)T?1其中Vo为系统的能观测矩阵。fo(A),
*Tfo(s)?(s??1)(s??2)?(s??n),其中?1,?2,…,?n 为期望的状态观测器的极点。
观测器设计是极点配置的对偶问题,故可利用函数acker( )和place( )进行求解。 例5-3已知系统的状态空间表达式为
??1???x?0
1??0?x????u ?2??1?32
y??20?x
设计一个状态观测器使其极点为-10,-10。
在命令窗中运行下列命令
>> A=[-1 1;0 -2];B=[0 1]';C=[2 0];p=[-10 -10];L=(acker(A',C',p))' 返回 L =
8.5000 32.0000
利用函数simobsv( )可以仿真状态观测器所观测到的状态。该函数的调用格式为
[Xo,X,t]?simobsv(G,L)
其中G为系统的状态空间模型,L为观测器的反馈矩阵。Xo为重构状态的阶跃响应,x为原系统状态的阶跃响应,t为函数自动选择的时间向量。该函数的程序如下 function [xo,x,t]=simobsv(G,L) %仿真观测器的状态 [y,t,x]=step(G);
G=ss(G);A=G.a;B=G.b;C=G.c;D=G.d; [y1,xo1]=step((A-L*C),B,C,D,1,t); [y2,xo2]=lsim((A-L*C),L,C,D,y,t);
xo=xo1+xo2;
现在仿真上面的求得的状态观测器的状态。运行下列命令 >> figure('pos',[50 50 200 150],'color','w');
[xo,x,t]=simobsv(ss(A,B,C,0),L);plot(t,x,'-k',t,xo,':r')
返回原系统和状态观测器的单位阶跃响应曲线,如图1。
图1 单位阶跃响应曲线 图2 反馈矩阵响应曲线 再选观测器的反馈矩阵为L??面的效果好。 2) 降维观测器
??2??,运行上述命令得到图2。可见此时的估计不如上?20?如果线性定常系统?(A,B,C)不完全能观测,且rank(C)?m,则存在n?m维降维
观测器。
??(A22?LA12)z?(A22?LA12)L?(A21?LA11)y?(B2?LB1)u z
33
??
??z?Ly (3-5-12) x2此时的渐近估计为
???x?y????Tx?T?1??T?x? (3-5-13) ?z?Ly???x2?
例5-4 已知系统的状态空间表达式为
?0???0x????6y?[1010?110]x
0??0????1x?0u ?????6???1??试求降维观测器,并使它的极点为?1??2?j23在命令窗中运行下列命令
>>A=[0 1 0; 0 0 1; -6 -11 -6]; B=[0 0 1]'; C=[1 0 0];
?2??2?j23。
五 极点配置和状态观测器
1. 基于极点配置和状态观测器的系统设计与MATLAB实现
通过采用极点配置的方法使系统的闭环极点配置在所期望的位置上,从而达到一定的性能指标要求。
极点配置问题是通过对状态反馈阵的选择,使闭环系统的极点配置在所期望的位置上。由于状态反馈不能改变系统的不可控模态,因此系统通过状态反馈可以任意配置闭环极点的必要条件为受控系统完全可控。下面阐述极点配置方法。
(1) 极点配置问题描述
设LTI系统:
??Ax?Bux
状态反馈极点配置即确定状态反馈控制:
u=-Kx+v
使状态反馈闭环系统:
34
??(A?BK)x?Bv x的极点为??1*?2*??n*?。
可以证明,对给定系统可以进行任意极点配置的充要条件是系统为完全能控。
(2) 极点配置算法
1) 相似转换算法
相似转换算法通过求取一个相似转换矩阵T,使系统具有期望的极点。 第1步 计算A的特征多项式
det(SI-A)=sn+an-1sn-1+…+a1s1+a0
第2步 计算由??1*?2*??n*?确定的多项式
?(s)?(s??1)(s??2)?(s??n)?s?an?1s****n*n?1???a1s?a0*1*
第3步 计算
K*?[a0?a0,*a1?a1,*?,an?1?an?1]*
第4步 计算变换阵P:
?1?an?1n?1P?[AB,?,AB,B]?????a10?????1????an?1
第5步 求反馈增益矩阵K
K=K*P-1
2) Ackermann公式,该方法通过计算矩阵A的特征多项式来求取反馈增益矩阵K。 步骤如下:
第1步 计算矩阵特征多项式的系数
?(s)?(s??1)(s??2)?(s??n)?s?an?1s****n*n?1???a1s?a0*1*
第2步 求
?(A)?A?an?1An*n?1???a1A?a0I
*1*第3步 计算增益矩阵K
K?(00?01)(B,AB,?,An?1B)?(A)
【例2-13】 已知系统∑(A,B,C)的状态方程为:
??2???x?4?3??3?x????u?9??1?
通过状态反馈使希望极点分别配置在λ1=-1+2j和λ2=-1-2j处,试确定状态反馈阵K。 解:根据前面介绍的进行极点配置的原理与步骤,利用MATLAB可以十分方便地实现
极点的配置这一过程。
1) 首先判断系统的可控性。在工作空间建立已知系统,应用系统可控性判断函数ctrb
35