天天看點

一文搞懂PID控制算法

目錄

1、PID算法概念

2、PID算法參數調試

PID算法是工業應用中最廣泛算法之一,在閉環系統的控制中,可自動對控制系統進行準确且迅速的校正。PID算法已經有100多年曆史,在四軸飛行器,平衡小車、汽車定速巡航、溫度控制器等場景均有應用。

之前做過循迹車項目,簡單循迹搖擺幅度較大,效果如下所示:

一文搞懂PID控制算法

PID算法優化後,循迹穩定性能較大提升,效果如下所示:

一文搞懂PID控制算法

PID算法:就是“比例(proportional)、積分(integral)、微分(derivative)”,是一種常見的“保持穩定”控制算法。

正常的模拟PID控制系統原理框圖如下所示:

一文搞懂PID控制算法

是以可以得出e(t)和u(t)的關系:

一文搞懂PID控制算法

其中:

Kp:比例增益,是調适參數;

Ki:積分增益,也是調适參數;

Kd:微分增益,也是調适參數;

e:誤差=設定值(SP)- 回授值(PV);

t:目前時間。

數學公式可能比較枯燥,通過以下例子,了解PID算法的應用。

例如,使用控制器使一鍋水的溫度保持在50℃,小于50℃就讓它加熱,大于50度就斷電不就行了?

一文搞懂PID控制算法

沒錯,在要求不高的情況下,确實可以這麼幹,如果換一種說法,你就知道問題出在哪裡了。

如果控制對象是一輛汽車呢?要是希望汽車的車速保持在50km/h不動,這種方法就存在問題了。

設想一下,假如汽車的定速巡航電腦在某一時間測到車速是45km/h,它立刻指令發動機:加速!

結果,發動機那邊突然來了個100%全油門,嗡的一下汽車急加速到了60km/h,這時電腦又發出指令:刹車!結果乘客吐......

是以,在大多數場合中,用“開關量”來控制一個實體量就顯得比較簡單粗暴了,有時候是無法保持穩定的,因為單片機、傳感器不是無限快的,采集、控制需要時間。

而且,控制對象具有慣性,比如将熱水控制器拔掉,它的“餘熱”即熱慣性可能還會使水溫繼續升高一小會。

此時就需要使用PID控制算法了。

一文搞懂PID控制算法

接着咱再來詳細了解PID控制算法的三個最基本的參數:Kp比例增益、Ki積分增益、Kd微分增益。

1、Kp比例增益

Kp比例控制考慮目前誤差,誤內插補點和一個正值的常數Kp(表示比例)相乘。需要控制的量,比如水溫,有它現在的目前值,也有我們期望的目标值。

當兩者差距不大時,就讓加熱器“輕輕地”加熱一下。

要是因為某些原因,溫度降低了很多,就讓加熱器“稍稍用力”加熱一下。

要是目前溫度比目标溫度低得多,就讓加熱器“開足馬力”加熱,盡快讓水溫到達目标附近。

這就是P的作用,跟開關控制方法相比,是不是“溫文爾雅”了很多。

實際寫程式時,就讓偏差(目标減去目前)與調節裝置的“調節力度”,建立一個一次函數的關系,就可以實作最基本的“比例”控制了~

Kp越大,調節作用越激進,Kp調小會讓調節作用更保守。

若你正在制作一個平衡車,有了P的作用,你會發現,平衡車在平衡角度附近來回“狂抖”,比較難穩住。

2、Kd微分增益

Kd微分控制考慮将來誤差,計算誤差的一階導,并和一個正值的常數Kd相乘。

有了P的作用,不難發現,隻有P好像不能讓平衡車站起來,水溫也控制得晃晃悠悠,好像整個系統不是特别穩定,總是在“抖動”。

一文搞懂PID控制算法

設想有一個彈簧:現在在平衡位置上,拉它一下,然後松手,這時它會震蕩起來,因為阻力很小,它可能會震蕩很長時間,才會重新停在平衡位置。

請想象一下:要是把上圖所示的系統浸沒在水裡,同樣拉它一下 :這種情況下,重新停在平衡位置的時間就短得多。

