PID控制器的優缺點,並淺談改進方法?

智能控制方面的雜談


《自抗擾控制技術:估計補償不確定因素的控制技術》 韓京清【摘要 書評 試讀】圖書
想看PID的缺點就看每章前言,然後內容就是針對這些缺點的改進。
這應該是我所知道的跟PID最相近的一種無模型控制方法了,我一直叫它PID改進型。


簡單的說,PID博而不專,因為物理意義還算明確,對很多系統都能上去調幾下子,不論有沒有模型,有沒有輸入輸出數據。

而一旦有了模型,乃至有了輸入輸出數據,除了三階(包括)以下的LTI系統,對大多數系統來說,PID效果只能算可以接受。一般都能找到專門適應於某一小類系統的控制演算法,比PID效果好;但這些演算法往往專而不博,換到另外一個系統上可能會出大問題。

其實很多時候,PID只是底層,或曰內環,先把某個系統穩定住,或是改變下其動態。然後中層、上層再引入其它控制演算法。當然,好幾層都是PID的也挺常見的。

另外,PID做些小改動,在實際中用的也不少。其實最簡單的PID也是要考慮飽和的。但同時,很多控制系統,比如電力的,乃至粒子加速器的,等等,用的都是很奇怪的控制演算法,當然不是PID或改進PID,效果也都很好。據我所知,這很多實際中在用的,沒人也很難分析其性能(穩定性啥的),但實際中用著還不錯。

這裡有個很奇怪現象,很多領域都有:現實中在用的,往往很難分析為什麼效果好;論文中在寫的,往往很難用在實際中。我知道的一個,就不具體說了,某控制演算法,是法國人在工廠里搞出來的,後來全世界出名,在很多500強的公司在用,沒出過問題(爆炸什麼的),但就是沒法證明其穩定性。後來有人竟然為了證明穩定性,把這個演算法改了一下。。。這不就是一個人鑰匙在別處丟了,可偏偏跑到路燈下來找,僅僅因為路燈下面有亮么。。。

相當一部分學術圈的人,全世界各國的,靠在這個方向發論文來糊口,至今仍是一個非常hot的方向(當然在工程中確實效果很好)。說了之後,豈不是得罪這麼多人。

扯遠了。。。

---

其實如果仔細想想,控制器的本質是被控對象輸出(也就是控制器出入)跟控制輸出的函數映射關係。其實從這個角度來看,時變非線性的控制器其實參數空間最大,線性時不變的算是很受限制的了,而PID是則在線性時不變的基礎上限制到三個自由度。視具體系統,有的就夠了,有的甚至只要兩個自由度(PD或PI),有的一個就行(P)。

當然,實際中,PID其實要加很多trick。比如考慮到執行環節的動態,防止過飽和,考慮感測器的動態等等,其實就不再是限制到三個自由度了,乃至已經是時變非線性的了。而且最簡單的,串級PID,其實綜合起來的話,已經不只是三個自由度了。另一個方面,有的高階系統無法分離,也就無法用串級的話,那PID就很難調到很好的效果了。

PID的限制多了去了。比如時延。個人預測,時延是未來控制系統的一個大問題,因為是物理上無法克服的,而全球、萬物互聯又是大趨勢。有人用預估器等,當然也就不是原來的PID了。但預估器也要知道時延的大小或範圍吧。現實中在用的一個,是改變了系統的拓撲結構(如果只有控制器跟系統,則沒有拓撲結構可言;有了網路之後,比如在遙操作時,則存在拓撲結構了),可以做到對時延非常魯棒。你說是PID吧,已經面目全非了,而且原初的PID再調也調不到這個效果;你說不是吧,PID也還是其中一個環節。

PID也可以用魯棒控制那一套來分析和設計啊,你說是魯棒呢還是PID呢。也可以用優化那一套來調參啊。也可以做到分工況(模糊等)啊,自適應啊,等等。就是各個模塊湊在一起。這在工程中是普遍的,也無可厚非。直到出現一個更寬廣的理論,可以更簡潔而具有包容性。但當然,在沒有更好的框架之前,PID加上各種trick,不失為好的工程方案。但你不能說這就到頭了,誰知道未來會不會出現控制界的卡爾曼呢?

這裡插一句,電梯的曲線,很多感覺不舒服,有的超調、振蕩非常明顯,還有的加速沒優化,其實就是沒調好。PID好好調,加上小trick,足夠了。還有一點,就是最好加上個監測是不是有人被卡住的環節。

話說回來,到底什麼樣的曲線算好呢?其實不存在最優的,比如有的對速度、加速度有限制,有的則對能耗比較側重,有的一定不能有超調等等,有的則是響應越快越好。當然,所有的這些都是在功率限制之下。為什麼說這個呢?因為再調試時,有用機器學習或優化演算法調參的,需要有量化優化指標或是比較曲線優劣,但這個指標或評價標準卻很難確定,但同時卻又非常重要。很多指標,二次型,絕對值,等等。但選取哪個?如何評判指標?有沒有指標的指標?問題多著呢。。。

