1. 状态观测器分类
在现代控制理论中,控制系统的基本结构和经典控制理论一样,仍然是由受控对象和反馈控制器两部分构成的闭环系统。不过在经典理论中习惯于采用输出反馈,而在现代控制理论中则更多地采用状态反馈。由于状态反馈能提供更丰富的状态信息和可供选择的自由度,因而使系统容易获得更为优异的性能。
1.1 基于状态反馈的控制器设计
状态反馈是将系统的每一个状态变量乘以相应的反馈系数,然后反馈到输入端与参与输入相加形成控制律,作为受控系统的控制输入。图1是一个多输入—多输出系统状态反馈的基本结构。
图1 多输入多输出系统状态反馈结构图
系统状态方程如下:
(1)
式中; ;;、、、。若,则受控系统简化为:
(2)
简记为
状态线性反馈控制律为
(3)
其中, 维参考输入, 维状态反馈系数阵或状态反馈增益阵。对单输入系统,为维行向量。
将(3)式代入(1)式整理可得状态反馈闭环系统的状态空间表达式如下:
(4)
如,则
(5)
简记为
闭环系统的传递函数矩阵为
(6)
比较开环系统与闭环系统可见,状态反馈阵的引入,并不增加系统的维数,但可通过的选择自由地改变闭环系统的特征值,从而使系统获得所要求的性能。
1.2 基于输出反馈的控制器设计
输出反馈是采用输出矢量构成线性反馈律。在经典控制理论中主要讨论这种反馈形式。图2示出多输入—多输出系统输出反馈的基本结构。
图2 多输入多输出系统输出反馈结构图
系统状态方程如下:
(7)
输出线性反馈控制律为
(8)
式中,维输出反馈增益阵。对单输出系统,为维列向量。闭环系统状态空间表达式可由式(7)代入(8)得:
(9)
整理得 :
(10)
再把式(10)代入式(7)求得
(11)
若,则
(12)
简记。由式(12)可见,通过选择输出反馈增益阵也可以改变闭环系统的特征值,从而改变系统的控制特性。
输出反馈系统的传递函数矩阵为
(13)
若受控系统的传递函数阵为
(14)
则和存在下列关系
(15)
或者
(16)
比较上述两种基本形式的反馈可以看出,输出反馈中的与状态反馈中的相当。但由于,所以可供选择的自由度远比小,因而输出反馈只能相当于一部分状态反馈。只有当时,才能等同于全状态反馈。因此,在不增加补偿器的条件下,输出反馈的效果显然不如状态反馈系统好。但输出反馈在技术实现上的方便性则是其突出优点。
2. 基于观测器的控制器
系统模型
(17)
假定系统是能控、能观的。使得闭环系统极点为的状态反馈控制律是。若系统状态不能直接测量,可以利用龙伯格观测器来估计系统的状态。
(18)
进而用来替代原来的控制。
将代入(18)式,可得利用状态估计值的反馈控制器如下:
(19)
基于观测器的输出反馈控制系统结构图3所示:
图3 基于观测器的状态反馈控制系统结构
由图3可知,系统增加了积分器,闭环系统是2n 阶的。
(1)若选择为闭环系统状态,则系统状态方程
(20)
(21)
写成矩阵向量形式:
(22)
定义误差向量:,则
(23)
其特征多项式为
(24)
(2)若选择为闭环系统状态,则系统状态方程
(25)
其特征多项式为
(26)
分离性原理 闭环系统的极点是极点配置单独设计产生的极点和由观测器单独设计产生的极点两部分组成。
3. 设计实例
系统状态空间模型的系数矩阵:
, ,
已知系统状态不能直接测量,试设计控制器,使得闭环系统渐近稳定。
控制器一:输出反馈控制器
输出反馈控制器:
系统闭环矩阵:
(27)
特征多项式:
结论:无论k取什么值,无法将两个闭环极点配置在左半开复平面。
控制器二:状态反馈控制器
第1步: 判断系统能控性和能观性
% 系统矩阵
A = [0 1; -1,0];
B = [1;0];
C = [1 0];
% 判断系统是否完全能控
E_con = ctrb(A,B); % 求解能控性矩阵
E_val_con = rank(E_con); % 根据能控性矩阵是否满秩判断能控性
E_obs = obsv(A,C); % 求解能观性矩阵
E_val_obs = rank(E_obs); % 根据能观性矩阵是否满秩判断能观性
根据上述结果可知,系统完全能控、能观。
第二步:设计状态反馈控制器
闭环矩阵:
(28)
特征多项式:
结论:选取,则闭环极点。
控制器三:基于观测器的状态反馈控制器
控制器二是在系统状态可测的情况下求得的,如果系统状态不可测,则需要设计相应状态观测器。假设观测器的两个极点为均为-2,则根据极点配置方法,可得观测器增益矩阵,则观测器模型可写为:
(29)
根据分离性原理,由以上分别得到的状态反馈和观测器增益矩阵可构造基于观测器的输出反馈控制器。
(30)
系统的动态特性
(31)
检验系统的稳定性,对象和误差的初始条件
,
利用MATLAB实现的代码如下:
1. 求观测器增益系数L和控制器增益系数K
clc
clear all
% 系统矩阵
A = [0 1; -1,0];
B = [1;0];
C = [1 0];
D = 0;
x0 = [1;0]; % 初值
e0 = [0.5;0];
G=ss(A,B,C,D);
%判断系统是否完全能控
E_con = ctrb(A,B); % 求解能控性矩阵
E_val_con = rank(E_con); % 根据能控性矩阵是否满秩判断能控性
E_obs = obsv(A,C); % 求解能观性矩阵
E_val_obs = rank(E_obs); % 根据能观性矩阵是否满秩判断能观性
p_L = [-2;-2]; % 观测器期望极点
L = (acker(A',C',p_L))'; % 观测器增益系数L
p_K = [-0.5+1.32i;-0.5-1.32i]; % 系统期望极点
K = place(A,B,p_K); % 状态反馈增益系数K
fprintf('观测器增益系数 L=\n')
disp(L);
fprintf('控制器增益系数 K=\n')
disp(K);
2. main.m
clc
clear all
x0 = [1;0;0.5;0];
[t,x] = ode45(@gcq,[0,10],x0);
figure;
hold off;
plot(t,x(:,1),'r-');
hold on;
plot(t,x(:,3),'b-');
figure;
plot(t,x(:,2),'r-');
hold on;
plot(t,x(:,4),'b-');
3. gcq.m
function dx = gcq(t,x)
%u = sin(t);
K = [1,-1];
u = -K*[x(3);x(4)];
y = x(1);
dx(1) = x(2) + u;
dx(2) = -x(1);
dx(3) = -4*x(3) + x(4) + u + 4*y;
dx(4) = -4*x(3) + 3*y;
dx = dx';
系统曲线如下: