倒立摆状态空间极点配置控制实验实验报告倒立摆实验.docx
《倒立摆状态空间极点配置控制实验实验报告倒立摆实验.docx》由会员分享,可在线阅读,更多相关《倒立摆状态空间极点配置控制实验实验报告倒立摆实验.docx(13页珍藏版)》请在冰点文库上搜索。
倒立摆状态空间极点配置控制实验实验报告倒立摆实验
倒立摆状态空间极点配置控制实验实验报告倒立摆实验
《现代控制理论》实验报告
状态空间极点配置控制实验
一、实验原理
经典控制理论的研究对象主要是单输入单输出的系统,控制器设计时一般需
要有关被控对象的较精确模型,现代控制理论主要是依据现代数学工具,将经典控制理论的概念扩展到多输入多输出系统。
极点配置法通过设计状态反馈控制器将多变量系统的闭环系统极点配置在期望的位置上,从而使系统满足瞬态和稳态性能指标。
1?
状态空间分析
对于控制系统X=AX+Bu
选择控制信号为:
u=-KX
式中:
X为状态向量(n维)u控制向量(纯量)
Anxn维常数矩阵BnX1维常数矩阵
求解上式,得到x(t)=(A-BK)x(t)方程的解为:
x(t)=e(A-BK)tx(0)状态反馈闭环控制原理图如下所示:
从图中可以看出,如果系统状态完全可控,K选择适当,对于任意的初始状态,当t趋于无穷时,都可以使x(t)趋于0。
2?
极点配置的设计步骤
1)检验系统的可控性条件。
2)从矩阵A的特征多项式卜宀*存严
来确定a1,a2,。
an的值。
3)确定使状态方程变为可控标准型的变换矩阵T:
T=MW
TOC\o“1-5"\h\z其中M为可控性矩阵,-:
'
T①“。
如1"31°°
jy—:
:
;;?
術100
|10■■-00
4)利用所期望的特征值,写出期望的多项式
0「川)@_(S_“■)=屮+同買T十。
十兔¥+%
5)需要的状态反馈增益矩阵K由以下方程确定:
k=底一叮%—jQ_込⑹_尙Jr“
二、实验内容
针对直线型一级倒立摆系统应用极点配置法设计控制器,进行极点配置并用Matlab进行仿真实验。
三、实验步骤及结果
根据直线一级倒立摆的状态空间模型,以小车加速度作为输入的系统状态方程为:
00101000
0
0
1
0
1000
'0010
41
可以取I1。
则得到系统的状态方程为:
000I\000n__y0__■c'0
0
0
0
I
\
0
0
0
n75
1
0
0
0
y
0
1
0
1
0
0
■c'
0
0
1)
0
0
0
0
1
1
0
0
0
7.35
0
C.75
于是有:
1000
0010
直线一级倒立摆的极点配置转化为:
对于如上所述的系统,设计控制器,要求系统具有较短的调整时间(约3
秒)和合适的阻尼(阻尼比?
=0.5)。
采用四种不同的方法计算反馈矩阵K
方法一:
按极点配置步骤进行计算。
1)检验系统可控性,由系统可控性分析可以得到,系统的状态完全可控性矩阵的秩等于系统的状态维数(4),系统的输出完全可控性矩阵的秩等于系统输出向量y的维数⑵,所以系统可控。
状态变辰
倒立摆极点配置原理图
2)计算特征值
根据要求,并留有一定的裕量(设调整时间为2秒),我们选取期望的闭
环极点s=卩i(i=1,2,3,4),其中:
/q=-10,=—10-f=—2+j2翻、/如=—2-j2畐
其中,卩3,卩4使一对具有匚的主导闭环极点,卩1,卩2位于主导闭环极点的左边,因此其影响较小,因此期望的特征方程为:
(S-74)(5-)(5)(5_角)=(J+10XJ++2-2^/J/S+2+■Z^J)
=/十24十^I96s2+720^-^1600
因此可以得到:
磅=241旳"販咕叫勺="00
因此有由系统的特征方程:
因此有
S
-1
0
0
0
S
0
0
0
0
S
-1
0
0
-7.35
S
\sI-A
码=0*业二一7?
35,為=0.a4=0
系统的反馈增益矩阵为:
K=[cr4—心匕3-a^:
a2一如口_q]r'
确定使状态方程变为可控标准型的变换矩阵T:
T=MW
式中:
M=
0
1.0000
0
0
1.0000
0
0
0
0
0.7500
0
5.5125
0.7500
0
5.5125
0
0-7.3500-0.00001.0000
-7.3500-0.00001.0000-0.00001.0000001.0000000
于是可以得到:
-7.3500-0.00001.00000
0-7.3500-0.00001.0000
0-0.00000.75000
-0.00000-0.00000.7500-7.__0-0.0000
-0.0000
0-0.00000.7500
-7.3500
00-0.0000
-0.0000-7.3500-0.0000
-0.0000-7.3500-0.0000
1.0000-0.00000.7500-0.0000
1.0000-0.0000
0.7500-0.0000
01.000000.7500于是有状态反馈增益矩阵K为:
01.000000.7500
于是有状态反馈增益矩阵K为:
K=-217.6871-97.9592561.3828162.6122
得到控制量为:
H-__-217.6871X■+97.9592-561*3823ie2-6122°以上计算可以采用MATLAB编程计算。
程序如下:
clear;
A=[0100;0000;0001;007.350];
B=[0100.75]';
C=[1000;0010];
D=[00]';
J=[-10000;0-1000;00-2-2*sqrt(3)*i0;
000-2+2*sqrt(3)*i];
pa=poly(A);pj=poly(J);
M=[BA*BAA2*BAA3*B];
W=[pa⑷pa(3)pa
(2)1;pa(3)pa
(2)10;
pa
(2)100;1000];
T=M*W;
K=[pj(5)-pa(5)pj(4)-pa⑷pj(3)-pa(3)pj
(2)-pa
(2)]*inv(T)
Ac=[(A-B*K)];
Bc=[B];Cc=[C];De=[D];
T=0:
0.005:
5;
U=0.2*ones(size(T));
Cn=[1000];
Nbar=rscale(A,B,Cn,0,K);
Bcn=[Nbar*B];
[Y,X]=lsim(Ac,Bcn,Cc,Dc,U,T);
plot(T,X(:
1),'-')
holdon;
plot(T,X(:
2),'-.')
holdon;
plot(T,X(:
3),'.')
holdon;
plot(T,X(:
4),'-')
legend('CartPos','CartSpd','PendAng','PendSpd')
运行得到以下结果:
可以看出,在给定系统干扰后,倒立摆可以在2秒内很好的回到平衡位置,满足设计要求。
方法二:
也可以通过下面的方法进行极点配置计算:
矩阵(A—BK的特征值是方程式|Is-(A-BK)|=0的根:
0
0
0
~0
1
0
\)
_0~
0
S
0
0
0
0
0
0
1
一
+
0
0
S
0
0
0
0
1
0
0
0
0
S
0
0
a
0
b
这是s的四次代数方程式,可表示为
s4+(辰+十(-a+他十bkjf一一%=0
适当选择反馈系数k1,k2,k3,k4系统的特征根可以取得所希望的值把四个特征根入1,入2,入3,入4设为四次代数方程式的根,则有
■j4_(人++乂勺+彳斗)J
+{/[川丫+Xt/+X+Z.X|+/.]交予+川丫乂彳、$"
—{+-j__A+z^.|Aj/tj+/1斗右2?
)>S
+/C;/」=0
比较两式有下列联立方程式
耗、+3/^4=—I止]十兄r+乂日+虫斗)
-a+J^=右厶+几2久3+易人亠人右+2j23+人人
-ak^=—+久2久、丄4+久4+人4乂1几2)
—应忙]=Z|Z?
Z-ZJ
如果给出的入1,入2,入3,入4是实数或共轭复数,则联立方程式的右边
全部为实数。
据此可求解出实数ki,k2,k3,k4
当将特征根指定为下列两组共轭复数时
又a=7.35,b=0.75
利用方程式可列出关于ki,k2,k3,k4的方程组:
心十°?
衍忍=24
—7.3巨++Q,75居=196
-7,35^2=720
-7.3晦=1600
求解后得
K=-217.6871-97.9592561.3828162.6122
即施加在小车水平方向的控制力u:
可以看出,和方法一的计算结果一样
程序如下:
clear;
symsasbk1k2k3k4;
A=[0100;
0000;
0001;
00a0];
B=[010b]';
SS=[s000;
0s00;
00s0;
000s];
K=[k1k2k3k4];
J=[-10000;
0-1000;
00-2-2*sqrt(3)*i0;
000-2+2*sqrt(3)*i];
ans=A-B*K;
P=poly(ans)
PJ=poly(J)
运行结果为:
P=
xA4+3/4*k4__A3-147/20__A2+3/4__A2*k3+k2__A3-147/20__k2+k1__A2-147/20*k1
PJ=1241967201600
方法三:
利用爱克曼公式计算。
爱克曼方程所确定的反馈增益矩阵为:
K=[o0。
0。
才We⑷
其中
利用MATLAB可以方便的计算,程序如下:
clear;
A=[0100;
0000;
0001;
007.350];
B=[0100.75]';
M=[BA*BAA2*BAA3*B];
J=[-10000;
0-1000;
00-2-2*sqrt(3)*i0;
000-2+2*sqrt(3)*i];
phi=polyvalm(poly(J),A);
K=[0001]*inv(M)*phi
运行结果为:
K=-217.6871-97.9592561.3828162.6122
方法四:
可以直接利用MATLAB的极点配置函数[K,PREC,__]=PLACE(A,B,P)来计算。
程序如下:
clear;
A=[0100;
0000;
0001;
007.350];
B=[0100.75]';
P=[-10-0.0001*j,-10+0.0001*j,-2-2*sqrt(3)*j,-2+2*sqrt(3)*j];
K=place(A,B,P);
运行结果:
K=-217.6871-97.9592561.3828162.6122