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

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

[复制链接]
mtg 发布时间:2015-4-27 15:50
' J$ @8 H. N+ B
基于STM32和PID算法的小车车速控制
! c+ y$ r+ b7 u6 w! u
. d3 W  V/ R9 N; M' I四轴飞行器飞行原理与双闭环PID控制
7 T* l2 v5 L; `* Y( e% J
: s5 f! V1 F9 C8 E9 R- BPID程序实例
# s& Q& p( [( d/ L2 j9 Q! A
9 ^: u3 H) m/ M7 R* b9 l+ a: K% W" a: [) ?9 ?5 T  R% ~$ l3 D
该文档总结于以下两个博文:
2 g* d- k; N7 a/ K+ xhttp://www.moz8.com/thread-36004-1-1.htmlhttp://www.eeboard.com/bbs/thread-32321-1-3.html, ?0 Y" m2 M: r: F" M

3 k! b2 D* W% B6 S为了更好的理解这个视频和PID参数的作用,特意根据多轴飞行器的原理和PID理论,编写了一个EXCEL图表,直观的来理解PID参数的作用。6 z8 q  W( r  \# Y1 U* V
在这个模型中:( r* r4 q# P4 j0 |; G
1、假设输出是力,作用在一个质块上,使用加速度、速度、位移积分计算,评估输出对测量值产生的影响,跟多轴飞行器的运动模式比较接近。# ^1 c' W( `' F# `% X! y
2、让速度响应慢一个拍子,模拟电调和电机的响应滞后。" i+ n# r$ W% y, C
3、加入阻尼,模拟空气的衰减作用
. V6 w8 L6 N- M& Q3 h7 \4、引入偏差,用于体现I的作用,从中间加入,代表一个系统误差或外作用力
. o/ Q$ c5 \+ |2 |
! y* D, T* @5 O- xPID的作用概述:& n$ b5 u3 ~, u$ U3 E& \$ I5 V
1、P产生响应速度和力度,过小响应慢,过大会产生振荡,是I和D的基础。8 e2 F7 U9 l/ F/ i2 `- A8 `+ H
2、I在有系统误差和外力作用时消除偏差、提高精度,同时也会增加响应速度,产生过冲,过大会产生振荡。' k; y3 o( Z* r
3、D抑制过冲和振荡,过小系统会过冲,过大会减慢响应速度。D的另外一个作用是抵抗外界的突发干扰,阻止系统的突变。# v" B) X1 I9 }( J# a" D
0 J8 M% T$ w8 e% V/ _) Y
通过这个模型和图表,一步步演示PID参数的作用和调试方法:
9 h9 H9 l. [1 T3 V6 @7 e9 ^- p+ g0 x7 b; }% t
1、逐步增大P,看P对响应速度和力度的影响,调到系统发生振荡,再减少一点P7 H" a, Q, U* I* b* |  q

" y& g6 I' Z3 W当P=0.1时,响应很慢,但不会振荡9 _7 x- l! P* `+ }1 d

