状态反馈的倒立摆PID控制

更新时间:2023-05-26 10:58:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

可做计控作业使用

基于LMI的单级倒立摆的状态反馈PID控制

摘要

本文以单级倒立摆为研究对象,通过物理规律得到系统的传递函数和状态方程,并结合状态反馈的概念,将约束条件转化为线性矩阵不等式求解反馈矩阵并得到PID控制器,最后进行MATLAB仿真得到仿真曲线进行对比分析指出该方法的优缺点。

关键字单级倒立摆PIDMATLABLMI 状态反馈

前言

倒立摆系统是一种典型的非线性的,不稳定的复杂系统。是控制理论教学与科研中研究诸如鲁棒问题、非线性系统的控制等问题的良好实验对象。同时,倒立摆系统作为机器人行走中平衡控制、火箭垂直姿态控制和卫星飞行中姿态控制的最简单模型在航空航天以及军工等领域有着广泛的用处。倒立摆可以根据摆杆数量的不同分为一级、二级和三级等,多级摆杆间采用自由连接。一级倒立摆的仿真与控制已广泛应用于教学科研,而二级倒立摆也已在大部分实验室中实现,至于三级倒立摆的控制问题则是国际上公认的难题。然而我国学者李洪兴教授在2002年实现了国际上首次四级倒立摆实物系统的控制,这是我国学者采用自己提出的理论完成世界性难题的重大科学成就。本文中以单级倒立摆为研究对象,根据物理定律进行建模得到数学模型,在此基础上进行PID控制,并通过MATLAB仿真对比加入PID控制器前后的响应曲线进行分析。

数学模型的建立

直线一级倒立摆是由小车、摆杆等部件构成。现假设有一个一级倒立摆系统,其中摆杆的长度为L,L 2l,质量为m,小车质量为M,u为作用在小车上的外力, 为摆杆与垂直向上方向的夹角,x为小车的水平位移。若不考虑小车与导轨,摆杆与小车之间的摩擦并且不计各种空气阻力,则倒立摆系统的受力分析如图1所示。

可做计控作业使用

Figure 1

规定摆杆重心的坐标为 xG,yG ,则

xG x lsin

y lcos G

采用隔离法,对小车有

d2x

u T1 M2(1)

dt

其中T1为摆杆所受沿水平方向的力。 对于摆杆,在水平方向上有

d2 x lsin

(2) T1 m

dt2

在竖直方向上有

d2 lcos

(3) mg T2 m2

dt

其中T2为摆杆所受沿垂直方向的力。 以摆杆质心为旋转中心建立动力学方程有

d2

T2lsin T1lcos J2(4)

dt

其中J

1

mL2为摆杆绕其质心的转动惯量。 12

此时,发现(2)(3)(4)均为非线性方程,为了简化计算并且便于进行控制器设计,要对上述方程进行近似线性化处理。由于控制目标是使摆杆处于垂直稳定状态,

2 0、即 尽可能的小,甚至接近于0,因此可以认为sin 0、cos 1、 0。这里需要注意

可做计控作业使用

2

2d2sin d cos ,cos cos 2 sin sin 22

dtdt

因此方程(2)(3)(4)化为

(5) ml T1 mx

mg T2 0(6) T2l Tl1 J (7)

消去中间变量T1、T2,由(1)(5)式得到

u(8) ml x M m

由(6)(7)式得到

mlx mgl (9) (J ml2)

由(8)(9)得到单级倒立摆方程

m(M m)glml

u(10) 22

(M m)J Mml(M m)J Mml

m2gl2J ml2

x u(11) 22

(M m)J Mml(M m)J Mml

设小车的质量M为2Kg,摆长L为1m,摆杆质量m为0.1Kg,重力加速度g取

10s2带入上述方程,可以得到角度与外力之间的传递函数G s ,

G s

s

Us

0.74

(12)

s2 15.56

