PID 參數(shù)整定
PID控制器(Proportion Integration Differentiation)
俗稱比例-積分-微分控制器,分別由比例單元(P)、積分單元(I)和微分單元(D)組成。一般來說,通過調(diào)整這三個單元的增益Kp,Ki和Kd來確定PID控制特性。其實PID控制器是一類控制器,而其實控制器有很多種,比如:P控制器,PI控制器,PD控制器等。
看完這段PID的描述,也許很多人就已經(jīng)讀不下去了,PID控制器到底和我們的現(xiàn)實生活有什么聯(lián)系啊?怎么能讓一個控制小白也很容易地理解這件事呢?
那么,讓我們來舉個通俗易懂的例子,幫助大家更加通俗易懂地理解PID到底是干什么的!
先講個故事,古希臘哲學(xué)家芝諾曾提出過一條著名的悖論:阿喀琉斯是古希臘神話中十分善跑的英雄。在他和烏龜?shù)馁惻芨傎愔校乃俣葹闉觚斒叮瑸觚斣谇懊?00米跑,他在后面追,但他不可能追上烏龜。
為什么呢?因為在競賽中,追者首先必須到達(dá)被追者的出發(fā)點,當(dāng)阿喀琉斯追到100米時,烏龜已經(jīng)又向前爬了10米,于是,一個新的起點產(chǎn)生了;阿喀琉斯必須繼續(xù)追,而當(dāng)他追到烏龜爬的這10米時,烏龜又已經(jīng)向前爬了1米,阿喀琉斯只能再追向那個1米。
就這樣,烏龜會制造出無窮個起點,它總能在起點與自己之間制造出一個距離,不管這個距離有多小,但只要烏龜不停地奮力向前爬,阿喀琉斯就永遠(yuǎn)也追不上烏龜。
看到這里大家是不是感覺到這似乎是一個死循環(huán)...
這就是鼎鼎有名的芝諾悖論!而該悖論的原理其實是一個時間問題,這里不是我們解釋的重點。
▲芝諾悖論
那善跑將軍阿喀琉斯就永遠(yuǎn)不會贏嗎?借著這個故事,我們可以給阿喀琉斯設(shè)計一個PID控制系統(tǒng),指導(dǎo)阿喀琉斯去追上烏龜,并且還可以一直跟隨烏龜,跑過了還可以再跑回來,直到和烏龜保持同一個位置。
在這個過程中,我們相信可以憑借這個“假想”幫助大家很好地理解PID控制的原理及各參數(shù)的物理意義。
首先,還是要普及一下基礎(chǔ)概念:
· PID控制器對反饋系統(tǒng)中的誤差進(jìn)行操作并執(zhí)行以下操作
1. PID控制器計算一個與誤差成比例的項- P項;
2. PID控制器計算一個與誤差積分成比例的項——I項;
3. PID控制器計算一個與誤差導(dǎo)數(shù)成比例的項——D項;
4. 這三項——P項、I項和D項——加在一起就產(chǎn)生了應(yīng)用于被控制系統(tǒng)的控制信號。
▲PID控制示意圖
具體的傳遞函數(shù)就是三項加起來:PID(s) = Kp + Ki/s+ sKd
比例項就是誤差與比例參數(shù)的乘積,積分項就是過去一段時間內(nèi)積累的誤差和。微分項是未來一段時間誤差的變化。
看到這里很多工友就已經(jīng)腦袋暈了,別慌,繼續(xù)看下去你就明白了。
PID控制器主要適用于基本上線性,且動態(tài)特性不隨時間變化的系統(tǒng)。然而,PID控制器的厲害就在于它就是一個公式打天下,即只要用按公式計算,就能知道執(zhí)行機(jī)構(gòu)的具體動作,并且把受控系統(tǒng)控制在想要的位置??吹竭@里,大家應(yīng)該產(chǎn)生了一個新疑問,那么控制里講的受控系統(tǒng)和執(zhí)行器是指什么呢?
受控系統(tǒng)就是我們要控制的對象,當(dāng)左側(cè)手按彈簧的時候,當(dāng)手松開,彈簧還能維持到一個固定的高度不變,這個過程是自穩(wěn)定過程(不帶積分特性的過程對象),屬于自穩(wěn)定受控系統(tǒng)。
而右側(cè)如果用手去按一個橡皮泥,把手松開,橡皮泥軟在桌面上恢復(fù)不了原來的高度,這個過程是一個非自穩(wěn)定過程(帶積分特性的過程對象),屬于非自穩(wěn)定受控系統(tǒng)。
▲自穩(wěn)定過程和非自穩(wěn)定過程
下面再舉個受控系統(tǒng)的一個簡單示例,說明通過加熱系統(tǒng)控制室溫的過程,是個自穩(wěn)定過程。傳感器測量室溫并將溫度值傳送給控制器??刂破鲗?dāng)前室溫與設(shè)定值進(jìn)行比較,并計算加熱控制的輸出值(調(diào)節(jié)變量)。
▲室溫控制流程圖
為什么室溫控制是一個自穩(wěn)定過程呢?當(dāng)不進(jìn)行加熱或制冷操作的時候,室內(nèi)溫度和室外溫度經(jīng)過一定時間熱交換后是基本不變,室溫還會緩慢的穩(wěn)定。是不是很像上圖中的彈簧?
對比上面的模型之后,我們再將目光轉(zhuǎn)回到阿喀琉斯和烏龜賽跑的問題上,用PID來解釋一下,如下圖:
▲賽跑問題PID控制流程圖
▲比賽位置示意圖
此時我們的PID控制器可以派上用場了!我們先來設(shè)定一場比賽,為了增加難度,將阿喀琉斯放置在一個1000米長的速度恒定的跑步機(jī)上,假設(shè)烏龜在平地上沿跑步機(jī)爬直線,并且在阿喀琉斯前面100米。
控制模型:阿喀琉斯以PID控制的方式用在跑步機(jī)上追趕烏龜;
設(shè)定值:烏龜?shù)奈恢?/p>
實際值:阿喀琉斯的位置
輸出值:阿喀琉斯的跑步速度
測量傳感器:裁判的眼睛
執(zhí)行對象:阿喀琉斯
正執(zhí)行:向前跑
反執(zhí)行:向后跑
首先要解決的問題是比賽范圍,在這場比賽之前要限定一下坐標(biāo)系和范圍,要讓烏龜和阿喀琉斯在一個特定范圍里來比賽,跑道只有1000米。目前已知烏龜在阿喀琉斯起跑位置前的100米,那么這個時刻,用烏龜?shù)奈恢脺p去阿喀琉斯的位置就是絕對偏差,即100米,PID系統(tǒng)會依據(jù)已知條件告訴我們什么呢?先只用比例調(diào)節(jié)P參數(shù),我們隨便給一個默認(rèn)初始值,比例系數(shù)是預(yù)估的比如P=2.0(沒有單位)。但是問題來了,這時候難道我們要告訴阿喀琉斯去跑100米*2.0=200米嗎?
當(dāng)然不是,PID在運行之前是要限制烏龜位置的,需要指定烏龜只能在0到1000米的范圍內(nèi)進(jìn)行直線活動,那么烏龜在初始時刻的100米就可以歸一化為10%了,這個時候PID控制器就可以知道告訴阿喀琉斯開始要用20%的速度去跑。
▲參數(shù)定義歸一化
但是總不能讓阿喀琉斯一直用20%的速度跑吧!如果幾年之后再通知阿喀琉斯,即使只用20%的速度跑,阿喀琉斯可能已經(jīng)繞地球一周回來了。雖然我們第一個問題做了限制,阿喀琉斯跑到終點就停了。所以,第二個要解決的問題是多長時間通知一次阿喀琉斯?
▲執(zhí)行周期設(shè)定過大
在純比例模型下P=2.0不考慮積分和微分。如果0.01毫秒通知一次阿喀琉斯,那會有兩個問題:一則測量系統(tǒng)會很累,需要瞬間知道阿喀琉斯的精確位置,再需要知道烏龜?shù)木_位置,姑且不說阿喀琉斯能不能在這么短的時間內(nèi)的接收到命令,即便能接收到命令,在還沒來得及執(zhí)行的時候就收到第二條命令了。二則因為誤差基本沒消除,所以命令還是19.99999%的速度(解釋一下這里,因為在0.01毫秒的時間后,阿喀琉斯和烏龜之間的距離,也就是誤差縮小了,所以計算結(jié)果也會相應(yīng)的有微小變化),然后下一個0.01毫秒收到19.99999%速度,即使發(fā)100次也許還是19.999,也許阿喀琉斯需要3秒(3秒:超級跑車百公里加速時間)才能加速到20%。所以通知的太頻繁,超過了執(zhí)行機(jī)構(gòu)的執(zhí)行能力,做的都是無用功。
▲執(zhí)行周期設(shè)定過小
所以大家看出來了,要想完成好比賽,我們需要對阿喀琉斯的加速能力有很充分的了解。他雖是古希臘英雄,但一定不是神。這就和我們玩游戲需要看一下英雄的能力面板一樣,而提升能力需要不同模式的打怪升級,每次升級之后,還需要再去Check下英雄的能力值是如何提升的。
我們用兩張圖表,來看一下,當(dāng)對阿喀琉斯下達(dá)命令之后,他會有什么樣的執(zhí)行能力,下邊兩張圖示中,第一張圖表中的橫軸代表時間,縱軸代表對阿喀琉斯的指令。第二張圖表是同一個時間范圍內(nèi),阿喀琉斯的實際動作情況。
▲執(zhí)行機(jī)構(gòu)能力考核
先看縱軸Y表示PID系統(tǒng)告訴阿喀琉斯用100%的速度去跑,X表示阿喀琉斯的實際跑步速度,看看阿喀琉斯到底能跑多快,Tu就是阿喀琉斯聽到命令的起跑時間,Tg就代表阿喀琉斯從靜止跑到最快的理論加速度時間,于是我們用這個比值大體評價一下阿喀琉斯到底是超能力的神還是一個普通英雄?
▲根據(jù)執(zhí)行機(jī)構(gòu)能力分類
如上表,根據(jù)Tu和Tg的比值,我們把受控系統(tǒng)分為I型,II型和III型。
假設(shè)測試的阿喀琉斯是屬于I型的受控系統(tǒng),可以很好的被控制,根據(jù)測試結(jié)果用比較合適的采樣和執(zhí)行周期,比如每5秒鐘檢測一次位置情況并分別用P模型PI模型和PID模型來說明一下具體追趕過程。
第一種模型:在P模型下,只有比例環(huán)節(jié)P=2,周期為2秒通知。第一個2秒阿喀琉斯跑了55米,烏龜爬了0.01米,誤差還有4.5%,PID算法得出下面需要用9%的力量去跑,又過了2秒,阿喀琉斯還落后烏龜1米,那么阿喀琉斯需要用2%的速度向前跑,又過了2秒,阿喀琉斯還落后了烏龜1米,控制系統(tǒng)告知阿喀琉斯需要用2%的速度向前跑,結(jié)果1個小時過去了,阿喀琉斯始終在烏龜?shù)暮竺?米的位置,2%的速度基本和跑步機(jī)向后的速度相當(dāng)了,始終無法與烏龜位置一致。系統(tǒng)已經(jīng)穩(wěn)定了,還始終存在這樣一個偏差,就是穩(wěn)態(tài)誤差,看來想要消除這個誤差,我們需要用下一個模型-PI模型。
▲比例P模型參考圖
第二種類型,在PI模型下,在加入了積分環(huán)節(jié)后,假設(shè)積分時間設(shè)為30秒,那么根據(jù)公式,要計算阿喀琉斯在過去的30秒總共累積了多少誤差(即把每次的誤差都累加起來)。如上文2秒鐘一通知,30秒會通知15次,這15次測量的距離誤差都加起來。,開始的時候距離比較遠(yuǎn),積分項會給阿喀琉斯帶來更快的速度指令,但由于是考慮了之前的誤差正向的,所以即使剛剛跑過了,15次誤差的和還是正向的,所以會一直指導(dǎo)阿喀琉斯向前沖到下圖1的位置,這個時候過去的累積誤差已經(jīng)是負(fù)的了,才要求阿喀琉斯向后跑,整個向后的過程又重復(fù)之前的累積誤差,直到?jīng)_到下圖2的位置才向前,所以最后的效果就是1-2-3-4-5,阿喀琉斯慢慢的向烏龜靠近,隨著時間的推移,誤差越來越小,最后達(dá)到消除了穩(wěn)態(tài)誤差。
▲比例積分PI模型參考圖
然而在上一個PI模型下,我們是否察覺阿喀琉斯來回跑的次數(shù)太多了?明明已經(jīng)超過了烏龜很遠(yuǎn)了,還不回頭(阿喀琉斯:PID控制器讓我這么做的,你以為我不想回頭嗎!)。為了解決這個問題,需要引入微分分量,就是解決對未來趨勢預(yù)測的問題,高等數(shù)學(xué)中講到過微分就是求導(dǎo),已知位置對時間的導(dǎo)數(shù)就是速度,速度對時間的導(dǎo)數(shù)就是加速度。用前一次誤差減去當(dāng)前次誤差,如果有變化,因為測量的時間段相同,所以就意味著誤差改變率發(fā)生了變化,就能預(yù)測未來下一次可能出現(xiàn)的誤差會是什么樣,就像我們知道了加速度的變化就可以推測速度的趨勢是一個道理。按上面PI的算法,前一次誤差假設(shè)是5%,當(dāng)前誤差是3%,因為是每兩秒鐘測量一次,所以計算的微分項是3%減去5%,再除以時間,得到-1%的的積分項,如果積分時間是30秒,代表這樣的積分效果要持續(xù)30秒時間。這樣當(dāng)阿喀琉斯越靠近烏龜,減少效果越明顯,當(dāng)阿喀琉斯超過了烏龜?shù)奈恢?,比如超過了1%,那么微分項是-1%減去之前的3%,再除以采樣時間2秒,得到-2%的減速項,這樣的減速效果還要持續(xù)30秒的時間,可以看到增加了微分項能有效減少阿喀琉斯超出烏龜?shù)奈恢?,如下圖13,只要找到合適的微分時間就能使阿喀琉斯提前減速,在剛剛超越烏龜?shù)臅r候就往回返,快速穩(wěn)定的和烏龜保持同一位置。
▲比例積分PID模型參考圖
最后我們動態(tài)的顯示下,追趕過程中各個參數(shù)的變化對追趕路徑的影響,下圖紅線表示烏龜?shù)奈恢茫{(lán)色線表示阿喀琉斯的追趕位置。
▲比例積分PID模型參數(shù)變化效果模擬圖
阿喀琉斯沒有發(fā)生類似于龜兔賽跑的“悲劇”,善跑的稱號得以保留。由此,在上面的例子里我們知道了PID的控制就是要對執(zhí)行機(jī)構(gòu)有非常細(xì)致的了解,并且找到與受控系統(tǒng)相匹配的參數(shù)。那么在實際生活中用到的各個系統(tǒng),都非常復(fù)雜,如何找到合適的參數(shù),達(dá)到預(yù)想的控制效果呢?下面就介紹一下典型的受控系統(tǒng)類型的經(jīng)驗參數(shù)選擇和電腦自適應(yīng)調(diào)參數(shù)的過程。
▲特定受控系統(tǒng)的一般參數(shù)
了解了各個物理量的性能特性,就像知曉了阿喀琉斯的跑步能力,再根據(jù)需要選擇合適的控制器類型和參數(shù)。
下表概述了控制器結(jié)構(gòu)與物理量的各種組合的適宜性。
▲特定物理量的控制器結(jié)構(gòu)推薦
知道適用規(guī)則了,還有很多在實際項目中的參數(shù)設(shè)置的經(jīng)驗(Gain表示比例參數(shù))
如果控制器具有PID結(jié)構(gòu),則積分作用時間的設(shè)置和微分作用時間的設(shè)置通常會相互結(jié)合。比率TI/TD介于4和5之間,這對于大多數(shù)受控系統(tǒng)都是最優(yōu)的。
對于PI和PID控制器,如果大部分情況下選擇的積分作用時間TI過短,則會發(fā)生控制振蕩。如果積分作用時間過長,則會降低干擾的穩(wěn)定速度。因此,不要希望進(jìn)行第一次參數(shù)設(shè)置后,控制回路工作狀態(tài)就能達(dá)到“最優(yōu)”狀態(tài)。經(jīng)驗表明,當(dāng)系統(tǒng)處于Tu / Tg > 0.3 “難以控制”狀態(tài)時,進(jìn)行調(diào)整是很必要的。
那么除了經(jīng)驗參數(shù),有沒有辦法讓控制器自動尋找PID參數(shù)呢?當(dāng)然也有,西門子S7-1200和S7-1500系列PLC都支持PID自調(diào)節(jié)功能。
只要連接好受控系統(tǒng)輸出的執(zhí)行機(jī)構(gòu),做好設(shè)定值和反饋值的連接,就可以開始做自動尋找參數(shù)的過程了。尋找參數(shù)可以分為預(yù)調(diào)節(jié)和精確調(diào)節(jié)。
預(yù)調(diào)節(jié)功能可確定對輸出值跳變的過程響應(yīng),并搜索拐點。根據(jù)受控系統(tǒng)的最大上升速率與時間計算PID參數(shù)??稍趫?zhí)行預(yù)調(diào)節(jié)后再執(zhí)行精確調(diào)節(jié)時獲得最佳PID參數(shù)。
▲PID預(yù)調(diào)節(jié)的七個階段圖
▲PID預(yù)調(diào)節(jié)的具體過程圖
▲PID精確調(diào)節(jié)的階段圖
▲PID預(yù)調(diào)節(jié)的具體過程圖
如果很多情況下不能具備連接現(xiàn)場實際設(shè)備來做PID參數(shù)自整定,也可以用一個功能塊通過PLC程序仿真一下執(zhí)行機(jī)構(gòu),將仿真的執(zhí)行機(jī)構(gòu)執(zhí)行的效果連同PID控制塊進(jìn)行離線的參數(shù)自整定,當(dāng)然這樣做出來的參數(shù)只是為了驗證邏輯和學(xué)習(xí)控制器,到真實的項目應(yīng)用還需要重新做自整定的。
具體仿真過程需借助西門子博圖軟件的“PID_Compact”塊和“LSim”仿真庫,圖為 S7-1500 實現(xiàn)一個閉環(huán)控制系統(tǒng)。PC 站用于將控制回路可視化,PG 用于組態(tài)。
▲離線仿真PID過程對象模擬
▲離線仿真PID過程對象模擬
大家可能會好奇自控原理在生活里的應(yīng)用是什么?水壺?zé)詣訑嚯?,冰箱壓縮機(jī)的啟停等、馬桶的自動沖水、變頻空調(diào),都源自自控原理最簡單的PID控制,其實現(xiàn)實中,我們雖然都在使用反饋的思想,就比如人們常說的和面,怎么能知道面和水的比例是多少呢,就靠手來感覺,面多了加水,水多了加面。這種系統(tǒng)就是非自調(diào)節(jié)的受控系統(tǒng),如果掌握不好度水會一直加下去。又不能把多加的水抽出來,所以只能下次積累點經(jīng)驗,這次的不調(diào)節(jié)范圍放大,水多就水多點吧也不加面了。用結(jié)果指導(dǎo)下次的動作但很難找到完全的合適的受控系統(tǒng)。
PID原理是清楚了,至于什么情況用什么PID模型,還是查表,我們家用的水壺?zé)刂频奈锢砹渴菧囟?,看上面表格推薦PD是非常適用,為什么呢?因為目前咱們的溫度檢測點比較慢,水都已經(jīng)到設(shè)定溫度了,檢測的溫度還沒到,或者水壺都已經(jīng)斷電了,溫度還在上升,這都是滯后造成的。
總體說來,PID控制器簡單易懂,使用中不需精確的系統(tǒng)模型等先決條件,因而成為應(yīng)用最為廣泛的控制器。但是,PID也不是全能的哦。很重要的一點是因為, PID控制器主要適用于基本上線性,且動態(tài)特性不隨時間變化的系統(tǒng),但是對復(fù)雜非線性系統(tǒng)和復(fù)雜信號追蹤,還是有局限性的。