(中國艦船研究設(shè)計(jì)中心,武漢 430064)
損害管制(damage control,DC)是指利用一切手段,盡可能準(zhǔn)確地監(jiān)視、報(bào)告艦船平臺的安全狀態(tài),減輕甚至消除損害所帶來的影響,并快速組織各種力量修復(fù)或采取應(yīng)急措施,將艦船維持在正?;蚪咏5臓顟B(tài)下[1]。損管系統(tǒng)是保障艦船生命力的重要系統(tǒng)[2]。現(xiàn)代損管系統(tǒng)具有信息處理量大、反應(yīng)速度快、輔助決策能力強(qiáng)等優(yōu)點(diǎn),正日益受到各國海軍的重視[3]。
隨著計(jì)算機(jī)技術(shù)和艦船自動化水平的不斷發(fā)展和提高,對保證艦艇生命力的損管系統(tǒng)也有了更多的要求。對于損管系統(tǒng)本身,需要具有較強(qiáng)的容災(zāi)能力[4],即為了保障損管系統(tǒng)在一些重大災(zāi)難面前的有效性。也就是說部分損管中心及其子系統(tǒng)的故障或者失效不會影響到指揮員損管決策和整個損管措施實(shí)施的連續(xù)性。同時對于損管系統(tǒng)的權(quán)限,也就是安全機(jī)制要進(jìn)行一定的控制,不同崗位設(shè)置不同控制權(quán)限。不但可以防止無關(guān)人員的非法操作誤操作,還可以有效避免在災(zāi)害發(fā)生時,操作人員由于心理緊張等原因進(jìn)行的越權(quán)操作。
本文對損管系統(tǒng)的容災(zāi)能力和安全機(jī)制分別進(jìn)行了討論。比較分析現(xiàn)有工業(yè)組態(tài)軟件的特點(diǎn),采用成熟的工業(yè)控制組態(tài)軟件InTouch為開發(fā)平臺進(jìn)行實(shí)驗(yàn)研究,取得了預(yù)期的效果。
要提高損管系統(tǒng)的容災(zāi)能力,就需要研制搭建冗余度高、可靠性好的局部網(wǎng)絡(luò),最大限度地利用各種資源,在災(zāi)害發(fā)生時也盡可能地使信息貫通流暢[5]。
InTouch幾乎支持所有主流的網(wǎng)絡(luò)架構(gòu),包括了單機(jī)、基于客戶端的架構(gòu)、基于服務(wù)器的架構(gòu)和NAD。單機(jī)架構(gòu)中應(yīng)用程序通常由一個充當(dāng)主操作員界面的非聯(lián)網(wǎng)計(jì)算機(jī)組成,直接連接到網(wǎng)絡(luò)上,這種無冗余結(jié)構(gòu)在艦船上顯然是不適合的,下面對其它3種網(wǎng)絡(luò)架構(gòu)的形式進(jìn)行討論。
在基于客戶端的架構(gòu)中運(yùn)行InTouch程序的每臺計(jì)算機(jī)節(jié)點(diǎn)或網(wǎng)絡(luò)服務(wù)器都存在InTouch應(yīng)用程序的一份惟一的副本,并且對相應(yīng)網(wǎng)絡(luò)數(shù)據(jù)源都有相同的訪問權(quán)限?;诳蛻舳说募軜?gòu)見圖1?;诳蛻舳说募軜?gòu)可以理解為獨(dú)立結(jié)構(gòu),網(wǎng)絡(luò)中每個InTouch節(jié)點(diǎn)是相同的,它們相互獨(dú)立,互不影響。這也就意味著,任何一個損管控制臺的故障或者損壞,不會影響到其它損管控制臺的功能,依然可以對相應(yīng)的設(shè)備進(jìn)行控制。
圖1 基于客戶端的網(wǎng)絡(luò)架構(gòu)
基于客戶端的架構(gòu)由于網(wǎng)絡(luò)節(jié)點(diǎn)具有內(nèi)在的冗余特性,導(dǎo)致了每個節(jié)點(diǎn)都需要與共享的服務(wù)器維持一個單獨(dú)的對話,增加了網(wǎng)絡(luò)負(fù)載。同時,由于相互獨(dú)立,增加了維護(hù)升級的難度。
與基于客戶端的架構(gòu)不同,基于服務(wù)器的架構(gòu)中每個網(wǎng)絡(luò)節(jié)點(diǎn)并不是平級的,而是有一個被稱為開發(fā)節(jié)點(diǎn)的特殊節(jié)點(diǎn)。開發(fā)節(jié)點(diǎn)把InTouch應(yīng)用程序分發(fā)到其它網(wǎng)絡(luò)節(jié)點(diǎn)上。多個損管控制臺均訪問相同的InTouch應(yīng)用程序。在艦船上,開發(fā)節(jié)點(diǎn)可以作為專用的服務(wù)器,見圖2。也可以同時當(dāng)做損管監(jiān)控臺使用,見圖3。
圖2 基于服務(wù)器的網(wǎng)路架構(gòu)1
圖3 基于服務(wù)器的網(wǎng)路架構(gòu)2
這種架構(gòu)最大的好處是維護(hù)簡單,維護(hù)時只需要在開發(fā)節(jié)點(diǎn)上操作就可以達(dá)到全艦更新的目的。同時也具有一定的冗余能力,由于其它損管控制臺均訪問開發(fā)節(jié)點(diǎn),它們的故障不會造成其它損管控制臺功能的喪失。但是如果開發(fā)節(jié)點(diǎn)崩潰,沒有冗余備份可以使用,會導(dǎo)致全艦損管控制系統(tǒng)的癱瘓。而且由于只有一個應(yīng)用程序備份,所以所有節(jié)點(diǎn)都必須使用相同的屏幕分辨率,對人機(jī)界面造成一定的影響。
NAD (network application development)架構(gòu)是InTouch特有的架構(gòu),它結(jié)合了以上兩種網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)點(diǎn)。NAD架構(gòu)中也有一個叫開發(fā)節(jié)點(diǎn)的特殊節(jié)點(diǎn),這個節(jié)點(diǎn)負(fù)責(zé)維護(hù)應(yīng)用程序的主副本。每個網(wǎng)絡(luò)節(jié)點(diǎn)都會將應(yīng)用程序復(fù)制到用戶定義的位置并從那里運(yùn)行它。一旦主副本客戶端應(yīng)用程序有更改,開發(fā)節(jié)點(diǎn)便可通知其它網(wǎng)絡(luò)節(jié)點(diǎn),并自動更新。圖4中,兩個網(wǎng)絡(luò)節(jié)點(diǎn)都從開發(fā)節(jié)點(diǎn)注冊了主應(yīng)用程序,但實(shí)際上還是在各自的本地計(jì)算機(jī)上運(yùn)行它。但在運(yùn)行時,開發(fā)節(jié)點(diǎn)不再擔(dān)任網(wǎng)絡(luò)樞紐的角色,而是與其它網(wǎng)絡(luò)節(jié)點(diǎn)相同。這種網(wǎng)絡(luò)結(jié)構(gòu)具有獨(dú)立式較強(qiáng)的容災(zāi)能力,也具有基于服務(wù)器架構(gòu)的維護(hù)便捷的特點(diǎn)。
圖4 NAD架構(gòu)
實(shí)驗(yàn)證明,這種結(jié)構(gòu)在維護(hù)完成后,若開發(fā)節(jié)點(diǎn)發(fā)生故障,非開發(fā)節(jié)點(diǎn)的InTouch應(yīng)用程序與下層數(shù)據(jù)的鏈路會中斷。所以在每次更新操作完成后,需要對非開發(fā)節(jié)點(diǎn)的InTouch應(yīng)用程序重啟。同時需要注意的是,在配置這種結(jié)構(gòu)時,需要將每個 NAD 節(jié)點(diǎn)上的歷史數(shù)據(jù)配置成寫入本地目錄,而不是主應(yīng)用程序節(jié)點(diǎn)。
InTouch平臺有著自己的安全機(jī)制,包括傳統(tǒng)的基于InTouch的安全性、基于操作系統(tǒng)的安全性、基于ArchestrA架構(gòu)的安全性。
InTouch的安全機(jī)制很全面,可以設(shè)置不活動超時自動退出,鎖定系統(tǒng)鍵等,并且操作系統(tǒng)、InTouch以及ArchestrA三層保護(hù)可以有效防止非法用戶登錄,見圖5。
圖5 InTouch的安全機(jī)制
但I(xiàn)nTouch中,用戶的權(quán)限分為999個級別。高級別的用戶可以執(zhí)行低級別的操作或者訪問低級別的數(shù)據(jù),低級別的用戶不能執(zhí)行高級別的操作或者訪問高級別的數(shù)據(jù)。但在損管系統(tǒng)中,用戶執(zhí)行的操作卻是按照系統(tǒng)劃分的。
如圖6所示,每個系統(tǒng)對應(yīng)相應(yīng)的傳感器和控制元件。由于系統(tǒng)間功能的重疊,傳感器和控制元件可以被多個系統(tǒng)控制,如噴淋裝置可以被水滅火系統(tǒng)和噴淋系統(tǒng)控制。對于用戶來說,用戶1可以操作水滅火系統(tǒng),用戶4可以進(jìn)行詳細(xì)報(bào)警信息和歷史記錄的查詢,用戶2既具有用戶1的權(quán)限又具有用戶2的權(quán)限。這種交叉的權(quán)限對于只通過級別來控制權(quán)限的InTouch來說,雖然勉強(qiáng)可以通過腳本實(shí)現(xiàn),但是卻使權(quán)限的控制結(jié)構(gòu)十分復(fù)雜,而且會增加更新維護(hù)的難度。
圖6 用戶權(quán)限
損管系統(tǒng)所需要的權(quán)限結(jié)構(gòu)與Oracle數(shù)據(jù)庫的角色權(quán)限機(jī)制類似[6],可以通過連接Oracle實(shí)現(xiàn)。Wonderware公司提供的FactorySuite中,包含了SQL Access Manager模塊。InTouch SQL Access Manager附加程序支持SQL語言,并且可以簡化運(yùn)行時的數(shù)據(jù)、報(bào)警狀態(tài)或歷史數(shù)據(jù)從InTouch到SQL數(shù)據(jù)庫的傳遞過程。更重要的是這個模塊支持通用的ODBC接口。ODBC(open database connectivity)是微軟公司開放服務(wù)結(jié)構(gòu)(WOSA)中有關(guān)數(shù)據(jù)庫的一個組成部分,它建立了一組規(guī)范,并提供了一組對數(shù)據(jù)庫訪問的標(biāo)準(zhǔn)API(應(yīng)用程序編程接口)。這些API利用SQL來完成其大部分任務(wù)。InTouch應(yīng)用程序與Oracle數(shù)據(jù)庫連接見圖7。
圖7 InTouch與Oracle連接層次
結(jié)構(gòu)圖中ODBC驅(qū)動程序管理器(Driver Manager)和Oracle ODBC驅(qū)動程序都是DLL,ODBC驅(qū)動程序管理器是一個帶有入口函數(shù)庫的動態(tài)連接,用來加載ODBC驅(qū)動。Oracle ODBC驅(qū)動程序用來完成ODBC函數(shù)調(diào)用并與數(shù)據(jù)源進(jìn)行對話。物理數(shù)據(jù)源是數(shù)據(jù)庫管理系統(tǒng)、操作系統(tǒng)和網(wǎng)絡(luò)的集合。采用Oracle數(shù)據(jù)庫的角色權(quán)限機(jī)制能有效簡化編程和維護(hù)的難度。
損管系統(tǒng)結(jié)構(gòu)見圖8。下層為PLC,負(fù)責(zé)數(shù)據(jù)采集和一些邏輯控制。上層為損管控制臺,負(fù)責(zé)圖形顯示和控制。上下層通過千兆以太網(wǎng)連接。
圖8 損管系統(tǒng)架構(gòu)
在計(jì)算機(jī)上分別用VMWare虛擬機(jī)模擬出2個InTouch節(jié)點(diǎn),加上本機(jī)InTouch開發(fā)節(jié)點(diǎn),一共是3個。PLC采用Modicon公司的Concept2.6進(jìn)行模擬仿真,采用Modbus通訊協(xié)議進(jìn)行數(shù)據(jù)傳輸。并在InTouch節(jié)點(diǎn)上安裝Modicon MODBUS Ethernet驅(qū)動程序。Oracle數(shù)據(jù)庫安裝在開發(fā)節(jié)點(diǎn)和其它任意一個InTouch節(jié)點(diǎn)上,進(jìn)行雙機(jī)互備[7],這樣即使任意一臺Oracle服務(wù)器損壞或出現(xiàn)故障,也能保證損管系統(tǒng)的正常運(yùn)行。
實(shí)驗(yàn)證明,關(guān)閉任意一個無PLC仿真器節(jié)點(diǎn)的網(wǎng)絡(luò)連接,其它的節(jié)點(diǎn)數(shù)據(jù)的傳輸控制都不受影響,有一定的容災(zāi)能力。
[1] 陳 光.關(guān)于某型護(hù)衛(wèi)艦機(jī)電設(shè)備及損害管制自動化的研究[D].長春:吉林大學(xué):2005.
[2] 寰 濤.分布式船舶損管培訓(xùn)系統(tǒng)的設(shè)計(jì)與實(shí)觀[D].長沙:中南大學(xué), 2011.
[3] 陶 偉,曹宏濤,周紀(jì)申.艦船損管監(jiān)控系統(tǒng)研究[J].中國艦船研究,2012,7(1):57-60.
[4] 馬 薇,婁 雨.Oracle數(shù)據(jù)庫容災(zāi)備份中的流復(fù)制技術(shù)研究[J].科技通報(bào), 2012,28(2):182-184.
[5] 方萬水,李 煒,吳先高.艦船損管監(jiān)控系統(tǒng)發(fā)展概述[J].艦船科學(xué)技術(shù), 2002,24(6):37-39.
[6] 張開基.基于角色的數(shù)據(jù)庫訪問控制研究[D].青島:中國石油大學(xué),2009.
[7] 劉 剛,行花妮,李亞茹,等.Oracle雙機(jī)熱備在企業(yè)數(shù)據(jù)庫環(huán)境中的應(yīng)用[J].艦船科學(xué)技術(shù), 2012(6):32-33.