小時候喜歡看雜書,沒什麼東西看,不正在文化大革命嘛?不過看進去了兩個“化”:機械化和自動化。打小就沒有弄明白,這機械化和自動化到底有什麼差別,機器不是自己就會動的嗎?長大了,總算稍微明白了一點,這機械化是力氣活,用機器代替人的體力勞動,但還是要人管著的,不然機器是不知道該幹什麼不該幹什麼的;這自動化嘛,就是代替人的重複腦力勞動,是用來管機器的。也就是說,自動化是管著機械化的,或者說學自動化的是管著學機械的……啊,不對,不對,哪是哪啊! 有人考證古代就有自動化的例項,但現代意義上的自動控制開始於瓦特的蒸汽機。據說紐考門比瓦特先發明蒸汽機,但是蒸汽機的轉速控制問題沒有解決,弄不好轉速飛昇,機器損壞不說,還可能說大事故。瓦特在蒸汽機的轉軸上安了一個小棍,棍的一端和放汽閥連著,放氣閥鬆開來就關閉,轉速增加;按下去閥就開啟,轉速降低;棍的另一端是一個小重錘,棍中間某個地方透過支點和轉軸連線。轉軸轉起來的時候,小棍由於離心力的緣故揮起來。轉速太高了,小棍揮會揮得很高,放汽閥就被按下去開啟,轉速下降;轉速太低了,小棍揮不起來,放汽閥就被鬆開來關閉,轉速回升。這樣,蒸汽機可以自動保持穩定的轉速,即保證安全,又方便使用。也就是因為這個小小的轉速調節器,瓦特的名字和工業革命連在一起,而紐考門的名字就要到歷史書裡去找了。 類似的例子在機械系統裡很多,家居必備的抽水馬桶是另一個例子。放水沖刷後,水箱裡水位降低,浮子隨水面下降,進水閥開啟。隨著水位的升高,進水閥逐漸關閉,直到水位達到規定高度,進水閥完全關閉,水箱的水正好準備下一次使用。這是一個非常簡單但非常巧妙的水位控制系統,是一個經典的設計,但不容易用經典的控制理論來分析,不過這是題外話了. 這些機械系統設計巧妙,工作可靠,實在是巧奪天工。但是在實用中,如果每次都需要這樣的創造性思維,那太累,最好有一個系統的方法,可以解決“所有”的自動控制問題,這就是控制理論的由來。 從小大人就教我們,走路要看路。為什麼呢?要是不看著路,走路走歪了也不知道,結果就是東撞西撞的。要是看著路呢?走歪了,馬上就看到,趕緊調整腳步,走回到正道上來。這裡有自動控制裡的第一個重要概念:反饋(feedback)。 反饋是一個過程: 1、設定目標,對小朋友走路的例子來說,就是前進的路線。 2、測量狀態,小朋友的眼睛看著路,就是在測量自己的前進方向。 3、將測量到的狀態和設定的目標比較,把眼睛看到的前進方向和心裡想的前進方向作比較,判斷前進方向是否正確;如果不正確,相差有多少。 4、調整行動,在心裡根據實際前進方向和設定目標的偏差,決定調整的量。 5、實際執行,也就是實際挪動腳步,重回正確的前進方向。 在整個走路的過程中,這個反饋過程週而復始,不斷進行,這樣,小朋友就不會走得東倒西歪了。但是,這裡有一個問題:如果所有的事情都是在瞬時裡同時發生的,那這個反饋過程就無法工作。要使反饋工作,一定要有一定的反應時間。還好,世上之事,都有一個過程,這就為反饋贏得了所需要的時間 反饋過程也叫閉環(closed loop)過程。既然有閉環,那就有開環(open loop)。開環就是沒有反饋的控制過程,設定一個控制作用,然後就執行,不根據實際測量值進行校正。開環控制只有對簡單的過程有效,比如洗衣機和烘乾機按定時控制,到底衣服洗得怎麼樣,烘得幹不幹,完全取決於開始時的設定。對於洗衣機、烘乾機這樣的問題,多設一點時間就是了,稍微浪費一點,但可以保證效果。對於空調機,就不能不顧房間溫度,簡單地設一個開10分鐘、關5分鐘的迴圈,而應該根據實際溫度作閉環控制,否則房間裡的溫度天知道到底會達到多少。記得80年代時,報告文學很流行。徐遲寫了一個《哥德巴赫猜想》,於是全華人民都爭當科學家。小說家也爭著寫科學家,成就太小不行,所以來一個語不驚人死不休,某大家寫了一個《無反饋快速跟蹤》。那時正在大學啃磚頭,對這個科學新發現大感興趣,從頭看到尾,也沒有看明白到底是怎麼無反饋快速跟蹤的。現在想想,小說就是小說,不過這無良作家也太扯,無反饋還要跟蹤,不看著目標,不看著自己跑哪了,這跟的什麼蹤啊,這和永動機差不多了,怎麼不挑一個好一點的題目,冷聚變什麼的,至少在理論上還是可能的。題外話了。 在數學上,動態過程用微分方程描述,反饋過程就是在描述動態過程的微分方程的輸入項和輸出項之間建立一個關聯,這樣改變了微分方程本來的性質。自動控制就是在這個反饋和動態過程裡做文章的。 房間內的空調是一個簡單的控制問題。不過這只是指單一房間,整個高層大樓所有房間的中央空調問題實際上是一個相當複雜的問題,不在這裡討論的範圍。夏天了,室內溫度設在28度,實際溫度高於28度了,空調機啟動致冷,把房間的溫度降下來;實際溫度低於28度了,空調機關閉,讓房間溫度受環境氣溫自然升上去。透過這樣簡單的開關控制,室內溫度應該就控制在28度。不過這裡有一個問題,如果溫度高於28度一點點,空調機就啟動;低於28度一點點,空調機就關閉;那如果溫度感測器和空調機的開關足夠靈敏的話,空調機的開關頻率可以無窮高,空調機不斷地開開關關,要發神經病了,這對機器不好,在實際上也沒有必要。解決的辦法是設立一個“死區” (dead band),溫度高於29度時開機,低於27度時關機。注意不要搞反了,否則控制單元要發神經了。 有了一個死區後,室內溫度不再可能嚴格控制在28度,而是在27到29度之間“晃盪”。如果環境溫度一定,空調機的製冷量一定,室內的升溫/降溫動態模型已知,可以計算溫度“晃盪”的週期。不過既然是講故事,我們就不去費那個事了。 這種開關控制看起來“土”,其實好處不少。對於大部分過程來說,開關控制的精度不高但可以保證穩定,或者說系統輸出是“有界”的,也就是說實際測量值一定會被限制在一定的範圍,而不可能無限制地發散出去。這種穩定性和一般控制理論裡強調的所謂漸進穩定性不同,而是所謂BIBO穩定性,前者要求輸出最終趨向設定值,後者只要求在有界的輸入作用下輸出是有界的,BIBO指bounded input bounded output。 對於簡單的精 度要求不高的過程,這種開關控制(或者稱繼電器控制,relay control,因為最早這種控制方式是用繼電器或電磁開關來實現的)就足夠了。但是很多時候,這種“毛估估”的控制滿足不了要求。汽車在高速公路上行駛,速度設在定速巡航控制,速度飄下去幾公里,心裡覺得吃虧了,但要是飄上去幾公里,被警察抓下來吃一個罰單,這算誰的? 開關控制是不連續控制,控制作用一加就是“全劑量”的,一減也是“全劑量”的,沒有中間的過渡。如果空調機的製冷量有三個設定,:小、中、大,根據室溫和設定的差別來決定到底是用小還是中還是大,那室溫的控制精度就可以大大提高,換句話說,溫度的“晃盪”幅度將大幅度減小。那麼,如果空調機有更多的設定,從小小到小中到……到大大,那控制精度是不是更高呢?是的。既然如此,何不用無級可調的空調機呢?那豈不可以更精確地控制室溫了嗎?是的。 無級可調或連續可調的空調機可以精確控制溫度,但開關控制不能再用了。家用空調機中,連續可調的不佔多數,但衝熱水淋浴是一個典型的連續控制問題,因為水龍頭可以連續調節水的流量。沖淋浴時,假定冷水龍頭不變,只調節熱水。那溫度高了,熱水關小一點;溫度低了,熱水開打一點。換句話說,控制作用應該向減少控制偏差的方向變化,也就是所謂負負反饋。控制方向對了,還有一個控制量的問題。溫度高了1度,熱水該關小多少呢? 經驗告訴我們,根據具體的龍頭和水壓,溫度高1度,熱水需要關小一定的量,比如說,關小一格。換句話說,控制量和控制偏差成比例關係,這就是經典的比例控制規律:控制量=比例控制增益* 控制偏差,偏差越大,控制量越大。控制偏差就是實際測量值和設定值或目標值之差。在比例控制規律下,偏差反向,控制量也反向。也就是說,如果淋浴水溫要求為40度,實際水溫高於40度時,熱水龍頭向關閉的方向變化;實際水溫低於40度時,熱水龍頭向開啟的方向變化。 但是比例控制規律並不能 保證水溫能夠精確達到 40度。在實際生活中,人們這時對熱水龍頭作微調,只要水溫還不合適,就一點一點地調節,直到水溫合適為止。這種只要控制偏差不消失就漸進微調的控制規律,在控制裡叫積分控制規律,因為控制量和控制偏差在時間上的累積成正比,其比例因子就稱為積分控制增益。工業上常用積分控制增益的倒數,稱其為積分時間常數,其物理意義是偏差恆定時,控制量加倍所需的時間。這裡要注意的是,控制偏差有正有負,全看實際測量值是大於還是小於設定值,所以只要控制系統是穩定的,也就是實際測量值最終會穩定在設定值上,控制偏差的累積不會是無窮大的。這裡再囉嗦一遍,積分控制的基本作用是消除控制偏差的餘差(也叫殘差)。 比例和積分控制規律可以應付很大一類控制問題,但不是沒有改進餘地的。如果水管水溫快速變化,人們會根據水溫的變化調節熱水龍頭:水溫升高,熱水龍頭向關閉方向變化,升溫越快,開啟越多;水溫降低,熱水龍頭向開啟方向變化,降溫越快,關閉越多。這就是所謂的微分控制規律,因為控制量和實際測量值的變化率成正比,其比例因子就稱為比例控制增益,工業上也稱微分時間常數。微分時間常數沒有太特定的物理意義,只是積分叫時間常數,微分也跟著叫了。微分控制的重點不在實際測量值的具體數值,而在其變化方向和變化速度。微分控制在理論上和實用中有很多優越性,但侷限也是明顯的。如果測量訊號不是很“乾淨”,時不時有那麼一點不大不小的“毛刺”或擾動,微分控制就會被這些風吹草動搞得方寸大亂,產生很多不必要甚至錯誤的控制訊號。所以工業上對微分控制的使用是很謹慎的。 比例-積分-微分控制規律是工業上最常用的控制規律。人們一般根據比例-積分-微分的英文縮寫,將其簡稱為PID控制。即使在更為先進的控制規律廣泛應用的今天,各種形式的PID控制仍然在所有控制迴路中佔85%以上。 在PID 控制中,積分控制的特點是:只要還有餘差(即殘餘的控制偏差)存在,積分控制就按部就班地逐漸增加控制作用,直到餘差消失。所以積分的效果比較緩慢,除特殊情況外,作為基本控制作用,緩不救急。微分控制的特點是:儘管實際測量值還比設定值低,但其快速上揚的衝勢需要及早加以抑制,否則,等到實際值超過設定值再作反應就晚了,這就是微分控制施展身手的地方了。作為基本控制使用,微分控制只看趨勢,不看具體數值所在,所以最理想的情況也就是把實際值穩定下來,但穩定在什麼地方就要看你的運氣了,所以微分控制也不能作為基本控制作用。比例控制沒有這些問題,比例控制的反應快,穩定性好,是最基本的控制作用,是 “皮”,積分、微分控制是對比例控制起增強作用的,極少單獨使用,所以是“毛”。在實際使用中比例和積分一般一起使用,比例承擔主要的控制作用,積分幫助消除餘差。微分只有在被控物件反應遲緩,需要在開始有所反應時,及早補償,才予以採用。只用比例和微分的情況很少見。 連續控制的精度是開關控制所不可比擬的,但連續控制的高精度也是有代價的,這就是穩定性問題。控制增益決定了控制作用對偏差的靈敏度。既然增益決定了控制的靈敏度,那麼越靈敏豈不越好?非也。還是用汽車的定速巡航控制做例子。速度低一點,油門加一點,速度低更多,油門加更多,速度高上去當然就反過來。但是如果速度低一點,油門就加很多,速度更低,油門狂加,這樣速度不但不能穩定在要求的設定值上,還可能失控。這就是不穩定。所以控制增益的設定是有講究的。在生活中也有類似的例子。國民經濟過熱,需要經濟調整,但調整過火,就要造成“硬著陸”,引起衰退;衰退時需要刺激,同樣,刺激過火,會造成“虛假繁榮”。要達成“軟著陸”,經濟調整的措施需要恰到好處。這也是一個經濟動態系統的穩定性問題。 實際中到底多少增益才是最合適的,理論上有很多計算方法,但實用中一般是靠經驗和除錯來摸索最佳增益,業內行話叫引數整定。如果系統響應在控制作用後面拖拖沓沓,大幅度振盪的話,那一般是積分太過;如果系統響應非常神經質,動不動就打擺子,呈現高頻小幅度振盪的話,那一般是微分有點過分。中頻振盪當然就是比例的問題了。不過各個系統的頻率都是不一樣的,到底什麼算高頻,什麼算低頻,這個幾句話說不清楚,應了毛主席那句話:“具體情況具體分析”,所以就打一個哈哈了。 再具體說起來,引數整定有兩個路子。一是首先除錯比例增益以保證基本的穩定性,然後加必要的積分以消除餘差,只有在最必要的情況下,比如反映遲緩的溫度過程或容量極大的液位過程,測量噪聲很低,才加一點微分。這是“學院派”的路子,在大部分情況下很有效。但是工業界有一個“歪路子”:用非常小的比例作用,但大大強化積分作用。這個方法是完全違背控制理論的分析的,但在實際中卻是行之有效,原因在於測量噪聲嚴重,或系統反應過敏時,積分為主的控制規律動作比較緩和,不易激勵出不穩定的因素,尤其是不確定性比較高的高頻部分,這也是鄧小平“穩定壓倒一切”的初衷吧。 在很多情況下,在初始PID引數整定之後,只要系統沒有出現不穩定或效能顯著退化,一般不會去重新整定。但是要是系統不穩定了怎麼辦呢?由於大部分實際系統都是開環穩定的,也就是說,只要控制作用恆定不變,系統響應最終應該穩定在一個數值,儘管可能不是設定值,所以對付不穩定的第一個動作都是把比例增益減小,根據實際情況,減小1/3、1/2甚至更多,同時加大積分時間常數,常常成倍地加,再就是減小甚至取消微分控制作用。如果有前饋控制,適當減小前饋增益也是有用的。在實際中,系統性能不會莫名其妙地突然變壞,上述“救火”式重新整定常常是臨時性的,等生產過程中的機械或原料問題消除後,引數還是要設回原來的數值,否則系統性能會太過“懶散”。 對於新工廠,系統還沒有投運,沒法根據實際響應來整定,一般先估計一個初始引數,在系統投運的過程中,對控制迴路逐個整定。我自己的經驗是,對於一般的流量回路,比例定在 0.5左右,積分大約1分鐘,微分為0,這個組合一般不致於一上來就出大問題。溫度迴路可以從2、5、0.05開始,液位迴路從5、10、0開始,氣相壓力迴路從10、20、0開始。既然這些都是憑經驗的估計,那當然要具體情況具體分析,不可能“放之四海而皆準”。 微分一般用於反應遲緩的系統,但是事情總有一些例外。我就遇到過一個小小的冷凝液罐,直徑才兩英尺,長不過5英尺,但是流量倒要8-12噸/小時,一有風吹草動,液位變化非常迅速,不管比例、積分怎麼調,液位很難穩定下來,常常是控制閥剛開始反應,液位已經到頂或到底了。最後加了0.05的微分,液位一開始變化,控制閥就開始抑制,反而穩定下來了。這和常規的引數整定的路子背道而馳,但在這個情況下,反而是“唯一”的選擇,因為測量值和控制閥的飽和變成穩定性主要的問題了。 對工業界以積分為主導控制作用的做法再囉嗦幾句。學術上,控制的穩定性基本就是漸近穩定性,BIBO穩定性是沒有辦法證明漸近穩定性時的“退而求其次”的東西,不怎麼上臺面的。但是工業界裡的穩定性有兩個看起來相似、實質上不盡相同的方面:一個當然是漸近穩定性,另一個則是穩定性,但不一定向設定值收斂,或者說穩定性比收斂性優先這樣一個情況。具體來說,就是需要系統穩定在一個值上,不要動來動去,但是不是在設定值並不是太重要,只要不是太離譜就行。例子有很多,比如反應器的壓力是一個重要引數,反應器不穩定,原料進料比例就亂套,催化劑進料也不穩定,反應就不穩定,但是反應器的壓力到底是10個大氣壓還是 12個大氣壓,並沒有太大的關係,只要慢慢地但是穩定地向設定值移動就足夠了。這是控制理論裡比較少涉及的一個情況,這也是工業上時常採用積分主導的控制的一個重要原因。 前面說到系統的頻率,本來也就是系統響應持續振盪時的頻率,但是控制領域裡有三撥人在搗騰:一撥是以機電類動力學系統為特色的電工出身,包括航空、機器人等,一撥是以連續過程為特色的化工出身的,包冶金、造紙等,還有一撥是以微分方程穩定性為特色的應用數學出身的。在瓦特和抽水馬桶的年代裡,各打各的山頭,井水不犯河水,倒也太平。但控制從藝術上升為理論後,總有人喜歡“統一”,電工幫搶了先,好端端的控制理論裡被塞進了電工裡的頻率。童子們哪,那哪是頻率啊,那是……複頻率。既然那些變態的電工幫(啊耶,這下鹿踹真的要來了)能折騰出虛功率,那他們也能折騰出複頻率來,他們自虐倒也算了,只是苦了我等無辜之眾,被迫受此精神折磨。 事情的緣由是系統的穩定性。前面提到,PID的引數如果設得不好,系統可能不穩定。除了摸索,有沒有辦法從理論上計算出合適的PID引數呢?前面也提到,動態過程可以用微分方程描述,其實在PID的階段,這只是微分方程中很狹窄的一支:單變數線性常微分方程。要是還記得大一高數,一定還記得線形常微的解,除了分離變數法什麼的,如果自變數時間用t表示的話,最常用的求解還是把 exp(λt)代入微分方程,然後解已經變成λ的代數方程的特徵方程,解出來的解可以是實數,也可以是複數,是複數的話,就要用三角函式展開了(怎麼樣,大一噩夢的感覺找回來一點沒有?)。只要實根為負,那微分方程就是穩定的,因為負的指數項最終向零收斂,復根到底多少就無所謂了,對穩定性沒有影響。但是,這麼求解分析起來還是不容易,還是超不出“具體情況具體分析”,難以得出一般的結論。 根軌跡還是比較客氣的,還有更變態的奈奎斯特、伯德和尼科爾斯法,想想腦子都大。都是叫那幫電工分子害的。時至今日,計算機分析已經很普及了,但是古典的圖示分析還是有經久不衰的魅力,就是因為圖示分析不光告訴你係統是穩定還是不穩定,以及其他一些動態響應的引數,圖示分析還可以定性地告訴你增益變化甚至系統引數變化引起的閉環效能變化。咦,剛才還不是在說人家變態嗎?呃,變態也有變態的魅力不是?哈哈。 以頻率分析(也稱頻域分析)為特色的控制理論稱為經典控制理論。經典控制理論可以把系統的穩定性分析得天花亂墜,但有兩個前提:一、要已知被控物件的數學模型,這在實際中不容易得到;二、被控物件的數學模型不會改變或漂移,這在實際中更難做到。對簡單過程建立微分方程是可能的,但簡單過程的控制不麻煩,經驗法引數整定就搞定了,不需要費那個麻煩,而真正需要理論計算幫忙的迴路,建立模型太困難,或者模型本身的不確定性很高,使得理論分析失去意義。經典控制理論在機械、航空、電機中還是有成功的應用,畢竟從F=ma出發,可以建立“所有”的機械系統的動力學模型,鐵疙瘩的重量又不會莫名其妙地改變,主要環境引數都可以測量,但是經典控制理論至少在化工控制中實用成功的例子實在是鳳毛麟角,給你一個50塊塔板的精餾塔,一個氣相進料,一個液相進料,塔頂、塔底出料加一個側線出料,塔頂風冷冷凝器,塔底再沸器加一箇中間再沸器,你就慢慢建模去吧,等九牛二虎把模型建立起來了,風冷冷凝器受風霜雨雪的影響,再沸器的高壓蒸汽的壓力受友鄰裝置的影響,氣相進料的溫度和飽和度受上游裝置的影響而改變,液相進料的混合組分受上游裝置的影響而改變,但組分無法及時測量(線上氣相色譜分析結果要45 分鐘才能出來),動態特性全變了。 老傢伙歌德兩百年前就說了,理論是灰色的,生命之樹常青。我們知道馬鹿喜歡金光的或者銀光的,至少也要紅的,不過只好將就啦,青綠地幹活。在實用中,PID有很多表兄弟,幫著大表哥一塊打天下。 比例控制的特點是:偏差大,控制作用就大。但在實際中有時還嫌不夠,最好偏差大的時候,比例增益也大,進一步加強對大偏差的矯正作用,及早把系統拉回到設定值附近;偏差小的時候,當然就不用那麼急吼吼,慢慢來就行,所以增益小一點,加強穩定性。這就是雙增益PID(也叫雙模式PID)的起源。想想也對,高射炮瞄準敵機是一個控制問題。如果炮管還指向離目標很遠的角度,那應該先儘快地把炮管轉到目標角度附近,動作猛一點才好;但炮管指向已經目標很近了,就要再慢慢地精細瞄準。工業上也有很多類似的問題。雙增益PID的一個特例是死區PID(PID with dead band),小偏差時的增益為零,也就是說,測量值和設定值相差不大的時候,就隨他去,不用控制。這在大型緩衝容器的液位控制裡用得很多。本來緩衝容器就是緩衝流量變化的,液位到底控制在什麼地方並不緊要,只要不是太高或太低就行。但是,從緩衝容器流向下游裝置的流量要儘可能穩定,否則下游裝置會受到不必要的擾動。死區PID對這樣的控制問題是最合適的。但是天下沒有免費的午餐。死區PID的前提是液位在一般情況下會“自動”穩定在死區內,如果死區設定不當,或系統經常受到大幅度的擾動,死區內的“無控”狀態會導致液位不受限制地向死區邊界“挺進”,最後進入“受控”區時,控制作用過火,液位向相反方向不受限制地“挺進”,最後的結果是液位永遠在死區的兩端振盪,而永遠不會穩定下來,業內叫hunting(打獵?打什麼?打鹿?)。雙增益PID也有同樣的問題,只是比死區PID好一些,畢竟只有“強控制”和“弱控制”的差別,而沒有“無控區”。在實用中,雙增益的內外增益差別小於2:1沒有多大意義,大於 5:1就要注意上述的持續振盪或hunting的問題。 雙增益或死區PID的問題在於增益的變化是不連續的,控制作用在死區邊界上有一個突然的變化,容易誘發系統的不利響應,平方誤差PID就沒有這個問題。誤差一經平方,控制量對誤差的曲線就成了拋物線,同樣達到“小偏差小增益、大偏差大增益”的效果,還沒有和突然的不連續的增益變化。但是誤差平方有兩個問題:一是誤差接近於零的時候,增益也接近於零,回到上面死區PID的問題;二是很難控制拋物線的具體形狀,或者說,很難制定增益在什麼地方拐彎。對於第一個問題,可以在誤差平方PID上加一個基本的線性PID,是零誤差是增益不為零;對於後一個問題,就要用另外的模組計算一個連續變化的增益了。具體細節比較瑣碎,將偏差送入一個分段線性化(也就是折線啦)的計算單元,然後將計算結果作為比例增益輸出到PID控制器,折線的水平段就對應予不同的增益,而連線不同的水平段的斜線就對應於增益的連續變化。透過設定水平段和斜線段的折點,可以任意調整變增益的曲線。要是“野心”大一點,再加幾個計算單元,可以做出不對稱的增益,也就是升溫時增益低一點,降溫時增益高一點,以處理加熱過程中常見的升溫快、降溫慢的問題。 雙增益或誤差平方都是在比例增益上作文章,同樣的勾當也可以用在積分和微分上。更極端的一種PID規律叫積分分離 PID,其思路是這樣的:比例控制的穩定性好,響應快,所以偏差大的時候,把PID中的積分關閉掉;偏差小的時候,精細調整、消除餘差是主要問題,所以減弱甚至關閉比例作用,而積分作用切入控制。概念是好的,但具體實施的時候,有很多無擾動切換的問題。 這些變態的PID在理論上很難分析系統的穩定性,但在實用中解決了很多困難的問題。大言不慚一句,這些PID本人在實際中都用過。 複雜結構PID 打仗時,如果敵人太頑固,要麼換更大的炮,把敵人轟倒;要麼採用更巧妙的戰術,把敵人暈倒。控制也是一樣,單迴路PID難以解決的問題,常常可以透過更巧妙的迴路結構來解決。 單一的PID迴路當然可以實現擾動抑制,但要是主要擾動在迴路中,而且是明確的,加一個內迴路作幫手是一個很不錯的主意。還記得洗熱水澡的例子嗎?要是熱水壓力不穩定,老是要為這個而調整熱水龍頭,那很麻煩。要是有一個人專門負責根據熱水壓力調節熱水流量,把熱水壓力穩定下來,而且穩定在標定值,那洗澡的時候,水溫就容易控制多了,只要告訴那個人現在需要多少熱水流量,而不必煩心熱水壓力對熱水流量的影響。這個負責熱水流量的控制迴路就是內迴路,也叫副迴路,而洗澡的溫度就是外迴路,也叫主迴路,當然是主迴路指揮副迴路,就像自動化指揮機械化、學自控的人指揮學機電的人……打住打住,再扯遠了要挨鹿踹了,或者馬踹、牛踹、驢踹……。這種主迴路套副迴路的結構叫串級控制(cascade control),曾經是單迴路PID後工業上第一種“先進過程控制”,現在串級已經用得很多了,也不再有人叫它“先進過程控制”了。串級控制最主要的功用是抑制迴路內的擾動,增強總體控制性能。不過串級也不能亂用。如果主迴路和副迴路的相應速度差不多,或者主迴路的相應速度甚至慢於副迴路(透過變態的除錯是可以做到的),這樣的串級要出問題。理論上可以用共振頻率什麼的分析,但是不用費那個事,用膝蓋想想就知道,一個急性子的頭兒把一個溫吞水的下屬指揮得團團轉,結果只能是大家都精疲力竭,事情還辦砸了。相反,一個鎮定自若的頭兒指揮一個手腳麻利的下屬,那事情肯定辦得好。
小時候喜歡看雜書,沒什麼東西看,不正在文化大革命嘛?不過看進去了兩個“化”:機械化和自動化。打小就沒有弄明白,這機械化和自動化到底有什麼差別,機器不是自己就會動的嗎?長大了,總算稍微明白了一點,這機械化是力氣活,用機器代替人的體力勞動,但還是要人管著的,不然機器是不知道該幹什麼不該幹什麼的;這自動化嘛,就是代替人的重複腦力勞動,是用來管機器的。也就是說,自動化是管著機械化的,或者說學自動化的是管著學機械的……啊,不對,不對,哪是哪啊! 有人考證古代就有自動化的例項,但現代意義上的自動控制開始於瓦特的蒸汽機。據說紐考門比瓦特先發明蒸汽機,但是蒸汽機的轉速控制問題沒有解決,弄不好轉速飛昇,機器損壞不說,還可能說大事故。瓦特在蒸汽機的轉軸上安了一個小棍,棍的一端和放汽閥連著,放氣閥鬆開來就關閉,轉速增加;按下去閥就開啟,轉速降低;棍的另一端是一個小重錘,棍中間某個地方透過支點和轉軸連線。轉軸轉起來的時候,小棍由於離心力的緣故揮起來。轉速太高了,小棍揮會揮得很高,放汽閥就被按下去開啟,轉速下降;轉速太低了,小棍揮不起來,放汽閥就被鬆開來關閉,轉速回升。這樣,蒸汽機可以自動保持穩定的轉速,即保證安全,又方便使用。也就是因為這個小小的轉速調節器,瓦特的名字和工業革命連在一起,而紐考門的名字就要到歷史書裡去找了。 類似的例子在機械系統裡很多,家居必備的抽水馬桶是另一個例子。放水沖刷後,水箱裡水位降低,浮子隨水面下降,進水閥開啟。隨著水位的升高,進水閥逐漸關閉,直到水位達到規定高度,進水閥完全關閉,水箱的水正好準備下一次使用。這是一個非常簡單但非常巧妙的水位控制系統,是一個經典的設計,但不容易用經典的控制理論來分析,不過這是題外話了. 這些機械系統設計巧妙,工作可靠,實在是巧奪天工。但是在實用中,如果每次都需要這樣的創造性思維,那太累,最好有一個系統的方法,可以解決“所有”的自動控制問題,這就是控制理論的由來。 從小大人就教我們,走路要看路。為什麼呢?要是不看著路,走路走歪了也不知道,結果就是東撞西撞的。要是看著路呢?走歪了,馬上就看到,趕緊調整腳步,走回到正道上來。這裡有自動控制裡的第一個重要概念:反饋(feedback)。 反饋是一個過程: 1、設定目標,對小朋友走路的例子來說,就是前進的路線。 2、測量狀態,小朋友的眼睛看著路,就是在測量自己的前進方向。 3、將測量到的狀態和設定的目標比較,把眼睛看到的前進方向和心裡想的前進方向作比較,判斷前進方向是否正確;如果不正確,相差有多少。 4、調整行動,在心裡根據實際前進方向和設定目標的偏差,決定調整的量。 5、實際執行,也就是實際挪動腳步,重回正確的前進方向。 在整個走路的過程中,這個反饋過程週而復始,不斷進行,這樣,小朋友就不會走得東倒西歪了。但是,這裡有一個問題:如果所有的事情都是在瞬時裡同時發生的,那這個反饋過程就無法工作。要使反饋工作,一定要有一定的反應時間。還好,世上之事,都有一個過程,這就為反饋贏得了所需要的時間 反饋過程也叫閉環(closed loop)過程。既然有閉環,那就有開環(open loop)。開環就是沒有反饋的控制過程,設定一個控制作用,然後就執行,不根據實際測量值進行校正。開環控制只有對簡單的過程有效,比如洗衣機和烘乾機按定時控制,到底衣服洗得怎麼樣,烘得幹不幹,完全取決於開始時的設定。對於洗衣機、烘乾機這樣的問題,多設一點時間就是了,稍微浪費一點,但可以保證效果。對於空調機,就不能不顧房間溫度,簡單地設一個開10分鐘、關5分鐘的迴圈,而應該根據實際溫度作閉環控制,否則房間裡的溫度天知道到底會達到多少。記得80年代時,報告文學很流行。徐遲寫了一個《哥德巴赫猜想》,於是全華人民都爭當科學家。小說家也爭著寫科學家,成就太小不行,所以來一個語不驚人死不休,某大家寫了一個《無反饋快速跟蹤》。那時正在大學啃磚頭,對這個科學新發現大感興趣,從頭看到尾,也沒有看明白到底是怎麼無反饋快速跟蹤的。現在想想,小說就是小說,不過這無良作家也太扯,無反饋還要跟蹤,不看著目標,不看著自己跑哪了,這跟的什麼蹤啊,這和永動機差不多了,怎麼不挑一個好一點的題目,冷聚變什麼的,至少在理論上還是可能的。題外話了。 在數學上,動態過程用微分方程描述,反饋過程就是在描述動態過程的微分方程的輸入項和輸出項之間建立一個關聯,這樣改變了微分方程本來的性質。自動控制就是在這個反饋和動態過程裡做文章的。 房間內的空調是一個簡單的控制問題。不過這只是指單一房間,整個高層大樓所有房間的中央空調問題實際上是一個相當複雜的問題,不在這裡討論的範圍。夏天了,室內溫度設在28度,實際溫度高於28度了,空調機啟動致冷,把房間的溫度降下來;實際溫度低於28度了,空調機關閉,讓房間溫度受環境氣溫自然升上去。透過這樣簡單的開關控制,室內溫度應該就控制在28度。不過這裡有一個問題,如果溫度高於28度一點點,空調機就啟動;低於28度一點點,空調機就關閉;那如果溫度感測器和空調機的開關足夠靈敏的話,空調機的開關頻率可以無窮高,空調機不斷地開開關關,要發神經病了,這對機器不好,在實際上也沒有必要。解決的辦法是設立一個“死區” (dead band),溫度高於29度時開機,低於27度時關機。注意不要搞反了,否則控制單元要發神經了。 有了一個死區後,室內溫度不再可能嚴格控制在28度,而是在27到29度之間“晃盪”。如果環境溫度一定,空調機的製冷量一定,室內的升溫/降溫動態模型已知,可以計算溫度“晃盪”的週期。不過既然是講故事,我們就不去費那個事了。 這種開關控制看起來“土”,其實好處不少。對於大部分過程來說,開關控制的精度不高但可以保證穩定,或者說系統輸出是“有界”的,也就是說實際測量值一定會被限制在一定的範圍,而不可能無限制地發散出去。這種穩定性和一般控制理論裡強調的所謂漸進穩定性不同,而是所謂BIBO穩定性,前者要求輸出最終趨向設定值,後者只要求在有界的輸入作用下輸出是有界的,BIBO指bounded input bounded output。 對於簡單的精 度要求不高的過程,這種開關控制(或者稱繼電器控制,relay control,因為最早這種控制方式是用繼電器或電磁開關來實現的)就足夠了。但是很多時候,這種“毛估估”的控制滿足不了要求。汽車在高速公路上行駛,速度設在定速巡航控制,速度飄下去幾公里,心裡覺得吃虧了,但要是飄上去幾公里,被警察抓下來吃一個罰單,這算誰的? 開關控制是不連續控制,控制作用一加就是“全劑量”的,一減也是“全劑量”的,沒有中間的過渡。如果空調機的製冷量有三個設定,:小、中、大,根據室溫和設定的差別來決定到底是用小還是中還是大,那室溫的控制精度就可以大大提高,換句話說,溫度的“晃盪”幅度將大幅度減小。那麼,如果空調機有更多的設定,從小小到小中到……到大大,那控制精度是不是更高呢?是的。既然如此,何不用無級可調的空調機呢?那豈不可以更精確地控制室溫了嗎?是的。 無級可調或連續可調的空調機可以精確控制溫度,但開關控制不能再用了。家用空調機中,連續可調的不佔多數,但衝熱水淋浴是一個典型的連續控制問題,因為水龍頭可以連續調節水的流量。沖淋浴時,假定冷水龍頭不變,只調節熱水。那溫度高了,熱水關小一點;溫度低了,熱水開打一點。換句話說,控制作用應該向減少控制偏差的方向變化,也就是所謂負負反饋。控制方向對了,還有一個控制量的問題。溫度高了1度,熱水該關小多少呢? 經驗告訴我們,根據具體的龍頭和水壓,溫度高1度,熱水需要關小一定的量,比如說,關小一格。換句話說,控制量和控制偏差成比例關係,這就是經典的比例控制規律:控制量=比例控制增益* 控制偏差,偏差越大,控制量越大。控制偏差就是實際測量值和設定值或目標值之差。在比例控制規律下,偏差反向,控制量也反向。也就是說,如果淋浴水溫要求為40度,實際水溫高於40度時,熱水龍頭向關閉的方向變化;實際水溫低於40度時,熱水龍頭向開啟的方向變化。 但是比例控制規律並不能 保證水溫能夠精確達到 40度。在實際生活中,人們這時對熱水龍頭作微調,只要水溫還不合適,就一點一點地調節,直到水溫合適為止。這種只要控制偏差不消失就漸進微調的控制規律,在控制裡叫積分控制規律,因為控制量和控制偏差在時間上的累積成正比,其比例因子就稱為積分控制增益。工業上常用積分控制增益的倒數,稱其為積分時間常數,其物理意義是偏差恆定時,控制量加倍所需的時間。這裡要注意的是,控制偏差有正有負,全看實際測量值是大於還是小於設定值,所以只要控制系統是穩定的,也就是實際測量值最終會穩定在設定值上,控制偏差的累積不會是無窮大的。這裡再囉嗦一遍,積分控制的基本作用是消除控制偏差的餘差(也叫殘差)。 比例和積分控制規律可以應付很大一類控制問題,但不是沒有改進餘地的。如果水管水溫快速變化,人們會根據水溫的變化調節熱水龍頭:水溫升高,熱水龍頭向關閉方向變化,升溫越快,開啟越多;水溫降低,熱水龍頭向開啟方向變化,降溫越快,關閉越多。這就是所謂的微分控制規律,因為控制量和實際測量值的變化率成正比,其比例因子就稱為比例控制增益,工業上也稱微分時間常數。微分時間常數沒有太特定的物理意義,只是積分叫時間常數,微分也跟著叫了。微分控制的重點不在實際測量值的具體數值,而在其變化方向和變化速度。微分控制在理論上和實用中有很多優越性,但侷限也是明顯的。如果測量訊號不是很“乾淨”,時不時有那麼一點不大不小的“毛刺”或擾動,微分控制就會被這些風吹草動搞得方寸大亂,產生很多不必要甚至錯誤的控制訊號。所以工業上對微分控制的使用是很謹慎的。 比例-積分-微分控制規律是工業上最常用的控制規律。人們一般根據比例-積分-微分的英文縮寫,將其簡稱為PID控制。即使在更為先進的控制規律廣泛應用的今天,各種形式的PID控制仍然在所有控制迴路中佔85%以上。 在PID 控制中,積分控制的特點是:只要還有餘差(即殘餘的控制偏差)存在,積分控制就按部就班地逐漸增加控制作用,直到餘差消失。所以積分的效果比較緩慢,除特殊情況外,作為基本控制作用,緩不救急。微分控制的特點是:儘管實際測量值還比設定值低,但其快速上揚的衝勢需要及早加以抑制,否則,等到實際值超過設定值再作反應就晚了,這就是微分控制施展身手的地方了。作為基本控制使用,微分控制只看趨勢,不看具體數值所在,所以最理想的情況也就是把實際值穩定下來,但穩定在什麼地方就要看你的運氣了,所以微分控制也不能作為基本控制作用。比例控制沒有這些問題,比例控制的反應快,穩定性好,是最基本的控制作用,是 “皮”,積分、微分控制是對比例控制起增強作用的,極少單獨使用,所以是“毛”。在實際使用中比例和積分一般一起使用,比例承擔主要的控制作用,積分幫助消除餘差。微分只有在被控物件反應遲緩,需要在開始有所反應時,及早補償,才予以採用。只用比例和微分的情況很少見。 連續控制的精度是開關控制所不可比擬的,但連續控制的高精度也是有代價的,這就是穩定性問題。控制增益決定了控制作用對偏差的靈敏度。既然增益決定了控制的靈敏度,那麼越靈敏豈不越好?非也。還是用汽車的定速巡航控制做例子。速度低一點,油門加一點,速度低更多,油門加更多,速度高上去當然就反過來。但是如果速度低一點,油門就加很多,速度更低,油門狂加,這樣速度不但不能穩定在要求的設定值上,還可能失控。這就是不穩定。所以控制增益的設定是有講究的。在生活中也有類似的例子。國民經濟過熱,需要經濟調整,但調整過火,就要造成“硬著陸”,引起衰退;衰退時需要刺激,同樣,刺激過火,會造成“虛假繁榮”。要達成“軟著陸”,經濟調整的措施需要恰到好處。這也是一個經濟動態系統的穩定性問題。 實際中到底多少增益才是最合適的,理論上有很多計算方法,但實用中一般是靠經驗和除錯來摸索最佳增益,業內行話叫引數整定。如果系統響應在控制作用後面拖拖沓沓,大幅度振盪的話,那一般是積分太過;如果系統響應非常神經質,動不動就打擺子,呈現高頻小幅度振盪的話,那一般是微分有點過分。中頻振盪當然就是比例的問題了。不過各個系統的頻率都是不一樣的,到底什麼算高頻,什麼算低頻,這個幾句話說不清楚,應了毛主席那句話:“具體情況具體分析”,所以就打一個哈哈了。 再具體說起來,引數整定有兩個路子。一是首先除錯比例增益以保證基本的穩定性,然後加必要的積分以消除餘差,只有在最必要的情況下,比如反映遲緩的溫度過程或容量極大的液位過程,測量噪聲很低,才加一點微分。這是“學院派”的路子,在大部分情況下很有效。但是工業界有一個“歪路子”:用非常小的比例作用,但大大強化積分作用。這個方法是完全違背控制理論的分析的,但在實際中卻是行之有效,原因在於測量噪聲嚴重,或系統反應過敏時,積分為主的控制規律動作比較緩和,不易激勵出不穩定的因素,尤其是不確定性比較高的高頻部分,這也是鄧小平“穩定壓倒一切”的初衷吧。 在很多情況下,在初始PID引數整定之後,只要系統沒有出現不穩定或效能顯著退化,一般不會去重新整定。但是要是系統不穩定了怎麼辦呢?由於大部分實際系統都是開環穩定的,也就是說,只要控制作用恆定不變,系統響應最終應該穩定在一個數值,儘管可能不是設定值,所以對付不穩定的第一個動作都是把比例增益減小,根據實際情況,減小1/3、1/2甚至更多,同時加大積分時間常數,常常成倍地加,再就是減小甚至取消微分控制作用。如果有前饋控制,適當減小前饋增益也是有用的。在實際中,系統性能不會莫名其妙地突然變壞,上述“救火”式重新整定常常是臨時性的,等生產過程中的機械或原料問題消除後,引數還是要設回原來的數值,否則系統性能會太過“懶散”。 對於新工廠,系統還沒有投運,沒法根據實際響應來整定,一般先估計一個初始引數,在系統投運的過程中,對控制迴路逐個整定。我自己的經驗是,對於一般的流量回路,比例定在 0.5左右,積分大約1分鐘,微分為0,這個組合一般不致於一上來就出大問題。溫度迴路可以從2、5、0.05開始,液位迴路從5、10、0開始,氣相壓力迴路從10、20、0開始。既然這些都是憑經驗的估計,那當然要具體情況具體分析,不可能“放之四海而皆準”。 微分一般用於反應遲緩的系統,但是事情總有一些例外。我就遇到過一個小小的冷凝液罐,直徑才兩英尺,長不過5英尺,但是流量倒要8-12噸/小時,一有風吹草動,液位變化非常迅速,不管比例、積分怎麼調,液位很難穩定下來,常常是控制閥剛開始反應,液位已經到頂或到底了。最後加了0.05的微分,液位一開始變化,控制閥就開始抑制,反而穩定下來了。這和常規的引數整定的路子背道而馳,但在這個情況下,反而是“唯一”的選擇,因為測量值和控制閥的飽和變成穩定性主要的問題了。 對工業界以積分為主導控制作用的做法再囉嗦幾句。學術上,控制的穩定性基本就是漸近穩定性,BIBO穩定性是沒有辦法證明漸近穩定性時的“退而求其次”的東西,不怎麼上臺面的。但是工業界裡的穩定性有兩個看起來相似、實質上不盡相同的方面:一個當然是漸近穩定性,另一個則是穩定性,但不一定向設定值收斂,或者說穩定性比收斂性優先這樣一個情況。具體來說,就是需要系統穩定在一個值上,不要動來動去,但是不是在設定值並不是太重要,只要不是太離譜就行。例子有很多,比如反應器的壓力是一個重要引數,反應器不穩定,原料進料比例就亂套,催化劑進料也不穩定,反應就不穩定,但是反應器的壓力到底是10個大氣壓還是 12個大氣壓,並沒有太大的關係,只要慢慢地但是穩定地向設定值移動就足夠了。這是控制理論裡比較少涉及的一個情況,這也是工業上時常採用積分主導的控制的一個重要原因。 前面說到系統的頻率,本來也就是系統響應持續振盪時的頻率,但是控制領域裡有三撥人在搗騰:一撥是以機電類動力學系統為特色的電工出身,包括航空、機器人等,一撥是以連續過程為特色的化工出身的,包冶金、造紙等,還有一撥是以微分方程穩定性為特色的應用數學出身的。在瓦特和抽水馬桶的年代裡,各打各的山頭,井水不犯河水,倒也太平。但控制從藝術上升為理論後,總有人喜歡“統一”,電工幫搶了先,好端端的控制理論裡被塞進了電工裡的頻率。童子們哪,那哪是頻率啊,那是……複頻率。既然那些變態的電工幫(啊耶,這下鹿踹真的要來了)能折騰出虛功率,那他們也能折騰出複頻率來,他們自虐倒也算了,只是苦了我等無辜之眾,被迫受此精神折磨。 事情的緣由是系統的穩定性。前面提到,PID的引數如果設得不好,系統可能不穩定。除了摸索,有沒有辦法從理論上計算出合適的PID引數呢?前面也提到,動態過程可以用微分方程描述,其實在PID的階段,這只是微分方程中很狹窄的一支:單變數線性常微分方程。要是還記得大一高數,一定還記得線形常微的解,除了分離變數法什麼的,如果自變數時間用t表示的話,最常用的求解還是把 exp(λt)代入微分方程,然後解已經變成λ的代數方程的特徵方程,解出來的解可以是實數,也可以是複數,是複數的話,就要用三角函式展開了(怎麼樣,大一噩夢的感覺找回來一點沒有?)。只要實根為負,那微分方程就是穩定的,因為負的指數項最終向零收斂,復根到底多少就無所謂了,對穩定性沒有影響。但是,這麼求解分析起來還是不容易,還是超不出“具體情況具體分析”,難以得出一般的結論。 根軌跡還是比較客氣的,還有更變態的奈奎斯特、伯德和尼科爾斯法,想想腦子都大。都是叫那幫電工分子害的。時至今日,計算機分析已經很普及了,但是古典的圖示分析還是有經久不衰的魅力,就是因為圖示分析不光告訴你係統是穩定還是不穩定,以及其他一些動態響應的引數,圖示分析還可以定性地告訴你增益變化甚至系統引數變化引起的閉環效能變化。咦,剛才還不是在說人家變態嗎?呃,變態也有變態的魅力不是?哈哈。 以頻率分析(也稱頻域分析)為特色的控制理論稱為經典控制理論。經典控制理論可以把系統的穩定性分析得天花亂墜,但有兩個前提:一、要已知被控物件的數學模型,這在實際中不容易得到;二、被控物件的數學模型不會改變或漂移,這在實際中更難做到。對簡單過程建立微分方程是可能的,但簡單過程的控制不麻煩,經驗法引數整定就搞定了,不需要費那個麻煩,而真正需要理論計算幫忙的迴路,建立模型太困難,或者模型本身的不確定性很高,使得理論分析失去意義。經典控制理論在機械、航空、電機中還是有成功的應用,畢竟從F=ma出發,可以建立“所有”的機械系統的動力學模型,鐵疙瘩的重量又不會莫名其妙地改變,主要環境引數都可以測量,但是經典控制理論至少在化工控制中實用成功的例子實在是鳳毛麟角,給你一個50塊塔板的精餾塔,一個氣相進料,一個液相進料,塔頂、塔底出料加一個側線出料,塔頂風冷冷凝器,塔底再沸器加一箇中間再沸器,你就慢慢建模去吧,等九牛二虎把模型建立起來了,風冷冷凝器受風霜雨雪的影響,再沸器的高壓蒸汽的壓力受友鄰裝置的影響,氣相進料的溫度和飽和度受上游裝置的影響而改變,液相進料的混合組分受上游裝置的影響而改變,但組分無法及時測量(線上氣相色譜分析結果要45 分鐘才能出來),動態特性全變了。 老傢伙歌德兩百年前就說了,理論是灰色的,生命之樹常青。我們知道馬鹿喜歡金光的或者銀光的,至少也要紅的,不過只好將就啦,青綠地幹活。在實用中,PID有很多表兄弟,幫著大表哥一塊打天下。 比例控制的特點是:偏差大,控制作用就大。但在實際中有時還嫌不夠,最好偏差大的時候,比例增益也大,進一步加強對大偏差的矯正作用,及早把系統拉回到設定值附近;偏差小的時候,當然就不用那麼急吼吼,慢慢來就行,所以增益小一點,加強穩定性。這就是雙增益PID(也叫雙模式PID)的起源。想想也對,高射炮瞄準敵機是一個控制問題。如果炮管還指向離目標很遠的角度,那應該先儘快地把炮管轉到目標角度附近,動作猛一點才好;但炮管指向已經目標很近了,就要再慢慢地精細瞄準。工業上也有很多類似的問題。雙增益PID的一個特例是死區PID(PID with dead band),小偏差時的增益為零,也就是說,測量值和設定值相差不大的時候,就隨他去,不用控制。這在大型緩衝容器的液位控制裡用得很多。本來緩衝容器就是緩衝流量變化的,液位到底控制在什麼地方並不緊要,只要不是太高或太低就行。但是,從緩衝容器流向下游裝置的流量要儘可能穩定,否則下游裝置會受到不必要的擾動。死區PID對這樣的控制問題是最合適的。但是天下沒有免費的午餐。死區PID的前提是液位在一般情況下會“自動”穩定在死區內,如果死區設定不當,或系統經常受到大幅度的擾動,死區內的“無控”狀態會導致液位不受限制地向死區邊界“挺進”,最後進入“受控”區時,控制作用過火,液位向相反方向不受限制地“挺進”,最後的結果是液位永遠在死區的兩端振盪,而永遠不會穩定下來,業內叫hunting(打獵?打什麼?打鹿?)。雙增益PID也有同樣的問題,只是比死區PID好一些,畢竟只有“強控制”和“弱控制”的差別,而沒有“無控區”。在實用中,雙增益的內外增益差別小於2:1沒有多大意義,大於 5:1就要注意上述的持續振盪或hunting的問題。 雙增益或死區PID的問題在於增益的變化是不連續的,控制作用在死區邊界上有一個突然的變化,容易誘發系統的不利響應,平方誤差PID就沒有這個問題。誤差一經平方,控制量對誤差的曲線就成了拋物線,同樣達到“小偏差小增益、大偏差大增益”的效果,還沒有和突然的不連續的增益變化。但是誤差平方有兩個問題:一是誤差接近於零的時候,增益也接近於零,回到上面死區PID的問題;二是很難控制拋物線的具體形狀,或者說,很難制定增益在什麼地方拐彎。對於第一個問題,可以在誤差平方PID上加一個基本的線性PID,是零誤差是增益不為零;對於後一個問題,就要用另外的模組計算一個連續變化的增益了。具體細節比較瑣碎,將偏差送入一個分段線性化(也就是折線啦)的計算單元,然後將計算結果作為比例增益輸出到PID控制器,折線的水平段就對應予不同的增益,而連線不同的水平段的斜線就對應於增益的連續變化。透過設定水平段和斜線段的折點,可以任意調整變增益的曲線。要是“野心”大一點,再加幾個計算單元,可以做出不對稱的增益,也就是升溫時增益低一點,降溫時增益高一點,以處理加熱過程中常見的升溫快、降溫慢的問題。 雙增益或誤差平方都是在比例增益上作文章,同樣的勾當也可以用在積分和微分上。更極端的一種PID規律叫積分分離 PID,其思路是這樣的:比例控制的穩定性好,響應快,所以偏差大的時候,把PID中的積分關閉掉;偏差小的時候,精細調整、消除餘差是主要問題,所以減弱甚至關閉比例作用,而積分作用切入控制。概念是好的,但具體實施的時候,有很多無擾動切換的問題。 這些變態的PID在理論上很難分析系統的穩定性,但在實用中解決了很多困難的問題。大言不慚一句,這些PID本人在實際中都用過。 複雜結構PID 打仗時,如果敵人太頑固,要麼換更大的炮,把敵人轟倒;要麼採用更巧妙的戰術,把敵人暈倒。控制也是一樣,單迴路PID難以解決的問題,常常可以透過更巧妙的迴路結構來解決。 單一的PID迴路當然可以實現擾動抑制,但要是主要擾動在迴路中,而且是明確的,加一個內迴路作幫手是一個很不錯的主意。還記得洗熱水澡的例子嗎?要是熱水壓力不穩定,老是要為這個而調整熱水龍頭,那很麻煩。要是有一個人專門負責根據熱水壓力調節熱水流量,把熱水壓力穩定下來,而且穩定在標定值,那洗澡的時候,水溫就容易控制多了,只要告訴那個人現在需要多少熱水流量,而不必煩心熱水壓力對熱水流量的影響。這個負責熱水流量的控制迴路就是內迴路,也叫副迴路,而洗澡的溫度就是外迴路,也叫主迴路,當然是主迴路指揮副迴路,就像自動化指揮機械化、學自控的人指揮學機電的人……打住打住,再扯遠了要挨鹿踹了,或者馬踹、牛踹、驢踹……。這種主迴路套副迴路的結構叫串級控制(cascade control),曾經是單迴路PID後工業上第一種“先進過程控制”,現在串級已經用得很多了,也不再有人叫它“先進過程控制”了。串級控制最主要的功用是抑制迴路內的擾動,增強總體控制性能。不過串級也不能亂用。如果主迴路和副迴路的相應速度差不多,或者主迴路的相應速度甚至慢於副迴路(透過變態的除錯是可以做到的),這樣的串級要出問題。理論上可以用共振頻率什麼的分析,但是不用費那個事,用膝蓋想想就知道,一個急性子的頭兒把一個溫吞水的下屬指揮得團團轉,結果只能是大家都精疲力竭,事情還辦砸了。相反,一個鎮定自若的頭兒指揮一個手腳麻利的下屬,那事情肯定辦得好。