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