PID控制是一種算法,用于控制輸出,以便將某個過程保持在精確值。一些例子包括:
控制船上的舵的位置以便駛向特定的方向。
控制提供給加熱元件的功率,以保持特定的溫度。
控制汽車的發(fā)動機(jī)油門以保持特定的速度(“巡航控制”)。
控制飛機(jī)副翼的位置以保持特定的旋轉(zhuǎn)速度。
控制水處理廠中化學(xué)藥品加入水流的速度。
PID有三個變量,即輸入、輸出和設(shè)定值。PID算法控制輸出,以使輸入與設(shè)定值相匹配。
例如,在控制船舵以駛向特定航向的場景中:
輸入是指南針或GPS航向。
設(shè)定點是期望的航向。
輸出是舵角。
輸入和設(shè)定點之間的差異稱為誤差,PID算法旨在消除過程中的誤差。為了理解為什么需要PID,讓我們先來看看更簡單的過程控制方法。
棒棒控制
Bang-bang控制是一種數(shù)字形式的控制,輸出要么完全打開(最大值),要么完全關(guān)閉(最小值),兩者之間沒有任何東西。當(dāng)輸出也是數(shù)字時,這種控制似乎更直觀;例如完全打開或關(guān)閉的閥門,或者可以打開或關(guān)閉的空調(diào)。使用空調(diào)的例子,輸入將由溫度傳感器提供,并且設(shè)定點將是要保持的期望溫度。算法很簡單:
If the measured temperature is above the setpoint then we turn the air-conditioner on, otherwise we switch it off.對于某些應(yīng)用程序,這可能工作得很好。然而,對于其他人來說,可能會遇到兩個問題中的一個或兩個:
設(shè)定點附近的讀數(shù)快速變化。
第一個問題是在設(shè)定點附近相對快速波動的讀數(shù)。例如,假設(shè)設(shè)定值為20 ℃,根據(jù)房間周圍的氣流或溫度傳感器的穩(wěn)定性,讀數(shù)可能在例如20.1℃和20.0℃之間波動;每次溫度讀數(shù)僅比設(shè)定值高0.1°C時,空調(diào)就會再次打開,一旦讀數(shù)再次達(dá)到20.0°C時,空調(diào)就會再次關(guān)閉。這可能會很快發(fā)生,這既會讓房間里的人感到討厭,也可能會損壞空調(diào)。。如果制冷和制熱都可用,我們可以想象一個場景,溫度在19.9°C和20.1°C之間波動,空調(diào)和加熱器相對快速地開關(guān)——兩者互相干擾,浪費能源。
解決方案是在設(shè)定點附近增加一些延遲或緩沖,這稱為滯后。在我們的例子中,2°C的滯后意味著一旦溫度達(dá)到20°C并且空調(diào)關(guān)閉,那么空調(diào)不會再次打開,直到溫度再次上升到22°C。如果也有暖氣,那么在溫度降到18°C之前,暖氣不會打開(但是一旦打開,在溫度升到20°C之前不會再次關(guān)閉)。
過沖。
可能遇到的第二個問題是超調(diào)。指令輸出和輸入測量輸出指令結(jié)果之間存在延遲時,通常會出現(xiàn)過沖。以在水處理廠向水流中添加化學(xué)物質(zhì)為例:化學(xué)物質(zhì)需要一段時間才能溶解到水中,因此我們只能在添加化學(xué)物質(zhì)的下游一點點處測量結(jié)果,也許是pH值,也就是說,在這個過程中會有一些延遲。比方說,我們開始時pH值有點太低,所以我們打開閥門向水中添加堿,以便使pH值升高一點;這開始起作用,但是當(dāng)我們在傳感器上讀取pH中性值并關(guān)閉閥門時,大量的堿已經(jīng)被添加到上游,傳感器讀數(shù)遠(yuǎn)遠(yuǎn)超過中性值,我們開始獲得非常高的pH值讀數(shù);現(xiàn)在,系統(tǒng)通過打開閥門向水中添加酸來對高pH讀數(shù)做出反應(yīng),以便再次降低pH值——但當(dāng)這種影響到達(dá)傳感器時,我們再次超過中性,讀數(shù)再次變得過低……該過程重復(fù),輸出繼續(xù)在設(shè)定點附近擺動——可能比觸發(fā)糾正反應(yīng)的原始誤差幅度更大。
如果我們看看控制船舵位置或汽車發(fā)動機(jī)油門位置的例子,那么同樣更直觀明顯的是,需要一個比bang-bang更好的控制系統(tǒng)——如果只需要一個小的航向修正,我們不想將船舵擺動到最右(右舷)或最左(左舷);或者讓汽車油門在踏板到金屬和完全關(guān)閉之間擺動——我們需要介于兩者之間的東西。
比例控制
比例控制(PID中的P)只做它所說的,并且控制輸出與輸入和設(shè)定點之間的差值成比例(與誤差成比例)。如果輸入和設(shè)定值之間的差異很小,那么我們僅對輸出進(jìn)行小的調(diào)整,如果差異很大,那么我們對輸出進(jìn)行大的調(diào)整。如果船只是稍微偏離了航向,那么我們只是稍微轉(zhuǎn)動一下方向舵——我們不會把它轉(zhuǎn)到底。對于某些系統(tǒng)來說,比例控制可能就是所需要的。然而,對于其他系統(tǒng),會遇到下一種問題:
積分
使用比例控制時,幾乎總是會有一定程度的穩(wěn)態(tài)誤差,這意味著系統(tǒng)不會完全達(dá)到設(shè)定值,因為接近設(shè)定值的比例控制量太小,不足以克服影響系統(tǒng)的某些偏差(可能是電流或風(fēng))。在下圖中,過程穩(wěn)定在設(shè)定值以下一點。
PID的積分(I)部分查看系統(tǒng)偏離設(shè)定值多長時間,并提升輸出以克服該偏差。例如,如果汽車上的巡航控制設(shè)置為60英里/小時,但僅使用比例控制時,速度停留在57英里/小時(由于空氣或其他阻力),那么PID的“積分”部分將隨著時間的推移增加發(fā)動機(jī)功率,以使速度達(dá)到60英里/小時的設(shè)置。同樣,對于某些控制器來說,PI控制可能就是全部所需。然而,在穩(wěn)定之前,PI本身傾向于在設(shè)定點附近至少有一些過沖和振蕩,特別是當(dāng)設(shè)定點和輸入讀數(shù)之間存在大的初始差異時(例如在啟動時或當(dāng)對設(shè)定點進(jìn)行大的調(diào)整時),因為PID的積分部分將在過渡期間累積所有的誤差,并因此變大(比需要的更大),并且沒有任何其他東西來抑制它,那么將再次減小它的唯一事情將是在相反方向上的一些累積誤差。PID的D部分解決了這個問題:
導(dǎo)數(shù)
微分(PID中的D)元件通過根據(jù)其接近設(shè)定值的速度來緩和/抑制輸出,從而最小化或消除過沖;如果輸入讀數(shù)非??斓叵蛟O(shè)定值移動,那么PID的微分部分將促使輸出變緩,以便最小化或消除過沖。在數(shù)學(xué)中,曲線的導(dǎo)數(shù)是曲線在特定點的角度或梯度,即變化率,這就是這個術(shù)語的含義。在下圖中,紅線代表陡峭的梯度(這將導(dǎo)致PID算法中的大D校正),藍(lán)線代表淺梯度(這將導(dǎo)致PID算法中的小D校正)。
調(diào)諧
PID算法中的每個元素——比例元素、積分元素和微分元素——都可以調(diào)整或加權(quán),使其在算法中產(chǎn)生更大或更小的影響,正確的值因應(yīng)用而異。PID調(diào)節(jié)是一個很深的主題,其全部深度超出了本文的范圍,但是很好地理解P、I和D中每個元素的作用是一個很好的起點。選項包括為特定類型的流程、手動調(diào)整和模擬查找一些默認(rèn)值。
手動調(diào)諧主要包括按順序調(diào)諧P、I和D元件:
首先,I和D權(quán)重設(shè)置為零,P權(quán)重增加,直到系統(tǒng)開始在設(shè)定點附近振蕩。然后,P權(quán)重被設(shè)置為該值的一半。
接下來,增加I權(quán)重,直到任何穩(wěn)態(tài)誤差被足夠快地校正,但是不要太多以至于系統(tǒng)變得不穩(wěn)定。
最后,增加D權(quán)重,直到任何過沖都被充分抑制,但沒有抑制到系統(tǒng)響應(yīng)遲緩甚至變得不穩(wěn)定(尤其是在輸入中有一些噪聲的情況下會發(fā)生這種情況)。
帶PID的數(shù)字輸出控制
如果PID控制的輸出是數(shù)字的,例如繼電器或電磁閥,則可以使用脈寬調(diào)制等技術(shù)將數(shù)字輸出有效地轉(zhuǎn)換為模擬輸出。PWM頻率根據(jù)應(yīng)用來選擇,并且取決于系統(tǒng),可以實施額外的約束,例如僅在占空比高于特定水平時才切換輸出。
這是一個使用PICCOLO微控制器的烤箱PID控制示例,在中模擬變形VSM.
審核編輯:黃飛
-
繼電器
+關(guān)注
關(guān)注
132文章
5314瀏覽量
148359 -
電磁閥
+關(guān)注
關(guān)注
14文章
508瀏覽量
31288 -
PID
+關(guān)注
關(guān)注
35文章
1469瀏覽量
85197 -
脈寬調(diào)制
+關(guān)注
關(guān)注
3文章
215瀏覽量
38267 -
PID控制
+關(guān)注
關(guān)注
10文章
453瀏覽量
40011
發(fā)布評論請先 登錄
相關(guān)推薦
評論