寫在前面 :最近整理硬盤發現了很久以前保存的一篇文章,出處找不到了,作者寫的很好,主要是文筆。盡管故事里吧自動化放到了具體的事情里面,容易理解,但是也可能會造成了大家對自動化包括的范圍的認識誤差,PA僅僅是自動化中的一個分支。推薦大家閱讀,尤其是非自動化專業的朋友們。
其實,生活中類似的例子有很多很多,比如我在學開車的時候,就想到,其實你開車的過程與PID的調節過程完全一樣,比如你目標就是勻速駕駛,油門或者剎車踩大了就是超調,車的極限就是死區,。。。。。。。,想想是不是這樣?
老伙計, 2013年,07月,25日。
自動控制的科普綜述文章少之又少,這一篇是難得好文章。甚至高于科普了。自動化專業的學生,能夠把自己學的道理理解到這種程度的,又能占到多少比例呢?第一次看到此文的時候,簡直驚為天人,短短數十頁的文章,就把自動控制的發展過程及精髓用非常通俗的語言描述出來,其中不發精彩的比喻(如舞龍、李亞普諾夫大錘等等),對于自動控制人員來說實在是不可多得的寶貴資料。化工技術論壇 - 贈人玫瑰 手有余香
文章的作者是老三屆的大學生,具有扎實的理論基礎和豐富的現場經驗,目前旅居加拿大,一直從事化工控制方面的工作和研究。文章雖然長一些,但非常值得靜下心來好好讀一讀。)
寫完聚乙烯的故事,就有寫自動控制的故事的念頭,但一直沒有動筆。這個題目太大了,大得都不知道從何說起。既然大家看聚乙烯的故事還有一點意思,四一在催,馬鹿要“一”什么的,那就接著寫自動控制的故事吧。反正是故事,別太當真,看著好玩就接著看,看著枯燥就拍桌子,看著有錯就提個醒,看著糊涂的盡管問,看著不耐煩了呢,也言語一聲,我好閉上嘴不再煩人。哈哈。
(一) 小時候喜歡看雜書,沒什么東西看,不正在文化大革命嘛?不過看進去了兩個“化”:機械化和自動化。打小就沒有弄明白,這機械化和自動化到底有什么差別,機器不是自己就會動的嗎?長大了,總算稍微明白了一點,這機械化是力氣活,用機器代替人的體力勞動,但還是要人管著的,不然機器是不知道該干什么不該干什么的;這自動化嘛,就是代替人的重復腦力勞動,是用來管機器的。也就是說,自動化是管著機械化的,或者說學自動化的是管著學機械的……啊,不對,不對,哪是哪啊! 有人考證古代就有自動化的實例,但現代意義上的自動控制開始于瓦特的蒸汽機。據說紐考門比瓦特先發明蒸汽機,但是蒸汽機的轉速控制問題沒有解決,弄不好轉速飛升,機器損壞不說,還可能說大事故。 瓦特在蒸汽機的轉軸上安了一個小棍,棍的一端和放汽閥連著,放氣閥松開來就關閉,轉速增加;按下去閥就打開,轉速降低;棍的另一端是一個小重錘,棍中間某個地方通過支點和轉軸連接。轉軸轉起來的時候,小棍由于離心力的緣故揮起來。轉速太高了,小棍揮會揮得很高,放汽閥就被按下去打開,轉速下降;轉速太低了,小棍揮不起來,放汽閥就被松開來關閉,轉速回升。這樣,蒸汽機可以自動保持穩定的轉速,即保證安全,又方便使用。也就是因為這個小小的轉速調節器,瓦特的名字和工業革命連在一起,而紐考門的名字就要到歷史書里去找了。
類似的例子在機械系統里很多,家居必備的抽水馬桶是另一個例子。放水沖刷后,水箱里水位降低,浮子隨水面下降,進水閥打開。隨著水位的升高,進水閥逐漸關閉,直到水位達到規定高度,進水閥完全關閉,水箱的水正好準備下一次使用。這是一個非常簡單但非常巧妙的水位控制系統,是一個經典的設計,但不容易用經典的控制理論來分析,不過這是題外話了. 這些機械系統設計巧妙,工作可靠,實在是巧奪天工。但是在實用中,如果每次都需要這樣的創造性思維,那太累,最好有一個系統的方法,可以解決“所有”的自動控制問題,這就是控制理論的由來。 從小大人就教我們,走路要看路。為什么呢?要是不看著路,走路走歪了也不知道,結果就是東撞西撞的。要是看著路呢?走歪了,馬上就看到,趕緊調整腳步,走回到正道上來。這里有自動控制里的第一個重要概念:反饋(feedback)。 反饋是一個過程: 1、設定目標,對小朋友走路的例子來說,就是前進的路線。 2、測量狀態,小朋友的眼睛看著路,就是在測量自己的前進方向。 3、將測量到的狀態和設定的目標比較,把眼睛看到的前進方向和心里想的前進方向作比較,判斷前進方向是否正確;如果不正確,相差有多少。 4、調整行動,在心里根據實際前進方向和設定目標的偏差,決定調整的量。 5、實際執行,也就是實際挪動腳步,重回正確的前進方向。 在整個走路的過程中,這個反饋過程周而復始,不斷進行,這樣,小朋友就不會走得東倒西歪了。但是,這里有一個問題:如果所有的事情都是在瞬時里同時發生的,那這個反饋過程就無法工作。要使反饋工作,一定要有一定的反應時間。還好,世上之事,都有一個過程,這就為反饋贏得了所需要的時間。
小時候,媽媽在鍋里蒸東西, 蒸好了,從鍋里拿出來總是一個麻煩,需要抹布什么的墊著,免得燙手。但是碗和鍋的間隙不大,連手帶抹布伸進去頗麻煩,我常常不知天高地厚,自告奮勇地徒手 把熱的碗拿出來。只要動作快,手起碗落,可以不燙手。當然嘍,要是捧著熱碗再東晃晃,西蕩蕩,那手上感覺的溫度最終會和熱碗一樣,肯定要把手心、手指燙熟不可的。在從接觸碗到皮膚溫度和碗表面一樣,這里面有一個逐漸升溫的過程,這就是動態過程(dynamicprocess)。這里面有兩個東西要注意:一個是升溫的過程有多快,另一個是最終的溫度可以升到多少。要是知道了這兩個參數,同時知道自己的手可以耐受 多少溫度,理論上可以計算出熱的碗在手里可以停留多少時間而不至于燙手。
反饋過程也叫閉環(closedloop)過程。既然有閉環,那就有開環(open loop)。開環就是沒有反饋的控制過程,設定一個控制作用,然后就執行,不根據實際測量值進行校正。開環控制只有對簡單的過程有效,比如洗衣機和烘干機 按定時控制,到底衣服洗得怎么樣,烘得干不干,完全取決于開始時的設定。對于洗衣機、烘干機這樣的問題,多設一點時間就是了,稍微浪費一點,但可以保證效 果。對于空調機,就不能不顧房間溫度,簡單地設一個開10分鐘、關5分鐘的循環,而應該根據實際溫度作閉環控制,否則房間里的溫度天知道到底會達到多少。 記得80年代時,報告文學很流行。徐遲寫了一個《哥德巴赫猜想》,于是全國人民都爭當科學家。小說家也爭著寫科學家,成就太小不行,所以來一個語不驚人死不休,某大家寫了一個《無反饋快速跟蹤》。那時正在大學啃磚頭,對這個科學新發現大感興趣,從頭看到尾,也沒有看明白到底是怎么無反饋快速跟蹤的。現在想想,小說就是小說,不過這無良作家也太扯,無反饋還要跟蹤,不看著目標,不看著自己跑哪了,這跟的什么蹤啊,這和永動機差不多了,怎么不挑一個好一點的題目,冷聚變什么的,至少在理論上還是可能的。題外話了。
在數學上,動態過程用微分方程描述,反饋過程就是在描述動態過程的微分方程的輸入項和輸出項之間建立一個關聯,這樣改變了微分方程本來的性質。自動控制就是在這個反饋和動態過程里做文章的。 房間內的空調是一個簡單的控制問題。不過這只是指單一房間,整個高層大樓所有房間的中央空調問題實際上是一個相當復雜的問題,不在這里討論的范圍。夏天了,室內溫度設在28度,實際溫度高于28度了,空調機啟動致冷,把房間的溫度降下來;實際溫度低于28度了,空調機關閉,讓房間溫度受環境氣溫自然升上去。通過這樣簡單的開關控制,室內溫度應該就控制在28度。不過這里有一個問題,如果溫度高于28度一點點,空調機就啟動;低于28度一點點,空調機就 關閉;那如果溫度傳感器和空調機的開關足夠靈敏的話,空調機的開關頻率可以無窮高,空調機不斷地開開關關,要發神經病了,這對機器不好,在實際上也沒有必 要。解決的辦法是設立一個“死區”(dead band),溫度高于29度時開機,低于27度時關機。注意不要搞反了,否則控制單元要發神經了。
有了一個死區后,室內溫度不再可能嚴格控制在28度,而是在27到29度之間“晃蕩”。如果環境溫度一定,空調機的制冷量一定,室內的升溫/降溫動態模型已知,可以計算溫度“晃蕩”的周期。不過既然是講故事,我們就不去費那個事了。 這種開關控制看起來“土”,其實好處不少。對于大部分過程來說,開關控制的精度不高但可以保證穩定,或者說系統輸出是“有界”的,也就是說實際測量值 一定會被限制在一定的范圍,而不可能無限制地發散出去。這種穩定性和一般控制理論里強調的所謂漸進穩定性不同,而是所謂BIBO穩定性,前者要求輸出最終 趨向設定值,后者只要求在有界的輸入作用下輸出是有界的,BIBO指boundedinput bounded output。 對于簡單的精 度要求不高的過程,這種開關控制(或者稱繼電器控制,relaycontrol,因為最早這種控制方式是用繼電器或電磁開關來實現的)就足夠了。但是很多時候,這種“毛估估”的控制滿足不了要求。汽車在高速公路上行 駛,速度設在定速巡航控制,速度飄下去幾公里,心里覺得吃虧了,但要是飄上去幾公里,被警察抓下來吃一個罰單,這算誰的?
開關控制是不連續控制,控制作用一加就是“全劑量”的,一減也是“全劑量”的,沒有中間的過渡。如果空調機的制冷量有三個設定,:小、中、大,根據室 溫和設定的差別來決定到底是用小還是中還是大,那室溫的控制精度就可以大大提高,換句話說,溫度的“晃蕩”幅度將大幅度減小。那么,如果空調機有更多的設定,從小小到小中到……到大大,那控制精度是不是更高呢?是的。既然如此,何不用無級可調的空調機呢?那豈不可以更精確地控制室溫了嗎?是的。 無級可調或連續可調的空調機可以精確控制溫度,但開關控制不能再用了。家用空調機中,連續可調的不占多數,但沖熱水淋浴是一個典型的連續控制問題,因為水龍頭可以連續調節水的流量。沖淋浴 時,假定冷水龍頭不變,只調節熱水。那溫度高了,熱水關小一點;溫度低了,熱水開打一點。換句話說,控制作用應該向減少控制偏差的方向變化,也就是所謂負 負反饋。控制方向對了,還有一個控制量的問題。溫度高了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)代入微分方程,然后解已經變成λ的代數方程的特征方程,解出來的解可以是實數,也可以是復數,是復數的話,就要用三角函數展開了(怎么樣, 大一噩夢的感覺找回來一點沒有?)。只要實根為負,那微分方程就是穩定的,因為負的指數項最終向零收斂,復根到底多少就無所謂了,對穩定性沒有影響。但 是,這么求解分析起來還是不容易,還是超不出“具體情況具體分析”,難以得出一般的結論。 法國人以好色、好吃出名,但是他們食色性也之后,還不老實,其中一個叫拉普拉斯的家伙,搗鼓出什么拉普拉斯變換,把常微分方程變成s的多項式。然后那幫電 工的家伙們,喜歡自虐,往s里塞jω,就是那個復頻率,整出一個變態的頻率分析,用來分析系統的穩定性。不過說變態,也不完全公平,在沒有計算機的年代, 各種圖表是最有效的分析方法,還美其名曰“幾何分析”。頻率分析也不例外。美國佬Evans搞出一個根軌跡(rootlocus),思路倒是滿有意思的。他用增益作自變量,將系統的根(不管實的虛的)在復平面上畫出軌跡來,要是軌跡在左半平面打轉轉,那就是實根為負,就 是穩定的。再深究下去,系統響應的臨界頻率之類也可以計算出來。最大的好處是,對于常見的系統,可以給出一套作圖規則來,熟練的大牛、小牛、公牛、母牛 們,眼睛一瞄,隨手就可以畫出根軌跡來,然后就可以告訴你,增益變化多多少,系統開始振蕩,再增加多少,系統會不穩定,云云。 根軌跡還是比較客氣的,還有更變態的奈奎 斯特、伯德和尼科爾斯法,想想腦子都大。都是叫那幫電工分子害的。時至今日,計算機分析已經很普及了,但是古典的圖示分析還是有經久不衰的魅力,就是因為 圖示分析不光告訴你系統是穩定還是不穩定,以及其他一些動態響應的參數,圖示分析還可以定性地告訴你增益變化甚至系統參數變化引起的閉環性能變化。咦,剛 才還不是在說人家變態嗎?呃,變態也有變態的魅力不是?哈哈。 以頻率分析(也稱頻 域分析)為特色的控制理論稱為經典控制理論。經典控制理論可以把系統的穩定性分析得天花亂墜,但有兩個前提:一、要已知被控對象的數學模型,這在實際中不 容易得到;二、被控對象的數學模型不會改變或漂移,這在實際中更難做到。對簡單過程建立微分方程是可能的,但簡單過程的控制不麻煩,經驗法參數整定就搞定 了,不需要費那個麻煩,而真正需要理論計算幫忙的回路,建立模型太困難,或者模型本身的不確定性很高,使得理論分析失去意義。經典控制理論在機械、航空、 電機中還是有成功的應用,畢竟從F=ma出發,可以建立“所有”的機械系統的動力學模型,鐵疙瘩的重量又不會莫名其妙地改變,主要環境參數都可以測量,但 是經典控制理論至少在化工控制中實用成功的例子實在是鳳毛麟角,給你一個50塊塔板的精餾塔,一個氣相進料,一個液相進料,塔頂、塔底出料加一個側線出 料,塔頂風冷冷凝器,塔底再沸器加一個中間再沸器,你就慢慢建模去吧,等九牛二虎把模型建立起來了,風冷冷凝器受風霜雨雪的影響,再沸器的高壓蒸汽的壓力 受友鄰裝置的影響,氣相進料的溫度和飽和度受上游裝置的影響而改變,液相進料的混合組分受上游裝置的影響而改變,但組分無法及時測量(在線氣相色譜分析結 果要45分鐘才能出來),動態特性全變了。 老家伙歌德兩百年前就說了,理論是灰色的,生命之樹常青。我們知道馬鹿喜歡金光的或者銀光的,至少也要紅的,不過只好將就啦,青綠地干活。在實用中,PID有很多表兄弟,幫著大表哥一塊打天下。 比例控制的特點是:偏差大,控制作用就大。但在實際中有時還嫌不夠,最好偏差大的時候,比例增益也大,進一步加強對大偏差的矯正作用,及早把系統拉回 到設定值附近;偏差小的時候,當然就不用那么急吼吼,慢慢來就行,所以增益小一點,加強穩定性。這就是雙增益PID(也叫雙模式PID)的起源。想想也 對,高射炮瞄準敵機是一個控制問題。如果炮管還指向離目標很遠的角度,那應該先盡快地把炮管轉到目標角度附近,動作猛一點才好;但炮管指向已經目標很近 了,就要再慢慢地精細瞄準。工業上也有很多類似的問題。雙增益PID的一個特例是死區PID(PIDwith 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回路當然可以實現擾動 抑制,但要是主要擾動在回路中,而且是明確的,加一個內回路作幫手是一個很不錯的主意。還記得洗熱水澡的例子嗎?要是熱水壓力不穩定,老是要為這個而調整 熱水龍頭,那很麻煩。要是有一個人專門負責根據熱水壓力調節熱水流量,把熱水壓力穩定下來,而且穩定在標定值,那洗澡的時候,水溫就容易控制多了,只要告 訴那個人現在需要多少熱水流量,而不必煩心熱水壓力對熱水流量的影響。這個負責熱水流量的控制回路就是內回路,也叫副回路,而洗澡的溫度就是外回路,也叫 主回路,當然是主回路指揮副回路,就像自動化指揮機械化、學自控的人指揮學機電的人……打住打住,再扯遠了要挨鹿踹了,或者馬踹、牛踹、驢踹……。這種主 回路套副回路的結構叫串級控制(cascadecontrol),曾經是單回路PID后工業上第一種“先進過程控制”,現在串級已經用得很多了,也不再有人叫它“先進過程控制”了。串級控制最主要的功 用是抑制回路內的擾動,增強總體控制性能。不過串級也不能亂用。如果主回路和副回路的相應速度差不多,或者主回路的相應速度甚至慢于副回路(通過變態的調 試是可以做到的),這樣的串級要出問題。理論上可以用共振頻率什么的分析,但是不用費那個事,用膝蓋想想就知道,一個急性子的頭兒把一個溫吞水的下屬指揮 得團團轉,結果只能是大家都精疲力竭,事情還辦砸了。相反,一個鎮定自若的頭兒指揮一個手腳麻利的下屬,那事情肯定辦得好。
如果主要 擾動在回路以外,但是可以預知,那就要用另一個辦法,就是馬鹿前面說到的前饋了。還是用洗熱水澡的例子。如果冷水管和同一個水房的抽水馬桶功用,你在洗 澡,別人一抽水,那你就變煮熟的龍蝦了(本想說猴子PP的,但是那個不雅,我們要五講四美不是?)。這個時候,要使那個人在抽水的同時告訴你一聲,你算好 時間,算好量,猛減熱水,那溫度還是可以大體不變的。這就是所謂前饋控制(feed-forwardcontrol)。前饋控制有兩個要緊的東西:一是定量的擾動對被控變量的影響,也就是所謂前饋增益;二是擾動的動態,別人抽水到洗澡龍頭的水溫變熱,這 里面有一個過程,不是立時三刻的。如果可以精確知道這兩樣東西,那前饋補償可以把可測擾動完全補償掉。但實際上沒有精確知道的事情,要是指望前饋來完全補 償,弄巧成拙是肯定的。所以前饋通常和反饋一起用,也就是在PID回路上再加一個前饋。一般也只用靜態前饋,也就是只補償擾動對被控變量的靜態影響,而忽 略擾動的動態因素,主要是為了靜態前饋已經把前饋80%的好處發掘出來了,動態前饋既復雜又不可靠,在PID回路里很少有人用。理論上的前饋都是在PID的控制作用上再加一個前饋作用,實際上也可以乘一個控制作用。乘法前饋的作用太猛,我從來沒有用過,一般都是用加法。在實施中,前饋是和擾動的變化(也就 是增量)成比例的,所以擾動變量不變了,前饋作用就消失,否則,整定前饋控制增益會對PID主回路造成擾動。前饋增益可以根據粗略計算得到,比如說,抽水 的量會造成溫度下降多少、需要調整多少熱水流量才能維持溫度,這不難從熱量平衡算出來。不想費這個事的話,也可以從歷史數據中推算。一般算出來一個前饋增 益后,打上7折甚至5折再用,保險一點,不要矯枉過正。
前饋作用一般是用作輔助控制作用的,但是在特殊情況下,前饋也可以作為“預加載”(pre-loading)作為基準控制作用。比如說,在一個高壓系統的啟動過程中,壓力可以從靜止狀態的常壓很快地什到很高的壓力。高壓系統不容許閥門 大幅度運動,所以控制增益都比較低,但是這樣一來,啟動升壓過程中,壓力控制的反應就十分遲緩,容易造成壓力過高。這時用壓縮機的轉速或高壓進料的流量作 前饋,將壓力控制閥“預先”放到大概的位置,然后再用反饋慢慢調節,就可以解決這個問題。 有點搞笑兄在前面提到用單個閥門有時難以控制大 范圍變化的流量,這是一個很實際的問題。工業閥門一般turndown只有10:1,也就是說,如果這個閥門的最大流量是100噸/小時的話,低于10噸/小時就難以控制了,當然,高于90噸/小時也幾近失去控制。 所以,要真的保證0-100的精確控制,需要將一個大閥和一個小閥并列,小閥負責小流量時的精確控制,大閥負責大流量時的精確控制,這就是所謂的分程控制 (splitrange control)。分程控制時,小閥首先打開,超過小閥最大流量是小閥就固定在全開位置,大閥開始打開,接過控制。這是開-開型分程控制。也有關-開型分 程控制,比如反應器夾套溫度控制,隨溫度逐漸上升,冷卻水逐漸關閉,直到冷卻水全關,加熱蒸氣開始打開。分程控制當然不一定只有兩截,三截甚至更多都是可 以的,道理都一樣。分程控制的問題在于不同閥門的交接點。閥門在特別小的開度時,控制非常不靈敏,前面說到的10:1也是這個道理。所以實用中,開-開型 分程控制常常在交接點附近有一段重疊,也就是小閥快要全開但還沒有全開時,大閥已經開始動作,這樣,到小閥全開、不能再動彈時,大閥已經進入有效控制范 圍。關-開型分程控制常常在交接點設置一個死區,避免出現兩個閥都有一點點開度的情況。分程控制的交接點的設置有一點講究,應該根據閥的大小。比如A閥比B閥大一倍,那分程點應該設在1/3先開B閥,而不是懶漢做法的1/2。 很多過程參數都是可以測量的,但也有很多參數是沒法直接測量的,這時,如果能夠通過別的可以測量的過程參數來間接計算真正需要控制的參數,這就是所謂的推 斷控制(inferentialcontrol)。比如精餾塔頂的產品純度可以用氣相色譜(gaschromatograph,GC)來測量,但結果要等40分鐘才能出來,用來做實時控制,黃花菜都涼了。推斷控制是和“軟傳感器”(softsensor)的概念緊密相連的。對精餾塔塔頂純度這個例子來說,可以用純度和塔頂溫度、壓力作一個數學模型,用可以測量的溫度和壓力,間接計算出純度。 在計算機控制普及的今天,這是很容易實現的,但是在很多地方,推斷控制仍然被看成很神秘的東西,悲哀。 有的時候,對同一個變量有不止一個控制手段。比如說,風冷器有風扇的轉速可以調節,也有百葉窗的開度可以調節。風扇轉速的效果快,控制精確;百葉窗開度 的效果猛,不容易掌握,但有利于節能。所以,可以用風扇的快速響應來控制溫度,但是用百葉窗開度來通過溫度間接地緩慢地影響風扇的轉速,使風扇轉速回到最 經濟的設定。當然百葉窗開度的控制回路必須要比風扇轉速的控制回路整定得慢得多,一般是緩慢的純積分控制,否則兩人要打架。由于這相當于控制風扇轉速的“閥位”,工業上稱其為閥位控制(valveposition control)。這個閥位控制也可以變一變,風扇轉速高于某一數值(比如80%的最大轉速)時,把百葉窗開大一格,還是高就繼續開大;風扇轉速低于某一 數值(比如低于20%最大轉速)時,把百葉窗關小一格。這實際上是一個單向的積分作用,不同的地方有兩點: 一、有兩個設定值,由風扇轉速是高還是低而定二、積分作用只有在風扇轉速在這兩個“極限”的外面起作用,在里面時,百葉窗的開度不變。 這樣,風扇轉速不必回到一個特定值,而是可以在一個范圍內浮動。 另 外一個兩個控制器“競爭”一個控制閥的情況是選擇性控制(overridecontrol或selective control)。舉個例子,鍋爐的溫度由燃料流量控制,溫度高了,燃料流量就減下來,但是燃料流量低到燃料管路壓力低于爐膛壓力,那要出現危險的回火, 所以,這時,燃料管路壓力就要接管控制,而犧牲爐膛溫度。換句話說,正常時候,爐膛溫度控制起作用,燃料管路壓力低于一定數值時,燃料管路壓力控制器作 用。在實施時,就是爐膛溫度控制器和燃料管路壓力控制器的輸出都接到一個高選器,然后搞選器的輸出接到實際的燃料閥。這個概念很清楚,但是初次接觸選擇性 控制的人,常常容易被高選還是低選搞糊涂,明明是壓力太低,怎么是高選呢?其實,只要記住高選還是低選是從閥門這一頭看的,和溫度、壓力的高度沒有關系。 如果“非常”變量超過界限了,你要閥門打開,那就是高選;你要閥門關閉,那就是低選。 PID從二、三十年到開始在工業界廣泛應用,戲法變了幾十年,也該換換花樣了。PID說一千道一萬,還是經典控制理論的產物。50-60年代時,什么 都要現代派,建筑從經典的柱式、比例、細節的象征意義,變到“形式服從功能”的鋼架玻璃盒子;汽車從用機器牽引的馬車,變到流線型的鋼鐵的藝術;控制理論 也要緊跟形勢,要現代化。這不,美國佬卡爾曼隆重推出……現代控制理論。 都看過舞龍吧? 一個張牙舞爪的龍頭氣咻咻地追逐著一個大繡球,龍身子扭來扭去,還時不時跳躍那么一兩下。中國春節沒有舞龍,就和洋人的圣誕節沒有圣誕老人一樣不可思議。 想象一下,如果這是一條看不見的盲龍,只能通過一個人在龍尾巴后面指揮龍尾巴,然后再通過龍身體里的人一個接一個地傳遞控制指令,最后使龍頭咬住繡球。這 顯然是一個動態系統,龍身越長,人越多,動態響應越遲緩。如果只看龍頭的位置,只操控龍尾巴,而忽略龍身子的動態,那就是所謂的輸入-輸出系統。經典控制 理論就是建立在輸入-輸出系統的基礎上的。對于很多常見的應用,這就足夠了。 但是卡爾曼不滿足于“足夠”。龍頭 當然要看住,龍尾巴當然要捏住,但龍身體為什么就要忽略呢?要是能夠看住龍身體,甚至操縱龍身體,也就是說,不光要控制龍尾巴,控制指令還要直接傳到龍身 體里的那些人,那豈不更好?這就是狀態空間的概念:將一個系統分解為輸入、輸出和狀態。輸出本身也是一個狀態,或者是狀態的一個組合。在數學上,卡爾曼的 狀態空間方法就是將一個高階微分方程分解成一個聯立的一階微分方程組,這樣可以使用很多線形代數的工具,在表述上也比較簡潔、明了。, 卡爾曼是一個數學家。數學家的想法就是和工程師不一樣。工程師腦子里轉的第一個念頭就是“我怎么控制這勞什子?增益多少?控制器結構是什么樣的?”數 學家想的卻是什么解的存在性、唯一性之類虛頭八腦的東西。不過呢,這么說數學家也不公平。好多時候,工程師憑想象和“實干”,辛苦了半天,發現得出的結果 完全不合情理,這時才想起那些“性”(不要想歪了啊,嘿嘿),原來那些存在性、唯一性什么的還是有用的。 還是回過來看這條龍。現在,龍頭、龍尾巴、龍身體都要看,不光要看,還要直接操控龍頭到龍尾的每一個人。但是,這龍不是想看就看得的,不是想舞就舞得 的。說到“看”,直接能夠測量/觀測的狀態在實際上是不多的,所謂看,實際上是估算。要是知道龍身體有多少節(就是有多少個人在下面撐著啦),龍身體的彈性/韌性 有多少,那么捏住龍尾巴抖一抖,再看看龍頭在哪里,是可以估算出龍身體每一節的位置的,這叫狀態觀測。那么,要是這龍中間有幾位童子開小差,手不好好拉 住,那再捏住龍尾巴亂抖也沒用,這時系統中的部分狀態就是不可觀測的。如果你一聲令下,部分童子充耳不聞,那這些狀態就是不可控制的。卡爾曼從數學上推導 出不可控和不可觀的條件,在根本上解決了什么時候才不是瞎耽誤工夫的問題。這是控制理論的一個重要里程碑。 再來看這條龍。如果要看這條龍整齊不整齊,排成縱列的容易看清楚;如果要清點人數,看每一個人的動作,排成橫列的容易看清楚。但是不管怎么排,這條龍還是 這條龍,只是看的角度不同。那時候中國人的春節舞龍還沒有在美國的中國城里鬧騰起來,不知道卡爾曼有沒有看到過舞龍,反正他把數學上的線性變換和線性空間 的理論搬到控制里面,從此,搞控制的人有了工具,一個系統橫著看不順眼的話,可以豎著看,因為不管怎么看,系統的本質是一樣的。但是不同的角度有不同的用 處,有的角度設計控制器容易一點,有的角度分析系統的穩定性容易一點,諸如此類,在控制理論里就叫這個那個“標準型”。這是控制理論的又一個里程碑。 觀測狀態的目的最終還是控制。只用輸出的反饋叫輸出反饋,經典控制理論里的反饋都可以歸到輸出反饋里,但是用狀態進行反饋的就叫狀態反饋了。輸出反饋 對常見系統已經很有效了,但狀態反饋要猛得多。你想想,一個系統的所有狀態都被牢牢地瞄住,所有狀態都乖乖地聽從調遣,那是何等的威風?臺商的大奶們的最 高境界呀。 盡 管學控制的人都要學現代控制理論,但大多數人記得卡爾曼還是因為那個卡爾曼濾波器(KalmanFilter)。說它是濾波器,其實是一個狀態觀測器(state observer),用來從輸入和輸出“重構”系統的狀態。這重構聽著玄妙,其實不復雜。不是有系統的數學模型嗎?只要模型精確,給它和真實系統一樣的輸 入,它不就乖乖地把系統狀態給計算出來了嗎?且慢:微分方程的解不光由微分方程本身決定,還有一個初始條件,要是初始條件不對,微分方程的解的形式是正確 的,但是數值永遠差一拍。卡爾曼在系統模型的微分方程后再加了一個尾巴,把實際系統輸出和模型計算的理論輸出相比較,再乘上一個比例因子,形成一個實際上 的狀態反饋,把狀態重構的偏差漸進地消除,解決了初始條件和其他的系統誤差問題。卡爾曼濾波器最精妙之處,在于卡爾曼推導出一個系統的方法,可以考慮進測 量噪聲和系統本身的隨機噪聲,根據信噪比來決定上述比例因子的大小。這個構型其實不是卡爾曼的獨創,隆伯格(Luenburg)也得出了類似的結構,但是 從系統穩定性角度出發,來決定比例因子。同樣的結構大量用于各種“預測-校正”模型結構,在工業上也得到很多應用,比如聚合反應器的分子重量分布可以用反 應器的溫度、進料配比、催化劑等來間接計算,但不夠精確,也無法把林林總總的無法測量的干擾因素統統包括進數學模型里,這時用實驗室測定的真實值來定期校 正,就可以結合數學模型及時的特點和實驗室結果精確的特點,滿足實時控制的要求,這或許可以算靜態的卡爾曼濾波器吧。卡爾曼濾波器最早的應用還是在雷達 上。所謂邊掃描邊跟蹤,就是用卡爾曼濾波器估計敵機的位置,再由雷達的間隙掃描結果來實際校正。實際應用中還有一個典型的問題:有時候,對同一個變量可以 有好幾個測量值可用,比如有的比較直接但不精確,有的是間接的估算,有很大的滯后但精確度高,這時可以用卡爾曼濾波器把不同來源的數據按不同的信噪比加權“整合”起來,也算是民用版的“傳感器融合”(sensorfusion)吧。 除了卡爾曼濾波器外,卡爾曼的理論在實際中用得不多,但是卡爾曼的理論在理論上建立了一個出色的框架,對理解和研究控制問題有極大的作用。 順便說一句,卡爾曼的理論基本局限于線形系統,也就是說,十塊大洋買一袋米,二十塊大洋就買兩袋米,都是成比例的。實際系統中有很多非線性的,兩千塊 大洋還能買兩百袋米,但兩千萬大洋就要看米倉有沒有貨了,市場漲不漲價了,不是錢越多,買的米越多,有一個非線性的問題。非線性的問題研究起來要復雜得 多。實際系統還有其他特性,有的是所謂時變系統,像宇宙火箭,其質量隨時間和燃料的消耗而變,系統特性當然也就變了。很多問題都是多變量的,像汽車轉彎, 不光方向盤是一個輸入,油門和剎車也是輸入變量。但是,狀態空間的理論在數學表述上為線性、非線性、單變量、多變量、時變、時不變系統提供了一個統一的框 架,這是卡爾曼最大的貢獻。 ==================================================== 前面說到,搞控制有三撥人:電工出身的,化工出身的,和應用數學出身的。在卡爾曼之前,電工出身的占主導地位,數學家們好在象牙塔里打轉轉,化工出身則還 對控制理論懵里懵懂,還在“實干”呢。卡爾曼之后,一大批數學出身的人,利用對數學工具的熟悉,轉攻控制理論。一時間,控制理論的數學化似乎成了“天下大 勢,順我者昌,逆我者亡”了。在狀態空間的框架下,多變量沒有太多的問題好研究,于是最優化成為控制理論的新時尚。對于一根給定的曲線,求一階導 數為零的點,就是這個曲線的極點;在對這一極點球二階導數,大于零就是最小點,小于零就是最大點。這時牛頓老爺子就整明白的東東,現在高中或大一人人都學 過的東西。但是動態系統是一個微分方程,對微分方程求一階導數為零,就導致變分法和所謂歐拉方程。但這個東西用起來不方便。實際的最優控制不大直接使用變 分。俄羅斯是一個奇怪的地方。老毛子們要么蔫蔫的,要么瘋狂的。俄羅斯的悲劇電影看得你也郁悶得想去自殺。但是老毛子要是搭錯筋整出一個喜劇呢? 那你要么跟著瘋狂,要么被逼瘋狂。就是這么一個地方,除了無數托爾斯泰、柴可夫斯基、普希金、屠格涅夫等文藝巨璧外,俄羅斯也盛產數學家,其中兩個是龐特 里亞京和河里學控制的人老惦記著的李亞普諾夫。龐特里亞京的極大值原理聽起來嚇人,其實說白了很簡單。看見那山嗎?山頂就是最高點(切,這還用你 說嗎?);看見那山坡嗎?要是在山腰劃一道線,從山下往上爬,盡管山坡還在繼續往上延伸,但是到線為止,不得逾越,那山腰上那道三八線就是最高點(切,這 還用說?)。這就是龐特里亞京的極大值原理。當然啦,龐特里亞京是用精巧、深奧的數學語言表述的,要不然他在數學界里也別混了。不過呢,意思就是這么一個 意思。龐特里亞京極大值原理的一個典型應用就是所謂最速控制問題,或者叫時間最優控制 (time optimal control)問題,簡單 地說,就是給定最大馬力和最大剎車功率,怎么開汽車能夠最快地從A點開到B點(什么轉彎、上下坡、紅綠燈,這種瑣碎的事情也要拿來煩人?一點品味都沒 有!)。你可以用優美但繁瑣的數學求證,或者用膝蓋想想,最快的方法,就是一上來就加足馬力,全速前進;然后在不到終點的某一地點,全力剎車,使慢下來的 汽車在到達終點時正好停下來。這時最快的方法,不可能比這更快了。稍微發揮一點想象力,可以想象“梆”的一下,控制量的油門板一腳到底,再是“梆”的一 下,剎車板一腳到底,控制任務就完成了。所以最速控制也叫“梆-梆”控制(Bang-Bang control)。最速控制在理論上是一個很有趣 的問題,解法也是簡潔、優美,但在實際中直接使用的例子實在是鳳毛麟角,一般都是開始時用“梆-梆”,或者勻速上升到最大控制,以緩和控制的沖擊力;到終 點附近時,改用PID作閉環微調,以克服“梆-梆”的系統模型誤差十分敏感的缺點。電梯控制就是這樣一個例子。從一樓到四樓,電動機很快勻速上升到最高轉 速,一過三樓,電動機就勻速下降到較低的轉速,然后根據電梯實際位置和樓面之差,有控制地減速,直至停下來。要是控制參數調得好的話,一下子就穩穩當當地 停下來;要是調的不夠好,會在停下來之前上下晃蕩幾下。最速控制問題是較早的最優控制問題,它提供了一個很有趣的思路,但這顆樹上開花結果不多。 相比之下,最優控制的另外一支枝繁葉茂,有生氣得多了。這一支就是線型二次型最優控制(linear quadratic control)。數學是有趣 的,但數學也是盲目的。在數學上,最優化問題就是一個在曲面上尋找凸點的問題,只要你能把一個物理問題表述成一個曲面,數學是不理會姓無姓資的。既然如 此,控制偏差的平方在時間上的累積就是很自然的選擇,二次型就是平方在線性代數里的說法。線型系統的偏差平方有很好的性質,這山峰是一個饅頭山,沒有懸崖 峭壁,沒有溝坎,容易爬;一山只有一峰,不用擔心找錯地方。不過這山峰不能只包含控制偏差,還要包含控制量,原因有三個:
1、如果不包括控制量,那最優控制的解是沒有意義的,因為無窮大的控制量可以使累計平方偏差為最小,但無窮大的控制量是不現實的。
2、控制量的大小通常和能量、物料的消耗連在一起,實際控制問題一般是“在最小能量、物料消耗小達到最高的控制精度”,所以在“山峰”中同時包含控制偏差和控制量是很自然的
3、系統模型總是有誤差的,誤差“總是”在高頻、大幅度控制作用下最突出,所以為了減低系統對模型誤差的敏感性,也有必要限制控制量的大小。所 以線性二次型最優控制的“目標函數”(也就是定義山峰形狀的數學表述)是一個控制偏差和控制量各自平方的加權和的積分。積分當然就是“在時間上的累積” 了,加權和其實就是在控制偏差的平方項和控制量的平方相前分別乘以比例因子,然后再相加。兩個比例因子的相對大小決定了誰更重要。運用矩陣微分和線型 代數工具,不難導出線性二次型控制律—一個基本的狀態反饋控制律!只是反饋增益矩陣是按最優化的要求計算出來的。線型二次型最優控制開創了一整個新的控制領域,很快從狀態空間走出來,進入其他領域,子孫繁衍,人丁興旺。這一支是當今最優控制在應用中的主體。線 性二次型控制具有各種各樣的優點,但是,線性二次型沒有回答一個最基本的控制問題:這個閉環系統是不是穩定。這里,我們的飽受牽記的李亞普諾夫同志出場 了。李亞普諾夫也是一個腦子搭錯筋的人,一百多年前,玩微分方程玩出了癮,整出兩個穩定性(或者叫收斂性)的定理,前一個沒有什么太了不起的,把非線性系 統線性化,就是把一根曲線用很多一小段、一小段的直線近似,然后按直線來分析。后一個就有點邪門了。老李琢磨出一個定理,說是對于任意一個系統,如果能找 到一個自我耗散的能量函數(數學說法是正定函數),也就是其數值永遠為正,但隨時間漸進地趨向零,或者說這個能量函數對時間的導數永遠為負,那這個系統就 是穩定的。據說定理的證明是一個天才的杰作,我等凡人只有頻頻點頭的份。不過想想也對,系統的能量耗散沒了,系統不也就安分下來了嗎?當然就穩定嘍。李 亞普諾夫比卡爾曼還要數學家,他的定理只給出“如果存在……就……”,怎么找這個自我耗散的能量函數他沒說,這個函數一般是什么樣他也沒說。這難不倒搞自 動控制的廣大革命群眾。不是要正定函數嗎?不是沒有限制什么形式的正定函數嗎?那就用控制偏差的平方吧。說干就干,但是干著干著,好玩的事情出現了,對偏 差平方(或二次型)的求導,導出了和線性二次型最優控制推導過程中同樣出現的一個所謂黎卡蒂方程(Riccati equation),感情這是殊途同歸 呀。換句話說,線性二次型控制總是穩定的。這是線性二次型控制的一個重要貢獻:把最優性和穩定性連到一起。再扯一句李亞普諾夫,他的第二個定理非常威猛,但是有點像一個奇形怪狀的大錘,到現在人們還在找合適的釘子,好用這把大錘砸幾下。線性二次型控制是已知的僅有的幾個釘子之一,另一個是變結構控制,也可以用李亞普諾夫方法,這是題外話了。都 說瓦特的蒸汽機后,計算機是影響人類進程最大的發明,計算機當然也對自動控制帶來深刻的影響。如前所述,控制理論基本上都是圍繞微分方程轉的,所以在“本 質”上是連續的。但是數字計算機是離散的,也就是說,數字控制器的眼睛不是一直盯著被控對象看的,而是一眨一眨的。數字控制器的“手腳”也不是一刻不停地 連續動作的,而是一頓一頓的。這是數字計算機的天性使然。于是,傳統的控制理論全部“翻譯”到離散時間領域,微分方程變成了差分方程,所有方法、結論都有 了連續、離散兩套,不盡相同,但是大同小異。要是數字控制就是簡單的連續系統離散化,計算機控制也就沒有什么了不起。離散控制帶來了一些連續控制 所不可能具備的新特點,這就是:差分方程用清晰界定的時刻之間的關系來描述動態過程。回到洗熱水澡的例子,如果熱水龍頭不在跟前,而是在村外一里地的小鍋 爐房里,你只能用電話遙控,那水溫可以表示為下一分鐘水溫=0.7*現在水溫+0.2*上一分鐘水溫+0.1*再上一分鐘水溫+0.4*(5分鐘前鍋爐房龍頭開度-6分鐘前鍋爐房龍頭開度)顯 然,下一分鐘的水溫受現在水溫的影響比上一分鐘和再上一分鐘的水溫的影響要大,但鍋爐房龍頭開度要是不變,現在、上一分鐘、再上一分鐘水溫都一樣的話,下 一分鐘的水溫也應該和現在的水溫一樣。為什么用5分鐘前鍋爐房的龍頭開度呢?那是因為熱水從村外流到洗澡房要有一定的時間,這個時間就是滯后。要是把時間 向前推,那現在的龍頭開度就會影響5分鐘后的水溫。這說明了離散模型的一個重要特質:預估能力。所有預報模型都是建立在離散模型的這個預估能力上,不管是 天氣預報,還是經濟預測,還是自動控制里對有滯后的過程的控制。數字控制的另一特質是可以實施一些不可能在連續時間實現的控制規律。工業上常有控 制量的變化需要和當前的實際值有關的情況。比如對于不同的產品,反應器的轉化率總是大體在88-92%之間,沒有太大的變化,但是催化劑可以在 0.5到35ppm之間變化,采用常規的PID的話,增益就非常難設,對一個情況合適了,對另一個情況就不合適。所以催化劑需要按百分比變化率調整,而不是簡單地 按偏差比例調整。比如說,轉化率偏離1%時,催化劑要是在0.5ppm,應該調整0.05ppm;但是在15ppm的時候,就應該是 1.5ppm。這 樣,控制律就可以表示為:當前的控制量=上一步的控制量*(設定值/當前的測量值)也就是說,在被控變量高于設定值10%的情況下,控制量也增加10%;測量值和設定值一樣時,控制量不再變化。實際使用時,誰除以誰要根據測量值上升你是要控制量上升還是下降來決定,控制律也要稍微修改一下,成為當前的控制量=上一步的控制量*(當前的測量值/設定值)^k
k 次 方是用來調整控制律對“偏差”(這是已經不是差值,而是比值了,嚴格地說,應該叫“偏比”?)的靈敏度,相當于比例增益。這個控制律實際上相當于對數空間 的純積分控制,要是有興趣,對很多常見的非線性過程有相當不錯的效果,實現也簡單。然而,這是一個本質離散的控制律,在連續時間里無法實現。離散控制可以“看一步、走一步”的特性,是連續控制很難模仿的,也是在實際中極其有用的。形 形色色的控制理論再牛,沒有被控過程的數學模型,照樣抓瞎。前面的洗澡水溫就是一個數學模型。這個模型是杜撰的,當然可以很容易地給它所有模型參數。但在 實際中,模型參數不會從天上掉下來。多少科學家畢生致力于建立某一特定的物理、生物、化學或別的學科的數學模型,基本機制已經清楚的模型都不容易建立,更 不用說很多過程的基本機制或深層機制并不清楚。所以靠機理推導被控過程的數學模型是可能的,但對日常的控制問題來說,并不實際。這就是控制理論的另一個分 支—辨識—一顯身手的地方了。如果給定一個模型,也就是一個數學公式,給它一組輸入數據,模型就可以計算出對應的輸出數據。比如說,給定模型y=2*x+1,再給出x=1,2,3,4,那y就等于3,5,7,9,就這么很簡單。辨識的問題反過來,先給定一個模型結構,在這里就是y=a*x +b,已知輸入-輸出數據是x=1,2時y=3,5,要求計算出a和b。顯然,這是一個二元一次方程,誰都會解。在實際中,輸入-輸出的觀察 數據含有測量噪聲,這對參數估計的精度不利;但通常積累觀察的數據量遠遠超過未知參數的個數,不說數學,感覺上這就應該對克服測量噪聲有利,關鍵是怎么利 用這“多余” 的數據。一個辦法是把數據組兩兩配對,借眾多的二元一次方程,然后對解出來的a和b作平均。還有一個辦法就是有名的最小二乘法了,說穿了, 就是以a和b為最優化的“控制量”,使模型輸出和實際觀測值之間的累積平方誤差為最小。實際工業過程大多有多年的運行經驗,大量的數據不成問題。 對于大多數常見過程,模型的基本結構和定性性質也可以猜一個八九不離十,有了如此有力的數學“大錘”,那么應該可以砸開一切建模的硬核桃啦。且慢,世上沒 有真正的“神奇子彈”,一個問題解決了,另一個同等難度的問題又會出現。對于辨識來說,問題有好幾個。第一個問題是工業數據的閉環性。大多數重要 參數都有閉環回路控制。如果沒有閉環回路控制,那要么就是過程特性實在太復雜,簡單回路控制不了;要么就是這個參數其實不重要,飄移一點沒人在乎。然而, 一旦閉環,系統地輸入和輸出就是相關的了。這一相關不要緊,輸入-輸出數據之間的因果性就全亂了:輸出通過被控過程本身和輸入相關(這是好的,辨識就是要 測算出這個相關關系,輸出要是和輸入不相關,也沒有控制或辨識什么事了),輸入通過反饋和輸出相關;輸入-輸出成為一個閉合系統,你可以用任意多條定理或 方法證明同樣的事:由于因果不分,閉環辨識是不可能的,除非另外加入“新鮮”的激勵,比如使勁變設定值,或者在閉環回路里額外施加獨立于輸入、輸出的激勵 信號,比如“莫名其妙” 地把閥門動幾下。弄到最后,工業數據到底能用多少,就不是一個簡單的回答。有的過程常年穩定操作,像乙烯裝置,只有小范圍的微 調。這倒不是人家懶或者不求上進,而是這些裝置早已高度優化,常年操作的極其接近極限的位置,但原料和產品單一,所以工藝狀況不怎么大變。這種系統的閉環 數據用起來很吃力,常常必須做一定的開環試驗。有的過程經常在不同的狀態之間轉換(transition),或者由于不同的原料,如“吃”得很雜的煉油 廠,或者由于不同的產品,如聚乙烯裝置,這實際上就是“使勁變設定值”,是新鮮的激勵。這種系統的閉環數據比較好用,但又別的問題,下面要談到。第 二個問題是動態和穩態。動態模型的作用有兩個:一是描述需要多少時間輸出才能達到某一數值;二是輸出最終能夠達到什么數值。用股票市場舉一個例子,你需要 知道兩件事:一是這支股票最后會升到多少,二是需要多少時間才能升到那里,只知道其中一個對你并沒有太大的用處。當然為了簡化,這里假定這支股票一路飆 升,不來忽升忽降或跌買漲賣的名堂。這就要求輸入-輸出數據必須包含充分的動態和穩態信息,過于偏頗其中一方面對另一方面會不利。所以,長期穩定運行的過 程中可能包含足夠的穩態數據,但動態不足;常年不怎么穩定的過程可能包含足夠的動態數據,但穩態不足。用PID控制打比方,精確的穩態數據有助于計算正確 的比例控制增益,精確的動態數據有助于計算正確的積分和微分增益,顯然,把比例增益整對了更為重要。為了獲得精確的穩態,在辨識中常常需要等過程開環穩定 下來才進行下一步,但是問題是,實際過程有時時間常數很長,幾個精餾塔一串聯,時間常數幾個小時是客氣的,一、兩天都是可能的。這樣一來,一個不太大的模 型,十來個變量,開環試驗一做就是一、兩個星期。要是一個裝置能夠兩個星期開環,那也不需要什么控制了。第三個問題是激勵的信噪比。都說人類活動 是二氧化碳和溫室效應的主要原因,但要是你去生一堆篝火,再去高空大氣層去測一測二氧化碳和溫室效應,肯定什么也測不出來,本來多少,現在還是多少。為什 么呢?不是因為這堆篝火沒有效果,而是環境中的自然的變化遠遠超過了篝火的作用,換句話說,就是噪聲遠遠超過了信號。工業測試也是一樣,信號一定要有一定 的強度,否則是白耽誤工夫。信號強度應該使過程達到嚴重失穩的邊緣,這樣才好獲得在大范圍內都精確的模型,以便控制器不光在“風平浪靜”的情況下可以正常 工作,在“驚濤駭浪”的情況下也能使系統恢復穩定。然而,工廠以生產為主,在一切都“斤斤計較”的今天,如此大范圍的測試所帶來的產品損失甚至對設備的可 能的危害,都是工廠極不愿意見到的。理論家們設計了一個偽隨機信號,用一連串寬窄不等的方波信號,作為激勵過程的輸入,在理論上可以是過程參數的平均值不 致偏離設定值太多,但 ISO9000不僅要求產品質量的平均值要保證,產品質量的一致性也要保證。再說,偽隨機信號的脈寬不好確定,太窄了,穩態數據不 夠;太寬了,和常規的階躍信號也沒有什么兩樣。所以偽隨機信號在實際上用得很少。第四個問題是輸入的相關性。實際工業過程到了要用辨識來確定模型 的時候,都是單回路對付不了了,所以都是多變量過程。在理論上,多個輸入變量可以同時變化,只要輸入變量的變化是相互獨立的,數學上容許多個輸入變量同時 變化,而辨識可以正確地辨別模型。然而,在使用實際過程的歷史數據時,常常遇到多個輸入變量并不相互獨立的問題。比如說,在制作巧克力的過程中,香草巧克力比較“苦”,或者說不太甜,而牛奶巧克力比較甜。問題是做牛奶巧克力時,不光加糖,還要加牛奶(廢話,不加牛奶那還是牛奶巧克力嗎?)由于兩者總是同時出現,在甜度模型里,就難以辨別甜度是由于加糖的關系,還是由于加牛奶的關系。有的時候可以根據對具體過程的認識,人工地限制辨識的過程,來消除這種影響,有的時候,就不太容易了,只好不用歷史數據,專門做試驗,用各自獨立的輸入,辨識模型。
第五個問題是模型結構。模型結構包括兩個方面,一是模型的階數,二是剔除在物理上不可能的模型。辨識的模型歸根結底還是差分方程,這就有一個如何預設階數的問題。數學上有很多驗前和驗后的檢驗方法,在工業上,人們偷一個懶,改用費參數模型,也就是用一條響應曲線而不是一個方程來表述一個模型,這樣就可以繞過階數的問題。但是剔出不現實的模型還是一個手工活,需要對每一個模型仔細研究,以確定模型所描述的動態關系是否合理。數學方法還是不夠可靠。在搞模型的人中間,常常會聽到黑箱、白箱和灰箱的說法。黑箱模型就是不理會實際過程的物理、化學等性質,純粹從數學出發,假設一個模型結構,然后用種種數學方法找出一個最好的模型。白箱反其道而行之,從物理、化學等性質出發,建立機理模型。黑箱模型的好處是“放之四海而皆準”,不需要對具體過程有深入的了解。黑箱模型是一種削足適履的作法,但是如果履本身就做得比較好,具有相當的靈活性和適應性,就并不需要削足。由于黑箱模型可以自由假設模型結構,黑箱模型的處理和使用都比較方便。黑箱模型是經驗主義的, 數據里沒有包含的情況,黑箱模型無法預測。白箱模型則是“量身度造”的,反映了過程的物理、化學等性質,對實際過程的數據沒有太大的依賴,對數據中不包含的情況也能可靠地預測。但是白箱模型的結構有具體問題決定,得出的模型不一定容易使用。在實際中,人們經常在假設一個模型結構的時候考慮進大大簡化的過程機理,所以模型結構不是憑空拍腦袋出來,而是粗略地抓住了過程的基本特質,然后再用黑箱方法的“數據絞肉機”,將簡化模型沒有能夠捕捉的細微末節一網打盡。這種模型結合了黑箱和白箱的特點,所以稱為灰箱。實際建模中,純粹黑箱或白箱的成功例子很少,灰箱的成功機會就要多得多。不管什么箱,最后還是有一個如何辨識實際過程的問題。閉環辨識的好處不用多說了,問題是如何從閉環辨識中獲得有用的模型。工業上有一個辦法,沒有一個“官名”,但實際上是一個開環-反饋過程。具體做法是這樣的:先用粗略的過程知識構造一個簡單的多變量控制器,其任務不是精確控制被控過程,而是將被控變量為此在極限之內,一旦逼近或超過極限,就采取動作將其“趕”回極限內;但只要在極限內,就按部就班地做階躍擾動,測試過程特性。測試的結果用來改進控制器的模型,然后再來一遍。幾遍(一般兩遍就夠了)之后,模型精度應該很不錯了。這個方法比較好地解決了辨識精度和過程穩定性的要求。西游記里最好看的打斗是孫悟空大戰二郎神那一段。孫悟空打不過就變,二郎神則是“敵變我變”,緊追不舍,最后把個無法無天的頑皮猴子擒拿歸案。用控制理論的觀點看,這“敵變我變”的本事就是自適應控制控制器結構根據被控過程的變化自動調整、自動優化。自適應控制有兩個基本思路,一是所謂模型跟蹤控制,二是所謂之校正控制。模型跟蹤控制也叫模型參考控制,在概念上對人們并不陌生,那陣子,經常樹立各種榜樣,目的就是要在發出號召時,我們比照榜樣的行為,盡量調整自己的行為,使我們的行為了榜樣的行為接近。這就是模型跟蹤控制的基本思路。模型跟蹤控制在航空和機電上用得比較多,在過程控制中很少使用。自校正控制的思路更接近人們對自適應的理解。自校正控制是一個兩步走的過程,首先對被控過程作實時辨識,然后再辨識出來的模型的基礎,實時地重新構造控制器。思路簡單明了,實施也不算復雜,但自校正控制在一開始的歡呼后,并沒有在工業上取得大范圍的成功,原因何在呢?原因之一是閉環辨識。雖然自校正控制不斷改變控制器的參數,在一定程度上打破了固定增益反饋控制對輸入、輸出帶來的因果關系,但是因果關系還是存在,還是相當強烈,對辨識模型的質量帶來影響。原 因之二是所謂“協方差爆炸”。數學上當然有嚴格的說法,但簡單地說,就是自校正控制器的目的當然還是是系統穩定下來,但是在系統越來越穩定的過程中,自校正控制器對偏差和擾動的敏感度越來越高,最后到“萬籟俱靜”的時候,敏感度在理論上可以達到無窮大,然而,這時如果真的擾動來了,控制器一下子就手足無措 了。原因之三是實際過程的復雜性。在辨識實際過程時,最重要的步驟不是后面的“數學絞肉機”,而是對數據的篩選,必須把各種異常數據剔除出去,否則就是“垃圾進來,垃圾出去”。但是,要實時、自動地剔除異常數據,這個要求非同小可,比設計、投運一個自校正控制器費事多了。這是自校正控制在實際中成功例子有限的最大原因。自動控制從一開始就是以機電控制為主導的。60年代數學派主導了一段時間后,70年代化工派開始“小荷才露尖尖角”。自校正控制已經有很多化工的影子,但化工派的正式入場之作是模型預估控制(model predictive control,MPC)。這是一個總稱,其代 表作是動態矩陣控制(dynamic matrix control,DMC)。DMC是Charlie Cuttler的PhD論文,最先在殼牌石油公司獲得應用,以后Cuttler自立門戶,創辦DMC公司,現在是Aspen Technology公司的一部分。數學控制理論非常優美,放之四海而皆準,但是像老虎一樣,看起來威猛,卻是干不得活的,干活畢竟靠老牛。DMC的成功之處在于應用偽理論,將一些本來不相干的數學工具一鍋煮,給一頭老老實實的老牛披上一張絢爛的老虎皮,在把普羅大眾唬得一愣一愣的時候,悄悄地把活干了。
DMC 基本就是把非參數模型(在這里是截斷的階躍曲線)放入線性二次型最優控制的架構下,成功地解決了解決了多變量、滯后補償和約束控制問題。多變量的含義不言自明,滯后放在離散動態模型下也很容易實現預測,這也沒有什么稀奇。稀奇的是,DMC用“土辦法”解決了約束控制問題。所有實際控制問題的控制量都有極限。 加速時,油門踩到底了,那就是極限,再要多一馬力也多不出來了。龐特里亞金的最大值原理在理論上可以處理約束控制問題,在實際上很難求出有用的解來,最速控制是一個特例。那DMC是怎么解決約束控制問題的呢?當某個控制量達到極限時,這個控制量就固定在極限值上了,這就不再是變量,而是已知量,把已知量代進去,將控制矩陣中相關的行和列抽掉,重新排列矩陣,剩余的接著求解。這也沒有什么稀奇。令人頭疼的是如何處理輸出約束的問題。DMC把線性規劃和控制問題結合起來,用線性規劃解決輸出約束的問題,同時解決了靜態最優的問題,一石兩鳥,在工業界取得了極大的成功。自卡爾曼始,這是第一個大規模產品化的 “現代控制技術”,Cuttler在DMC上賺了大錢了,在“高技術泡沫”破碎之前把公司賣給Aspen Technology,更是賺得缽滿盆溢。他女婿 是一個醫生,也不行醫了,改行搞過程控制,跟著Cuttler干了。
DMC的英明之初在于從實際需要入手,不拘泥于理論上的嚴格性、完整性,人參、麻黃、紅藥水、狗皮膏藥統統上,只要管用就行。在很長一段時間內,DMC的穩定性根本沒有辦法分析,但是它管用。搞實際的人容易理解DMC的歪道理,但搞理論的人對DMC很頭疼。
DMC 打 開局面后,一時群雄蜂起,但塵埃落定之后,如今只有三家還在舞臺上。Honeywell的RMPCT(Robust Multivariable Predictive Control Technology)是一個中國同胞開創的,他的獨特 之處在于引入“漏斗”概念。大部分控制問題都有一個特點:如果擾動當前,有一點控制偏差是可以容忍的;但時間一長,控制偏差應該消除。換句話說,這就像一個時間軸上對偏差的橫放的漏斗。這個概念對復雜過程的MPC參數整定非常有用,已經在別的公司的產品上也出現了。第三家就是方興正艾的 Pavilion Technology的Perfecter。美國公司有一個壞毛病,喜歡對好好的產品取一個不倫不類的名字。Perfecter的特色 是將神經元技術(neuralnet)和MPC結合起來,所以可以有效地處理非線性過程。神經元模型沒有什么神秘的,說穿了,就是具有某些特定復雜形式的回歸模型,但是比回歸模型更不適宜內插和外推。DMC也號稱可以處理非線性,因為即使階躍響應曲線拐上幾拐,DMC照樣囫圇吞棗,可以計算控制輸出來, 這就是非參數模型的好處。但是問題在于DMC的結構框架畢竟還是線性的,階躍響應的概念根本不適合非線性過程,因為非線性響應和輸入的絕對數值、相對變化 甚至變化方向有關,甚至可以更復雜,所以所謂DMC可以處理非線性是放空炮。如果實際過程的非線性不強,根本可以忽略它;如果實際過程有很強的非線性,DMC肯定抓瞎。那么, Perfecter用了神經元,是不是就所向披靡了呢?也不盡然。Perfecter繼承了DMC不問理論、唯實用是問的好 傳統,但是Perfecter 的基本骨架還是線性的MPC,只是用靜態的神經元模型時不時地作一個線性化。Perfecter在理論上乏善可陳,在實用上還是管用的。前面說到PID在當今過程控制中占至少85%,那MPC就要占14.5%了。計算機對自動控制的影響要是只局限在離散控制理論上,那也就不是計算機控制了。事實上,80年代以后新建的化工廠,基本都采用計算機控制。說是可以采用比 PID更先進的技術,實際上,絕大多數還是在用PID,加上順序控制,按部就班地執行一系列動作。那計算機控制的好處到底在什么地方呢?過程控制的實際裝置最初全是直接安裝在現場的,后來出現氣動單元儀表,可以把壓縮空氣的信號管線從現場拉到中心控制室,操作工可以在中控觀察、控制全廠了。電動單元儀表防爆問題解決后,中控的使用更加廣泛。操作工坐在儀表板前,對所轄工段的情況一目了然。但是隨著工廠的增大和過程的復雜,儀表板越來越長,一個大型化工廠隨隨便便就可以有上千個基本控制回路和上萬個各種監控、報警點,儀表板非有幾百米長不可,這顯然是不可能的。生產過程的高度整合,使一兩個人控制整個工廠不光滿足削減人工的需要,也對減少 通訊環節、綜合掌控全局有利。所以,計算機顯示屏就不光是酷,而是必須的了。另外,計算機控制使現場儀表(閥門、測量變送器等)的自檢成為可能,大大提高了系統的可靠性。于是,計算機控制就是不花沒人性了。計算機控制從一開始的集中控制(用 IBM的大型機)到現在的分散控制(所謂Distributed Control System,DCS)走過一個螺旋形上升的過程。集中控制的要害在于風險集中,要是大型機掛了,全廠都要失控。分散控制將全廠劃分為若干條條塊塊,用以微處理器為基礎的一個控制用局部網來分散控制,主要子系統都是實時冗余的,故障時在第一時間內切換到備用系統,主系統和備用系統在平時定期互相自檢、切換,以保證可靠。分散控制顯然大大提高由于計算機本身引起的可靠性。但是現場儀表和接線終端 (field terminal assembly,FTA)不是冗余的,整個可靠性鏈還是有漏洞。另外,控制局部網的同軸電纜長度有物理限制,FTA到DCS的長度也有物理限制,所以最后分散控制還是不怎么分散,全是集中在中控室附近或地下室里。不過DCS在地理上的集中,并不妨礙其在邏輯上的分散,只要不是一把火把 DCS的機房燒掉,部件可靠性的問題還是可以很好地隔離在小范圍。既然DCS是一個局部網,那就有一個通信協議的問題。DCS基 本上用兩大類型的通信協議:輪詢(polling)和中斷。輪詢由中心控制單元輪流查詢所有子系統,不管有沒有數據更新,到時候就來問一遍,所以不管什么時候,系統地通信流量都很高,但是恒定。中斷方式正好相反,子系統自己先檢查一下,如果數據沒有變化,就不上網更新;直到數據有變化,再上網“打一個招呼”。這個方式的平時通信流量較低,所以網路帶寬要求較低。但是生產過程發生異常時,大量警報數據蜂擁而來,如果帶寬不夠,就會發生通信阻塞的問題。所以, 中斷和輪詢到最后對帶寬的要求是一樣的,因為誰也不能承擔生產過程異常時通信阻塞的后果。二十年前,Honeywell是第一個吃DCS這個螃蟹 的公司,今天Honeywell仍然是行業里的老大,盡管其設備昂貴,被戲稱為Moneywell。當年的DCS全是量身度造的硬件、軟件。今天在“開放 系統”(open architecture)的大潮里,DCS的制造廠家都紛紛將控制臺和計算、網絡控制單元轉向通用的WINTEL或UNIX平臺,自 己專注于工控專用裝置(如基本控制裝置,包括I/O)和系統的軟件整合。但是這帶來了新的問題。通用/商用硬件、軟件的可靠性常常不能滿足24小時、365天的連續運轉要求。對于大多數IT來說,機子壞了,兩小時內換上就是很快的了。但是對于生產過程來說,這是不可容忍的。開放結構容許將DCS和經營、管理、辦公網絡相連接,極大地提高了信息交流速度和深度、廣度,但也帶來了網絡安全問題,緊接著就是DCS前面豎起一道又一道的防火墻,把數據分享和遠程操控壓縮到最低。另外就是WINTEL夜以繼日的不斷更新換代,使硬件、軟件的穩定性十分糟糕,沒有過多少時間,又要升級,又是頭疼。這是DCS的第二個螺旋形上升,只是現在還是盤旋多于上升。計算機控制的領地也在擴大,類似USB那樣的技術也開始用于數字化的儀表。過去的儀表都必須把信號線拉到接線板 (marshalling panel)上,然后再連到FTA上,這樣同樣遠在百把米外的10臺儀表,需要并行拉線,很浪費。用了類似USB的現場總線(field bus),各個儀表可以“掛”在總線上,然后一根總線連到DCS就可以了,大大節約拉線費用和時間,對系統(如加一個測量用的變送器或控制閥)的擴展也極為方便。
DCS的最大優越性是可編程。這不是簡單的像 PLC(programmable logic controller,可編程序邏輯控制器,多用于機電控制)的梯形邏輯那樣編程,而是可以像C、FORTRAN那樣“正規”的編程。沒有在IT干過,只能和學校里計算機語言課程和大作業的程序相比。DCS編程和平常的編程相比,還是有一些特點的。首先,DCS的程序屬于“再入”式,也就是定時反復運行的,而不是一次從頭到底運行就完事的。所以DCS程序可以在運行完畢時在內存里存放數據,到下次運行時再調用,形成所謂“遞歸”運算。這既是優點,也是缺點,要是別人在你兩次運算中間把那個中間數據更改了,你就慘了,找債主都不容易。
DCS程序的特色是實時,所以其執行非常取決于一系列事件在時間上的順序。時序上要是搞岔了,老母雞也就變鴨了。問題是,分散控制要求越分散越好,不光是可靠性,在系統資源的調度上,分散了也容易使系統的計算負荷均勻。這樣一來,一個應用程序包常常將一個巨大的程序打散成很多小程序,各自的時序和銜接就要非常小心。和學術型控制計算程序最大的不同,或許還在于對異常情況的處理。一個多變量控制問題在實際上常常會有部分變量處于手動控制,而其余變量處于自動控制的情況。 這在理論上是一個麻煩,在實際上是一個噩夢。不光要考慮所有的排列、組合,還要考慮所有情況平順的切入、切出,不同模式之間的切換。還有就是要考慮異常情況下如何安全、自動地退出自動控制,交還手動控制。有時操作規程上的一句話,程序寫寫就是一頁。如果操作規程上來一句“視情處理”,那就更慘了。在所有控制程序中,控制計算通常不超過30%,20%為人機接口功能,而50%為異常情況處理。計算機控制不是因為更先進、更有效的人機界面才開始的。從一開始,人機界面 就面臨一個管中窺豹的問題。計算機的CRT顯屏只有這么大,不可能 “一言以蔽之”,在一瞥之中把所有的過程信息盡收眼底。計算機可以不斷地換屏,分段顯示其他裝置、工段的信息,但是把所有的工段、裝置分別用各自的畫幅表示,如果沒有有效的組織,找都不容易找到,就像在同一個目錄里雜亂 無章地放上百把個文件一樣。分級的菜單是傳統的解決辦法,但是要逐級上去再逐級下來,很費時間,情急之中,往往來不及更換。大鍵盤上short cut鍵 可以“一鍵調出”,但需要死記硬背,這可不是幾個、十幾個畫幅,而是上百個甚至更多。很長時間以來,如何有效地在畫幅之間導航,可以在最短時間和最少點擊內,不需要死記硬背,就可以直觀地找到所需要的畫幅,一直是一個令人頭疼的問題。人機界面設計的另一個問題是色彩。還記得DOS 2.0時代的WordStar嗎?那是黑底綠字的。那時候,CRT亮度不足,壽命也糟糕,黑底可以延長壽命,綠字可以增加反差,幫助閱讀,反正機房是暗暗的,黑底并不傷眼睛。到了WordPerfect 5.0的時候,就是藍底白字了,字和背景之間的反差大大減小,藍底也比較適宜于在明亮的房間內使用。到了Word的 時代,沒有昏暗的機房了,基本上都用像紙上寫字一樣的白底黑字了,再用黑底綠字,太傷眼睛。中控室計算機顯示也經歷了類似的旅程。早期DCS的顯 示都是黑底綠字的,到了用 WINTEL或UNIX的時代,很多人出于習慣,仍然采用黑底綠字,但是現代人機工程研究表明,淺色背景大大減低眼睛的疲勞, 在明亮室內的燈光對屏幕的反光也小,所以控制室的顯示開始向淺灰背景進化了。人機工程研究同時發現,色彩可以作為過程信息的一部分,天下太平的時候,應該用最不顯眼的灰色,所有的圖形、數據都用不同深淺的灰色來表示,只有在過程參數越限或報警時,才采用彩色顯示,這樣可以一下子就把操作工的注意力吸引到需要的地方。但是,出于習慣思維,很多地方還是大量采用各種色彩表示不同的設備狀態和參數,即使是正常狀態也是一樣。這樣在平日里色彩繽紛很好看,但在異常情況時,不容易在萬馬軍中找到上將的首級,實際上是舍本逐末。顯示器的布置也很有講究,少了當然不行,也不是越多越好,一個操作工的視界的上下左右有一定的范圍,控制臺的色彩、構造、照明都不能想當然的。這不是助長修正主義,而是保持操作工最有效地控制生產過程的要求。傳統上,如果操作工不抱怨,控制回路的性能就是可以接受的,除非你想精益求精,一般不會去沒事找事,重新整定參數。在對經濟效益斤斤計較的今天,生產過程的工藝條件被推到極端,對控制性能提出極大的挑戰,控制回路必需時時、處處都在最優狀態。隨著控制回路數的迅速增長,單靠人工觀察,已經難于隨時掌握所有控制回路的性能狀況了。控制回路性能評估技術應運而生。理論上,對一個過程可以設計一個最優控制,其中一種就叫最小方差控制。這其實是線性二次型最優控制的一種,控制作用比較猛,但是這是理論上的極限,控制方差不可能再小了。90年代時,理論界提出一個方法,可以用閉環辨識的方法,不辨識模型,而是直接確定理論上的最小方差,然后將實際方差和理論上的最小方差相比,判別控制回路是否需要重新整定。這個方法開創了控制回路性能評估的先河,但是在實用上不容易排除不利影響,應用不多。然而,不和理論上的最優值比較,而是和實際上的理想值比較,就可以繞過很多麻煩的理論問題。比如說,流量回路應該在1分鐘內安定下來,那理想值就是1分鐘。通過快速富利葉變換和頻域分析,可以將理論性能和實際性能相比較,迅速確定回路的當前性能狀況。最要緊的是,這可以用計算機自動采集數據,自動計算,每天早上(或隨便什么時候)給出報表,控制工程師可以一目了然,哪些回路需要重新整定,哪些沒有問題,可以有的放矢。實時頻域分析還可以將所有以相近頻率振蕩的回路羅列出來,接下來控制工程師就可以按圖索驥,找出害群之馬了。控制回路性能評估的下一步當然就是自動整定。這實際上是一個簡化的、斷續運行的自校正PID控制器,在理論上已經沒有問題,但實用上還有很多可靠性問題沒有完全解決,現在產品不少,但實用的還是不多。對控制回路性能評估的更進一步,當然就是對生產過程的故障診斷了。故障就是異常情況,異常就是和正常不一樣。所以故障診斷的核心在于如何探測這“不一樣”。故 障總是有蛛絲馬跡的,問題在于工業過程的數據量太大,在大海里撈針,等撈到的時候,常常已經時過境遷了。在數據分析中,PLS(其實是 Peojection to Latent Structure,而不是一般所認為的Partial Least Square)和主元分析 (Principal Component Analysis,PCA)是很流行的方法。PLS和PCA將眾多相關的變量歸攏到少數幾個“合成”的變量, 這樣一個有大量變量的復雜大系統就可以簡化為一個小系統,就從大海撈針變為碗里撈針了。撈出來的針不再是單個的變量,而是變量的組合。這和實際是相符的, 故障的早期征兆常常是若干變量的組合,而不能單從一兩個變量上看出來。
PLS和PCA還可以和圖形方法結合起來使用。比如說,將那些合成變量標稱化,就是除以正常值,那所有合成變量的標稱值就是1。把所有變量畫成“蜘蛛圖”(spider chart),每一個蜘蛛腳代表一個合成變量,由于合成變量的標稱值都是1,蜘蛛圖就是大體為圓的。如果哪一個腳出現變化,蜘蛛就不圓了,非常容易看出異常來,接下來就可以有的放矢地尋找故障的早期跡象了。圖形數據分析的另一個路子是所謂co-linear分析。這是IBM早年琢磨出來的一個東西,理論上簡直沒有東西,但要求換一個思路,正所謂退一步海闊天空。平常的數據點,三維以上就沒法畫了。但是如果把三維空間的所有數軸畫成平行線,而不是常見的直角坐標,那三維空間里的一個點,就是連接三根平行線的一根折線。如果僅此而已,那也就是一個簡單但愚蠢的數學游戲。平行坐標系的妙處在于,平行線可以盡著畫,所以5維、20維、3千維,只要紙足夠大,都可以畫,而且可以看見,而不是只能想像。平行坐標只有一個缺點,就是只能表述離散的點,而難以表述連續的線或面,但這對計算機采集的數據來說,不是問題,計算機采集的數據本來就是離散的點。這樣,用平行坐標把大量的數據點畫成折線簇,可以很直觀地看出數據中的模式來。故障診斷的另一個思路是對整個過程進行辨識。辨識出來的模型表述系統的行為,故障當然就是行為的改變,所以將實時辨識出來的模型和正常模型相比較,就可以判斷系統是否出現異常或故障。計算機和模型的另一個用處就是仿真。仿真(simulation)也叫模擬,但是模擬容易和模擬電路(analog circuit)搞混,所以現在叫仿真多了。只要對實際過程有一個足夠精確的模型,計算機是可以相當精確地模仿實際系統的行為的。仿真有靜態仿真和動態仿真。靜態仿真基本上就是解一個巨大的非線性聯立方程組,描述空間分布的微分方程也被有限元方法分解了。現代靜態仿真已經可以做得相當精確,但這也是在多年結合實際過程數據“磨合”模型的基礎上才能做到的。靜態仿真大量用于工藝設備設計計算,但是對研究實際過程的真實行為的作用有限,因為對整個生產過程和工藝的仿真要考慮進各個設備動作的時間和控制回路的影響,這些靜態仿真是無法體現的。動態仿真要解同樣巨大的聯立微分方程組,由于要達到實時或更快,一般只能大大簡化,否則計算速度跟不上。希望有朝一日,動態仿真可以達到靜態仿真同等的精度,而不必擔心損失計算速度。仿真在工業 上十分有用。現代化工廠越來越穩定,越來越安全,很多操作工一輩子也沒有遇到過真正危險的情況。但沒有遇到過不等于不會遇到,操作工必須接受足夠的訓練, 只有這樣,才能當遇到危險情況時,首先能及時、正確地識別故障,然后才能及時、正確地作出反應。這就要靠仿真訓練了。現代化工廠也在不斷地拓展工藝參數的極限,經常需要做各種各樣的試驗。有了仿真,就可以預先驗證試驗的構思,和驗證對緊急情況的處理。仿真更是控制工程師的好幫手,新的控制回路先放到仿真上試一下,得出初始整定參數,驗證異常情況的處理能力,然后再放到真家伙上,可以避免很多不必要的驚訝。仿 真的一個遠親是實時最優化(real time optimization,RTO)。對于斤斤計較的現代制造業,實時最優化當然是求之不得的。實時最優化就是把整個生產過程當一個大的實時仿真來運算,實時(實際上是每小時)計算出最優工況。想法是好的,困難是多的。首先,那么大一個方程組收斂不容易,要劃成很多條條塊塊,分別求解,然后拼起來。問題就出在“拼”上,邊界條件碰不攏怎么辦?模型總是有相當的簡化,其中有些參數必須和實際測量值符合,有些就沒有實際測量值對應,就是“經驗系數” (fudge factor)了。這些經驗系數就是承擔收拾爛賬的,邊界碰不攏,就調整經驗系數,使他們對齊。問題是,好多時候,這一招也不靈,所以實時最優化的喇叭吹得很響,真正用起來的很少,花了大錢最后放棄的也不在少數。和打仗一樣,贏得戰斗的是武士,不是武器。控制工程師是控制回路成功與否的關鍵,而不是價值千金的計算機,或者“放之四海而皆準”的數學控制理論。在加拿大,化工系的控制“專業”要選滿所有化工學分,然后再加選控制學分,所以要求比一般的化學工程師還要高一點。選滿化工學分是很重要的一點,如果沒有對化工的話語權,那化工控制也別混了,這一點是國內(至少是二十多年前我讀大學的時候)所欠缺的。這就像醫生一樣,只有對生理、病理有深刻的了解,對病人的具體情況有深刻的了解,才有可能可靠地判斷病情,才能可靠地開方治病。只會看單抓藥,這就不是醫生,而是藥劑師了。在實際中,控制工程師對工藝過程的動態行為的理解至少應該和工藝工程師同等,和操作工相當。事實上,很多時候,控制工程師的使命就是將工藝工程師和操作工的經驗和知識具體化、自動化了,如果你不能深刻理解,那如何實現呢?一個優秀的控制工程師可以在操作工不在的時候,當班操作;可以在工藝工程師不在的時候,做出工藝決定。但是控制工程師畢竟不是工藝工程師,也不是操作工。控制工程師應該掌握前面說到的所有領域,從數學控制理論,到計算機網絡,到人機工程,到工藝和儀表知識。這個要求很高,但不是不切實際的。這些是攬這個瓷器活所必需的金剛鉆。這也是為什么現在工業界熱衷于招雇具有碩士學位的控制畢業生,因為本科的幾年已經很難學習必須 的知識了。至于博士,那還是有眼高手低的嫌疑,呵呵。專業知識只是成功的一面,控制工程師必須善于與人打交道。工藝工程師比較好說,畢竟有類似的背景,但操作工是控制系統成敗的關鍵,如果無法取得操作工對你個人和你的控制系統的信任和合作,那控制系統很可能就是永久性地被關閉,操作工寧愿手工控 制,出了問題還是因為控制系統不可靠,你就等著里外不是人吧。但是取得操作工的信任和合作后,事情會向相反的方向發展。操作工會主動向你提出改進建議,或新的想法,主動找機會幫你試驗新的功能,主動拓展控制系統的性能極限。如果說顧客是上帝的話,操作工而不是部門主管才是控制工程師的上帝。控制工程師也要善于和頭兒打交道,畢竟搞項目、要錢的時候,還是要找頭兒的。打報告、作報告、項目控制和管理、和供應商打交道,這些都是必備的技能。工藝工程師也是工程師,但用軍隊的比方來說,他們人多勢眾,更像常規部隊,習慣大兵團協同作戰。控制工程師則像特種部隊,人數少,行止怪癖(至少對工藝的人來說,他們永遠弄不明白控制的人到底在做什么,怎么做出來的),從規劃到實施到維修,全一手包辦。控制理論的發展歷程就是一個尋找“放之四海而皆準”的“神奇子彈”的歷程,終極目標是可以用一個統一的數學控制工具去“套”任何一個具體的控制問題,而不必對具體過程的物理、化學等特性有深入的理解。控制理論的每一次重大進展,都給人們帶來希望,“這一次終于找到了”。但每一次希望都帶來了新的失望,新方法、新工具解決了老問題,但帶來了新的局限,有的時候甚至轉了一圈兜回去了。新的局限往往比老問題更棘手,需要對過程的理解是更多而不是更少。矛和盾就是這么著在螺旋形上升中斗法。但是現實常常和人們的認識背道而馳。在商業化的大潮中,推銷先進控制算法的公司拍胸脯擔保可以如何如何用“萬能”的數學控制工具解決一切控制問題,那些絢爛的老虎皮也確實照得不明就里的人眼花繚亂,心旌飄蕩;公司的頭兒也一口吃進,畢竟“技術萬能論”不僅在美軍中盛行, 在北美的公司文化中也是大行其道。直到有一天,人們發現永動機依然是神話,人還是不能在水上步行,方才想起來,原來世上是沒有這等好事的。不過這是題外話了。本來就知道這個系列會又臭又長,但是既然寫了,就寫完吧,希望沒有占用太多的帶寬,希望沒有浪費大家的時間,希望給對自動控制有興趣的朋友提供一點入門的知識,希望給同好提供一些從實際中得到的經驗,錯誤的地方肯定很多,敬請原諒,同時謝謝閱讀。
|