一,先談關於水缸漏水的問題
談到PID原理入門的時候,大家經常會舉的一個例子就是水缸漏水的例子。這里把一個解釋水缸漏水的帖子放在這里:https://blog.csdn.net/qq_41736609/article/details/80035400。我就不對這個例子進行展開講解了,這里我要首先談的是,這個例子對大家的一個誤導。我們先看一個典型的PID控制的簡單系統:
我們可以看到,在這個系統下,誤差函數error(t)經過PID調節后得到的e(t)。會由經過控制系統的傳遞函數而得到yout(t),這里我們就會發現一個問題:在水桶問題對PID調節的講解中,我們是通過error(t)對水桶的加水情況進行了一個補正的,但是實際情況是什么呢?在PID的控制系統中,我們是直接通過PID調節得到的函數作為了控制系統的輸入函數,而非補正,因為在這里我認為大家經常談論的水桶問題對PID的入門有一個非常大的誤導。下面我會從流程控制圖的角度為大家解釋PID控制的基本原理。
二,從流程控制圖的角度對PID算法的作用進行解釋
首先老規矩,列出PID控制算法的基本公式:,只要是稍微接觸PID算法的人,想必對這個公式是很熟悉了,接下來會針對PID中的三個參量,逐步進行講解。
1.從開機以來傳感器所有采樣點的一個數據序列
X1、X2、X3、…Xk-2、Xk-1、Xk
2.分析采樣點的數據序列,可以挖掘出3個方向上的信息
①Ek=Sv-Xk
1)Ek >0 當前未達標
2)Ek =0 已經達標
3)Ek <0 當前已經超標
我們設定OUT = Kp*Ek,為了簡單起見,直接把系統的傳遞函數默認為1,這樣得到的yout = OUT,初看時好像很難做到,但是我們首先考慮不存在外部擾動的情況,這時由前面的關系式可以推出:rin - yout = Ek,又有,yout = Kp*Ek,可以推導出表達式:rin = yout + Ek = (Kp + 1)Ek。我們發現了什么?實際上rin和yout是有一個確定的關系存在的,並且這個關系和Kp相關,Kp越大,兩者便越接近。(有朋友提到P控制方案有一個缺點,也就是Ek等於0的時候不會進行控制,實際上是不存在這點的,我們可以看到當Ek等於0后,yout隨之改變,系統再次出現閉環,實現了閉環的負反饋。
-------------------------------------------------------------分割線---------------------------------------------------------
這里是積分講解部分:
②Ek=Sv-Xk
X1、X2、X3、…Xk-2、Xk-1、Xk
在每一時刻都會產生一個誤差,將其記錄下來即為一個誤差序列:
E1、E2、E3…Ek-2、Ek-1、Ek
這些誤差中有正有負,大於零說明未達標,小於零即為已達標。
Sk= E1+E2+E3…Ek+Ek-1+Ek
1)Sk>0 過去這段時間,大多數是未達標的。
2)Sk=0過去這段時間,大多數是已達標的(可能性很小)。
3)Sk<0過去這段時間,大多數是已超達標的。
我們有提到過單純的P調節的問題:也就是當yout受到外部擾動時,單純的P調節很難讓系統穩定下來,這個時候就需要積分調節起作用了,這里可以先舉一個不太恰當的比喻,也就是在yout后面放置一個-0.2t的擾動,yout = Kp*Ek - 0.2t,因為在每次的調節過后,都會受到這樣一個擾動。同樣我們寫出yout與rin的關系式,此時這個關系式變成了:yout = (Kp*rin - 0.2t)/(Kp +1),這里才是我們應該注意的問題,就是說這個部分會有一個-0.2t的誤差一直是存在的。而且隨着系統運行時間的變化,這個誤差還會逐漸增大。這里我們看一看下面的例子:
此為一個去掉了積分參數,然后再輸出函數中加入一個時間函數進行擾動的例子,他的對比圖如下所示:
我們可以看到,這里引入這個與時間正相關的擾動,會使得沒有I參數的調節完全失效,輸出變量將會隨着時間的增長不斷增加。然后我們看看在加入積分調節后,情況會變得怎么樣:
與之前相比,這里引入了一個積分的調節功能,讓我們看看他的調節波形:
很明顯可以看到,我們之前逐漸偏離的問題,因為積分調節的引入被成功解決了。
--------------------------------分割線------------------------------------
這里是微分講解部分:微自動控制系統在克服誤差的調節過程中可能會出現振盪甚至是失穩,其原因是由於存在有較大慣性組件(環節)或滯后組件,具有抑制誤差的作用,其變化總是落后於誤差的變化。解決的辦法是使抑制誤差作用的變化“超前”,即在誤差接近零時,抑制誤差的作用就應該是零。而只引入P項是不夠的,它僅僅是放大了誤差的幅值,但是加入微分項后,它能預測誤差變化的趨勢,從而避免了被控量嚴重超調,正是D控制的預測作用,改善了系統調節過程中的動態特性,加快了調節也就是消除誤差的過程。在微分D控制中,輸出與輸入誤差信號的微分(即誤差的變化率)成正比關系。
(pid聯合控制時的方式為,P控制先走到98或102,然后I控制在100步處來回晃幾次,而此時D的作用是減少晃的幅度、次數等振盪因素以及避免失穩情況的發生,從而改善系統調節過程中的動態特性,加快了調節過程也就是消除誤差的過程,完成控制。)該部分摘自:https://blog.csdn.net/baidu_39525096/article/details/89460966?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
推薦的PID書籍:《先進PID控制MATLAB仿真(第二版)》
鏈接:https://pan.baidu.com/s/1dZwl6Xl7DddRnR1VsAKBeg
提取碼:ipi0