: P! o# X3 M, r8 m粗黑线是系统响应,洋红线是目标值。
$ w/ V% n6 \3 U& }- E  y$ k: @8 a( D' j1 D  A4 X- m4 P; g
逐步增大P,P=1,有振荡,但慢慢在衰减
" U  m! U) ]# [, P, L7 h& r  m   Y" l6 A9 l( U0 }
! u3 ~: O# E+ k: s% C4 V; p
继续增大P,P=3,振荡会逐步加大
+ z& Z- V* A. f5 w' B 6 v) q( k  j8 U1 M

& a, N& w6 A+ B$ s! V( L取振荡但会衰减的P=1继续调整: z+ q2 s5 x0 y$ F7 C( [/ D
在多轴调试时,当振荡发生时,再稍微减小一点P。
, I- a  D- M2 s- Q8 \
' S4 z# g3 _: f  ~; K+ G) ?; w2、加入D,看D对振荡的控制能力,D过小会发生过冲,D过大会迟滞,以稍微有点过冲为最佳$ ]/ e0 U" s# F% x8 _2 w
. i  i4 j8 I) z! z
D=0.5,有较大的过冲和少量振荡,衰减很快
, T2 V8 S( ?: _3 }: f + e# n, \. D; M6 H) ^+ V- @& B  w

% }7 b8 W# \) `4 e; \D=1.3,基本没过冲
# C8 q5 _8 {# ?7 g2 l% `' E5 x ( L7 x, X  ~" S  [
- o; X$ O1 p2 f# i! I8 Y) ]
D=2,响应迟滞,减慢了响应速度
! \+ [: t! |3 D4 i- i! B8 m
/ p  D8 F! b$ J" W/ ]: l; W7 m3 W
取以稍微有点过冲的D=1.3为最佳5 z9 ?$ b3 W3 N2 z& C
在多轴调试时,用手拍一下机臂或倾斜启动,机臂在复位时有少量过冲为宜。(不过我喜欢基本没过冲时的参数,这样在悬停时更稳)* I- h1 V) P- k
; U2 \; U! g6 v, f
3、可以继续增大P和D,让响应更快但过冲也不大。
$ f+ q. }- G2 t$ MP=2 D=1.80 v7 h% Y' t* o; \( f3 E1 a7 A/ E5 E

. R7 _4 Y- g. E3 S- v1 T9 M+ K! `  K
在理论上可以这样演示,但在实际多轴的调试时,这一步一般不做,这是为了更安全和稳定。) ~9 a% l' D4 b# ?$ `% m+ }" a
' M+ F) U# Z6 U1 U( U1 V
4、加入0.2的偏差,看偏差对位移的影响1 E" P/ H- U. R! o5 {2 ]
从中间加入,代表一个外作用力。: A2 G+ V  z( F2 j. K4 E$ e

/ v* h2 r' {4 E( A可以看到,如果没有I的作用,偏差将一直存在,尽管P产生了一个抵抗力,但只是阻止了系统继续运动,但偏差一直在。
  a. _( P' `' D7 q4 S; O& j: m* l在多轴调试时,如果持续的抬起一个机臂,机臂会持续的转动,抵抗力很小,放手后也不会回复。' o# k, C, y, J. ]3 A
5 A4 h5 O$ Z( N, ~: ]3 D
5、加I,看I对偏差的修正能力,I加快了响应速度,但也会导致过冲或振荡% q; G. {$ U: y4 \9 h" s5 ^
I=0.3 基本可以消除偏差产生的影响,产生了少量过冲,但提高了在有偏差时系统的精度
9 |7 Q4 b+ D. `
1 C  T* [& s4 K3 `  ^, I2 J. Z  G' [# {* E& f, z
I=3 进一步加快响应速度,但产生了振荡! M( |& v; y5 v$ m9 a$ ~7 R

5 ?9 f) v( G! _1 |, o' K% b  T0 G( r  i9 h+ `
取基本能纠正偏差的I=0.3. V' z" n' \- E8 L7 h, r
在多轴调试时,油门开至悬停油门,用手持续的抬起一个机臂,可以感到随着I的增加,抵抗力会逐步增大,持续时间加长。  U/ J* m2 x) I! H
因为多轴的长期稳定由姿态模式的LEVEL参数来解决,所以I不用太大,取缺省参数就可以了,大概可以抵抗1-2秒左右。8 E. ]7 E6 p+ I

" a7 T6 d5 ~. X0 F& ~! C* V6、增大一点D,减小一点I产生的过冲
7 g- n) C1 g& {. |4 O取消偏差,因为I的加入,有一点过冲
; n3 ?% r3 w' f- d
  d( O2 ~1 i# ^- [8 n9 N" \# A, r! t1 @) B$ Z
增大D,D=2.2,减小过冲
0 {; F: @8 M  E% `: c; \ 7 G! n7 M" y) t; x

- ~" _9 W# P$ v; A& B- }: t, N$ g; K2 x: ]在实际多轴调试时,这一步一般不用,但是如果有必要,可以试一下。5 Z2 P7 E% F# R$ t7 N( t
+ U7 O5 P- ^& k1 X0 S! o
好了,曲线演示完了,这同时也是多轴PID参数的调试过程,结合视频一起看,能更好的理解这一过程,希望对大家理解PID有所帮助。) {4 O2 W8 j# o4 X
/ a+ Y% J3 N- I' H# O. C+ n0 |, Q
附:多轴飞行器PID调试演示器.xls0 S4 b( \. `+ Y

9 F) n. f7 L% `- ?4 _/ S另外,试了一下,下载的文件名可能有问题,自己把文件名改为"多轴飞行器PID调试演示器.xls"就可以用了
% I( n; Q) l. C$ J* Y/ E
  j9 E' ?( X9 r# O( p' J( S7 o7 b7 a( M; z: j/ }
PID的代码其实也很简单,主要是要了解其中的原理,才能更好地调整参数。为了方便新手们理解,楼主建立了一个数学模型来让大家了解。(只针对新手,老手就算了)9 P' J4 p! ?* N9 B+ Y, ]

5 U# [' j, j$ `- H========圆点博士小四轴之PID控制模式分析=======
) C0 Q! C7 b/ y# q: }* _PID控制的P是Proportional的缩写, 是比例的意思,I是Integral的缩写,是积分的意思,D是Derivative的缩写,是微分的意思。所以,PID就是我们常说的比例,积分,微分控制。
- Z4 J% i% S: I+ I我们首先来看一个PID控制模型曲线图:
$ H& c# V4 F+ O4 H3 F* {8 @  p/ L该图包含了比例控制,比例+积分控制,比较+积分+微分控制的电机响应图的对比。
6 ?2 \& M9 o* T7 w
$ I& A  e' o9 ]3 N' h+ M' @& W. o 2014-5-29 13:22 上传3 P: z+ Y8 g, y, y4 q# d$ C
下载附件 (37.76 KB)
2 ?% \" l$ B" k9 F; I* `4 B; iPID模型
8 O  E2 t& J: l# i+ ~. g4 A" f1 e8 k6 U. ?5 K
4 |$ {' l8 ?3 e4 S* j, {

  w2 Z0 X( l- H0 a2 A下面我们对曲线进行具体分析:& `; Y) l4 c  a
PID中的比例控制是最容易理解的,比例控制就是把角度的误差乘以一个常数作为输出驱动。假定我们有一个理想模型的电机,1V电压的变化会带来小四轴1度的角度改变。假定现在电机控制电压是5V,小四轴在某一轴上的偏角是5度,目标角度是100度。我们把当前的电压量定义为Vin,把输出控制量定义为Vout。假定P等于0.2,那么比例控制的结果就是:
$ {5 m$ G3 `# k2 T2 d第一次:Vout=Vin+(100-5)*P=5V+19V=24V,得到电机电压是24V,对应的小四轴角度是24度,距离目标角度的误差是100-24=76度。
' o8 n, d7 b% S第二次:Vout=Vin+(100-24)*P=24V+15V=39V, 从而引起的角度是39度。
  C, |0 W" p4 `$ I& W我们看到,在这么的一个比例控制系统下,小四轴角度在慢慢地向目标角度靠近。
" J/ L2 g. Q9 z% _6 p; K  {
% L2 t) O6 r$ h. s$ Q4 BPID中的积分控制就是把把所有角度误差相加起来,然后乘上一个常数作为输出驱动。在上述例子中,假定I=0.2, 我们来看看比例和积分控制同时起作用下的系统反应。: A* G2 ^) \/ \# l
第一次:Vout=Vin+(100-5)*P+(100-5)*I=5V+19V+19V=43V,这时候小四轴角度为43度。; S/ {, |0 A- s& Z, R9 Y7 }
由于第一次控制前的误差是100-5=95,第二次控制前的误差是100-43=57,所以积分结果是152。: `3 z9 U7 G/ ^+ C+ j5 A# v1 r& U5 O
第二次:Vout=Vin+(100-43)*P+((100-5)+(100-43))*I=43V+11V+30V=84V, 这时候小四轴角度变为84度。
* V% Q9 F) b) @7 K0 p& [: v" ?' W/ c第三次:Vout=Vin+(100-84)*P+((100-5)+(100-43)+(100-84))*I=84+3V+33V=120V。这时小四轴角度变为120度。
5 _' q5 |" j4 g' ^/ v我们看到,在增加了积分控制后,小四轴角度在快速向目标角度靠近。
- J- A' M# F, T  [0 B
6 J3 }8 t1 A. K! ePID中的微分控制就是把角度的变化乘上一个常数来作为电机驱动输出。在上述例子中,假定D=0.2, 我们来看看比例,积分和微分共同控制下的系统反应。假定第一次前,电机转速保持5转,那么第一次前的角度变化为0。
$ Y2 r5 n& U  w8 B3 @7 K第一次:Vout=Vin+(100-5)*P+(100-5)*I-(5-5)*D=5V+19V+19V-0V=43V,这时候小四轴角度为43度。( `  L0 m9 V& ]  u+ ]- M# ^+ D
和上一次相比,角度从5度变化到了43度,所以小四周角度变化是43-5=38度。
' c  |  }  d7 t9 G' }3 X( j第二次:Vout=Vin+(100-43)*P+((100-5)+(100-43))*I-(43-5)*D=43V+11V+30V-7V=77V, 这时候小四周角度77度。& ?: w+ ?" ~* r
  ?, `, x" N9 V: i5 t6 p$ z
把上述的计算结果列出来,我们看到:
& u3 h: ]# v5 |7 \  o  Y 2014-5-29 13:23 上传; r1 n% m+ y; u
下载附件 (39.13 KB) & [% h1 p) t- J0 C7 r" n: y; e
PID计算 ( ~, h/ N; P# h: q! ]: j9 g
/ O: k2 r* k; i; Q6 F1 j: w" e& y& x
2 O8 H0 {( Z- r/ t& s; O2 X

9 I* }+ w4 q! G$ l3 @' a+ v6 u1 s; F( y
从上面的数据,我们可以看到:
; ~# E% N! L* X" m1,单独比例控制的时候,数据慢慢接近目标 (图表中的红色线)
( d- r$ l% x. a2,加入积分控制之后,数据快速接近目标 (图表中的蓝色线)/ a, X0 f1 s9 N0 J: S  @
3,微分控制起到抑制变化的作用。(图表中的绿色线)
- y' q/ @- {' x
# L- d% V$ b, D+ t( ?7 Y有了这些理论基础,就可以写PID控制代码拉。1 Y, y5 e8 S+ V- |

' |- D5 \6 g# j6 X

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
初级的都是理解物理含义去调参数。4 m  M1 v, u  A
中级的pid调节,需要根据控制模型建模,然后零极点对消,等效1型或2型系统,根据最佳整定法计算pi参数,这是掌握一些自控原理的基础了。8 z- T1 l/ |) z! B4 l
高级一些的应该都是用自抗扰控制器,抗饱和积分(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 手机版