线性定常系统的能控性和能观测性.docx
《线性定常系统的能控性和能观测性.docx》由会员分享,可在线阅读,更多相关《线性定常系统的能控性和能观测性.docx(25页珍藏版)》请在冰豆网上搜索。
线性定常系统的能控性和能观测性
线性定常系统的能控性和能观测性
一、实验设备
PC计算机,MATLAB软件,控制理论实验台。
二、实验目的
〔1〕学习系统状态能控性、能观测性的定义及判别方法;
〔2〕通过用MATLAB编程、上机调试,掌握系统能控性、能观测性的判别方法,掌握将一般形式的状态空间描述变换成能控标准形、能观标准形。
〔3〕掌握能控性和能观测性的概念。
学会用MATLAB判断能控性和能观测性。
〔4〕掌握系统的结构分解。
学会用MATLAB进行结构分解。
〔5〕掌握最小实现的概念。
学会用MATLAB求最小实现
三、实验原理
〔1〕参考教材P117~118“利用MATLAB判定系统能控性〞
P124~125“利用MATLAB判定系统能观测性〞
〔2〕MATLAB现代控制理论仿真实验根底
〔3〕控制理论实验台使用指导
四、实验内容
〔1〕系统状态空间描述如下
'0
2
-T
T
X—
5
1
2
r+
0
-2
■
0
0
1
-i
>=[110]x
(1)判断系统状态的能控性和能观测性,以及系统输出的能控性。
说明状态能
控性和输出能控性之间有无联系。
代码:
A=[02-1;512;-200];
B=[1;0;-1];
C=[1,1,0];
D=[0];
Uc=[B,A*B,AA2*B,AA3*B];
rank(Uc)%能控性判断
Uo=[C,C*A,C*AA2,C*AA3];
rank(Uo)%判断能观性
Uco=[C*B,C*A*B,C*AA2*B,C*AA3*B];
rank(Uco)%判断输岀能控性
»LmtitLedo
arw■
3
QTL:
■
1
aiiji-
1
fx»
(2)令系统的初始状态为零,系统的输入分别为单位阶跃函数和单位脉冲函数。
用MATLAB函数计算系统的状态响应和输出响应,并绘制相应的响应曲线。
观察
和记录这些曲线。
当输入改变时,每个状态变量的响应曲线是否随着改变?
能否根据这些曲线判断系统状态的能控性?
单位阶跃输入:
代码:
A=[0,2,-1;5,1,2;-2,0,0];
B=[1;0;-1];
C=[1,1,0];
D=[0];
Uc=[B,A*B,AA2*B,AA3*B];
rank(Uc)%判断状态能控性
Uo=[C,C*A,C*AA2,C*AA3];
rank(Uo)%判断能观性
Uco=[C*B,C*A*B,C*AA2*B,C*AA3*B];
rank(Uco)%判断输岀能控
G=ss(A,B,C,D);
t=[0:
.04:
2];
%单位阶跃输入
'm')%状态及输岀响应曲线
[y,t,x]=step(G,t);
plot(t,x,'b',t,y,
legend('original
targetpositions','original
targetpositions'
,'丫')
X
Figure1
单位脉冲输入:
代码:
A=[0,2,-1;5,1,2;-2,0,0];
B=[1;0;-1];
C=[1,1,0];
D=[0];
G=ss(A,B,C,D);
t=[0:
.04:
2];
[y,t,x]=impulse(G,t)%单位脉冲输入
plot(t,x.
'b',t,y,'m')%犬态及输岀响应曲线
legend('original
targetpositions','original
targetpositions'
,'丫')
1.05*03•
0.0010
0.0012
0.0014
o.ooie
0.0018
0.0021
0.0024
0.0028
0.0033
0.0038
0.0013
0.0050
O.G05?
0.0066
0.0076
0.0088
0.0101
0.0117
0.0135
0.0155
0.0179
0.0206
0.0338
0.0274
0.0316
0.0364
0.0420
0.0485
0.0559
0.0644
0.0400
0.0800
0.1200
0.1600
0.2000
0.2400
0.2800
0.3200
0.3600
0.4000
0.4400
0.4800
0.5200
0.3C00
0.6000
0.6400
0.6BOO
0.7200
0.7600
0.8000
0.8400
0.8BOO
0.9200
0.9600
1.0000
1.0400
1.0800
1.1200
1.1600
1.2000fxL.24OO
1.oooo
0
-1.0000
1.0465
0.12X
・1.0818
1.1066
0.2653
・l.L«78
1.1813
0.4009
・1.2592
1.2720
0.5606
・1.3572
1.3802
0・73M
・1.4632
1.5079
0.9390
-1.5786
1.6BT6
1.16&9
-1.7051
L83L9
1.4242
-1.8445
2.0342
l.*154
-1.9S89
2.2683
2.0578
-2.LT08
2.5387
2.44C«
-2.3«28
2.8506
2.8939
-2.5T81
3.2101
3.4092
-2.8202
MOW
4.O033
Y.no3?
4.1010
4.6S87
-3.4017
4.6499
5.4797
-3.7513
5.2818
6.3927
-4.147&
&W91
7.4469
-4.5989
6.8464
8.6641
-6.1123
7.3103
10.0656
-5.6977
8.9202
11.6926
3«58
10.1583
13.5666
-7.1294
11.6704
15."304
-8.0028
13.3660
18.2288
-fi.0026
15.3194
21.1132
-10.U82
17.5701
24.4431
・11.1616
20.1636
28.2873
72X5
23.1523
32."219
-14.6931
26.sn
37.8472
-LC.6851
A
30.5677
43.756«
-18.
当输入改变时,每个状态变量的响应曲线并没有随着改变
(3)将给定的状态空间表达式变换为对角标准型,判断系统的能控性和能观测
性,与1)的结果是否一致?
为何?
代码:
A=[0,2,-1;5,1,2;-2,0,0];
B=[1;0;-1];
C=[1,1,0];
D=[0];
G=ss(A,B,C,D);
G1=canon(G,'model')
A1=[-3.89,0,0;0,3.574,0;0,0,0.8234];
B1=[0.389;-0.7421;-0.6574];
C1=[-0.2313,-1.37,-0.1116];
D1=[0];
Uc=[B,A*B,AA2*B,AA3*B];
rank(Uc)%判断状态能控性
Uo=[C,C*A,C*AA2,C*AA3];
rank(Uo)%判断能观性
>ybhJalweIdui.Jiaobj^hi-dUcIn
GL-
a■
jlLx3
xl-3.39B00
£D15740
xlD00.S231
b—
ul
xlQ.3的
曲-0.7451
xJ-g.€-574
常Iz?
w3
yl-Q.23L3-LJ7-0.L316
ul
Centinuoiis-tmestjat^ss-ae?
&od*L.
sz:
s-
aj^s=
系统的能控性和能观测性,与1)的结果是一致的
(4)令3)中系统的初始状态为零,输入分别为单位阶跃函数和单位脉冲函数。
用MATLAB函数计算系统的状态响应和输出响应,并绘制响应的曲线。
观察和记
录这些曲线。
当输入改变时,每个状态变量曲线是否随着改变?
能否根据这些曲线判断系统以及各状态变量的能控性?
不能控和能控状态变量的响应曲线有何不同?
单位阶跃输入:
代码:
A=[0,2,-1;5,1,2;-2,0,0];
B=[1;0;-1];
C=[1,1,0];
D=[0];
G1=ss(A,B,C,D);
t=[0:
.04:
3];
[y,t,x]=step(G1,t)
%单位脉冲输入
plot(t,x,
'b',t,y,'m')%犬态及输岀响应曲线
,'丫')
legend('original
targetpositions','original
targetpositions'
X
单位脉冲输入:
A=[0,2,-1;5,1,2;-2,0,0];
B=[1;0;-1];
C=[1,1,0];
D=[0];
G=ss(A,B,C,D);
G1=canon(G,'model')t=[0:
.04:
2];
[y,t,x]=impulse(G,t)
%单位脉冲输入
plot(t,x,
'b',t,y,'m')%犬态及输岀响应曲线
legend('original
targetpositions','original
targetpositions'
,'丫')
输入改变时,每个状态变量曲线并没有随着改变。
(4)根据2)和4)所得曲线能否判断系统状态以及各状态变量的能观测性?
答:
能观性表述的是输出y(t)反映状态变量x(t)的能力,与控制作用没有直接关系。
⑴如下和所描述的系统
系统
>=1-1一比
■-1
0
0
-?
Q
0
0■
0
~2
I
x=\
x+
0
0
-2
0
0
0
0
0
-5
_0
^=[1010^
(1)将给定的状态空间模型转换为传递函数模型。
令初始状态为零,用MATLAB
计算系统的单位阶跃输出响应,绘制和记录相应的曲线。
代码:
A=[-3-4;-20];B=[5;1];C=[-1-1];D=[0];
G=ss(A,B,C,D);
G1=tf(G)
t=[0:
.04:
5];
[y,t,x]=step(G,t)
%单位阶跃输入
plot(t,x,'b',t,y,
'm')%犬态及输岀响应曲线
legend('original
targetpositions','originaltargetpositions','X','丫')
»ddAsijk■jjlJikiluXluDg•ij増
=
-■63E+11
3*3-I-33-0
②
代码:
A=[-1000;0-300;00-20;000-5];
B=[2;1;0;0];
C=[1010];
D=[0];
G=ss(A,B,C,D);
G1=tf(G)
t=[0:
.04:
5];
[y,t,x]=step(G,t);%单位阶跃输入
plot(t,x,'b',t,y,'m')%犬态及输岀响应曲线
legend('originaltargetpositions','originaltarget
positions','originaltargetpositions','X','丫')
5+1
CouLinuu.u^"Lmelxfundiim.
11
(2)按能控性分解给定的状态空间模型并记录所得的结果,然后再将其转换为
传递函数模型。
它与1)中所得的传递函数模型是否一致?
为什么?
令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应曲线。
这一曲线与1)中的输出曲线是否一致?
为什么?
A=[-3-4;-20];B=[5;1];C=[-1-1];D=[0];
[AcBcCcTcKc]=ctrbf(A,B,C);
G=ss(Ac,Bc,Cc,O);
G1=tf(G)
t=[0:
.04:
5];
[y,t,x]=step(G,t);%单位阶跃输入
plot(t,x,'b',t,y,'m')%犬态及输岀响应曲线
legend('originaltargetpositions'
,'丫'〕
»Untitled]?
fS畔il
Lnni1nu口u.s-ilin聲tranrfe-rfuncti□tl
Cl=
按能控性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型,它与1〕中所得的传递函数模型一致的。
令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应曲线这一曲线与1〕中的输出曲线是一致的。
代码:
A=[-1000;0-300;00-20;000-5];
B=[2;1;0;0];
C=[1010];
D=[0];
[AcBcCcTcKc]=ctrbf(A,B,C);
G=ss(Ac,Bc,Cc,0);
G1=tf(G)
t=[0:
.04:
5];
[y,t,x]=step(G,t);%单位阶跃输入
plot(t,x,'b',t,y,'m')%状态及输出响应曲线
legend('originaltargetpositions','originaltarget
positions','originaltargetpositions','X','Y')
"*Figure1
□
阳尸癲iE亘毛W仇WEZr/fl
肾旳i卜l
1
-J□J|®权人-1DDO]■
□
1a
16
1,4
12
1
D8
»Untklled]4
G]-
Continu^uf-tire电rHTLiferfunEtion.
A»
按能控性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型,它与1〕中所得的传递函数模型是不一致的。
令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应曲线这一曲线与1〕中的输出
曲线是不一致的。
〔3〕按能观测性分解给定的状态空间模型并记录分解所得的结果,然后再将其
转换为传递函数模型。
它与1〕中的传递函数模型是否一致?
为何?
令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应曲线。
这一曲线与1〕中的输出曲线是否一致?
A=[-3-4;-20];B=[5;1];C=[-1-1];D=[0];
[AoBoCoToKo]=obsvf(A,B,C);
G=ss(Ao,Bo,Co,0);
G1=tf(G)
t=[0:
.04:
5];
[y,t,x]=step(G,t)%单位阶跃输入
plot(t,x,'b',t,y,'m')%犬态及输岀响应曲线
legend('originaltargetpositions','originaltarget
positions','originaltargetpositions','X','丫')
CantLnU.aUjtLa?
!
Ltuhlfrtfutic:
Liact.
按能观测性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型,它与1〕中所得的传递函数模型一致的。
令初始状态为零,用MATLAB
计算系统的单位阶跃输出响应,并绘制和记录相应曲线这一曲线与1〕中的输出
曲线是不一致的
②
代码:
A=[-1000;0-300;00-20;000-5];
B=[2;1;0;0];
C=[1010];
D=[0];[AoBoCoToKo]=obsvf(A,B,C);
G=ss(Ao,Bo,Co,0);
G1=tf(G)
t=[0:
.04:
5];
[y,t,x]=step(G,t)%单位阶跃输入
plot(t,x,'b',t,y,'m')%犬态及输岀响应曲线
legend('originaltargetpositions','originaltarget
positions','originaltargetpositions','X','丫')
Figure1
按能观测性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型,它与1〕中所得的传递函数模型不一致的。
令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应曲线这一曲线与1〕中的输出曲线是不一致的。
4〕按能控性能观测性分解给定的状态空间模型并记录分解所得的结果,然后再将其转换为传递函数模型。
它与1〕中的传递函数模型是否一致?
为何?
令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应的曲线这一曲线与1〕中的输出曲线是
否一致?
为什么?
代码:
A=[-3-4;-20];B=[5;1];C=[-1-1];D=[0];
[AkBkCkTk]=kalmdec(A,B,C);
G=ss(Ak,Bk,Ck,O);
G1=tf(G)
t=[0:
.04:
5];
[y,t,x]=step(G,t)%单位阶跃输入
plot(t,x,'b',t,y,'m')%犬态及输岀响应曲线
legend('originaltargetpositions','X','丫')
I
nnhtLilian
hi七3£-S
function.
按能控性能观测性分解给定的状态空间模型并记录所得的结果,然后再将其转换
为传递函数模型,它与1〕中所得的传递函数模型是一致的。
令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应曲线这一曲线与
1〕中的输出曲线是不一致的。
,'丫')
②
代码:
A=[-1000;0-300;00-20;000-5];
B=[2;1;0;0];
C=[1010];
D=[0];
[AkBkCkTk]=kalmdec(A,B,C);
G=ss(Ak,Bk,Ck,0);
G1=tf(G)
[y,t,x]=step(G,t)%单位阶跃输入
plot(t,x,'b',t,y,'m')%犬态及输岀响应曲线
legend('originaltargetpositions','X'
按能观测性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型,它与1)中所得的传递函数模型不一致的。
令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应曲线这一曲线与1)中的输出曲线是一致的。
(3)系统
■-1
0
0
0
2
0
-3
0
0
r+
1
0
0
-2
0
0
_Q
0
0
0
¥
Ope
1
卫十1
(s+1X^+2)(j+3)
1)求最小实现(用函数minreal()。
(a)
代码:
A=卜1,0,0,0;0,-3,0,0;0,0,-2,0;0,0,0,-4];
B=[2;1;0;0];
C=[1,0,1,0];
D=0;
G=ss(A,B,C,D);
Gm=minreal(G)
xl
xl-1
b吕
ul
xl2
亡■
X1
rl1
d*I
ul
yio
C:
ntinuo'iz-tneSL:
3t=-Epaceiod=1・
齐rnrfcn^r11"刘i
(b)
num=[1,1];
den=[1,6,11,6];
G=tf(num,den);
G1=ss(G)
Gm=minreal(G1)
»Umitled?
!
CL=
3L=
xl
3L1
x3
5-
xl
T-2
亠75
-1.5
鼠=
d
a
0
:
-:
2
0
1
0
Ml
-Q:
和-»
A-rJ9»
5,9:
»
勺111
h—
ut
b=
0.5
ul
y:
2
0
xl
D.34B2
y.3
0
m2
-0.34S2
C"
c■
tL
右
xl
00.6
a-5
yl
o*5ms
d-
d■
诅1
U1
yl
0
yl
0
匚ufttinuius-iie'S
CwtLnUl9U3-tLXl«
Eiatcra.c«HdfiL
1
mg泌
1
A
»U^nicltd2:
|
2)判断所得系统的能控性和能观测性
(a)
代码:
A=[-1,0,0,0;0,-3,0,0;0,0,-2,0;0,0,0,-4];B=[2;1;0;0];C=[1,0,1,0];D
=0;
G=ss(A,B,C,D);
Gm=minreal(G)
Uc=[B,A*B,AA2*B,AA3*B];
rank(Uc)%判断能控性
Uo=[C,C*A,C*AA2,C*AA3];
rank(Uo)%判断能观性
d*
ul
ylo
Centziludlle-tzla3tat=-spaceu:
del・
an=
2
aas二
1
亠*\x.te—4=—r_-an
(b)
代码:
num=[1,1];
den=[1,6,11,6];
G=tf(num,den);
G1=ss(G)
Gm=minreal(G1)
A=[-6-2.75-1.5;400;010];