你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

PID参数的调节方法和图示 精华  

[复制链接]
mtg 发布时间:2015-4-27 15:50

  i. z: c5 k( k9 [. F! h基于STM32和PID算法的小车车速控制
# f. E8 B: [7 e; ]( J1 E8 m
9 t& ^& Y& L# c四轴飞行器飞行原理与双闭环PID控制
& V3 F3 B0 n* Z$ m
: A! P1 [1 _0 X( _. Q* JPID程序实例
3 H; M1 J; E% N/ V5 o/ I, e" S0 ?( Y
- u6 [2 T& u  j
" k& j( h, x% H该文档总结于以下两个博文:0 X6 @7 q6 ^4 p
http://www.moz8.com/thread-36004-1-1.html 和http://www.eeboard.com/bbs/thread-32321-1-3.html
6 c( p9 M7 A9 N$ r1 V
6 ?1 l. k; X9 e& U! ]为了更好的理解这个视频和PID参数的作用,特意根据多轴飞行器的原理和PID理论,编写了一个EXCEL图表,直观的来理解PID参数的作用。
0 s! Q0 \$ _- z  O在这个模型中:* S0 j6 M0 ^, U+ ~2 g) o
1、假设输出是力,作用在一个质块上,使用加速度、速度、位移积分计算,评估输出对测量值产生的影响,跟多轴飞行器的运动模式比较接近。
6 t. K# D! o+ P2、让速度响应慢一个拍子,模拟电调和电机的响应滞后。
- M8 F8 G. ]: g6 P3、加入阻尼,模拟空气的衰减作用: B/ ~. f4 _7 W/ W; N( R9 A- ?
4、引入偏差,用于体现I的作用,从中间加入,代表一个系统误差或外作用力' t. d& f* @- a6 I+ ~& F
5 J# p1 n3 P5 l) O
PID的作用概述:" L' ~8 T( V" x. S0 W/ X6 W+ ~
1、P产生响应速度和力度,过小响应慢,过大会产生振荡,是I和D的基础。7 d, u7 d$ E  S1 l  f
2、I在有系统误差和外力作用时消除偏差、提高精度,同时也会增加响应速度,产生过冲,过大会产生振荡。
/ y9 |9 l5 ~# r8 g3、D抑制过冲和振荡,过小系统会过冲,过大会减慢响应速度。D的另外一个作用是抵抗外界的突发干扰,阻止系统的突变。' f2 d; Q+ o, N; k- p+ d  f
3 L+ {3 v# m8 O
通过这个模型和图表,一步步演示PID参数的作用和调试方法:& F+ C9 U$ ]7 c% s+ u
- i1 q8 C7 Y9 E- S
1、逐步增大P,看P对响应速度和力度的影响,调到系统发生振荡,再减少一点P
9 l* y6 _" c# R: E9 I4 t' D1 d, q) Z6 Q% ?& z
当P=0.1时,响应很慢,但不会振荡/ ^# _+ D0 w' f% w

1 B: s6 z/ @6 H8 f0 y( X粗黑线是系统响应,洋红线是目标值。' g. F! c  q. d1 }% h1 e: R: {; ^: G
' ]  u5 E2 l( H2 t  i4 B
逐步增大P,P=1,有振荡,但慢慢在衰减
1 o: }* X( G. m6 `- U
/ g1 P* d* V: n3 k" {
2 F7 p" C) T7 [% v( x4 H继续增大P,P=3,振荡会逐步加大- o6 P* \8 |1 ?3 N
+ x. ^2 F& f( ^& q, \& r2 @
% t# m# x% K8 e# M5 L6 [  ]
取振荡但会衰减的P=1继续调整0 {# l; r8 V4 g
在多轴调试时,当振荡发生时,再稍微减小一点P。/ T9 j/ R& }( r$ j: v  d
/ u' I0 v7 `0 Z" O
2、加入D,看D对振荡的控制能力,D过小会发生过冲,D过大会迟滞,以稍微有点过冲为最佳
/ e) K$ D9 x, @" ^* u& v* i! p. B
D=0.5,有较大的过冲和少量振荡,衰减很快0 s: T3 Q) \" {

7 `6 ~% J5 C* N, E* W: E( G( M, W5 o6 w+ ]1 {
D=1.3,基本没过冲
! [) X& H- ?% s# L
) y- _8 ?- H9 M$ {3 v: ^; N
6 \( D7 t' P$ PD=2,响应迟滞,减慢了响应速度4 ]  d; _% L. \7 `7 ?
! j( ^+ X5 p. g1 d) {& B3 ?

) _9 k4 D' F$ n: O取以稍微有点过冲的D=1.3为最佳0 E& l1 @6 O5 ^3 q+ R
在多轴调试时,用手拍一下机臂或倾斜启动,机臂在复位时有少量过冲为宜。(不过我喜欢基本没过冲时的参数,这样在悬停时更稳)  `+ G0 T% C4 @* C4 s
2 d* d8 l& `% @- r' F" w6 c  d, H
3、可以继续增大P和D,让响应更快但过冲也不大。' J" a) }; q0 e
P=2 D=1.8
  K8 [4 I# ~% n! J+ V) d% _) f ( t" @5 l" d+ P( c% Q$ M

) ]$ Y: E0 N" T* x- d在理论上可以这样演示,但在实际多轴的调试时,这一步一般不做,这是为了更安全和稳定。
% _; r1 T  c# m, y8 ?! }9 x% E" K3 s2 I$ i/ |1 C( j8 z
4、加入0.2的偏差,看偏差对位移的影响
% s/ f7 w4 i' v6 v- B. y5 H从中间加入,代表一个外作用力。
9 _0 M3 z: v1 D
4 D% a1 m) d$ d" t0 Y6 T  L可以看到,如果没有I的作用,偏差将一直存在,尽管P产生了一个抵抗力,但只是阻止了系统继续运动,但偏差一直在。2 S" o. l2 O0 Q' [) o3 v
在多轴调试时,如果持续的抬起一个机臂,机臂会持续的转动,抵抗力很小,放手后也不会回复。
8 v; F- [, D+ H) ?% x% W/ K2 o! G7 x
5、加I,看I对偏差的修正能力,I加快了响应速度,但也会导致过冲或振荡
/ r; |, ?1 U# f3 v! }I=0.3 基本可以消除偏差产生的影响,产生了少量过冲,但提高了在有偏差时系统的精度* G- p' H9 O: A1 r
! K, {9 [' f! E
& d$ [. ~. R" k& {( V
I=3 进一步加快响应速度,但产生了振荡% _$ J( k" [. ?

, w/ H5 Y: \0 o8 Z% W$ A
0 A  l& N& w% g5 ]* J取基本能纠正偏差的I=0.3
6 t! f- p4 D" M( W, U. I( P在多轴调试时,油门开至悬停油门,用手持续的抬起一个机臂,可以感到随着I的增加,抵抗力会逐步增大,持续时间加长。
* p/ P$ q" q- d8 x- Q5 D2 c% K因为多轴的长期稳定由姿态模式的LEVEL参数来解决,所以I不用太大,取缺省参数就可以了,大概可以抵抗1-2秒左右。
6 o  j. ^  A$ a9 U$ I, B9 g1 }* C. f  f
6、增大一点D,减小一点I产生的过冲
, J. ^, d1 W. w* T% b/ L& z  b' j取消偏差,因为I的加入,有一点过冲# `* Z; {/ e+ F2 F  V2 v

) J1 v" E# V, [8 T4 m( x
  B( g9 X; O  E- E7 U3 b4 T' s  a9 [' n增大D,D=2.2,减小过冲& c- G0 V) b" m. d: Q! f

) w+ ]' J& H4 C. _7 Q) ?
2 d; q+ ~+ y/ H. Q3 S4 `/ T在实际多轴调试时,这一步一般不用,但是如果有必要,可以试一下。
4 |6 R6 @5 P- p+ {5 Q- T) F
+ @( K% P8 ?: e% A# a好了,曲线演示完了,这同时也是多轴PID参数的调试过程,结合视频一起看,能更好的理解这一过程,希望对大家理解PID有所帮助。
9 Q" [5 A6 H7 V4 W2 B8 s! p4 m( S% E9 p: P0 \, l6 E/ p. H# ^1 _
附:多轴飞行器PID调试演示器.xls6 I5 y" `" `0 B$ v. y7 C7 q1 ^0 @
7 D( B. j) n- c; W  o
另外,试了一下,下载的文件名可能有问题,自己把文件名改为"多轴飞行器PID调试演示器.xls"就可以用了+ v8 s" c/ C. @" c
  x" Q& a" F( g( y
+ k* z6 q# Y: q, N
PID的代码其实也很简单,主要是要了解其中的原理,才能更好地调整参数。为了方便新手们理解,楼主建立了一个数学模型来让大家了解。(只针对新手,老手就算了)
* ~3 x5 ]7 J3 j/ T$ M: O/ W% b4 B& b- H; _9 ^/ I6 b- t
========圆点博士小四轴之PID控制模式分析=======* N; W' ]6 `. _9 M( v7 q/ }
PID控制的P是Proportional的缩写, 是比例的意思,I是Integral的缩写,是积分的意思,D是Derivative的缩写,是微分的意思。所以,PID就是我们常说的比例,积分,微分控制。% p: [  t. N' N) s
我们首先来看一个PID控制模型曲线图:) y2 O" Q4 u6 w* ^; V
该图包含了比例控制,比例+积分控制,比较+积分+微分控制的电机响应图的对比。& o' o* `* g4 |& I! e
4 P  v6 p: |- J4 ]/ u% Z
2014-5-29 13:22 上传8 D% {' R2 x. v8 A9 Q
下载附件 (37.76 KB)   F( R3 ?3 f% N8 F- P
PID模型
. M3 D0 R& Y$ t( a( r4 c: J- _+ r. s1 s" \; G% J
0 n0 v8 @9 u' \, C. T# m
% F: `' A7 d" m) f
下面我们对曲线进行具体分析:: T  ]1 X; w2 [6 |2 t
PID中的比例控制是最容易理解的,比例控制就是把角度的误差乘以一个常数作为输出驱动。假定我们有一个理想模型的电机,1V电压的变化会带来小四轴1度的角度改变。假定现在电机控制电压是5V,小四轴在某一轴上的偏角是5度,目标角度是100度。我们把当前的电压量定义为Vin,把输出控制量定义为Vout。假定P等于0.2,那么比例控制的结果就是:
8 Q& _8 E) P! l" A  Z7 K第一次:Vout=Vin+(100-5)*P=5V+19V=24V,得到电机电压是24V,对应的小四轴角度是24度,距离目标角度的误差是100-24=76度。
3 A, Q4 \3 g5 q第二次:Vout=Vin+(100-24)*P=24V+15V=39V, 从而引起的角度是39度。, N% ^; G2 j$ R6 n* r' d
我们看到,在这么的一个比例控制系统下,小四轴角度在慢慢地向目标角度靠近。
% o1 y6 V6 ~% X* X; h; c- P% O3 N/ {# \# V
PID中的积分控制就是把把所有角度误差相加起来,然后乘上一个常数作为输出驱动。在上述例子中,假定I=0.2, 我们来看看比例和积分控制同时起作用下的系统反应。/ {% B9 w  W  E: v" t2 Q0 L1 u. u; Z
第一次:Vout=Vin+(100-5)*P+(100-5)*I=5V+19V+19V=43V,这时候小四轴角度为43度。
  p, d$ c; {/ ?8 ~/ M1 e, U由于第一次控制前的误差是100-5=95,第二次控制前的误差是100-43=57,所以积分结果是152。; k& A# U% Z. d) \- ]5 c6 \
第二次:Vout=Vin+(100-43)*P+((100-5)+(100-43))*I=43V+11V+30V=84V, 这时候小四轴角度变为84度。  m8 a& Z8 K' l1 |- x% n% `2 S
第三次:Vout=Vin+(100-84)*P+((100-5)+(100-43)+(100-84))*I=84+3V+33V=120V。这时小四轴角度变为120度。! d: h7 g! T3 r- _1 D4 M5 w! t
我们看到,在增加了积分控制后,小四轴角度在快速向目标角度靠近。3 H' o7 L0 o/ C9 K; g: |
, a2 @7 s* @1 P2 A9 Q9 E: P
PID中的微分控制就是把角度的变化乘上一个常数来作为电机驱动输出。在上述例子中,假定D=0.2, 我们来看看比例,积分和微分共同控制下的系统反应。假定第一次前,电机转速保持5转,那么第一次前的角度变化为0。
+ l+ T8 |7 H$ k& V  n第一次:Vout=Vin+(100-5)*P+(100-5)*I-(5-5)*D=5V+19V+19V-0V=43V,这时候小四轴角度为43度。
; i+ Q% v: l9 W( J4 L1 I- N和上一次相比,角度从5度变化到了43度,所以小四周角度变化是43-5=38度。
. k, V0 @6 [8 m9 z. k第二次:Vout=Vin+(100-43)*P+((100-5)+(100-43))*I-(43-5)*D=43V+11V+30V-7V=77V, 这时候小四周角度77度。
; f6 [" q* S9 l+ d* h/ x5 S2 [* d/ q( ~* J& K& r, K8 R  q0 p
把上述的计算结果列出来,我们看到:
. s1 x, v- Z. H 2014-5-29 13:23 上传3 l" l2 m9 A" ?6 y* b/ o3 V
下载附件 (39.13 KB)
/ |* w. g  R. N6 v6 _: `PID计算
; W: C& a% d& Q1 ]. ^
9 ]$ n' v, w% P' V5 F0 M
+ m6 q# L5 ~4 T
7 D8 j$ A  V% d: }  I/ O) g, u9 v% v3 u$ S) P! ^  r, [" A
从上面的数据,我们可以看到:
  ?, Z5 T. d5 r1 ~5 @) p" `1,单独比例控制的时候,数据慢慢接近目标 (图表中的红色线)
3 W7 t; M/ j8 N1 i& s; ^7 Z2,加入积分控制之后,数据快速接近目标 (图表中的蓝色线)5 A+ X# L) F+ s# A
3,微分控制起到抑制变化的作用。(图表中的绿色线)
- B* F& O& v8 s1 V+ n
% U' D0 |( i' \2 X  x2 l有了这些理论基础,就可以写PID控制代码拉。7 W1 _3 |  u) y2 q' o

! u9 Z) {% \: @6 R$ C' V

PID.zip

下载

23.06 KB, 下载次数: 1561

评分

参与人数 1 ST金币 +2 收起 理由
电子星辰 + 2 直观详细

查看全部评分

赞 3 收藏 64 评论162 发布时间:2015-4-27 15:50

举报

162个回答
magickk5520 回答时间:2015-9-5 20:52:26
初级的都是理解物理含义去调参数。
, y3 S8 [' F$ w7 W6 B# R6 a/ U9 @中级的pid调节,需要根据控制模型建模,然后零极点对消,等效1型或2型系统,根据最佳整定法计算pi参数,这是掌握一些自控原理的基础了。
6 O  Y* {( p$ M# H" }8 K2 I+ S高级一些的应该都是用自抗扰控制器,抗饱和积分(anti-windup)等,尤其是飞行器。
阿本 回答时间:2015-5-12 08:08:07
mark                                         
海阔天空-399263 回答时间:2015-5-13 08:56:08
很实用                        
perpetuiy 回答时间:2015-4-27 16:25:47
点个赞!
拼命三郎 回答时间:2015-4-27 17:12:02
xxxx.png
拼命三郎 回答时间:2015-4-27 17:12:15
ddddd.png
stary666 回答时间:2015-4-27 17:47:41
学习一下。。。。。
wyxy163@126.com 回答时间:2015-4-27 19:49:59
提示: 作者被禁止或删除 内容自动屏蔽
wyxy163@126.com 回答时间:2015-4-27 19:50:32
提示: 作者被禁止或删除 内容自动屏蔽
wamcncn 回答时间:2015-4-27 21:51:46
学习下,小车必备
谦 回答时间:2015-4-27 21:57:48
多谢,学习了~~~~~~~~
wwwhlw 回答时间:2015-4-27 22:13:31
非常给力,顶一顶。。。
eurphan 回答时间:2015-4-27 22:30:39
楼主太吊了   
intech2008 回答时间:2015-4-27 22:31:41
楼主不容易啊。
nocoyou 回答时间:2015-4-28 00:37:30
好文,给力
lzp20 回答时间:2015-4-28 10:03:39
很好的文档,说得很详细,谢谢!
那就地方 回答时间:2015-4-28 11:10:00
谢谢,楼主分享,学习!

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版