當(dāng)今的冶金、石化、化工、電力、水泥、汽車、制藥、食品與飲料等工業(yè)的自動化系統(tǒng),幾乎毫無例外的采用分布式控制系統(tǒng)。隨著電子技術(shù)、通訊技術(shù)和軟件技術(shù)的發(fā)展,分布式系統(tǒng)也發(fā)生了很大的變化,下面就這個題目進(jìn)行一些探討。
集中式系統(tǒng)
早期的儀表控制系統(tǒng)和電氣控制系統(tǒng)都是集中式的,原因是工業(yè)化大規(guī)模生產(chǎn)線還未形成,控制的物理面積比較小,所以沒有這種需求。設(shè)備的控制都是獨(dú)立的,控制系統(tǒng)都安裝在設(shè)備附近,輸入/輸出的走線距離,通常不會超過二十米,而且設(shè)備與設(shè)備之間、設(shè)備與車間/廠級之間也沒有通信要求,設(shè)備與操作人員通過按鈕、指示燈來進(jìn)行交互,功能比較簡單,設(shè)備的加工和制造的產(chǎn)品,屬于“大批量,少品種”的狀態(tài)。因此,自動化的控制水平處于初級階段。
分布式系統(tǒng)輸入/輸出系統(tǒng)
隨著流水線、自動線、生產(chǎn)線的發(fā)展和擴(kuò)大,對自動化控制系統(tǒng)的要求也隨之提高。因?yàn)樵瓉淼妮斎?、輸出的走線距離為十幾米、幾十米,后來的要求提高到上百米,甚至幾百米,所以帶來的問題有兩個:一是輸入、輸出的距離過遠(yuǎn),信號衰減過大,導(dǎo)致了誤動作,甚至無法工作(現(xiàn)在的接線距離通常限制在四百米以內(nèi));二是輸入、輸出線都采用并行接法,隨著距離的增加,電纜的費(fèi)用也不斷增加,而且給后來的校線、調(diào)試、運(yùn)行和維護(hù)都帶來問題,所以使得項(xiàng)目的整體擁有成本(TOC)大大的提高了。
為了解決上述問題,自動化制造廠家推出了結(jié)構(gòu)稱為遠(yuǎn)程輸入/輸出系統(tǒng)(Remote Input/Output System),它的特點(diǎn)是CPU機(jī)架與輸入/輸出模塊(輸入/輸出機(jī)架)先進(jìn)行物理上的分離,也就是用于遠(yuǎn)程輸入/輸出點(diǎn)的輸入/輸出模塊不再安裝于本地機(jī)架,而是安裝于遠(yuǎn)程機(jī)架。本地機(jī)架與遠(yuǎn)程機(jī)架采用遠(yuǎn)程通訊電纜來連接,遠(yuǎn)程機(jī)架的輸入/輸出模塊再連接周圍的輸入/輸出點(diǎn)。這樣就把原先的并行電纜,改變成現(xiàn)在的串行電纜(遠(yuǎn)程電纜),減少了接線成本。(理論上講,把并行連接改為串行連接,系統(tǒng)的可靠性是下降了,這也是結(jié)構(gòu)變化所要付出的代價吧)
我們要知道,這種結(jié)構(gòu)上的變化是有技術(shù)含量的。因?yàn)檫h(yuǎn)程輸入模塊在了輸入信號后,要經(jīng)過處理,先把它們轉(zhuǎn)換成數(shù)字信號,再把它們變成一種數(shù)據(jù)幀,常被稱之為某種特定的“協(xié)議”,具有規(guī)定的格式,然后經(jīng)過遠(yuǎn)程分站模塊、遠(yuǎn)程通訊電纜,到遠(yuǎn)程主站模塊,傳送到CPU站進(jìn)行處理,處理后的結(jié)果再經(jīng)過遠(yuǎn)程主站模塊、遠(yuǎn)程電纜,傳回給遠(yuǎn)程分站模塊,經(jīng)“翻譯”后,由遠(yuǎn)程站上的輸出模塊輸出給執(zhí)行機(jī)構(gòu)。
我們即得益于遠(yuǎn)程系統(tǒng),也受制于遠(yuǎn)程系統(tǒng)。遠(yuǎn)程系統(tǒng)中的遠(yuǎn)程主站模塊、遠(yuǎn)程電纜、遠(yuǎn)程分站模塊成了整個系統(tǒng)的軟肋,所以要格外重視。我們考慮問題的原則是:擔(dān)心哪部分弱,容易出問題,就加強(qiáng)哪部分的實(shí)力。比如說:擔(dān)心遠(yuǎn)程主站出問題,我們就對主站模塊做冗余;擔(dān)心電纜出問題,就對電纜進(jìn)行冗余;擔(dān)心分站出問題,就對分站模塊冗余。應(yīng)該說這種系統(tǒng)都是可以實(shí)現(xiàn)的,考慮到系統(tǒng)的造價問題,很多廠家采取了折衷的方案:遠(yuǎn)程主站、遠(yuǎn)程分站各為一個模塊,但有單口和雙口之分,用于連接一根或兩根遠(yuǎn)程電纜,實(shí)現(xiàn)了電纜冗余。
冗余的電纜也有不同的工作方式,無外乎有以下幾種方式:兩纜同時工作,把信號比較后,再進(jìn)行輸出;兩纜同時工作,僅取一個信號進(jìn)行輸出;兩纜一用一備,直到用的一根出了問題,才進(jìn)行切換;兩纜一用一備,按時間間隔進(jìn)行切換。用與備的切換完全由系統(tǒng)控制,自動進(jìn)行,用戶一般無需任何操作。至于廠家采用哪種方式,即要考慮實(shí)現(xiàn)的技術(shù)難度,也要考慮實(shí)現(xiàn)的商業(yè)成本。各自都有各自的道理,這就是一種選擇吧,也是一種差異化競爭??傊瑢τ谟脩舳?,雙纜總是比單纜要可靠性高,心里覺著塌實(shí)。
以上談的是硬件部分,下面再說說軟件部分。因?yàn)楣I(yè)現(xiàn)場的環(huán)境比較惡劣,比如:灰塵、震動、沖擊、電壓波動等,最大影響就是來自現(xiàn)場的大設(shè)備,如:大電機(jī)的啟動和停止,會帶來一系列的連鎖反應(yīng):接觸器的吸合與斷開,軟驅(qū)動器啟動和停止,變頻器的運(yùn)行和停止。還有一些高壓、中壓開關(guān)柜的運(yùn)行等,都帶有很強(qiáng)的電氣干擾和電磁輻射。而它們通常也都與自動化系統(tǒng)的控制柜放在一起,而它們非常容易對低電平的通訊信號產(chǎn)生影響。因此,抗干擾就成了工業(yè)通訊要解決的首要難題。
為了解決現(xiàn)場的干擾問題,除了在物理上要采用帶屏蔽的電纜、屏蔽線單端接地、信號線兩端加接終端電阻、動力線與信號線分開布線或者保持一定的間隔、自動化系統(tǒng)與其他系統(tǒng)分開接地外,還要在通信的協(xié)議上下功夫。前面提到:遠(yuǎn)程協(xié)議都有規(guī)定的幀格式,而其中的一部分就是要對傳送數(shù)據(jù)的周期性進(jìn)行檢驗(yàn),確保傳輸?shù)倪^程準(zhǔn)確無誤,這部分內(nèi)容被稱為FCS(Frame Check Sequence)-幀檢測序列,它是一種檢測算法,專門用于通訊數(shù)據(jù)的檢查。常用的算法有兩種:循環(huán)冗余碼校驗(yàn)(CRC:Cyclic Redundancy Check),和縱向冗余碼校驗(yàn)(LRC:Longitudinal Redundancy Check),有8位、16位和32位之分,位數(shù)越多,校驗(yàn)?zāi)芰驮綇?qiáng)。
校驗(yàn)的基本原理是:發(fā)送數(shù)據(jù)之前,在發(fā)送端系統(tǒng)要對傳送的數(shù)據(jù)幀中的數(shù)據(jù)進(jìn)行計(jì)算,比如CRC的運(yùn)算,把得出的結(jié)果放在FCS段,使之成為一個數(shù)據(jù)幀進(jìn)行傳送;數(shù)據(jù)經(jīng)過傳送,并被目的站接收后,在接收站對接收數(shù)據(jù)幀的數(shù)據(jù)進(jìn)行運(yùn)算,當(dāng)然是和出發(fā)時的相同運(yùn)算,得出的結(jié)果再和接收數(shù)據(jù)幀中的FCS內(nèi)容進(jìn)行比較,如果一致則說明傳輸無誤,這一幀的傳送任務(wù)完成,進(jìn)行下一步的工作;如果不一致,則說明傳輸有誤,告訴傳送源請求數(shù)據(jù)重發(fā)。發(fā)送端通常會有一個重發(fā)的次數(shù)限制,比如3次,如果連續(xù)發(fā)生錯誤就說明線路有嚴(yán)重故障,甚至已經(jīng)斷開,系統(tǒng)會停止再試,馬上向CPU和上位機(jī)操作員報(bào)警。
集散控制系統(tǒng)
在過程控制行業(yè),也稱為儀表控制行業(yè),也從分立的儀表控制發(fā)展到了集成的控制系統(tǒng),被稱之為dcs(Distributed Control System)系統(tǒng)。我國在引進(jìn)這種技術(shù)時,為了闡述分散控制、集中管理這個理念,把它翻譯成:集散控制系統(tǒng),而不是分布式控制系統(tǒng)。但我們從英文的內(nèi)容看到:DCS是分布式控制系統(tǒng)的簡稱,強(qiáng)調(diào)的是“分布”的概念。
什么是分布的真正含義呢?從概念上說,所謂分布就是要分散危險(xiǎn),也就是說,不能因?yàn)橄到y(tǒng)中的某個元件或部件出問題,而造成整個系統(tǒng)的癱瘓。從結(jié)構(gòu)來看,就是把控制系統(tǒng)比較重要的部分,如CPU,分散到幾個CPU來實(shí)現(xiàn);如存儲器,分散到多個模塊執(zhí)行;如總線,變成冗余的網(wǎng)絡(luò)進(jìn)行;如操作系統(tǒng),變成基于實(shí)時網(wǎng)絡(luò)、多任務(wù)操作系統(tǒng)。
下面就對比我們非常熟悉的PC機(jī),來理解DCS系統(tǒng)的結(jié)構(gòu)。當(dāng)老師介紹PC機(jī)的構(gòu)成時,可以知道是由中央處理器(CPU),內(nèi)部存儲器(RAM),外部存儲器(硬盤),內(nèi)部總線(ISA,VESA,PCI等)和輸入設(shè)備(鍵盤、鼠標(biāo)、光驅(qū)、攝像頭等),輸出設(shè)備(顯示器、打印機(jī)、繪圖儀等)等構(gòu)成;而DCS系統(tǒng)就是把上述的部件,變成網(wǎng)絡(luò)中的一個節(jié)點(diǎn)單元(每個都相當(dāng)于獨(dú)立運(yùn)行的PC機(jī)),來分散風(fēng)險(xiǎn)。
比如:DCS系統(tǒng)中的過程控制器和邏輯控制器,相當(dāng)于兩個CPU,分別完成儀表控制和電氣控制;應(yīng)用數(shù)據(jù)管理器相當(dāng)于內(nèi)部存儲器;歷史數(shù)據(jù)管理器相當(dāng)于外部存儲器;操作員站和工程師站相當(dāng)于部分輸入/輸出單元;而所有的節(jié)點(diǎn)單元都通過實(shí)時的局域控制網(wǎng)絡(luò)――相當(dāng)于PC內(nèi)部在線,連接在一起,構(gòu)成了基本的DCS系統(tǒng)??梢钥闯觯篋CS系統(tǒng)是PC經(jīng)過放大了的系統(tǒng)。但從系統(tǒng)的實(shí)現(xiàn)上,發(fā)生了質(zhì)的變化:不因?yàn)槟硞€節(jié)點(diǎn)單元發(fā)生故障,而造成整個系統(tǒng)的失效。不像我們的PC機(jī):經(jīng)常死機(jī),需要重新驅(qū)動!
DCS系統(tǒng)不光分散了危險(xiǎn),也分散了CPU的負(fù)載。PC機(jī)中的所有工作都由一個CPU來做,而DCS系統(tǒng)中,則由多個CPU來實(shí)現(xiàn),從而降低了每個CPU的工作量。應(yīng)該說,這也是非常有意義的,因?yàn)镃PU的負(fù)載超過某個值時,如80%,可能會造成過熱、死機(jī)等問題,就是說:具有發(fā)生故障的潛在可能性。這也就是為什么很多游戲玩家,用“極品飛車”來測試CPU的性能,實(shí)際上,這是一種超負(fù)荷測試,來檢驗(yàn)CPU的能力。從另外一個角度來說,僅僅使用集成度和時鐘頻率來提高CPU的性能的方法,遇到了物理和材料方面的極限,所以,無論是英特爾,還是AMD都采用雙核與多核技術(shù)來提高CPU的性能。這也從反方向證明了:通過多CPU的方法可以提高整個系統(tǒng)能力。
[align=center]
圖2:典型的DCS 結(jié)構(gòu)[/align]
現(xiàn)場總線系統(tǒng)
前面介紹了遠(yuǎn)程輸入/輸出系統(tǒng)的基本概念和結(jié)構(gòu),如果再仔細(xì)分析就會發(fā)現(xiàn),雖然系統(tǒng)解決了本地到遠(yuǎn)程的接線問題,可到了遠(yuǎn)程機(jī)架,還是采用傳統(tǒng)的機(jī)架、傳統(tǒng)的模塊、傳統(tǒng)的并行接線。我們會問:有沒有可能從根本上改變傳統(tǒng)的接線方式?有沒有不用并行連接,而只用串行連接的傳感器/執(zhí)行器?這個答案就是:使用現(xiàn)場總線!
現(xiàn)場總線的歷史可以追溯到上世紀(jì)的八十年代,由于工業(yè)自動化界缺少IT界類似于IBM和微軟、英特爾這樣的重量級大腕,一時間,現(xiàn)場總線的種類多如牛毛,有點(diǎn)象春秋戰(zhàn)國時代的封建諸侯,各自為政,多達(dá)數(shù)十種,就連IEC通過的品種也有十八類。比如常用的有:Asi,Can,Modbus,InterBus,Profibus,F(xiàn)F,HART等。
[align=center]
圖3:Asi 典型配置[/align]
現(xiàn)場總線對于工業(yè)控制和自動化的最大貢獻(xiàn)是:它徹底顛覆了傳統(tǒng)的接線方式,并把智能分配給了傳感器和執(zhí)行器。
第一,前面提到,傳統(tǒng)的接線方式是并行的,而現(xiàn)場總線一律采用串行方式。只是考慮對傳統(tǒng)接線方式的兼容,才允許在某些節(jié)點(diǎn)上,可以轉(zhuǎn)成并行方式接線。從拓?fù)浣Y(jié)構(gòu)上看,有些現(xiàn)場總線除了支持總線方式之外,還支持樹形、星形、環(huán)形和混合形的方式。從距離上看,從100米到1000米、數(shù)千米不等;從速度上說,低的有9600波特率,高的有幾兆、十幾兆的波特率。如果把以太網(wǎng)技術(shù)也納入到現(xiàn)場總線里來的話,距離可以到幾十到上百公里,速度可以達(dá)到千兆和萬兆!
第二,傳感器和執(zhí)行器的智能化?,F(xiàn)場總線不光能夠傳送傳統(tǒng)的物理量的值,如:離散量、模擬量、脈沖量等,還可以傳送傳感器和執(zhí)行器的狀態(tài)量。應(yīng)該說:這是一次質(zhì)的飛躍!因?yàn)檫@是一個從前非現(xiàn)場總線不可能完成的任務(wù)!
試想一下,很多傳感器裝在平常人難于觸及的地方,如:煙囪、地下、核實(shí)施等,如果傳感器能夠自己主動把運(yùn)行狀態(tài)告知控制系統(tǒng),那真是現(xiàn)場維護(hù)人員的喜訊,大大減少了系統(tǒng)維護(hù)的費(fèi)用。具了解,某個廠家的變送器的診斷參數(shù)多達(dá)37個,什么斷線啦、溫度超限啦、元件虛焊啦,統(tǒng)統(tǒng)一網(wǎng)打盡。可以說,只要你關(guān)心的問題,它們?nèi)及?。使用這種變送器的用戶,是否會因?yàn)檫@種產(chǎn)品的功能而爽呆了呢?
智能傳感器的出現(xiàn),也為維護(hù)人員對設(shè)備的維護(hù),由被動轉(zhuǎn)為了主動。試舉一例來說明之。每種傳感器都是有壽命的,比較重要的參數(shù)是:產(chǎn)品的電氣壽命和機(jī)械壽命,一來這兩個參數(shù)是不一樣的;二來到了壽命不一定這個傳感器就不能用了,可能還能持續(xù)一段時間,但具有潛在失效的可能性。傳統(tǒng)的維護(hù)方法有兩種,一種為:直到該傳感器出了故障,不能用或者影響生產(chǎn)時,才來查找問題發(fā)生的故障源,找到后,更換該產(chǎn)品,這勢必影響生產(chǎn),帶來延時和產(chǎn)品質(zhì)量的損失;另一種為:按時更換所有的傳感器產(chǎn)品,以防因?yàn)閭鞲衅鞴收嫌绊懮a(chǎn),但這種方式維護(hù)的費(fèi)用比較高,有些產(chǎn)品甚至怎么用就更換,比較浪費(fèi)。
我們再來看看什么是主動的維護(hù)方法。充分利用傳感器的智能——處理器和存儲器,對其狀態(tài)進(jìn)行監(jiān)視。講一個最簡單的方法,傳感器不是有使用壽命嗎?比如說明書上標(biāo)注的是:20萬次。那就對它的使用次數(shù)進(jìn)行計(jì)數(shù),快要達(dá)到這個次數(shù)時,如18萬次,就馬上提醒維護(hù)人員,告訴他們趕快更換這個傳感器,否則要發(fā)生故障了。這樣就可以把故障處理在它可能發(fā)生之前!當(dāng)然了,即使故障由于其他的原因發(fā)生了,那么查找起來也比傳統(tǒng)的傳感器容易的多,因?yàn)樗墓收蠣顟B(tài)已經(jīng)顯示在操作員的屏幕上了。
全分布式系統(tǒng)
前面介紹的分布式輸入/輸出系統(tǒng),由于歷史的原因,主站節(jié)點(diǎn)單元都放于環(huán)境較好的主機(jī)房里,通常還帶有空調(diào)系統(tǒng),確保室內(nèi)的溫度。這主要擔(dān)心CPU是有源元件,集成度不高,容易出問題。而輸入/輸出從站節(jié)點(diǎn)單元位于較為惡劣的現(xiàn)場,考慮的是輸入/輸出模塊大多數(shù)為無源的電阻、電容等元件構(gòu)成,所以抗干擾的能力比較強(qiáng),這就組成了傳統(tǒng)的遠(yuǎn)程輸入/輸出的系統(tǒng)結(jié)構(gòu)。
[align=center]
圖4:典型全分布式方案[/align]
今天再看這種系統(tǒng)結(jié)構(gòu),也還是有很大的問題:第一,過分倚賴遠(yuǎn)程網(wǎng)絡(luò),所有的輸入信號不管是否使用,不管時間長短,不管是否變化,每個掃描周期都要通過網(wǎng)絡(luò)送向主站;而經(jīng)過運(yùn)算的結(jié)果,再通過網(wǎng)絡(luò),送向遠(yuǎn)程分站,線路繁忙,效率低下。第二,過分倚賴主站CPU的作用,所有的運(yùn)算都由它來完成,負(fù)擔(dān)較重,負(fù)載較大,而且一旦出現(xiàn)問題(包括CPU、網(wǎng)絡(luò)),因?yàn)檫@是一種主從結(jié)構(gòu),分站是波動的接受方,所以即使知道也無能為力,只能聽天由命。
為了克服上述問題,全分布式系統(tǒng)更多地強(qiáng)調(diào)平衡、和諧和主動。改變的方式如下:在遠(yuǎn)程分站,把通訊適配器改換成一個小CPU,把原來遠(yuǎn)程主站單元向遠(yuǎn)程分站發(fā)送數(shù)據(jù)的單向傳送,變?yōu)榧瓤梢灾髡就终舅?,又可以分站單元往主站發(fā)送的雙向通訊。另外,分站的CPU也可以運(yùn)行一些程序,分擔(dān)主站CPU的負(fù)載。
這種結(jié)構(gòu)的優(yōu)點(diǎn)是:
■ 遠(yuǎn)程分站的CPU可以分擔(dān)主站CPU的部分工作,這個百分比可以由用戶來決定。比如:主站CPU和分站CPU各自執(zhí)行50%的程序。這樣就降低了主站CPU的負(fù)載。在最糟糕的情況,如主CPU停機(jī)或者遠(yuǎn)程通訊完全中斷時,分站CPU承擔(dān)所有工作,系統(tǒng)仍然可以正常運(yùn)行。
■ 因?yàn)橛辛朔终綜PU,分站的處理能力加強(qiáng),可以按照應(yīng)用需求減少遠(yuǎn)程網(wǎng)絡(luò)的傳送數(shù)據(jù),因?yàn)椴皇敲總€數(shù)據(jù),每個掃描周期都要傳送給主站單元。比如:有些數(shù)字量在掃描周期里沒有變化,對程序沒有影響,就不用傳送;有些模擬量變化非常緩慢,我們可以給它們設(shè)置一個死區(qū),在這個區(qū)域內(nèi),我們認(rèn)為它沒有變化,所以也不用傳送。這樣就降低了網(wǎng)絡(luò)的負(fù)載。
■ 原來的結(jié)構(gòu),分站因?yàn)闆]有CPU,完全處于被動,狀態(tài)是主站發(fā),分站收,是一種單向通訊。用現(xiàn)在的新結(jié)構(gòu),除了原來的方式外,還可以增加分站主動向主站發(fā)送或索要信息,構(gòu)成了一個反向通訊。這樣分站就增加了主動性,可以根據(jù)主站、網(wǎng)絡(luò)的情況,決定自己做什么工作,做多少工作,使得整個控制系統(tǒng)更加趨于平衡。運(yùn)行更加趨于合理。
■ 在設(shè)備冗余的主站系統(tǒng)中,主站CPU進(jìn)行切換時,如果沒有分站的CPU,可能會發(fā)生兩種情況:有擾動切換和無擾動切換。這種擾動是由于分布式網(wǎng)絡(luò)運(yùn)行周期與主站CPU的掃描周期不同步而造成的,如果兩者同步就不會產(chǎn)生擾動,如果不同步就有可能產(chǎn)生擾動。而新結(jié)構(gòu)增加了CPU,可以判斷主站的工作情況,然后采取對應(yīng)的策略,所以可以消除不必要的擾動。
從以上分析可以看出,從集中式I/O到分布式I/O(遠(yuǎn)程I/O),從集中式CPU到本地分布式CPU(dcs),從遠(yuǎn)程嵌入式CPU(現(xiàn)場總線),到遠(yuǎn)程分布式CPU(新分布式系統(tǒng)),有著一種符合其規(guī)律的發(fā)展過程,這也是伴隨著芯片制造技術(shù)的提高,分站CPU抗干擾能力的增強(qiáng),以及處理器價格的降低帶來結(jié)果。因此我們的項(xiàng)目設(shè)計(jì)人員、項(xiàng)目執(zhí)行人員、項(xiàng)目咨詢?nèi)藛T和最終使用人員,應(yīng)該與時俱進(jìn),轉(zhuǎn)變固有概念,把自動化系統(tǒng)構(gòu)建的更為高效,更為合理,更為平衡,更為和諧。