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

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

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

; B$ I! A& R: k& J基于STM32和PID算法的小车车速控制
  C. Y2 _  S" E3 o8 w2 _8 L2 Q! S7 C
四轴飞行器飞行原理与双闭环PID控制% o( M3 o8 L7 z- y9 O: J1 X5 a

; l" M8 a* A( ~PID程序实例
' z& k+ k+ O% Y/ t& _+ Q! C
0 J' e! m" t$ j6 }; o2 j2 \) v
8 Z; M- J' V. F! T8 _该文档总结于以下两个博文:
' ]1 B, L9 @: _; r- c! F3 ]http://www.moz8.com/thread-36004-1-1.htmlhttp://www.eeboard.com/bbs/thread-32321-1-3.html! [: Q1 }+ K$ @1 p
9 d' {0 p4 R% c( V
为了更好的理解这个视频和PID参数的作用,特意根据多轴飞行器的原理和PID理论,编写了一个EXCEL图表,直观的来理解PID参数的作用。
9 c0 a3 k/ N0 _: U" t. \, i/ m在这个模型中:
5 C: e2 W7 w1 M7 ?2 _6 E' C. N* V# S1、假设输出是力,作用在一个质块上,使用加速度、速度、位移积分计算,评估输出对测量值产生的影响,跟多轴飞行器的运动模式比较接近。
: I) f$ z+ h9 _" q, C$ O2、让速度响应慢一个拍子,模拟电调和电机的响应滞后。
/ l7 V) C$ _  K: N( s3、加入阻尼,模拟空气的衰减作用
1 }% U$ W# m" I+ z4、引入偏差,用于体现I的作用,从中间加入,代表一个系统误差或外作用力
; o, Y& @; Z* v: C7 ?" T1 h  `0 D0 \) }" N
PID的作用概述:
, u* D; p9 S; t3 k* _/ q1、P产生响应速度和力度,过小响应慢,过大会产生振荡,是I和D的基础。: W* M: |6 U, E. L4 s% V' D, @
2、I在有系统误差和外力作用时消除偏差、提高精度,同时也会增加响应速度,产生过冲,过大会产生振荡。
/ |( T# ?7 a. g/ {6 }# Z' I. Y  ~3、D抑制过冲和振荡,过小系统会过冲,过大会减慢响应速度。D的另外一个作用是抵抗外界的突发干扰,阻止系统的突变。8 u9 Z) G5 d# v- D6 y! e) y
0 S, G$ n: [( _9 J5 O
通过这个模型和图表,一步步演示PID参数的作用和调试方法:+ R3 y0 m2 _4 A; A5 z
* }/ q4 T) ~$ X
1、逐步增大P,看P对响应速度和力度的影响,调到系统发生振荡,再减少一点P
8 i' L7 U4 i8 R! b/ ]7 E. M. U. x$ X; W2 `* V: N
当P=0.1时,响应很慢,但不会振荡3 d% z0 ^' R6 C4 V- z& Y

( s1 N/ _! l$ ~- p# @& N) _粗黑线是系统响应,洋红线是目标值。
  a1 M" r/ \; O
5 c; q) I. y0 I: d7 N  m- j逐步增大P,P=1,有振荡,但慢慢在衰减
% w% p% ?) Z: @
8 p9 w8 E1 a9 e1 Z" k9 c4 K3 t- o- d5 G6 q
继续增大P,P=3,振荡会逐步加大
  h% i8 o  q# x3 i " f4 `0 q, m4 a$ @7 T" I

  O$ [/ z% N5 \9 x- e取振荡但会衰减的P=1继续调整
9 Z( m! l% S/ n5 [8 i6 r. Q" r在多轴调试时,当振荡发生时,再稍微减小一点P。% a' l* [9 N- P  O, u) Q2 }! q7 W6 J

7 g! O' S+ n  ]3 O/ n) F/ t; g2、加入D,看D对振荡的控制能力,D过小会发生过冲,D过大会迟滞,以稍微有点过冲为最佳' F  F, D& Q) _3 r3 Q1 |' k
9 w/ _3 |  h( B' k
D=0.5,有较大的过冲和少量振荡,衰减很快
$ ~; m6 p3 ~4 h7 p; N' z 8 n* _$ Q# c1 n* C
$ I" c. D$ }5 C; y3 e
D=1.3,基本没过冲4 {. L# q' m9 r5 ?5 P) _8 Z9 s

- W8 g  g* O- d6 |* }8 h- a: f, R
4 D2 O: ~4 f  A. Y# i: ~D=2,响应迟滞,减慢了响应速度( O4 N' t5 u9 s8 w

- a' o/ m9 p- ?5 O0 S! t/ L5 q6 `* {* Z/ j- a
取以稍微有点过冲的D=1.3为最佳: x0 Y5 M# |8 _! m: N
在多轴调试时,用手拍一下机臂或倾斜启动,机臂在复位时有少量过冲为宜。(不过我喜欢基本没过冲时的参数,这样在悬停时更稳)
. U9 M8 I) `5 b7 z/ o/ A8 f' D
1 c- O( Z2 s/ e7 d1 B3、可以继续增大P和D,让响应更快但过冲也不大。9 O. w+ }% a$ m! Q' r
P=2 D=1.8
& n9 {2 ^7 F! ^. t. m4 t - ?/ E/ m0 |6 M" p; c: t

  F4 C! ?2 w! A在理论上可以这样演示,但在实际多轴的调试时,这一步一般不做,这是为了更安全和稳定。
1 l4 x( E% _. y$ T6 q' y
+ Z  ^# C5 c9 p- O$ ?4 I+ M2 J  D+ x4、加入0.2的偏差,看偏差对位移的影响3 u7 c: J! ~$ {
从中间加入,代表一个外作用力。
6 q' A8 e  g% z* ` 0 E) N5 R5 r6 U5 p2 ?- w6 j
可以看到,如果没有I的作用,偏差将一直存在,尽管P产生了一个抵抗力,但只是阻止了系统继续运动,但偏差一直在。" ~0 g9 ?2 ]* f: Z+ K
在多轴调试时,如果持续的抬起一个机臂,机臂会持续的转动,抵抗力很小,放手后也不会回复。' U8 J! O0 H  ?- P& C8 r

* M, }/ N$ K2 E* d1 Z- \) o+ D5 }5、加I,看I对偏差的修正能力,I加快了响应速度,但也会导致过冲或振荡; t& E( c: x# t; i+ M3 y3 q, f  l
I=0.3 基本可以消除偏差产生的影响,产生了少量过冲,但提高了在有偏差时系统的精度- ^: l+ s: ~5 e: P2 b
3 Y  K  X; x# w5 W( D

9 l, q+ i! M! c# C  h9 C5 ~I=3 进一步加快响应速度,但产生了振荡
+ J% \3 ]3 |6 n4 y  u # w* z9 M2 g" [0 E+ x
' U& t  E2 k' n1 F
取基本能纠正偏差的I=0.3
  L$ m4 [+ t, k4 o, X" M在多轴调试时,油门开至悬停油门,用手持续的抬起一个机臂,可以感到随着I的增加,抵抗力会逐步增大,持续时间加长。
  Y9 y, W! X& w$ Y# i因为多轴的长期稳定由姿态模式的LEVEL参数来解决,所以I不用太大,取缺省参数就可以了,大概可以抵抗1-2秒左右。
# R, w5 Y) e5 ^" q1 ], e3 U9 Z& F
* n$ Y& e" J0 i5 t! D5 u* ~6、增大一点D,减小一点I产生的过冲- }* v/ @. z! E+ r: `8 ^
取消偏差,因为I的加入,有一点过冲
9 Z$ @: m7 v& X0 \6 R
4 R. w/ y- b1 [9 }, V3 D; q4 ^
$ n6 m& B' k3 L增大D,D=2.2,减小过冲
' N* t& F/ ?6 W1 C; e. z9 } # ?2 I7 n1 D, o. D

6 a  r( W/ d) Z# E& T在实际多轴调试时,这一步一般不用,但是如果有必要,可以试一下。
) ]5 U7 O  Q( ~: u4 M- t8 e( V0 L* S( T8 [7 l
好了,曲线演示完了,这同时也是多轴PID参数的调试过程,结合视频一起看,能更好的理解这一过程,希望对大家理解PID有所帮助。
" g: T5 `5 o- {  `4 K& Q
- T- {' M" r2 J% X附:多轴飞行器PID调试演示器.xls! B7 I! J# Q2 O/ G# |7 r

# L( c# T5 W. x$ u0 D另外,试了一下,下载的文件名可能有问题,自己把文件名改为"多轴飞行器PID调试演示器.xls"就可以用了
0 J( ]( Y# w( G$ p
" V6 E9 V- N- P4 T6 i1 @
8 B& h  q$ e# B+ ~9 h% ^PID的代码其实也很简单,主要是要了解其中的原理,才能更好地调整参数。为了方便新手们理解,楼主建立了一个数学模型来让大家了解。(只针对新手,老手就算了)
( y8 g4 N; ^% G" U+ ~
0 d) u9 n2 r2 l, C% I1 L1 i% P9 \! E========圆点博士小四轴之PID控制模式分析=======0 {5 P' L6 j& q) _
PID控制的P是Proportional的缩写, 是比例的意思,I是Integral的缩写,是积分的意思,D是Derivative的缩写,是微分的意思。所以,PID就是我们常说的比例,积分,微分控制。
! R5 r4 h; E7 G- i% V. N我们首先来看一个PID控制模型曲线图:
1 Y5 J8 l. L4 ]9 l7 x. O该图包含了比例控制,比例+积分控制,比较+积分+微分控制的电机响应图的对比。+ A; \8 b3 d' F5 F  h9 E  f! J' a
7 o, ]* z8 H: V& S8 A7 I0 ?
2014-5-29 13:22 上传
/ K9 y  m9 ~4 F& k  H下载附件 (37.76 KB)
5 m! [* ?! r) y7 C. G0 `1 a2 B+ bPID模型
' \" q2 C; R! M
2 C: u: s  l4 O' c2 k6 d. _) E/ C  ~* P3 }

% Q4 i3 l3 u/ j9 ^3 K5 v  i: y2 W5 h下面我们对曲线进行具体分析:
6 o8 ^' ~3 ^1 g7 wPID中的比例控制是最容易理解的,比例控制就是把角度的误差乘以一个常数作为输出驱动。假定我们有一个理想模型的电机,1V电压的变化会带来小四轴1度的角度改变。假定现在电机控制电压是5V,小四轴在某一轴上的偏角是5度,目标角度是100度。我们把当前的电压量定义为Vin,把输出控制量定义为Vout。假定P等于0.2,那么比例控制的结果就是:
* B+ q1 K) z6 {7 l9 n  d第一次:Vout=Vin+(100-5)*P=5V+19V=24V,得到电机电压是24V,对应的小四轴角度是24度,距离目标角度的误差是100-24=76度。$ n# j, t0 F) ?& |
第二次:Vout=Vin+(100-24)*P=24V+15V=39V, 从而引起的角度是39度。& d6 q7 ?/ J# j$ F3 u
我们看到,在这么的一个比例控制系统下,小四轴角度在慢慢地向目标角度靠近。
8 A+ v) m# k" T, }
: U) @8 |* G3 h8 y; J6 cPID中的积分控制就是把把所有角度误差相加起来,然后乘上一个常数作为输出驱动。在上述例子中,假定I=0.2, 我们来看看比例和积分控制同时起作用下的系统反应。/ f# T; Y5 D6 B& c7 D
第一次:Vout=Vin+(100-5)*P+(100-5)*I=5V+19V+19V=43V,这时候小四轴角度为43度。
& \3 @5 p7 Q' @, s* y3 D由于第一次控制前的误差是100-5=95,第二次控制前的误差是100-43=57,所以积分结果是152。7 Y* Y5 u* E; i; H
第二次:Vout=Vin+(100-43)*P+((100-5)+(100-43))*I=43V+11V+30V=84V, 这时候小四轴角度变为84度。2 e% y" R7 }+ r8 ]" k
第三次:Vout=Vin+(100-84)*P+((100-5)+(100-43)+(100-84))*I=84+3V+33V=120V。这时小四轴角度变为120度。' P( R0 }8 Q/ J! D5 o7 k" T: R! V
我们看到,在增加了积分控制后,小四轴角度在快速向目标角度靠近。6 w+ k. O. K' v" X2 ]4 W$ r  k$ X1 a
% N0 Q' g% [, ~: l* b% R
PID中的微分控制就是把角度的变化乘上一个常数来作为电机驱动输出。在上述例子中,假定D=0.2, 我们来看看比例,积分和微分共同控制下的系统反应。假定第一次前,电机转速保持5转,那么第一次前的角度变化为0。
, q; d6 H' S2 R  a第一次:Vout=Vin+(100-5)*P+(100-5)*I-(5-5)*D=5V+19V+19V-0V=43V,这时候小四轴角度为43度。
* Z* }- Y# S) ~和上一次相比,角度从5度变化到了43度,所以小四周角度变化是43-5=38度。
4 A+ Q! Q. Q8 P6 ~1 J* l1 n0 n第二次:Vout=Vin+(100-43)*P+((100-5)+(100-43))*I-(43-5)*D=43V+11V+30V-7V=77V, 这时候小四周角度77度。0 k7 m. k9 _. R$ C
: g5 S. I/ z1 A) S# V/ `8 Y7 J3 S
把上述的计算结果列出来,我们看到:
$ g% F+ k; y4 {3 D; E' @ 2014-5-29 13:23 上传
( f6 w$ a$ w+ g( k6 R下载附件 (39.13 KB) 9 c4 l: L& r; ^/ t8 g- B" [
PID计算 1 }' I8 b, z8 p2 n* J+ i
+ V+ W  d; O% T7 N& ~

: G" l3 z6 v' G: G9 `3 y- _% w; h+ L4 I; `
, ~- a* |5 d3 t3 i% J% U
从上面的数据,我们可以看到:5 S3 V6 @# a. o% l
1,单独比例控制的时候,数据慢慢接近目标 (图表中的红色线)
) f% ]) {, d* V& v2 M7 w2,加入积分控制之后,数据快速接近目标 (图表中的蓝色线)
, n, R, P3 _  {3 z6 G& M$ r3,微分控制起到抑制变化的作用。(图表中的绿色线)
$ F) L4 @# V/ }2 R
) h* `, G% O+ S  V& [9 v3 N有了这些理论基础,就可以写PID控制代码拉。$ L! R6 C5 C8 B

' J& H. {) W8 j1 W  G9 U; z

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
初级的都是理解物理含义去调参数。
1 z) B/ O; S- d( e6 J5 j1 t中级的pid调节,需要根据控制模型建模,然后零极点对消,等效1型或2型系统,根据最佳整定法计算pi参数,这是掌握一些自控原理的基础了。
& E; }% r: C9 E5 j4 H, k# A( 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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版