国产日韩欧美久久久精品图片|国产综合有码无码中文字幕|国产一区二区综合视频|国产亚洲精品电影网站在线观看|国产精品一区在线

機械社區

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 9605|回復: 13
打印 上一主題 下一主題

如何理解PID控制算法

[復制鏈接]
跳轉到指定樓層
1#
發表于 2019-7-17 21:09:47 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

5 T- g$ ?/ V# s: H/ p      10多年前曾經也為理解PID算法,苦惱不已。今天看到這篇文章,一下子好像回到10多年前,為理解PID控制算法,天天跑書店的情景。8 P1 T5 S3 B' |8 q' i! Z
       轉給社區里正在學習PID控制算法的社友。
3 Q8 Z. x$ v% F4 h4 T0 V. Q2 r
5 k+ f/ O. q. U0 u4 M: i6 ]& Z5 j' P/ D0 ~4 r
      PID控制應該算是應用非常廣泛的控制算法了。小到控制一個元件的溫度,大到控制無人機的飛行姿態和飛行速度等等,都可以使用PID控制。這里我們從原理上來理解PID控制。
: X# h" w! {4 {0 a' Q

- g& z6 C( R9 l3 z& ^9 Z" C9 u
       PID(proportion integration differentiation)其實就是指比例,積分,微分控制。先把圖片和公式擺出來,看不懂沒關系。(一開始看這個算法,公式能看懂,具體怎么用怎么寫代碼也知道,但是就是不知道原理,不知道為什么要用比例,微分,積分這3個項才能實現最好的控制,用其中兩個為什么不行,用了3個項能好在哪里,每一個項各有什么作用)

5 x& r) c, j* t2 y' E  j: X
( e( }% V; n- K( z: J4 c  n. I
1 d7 T* h) B+ z) P! f+ u
       總的來說,當得到系統的輸出后,將輸出經過比例,積分,微分3種運算方式,疊加到輸入中,從而控制系統的行為,下面用一個簡單的實例來說明。

