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

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

[复制链接]
mtg 发布时间:2015-4-27 15:50
  j8 f) q) Y9 E& x8 L
基于STM32和PID算法的小车车速控制
, s& `5 u  L4 C+ X& H
5 ]; W6 w  o% S$ H# e5 T7 c% G3 `: X- S四轴飞行器飞行原理与双闭环PID控制) N" ~- `+ E1 M1 C

$ E2 i, R1 i  N. S$ b0 V  C  s: k$ R: gPID程序实例( E6 k' ^9 M+ K2 P/ g
8 p- `: s3 p% x$ }7 V: @2 b- Q
$ `2 J6 t, O, q2 l, l6 h
该文档总结于以下两个博文:/ P9 |  h; Q- z6 A2 W! V, }
http://www.moz8.com/thread-36004-1-1.htmlhttp://www.eeboard.com/bbs/thread-32321-1-3.html2 }* e5 d4 n- N

- X: q% y: J3 X为了更好的理解这个视频和PID参数的作用,特意根据多轴飞行器的原理和PID理论,编写了一个EXCEL图表,直观的来理解PID参数的作用。
, [2 y+ \" Q/ x/ C( V, @. `1 @在这个模型中:, d( A7 z$ B4 l3 Q+ _
1、假设输出是力,作用在一个质块上,使用加速度、速度、位移积分计算,评估输出对测量值产生的影响,跟多轴飞行器的运动模式比较接近。7 S; O3 G2 F/ r7 x& Q
2、让速度响应慢一个拍子,模拟电调和电机的响应滞后。" T8 m. Y5 t. r
3、加入阻尼,模拟空气的衰减作用
% K  ?# e' `' E) y* z4、引入偏差,用于体现I的作用,从中间加入,代表一个系统误差或外作用力/ {$ L$ z6 \3 g1 F

9 D& z6 |( h3 I" }: ?PID的作用概述:
2 y( D" b! z$ h1、P产生响应速度和力度,过小响应慢,过大会产生振荡,是I和D的基础。
$ @5 p6 w+ e0 c! E2、I在有系统误差和外力作用时消除偏差、提高精度,同时也会增加响应速度,产生过冲,过大会产生振荡。. v* Z  Q+ B( f
3、D抑制过冲和振荡,过小系统会过冲,过大会减慢响应速度。D的另外一个作用是抵抗外界的突发干扰,阻止系统的突变。0 W* I: g- n+ a# p- w

) Y5 }+ ^+ `8 W9 j: d, z( E9 s通过这个模型和图表,一步步演示PID参数的作用和调试方法:
1 {# `) d* z: T  x) Q& K
2 X1 M7 b# G3 L- s4 q7 G& E1 j1、逐步增大P,看P对响应速度和力度的影响,调到系统发生振荡,再减少一点P
2 k: x* k/ w( j/ n0 K5 \+ k0 @/ p8 z# {" b' E) A1 u
当P=0.1时,响应很慢,但不会振荡* T) s- y: A3 z- S4 w2 q7 h

. v/ Y8 `6 W1 {, `4 U粗黑线是系统响应,洋红线是目标值。4 ?( ?% n9 ~$ z) y
! F1 D1 r) A- s( v" a
逐步增大P,P=1,有振荡,但慢慢在衰减8 B  R6 p( |7 }- }9 V
+ \" y! x5 P4 L2 w

