一阶倒立摆的PID控制仿真
一阶倒立摆的PID控制仿真
摘要:本文主要介绍了一阶倒立摆系统的构成和数学模型,设计了PID控制器,在MATLAB环境下进行仿真,并对仿真结果进行分析。PID控制器具有结构简单、容易实现、控制效果好等特点,是迄今为止最稳定的控制方法。它所涉及的参数物理意义明确,理论分析体系完整,并为工程界所熟悉,因而在工业过程控制中得到了广泛应用。
关键词:一阶倒立摆:PID控制:MATLAB仿真:
0.前言:PID控制器以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。在工业过程控制中,目前采用最多的控制方式依然是PID方式,即使在日本,PID控制的使用率也达到84.5%。它具有容易实现、控制效果好等特点,同时它原理简单,参数物理意义明确,理论分析体系完整,并为工程界所熟悉,因而在工业过程控制中得到了广泛应用。尽管自1940年以来,许多先进控制方法不断推出,但PID控制器仍被广泛应用于冶金、化工、电力、轻工和机械等工业过程控制中。
1.一阶倒立摆的基本理论:
倒立摆控制系统是一个复杂的、不稳定的、非线性系统,是进行控制理论教学及开展各种控制实验的理想实验平台。对倒立摆系统的研究能有效的反映控制中的许多典型问题:如非线性问题、鲁棒性问题、镇定问题、随动问题以及跟踪问题等。通过对倒立摆的控制,用来检验新的控制方法是否有较强的处理非线性和不稳定性问题的能力。同时,其控制方法在军工、航天、机器人和一般工业过程领域中都有着广泛的用途,如机器人行走过程中的平衡控制、火箭发射中的垂直度控制和卫星飞行中的姿态控制等。故其研究意义广泛。
1.1一阶倒立摆模型的数学建模
质量为m的小球固结于长度为L的细杆(可忽略杆的质量)上,细杆又和质量为M的小车铰接相连。由经验知:通过控制施加在小车上的力F(包括大小和方向)能够使细杆处于θ=0的稳定倒立状态。在忽略其他零件的质量以及各种摩擦和阻尼的条件下,推导小车倒立摆系统的数学模型 (如图1)
图1
1.2一阶倒立摆模型的过程分析:
如图所示,设细杆摆沿顺时针方向转动为正方向,水平向右方向为水平方向上的正方向。当细杆摆顺时针往右运动时水平方向施加的力应该为水平向右。现对小车和细杆摆分别进行隔离受力分析 (如图2和图3)
图2 图3
(1)对小车有:F-F’sinθ=Mx’’ (1)
(2)对小球有:
水平方向上运动为x+lsinθ
故水平方向受力为F’sinθ= m(x+lsinθ)’’
=m(x’+lcosθθ’)’
=mx’’+mlcosθθ’’-mlsinθ(θ’)2 (2) 由(1)、(2)两式得F= (M+m)x’’ +mlcosθθ’’-mlsinθ(θ’)2
小球垂直方向上位移为 l cos θ
故受力为 F ’cos θ -mg=m(lcos θ)’’
=-ml θ’’sin θ-mlcos θ(θ’)2
即 F ’cos θ=mg-ml θ’’sin θ-mlcos θ(θ’)2 (3) 由(2)、(3)两式得
cos θx ’’ =gsin θ- l θ’’
故可得以下运动方程组:
F= (M+m)x ’’ +mlcos θθ’’-mlsin θ(θ’)2
cos θx ’’ =gsin θ- l θ’’
以上方程组为非线性方程组故需做如下线性化处理:
!
21cos !
3sin 2
3
θ
θθ
θθ-
≈-
≈
当θ很小时,由cos θ、sin θ的幂级数展开式可知,忽略高次项后, 可得cos θ≈1,sin θ≈θ,θ’’≈0 故线性化后运动方程组简化为 F= (M+m)x ’’ +ml θ’’ x ’’ =g θ- l θ’’
1.3一阶倒立摆模型的状态空间方程:
以摆角θ、角速度θ'、小车位移x 、加速度x ’为Y 为输出,
F 为输入
即
X =????????????4321x x x x =?????
???????x'x 'θθ Y =??????x θ=??
?
???31x x
由线性化后运动方程组得 x 1’=θ’=x2 x 2’=''θ=
()Ml
g m M +x1-
Ml
1 F
x 3’ =x ’=x4 x 4’=x ’’=-M
mg x1+
M
1F
故空间状态方程如下:
X ’=????????????'4'3'2'1x x x x =
()?????????
??????
???-+00
100
00000010
M
mg Ml g
m M ?
?
??
?
?
??????4321x x x x + ?????
???
?
????????
?-M
Ml 1010 F Y= ??????31x x =????
??01
0001 ?????
???????432
1x x x x + 0?F MATLAB 将状态方程转化成传递函数,取M=2kg m=0.1kg l=0.5m 代入得 >>A=[0 1 0 0;20.58 0 0 0;0 0 0 1;-0.49 0 0 0] >>B=[0;-1;0;0.5] >>C=[1 0 0 0;0 0 1 0] >>D=[0;0]
>> [num,den]=ss2tf(A,B,C,D,1); num =
0 -0.0000 -1.0000 0 0 0 -0.0000 0.5000 -0.0000 -9.8000 den =
1.0000 0 -20.5800 0 0
由上Φ
对力F 的传递函数:
58
.201)
()(2
--=
Φs s F s
位移X 对外力F 的传递函数: 2
4
2
58.208.95.0)
()(s
s s s F s X --=
2.方案设计
基于一阶倒立摆系统的构成和数学模型的建立,设计PID 控制器,在MATLAB 环境下进行仿真,并对仿真结果进行分析
3.软件编程
首先,将连续的系统离散化。计算机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量,因此,连续PID 控制算法不能直接使用,需要采用离散化的方法。在计算机PID 控制中,使用的是数字PID 控制器。
采样周期T 为1ms ,采用Z 变换对G(S)进行离散化,离散化后的被控对象为: Transfer function:
0.06684 z^2 - 0.1322 z + 0.06538 z^3 - 2.222 z^2 + 1.445 z - 0.2229 可得系统的差分方程:
y(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(2)*u_1+num(3)*u_2+num(4)*u _3;
num =[0 0.0668 -0.1322 0.0654] den =[1.0000 -2.2219 1.4448 -0.2229]
在输入信号为单位阶跃信号时,运行附录2的数字PID 程序,可得系统的响应如下图4:
图4
在PID参数:kp=10;ki=3000;kd=0; 调节时间0.15s<0.2s; 无稳态误差, 超调量4%>2%。其中超调量过大不满足系统的设计要求。
利用Matlab /Simulink软件,构建了电机控制系统的速度仿真模型。通过仿真结果可以看出系统能平稳运行,具有较好的静、动态特性。在此仿真模型基础上,可以十分便捷地实现进行参数选择、调整及仿真。因此,可以从整体角度出发对伺服系统整体参数的优化和调整进行研究。也为实际伺服系统的设计和调试提供了新的思路。
4.系统调试与结果分析
1、没校正之前的θ-F控制系统(如下图5)
Transfer Fcn
-s 2s +-20.58s 42Scope
Pulse
Generator
Constant
1
图5 由于未加进控制环节,故系统输出发散
2.加进控制环节,实现时域的稳定控制 (如下图6)
Transfer Fcn
-1s +-20.582Scope
Pulse Generator
Integrator 1s Gain 3
-40Gain 11Gain -K-Derivative
du/dt Constant
图6
给系统加入PID 控制,设置系统稳定值为0,给系统一个初始干扰冲击信号 采用试凑法不断调整PID 参数
当系统Kp=-100,Ti=Td=0时输出 (如下图7)
图7
不断地调整参数,最后得到稳定的响应Kp=-1000,Ti=1,Td=-40时(如下图8)
图8
可见调整好参数后,系统基本达到稳定,净差基本为0,超调较小,响应时间较小。再微调后,得到最终的响应曲线响应时间较小,Tp=0.2s
时域达到稳定后,进行离散化分析(如下图9)
Zero -Order
Hold
Transfer Fcn
-1s +-20.582Scope
Pulse
Generator
Gain 3-K-
Gain 1-2Gain
-K-Discrete Filter
1
1-z -1Discrete FIR Filter
1-z -11
Constant
图9
当Kp=-100,Ti=0,Td=0时输出 :发散,需加大Kp 、增加Ti 、Td 控制
(如下图10)
图10
Kp=-100,Ti=-2,Td=-1000时输出:仍需要调节PID ,由图可知超调仍大,响应时间稍长,故微增加Kp 、Ti 、Td (如下图11)
图11
反复试凑PID参数后,得到较好的响应曲线如下(Kp=-110,Ti=-4,Td=-1500时)如下图12
图12
可见调整好参数后,系统基本达到稳定,净差基本为0,超调较小,响应时间较小。再微调后,得到最终的响应曲线响应时间较小,Tp=0.5s。
参考文献
[1] 程卫国.MATLAB 5.3 精要、编程及高级应用. 机械工业出版社, 2000
[2] 高俊斌 .MATLAB 5.0语言与程序设计. 华中理工大学出版社, 1992
[3] 于海生.微型计算机控制技术(第二版)清华大学出版社, 2009
附录
数字PID程序
%PID Controller
clear all;
close all;
ts=0.001;
sys=tf([127.4 2817 11930],[1 1501 2021 11730]);
dsys=c2d(sys,ts,'z'); %连续离散化
[num,den]=tfdata(dsys,'v');
u_1=0.0;u_2=0.0;u_3=0.0;
y_1=0.0;y_2=0.0;y_3=0.0;
x=[0,0,0]';
error_1=0;
for k=1:1:1000
time(k)=k*ts;
kp=10;ki=3000;kd=0;
rin(k)=1; %Step Signal
u(k)=kp*x(1)+kd*x(2)+ki*x(3); %PID Controller
%Restricting the output of controller
if u(k)>=10
u(k)=10;
end
if u(k)<=-10
u(k)=-10;
end
%Linear model
yout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(2)*u_1+num(3)*u_2+num(4)*u_ 3;
error(k)=rin(k)-yout(k);
%Return of parameters
u_3=u_2;u_2=u_1;u_1=u(k);
y_3=y_2;y_2=y_1;y_1=yout(k);
x(1)=error(k); %Calculating P
x(2)=(error(k)-error_1)/ts; %Calculating D x(3)=x(3)+error(k)*ts; %Calculating I error_1=error(k);
end
figure(1);
plot(time,rin,'b',time,yout,'r');
xlabel('time(s)'),ylabel('rin,yout');
title('单位阶跃响应曲线')
课设体会
通过本次课程设计,学会了从数学建模到仿真系统的搭建,对控制环节进行实时控制,最后得出结果过程,参考了大量的资料,通过对比整合,设计出了适合自己的一套实验方法。在实验中了解到,倒立摆系统是一个非线性的较复杂的不稳定系统,要想满足稳定性要求,就得对系统进行线性化近似和稳定控制。做了线性化和加进控制调整后,系统达到了良好的稳定状态。同时也熟悉并且掌握了MATLAB仿真软件的使用, 也对系统控制有了更好的理解.当然,这只不过是一个理想模型,在实际应用中情况会更加复杂,稳定性也更难获得。不过,通过本次的实验,我们至少掌握了简单控制的基本方法,并得到了预期的实验效果。通过此次课程设计使我更加认识到了自动控制在改善系统性能方面的重要性,并激发了良好的关于系统控制方面的学习兴趣,在此基础上,相信对以后的进一步研究将会有更大帮助。此外对本次带课程设计的蒋老师表示崇高的敬意
[2012年7月 12日完成]