加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

一篇文章帶你認識 PID算法

2022/09/06
1518
閱讀需 6 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

PID控制算法是應(yīng)用非常廣泛的一種控制算法,小到一個元器件的控制,大到飛機的曲線行駛、速度變化、無人機陣列等等都充斥著PID算法的身影。    PID(Proportion Integration Differentiation)其實是指比例、積分、微分控制,總的來說,當(dāng)?shù)玫较到y(tǒng)的輸出后,將輸出經(jīng)過比例,積分,微分3種運算方式,疊加到輸入中,從而控制系統(tǒng)的行為。

 

下面我們舉一個很簡單的例子,用比例控制算法來使水缸里的水位始終維持在1米的高度,假設(shè)水位目前處在0.2米的位置,那么當(dāng)前水位(0.2m)和目標水位(1m)之間是存在一個誤差(0.8m),這時,一個人通過往缸里加水來控制水位,用比例控制算法,就是指加入的水量u和誤差error是成正比的。即

 
假設(shè)kp取0.5,那么t=1時(第1次控制系統(tǒng)),那么

所以這一次加入的水量會使水位在0.2米的基礎(chǔ)上上升0.4米,達到0.6米。

接著,t=2時(第2次控制),當(dāng)前水位是0.6米,所以error是0.4。

會使水位再次上升0.2米,達到0.8米,如此下去,就是比例控制的使用方法。在經(jīng)過幾次添加之后,水位最終會達到我們1米,但是,單純使用比例控制算法也會存在著一些不足,其中一點就是“穩(wěn)態(tài)誤差”!

什么是穩(wěn)態(tài)誤差呢?

上述例子中,根據(jù)kp取值不同,水位最終都會達到1米,kp取值越大則上升的越快,kp取值越小則上升的越慢,不存在穩(wěn)態(tài)誤差。但是,假設(shè)這個水缸每次加水都會漏掉0.1米高度的水這種情況下,假設(shè)kp仍然取0.5,那么經(jīng)過幾次加水,水缸中的水位到0.8時,誤差error=0.2. 每次往水缸中加水的量為u=0.5*0.2=0.1米,同時,缸里每加水0.1米,又會流出0.1米,也就是說,設(shè)定的目標值為1米,但是這種算法使系統(tǒng)水位在達到0.8米后就不再變化,由此產(chǎn)生的誤差就是穩(wěn)態(tài)誤差了。

因此,單純的比例控制,在很多時候是滿足不了使用場景的。

上述例子就能看出,如果單純的比例控制算法,會存在穩(wěn)態(tài)誤差,水位最終一直停在0.8米的位置上。于是,在控制中,我們再引入一個分量,該分量和誤差的積分是正比關(guān)系。所以,比例+積分控制算法為:

使用上述例子,第一次的誤差error是0.8,第二次的誤差是0.4,至此,誤差的積分(離散情況下積分其實就是做累加)

這個時候的控制量,除了比例的那一部分,還有一部分就是一個系數(shù)ki乘以這個積分項。由于這個積分項會將前面若干次的誤差進行累計,所以可以很好的消除穩(wěn)態(tài)誤差(假設(shè)在僅有比例項的情況下,系統(tǒng)卡在穩(wěn)態(tài)誤差了,即上例中的0.8,由于加入了積分項的存在,會讓輸入增大,從而使得水缸的水位可以大于0.8,漸漸到達目標的1.0)這就是積分項的作用。

一輛正常行駛的汽車,發(fā)現(xiàn)前方紅燈亮起,為了使汽車平穩(wěn)行駛,很遠就停止踩油門轉(zhuǎn)向剎車,距離停止線越近,剎車降速會越快,直到停下來。整個過程可以看做一個加入微分的控制策略。

微分,最直白的說法就是在離散情況下,就是error的差值,就是t時刻和t-1時刻error的差,即

式中的kd是一個系數(shù)項。可以看處,在整個剎車過程中,error是越來越小的,因此微分控制項一定是負數(shù),加入一個負數(shù)項的作用就是為了防止汽車闖過了停止線。可從常識上理解為,距離停止線越近,剎車越明顯,不能讓車過線。所以這個微分項的作用,就可以理解為剎車,距停止線很近時并且車速快微分項絕對值會很大。

現(xiàn)在在回頭看這個公式,就很清楚了

括號內(nèi)第一項是比例項,第二項是積分項,第三項是微分項,前面僅僅是一個系數(shù)。很多情況下,僅僅需要在離散的時候使用,則控制可以化為

每一項前面都有系數(shù),這些系數(shù)都是需要實驗中去嘗試然后確定的,為了方便起見,將這些系數(shù)進行統(tǒng)一:

統(tǒng)一之后這些公式就變得清晰明了了,比例算法、微分算法、積分算法,每種算法都有個系數(shù),直接使用這個系數(shù)回簡化編程邏輯。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