物理學中,有兩種情況需要重視,一是實驗中有出乎意料現象,但找不到理論解釋;一是理論有出乎意料的預測,但實驗中尚未觀察到。這兩種情況,都可能帶來物理學的大變革。當然,有很多出乎意料的現象,是可以用已存在的理論解釋的,只是人們沒認識到;同時,很多理論的預測是錯的。

對應地說,有時候工程中,在PID上修修補補,或是幾個現有方法的組合,效果很好。這時候可能背後有更簡單的理論,可以作為更簡潔的框架。比如卡爾曼之前,很多人在現有的濾波基礎上增增減減,效果也不錯,直到卡爾曼濾波出現。不恰當的比喻,這就像地心說時,有的觀察很難解釋,用地心說加上修修補補也能解釋,但很複雜;一改成日心說,就簡單地多了。

而就理論而言,很多新理論,聲稱自己效果好,但大部分其實不如已有的。可另外一方面,人類的控制理論,不大可能到今天就為止了吧?PID也才有不到一百年的歷史。這些新理論中,只有極少的,可以真正帶來變革。現在覺得一個有可能,不能確定。只能拭目以待。

---

在採用常規PID控制器可能會遇到什麼問題? - 自動化 的回答:

PID比較適用的是低階LTI系統,特別是三階以下的。確切的說,單入單出、三階一下、LTI系統。(PID提供三個參數自由度,視具體情況,有的系統三個已經足夠,有的甚至只需要兩個、乃至一個)。或是高階系統,但可以串級控制,或者本身就是縱向級聯繫統。每一級都是三階以下的,每一級引出個反饋用PID控制。形象點,是深度系統。當然有時候,幾入幾齣,耦合不是很強,也可以。

但十幾入十幾齣以上的寬度系統,耦合強的話,那用PID調經常是很難的。還有無法串級的高階系統也是問題。

有的系統需要自適應,比如地鐵的自動駕駛,每站上下人,所以每站質量會變;在比如雲台不能隨便換掛載。

時延系統。即使常數時延,預估器太脆弱,加大反饋又有飽和限制。而如果只知道時延的大概範圍,就更難處理了。

遙想未來:達到相對論效應不可忽略速度的宇宙飛船;達到量子效應不可忽略精度的精密操作;等等。

對精度要求很高的系統,一般是variance降低多少就可以獲得多少效益的系統。特別是階數一高,輸入輸出一多(且帶著強耦合),往往光靠PID則不行。

---

有較精確的模型,且對控制性能要求較高時。

非線性較強,時變系統。

多入多出系統。特別是變數較多,或耦合較強時。解耦方法比較難調。

有約束的系統。其實所有系統都有約束,至少有個飽和環節吧,比如馬達最高轉速。但很多時候,可以基本忽略。如果不能忽略,PID就無能無力了。

這裡岔開一句,其實狀態估計就是個反饋控制器,目標是讓狀態估計的方差最小。Kalman濾波,針對LTI系統,高斯白雜訊是最優的,但Kalman濾波是個線性時變的。如果換成LTI的(當然包括PID),就不是最優了。

等等。


PID控制器最大的優點是它不是基於模型的 控制方法,要知道,很多時候要得到被控對象的數學模型是很困難的,缺點就是它只能適用於一些簡單的被控對象中,對於複雜的,具有大滯後,大慣性的對象則無能為力。


第一個在知乎的回答 感想這麼多人點贊
非常高興這麼多人對控制感興趣

我也在不斷學習中,發現去年的回答有不準確的地方,所以做出更正 希望不要誤導了大家 謝謝

~~~2014.12.06 更新好吧 知乎里控制理論相關的答案確實不多。很多人自稱關注科技,可是要理解現在的科技,光知道計算機結構,感測器原理是遠遠不夠的,我們不能迴避這個非常不像科技的話題。因為,當我們熟悉了各種感測器電動機等等元件(components),我們最關注的問題就是,怎麼使用它們,如何有序地組合電氣或是機械或是社會學甚至是生態系統中的元件,從而使整個系統按照我們的要求運行下去?