由于系统有位于复平面右半平面的极点显然其不稳定,在阶跃函数作用下的响应的响应曲线如下图所示,同样说明系统是不稳定的,因此需要加入PID控制来改变系统的性能。

Figure 2

可做计控作业使用

状态反馈PID设计

,x x,x x 建立状态方程,则由(10)(11)可得倒立摆系统的令x1 ,x2 43状态方程为

0

t 1x

0 t2

100 0

000 t

x 3 u Ax bu(13) 0 001

000 t4

m2gl2m(M m)glml

其中t1 ,,,t t 32222

(M m)J Mml(M m)J Mml(M m)J MmlJ ml2

t4 2

(M m)J Mml

接下来我们要用状态反馈的方法设计此倒立摆系统的PID控制器。采用文献[4]

t uz t ,其中u t0 给定。记 的方法,在控制输入点之前引入一个积分环节u

x Ab T 00001 t , , z u 00

因此得到增广系统的状态方程

z(14) z

设状态反馈

uz t Kz t (14)

t uz t K1u

x t

K2 K1x t K2u t (16)

ut

因为rank 1,则T可逆,从而可以将控制输入u t 用状态及状态的导数表示,即

Ax (17) u t bTb bT x

1

将上式代入(16)式中,得到

t K1x K2 bb bu

T

1

T

1

T

T

Ax K2 bb x

T

1

K1 K2 bb bTAx(18) bx

T

T

1

记K2 bb b为K3,K1 K2 bb bTA为K4,在零初始条件下对上式积分得

T

1

可做计控作业使用

u t K3x K4 x d (19)

t

可以看出这是状态反馈加状态积分反馈的形式。如果能够找到一组状态变量,使得状态反馈就是比例积分加微分,那么该状态反馈策略就是PID控制。对于n阶系统,微分部分包括了系统从1阶到n 1阶的微分;若是二阶系统,该部分就是一个工程中常用的PID控制器。现在讨论反馈增益矩阵K,使得增广系统满足稳定的指标。即设计反馈矩阵K使得闭环系统稳定。此时闭环系统的状态方程为

t z t (20) z

根据Lyapunov理论可得,存在对称正定矩阵P使得

TP KTTP 0(21)

在上式左右两边左乘P 1,右乘 P 1 ,并令L KP 1则得到

T

P 1T LTT 1 0(22)

这是关于L与P 1的线性矩阵不等式,又由于P正定则P 1正定,因此上述LMI可以改写为

P 1T LTT 1 0

0(23) 1 0 P

通过MATLAB可以求得L与P 1,由此可以解出对称正定矩阵P与反馈增益K。 下面通过MATLAB进行仿真和计算。仍然采用之前仿真时使用的小车质量与摆杆质量等数据,可以得到增广系统的状态方程的系数为

0

15.56 0

0.37 0

100000001000000

0 0.74 0 0 , 0

0.49 0

1 0 0

通过MATLAB计算可得反馈增益K为 1126.8281.413.635.2 23.7 ,因此

K3 022.250 14.73 ,K4 775.14281.3913.6235.19 ,代入控制器u的表达式中得到u t K3x K4 x d ,仿真曲线图如下所示。

0t

可做计控作业使用

Figure 3

Figure 4

Figure 5

可做计控作业使用

Figure 6

Figure 7

结论

由图2可知系统在没有控制其作用下是不稳定的,通过状态反馈PID控制之后的系统状态的响应曲线分别为图3~6,可以看出,只在稳定的约束下,系统的四个状态可以在18秒左右达到稳定,证明方法的可行性。同时也发现了只对稳定性约束时的不足,即系统达到稳定所需的时间过长,为此可以在考虑稳定性的条件下加入其他指标进行约束以达到预期的效果,例如极点指标、方差指标、H 指标等,甚至可以进行多指标约束,例如极点指标加方差指标等。求解时需要将这些指标化为线性矩阵不等式组,运用MATLAB求解满足需求的解。