: b* H( H4 M9 U- E+ M) ^, @' k' [3 p比例控制算法
       我們先說PID中最簡單的比例控制,拋開其他兩個不談。還是用一個經典的例子吧。假設我有一個水缸,最終的控制目的是要保證水缸里的水位永遠的維持在1米的高度。假設初始時刻,水缸里的水位是0.2米,那么當前時刻的水位和目標水位之間是存在一個誤差的error,且error為0.8.這個時候,假設旁邊站著一個人,這個人通過往缸里加水的方式來控制水位。如果單純的用比例控制算法,就是指加入的水量u和誤差error是成正比的。

3 w  I% z( E6 g2 |' ~即:u=kp*error
4 b$ {5 K9 Y7 X6 `7 r& Z" R# J+ s6 N, x# J! q& L
       假設kp取0.5, 那么t=1時(表示第1次加水,也就是第一次對系統施加控制),那么u=0.5*0.8=0.4,所以這一次加入的水量會使水位在0.2的基礎上上升0.4,達到0.6.。

4 e. i: p1 t: ^       接著,t=2時刻(第2次施加控制),當前水位是0.6,所以error是0.4。u=0.5*0.4=0.2,會使水位再次上升0.2,達到0.8。

% P7 Z- `' W8 V6 {& X* g6 T/ o  C       如此這么循環下去,就是比例控制算法的運行方法。 可以看到,最終水位會達到我們需要的1米。

/ a, b8 x7 h+ l6 |% q       但是,單單的比例控制存在著一些不足,其中一點就是 –穩態誤差!(我也是看了很多,并且想了好久才想通什么是穩態誤差以及為什么有穩態誤差)。

# Q# i% w$ E: o. ~       像上述的例子,根據kp取值不同,系統最后都會達到1米,只不過kp大了到達的快,kp小了到達的慢一些。不會有穩態誤差。但是,考慮另外一種情況,假設這個水缸在加水的過程中,存在漏水的情況,假設每次加水的過程,都會漏掉0.1米高度的水。
7 m7 t+ ~, C1 ?" x6 u4 F
      仍然假設kp取0.5,那么會存在著某種情況,假設經過幾次加水,水缸中的水位到0.8時,水位將不會再變換!!!因為,水位為0.8,則誤差error=0.2。所以每次往水缸中加水的量為u=0.5*0.2=0.1.同時,每次加水,缸里又會流出去0.1米的水!!!加入的水和流出的水相抵消,水位將不再變化!!

9 y! K1 J0 Z( O2 P8 ]7 i8 b7 {# A        也就是說,我的目標是1米,但是最后系統達到0.8米的水位就不再變化了,且系統已經達到穩定。由此產生的誤差就是穩態誤差了。

, l: V5 C" q) d* k9 ^) W# g: x
        (在實際情況中,這種類似水缸漏水的情況往往更加常見,比如控制汽車運動,摩擦阻力就相當于是“漏水”,控制機械臂、無人機的飛行,各類阻力和消耗都可以理解為本例中的“漏水”)
4 r. `5 i; z3 F1 s) T8 s8 e
         所以,單獨的比例控制,在很多時候并不能滿足要求。

1 M7 N# A. l1 t
積分控制算
還是用上面的例子,如果僅僅用比例,可以發現存在暫態誤差,最后的水位就卡在0.8了。于是,在控制中,我們再引入一個分量,該分量和誤差的積分是正比關系。所以,比例+積分控制算法為:
# s& R/ y/ n2 Q$ P! W
u=kp*error+ ki∗∫ error

9 w# I7 c. q1 M( S還是用上面的例子來說明,第一次的誤差error是0.8,第二次的誤差是0.4,至此,誤差的積分(離散情況下積分其實就是做累加),∫error=0.8+0.4=1.2. 這個時候的控制量,除了比例的那一部分,還有一部分就是一個系數ki乘以這個積分項。由于這個積分項會將前面若干次的誤差進行累計,所以可以很好的消除穩態誤差(假設在僅有比例項的情況下,系統卡在穩態誤差了,即上例中的0.8,由于加入了積分項的存在,會讓輸入增大,從而使得水缸的水位可以大于0.8,漸漸到達目標的1.0.)這就是積分項的作用。
7 Z: Z  }4 @! U9 b
微分控制算法
換一個另外的例子,考慮剎車情況。平穩的駕駛車輛,當發現前面有紅燈時,為了使得行車平穩,基本上提前幾十米就放松油門并踩剎車了。當車輛離停車線非常近的時候,則使勁踩剎車,使車輛停下來。整個過程可以看做一個加入微分的控制策略。
2 f2 [7 y" a/ b* g5 J
微分,說白了在離散情況下,就是error的差值,就是t時刻和t-1時刻error的差,即u=kd*(error(t)-error(t-1)),其中的kd是一個系數項。可以看到,在剎車過程中,因為error是越來越小的,所以這個微分控制項一定是負數,在控制中加入一個負數項,他存在的作用就是為了防止汽車由于剎車不及時而闖過了線。從常識上可以理解,越是靠近停車線,越是應該注意踩剎車,不能讓車過線,所以這個微分項的作用,就可以理解為剎車,當車離停車線很近并且車速還很快時,這個微分項的絕對值(實際上是一個負數)就會很大,從而表示應該用力踩剎車才能讓車停下來。
  j& O- n0 C  \0 W
切換到上面給水缸加水的例子,就是當發現水缸里的水快要接近1的時候,加入微分項,可以防止給水缸里的水加到超過1米的高度,說白了就是減少控制過程中的震蕩。
& K$ C( ^, ]$ k3 X
現在再回頭看這個公式,就很清楚了

8 u9 Y* @/ o1 R& O1 R. |9 Q) `
, X/ o: Z5 n3 d; k' |  I0 n4 ~
括號內第一項是比例項,第二項是積分項,第三項是微分項,前面僅僅是一個系數。很多情況下,僅僅需要在離散的時候使用,則控制可以化為 * Y6 R/ ^4 P. H! e+ L* e' }; D6 k

* }* z& h8 J/ q3 S 3 I& s$ v" I8 {  b& D, S
每一項前面都有系數,這些系數都是需要實驗中去嘗試然后確定的,為了方便起見,將這些系數進行統一一下:
這樣看就清晰很多了,且比例,微分,積分每個項前面都有一個系數,且離散化的公式,很適合編程實現。

+ V" d$ A6 r" S$ b" V6 F- Q4 F& U講到這里,PID的原理和方法就說完了,剩下的就是實踐了。在真正的工程實踐中,最難的是如果確定三個項的系數,這就需要大量的實驗以及經驗來決定了。通過不斷的嘗試和正確的思考,就能選取合適的系數,實現優良的控制器。
! \* @  T/ q% ?7 W' B0 y( g; ?

3 c8 r& N& S+ X& O  U
回復

使用道具 舉報

2#
發表于 2019-7-18 07:34:42 | 只看該作者
有一本自動控制原理,可以去看看
回復 支持 反對

使用道具 舉報

3#
發表于 2019-7-18 08:28:22 | 只看該作者
好文章,不多見,頂!3 D* l. S6 x& `7 A1 }, |
最近正想學這個。
: H6 h0 t5 \9 S1 Q0 I最好樓主或哪位網友能給個例子,比如通過電加熱管加熱水,控制水箱里水溫,使溫度波動最小。. a# F6 t4 W- e0 ~4 m; i
如果能在貼上一段C代碼,就更好了。
回復 支持 反對

使用道具 舉報

4#
發表于 2019-7-18 08:59:27 | 只看該作者
感謝大俠分享
回復 支持 反對

使用道具 舉報

5#
發表于 2019-7-18 10:47:11 | 只看該作者
樓主辛苦了
回復 支持 反對

使用道具 舉報

6#
發表于 2019-7-18 11:51:39 | 只看該作者
厲害
回復

使用道具 舉報

7#
發表于 2019-7-24 19:12:38 | 只看該作者
看到這些公式就頭疼
回復 支持 反對

使用道具 舉報

8#
發表于 2019-7-26 10:21:27 | 只看該作者
學習學習!!!!!!!!!
回復

使用道具 舉報

9#
發表于 2019-7-26 11:33:40 | 只看該作者
這是錢學森的控制論嗎?
回復 支持 反對

使用道具 舉報

10#
發表于 2019-11-21 16:45:35 | 只看該作者
樓主,比例你舉例0.5,這個很好理解,可是積分還是不理解,能舉個例子,例個公式嗎?
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規則

小黑屋|手機版|Archiver|機械社區 ( 京ICP備10217105號-1,京ICP證050210號,浙公網安備33038202004372號 )

GMT+8, 2025-5-5 16:57 , Processed in 0.061959 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表
主站蜘蛛池模板: а√天堂中文在线资源库免费观看 | 国产亚洲精品精品精品| 欧美熟老熟妇色xxxxx| 国内精品自国内精品66j影院| 色www视频永久免费| 欧美视频区高清视频播放| 亚洲va天堂va欧美片a在线| 国产av一码二码三码无码| 黄色片在线观看一区二区| 久久久无码人妻精品无码| 男人扒开添女人一区二区三区| 亚洲国产精品电影人久久| 熟睡人妻被讨厌的公侵犯深田咏美| 亚洲国产成人无码网站大全| √最新版天堂资源网在线| 国产一区二区三区| 国产360激情盗摄全集| 777米奇色狠狠俺去啦奇米77| 极品少妇被猛得白浆直流草莓视频| 大地资源中文第二页日本| 国产精品久久久久久爽爽爽床戏| 色哟哟国产精品一区二区真| 亚洲综合婷婷一区| 精品人妻av一区二区三区麻豆| 久久久久人妻一区二区| 国产乱沈阳女人高潮乱叫老| 一区二区不卡在线观看| 国产一区二区三区不卡av,| 亚洲午夜一区二区三区在线| 午夜精品少妇一区二区| 亚洲成av不卡无码无码不卡 | 在线综合亚洲欧美日韩| 国产男女互插视频在线观看一区二区 | 中文字幕一区二区三区免费视频| 国产日韩在线时看高清视频| 东北少妇不戴套对白第一次| 国产精品午夜福利在线观看地址| 亚洲乱码中文字幕综合234| 久久国产乱子伦精品免费午夜| 亚洲电影天堂av2017| 成人亚洲a片v一区二区三区蜜臀|