4 Y5 O0 M$ l$ x: @! |0 A/ h继续增大P,P=3,振荡会逐步加大6 b5 k- K1 f4 Y. `$ L# K

' L3 @. B* t: X+ B! W( j) }- }8 r# h9 b# {# s1 a. D9 |1 o( B. p, s
取振荡但会衰减的P=1继续调整# R3 q- ?2 _1 |# J7 a
在多轴调试时,当振荡发生时,再稍微减小一点P。& ~8 W( [: N" J, m. d: r1 z
) i$ d! S9 _& P4 X9 N
2、加入D,看D对振荡的控制能力,D过小会发生过冲,D过大会迟滞,以稍微有点过冲为最佳4 K5 t7 ]! ~  H
# n& d9 H3 }6 D
D=0.5,有较大的过冲和少量振荡,衰减很快
. y" T' J4 u8 o- f1 }0 `
) ]7 c" g+ {  H" L$ S
( G+ M0 E8 g$ Y) v0 b6 a+ Y5 ~/ xD=1.3,基本没过冲
9 `& N* N9 S' ?- R3 t
" K. i- a" n# v4 v! l8 }& J" u. s5 Z1 p' Q
D=2,响应迟滞,减慢了响应速度6 B/ F: H+ [% n6 B- H6 {

; q$ F) @+ L2 W: D$ N- t$ p3 g6 L& b* T1 Z
取以稍微有点过冲的D=1.3为最佳" t4 `4 g2 A% s" r
在多轴调试时,用手拍一下机臂或倾斜启动,机臂在复位时有少量过冲为宜。(不过我喜欢基本没过冲时的参数,这样在悬停时更稳)/ k1 {3 J5 V$ U: x* d
! ?6 I( v: |  ~3 U
3、可以继续增大P和D,让响应更快但过冲也不大。7 ^" S7 e: D  Y5 s9 j& I
P=2 D=1.8
5 n. P. c" Z! k4 o  G: T' c. k ! y" m3 h* Z" n; A! X6 Z
5 n4 R1 |) y( J. W, w0 k" _
在理论上可以这样演示,但在实际多轴的调试时,这一步一般不做,这是为了更安全和稳定。/ ~% U" g2 d* z' x* e
' q8 b" w: x$ Z: \5 ?3 b) O
4、加入0.2的偏差,看偏差对位移的影响
/ a( M7 ^8 m, [! J% B2 J从中间加入,代表一个外作用力。
8 _+ P" D) W9 |" J
% m7 d; ?  {. P- U8 h) }, ?可以看到,如果没有I的作用,偏差将一直存在,尽管P产生了一个抵抗力,但只是阻止了系统继续运动,但偏差一直在。
- @1 u0 H, {) E4 b在多轴调试时,如果持续的抬起一个机臂,机臂会持续的转动,抵抗力很小,放手后也不会回复。
0 S9 t6 v& _9 D0 Z2 P* i1 B! |- |2 s
( s. a$ j& z8 L1 T5、加I,看I对偏差的修正能力,I加快了响应速度,但也会导致过冲或振荡1 R! `0 Y( c1 b$ A  L4 W
I=0.3 基本可以消除偏差产生的影响,产生了少量过冲,但提高了在有偏差时系统的精度6 D  I  i! Z/ B0 F( M
  {* O  X& v, }! {$ M) h% K
% y6 U" k( V) j
I=3 进一步加快响应速度,但产生了振荡6 O) ]: u2 K) ]7 o) t. A

2 `5 T# }5 p# k9 B1 Q
8 y$ d2 l% R+ c+ g1 v$ {, O取基本能纠正偏差的I=0.3/ f% Z; l3 _: v+ K/ S/ K' K3 n# i
在多轴调试时,油门开至悬停油门,用手持续的抬起一个机臂,可以感到随着I的增加,抵抗力会逐步增大,持续时间加长。
: b, y' z6 Y+ {9 W" ~* a, W5 Y因为多轴的长期稳定由姿态模式的LEVEL参数来解决,所以I不用太大,取缺省参数就可以了,大概可以抵抗1-2秒左右。& Z7 V1 H3 }& Q) U8 ~7 m
2 [/ R2 w' M9 r6 K8 ]
6、增大一点D,减小一点I产生的过冲5 n9 ^: a8 e- i) g8 V' ]
取消偏差,因为I的加入,有一点过冲
$ T: l* b* n! d& i$ W( q$ L+ n$ T / r2 l' K3 c& O. I/ N, ^
( W% F( A1 }$ u8 M. O
增大D,D=2.2,减小过冲  g3 k$ x- x! t
$ G% Q: H" m/ Q7 G$ [& H( J

" o, m8 ]0 A# Y- v3 @7 N在实际多轴调试时,这一步一般不用,但是如果有必要,可以试一下。
. M( k6 q& D1 R- U. l) L9 j9 |4 ]4 Q5 W9 \1 z" f; {
好了,曲线演示完了,这同时也是多轴PID参数的调试过程,结合视频一起看,能更好的理解这一过程,希望对大家理解PID有所帮助。# d* d7 ^9 Q& r9 I# U, `! s, q
; s5 W$ b4 B& s1 ?) x# N
附:多轴飞行器PID调试演示器.xls6 D* M/ P0 z) {6 K" u" C* h
7 l  Y& w" G& Q( d
另外,试了一下,下载的文件名可能有问题,自己把文件名改为"多轴飞行器PID调试演示器.xls"就可以用了& l0 C9 I! _( Q* e6 t# O0 b

+ B3 Z# ~( m. K7 f, z0 ]
, l5 X9 n: g0 gPID的代码其实也很简单,主要是要了解其中的原理,才能更好地调整参数。为了方便新手们理解,楼主建立了一个数学模型来让大家了解。(只针对新手,老手就算了)/ {0 q$ C3 k: V
# |! [. U8 i9 P# w7 u( A$ m0 a
========圆点博士小四轴之PID控制模式分析=======
( N+ t) w6 @. N8 R6 ?* {( |& sPID控制的P是Proportional的缩写, 是比例的意思,I是Integral的缩写,是积分的意思,D是Derivative的缩写,是微分的意思。所以,PID就是我们常说的比例,积分,微分控制。
3 p" M9 B4 P- a  d' u3 A我们首先来看一个PID控制模型曲线图:, C3 R% I, |' V! |2 d  b
该图包含了比例控制,比例+积分控制,比较+积分+微分控制的电机响应图的对比。6 `( J% ?  j0 s4 B3 x. r
  n8 O# I6 k$ y
2014-5-29 13:22 上传
! p6 R/ Y1 l- m2 K4 p  P1 R下载附件 (37.76 KB)
. e+ V2 W" u5 D# l8 H. A8 B2 t" SPID模型 9 k4 s/ d, K- t! d0 @* \

7 z9 d6 K( n" F5 Q6 m7 r- g# b5 n# g) L9 J6 N5 p2 R
" |' ~, z% H! X9 L2 }; k
下面我们对曲线进行具体分析:
( Y' N8 E! ~9 n+ rPID中的比例控制是最容易理解的,比例控制就是把角度的误差乘以一个常数作为输出驱动。假定我们有一个理想模型的电机,1V电压的变化会带来小四轴1度的角度改变。假定现在电机控制电压是5V,小四轴在某一轴上的偏角是5度,目标角度是100度。我们把当前的电压量定义为Vin,把输出控制量定义为Vout。假定P等于0.2,那么比例控制的结果就是:
- E! R3 Y/ ?& q" ^第一次:Vout=Vin+(100-5)*P=5V+19V=24V,得到电机电压是24V,对应的小四轴角度是24度,距离目标角度的误差是100-24=76度。
  L% U" F- t6 t. |# x! J( P# f第二次:Vout=Vin+(100-24)*P=24V+15V=39V, 从而引起的角度是39度。
, B0 ^6 D- q0 g6 w! w我们看到,在这么的一个比例控制系统下,小四轴角度在慢慢地向目标角度靠近。' r8 Z+ `9 r5 ]$ u5 i5 ]5 {
3 f# T4 n) V& w, A: Y
PID中的积分控制就是把把所有角度误差相加起来,然后乘上一个常数作为输出驱动。在上述例子中,假定I=0.2, 我们来看看比例和积分控制同时起作用下的系统反应。2 v1 j$ |. B/ W4 }, n8 I8 }" k
第一次:Vout=Vin+(100-5)*P+(100-5)*I=5V+19V+19V=43V,这时候小四轴角度为43度。
3 e( {) o) A: H& i: m; O由于第一次控制前的误差是100-5=95,第二次控制前的误差是100-43=57,所以积分结果是152。! L# R7 \) h$ d, z% z; K
第二次:Vout=Vin+(100-43)*P+((100-5)+(100-43))*I=43V+11V+30V=84V, 这时候小四轴角度变为84度。
6 |2 J. t' Z6 [第三次:Vout=Vin+(100-84)*P+((100-5)+(100-43)+(100-84))*I=84+3V+33V=120V。这时小四轴角度变为120度。
$ J/ [+ ?1 b  t* ]2 }, P2 b我们看到,在增加了积分控制后,小四轴角度在快速向目标角度靠近。4 b1 e! k: a: M7 M; K" t

9 G- \8 F1 N3 }PID中的微分控制就是把角度的变化乘上一个常数来作为电机驱动输出。在上述例子中,假定D=0.2, 我们来看看比例,积分和微分共同控制下的系统反应。假定第一次前,电机转速保持5转,那么第一次前的角度变化为0。5 I+ k/ |6 L2 d) Z
第一次:Vout=Vin+(100-5)*P+(100-5)*I-(5-5)*D=5V+19V+19V-0V=43V,这时候小四轴角度为43度。; o5 V# ~, p2 _7 X$ [$ `5 c  M5 E
和上一次相比,角度从5度变化到了43度,所以小四周角度变化是43-5=38度。
: d* A% v: }5 U. P4 g: X第二次:Vout=Vin+(100-43)*P+((100-5)+(100-43))*I-(43-5)*D=43V+11V+30V-7V=77V, 这时候小四周角度77度。
1 p' \; a5 ]0 j' m$ f# \
( x1 {8 V5 m/ Y% n% c把上述的计算结果列出来,我们看到:; S* d8 y3 v/ _# l6 ?
2014-5-29 13:23 上传6 K% ~3 C( J' `
下载附件 (39.13 KB)   h6 C8 V# Z9 z0 h* k- l
PID计算
# w7 Y; V& f4 e, D1 d' q# c0 s
9 Y0 `  }/ A( p3 s. g- R/ B0 u
+ u4 y4 K) N+ D" I+ r' E. S5 R  B) w  s8 l7 L1 x* e
0 F4 p. W2 ]8 M4 c1 M6 K" j0 Q/ Y  S
从上面的数据,我们可以看到:+ L% t$ ]* T- |0 d2 j
1,单独比例控制的时候,数据慢慢接近目标 (图表中的红色线)
# d* s* Q* l* t' ?* m2,加入积分控制之后,数据快速接近目标 (图表中的蓝色线)( ~8 R! l- K# U6 G: k% l
3,微分控制起到抑制变化的作用。(图表中的绿色线)
$ g. J; a( l9 t5 E5 @2 N6 [) o6 C3 G1 c* V. B* M
有了这些理论基础,就可以写PID控制代码拉。% [1 P  _3 C0 `: p( X) @0 ]$ [
  r2 r' n# \- }# M% i5 c

PID.zip

下载

23.06 KB, 下载次数: 1560

评分

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

查看全部评分

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

举报

162个回答
magickk5520 回答时间:2015-9-5 20:52:26
初级的都是理解物理含义去调参数。- H8 Z5 _' T9 I$ R( X9 f4 b
中级的pid调节,需要根据控制模型建模,然后零极点对消,等效1型或2型系统,根据最佳整定法计算pi参数,这是掌握一些自控原理的基础了。9 i. A3 l5 G0 X* [3 `% `0 w  w% j
高级一些的应该都是用自抗扰控制器,抗饱和积分(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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版