可做计控作业使用

讨论与体会

在我之前的认识中,对于PID只理解到自动控制原理中通过对超调量等指标的约束画出伯德图进行求解参数的阶段。后来学习了状态空间描述系统时,就思考如何在状态方程的基础上进行PID控制器设计,因此借此计控作业的机会查找资料学习了一下。在这个作业中我还用到了一些这学期学到知识,例如线性矩阵不等式的求解和系统稳定性分析。在学习了线性矩阵不等式后也借此机会实践了一下其中的变量替换和MATLAB求解,同时也是第一次听到满意控制这个概念。因此可以说这次作业不仅仅是计算机控制的作业也从一定程度上说是对这学期的小小总结,同时在这之中也发现还有很多需要学习的地方。

参考文献

1. 张嗣瀛,高立群.现代控制理论[M].北京:清华大学出版社,2006 2. 关守平,尤富强.计算机控制理论与设计[M].北京:机械工业出版社,2012 3. 张庆灵,张雪峰,翟丁.控制理论基础[M].北京:高等教育出版社,2008 4. 马建伟,李银伢.满意PID控制设计理论与方法[M].北京:科学出版社,2007

5. 周俊.PID控制在单级倒立摆系统中的分析与应用[J].硅谷,2010,6:20-21 6. 王慧萍,孔庆忠.基于MATLAB的直线一级倒立摆的PID控制研究[J].机械工程与自动化,2015,5:179-182

7. 薛定宇.控制系统计算机辅助设计[M].北京:清华大学出版社,2015 8. 王建辉,顾树生.自动控制原理[M].北京:清华大学出版社,2013

附录:代码

clear all num=[-0.74]; den=[1 0 -15.56]; G=tf(num,den); t=[0:0.1:20];

[y,x,t]=step(num,den,t); figure(1); plot(t,y); grid;

可做计控作业使用

xlabel('t'); ylabel('y');

title('单位阶跃响应曲线')

%角度对输入的传递函数的阶跃响应曲线

a=[0,1,0,0,0;15.56,0,0,0,-0.74;0,0,0,1,0;-0.37,0,0,0,0.49;0,0,0,0,0]; b=[0;0;0;0;1]; setlmis([]) %开启LMI求解 Q=lmivar(1,[5,1]); L=lmivar(2,[1,5]); %定义矩阵变量 lmiterm([1 1 1 Q],a,1,'s'); lmiterm([1 1 1 L],b,1,'s'); lmiterm([1 2 2 Q],-1,1); %描述线性矩阵不等式 lmisys=getlmis;

[tmin,xfeas]=feasp(lmisys); QQ=dec2mat(lmisys,xfeas,Q); LL=dec2mat(lmisys,xfeas,L); K=LL*inv(QQ) %解出反馈矩阵K %状态方程 c=[0,0,0,0,0]; d=[0];

g=ss((a+b*K),b,c,d); t=[0:0.1:20]; x0=[0,0,1,0,0]; [y,t,x]=initial(g,x0,t); figure(2) plot(t,x); hold on grid on

%得到增广系统的状态响应曲线 figure(3) plot(t,x(:,1)),grid;

xlabel('t'),ylabel('角度'),title('摆角随时间变化的曲线'); figure(4)

可做计控作业使用

plot(t,x(:,2)),grid;

xlabel('t'),ylabel('角速度'),title('角速度随时间变化的曲线'); figure(5) plot(t,x(:,3)),grid;

xlabel('t'),ylabel('位移'),title('小车位移随时间变化的曲线'); figure(6) plot(t,x(:,4)),grid;

xlabel('t'),ylabel('速度'),title('小车速度随时间变化的曲线'); figure(7) plot(t,x(:,5)),grid;

xlabel('t'),title('控制器变化曲线');

本文来源:https://www.bwwdw.com/article/o0o4.html

Top