時間飛逝,不知不覺就到了大二下學期,比起以前大一時的青澀,現在倒是成熟了不少。從一開始目睹學長參加各種比賽,分享自己的經驗,到現在親身經歷這些,確實是很不一樣的感受。。。尤其瑞哥弄了光科這個博客,我本人本來又不太會講話,又是第一次寫這個,寫的不好的還請大家多多包涵。。
今天給大家分享的是PID算法,我將從兩個個方面來介紹PID。
一.什麼是PID
1.PID控制原理
由圖可以清晰的看出,PID據給定值rin(k)與實際輸出值yout(k)構成控制方案,由比例,積分和微分三個環節來使被控對象輸出目標值。
比例環節:成比例地反映控制系統的偏差信號e(t),偏差一旦產生,控制器立即產生控制作用,以減小偏差。
積分環節:主要用於消除靜差,提高系統的無差度。積分作用的強弱取決於積分時間常數T,T越大,積分作用越弱,反之則越強。
微分環節:反映偏差信號的變化趨勢,並能在偏差信號變得太大之前,在系統中引入一個有效的早期修正信號,從而加快系統的動作速度,減少調節時間。
2.基本公式
常用的有兩種,位置式和增量式,增量式啓示就是位置式推導而來。下面列出位置式PID公式:
其中
Ti爲積分時間常數,TD爲微分時間常數,KP爲比例係數。
二.怎麼用PID
1.公式的離散化
很顯然,由於積分的作用,公式適用於連續性函數,但在我們實際控制中,例如使用單片機,我們通常有個採樣時間,即當這個時間很小時候,可以將公式離散化,近似看作相等。
高等數學大家都學過,積分效果可以表示面積,將橫座標以T0採樣時間爲間隔劃分,時間很短的時候,可以把誤差面積分成一個一個小長方形,因此上述公式可以化爲:
而我們常見的形式就是:
很顯然Ki=Kp*T0/Ti,Kd=Kp*Td/T0。
2.增量式PID
所謂增量式PID,就是將前後兩個位置式u(t)相減。因此得到:
3.PID參數的整定
參數整定一般有兩種方法,一種是利用一些算法尋找PID係數最優解,例如SOA,PSO,GA等算法。第二種就是根據經驗和實際效果去調試,這種方法也用的比較多,口訣如下:
先是比例後積分,最後再把微分加
曲線振盪很頻繁,比例度盤要放大
曲線漂浮繞大灣,比例度盤往小扳
曲線偏離回覆慢,積分時間往下降
曲線波動週期長,積分時間再加長
曲線振盪頻率快,先把微分降下來
動差大來波動慢。微分時間應加長
理想曲線兩個波,前高後低4比1
一看二調多分析,調節質量不會低
4.PID的優化方法
(1)積分分離
具體實現的步驟是:
1、根據實際情況,人爲設定閾值ε>0;
2、當∣e (k)∣>ε時,採用PD控制,可避免產生過大的超調,又使系統有較快 的響應;
3、當∣e (k)∣≤ε時,採用PID控制,以保證系統的控制精度。
(2)抗積分飽和
具體實現的步驟是:
在計算u(k)時,首先判斷上一時刻的控制量u(k-1)是否己超出限制範圍。若超出,則只累加負偏差;若未超出,則按普通PID算法進行調節。
(3)梯形積分
在PID控制律中積分項的作用是消除餘差,爲了減小余差,應提高積分項的運算精度,爲此,可將矩形積分改爲梯形積分。
梯形積分的計算公式爲:
(4)帶死區的PID
在計算機控制系統中,某些系統爲了避免控制作用過於頻繁,消除由於頻繁動作所引起的振盪,可採用帶死區的PID控制算法,控制算式爲:
(5)模糊控制
當|error|較大時,不論e_error的趨勢如何,Kp取較大的值使系統快速響應。防止|e_error|瞬間過大,Kd取值小。爲控制超調,Ki取值小。
當|error|中等時,爲控制超調和提高響應速度,則Kp減小,Kd中等,Ki值增大。
當|error|較小時,保證系統的穩定性,加大Kp、Ki的值。爲了避免振盪Kd值根據|e_error|具體而定。
其中,實際速度與期望速度的誤差error 前後兩次error的變化率爲e_error
最後,理論和實際是有很大差別的,因此如果你想學好PID或者其他的東西,就得通過實踐來讓自己理解更深刻。