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

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

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

! U$ |" L* y6 r" [- ?- u; J+ N) Z基于STM32和PID算法的小车车速控制
  o9 O2 m- }1 K' _+ ?" `4 J& v6 K/ ?# Y, n& E# \2 ^% r; V% a
四轴飞行器飞行原理与双闭环PID控制9 |) A2 `/ a  ^

* {$ X2 P( W* ?. P9 y* RPID程序实例4 A* I% ~( k+ d* `: a! S" H7 j% R

& d0 r* T1 r0 y3 q. b. O& P! s  T
( F0 R7 p' h* P- W1 W7 _2 o该文档总结于以下两个博文:# a! _' E; P- h+ N  x# R
http://www.moz8.com/thread-36004-1-1.htmlhttp://www.eeboard.com/bbs/thread-32321-1-3.html7 T9 V/ m8 P* Q, P- E! k( l6 S

, F  f9 [. `6 B9 Z为了更好的理解这个视频和PID参数的作用,特意根据多轴飞行器的原理和PID理论,编写了一个EXCEL图表,直观的来理解PID参数的作用。
" {5 @& C. T: n$ T! `6 Z6 r在这个模型中:% }0 m2 }2 v: y3 M
1、假设输出是力,作用在一个质块上,使用加速度、速度、位移积分计算,评估输出对测量值产生的影响,跟多轴飞行器的运动模式比较接近。
- C8 b# V2 t* {) @: T% d2、让速度响应慢一个拍子,模拟电调和电机的响应滞后。
0 G2 f- V( o4 B% N) F! R3、加入阻尼,模拟空气的衰减作用7 D4 _3 c' D' p0 {7 @; n
4、引入偏差,用于体现I的作用,从中间加入,代表一个系统误差或外作用力
* a) Z( I$ |' L$ _3 Z7 O" P! X% A) U: [: G5 Y, H- A! _) n" D6 L
PID的作用概述:
# m1 Q6 t" m* E$ J* f1、P产生响应速度和力度,过小响应慢,过大会产生振荡,是I和D的基础。' E' K$ I4 R1 P  L9 w5 `0 I, z
2、I在有系统误差和外力作用时消除偏差、提高精度,同时也会增加响应速度,产生过冲,过大会产生振荡。
( t3 E2 _( E* p# T5 D9 v, \3 O# Q3、D抑制过冲和振荡,过小系统会过冲,过大会减慢响应速度。D的另外一个作用是抵抗外界的突发干扰,阻止系统的突变。8 i  Y1 \" Y% t. U8 x

  V9 l8 F1 M! p; T$ `通过这个模型和图表,一步步演示PID参数的作用和调试方法:
$ {' f& c6 W6 k; M/ s' L1 r1 v# i: Q( ?: B& ~0 G( B/ w
1、逐步增大P,看P对响应速度和力度的影响,调到系统发生振荡,再减少一点P
1 d# e7 u/ F* c0 ?5 o8 m( V. {/ K3 g/ S
当P=0.1时,响应很慢,但不会振荡- `+ l* \; E+ y0 ]6 I; i
! w$ c' L7 ?# P, V  ~" c' Q) H9 v: d
粗黑线是系统响应,洋红线是目标值。5 x! i8 d/ W4 S# B% g1 x, R

0 y% J7 a: h" `* o6 D逐步增大P,P=1,有振荡,但慢慢在衰减- _% _# k& Y( l1 ?

& K1 y( r2 w) f& G3 X5 d! b' e, C7 e% q: U$ c
继续增大P,P=3,振荡会逐步加大  H# E3 x6 ?- D5 {% N
  {2 X- c5 A* \/ ~9 t0 [

3 q1 r  @+ l0 R  h4 K1 ]取振荡但会衰减的P=1继续调整1 G6 H& c6 P: j  n
在多轴调试时,当振荡发生时,再稍微减小一点P。
& z. t. ^& H3 m  u
7 c4 Q7 C7 C5 C: P2、加入D,看D对振荡的控制能力,D过小会发生过冲,D过大会迟滞,以稍微有点过冲为最佳
0 N5 D. w# T; |' W) p  b; P
! A1 {' |, J6 ~+ x6 ^1 D8 q1 |- o. OD=0.5,有较大的过冲和少量振荡,衰减很快2 B) [% k; x+ M
, }, Z+ F) e3 p4 I: a4 _

: M( P1 o' O# \' p1 F, U( s5 tD=1.3,基本没过冲
0 r1 a! d, j( R: |$ n. Z7 ^
; ^& ~' q  X# }7 J/ ]
8 |* K3 k) K& U. c6 Y2 t" I+ fD=2,响应迟滞,减慢了响应速度
' v1 U: j$ N. t: j3 e4 J" X) C0 U
* _( R1 N- E( Y, Q) A! K/ u8 p/ B4 I4 j
取以稍微有点过冲的D=1.3为最佳' W" t  m/ j& B( D
在多轴调试时,用手拍一下机臂或倾斜启动,机臂在复位时有少量过冲为宜。(不过我喜欢基本没过冲时的参数,这样在悬停时更稳)
0 r2 @* z9 ^, C9 g+ x3 U3 y7 f0 g- r
3、可以继续增大P和D,让响应更快但过冲也不大。
+ m2 t& ?2 ]1 c+ Z; j# u3 WP=2 D=1.8
9 }. D/ t; G* f4 n' _- j8 t 9 C/ Z7 s( q% W0 \. x) [$ a8 j9 @, U
4 S4 P8 L# O9 I6 Q' P/ m. ?
在理论上可以这样演示,但在实际多轴的调试时,这一步一般不做,这是为了更安全和稳定。
, c; {& I5 N2 k& L% N2 g
) b3 y/ [2 Z; K2 ^0 ?4、加入0.2的偏差,看偏差对位移的影响
1 D$ P) }8 [; j+ o7 Q+ C! B从中间加入,代表一个外作用力。7 F" B( D* W  O- L5 s$ p
* n) O- a& ?2 z
可以看到,如果没有I的作用,偏差将一直存在,尽管P产生了一个抵抗力,但只是阻止了系统继续运动,但偏差一直在。$ ?* X/ t7 k$ H2 ^3 c% L; Q% N
在多轴调试时,如果持续的抬起一个机臂,机臂会持续的转动,抵抗力很小,放手后也不会回复。+ Z) y! W7 c5 r3 C
! J; M) h4 T* R% N
5、加I,看I对偏差的修正能力,I加快了响应速度,但也会导致过冲或振荡
7 Y! [6 ~' K, e7 t& h1 ?) c9 g( VI=0.3 基本可以消除偏差产生的影响,产生了少量过冲,但提高了在有偏差时系统的精度) f- Z# v" J9 Q3 A' y
9 q' \6 T: H4 q" i) T- s$ X
  W. v8 A. z& q" _0 K  |3 J
I=3 进一步加快响应速度,但产生了振荡; x! e+ S  P3 B8 c# S8 }, z  ~! x
7 [6 h; e! R! w" _$ O% S- v

0 M/ Q% B; ?" U& `/ L取基本能纠正偏差的I=0.3! }/ g( R: K$ L! H7 q5 o& @1 B" w
在多轴调试时,油门开至悬停油门,用手持续的抬起一个机臂,可以感到随着I的增加,抵抗力会逐步增大,持续时间加长。" W0 H: j8 }, M( n
因为多轴的长期稳定由姿态模式的LEVEL参数来解决,所以I不用太大,取缺省参数就可以了,大概可以抵抗1-2秒左右。
/ @3 R( M- d# e$ y- G) o2 q: m% t! i* n) ^( P3 \% d1 y. s7 S
6、增大一点D,减小一点I产生的过冲
! P; d0 b  i1 J: a7 J7 O* h取消偏差,因为I的加入,有一点过冲1 ^- ^9 I  z8 _; C# T; z
" D2 I# ]/ l! H! Z8 R6 N
. R2 ?1 K- K3 d" }  c( I
增大D,D=2.2,减小过冲
! R4 ^  F. @( u$ f. D3 ~ ' w! b6 B; \5 X$ r7 m, _
, g1 D! }4 _; L( p. ~
在实际多轴调试时,这一步一般不用,但是如果有必要,可以试一下。
5 _6 c4 R* m; o, x
* Q7 q. ^% r6 K- F' l好了,曲线演示完了,这同时也是多轴PID参数的调试过程,结合视频一起看,能更好的理解这一过程,希望对大家理解PID有所帮助。' D5 R6 l. K8 b6 H: G, p: X- B
  u1 Q( ^. M* Z4 i' n$ R
附:多轴飞行器PID调试演示器.xls
* ~+ n, o+ W7 V2 x: ?3 d! t) l9 g# z; q; J" ~
另外,试了一下,下载的文件名可能有问题,自己把文件名改为"多轴飞行器PID调试演示器.xls"就可以用了
1 C2 a' y' p! d& Q
% G2 H4 O: x5 i8 s
$ L# }9 s/ E" O6 {! X0 GPID的代码其实也很简单,主要是要了解其中的原理,才能更好地调整参数。为了方便新手们理解,楼主建立了一个数学模型来让大家了解。(只针对新手,老手就算了)( z8 I: {( r3 h/ Y9 u) f

5 m5 \) E4 |; J7 v========圆点博士小四轴之PID控制模式分析=======
! b4 r/ T( a- T& JPID控制的P是Proportional的缩写, 是比例的意思,I是Integral的缩写,是积分的意思,D是Derivative的缩写,是微分的意思。所以,PID就是我们常说的比例,积分,微分控制。$ I  ?2 p$ U. t: c9 M
我们首先来看一个PID控制模型曲线图:
1 y5 Z6 ]6 l; ~7 g6 E该图包含了比例控制,比例+积分控制,比较+积分+微分控制的电机响应图的对比。" t; i) h4 ^/ J/ D# s& W
" Q( c5 s' i6 {5 b- ?& v/ Y
2014-5-29 13:22 上传+ \* k  A4 i/ x+ G
下载附件 (37.76 KB)
( M2 p1 s! X+ X# E7 iPID模型 7 @0 B* t! w3 U+ [
* V- d6 a9 u7 |! n$ g" ^: a
. x3 F/ F" M( m, |
" A3 g. }. j9 d2 U9 t/ x
下面我们对曲线进行具体分析:' G; ?( m; e" X9 [1 I. T$ V
PID中的比例控制是最容易理解的,比例控制就是把角度的误差乘以一个常数作为输出驱动。假定我们有一个理想模型的电机,1V电压的变化会带来小四轴1度的角度改变。假定现在电机控制电压是5V,小四轴在某一轴上的偏角是5度,目标角度是100度。我们把当前的电压量定义为Vin,把输出控制量定义为Vout。假定P等于0.2,那么比例控制的结果就是:
' ?4 x! {: T9 J8 s* n1 g( h0 O. |第一次:Vout=Vin+(100-5)*P=5V+19V=24V,得到电机电压是24V,对应的小四轴角度是24度,距离目标角度的误差是100-24=76度。
# s+ o$ Q1 v4 ?4 w: `' F第二次:Vout=Vin+(100-24)*P=24V+15V=39V, 从而引起的角度是39度。3 x( y3 Q" P# \
我们看到,在这么的一个比例控制系统下,小四轴角度在慢慢地向目标角度靠近。
  S4 Q" l$ p& X, @  B0 g. G1 t4 G3 h8 J( P2 w7 ^- e
PID中的积分控制就是把把所有角度误差相加起来,然后乘上一个常数作为输出驱动。在上述例子中,假定I=0.2, 我们来看看比例和积分控制同时起作用下的系统反应。
9 q* T6 M* y+ n7 Z5 I! Z; g4 e3 ^  k第一次:Vout=Vin+(100-5)*P+(100-5)*I=5V+19V+19V=43V,这时候小四轴角度为43度。$ Q8 Q1 k4 X. @& l: r5 H" ~
由于第一次控制前的误差是100-5=95,第二次控制前的误差是100-43=57,所以积分结果是152。  z0 q) Q$ m/ B% o/ k1 S& G
第二次:Vout=Vin+(100-43)*P+((100-5)+(100-43))*I=43V+11V+30V=84V, 这时候小四轴角度变为84度。
" y6 g  N6 p& k/ z. ]9 m第三次:Vout=Vin+(100-84)*P+((100-5)+(100-43)+(100-84))*I=84+3V+33V=120V。这时小四轴角度变为120度。0 f; C6 k6 `$ U% X5 |5 c
我们看到,在增加了积分控制后,小四轴角度在快速向目标角度靠近。2 [' [# S9 Z  A, _" b: G6 Y

0 |& g" G' j2 u# _# }PID中的微分控制就是把角度的变化乘上一个常数来作为电机驱动输出。在上述例子中,假定D=0.2, 我们来看看比例,积分和微分共同控制下的系统反应。假定第一次前,电机转速保持5转,那么第一次前的角度变化为0。
: ^- H; F# I7 K( `4 G第一次:Vout=Vin+(100-5)*P+(100-5)*I-(5-5)*D=5V+19V+19V-0V=43V,这时候小四轴角度为43度。5 G$ L$ o8 r, r! M
和上一次相比,角度从5度变化到了43度,所以小四周角度变化是43-5=38度。5 \! ?/ f% s% _
第二次:Vout=Vin+(100-43)*P+((100-5)+(100-43))*I-(43-5)*D=43V+11V+30V-7V=77V, 这时候小四周角度77度。$ j  x/ C  K% r3 B
9 [( K1 D9 c- g' y/ }+ \8 [& g6 e8 ]
把上述的计算结果列出来,我们看到:
) m( M  a: S1 ^0 P  B 2014-5-29 13:23 上传
3 b9 h# O% t* \- O. G+ o$ i# d下载附件 (39.13 KB) . E# I( N  |% {  O% M, F" C5 p6 s
PID计算
, ~+ v5 ~! b8 h
3 T4 P: ~( I1 o  l) L  z: K) x% ^) z  O! D/ z) z8 n
# `7 h. i+ }, I2 C

8 R8 \2 R2 g8 L$ O2 Y" j0 c从上面的数据,我们可以看到:5 G, g- U- _  w1 e2 |& D6 H! T9 f8 K
1,单独比例控制的时候,数据慢慢接近目标 (图表中的红色线)
! b# M  h6 `. M+ J  F) }2,加入积分控制之后,数据快速接近目标 (图表中的蓝色线)
% W9 o- w/ p( ]4 Y; \8 x1 D3,微分控制起到抑制变化的作用。(图表中的绿色线)( Q( N. j( k0 J, K+ Z6 g
1 i* O9 d( N  j1 a8 ?5 K# O) I6 ?
有了这些理论基础,就可以写PID控制代码拉。
) u) S5 S1 s3 h, u: h4 f
% F/ O& O5 S  P* u

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
初级的都是理解物理含义去调参数。* z; M8 t) S1 P. v8 \
中级的pid调节,需要根据控制模型建模,然后零极点对消,等效1型或2型系统,根据最佳整定法计算pi参数,这是掌握一些自控原理的基础了。5 y. K3 O8 b* F
高级一些的应该都是用自抗扰控制器,抗饱和积分(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 手机版