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

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

[复制链接]
mtg 发布时间:2015-4-27 15:50
, v' H: R/ R# A  w7 q# S
基于STM32和PID算法的小车车速控制: ~' C4 R0 [! `1 |- @  r
7 k, i6 R$ j7 X1 t+ t
四轴飞行器飞行原理与双闭环PID控制
. M( [7 i& p, t7 x
: ?! _2 ^( m7 m7 Y. t; }: b: g& MPID程序实例
6 r( n! G  o7 `4 j6 G" u
& T6 L' {+ x5 _% L' m! t8 V$ Y% O7 K) t/ f: z% t
该文档总结于以下两个博文:
% |- I3 k: H, e! vhttp://www.moz8.com/thread-36004-1-1.htmlhttp://www.eeboard.com/bbs/thread-32321-1-3.html, T3 k& c. ?/ I( g9 D

7 p% j4 e9 X( D- v为了更好的理解这个视频和PID参数的作用,特意根据多轴飞行器的原理和PID理论,编写了一个EXCEL图表,直观的来理解PID参数的作用。/ \5 M, g. {+ |
在这个模型中:
' e$ I7 W3 _& m0 d" \3 d7 v1、假设输出是力,作用在一个质块上,使用加速度、速度、位移积分计算,评估输出对测量值产生的影响,跟多轴飞行器的运动模式比较接近。$ i8 P/ j. i: B0 S$ _; a8 G
2、让速度响应慢一个拍子,模拟电调和电机的响应滞后。
: M' X$ K; k& L3、加入阻尼,模拟空气的衰减作用
0 P* B/ |8 B, u$ l8 y4、引入偏差,用于体现I的作用,从中间加入,代表一个系统误差或外作用力6 L0 {  `. ^# F% \7 {& A2 O

7 |2 X+ L9 C# w% kPID的作用概述:$ R9 i4 D/ W( j1 _
1、P产生响应速度和力度,过小响应慢,过大会产生振荡,是I和D的基础。
, \) t; W' B8 @% _! p2、I在有系统误差和外力作用时消除偏差、提高精度,同时也会增加响应速度,产生过冲,过大会产生振荡。9 K$ s) v1 ~5 t$ i/ d5 H* S1 h
3、D抑制过冲和振荡,过小系统会过冲,过大会减慢响应速度。D的另外一个作用是抵抗外界的突发干扰,阻止系统的突变。
5 i( v% j3 y3 x% U' L2 }. n. y* P2 g& \1 a+ F1 K
通过这个模型和图表,一步步演示PID参数的作用和调试方法:
& ^& ?! A4 s3 X# x  a% D9 p' d  j2 T7 Q
1、逐步增大P,看P对响应速度和力度的影响,调到系统发生振荡,再减少一点P
' C1 W, t3 u1 y
. Z* s- A/ z( C  M5 g5 Y当P=0.1时,响应很慢,但不会振荡$ Q0 ~& l7 ]& ?. g7 F

) u0 l1 U7 D2 k4 f& b: l粗黑线是系统响应,洋红线是目标值。) r5 i& a6 M# q& q. _9 B% a

. b( \7 X' R/ c9 E  y逐步增大P,P=1,有振荡,但慢慢在衰减
. p, ^& Z5 q/ ?" w 8 {7 u- q& Z) u- J$ ?$ Z, X

" K: m5 q$ s3 m  |继续增大P,P=3,振荡会逐步加大
- ^% q9 i- w# f, F: E  g* F
' g. r3 d$ r) K5 f2 x: A2 y+ K, b/ k) t% D" b3 c
取振荡但会衰减的P=1继续调整8 C* L2 R8 X! o6 E6 C
在多轴调试时,当振荡发生时,再稍微减小一点P。# O2 d& b+ @( r4 }, Z* m2 C

# Z& [9 O& F7 L* l' ?* `# M3 ~8 h2、加入D,看D对振荡的控制能力,D过小会发生过冲,D过大会迟滞,以稍微有点过冲为最佳
' H% S/ @8 v1 i) [. x5 _" T
  e" F+ c! {6 G( F3 gD=0.5,有较大的过冲和少量振荡,衰减很快
7 Y" q/ h5 ^9 K3 g" R. F2 B
: q9 O$ s" J+ k: E8 |, u8 I6 n
+ h2 Y+ \7 b0 ~, q( eD=1.3,基本没过冲$ o$ U0 i( Z0 ?- N5 e. E
' x3 x: p; S8 V; P

' x( W* ?" p% A1 D) bD=2,响应迟滞,减慢了响应速度, `7 _, g, d8 y2 o

; [+ d; F5 j0 g- n' z" h/ E! j. S, l1 z
取以稍微有点过冲的D=1.3为最佳
; f5 U1 b/ b4 l( V1 j7 y在多轴调试时,用手拍一下机臂或倾斜启动,机臂在复位时有少量过冲为宜。(不过我喜欢基本没过冲时的参数,这样在悬停时更稳)' h5 u# s4 {: v+ J3 S" p; V
. P* {& e" K$ S' J+ ^8 S
3、可以继续增大P和D,让响应更快但过冲也不大。
. ^6 G, v/ A' b+ ]# HP=2 D=1.8
- T0 \9 t. V. z) `+ h' @, J
7 i, I* V7 b$ ?, ], o% X. W2 Y& ?5 S; n  @4 E5 M
在理论上可以这样演示,但在实际多轴的调试时,这一步一般不做,这是为了更安全和稳定。
. Y" G( }3 \+ y5 J- k  L% J0 m
+ u. q% u3 O% U: P3 K4 `4、加入0.2的偏差,看偏差对位移的影响
# h; Q. F+ ~) K: {8 }) X" H从中间加入,代表一个外作用力。1 D2 I$ }/ Y4 C3 J/ B1 f

* P, i% h9 Y( d, o# h$ D可以看到,如果没有I的作用,偏差将一直存在,尽管P产生了一个抵抗力,但只是阻止了系统继续运动,但偏差一直在。
. E+ Y: i3 Q' `在多轴调试时,如果持续的抬起一个机臂,机臂会持续的转动,抵抗力很小,放手后也不会回复。
, e3 e5 I/ Z6 ^% a- {. @$ P& Q7 y/ L4 ?% \1 ]: u+ M0 ~, m
5、加I,看I对偏差的修正能力,I加快了响应速度,但也会导致过冲或振荡
/ o8 U0 q+ X! n$ U, UI=0.3 基本可以消除偏差产生的影响,产生了少量过冲,但提高了在有偏差时系统的精度' ~( d! i! I2 l
" F' o: L% Z4 v. b4 {: ~8 {+ f6 ~

6 t7 l7 `" ?. VI=3 进一步加快响应速度,但产生了振荡
. `3 c+ r/ T- V8 h: l+ V/ x( X& C 9 D; ~. ?1 y. G3 ?

7 K# }+ z. i/ ]: R" K- @取基本能纠正偏差的I=0.3% O$ g; l* h4 l
在多轴调试时,油门开至悬停油门,用手持续的抬起一个机臂,可以感到随着I的增加,抵抗力会逐步增大,持续时间加长。
0 H" ^* X4 T7 `$ x/ k因为多轴的长期稳定由姿态模式的LEVEL参数来解决,所以I不用太大,取缺省参数就可以了,大概可以抵抗1-2秒左右。7 _# R7 J+ D1 V5 S
6 V$ i1 Q9 [1 J5 |8 H
6、增大一点D,减小一点I产生的过冲. P4 t- t# W% T3 b3 a8 E8 f
取消偏差,因为I的加入,有一点过冲6 J$ @" P8 n4 E! B4 o
" y+ }5 u8 K2 i( n! S5 w
: X" _; y# _& A( T9 y8 y
增大D,D=2.2,减小过冲5 C# @0 P2 S7 l# d: E+ ~
. `6 f# Q0 H. o; \

6 r0 ^4 O! [8 R; o; q在实际多轴调试时,这一步一般不用,但是如果有必要,可以试一下。% _8 Q7 A  \/ X* e8 C" c0 c* ?

6 n# F7 z, l! b. U, \: e! t好了,曲线演示完了,这同时也是多轴PID参数的调试过程,结合视频一起看,能更好的理解这一过程,希望对大家理解PID有所帮助。
3 E4 U2 U1 b/ e  U: H! M& f9 |+ r8 b( a; p
附:多轴飞行器PID调试演示器.xls& c$ u  j* k3 j" y% L

3 e. z% e3 W8 v8 g# ]( X另外,试了一下,下载的文件名可能有问题,自己把文件名改为"多轴飞行器PID调试演示器.xls"就可以用了' D. T2 k$ y$ M& @/ l8 O

  ^' T* |. `6 H: y6 }: U6 }
% n' d2 N* l& e9 G  XPID的代码其实也很简单,主要是要了解其中的原理,才能更好地调整参数。为了方便新手们理解,楼主建立了一个数学模型来让大家了解。(只针对新手,老手就算了)  w4 W5 z3 e1 M; G& U0 X

7 y2 A- q, d, U" `2 @# T7 F========圆点博士小四轴之PID控制模式分析=======3 \9 B# n% \0 h1 Z# o8 d
PID控制的P是Proportional的缩写, 是比例的意思,I是Integral的缩写,是积分的意思,D是Derivative的缩写,是微分的意思。所以,PID就是我们常说的比例,积分,微分控制。
# P- z+ `/ z/ J我们首先来看一个PID控制模型曲线图:
  `* z" ?" ]/ Z8 l6 q该图包含了比例控制,比例+积分控制,比较+积分+微分控制的电机响应图的对比。8 {) p9 }! p/ L# ?2 d, ~3 Z* L

$ }1 o! \+ u# I  t- q+ Y- y; I 2014-5-29 13:22 上传
0 `4 N  @* |+ g# m下载附件 (37.76 KB)
0 ]  i8 X6 {9 K4 mPID模型
* H! E7 m$ I* E, K# V( S6 D1 @4 ~7 `/ B! t8 Y
+ r# G" N, p$ |

% \; F! W# a' c3 g+ n下面我们对曲线进行具体分析:' I4 `  r: o) H5 }& M9 Z* L
PID中的比例控制是最容易理解的,比例控制就是把角度的误差乘以一个常数作为输出驱动。假定我们有一个理想模型的电机,1V电压的变化会带来小四轴1度的角度改变。假定现在电机控制电压是5V,小四轴在某一轴上的偏角是5度,目标角度是100度。我们把当前的电压量定义为Vin,把输出控制量定义为Vout。假定P等于0.2,那么比例控制的结果就是:4 }, r  }# D" M7 S1 Z* Q3 V# A
第一次:Vout=Vin+(100-5)*P=5V+19V=24V,得到电机电压是24V,对应的小四轴角度是24度,距离目标角度的误差是100-24=76度。
! \. m# a" }- U/ X4 |! v% ~第二次:Vout=Vin+(100-24)*P=24V+15V=39V, 从而引起的角度是39度。
- c; q2 y" ~8 k* _6 w我们看到,在这么的一个比例控制系统下,小四轴角度在慢慢地向目标角度靠近。. K% R7 P/ P9 E- s8 \. Z
: U/ w$ X8 R5 u% G* v+ c% [; ~
PID中的积分控制就是把把所有角度误差相加起来,然后乘上一个常数作为输出驱动。在上述例子中,假定I=0.2, 我们来看看比例和积分控制同时起作用下的系统反应。) e( p( X1 x, L/ N6 d: G. C
第一次:Vout=Vin+(100-5)*P+(100-5)*I=5V+19V+19V=43V,这时候小四轴角度为43度。
: Z& J" @7 x+ ]+ L; r. I由于第一次控制前的误差是100-5=95,第二次控制前的误差是100-43=57,所以积分结果是152。/ q( t- _6 A! a% Z7 v, J
第二次:Vout=Vin+(100-43)*P+((100-5)+(100-43))*I=43V+11V+30V=84V, 这时候小四轴角度变为84度。* C# ^7 F2 u" ~( Z1 v0 a% l# w
第三次:Vout=Vin+(100-84)*P+((100-5)+(100-43)+(100-84))*I=84+3V+33V=120V。这时小四轴角度变为120度。. V, o# M7 }& o. ^
我们看到,在增加了积分控制后,小四轴角度在快速向目标角度靠近。8 b$ j) L2 R& H+ X

* g8 L2 U5 U+ J- r( U  H! N' c1 sPID中的微分控制就是把角度的变化乘上一个常数来作为电机驱动输出。在上述例子中,假定D=0.2, 我们来看看比例,积分和微分共同控制下的系统反应。假定第一次前,电机转速保持5转,那么第一次前的角度变化为0。
: l% e4 |' j# P! Y9 @% h2 }第一次:Vout=Vin+(100-5)*P+(100-5)*I-(5-5)*D=5V+19V+19V-0V=43V,这时候小四轴角度为43度。* T) \% n  _* Q9 p( ?
和上一次相比,角度从5度变化到了43度,所以小四周角度变化是43-5=38度。) V( L) W3 ]$ q1 x0 s# s0 J% `
第二次:Vout=Vin+(100-43)*P+((100-5)+(100-43))*I-(43-5)*D=43V+11V+30V-7V=77V, 这时候小四周角度77度。2 Y6 m2 N8 i# ?0 d, |# w
5 w( ^4 u2 ?% ?, U) q. L6 d
把上述的计算结果列出来,我们看到:' M( o. q8 e$ l) g) @; s
2014-5-29 13:23 上传+ X2 t5 _& w% _6 {
下载附件 (39.13 KB) % P5 b1 W: g3 W+ s3 g+ f4 ^. o% |6 j
PID计算
0 R' b  L; {2 S: `6 |0 I
/ \: A* Z6 [# e* {
0 B# q# U" E8 a7 B
( \' E; F* d# C. a: x
* O" h( s7 R9 V从上面的数据,我们可以看到:6 o9 S' v' Z, Q' |7 E% i
1,单独比例控制的时候,数据慢慢接近目标 (图表中的红色线)- N9 ?- M, O5 f6 [. L" P% A
2,加入积分控制之后,数据快速接近目标 (图表中的蓝色线)7 q/ P9 S# y' g# [4 M
3,微分控制起到抑制变化的作用。(图表中的绿色线)  X5 j0 I; Y; \8 b7 y; N( O7 d( g

+ N# g# E+ ~# z- |有了这些理论基础,就可以写PID控制代码拉。
* m6 r/ @  Y' J# [
. j4 {2 E1 Y( }, q

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
初级的都是理解物理含义去调参数。! A/ d: R/ R+ U4 B
中级的pid调节,需要根据控制模型建模,然后零极点对消,等效1型或2型系统,根据最佳整定法计算pi参数,这是掌握一些自控原理的基础了。
1 v# e4 t$ n+ g' h2 m高级一些的应该都是用自抗扰控制器,抗饱和积分(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 手机版