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

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

一篇文章帶你認(rèn)識 PID算法

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相關(guān)推薦

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