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