实 验 报 告
课程 线性系统理论基础 实验日期 2016年 6月 6 日 专业班级 学号 同组人 实
验
名
称
全
维
状
态
观
测
器
的
设
计
评分
批阅教师签字
一、实验目的
1. 学习用状态观测器获取系统状态估计值的方法,了解全维状态观测器的极点对状态的估计误差的影响;
2. 掌握全维状态观测器的设计方法;
3. 掌握带有状态观测器的状态反馈系统设计方法。
二、实验容
开环系统⎩
⎨⎧=+=cx y bu Ax x
,其中
[]0100001,0,10061161A b c ⎡⎤⎡⎤⎢⎥⎢⎥===⎢⎥⎢⎥⎢⎥⎢⎥--⎣⎦⎣⎦
a) 用状态反馈配置系统的闭环极点:5,322-±-j ; b) 设计全维状态观测器,观测器的极点为:10,325-±-j ; c) 研究观测器极点位置对估计状态逼近被估计值的影响; d) 求系统的传递函数(带观测器及不带观测器时);
绘制系统的输出阶跃响应曲线。
三、实验环境
MATLAB6.5
四、实验原理(或程序框图)及步骤
利用状态反馈可以使闭环系统的极点配置在所希望的位置上,其条件是必须对全部状态变量都能进行测量,但在实际系统中,并不是所有状态变量都能测量的,这就给状态反馈的实现造成了困难。
因此要设法利用已知的信息(输出量y和输入量x),通过一个模型重新构造系统状态以对状态变量进行估计。
该模型就称为状态观测器。
若状态观测器的阶次与系统的阶次是相同的,这样的状态观测器就称为全维状态观测器或全阶观测器。
设系统完全可观,则可构造如图4-1所示的状态观测器
图4-1 全维状态观测器
为求出状态观测器的反馈ke增益,与极点配置类似,也可有两种方法:
方法一:构造变换矩阵Q,使系统变成标准能观型,然后根据特征方程求出k e ;
方法二:是可采用Ackermann公式:
[]T o
e Q A k 1000)(1
-Φ=,其中O Q 为可观性矩阵。
利用对偶原理,可使设计问题大为简化。
首先构造对偶系统
⎩⎨⎧=+=ξ
ηξξ
T
T T b v c A 然后可由变换法或Ackermann 公式求出极点配置的反馈k 增益,这也可由MATLAB 的place 和acker 函数得到;最后求出状态观测器的反馈增益。
五、程序源代码、实验数据、结果分析 (a )源程序:
A=[0 1 0;0 0 1;-6 -11 6];
B=[0;0;1];
C=[1 0 0];D=0;
P1=[-2+2*sqrt(3)*i;-2-2*sqrt(3)*i;-5]; K1=place(A,B,P1)
sysnew=ss(A-B*K1,B,C,D)
运行结果:
K1 =
74.0000 25.0000 15.0000
a =
x1 x2 x3
x1 0 1 0
x2 0 0 1 x3 -80 -36 -9
b = u1
x1 0 x2 0
x3 1
c = x1 x2 x3
y1 1 0
d = u1
y1 0 (b )源程序:
A=[0 1 0;0 0 1;-6 -11 6];
B=[0;0;1];
C=[1 0 0];D=0;
P2=[-5+2*sqrt(3)*i;-5-2*sqrt(3)*i;-10];
K2=acker(A',C',P2);L=K2'
Anew=A-L*C
运行结果:
L =
26
282
1770
Anew =
-26 1 0
-282 0 1
-1776 -11 6
(c)研究观测器极点位置对估计状态逼近被估计值的影响:观测器极点距离虚轴越近,估计状态逼近被估计值得速度越快。
(d)不带观测器:
源程序:
A=[0 1 0;0 0 1;-6 -11 6];
B=[0;0;1];
C=[1 0 0];D=0;
P1=[-2+2*sqrt(3)*i;-2-2*sqrt(3)*i;-5];
K1=place(A,B,P1)
sysnew=ss(A-B*K1,B,C,D);
[num,den]=ss2tf(A-B*K1,B,C,D);
Gb=tf(num,den)
step(Gb)
grid on;
title('不带观测器的系统的阶跃响应曲线');
运行结果:
K1 =
74.0000 25.0000 15.0000
Transfer function:
7.105e-015 s^2 + 1.208e-013 s + 1
--------------------------------------------
s^3 + 9 s^2 + 36 s + 80
带观测器:
源程序:
A=[0 1 0;0 0 1;-6 -11 6];
B=[0;0;1];
C=[1 0 0];D=0;
P1=[-2+2*sqrt(3)*i;-2-2*sqrt(3)*i;-5];
K1=place(A,B,P1);
sysnew=ss(A-B*K1,B,C,D);
P2=[-5+2*sqrt(3)*i;-5-2*sqrt(3)*i;-10];
K2=acker(A',C',P2);L=K2';
An=[A -B*K1;L*C A-B*K1-L*C]
Bn=[B;B]
Cn=[C 0 0 0]
Dn=0;
[num,den]=ss2tf(An,Bn,Cn,Dn);
Go=tf(num,den)
step(Go)
grid on;
title('带观测器的系统的阶跃响应曲线');
运行结果:
An =
1.0e+003 *
0 0.0010 0 0 0 0
0 0 0.0010 0 0 0
-0.0060 -0.0110 0.0060 -0.0740 -0.0250 -0.0150
0.0260 0 0 -0.0260 0.0010 0
0.2820 0 0 -0.2820 0 0.0010
1.7700 0 0 -1.8500 -0.0360 -0.0090
Bn =
0 1 0 0 1
Cn =
1 0 0 0 0 0
Transfer function:
-1.137e-013 s^4 + s^3 + 20 s^2 + 137 s + 370 -------------------------------------------------------------------------------
s^6 + 29 s^5 + 353 s^4 + 2403 s^3 + 9862 s^2 + 2.428e004 s + 2.96e004
Time (sec)
A m p l i t u d e
结果分析:
σ%=10.8% tp=1.15s ts=1.63s
原系统方框图
Gain2 10
原系统阶跃响应
加观测器的方框图:
Scope1:
Scope2:
Scope3:。