說這麼多題外話,無非想要強調控制思想的重要性。現在回到PID控制器上來, PID是最常見的控制器,廣泛應用與機械和電氣系統。它的核心,在於一個反饋上。什麼是反饋,反饋就是讓系統的實時輸出加入到輸入中,從而實現自動調節。最常見的是負反饋。PID控制器就是一款非常典型的負反饋控制器。
P表示比例,用來瞬時大幅度調控,比如說你的輸入是5v,但是你的理想輸出是10v,那麼此時的誤差是5"V. 用比例控制時,根據你選擇的比例係數,假設是1,那麼下一步的輸出就是5+5=10V。但是事實真是如此輕鬆愉快嗎?當你加入一個比例2時,有一些非常可惡的東西阻礙你達到穩定的10v,比如說系統一下子躍升,到10v剎不住車,產生了超調量,一下子奔到20v了,穩態誤差非常大而且不可控,那估計機器已經燒了,或者周圍一下細小的擾動進來,經過比例放大,變成了相對較大的擾動,系統扛不住了。怎麼辦?我們引入I,積分控制。當我們把輸出反饋回來和外部輸入一比較,我們得到一個誤差,然後我們把誤差作為輸入,對誤差進行積分,再反饋回來。什麼時候達到穩定呢?當誤差為0了,反饋回來的值就是一個常數(想下積分過程),此時輸出就穩定了。並且由於此時誤差為0,那麼穩定點就正好是外界參考輸入。結合比例控制,就能實現對抗干擾和消除穩態誤差。最後,那D微分控制是拿來幹嘛的呢?設想一個場景,外部輸入是一個斜坡信號,電壓或者力矩隨著時間在增長或減少,那麼光用比例和積分都無法使系統輸出追上輸入的變化腳步。這時候,我們使用微分控制,讓我們輸入的變化率等於輸出的變化率。那麼,我們就能追蹤變化信號了。
PID控制器的優點非常明顯,我其實不需要系統的精確模型! 我不管模型怎麼樣,把系統輸出接出來和一個參考信號一比,誤差一輸入"PID控制器,誤差就能被消除。

但是,真的有這麼老少皆宜平易近人的控制器嗎! PID真的這麼全能嗎?

那還有那麼多人研究控制理論幹什麼! (打到自己臉了)

很重要的一點, 就是,變化信號的變化率只能是常數,就像我們所說的斜坡信號,當變化率也是時間的函數時,我們的PID就無法處理了。因為我們的控制器里只有一個一階微分,對於求導後還是變化的信號束手無策。另一個問題就是,它是一種線性控制器,但是我們的現實系統都有非線性特徵,所以只能對某個平衡點及其鄰域使用,換言之,很有可能鄰域很小,一旦超出,系統就崩潰了。

總而言之,PID控制器對於線性性好,輸入不超過斜坡的系統是非常簡單實用的,但是對複雜非線性系統和複雜信號追蹤,非常有局限性。


個人認為pid的優點是其不基於模型的控制器特點,具有很強的魯棒性,並且演算法簡單,容易理解和掌握,單單是不依賴於被控對象的模型就可以秒殺很多高大上的控制演算法了。很多高大上的控制演算法往往需要被控對象的精確模型,很有局限性,實際效果不好,魯棒性差。


謝邀。
(補充說明,本文提到的PID控制器為類稱,指的是PI,PD,PID這三種複合控制器。)

首先,這個問題問得比較寬。
1.PID控制器的優缺點是什麼?
我覺得我們得先把其它幾個問題捋一下吧:模擬PID控制器還是數字PID控制器?優缺點都是相對的,那麼比較對象是誰?要從控制手段的發展來講(優缺點)嗎?

2.改進的手段是什麼?
基於第一個問題的分析,我們談到的改進手段是偏實際還是偏理論演算法的?這種改進可不可以直接說:「樓主啊,別用PID了,趕緊上其它更先進的控制手段吧,神經網路控制名字聽著也好,用起來也比PID要給力。」?

我們把這個問題這麼分解了,答案基本上也就得到了一半,翻翻書,基本上也就能答個80%了。

比如說,假設樓主問的是數字PID控制器,你就要單獨考慮控制對象的時域特性對P、I、D每個環節的不同影響(模擬控制器基本無需考慮時域信號的影響):
P比例環節,控制作用就一個字:快,但是快了(Kp越大),越容易產生振蕩;
改進辦法:演算法上設置合理參數;

I積分環節,雖然可以消除靜態誤差,但也會降低響應速度,增加大超調;
改進辦法(偏理論演算法,書上都有):(1).積分分離;(2).抗積分飽和;(3).變速積分.;

D微分環節,對輸入信號的雜訊很敏感,很容易受到干擾;
改進辦法:(1).不完全微分PID控制演算法;(2).微分先行PID控制演算法;

---以上都是在演算法的層面講,基本上都是數學問題,在實際操作過程中,怎麼改進?
答曰:因地制宜,因時制宜,根據控制對象適當調節參數---說白了,就是把人作為要素引入控制系統,人的眼睛成為信號變送器,人的腦成為控制器,人的手成為執行器---更廣泛地說,這也是一種改進。