此時需要一個控制作用,讓被控制的實體量的“變化速度”趨于0,即類似于“阻尼”的作用。

因為,當比較接近目标時,P的控制作用就比較小了,越接近目标,P的作用越溫柔,有很多内在的或者外部的因素,使控制量發生小範圍的擺動。

D的作用就是讓實體量的速度趨于0,隻要什麼時候,這個量具有了速度,D就向相反的方向用力,盡力刹住這個變化。

Kd參數越大,向速度相反方向刹車的力道就越強,如果是平衡小車,加上P和D兩種控制作用,如果參數調節合适,它應該可以站起來了。

3、Ki積分增益

Ki積分控制考慮過去誤差,将誤內插補點過去一段時間和(誤差和)乘以一個正值的常數Ki。

還是以熱水為例,假如有個人把加熱裝置帶到了非常冷的地方,開始燒水了,需要燒到50℃。

在P的作用下,水溫慢慢升高,直到升高到45℃時,他發現了一個不好的事情:天氣太冷,水散熱的速度,和P控制的加熱的速度相等了。

這可怎麼辦?

P兄這樣想:我和目标已經很近了,隻需要輕輕加熱就可以了。

D兄這樣想:加熱和散熱相等,溫度沒有波動,我好像不用調整什麼。

于是,水溫永遠地停留在45℃,永遠到不了50℃。

根據常識,我們知道,應該進一步增加加熱的功率,可是增加多少該如何計算呢?

前輩科學家們想到的方法是真的巧妙,設定一個積分量,隻要偏差存在,就不斷地對偏差進行積分(累加),并反應在調節力度上。

這樣一來,即使45℃和50℃相差不是太大,但是随着時間的推移,隻要沒達到目标溫度,這個積分量就不斷增加,系統就會慢慢意識到:還沒有到達目标溫度,該增加功率啦!

到了目标溫度後,假設溫度沒有波動,積分值就不會再變動,這時,加熱功率仍然等于散熱功率,但是,溫度是穩穩的50℃。

Ki的值越大,積分時乘的系數就越大,積分效果越明顯,是以,I的作用就是,減小靜态情況下的誤差,讓受控實體量盡可能接近目标值。

I在使用時還有個問題:需要設定積分限制,防止在剛開始加熱時,就把積分量積得太大,難以控制。

PID算法的參數調試是指通過調整控制參數(比例增益、積分增益/時間、微分增益/時間)讓系統達到最佳的控制效果。

調試中穩定性(不會有發散性的震蕩)是首要條件,此外,不同系統有不同的行為,不同的應用其需求也不同,而且這些需求還可能會互相沖突。

一文搞懂PID控制算法

PID算法隻有三個參數,在原理上容易說明,但PID算法參數調試是一個困難的工作,因為要符合一些特别的判據,而且PID控制有其限制存在。

1、穩定性

若PID算法控制器的參數未挑選妥當,其控制器輸出可能是不穩定的,也就是其輸出發散,過程中可能有震蕩,也可能沒有震蕩,且其輸出隻受飽和或是機械損壞等原因所限制。不穩定一般是因為過大增益造成,特别是針對延遲時間很長的系統。

2、最佳性能

PID控制器的最佳性能可能和針對過程變化或是設定值變化有關,也會随應用而不同。

兩個基本的需求是調整能力(regulation,幹擾拒絕,使系統維持在設定值)及指令追随 (設定值變化下,控制器輸出追随設定值的反應速度)。有關指令追随的一些判據包括有上升時間及整定時間。有些應用可能因為安全考量,不允許輸出超過設定值,也有些應用要求在到達設定值過程中的能量可以最小化。

3、各調試方法對比

一文搞懂PID控制算法

4、調整PID參數對系統的影響

一文搞懂PID控制算法

拓展學習:

一文搞懂I2C通信

一文看懂Modbus協定

一文搞懂TCP的三次握手和四次揮手

一文搞懂三級管和場效應管驅動電路設計及使用

參考資料:

PID原理和參數調試

誰曾想,聽了個故事秒懂了PID!

繼續閱讀