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