答到這裡,各位看官也會發現一個問題:老是在表面打轉,根本沒有深入內部嘛。
是的,您眼光犀利,上面的缺點分析,基本上是在對PID本身進行分析,比較的對象呢,是差的PID控制器和好的PID控制器來比較,改進的辦法,不管是演算法還是實操,都是把差的控制器改成好的控制器。

這裡,我們要認識到,PID控制器從整體上來看,是一個矛盾平衡體---P、I、D彼此之間是矛盾的,複合性地用起來,好比是按下葫蘆又起瓢。
這個矛盾從根本上來講,是無法克服的,PID改來改去,都沒有脫離我剛才說的那些改進---要麼是改演算法,要麼是改實操。
(PS:特別注意,改實操---引入人的要素,已經不是在PID表面上來改進了,這已經是控制手段整體上的質變了---人與具體的PID控制器整體上構成了一個更加高級的控制器。)

那麼什麼是根本上的改進呢?
就是發明新的基於比PID演算法更先進的控制器。
模糊控制;
自適應控制;
神經網路控制;
伺服控制。
等等等等。
----------------------------
忘了答一個子問題:PID的優點。
這個不難,我就直接引用了。

PID控制的優點:原理簡單,使用方便;適應性強;魯棒性強,其控制品質對被控對象的變化不太敏感,非常適用於環境惡劣的工業生產現場;PID演算法有一套完整的參數整定與設計方法,易於被工程技術人員掌握;許多工業迴路中對控制快速性和控制精度要求不是很高,而更重視系統的可靠性時,使用PID控制能獲得較高的性價比;長期應用過程中,對PID演算法缺陷可以進行改良。


從理論說的話看書就夠了, 說說我當年用PID 做三環張力控制器的切身感受

  • P--比例環節, 設小了響應跟不上, 如果輸入和攪動都是事變信號就完蛋了, 設大了會有高頻低幅震動
  • I--積分環節, 最最重要的是要理解什麼是積分飽和, 不做過實驗很難有感受到積分飽和帶來的副作用.
  • D--微分環節, 如果數字控制器的話最好先考慮採樣周期是多少, 控制器採樣周期大的話微分環節就可以洗洗睡了
  • PD--比例微分控制, 有靜差且干擾較強就別指望消除了
  • PI--- 靜差是搞定了, 可是遇到時變輸入信號和時變攪動, 響應就成了問題, 尤其是誤差突變的時候要考慮怎麼處理積分飽和.
  • PID--只是做控制器的基本因素, 就像 @FogLikelihood 說的, 常常伴隨著上層演算法一起使用. 遇到不同的系統往往會有很多不同的整定演算法, 就不細說了

PID幾乎沒有什麼改進空間,中國工控網有一篇文章《PID及自動控制的基本原理探討》,提出了一個更好的控制演算法,可以看看http://www.gongkong.com/article/200908/12055.html


工程上實用的9成還是PID,這在大學課本里被當做沒有辦法的辦法。有時候忍不住會想,IEEE Trans和automatica上玩的那些數學遊戲,到底有啥價值?

研究生時主要玩卡爾曼濾波,也就是最優估計那一套,實際上也很難實用,因為實際系統數學模型一般都不是線性的,模型參數很難準確,雜訊也不是白高斯。真希望在最優估計領域,也有個類似PID的演算法。


PID的優點在於形式簡單,可調參數少,每個參數有明確的物理意義,對於新手老說容易上手。

經典PID需要改進的缺點具體地可以歸結為以下幾點:

第一、誤差的形成,直接取設定值和輸出之間的誤差是不合理的。系統輸入信號常常是不光滑的,甚至是不連續的,而輸出信號通常是光滑的,直接把不光滑的輸入信號作為輸出的目標,是對系統提出了過高的要求,將會導致系統超調或振蕩。

第二、微分信號的實現需要改進。工程中微分信號的實現通常採用差分或超前網路,這種方式對雜訊放大作用很大,往往使微分信號失真而不能使用。

第三、採用誤差信號的比例、微分和積分形成PID的線性組合形成控制量不一定最合適的控制律,這種線性組合不易解決快速性和超調的矛盾。

第四、積分反饋的作用主要是消除穩態誤差,但它的引入也帶來很多副作用,增加了系統的不穩定性,還會導致積分飽和現象的出現。


從應用上來說一下,PID為什麼能應用如此廣泛,現在90%(大概)以上控制器都是PID。主要是因為結構簡單,參數調整相對來說非常容易,易被工廠工人接受。其他如預測控制等高級控制方法應用起來需要很深的理論基礎。這是優點。缺點就是相對於高級控制演算法來說,精度底(對於某些產品來說,精度要求非常高,產品質量才能足夠好),對於某些非線性,大時滯恩對象效果不好。改進的話,有很多方法,主要就是引進高級控制演算法的思想對PID進行改進。


推薦閱讀:

TAG:機器人 | 自動化 | 自動控制 | 無人機(Drone) | 控制 |