请选择 进入手机版 | 继续访问电脑版

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

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

[复制链接]
mtg 发布时间:2015-4-27 15:50
3 {0 d  O$ b' ^, M
基于STM32和PID算法的小车车速控制
( N$ P1 L  \: i6 N! J8 I3 R. D" a+ x. i/ S0 d+ K+ ~7 @
四轴飞行器飞行原理与双闭环PID控制
4 R% \" v5 V6 Q& I9 I/ E
* v  v; n0 }) ^6 `% m7 Z9 O* BPID程序实例$ W5 E" H/ j; Z3 s. P

% s" V0 }! J' N* T0 w) R
' c9 Y. `& c8 K( k该文档总结于以下两个博文:
) |: W" P, L1 Ahttp://www.moz8.com/thread-36004-1-1.htmlhttp://www.eeboard.com/bbs/thread-32321-1-3.html
3 O% U- e0 f3 r4 F' E$ I& X, C, N( x4 ^7 s. \5 l) m
为了更好的理解这个视频和PID参数的作用,特意根据多轴飞行器的原理和PID理论,编写了一个EXCEL图表,直观的来理解PID参数的作用。9 _* q4 J; K3 q) _/ n6 D. ~
在这个模型中:
" ~8 }, b  ^$ O( n- X& v1、假设输出是力,作用在一个质块上,使用加速度、速度、位移积分计算,评估输出对测量值产生的影响,跟多轴飞行器的运动模式比较接近。; I4 I! e! m. t3 A8 x3 K
2、让速度响应慢一个拍子,模拟电调和电机的响应滞后。
9 Y7 }& G8 ?' h4 m3、加入阻尼,模拟空气的衰减作用  u  n; x) K6 y( b4 v
4、引入偏差,用于体现I的作用,从中间加入,代表一个系统误差或外作用力
! |! j2 o5 I8 M  p8 a% R) N; o$ ?4 ~7 S+ q. ^( |
PID的作用概述:  B! Y' B9 Q; o3 ^: Y6 O
1、P产生响应速度和力度,过小响应慢,过大会产生振荡,是I和D的基础。
1 j9 a; F, Y7 Z& s/ S+ x  \2 Q2、I在有系统误差和外力作用时消除偏差、提高精度,同时也会增加响应速度,产生过冲,过大会产生振荡。0 P$ o4 a6 K# m% o5 U
3、D抑制过冲和振荡,过小系统会过冲,过大会减慢响应速度。D的另外一个作用是抵抗外界的突发干扰,阻止系统的突变。
# j3 x7 F2 v; t1 b$ o1 F# h
1 e3 j' z& j1 c7 I# [0 s+ ~$ p0 q3 V通过这个模型和图表,一步步演示PID参数的作用和调试方法:* W& I5 g8 ^6 \

' N% a& a0 T( B1、逐步增大P,看P对响应速度和力度的影响,调到系统发生振荡,再减少一点P) v5 W" e' l) C0 {
$ q" z+ J  ~0 n  W1 H3 q
当P=0.1时,响应很慢,但不会振荡
$ D( R1 q  f2 h/ O 0 K8 o/ S5 K$ W3 k+ s
粗黑线是系统响应,洋红线是目标值。) b* X$ ?5 x$ u( u! `+ B# v
0 u; c) l2 `' B$ H1 b
逐步增大P,P=1,有振荡,但慢慢在衰减1 C" e0 ?. V6 L# C# P( d; O+ p; \; K
! \% i0 c. D$ I: h8 K' \+ k
+ m1 v+ W+ V% G" F
继续增大P,P=3,振荡会逐步加大- ]8 Z+ S+ G# i0 v1 h
% a& r0 f# j) i
- O; g& a4 ~% }( `" o$ C6 x
取振荡但会衰减的P=1继续调整3 ^' q) L8 w. [( P' \/ H
在多轴调试时,当振荡发生时,再稍微减小一点P。
+ {# {2 q% W( r% t3 s9 C3 y8 {7 s4 G" b, z4 E; p; p8 R9 Z
2、加入D,看D对振荡的控制能力,D过小会发生过冲,D过大会迟滞,以稍微有点过冲为最佳& u) M; ^6 [: c' _! s

; R, `* c# u3 @& n+ P7 g& J  YD=0.5,有较大的过冲和少量振荡,衰减很快
8 m. E: l3 Z/ @
0 ~  C& h$ E3 I& d/ V* b0 ]7 Q0 u& J8 u5 [3 J( }* i1 t2 l9 p
D=1.3,基本没过冲# Q' z. {) f) l- ?4 i5 D6 C! e

, ^0 ~7 O& w& P$ _% y; L/ M  |" g' V- o* n' m2 E" E
D=2,响应迟滞,减慢了响应速度8 Y9 a8 l- [4 i% _3 I
2 J+ }' i' U; [; i4 a
) W) o% q: R+ Q7 a" l! X
取以稍微有点过冲的D=1.3为最佳$ L- i5 `# z0 _; E
在多轴调试时,用手拍一下机臂或倾斜启动,机臂在复位时有少量过冲为宜。(不过我喜欢基本没过冲时的参数,这样在悬停时更稳)6 U& \1 y- u- ?4 Q/ @1 k( O. c
& z' l2 K4 i+ {+ U
3、可以继续增大P和D,让响应更快但过冲也不大。
$ Q$ y' b. E9 m/ L# {% W* bP=2 D=1.8( ?: T2 w% F, S4 @
5 w# F$ G0 ?, }' Y3 f( X$ b1 V
; g1 `/ E8 `0 H9 [
在理论上可以这样演示,但在实际多轴的调试时,这一步一般不做,这是为了更安全和稳定。) m& }* d( k1 X: O

2 q& L: R5 H4 g1 ~% X  d4、加入0.2的偏差,看偏差对位移的影响3 F: B* w+ p2 A  R2 X  \
从中间加入,代表一个外作用力。2 b0 m# T1 a& u8 T
3 a: p9 x8 ~3 n2 L3 Z2 R
可以看到,如果没有I的作用,偏差将一直存在,尽管P产生了一个抵抗力,但只是阻止了系统继续运动,但偏差一直在。7 Z9 L2 V8 Z6 V! L4 }4 b
在多轴调试时,如果持续的抬起一个机臂,机臂会持续的转动,抵抗力很小,放手后也不会回复。
. O5 B6 k& \' ~3 z& Q+ e
1 ~& b: H/ R( W5、加I,看I对偏差的修正能力,I加快了响应速度,但也会导致过冲或振荡1 E, S* B# x; g5 H, p
I=0.3 基本可以消除偏差产生的影响,产生了少量过冲,但提高了在有偏差时系统的精度: C2 {! E. ]$ a, |: U
  w6 X  s0 k+ F9 a# n! w

) p) ]8 M4 Y" oI=3 进一步加快响应速度,但产生了振荡8 e) a; V) h- R1 b

- K' f" T2 F& o5 v8 u" U" J; g( j, d
1 |5 U2 E/ q+ h! N; y' @取基本能纠正偏差的I=0.3
/ U+ O2 }. H1 U) d在多轴调试时,油门开至悬停油门,用手持续的抬起一个机臂,可以感到随着I的增加,抵抗力会逐步增大,持续时间加长。
- z+ _+ m: w$ O9 d因为多轴的长期稳定由姿态模式的LEVEL参数来解决,所以I不用太大,取缺省参数就可以了,大概可以抵抗1-2秒左右。
$ Y8 c; [9 O( I: F
( N8 \& Q' o0 I4 w8 D9 ^) n9 b) v6、增大一点D,减小一点I产生的过冲
$ `5 P# E- X& t. A& Y取消偏差,因为I的加入,有一点过冲
; ^  f+ ?) [. ^3 d0 F3 s
9 R, e% i2 }/ K5 \9 e
" B' M5 k0 R7 A* E9 ~: W; o4 Z增大D,D=2.2,减小过冲$ w& a; B% e; ?! w2 `
& z/ [% @) c+ ^" m# e& }
5 w5 c2 m# D9 b/ o+ p6 Y
在实际多轴调试时,这一步一般不用,但是如果有必要,可以试一下。
2 E  F% o* X; T9 V* u8 O0 B; ~  h
好了,曲线演示完了,这同时也是多轴PID参数的调试过程,结合视频一起看,能更好的理解这一过程,希望对大家理解PID有所帮助。, Q* g7 Z( v8 G, i

% c3 t& @5 d1 h/ M. i" h附:多轴飞行器PID调试演示器.xls- q9 C3 L& [; {: a, S% h# Y3 r! @

- E) E) p% |. [7 v# j9 \另外,试了一下,下载的文件名可能有问题,自己把文件名改为"多轴飞行器PID调试演示器.xls"就可以用了( _& U4 m, J( w) A$ T

5 C2 O6 Y- W- A2 m
2 C) k! b7 `9 p% U- GPID的代码其实也很简单,主要是要了解其中的原理,才能更好地调整参数。为了方便新手们理解,楼主建立了一个数学模型来让大家了解。(只针对新手,老手就算了)
8 V9 H( z4 s6 j$ V- _# i; X& G+ j2 J; t( g' n3 [" x  d
========圆点博士小四轴之PID控制模式分析=======5 a2 [2 t9 n! _# j6 `6 p9 J# `. B
PID控制的P是Proportional的缩写, 是比例的意思,I是Integral的缩写,是积分的意思,D是Derivative的缩写,是微分的意思。所以,PID就是我们常说的比例,积分,微分控制。8 d- B% m2 t, w& D2 E' c
我们首先来看一个PID控制模型曲线图:
( I5 T- C# I1 M该图包含了比例控制,比例+积分控制,比较+积分+微分控制的电机响应图的对比。& d2 F4 x7 }$ J4 p
; J/ w' X' \* }7 B6 ~0 H
2014-5-29 13:22 上传$ `4 l5 U* A4 D, [" Q3 I* ?
下载附件 (37.76 KB) $ d& R  x& P- j9 ~) v" B, Y
PID模型
! g8 t! P' r, u$ D# E2 v% P
+ @) Y5 l3 S" u( p0 }9 n
8 \* m; ?  v' \, T- M
: J; C4 p; w# y1 K2 K. @* D8 ?下面我们对曲线进行具体分析:
8 [; X* t9 s6 B6 G, nPID中的比例控制是最容易理解的,比例控制就是把角度的误差乘以一个常数作为输出驱动。假定我们有一个理想模型的电机,1V电压的变化会带来小四轴1度的角度改变。假定现在电机控制电压是5V,小四轴在某一轴上的偏角是5度,目标角度是100度。我们把当前的电压量定义为Vin,把输出控制量定义为Vout。假定P等于0.2,那么比例控制的结果就是:; E! x* V3 p  E6 X& G3 f& q* `% b+ S
第一次:Vout=Vin+(100-5)*P=5V+19V=24V,得到电机电压是24V,对应的小四轴角度是24度,距离目标角度的误差是100-24=76度。
1 s4 `0 E+ H* i# I第二次:Vout=Vin+(100-24)*P=24V+15V=39V, 从而引起的角度是39度。, U* a3 Z7 u# G# \" n1 v
我们看到,在这么的一个比例控制系统下,小四轴角度在慢慢地向目标角度靠近。
: Q1 H' u* z$ \( t
! B$ {+ {' Z; iPID中的积分控制就是把把所有角度误差相加起来,然后乘上一个常数作为输出驱动。在上述例子中,假定I=0.2, 我们来看看比例和积分控制同时起作用下的系统反应。" V  R% P& ~# J- i, C6 y0 \: `5 j
第一次:Vout=Vin+(100-5)*P+(100-5)*I=5V+19V+19V=43V,这时候小四轴角度为43度。
( u" \3 A/ Y8 [9 `5 W由于第一次控制前的误差是100-5=95,第二次控制前的误差是100-43=57,所以积分结果是152。
0 B  v' M' V" r* D4 ~; C第二次:Vout=Vin+(100-43)*P+((100-5)+(100-43))*I=43V+11V+30V=84V, 这时候小四轴角度变为84度。; U* O& ]5 Y8 d4 v7 h
第三次:Vout=Vin+(100-84)*P+((100-5)+(100-43)+(100-84))*I=84+3V+33V=120V。这时小四轴角度变为120度。, q: J9 J; K5 ^  I
我们看到,在增加了积分控制后,小四轴角度在快速向目标角度靠近。9 V. N; R5 Z$ l
6 X* R) K2 y0 N; e$ a7 V2 B9 T
PID中的微分控制就是把角度的变化乘上一个常数来作为电机驱动输出。在上述例子中,假定D=0.2, 我们来看看比例,积分和微分共同控制下的系统反应。假定第一次前,电机转速保持5转,那么第一次前的角度变化为0。
$ P$ Z' K0 `2 _1 _' s第一次:Vout=Vin+(100-5)*P+(100-5)*I-(5-5)*D=5V+19V+19V-0V=43V,这时候小四轴角度为43度。
. ^1 w$ E* X  V+ b  M和上一次相比,角度从5度变化到了43度,所以小四周角度变化是43-5=38度。5 C+ B( q. B/ S1 @
第二次:Vout=Vin+(100-43)*P+((100-5)+(100-43))*I-(43-5)*D=43V+11V+30V-7V=77V, 这时候小四周角度77度。
3 F+ q9 x7 b# f2 E* i# d* M4 i6 r1 M% P. Y% C9 `
把上述的计算结果列出来,我们看到:
2 ]' y# Z4 Y. f5 O1 f 2014-5-29 13:23 上传0 Y' ~0 m5 v" W) e: B+ Y+ D( A
下载附件 (39.13 KB) $ g& y- W! `( {) @+ d
PID计算 $ i, Q, L6 a  Z% d/ v" ~4 v

# S0 Z' C  W5 X  n) ?3 I7 F; n' O* d; L% p9 k
: u) V( j8 g% [. \5 @- V' p( j

' i9 v/ A4 }9 c' s# p6 [9 y& K从上面的数据,我们可以看到:
9 K, R; a* ~! `+ v6 E$ w+ H1,单独比例控制的时候,数据慢慢接近目标 (图表中的红色线)$ _, t: F  F) V: G
2,加入积分控制之后,数据快速接近目标 (图表中的蓝色线)8 B1 v2 I2 R) I: F  E% X9 e
3,微分控制起到抑制变化的作用。(图表中的绿色线)  Z0 @5 u) R# O% B3 e0 h, R

- c9 l! I& h7 o有了这些理论基础,就可以写PID控制代码拉。7 `6 E! u) e) h0 {8 Q2 O

# v; F2 q% _1 A9 A; q

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
初级的都是理解物理含义去调参数。
7 S, {% S# W- B, d中级的pid调节,需要根据控制模型建模,然后零极点对消,等效1型或2型系统,根据最佳整定法计算pi参数,这是掌握一些自控原理的基础了。
9 ?0 g, D0 Y- v高级一些的应该都是用自抗扰控制器,抗饱和积分(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 手机版