二级倒立摆系统的控制与仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二级倒立摆系统的控制与仿真
一、引言
在计算机参与的具有联系受控对象的控制系统中,有必要对联系控制系统设计数字控制器的必要,一般对于联系的控制对象设计数字控制器的方法有:第一种是应用联系系统理论得到的联系控制规律,再将控制规律离散化,用控制器实现,第二种是将联系的控制对象离散化,用离散控制理论设计控制器参数,数字再设计就是根据连续系统及相应的控制规律如何重新设计对应的离散系统与相应的离散控制规律。我们采用的是最优等价准则、双线性变换法、平均增益法进行数字再设计。
二、LQR控制器设计
(1) 二级倒立摆系统的状态空间模型
设线性定常系统为
x’=A*x(t)+B*u(t),y=C*x(t)
其初始条件为x(t)=x0;
其中:A=[0,1,0,0;40,0,0,0;0,0,0,1;-6,0,0,0];B=[0;-2;0;0.8];
C=[1,0,0,0;0,0,1,0]
(2) 系统的能控性判定
n=size(A); Tc=ctrb(A,B); nc=rank(Tc)
n=6 6 nc=6
从运行结果可知,系统的阶次为6,能控性矩阵的秩也为6,因此系
统是能控的。
(3) 系统的能观性判定
To=obsv(A,C);no=rank(To)
no=6
从运行结果可知,能观性矩阵的秩为6,与系统的阶次相等,因此系统是能观测的。
(4) LQR控制设计
基于一级倒立摆系统具有能控性和能观性,因此可采用LQR进行控制,经大量反复试验和仿真,选取R=0.2,
Q=[1 0 0 0 0 0;0 64 0 0 0 0;0 0 256 0 0 0;0 0 0 0 0 0;0 0 0 0 0 0;0 0 0 0 0 0];
F=lqr(A,B,Q,R)得到:
F =
2.2361 106.6465 -155.4620 5.1719 4.9639 -24.5330
三、仿真曲线
采用LQR控制方式,设初始状态为x(0)=[1,-1,0,0]’,在相同采样周期T下应用数字再设计方法对一级倒立摆系统进行仿真,其中F(T)分别取为:
1. F(T)=F1(T)=F
2. F(T)=F2(T)=F[I+(A+BF)T/2]
3. F(T)=F3(T)=F[I-(A+BF)/2]-1
(1) T=0.013s,øc=e(A+BF)T时系统的极点、状态x1、x2、x3的离散仿
真曲线
A=[0,0,0,1,0,0;0,0,0,0,1,0;0,0,0,0,0,1;0,0,0,0,0,0;0,77.0642,-21.1927,0,0, 0;0,-38.5321,37.8186,0,0,0];
B=[0;0;0;1;5.7012;-0.0728];
C=[1,0,0,0,0,0;0,1,0,0,0,0;0,0,1,0,0,0];
D=[0;0;0];
Q=[1 0 0 0 0 0;0 64 0 0 0 0;0 0 256 0 0 0;0 0 0 0 0 0;0 0 0 0 0 0;0 0 0 0 0 0];
R=0.2;
F=lqr(A,B,Q,R)
T=0.013;
[G,H]=c2d(A-B*F,B,T); %%离散一的函数
p0=eig(G),
x0=[1 -1 0.5 0 0 0]';
[y,x t]=dinitial(G,B,C,D,x0);
t=0:0.1:(t-1)/10;
subplot(3,1,1),x1=[1 0 0 0 0 0]*x'; %%响应曲线
plot(t,x1);grid;title('状态变量x1的响应曲线')
subplot(3,1,2),x2=[0 1 0 0 0 0]*x';
plot(t,x2);grid;title('状态变量x2的响应曲线')
subplot(3,1,3),x3=[0 0 1 0 0 0]*x';
plot(t,x3);grid;title('状态变量x3的响应曲线')
p0 =
0.8647 + 0.0473i
0.8647 - 0.0473i
0.9224 + 0.0618i
0.9224 - 0.0618i
0.9932 + 0.0066i
0.9932 - 0.0066i
图1 øc=e(A+BF)T
(2) T=0.013s,øc=ø +ΓF1(T)时系统的极点、状态x1、x2、x3的离散仿真曲线
A=[0,0,0,1,0,0;0,0,0,0,1,0;0,0,0,0,0,1;0,0,0,0,0,0;0,77.0642,-21.1927,0,0,
0;0,-38.5321,37.8186,0,0,0];
B=[0;0;0;1;5.7012;-0.0728];
C=[1,0,0,0,0,0;0,1,0,0,0,0;0,0,1,0,0,0];
D=[0;0;0];
Q=[1 0 0 0 0 0;0 64 0 0 0 0;0 0 256 0 0 0;0 0 0 0 0 0;0 0 0 0 0 0;0 0 0 0 0 0];
R=0.2;
F=lqr(A,B,Q,R)
T=0.013;
[Ad,B]=c2d(A,B,T); %%离散二的函数
Ad=Ad-B*F;
p1=eig(Ad)
x0=[1 -1 0.5 0 0 0]';
[y,x t]=dinitial(Ad,B,C,D,x0);
t=0:0.1:(t-1)/10;
subplot(3,1,1),x1=[1 0 0 0 0 0]*x'; %%显示程序
plot(t,x1);grid;title('状态变量x1的响应曲线')
subplot(3,1,2),x2=[0 1 0 0 0 0]*x';
plot(t,x2);grid;title('状态变量x2的响应曲线')
subplot(3,1,3),x3=[0 0 1 0 0 0]*x';