韓翠翠
(國家廣電總局 北京地球站,北京 102206)
所謂的自動控制,就是用計算機(jī)來代替人工根據(jù)指令進(jìn)行一些操作,目前自動控制系統(tǒng)已經(jīng)由單一的小系統(tǒng)逐步轉(zhuǎn)變成集成的能夠獨立的完成整套工作任務(wù)的大型系統(tǒng)。在這些大型的集成性的自動控制系統(tǒng)中,我們經(jīng)常碰到要求各分系統(tǒng)在同一時間同時執(zhí)行某些動作,從而共同來完成一項大的工作的情況,這就遇到了怎樣才能夠做到各個分系統(tǒng)的時間準(zhǔn)確、一致,怎樣完美而準(zhǔn)確的完成任務(wù)的問題。
例如廣播傳輸發(fā)射自動控制系統(tǒng),該系統(tǒng)主要由局控制平臺、臺控制平臺、節(jié)目傳輸控制平臺、發(fā)射機(jī)自動控制、天線交換開關(guān)控制等幾部分組成。局控制平臺主要下發(fā)每天的節(jié)目運行時間表,經(jīng)臺控制平臺接收后下發(fā)到節(jié)目傳輸控制平臺、節(jié)目傳輸控制平臺將節(jié)目運行時間表下發(fā)到發(fā)射機(jī)自動控制和天線交換開關(guān)自動控制。每天的廣播節(jié)目運行就是發(fā)射機(jī)自動控制系統(tǒng)按照節(jié)目運行時間表上高壓,發(fā)射傳輸節(jié)目信號,天線交換開關(guān)自動控制系統(tǒng)按照節(jié)目運行時間表倒換所需頻段的天線,兩者配合才能達(dá)到廣播節(jié)目每天按運行時間表自動運行的工作任務(wù)。如圖1所示。
這中間的問題非常明顯,就是發(fā)射機(jī)在上高壓之前,天線交換開關(guān)自動控制系統(tǒng)必須將所需的天線到換到位,但是天線交換開關(guān)倒換天線的必要條件是上一個結(jié)束的節(jié)目所用的天線高壓已落,即不能帶高壓倒換天線。如果這些問題都僅僅依靠時間的統(tǒng)一性來解決,勢必會遇到很多麻煩。
圖1 廣播傳輸發(fā)射自動控制系統(tǒng)工作流程圖
在本系統(tǒng)未集成之前,每一部分的自動控制都是一個獨立的分系統(tǒng),都有自己的一套時間系統(tǒng)。每個系統(tǒng)都按照自己的時間來執(zhí)行工作指令。例如,發(fā)射機(jī)會按照調(diào)度令在某一時間結(jié)束一個節(jié)目,然后開始一個新的節(jié)目傳輸。天線交換開關(guān)也會按照調(diào)度令在某一時間自動倒換天線。初步看起來似乎可以自動運行,實際不然。每一個系統(tǒng)都有自己的一個時間,如果這兩個時間差別比較大,即誤差比較大,那么兩套系統(tǒng)的運行就很難成功,或者說,要求人工參與的部分就很大,通過人工的干預(yù)來實現(xiàn)系統(tǒng)可能失敗的部分。例如高壓未落的通過手動落高壓,天線未到位的手動倒天線,這樣的自動化系統(tǒng)就失去了自動的意義。
要想解決這個問題,不難看出,時間的準(zhǔn)確性在這中間起著非常重要的作用,如果時間能夠非常準(zhǔn)確,那么發(fā)射機(jī)自動化可以實現(xiàn)準(zhǔn)點落高壓,天線交換開關(guān)自動化可以準(zhǔn)點倒換天線到位,發(fā)射機(jī)自動化就可以準(zhǔn)點上高壓,實現(xiàn)調(diào)度令的時間運行表得到準(zhǔn)確執(zhí)行。
那么,是不是這么簡單就可以實現(xiàn)呢。
我們目前采用的辦法是從局廣播傳輸發(fā)射自動控制系統(tǒng)下發(fā)校時的指令,下級的控制系統(tǒng)接到指令后在實現(xiàn)自身校時的同時,將校時指令向下轉(zhuǎn)發(fā),即實現(xiàn)自上而下的校準(zhǔn)時間。
然而這個方法的實現(xiàn)效果卻不盡如人意。為什么呢?
目前的集成系統(tǒng)一般采用以太網(wǎng)星型結(jié)構(gòu),如圖2所示,在最下級的工控機(jī)與PLC 可能有串口,但是大部分系統(tǒng)都體現(xiàn)了雙絞線的網(wǎng)絡(luò)模型,所以這中間的時間差就是網(wǎng)線傳輸與系統(tǒng)反應(yīng)時間的和。這個時間,并不容易把握,網(wǎng)絡(luò)會有擁堵的現(xiàn)象,系統(tǒng)的反應(yīng)時間也會因系統(tǒng)的性能以及實時的工作情況有關(guān)。
圖2 星型結(jié)構(gòu)的以太網(wǎng)模型
當(dāng)今居于主導(dǎo)地位的局域網(wǎng)技術(shù)-以太網(wǎng)。以太網(wǎng)是建立在CSMA/CD 機(jī)制上的廣播型網(wǎng)絡(luò)。沖突的產(chǎn)生是限制以太網(wǎng)性能的重要因素,早期的以太網(wǎng)設(shè)備如集線器是物理層設(shè)備,不能隔絕沖突擴(kuò)散,限制了網(wǎng)絡(luò)性能的提高。而交換機(jī)(網(wǎng)橋)做為一種能隔絕沖突的二層網(wǎng)絡(luò)設(shè)備,極大的提高了以太網(wǎng)的性能。正逐漸替代集線器成為主流的以太網(wǎng)設(shè)備。然而交換機(jī)(網(wǎng)橋)對網(wǎng)絡(luò)中的廣播數(shù)據(jù)流量則不做任何限制,這也影響了網(wǎng)絡(luò)的性能。通過在交換機(jī)上劃分VLAN 和采用三層的網(wǎng)絡(luò)設(shè)備-路由器解決了這一問題。以太網(wǎng)做為一種原理簡單,便于實現(xiàn)同時又價格低廉的局域網(wǎng)技術(shù)已經(jīng)成為業(yè)界的主流。而更高性能的快速以太網(wǎng)和千兆以太網(wǎng)的出現(xiàn)更使其成為最有前途的網(wǎng)絡(luò)技術(shù)。
目前以太網(wǎng)一般采用星型拓?fù)浣Y(jié)構(gòu),管理方便、容易擴(kuò)展、需要專用的網(wǎng)絡(luò)設(shè)備作為網(wǎng)絡(luò)的核心節(jié)點、需要更多的網(wǎng)線、對核心設(shè)備的可靠性要求高。采用專用的網(wǎng)絡(luò)設(shè)備(如集線器或交換機(jī))作為核心節(jié)點,通過雙絞線將局域網(wǎng)中的各臺主機(jī)連接到核心節(jié)點上,這就形成了星型結(jié)構(gòu)。星型網(wǎng)絡(luò)雖然需要的線纜比總線型多,但布線和連接器比總線型的要便宜。此外,星型拓?fù)淇梢酝ㄟ^級聯(lián)的方式很方便的將網(wǎng)絡(luò)擴(kuò)展到很大的規(guī)模,因此得到了廣泛的應(yīng)用,被絕大部分的以太網(wǎng)所采用。
以太網(wǎng)采用帶沖突檢測的載波幀聽多路訪問(CSMA/CD) 機(jī)制。以太網(wǎng)中節(jié)點都可以看到在網(wǎng)絡(luò)中發(fā)送的所有信息,因此,我們說以太網(wǎng)是一種廣播網(wǎng)絡(luò)。以太網(wǎng)的工作過程如下:當(dāng)以太網(wǎng)中的一臺主機(jī)要傳輸數(shù)據(jù)時,監(jiān)聽信道上收否有信號在傳輸。如果有的話,表明信道處于忙狀態(tài),就繼續(xù)監(jiān)聽,直到信道空閑為止。若沒有監(jiān)聽到任何信號,就傳輸數(shù)據(jù)。傳輸?shù)臅r候繼續(xù)監(jiān)聽,如發(fā)現(xiàn)沖突則執(zhí)行退避算法,隨機(jī)等待一段時間后,重新執(zhí)行監(jiān)聽。若未發(fā)現(xiàn)沖突則發(fā)送成功,所有計算機(jī)在試圖再一次發(fā)送數(shù)據(jù)之前,必須在最近一次發(fā)送后等待9.6 微秒(以10Mbps 運行)。
以太網(wǎng)的幀是數(shù)據(jù)鏈路層的封裝,網(wǎng)絡(luò)層的數(shù)據(jù)包被加上幀頭和幀尾成為可以被數(shù)據(jù)鏈路層識別的數(shù)據(jù)幀。雖然幀頭和幀尾所用的字節(jié)數(shù)是固定不變的,但依被封裝的數(shù)據(jù)包大小的不同,以太網(wǎng)的長度也在變化,其范圍是64~1518 字節(jié)。
在以太網(wǎng)中,當(dāng)兩個數(shù)據(jù)幀同時被發(fā)到物理傳輸介質(zhì)上,并完全或部分重疊時,就發(fā)生了數(shù)據(jù)沖突。當(dāng)沖突發(fā)生時,物理網(wǎng)段上的數(shù)據(jù)都不再有效。沖突域:在同一個沖突域中的每一個節(jié)點都能收到所有被發(fā)送的幀。
沖突是影響以太網(wǎng)性能的重要因素,由于沖突的存在使得傳統(tǒng)的以太網(wǎng)在負(fù)載超過40%時,效率將明顯下降。產(chǎn)生沖突的原因有很多,如同一沖突域中節(jié)點的數(shù)量越多,產(chǎn)生沖突的可能性就越大。此外,諸如數(shù)據(jù)分組的長度 (以太網(wǎng)的最大幀長度為1518 字節(jié))、網(wǎng)絡(luò)的直徑等因素也會影響沖突的產(chǎn)生。因此,當(dāng)以太網(wǎng)的規(guī)模增大時,就必須采取措施來控制沖突的擴(kuò)散。通常的辦法是使用網(wǎng)橋和交換機(jī)將網(wǎng)絡(luò)分段,將一個大的沖突域劃分為若干小沖突域。
理解了以太網(wǎng)的工作原理,軟件所能做的校時功能,一般會選用一個值作為校時的誤差彌補(bǔ),這個時間差是經(jīng)過多次調(diào)試得出的平均值,而各分系統(tǒng)的反應(yīng)時間、網(wǎng)絡(luò)情況等都是動態(tài)變化的,所以校時的結(jié)果很難統(tǒng)一。
通過分析,我們發(fā)現(xiàn),想要時間同步并不是非常容易實現(xiàn)的事情。如果僅靠時間的同步來實現(xiàn)集成系統(tǒng)的工作同步的話,是不太現(xiàn)實的。算法流程見圖3。
通過圖3 看出,如果僅靠時間來完成任務(wù),是比較危險的,那么,還有什么別的辦法呢? 目前一般的做法是算法采用如圖4所示的算法流程。
這樣的算法,增多了各個系統(tǒng)之間的交流,從一定層面上來說,增加了網(wǎng)絡(luò)的負(fù)載量,雖然指令可以有保證的執(zhí)行下去,但是,如果中間某一個系統(tǒng)出現(xiàn)問題的話,那么以此為條件的后續(xù)指令局無法進(jìn)行下去,也就玩法完成任務(wù)。
圖3 僅靠時間的同步來實現(xiàn)集成系統(tǒng)工作的算法流程圖
這里,就涉及到了軟件的接口問題。各種不同的軟件要實現(xiàn)接口,比較麻煩。軟件接口是實現(xiàn)一個系統(tǒng)跟另外系統(tǒng)進(jìn)行信息交互的橋梁,在不同的系統(tǒng)之間,根據(jù)系統(tǒng)的關(guān)聯(lián)程度的不同存在緊耦合和松耦合兩種:緊耦合要求接口響應(yīng)反應(yīng)快,消息不能阻塞;松耦合對響應(yīng)反應(yīng)要求比較低。在目前應(yīng)用中,Socket 、消息隊列 (Message Queue)、WebService 等都有相應(yīng)的應(yīng)用。
在接口和系統(tǒng)信息交互的過程中,兩種模式使用得很普遍:同步調(diào)用和異步調(diào)用,同步調(diào)用要求接口發(fā)出請求消息后必須等待服務(wù)端系統(tǒng)的應(yīng)答消息,接口阻塞直至超時;異步調(diào)用則發(fā)出請求消息后,接口可以從事其它處理,定時輪詢服務(wù)端應(yīng)答消息和消息或事件通知。同步方式簡單,但是很容易造成接口阻塞,造成消息積壓超時。
Socket 通訊相對來說是很古老的通訊方式,也是最常用的通訊方式。Socket 通訊有阻塞和非阻塞兩種方式。在同步方式,采用阻塞編程比較簡單,但是為了防止接口阻塞,我們需要設(shè)置Socket 超時,因此可以使用Socket 的SELECT 模型 (參考如下示例代碼):
圖4 以時間的同步及其他方式混合作用來實現(xiàn)集成系統(tǒng)工作的算法流程圖
在異步方式下,采用非阻塞方式實現(xiàn)比較方便,在非阻塞方式下可使用WSAAsyncSelect 模型和WSAEventSelect 模型:WSAAsyncSelect 模型基于消息,WSAEventSelect 模型基于事件,下面的示例代碼設(shè)置了Socket 進(jìn)行讀寫和關(guān)閉操作的消息:
無論使用阻塞方式或非阻塞方式編程,需要重點考慮的一個問題:粘包現(xiàn)象,即應(yīng)用發(fā)送兩個或以上的數(shù)據(jù)包,在Socket 通訊層將數(shù)據(jù)包合并成一個發(fā)送出去,因此接收端收到數(shù)據(jù)包以后需要對數(shù)據(jù)包根據(jù)應(yīng)用定義的長度進(jìn)行拆分,否則導(dǎo)致應(yīng)用層丟包。
此處解釋了關(guān)于接口的問題,也就是說,在時間不能完全一致的情況下,我們將問題進(jìn)行了轉(zhuǎn)移,比起單純的依賴時間,軟件之間的接口實現(xiàn)條件的互通,是解決問題的一個辦法。
目前電腦技術(shù)的日益發(fā)達(dá),也帶動了自動化技術(shù)的飛速前進(jìn),各種獨立的自動化系統(tǒng)逐漸需要共同協(xié)作完成一些大的任務(wù),對時間依賴比較多的系統(tǒng),由于一些副作用導(dǎo)致的時間難以同步,如果不尋找其他的接口實現(xiàn)某些數(shù)據(jù)的互通有無,將難以完美的得到利用,因此,在將來的軟件系統(tǒng)中,接口的設(shè)計將會越來越重要,各種不同的語言不同的環(huán)境實現(xiàn)的不同系統(tǒng)都將能夠?qū)崿F(xiàn)接口的方便對接。
[1]鄭耀東,等.C# 從入門到實踐[M].清華大學(xué)出版社,2009.
[2][美]Sai Kishore Sripriya;何紅波,英宇,等(譯).Visual C++.NET專業(yè)項目實例開發(fā)[M].中國水利水電出版社,2007.
[3]求是科技.WindowsAPI 程序設(shè)計參考大全.人民郵電出版社,2006.