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