基于ASP.NET技術(shù)的遠(yuǎn)程機(jī)艙自動化系統(tǒng)的研究
1 引言
隨著計(jì)算機(jī)技術(shù)和移動通信技術(shù)的發(fā)展,船舶機(jī)艙自動化技術(shù)也在不斷發(fā)展。目前,國內(nèi)外對船舶監(jiān)控系統(tǒng)的研究也較多,而數(shù)據(jù)傳輸大多數(shù)是通過衛(wèi)星傳輸,但資源有限,費(fèi)用也很高;一些使用無線網(wǎng)絡(luò)技術(shù)的系統(tǒng)則安全性比較低,并且傳統(tǒng)的窄帶無線通信速率往往比較低,不能滿足實(shí)時傳輸?shù)囊?;對于基于RS 422或者RS 485的單機(jī)監(jiān)控系統(tǒng)無法實(shí)現(xiàn)系統(tǒng)冗余。另外,對于系統(tǒng)的安全性和可靠性也沒有處理,數(shù)據(jù)傳輸協(xié)議大多使用TCP/IP,此協(xié)議頭以及傳輸控制比較復(fù)雜,傳輸效率也比較低,UDP協(xié)議適于小數(shù)據(jù)量的傳輸,這些原因使得數(shù)據(jù)丟包泄密的情況經(jīng)常發(fā)生,系統(tǒng)也不穩(wěn)定,漏報(bào)警也經(jīng)常發(fā)生。
本文在船舶監(jiān)控系統(tǒng)中采用了GPRS通信模塊,將.NET三層架構(gòu)模型運(yùn)用其中,采用基于TCP的Socket協(xié)議解決以往監(jiān)控系統(tǒng)的傳輸存在的問題。在數(shù)據(jù)傳輸過程中采用了SHA512加密算法,使數(shù)據(jù)泄密和丟包的可能性大大減??;對硬件采用冗余技術(shù),軟件采用合適的編碼方案,提高系統(tǒng)的可靠性。同時使用全新的C#語言,并將組態(tài)軟件運(yùn)用其中,使界面操作更加直觀。操作人員通過身份驗(yàn)證后可自由訪問、查詢船舶運(yùn)行的各項(xiàng)參數(shù),及時掌握船舶運(yùn)行情況,降低了系統(tǒng)的成本,提高資源利用率。
2 系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)
如圖1所示,本系統(tǒng)主要由移動終端、GPRS無線通信模塊、GPRS無線通信網(wǎng)絡(luò)、局域網(wǎng)、監(jiān)控中心等部分組成。
移動終端被裝載在被控船舶上,連接數(shù)據(jù)采集模塊。數(shù)據(jù)采集模塊使用研華公司的ADAM-5000/TCP,將采集到的信息通過A/D轉(zhuǎn)換器進(jìn)行處理送至GPRS通信模塊。
GPRS通信模塊采用西門子公司的MC55模塊,主要負(fù)責(zé)將船舶運(yùn)行情況以無線的方式傳送給監(jiān)控中心,實(shí)現(xiàn)監(jiān)控中心和船舶的信息交互。
GPRS無線通信網(wǎng)絡(luò)是基于TCP協(xié)議的,用戶不需要知道協(xié)議的具體內(nèi)容,就可以通過此協(xié)議將信息傳送給監(jiān)控中心的服務(wù)器。
系統(tǒng)優(yōu)點(diǎn)如下:
(1)被控船舶機(jī)艙只需要一臺PC機(jī)與Internet相連就可以實(shí)現(xiàn)系統(tǒng)監(jiān)控功能,系統(tǒng)建設(shè)成本低,簡單可靠。
(2)使用GPRS無線傳輸方式,降低了系統(tǒng)傳輸成本;同時將移動通信網(wǎng)絡(luò)與局域網(wǎng)相結(jié)合,使覆蓋范圍擴(kuò)大。
(3)用戶可以實(shí)時地與數(shù)據(jù)采集點(diǎn)進(jìn)行通信。通過對監(jiān)測信息的分析,可以及時地發(fā)現(xiàn)各個部件的報(bào)警信息并進(jìn)行處理。
(4)對硬件采用冗余技術(shù),軟件采用合適的編碼方案,提高系統(tǒng)的可靠性。
(5)提高了系統(tǒng)的安全性。在數(shù)據(jù)傳輸過程中將SHA512加密算法應(yīng)用其中,在接收時解密,減小了數(shù)據(jù)被截獲的概率。并且.NET和IIS一起使用,它的安全是一個雙層處理過程,所有的請求先經(jīng)過IIS處理,再傳遞給.NET,保證了系統(tǒng)的安全性。
3 監(jiān)控中心軟件設(shè)計(jì)
3.1 軟件平臺
根據(jù)系統(tǒng)功能與結(jié)構(gòu)設(shè)計(jì),采用如下軟件平臺:
(1)開發(fā)環(huán)境:Visual Studio 2005;
(2)服務(wù)器端操作系統(tǒng):Windows XP;
(3)WEB服務(wù)器:IIS 6.0;
(4)數(shù)據(jù)庫管理系統(tǒng):SQL Server 2000;
(5)客戶端瀏覽器:Internet Explore 6.0。
另外還采用組態(tài)軟件,以圖形化監(jiān)控界面代替了數(shù)字化界面,并實(shí)現(xiàn)技術(shù)參數(shù)和管理數(shù)據(jù),使界面操作更加直觀方便。
3.2 三層結(jié)構(gòu)模型
本系統(tǒng)將整個系統(tǒng)按邏輯層次分為:表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)服務(wù)層。在本系統(tǒng)中表現(xiàn)為數(shù)據(jù)庫服務(wù)器,Web服務(wù)器和客戶端瀏覽器,如圖2所示。表示層為用戶提供可視化的顯示和操作的界面,在圖中主要對應(yīng)客戶端瀏覽器,包括aspx頁面、用戶界面、數(shù)據(jù)顯示以及某些與安全相關(guān)的類和對象。
業(yè)務(wù)邏輯層即Web服務(wù)器,用于訪問數(shù)據(jù)層,并將結(jié)果返回給表現(xiàn)層,主要用動態(tài)網(wǎng)頁對數(shù)據(jù)和一些相關(guān)事務(wù)進(jìn)行處理。
數(shù)據(jù)服務(wù)層由數(shù)據(jù)庫和數(shù)據(jù)訪問組件組成。在圖2中對應(yīng)的是數(shù)據(jù)庫服務(wù)器,包括實(shí)時數(shù)據(jù)庫和歷史數(shù)據(jù)庫。
3.3 系統(tǒng)的主要功能
系統(tǒng)的主要功能如下:
管理功能 管理授權(quán)用戶的登錄。用戶經(jīng)過注冊信息登錄后,可修改個人信息、密碼等;管理員可以擁有一般用戶所沒有的權(quán)限,除了對用戶進(jìn)行管理外,還可以進(jìn)行報(bào)警參數(shù)的設(shè)定操作等,保證了系統(tǒng)的保密性和安全性。
數(shù)據(jù)查詢功能 主要根據(jù)查詢項(xiàng)目和查詢時間,動態(tài)提供各重要參數(shù)的實(shí)時查詢和歷史值查詢。可以選擇需要查詢的日期,再選擇你要查看的參數(shù)選項(xiàng),就可以獲知當(dāng)天的運(yùn)行情況。比如選擇2008.3.5,#1主機(jī)轉(zhuǎn)速,#2主機(jī)轉(zhuǎn)速,#1主機(jī)滑油壓力,#2主機(jī)滑油壓力,查詢情況入即在頁面中顯示;另外還可以選擇當(dāng)日的時間進(jìn)行查詢,如圖3所示。
監(jiān)控功能不停地從實(shí)時數(shù)據(jù)庫中取得實(shí)時數(shù)據(jù),動態(tài)顯示各設(shè)備的運(yùn)行參數(shù),通過監(jiān)控界面,實(shí)時了解各設(shè)備的運(yùn)行狀況。如圖4所示動態(tài)顯示#2主機(jī)各項(xiàng)參數(shù)的監(jiān)控界面,數(shù)據(jù)將顯示在框內(nèi)。如有數(shù)據(jù)越界,數(shù)據(jù)顯示紅色,綠燈變紅,同時報(bào)警信息顯示在下面的文本框內(nèi)。
趨勢圖功能 根據(jù)所選日期和時間段,動態(tài)顯示任意時間內(nèi)的趨勢曲線,從而給人直觀的印象,使得操作人員對于機(jī)艙參數(shù)的變化情況可以一目了然。
3.4 系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)及工作流程
實(shí)時數(shù)據(jù)庫表 存儲當(dāng)日數(shù)據(jù)采集模塊采集來的船舶機(jī)艙的各項(xiàng)參數(shù)信息,當(dāng)系統(tǒng)啟動時,每隔一定時間將采集到的數(shù)據(jù)寫入表中。該參數(shù)表可以通過系統(tǒng)查詢進(jìn)行修改等維護(hù)操作。
報(bào)警數(shù)據(jù)表 存放機(jī)艙各項(xiàng)參數(shù)報(bào)警信息,該信息可供維修人員查看報(bào)警信息、查找出錯部位,當(dāng)報(bào)警發(fā)生時,報(bào)警信息由軟件自動寫入,通過故障系統(tǒng)查詢界面進(jìn)行修改等操作。
歷史數(shù)據(jù)庫表 存放正常航行時機(jī)艙各項(xiàng)數(shù)據(jù),通過該表可對機(jī)艙各項(xiàng)參數(shù)的歷史狀態(tài)進(jìn)行各種分析,及時發(fā)現(xiàn)可能的故障點(diǎn)。
主機(jī)信息表 記錄航行過程中主機(jī)狀態(tài)、主機(jī)轉(zhuǎn)速等參數(shù),通過對主機(jī)歷史信息數(shù)據(jù)的分析,可監(jiān)視主機(jī)運(yùn)行狀態(tài)和主機(jī)其他信息,該表由數(shù)據(jù)軟件定期存放,并可通過指定界面對其維護(hù)。
報(bào)警系統(tǒng)表 對每個報(bào)警進(jìn)行統(tǒng)計(jì),并同時截取與此故障相關(guān)的參數(shù)。
另外還有用戶注冊以及登錄信息表等。
系統(tǒng)的工作流程分為兩部分,客戶端和服務(wù)器端。
客戶端:操作人員登錄局域網(wǎng),通過驗(yàn)證后連接到服務(wù)器進(jìn)入該系統(tǒng)讀取或查詢需要的服務(wù),對機(jī)艙的各項(xiàng)參數(shù)的運(yùn)行情況進(jìn)行查看,一旦發(fā)現(xiàn)報(bào)警情況及時處理。
服務(wù)器端:服務(wù)器收到操作人員發(fā)出的請求信息后,進(jìn)行判斷回發(fā)給客戶端,對由GPRS網(wǎng)絡(luò)傳輸過來的數(shù)據(jù)進(jìn)行解密處理后存儲到數(shù)據(jù)庫,在.NET平臺上編寫相應(yīng)的程序?qū)崿F(xiàn)對船舶的運(yùn)行情況進(jìn)行監(jiān)控,必要時通過對船舶發(fā)出調(diào)整船舶運(yùn)行參數(shù)的指示。
3.5 基于TCP/IP的Socket數(shù)據(jù)通信
本系統(tǒng)用GPRS進(jìn)行數(shù)據(jù)傳輸時,采用的是基于TCP/IP的Socket協(xié)議。Socket數(shù)據(jù)通信是建立在TCP/IP協(xié)議基礎(chǔ)之上,專門為滿足測試與自動化的需求而設(shè)計(jì)。相比以前傳輸系統(tǒng)中使用的UDP、TCP協(xié)議,其可靠性明顯加強(qiáng)。用戶數(shù)據(jù)報(bào)協(xié)議UDP提供的是無連接的不可靠的數(shù)據(jù)傳送方式,是一種盡力而為的數(shù)據(jù)交付服務(wù)。TCP雖然提供可靠的傳輸方式,但是協(xié)議頭以及傳輸控制比較復(fù)雜,傳輸效率低?;赥CP的Socket協(xié)議則可以避免以上不足,可靠性大大增強(qiáng),丟包率減小。
在.NET中,System.Net.Sockets命名空間為需要嚴(yán)密控制網(wǎng)絡(luò)訪問的開發(fā)人員提供了WindowsSockets(Winsock)接口的托管實(shí)現(xiàn)。Socket可以看作一個數(shù)據(jù)通道,設(shè)在應(yīng)用程序端(客戶端)和遠(yuǎn)程服務(wù)器端之間,數(shù)據(jù)的讀取(接收)和寫入(發(fā)送)都通過這個通道來進(jìn)行。
服務(wù)器端創(chuàng)建了Socket對象之后,就可以使用Send/SentTo方法將數(shù)據(jù)發(fā)送到連接的Socket,或者使用Receire/ReceiveFrrom方法接收來自連接Socket的數(shù)據(jù)。在客戶端,你將可以通過Connect方法連接到指定的服務(wù)器,并通過Send/SendTo方法向遠(yuǎn)程服務(wù)器發(fā)送數(shù)據(jù),而后可以通過Receive/ReceiveFrom從服務(wù)端接收數(shù)據(jù);而在服務(wù)器端,你需要使用Bind方法綁定所指定的接口使Socket與一個本地終結(jié)點(diǎn)相聯(lián),并通過Listen方法偵聽該接口上的請求,當(dāng)偵聽到用戶端的連接時,調(diào)用Accept完成連接的操作,創(chuàng)建新的Socket以處理傳入的連接請求。使用完Socket后,使用Close方法關(guān)閉Socket。
經(jīng)過傳輸實(shí)踐可知,在GPRS網(wǎng)絡(luò)中使用基于TCP的Socket協(xié)議傳輸,丟包率為零,使系統(tǒng)的可靠性大大增強(qiáng)。
4 系統(tǒng)的安全性和可靠性
4.1 可靠性
系統(tǒng)的可靠性分為硬件可靠性和軟件可靠性。硬件可靠性主要采用冗余技術(shù)。在冗余系統(tǒng)中,當(dāng)主設(shè)備由于故障因素不能完成規(guī)定功能時,冗余設(shè)備自動或手動投入運(yùn)行,保持連續(xù)正確地執(zhí)行其程序和輸入輸出功能,不至于因?yàn)樵黾恿讼到y(tǒng)復(fù)雜性而引發(fā)新的不可靠因素,同時又節(jié)省了一次性投資,使系統(tǒng)更加經(jīng)濟(jì)合理。
提高軟件可靠性的主要措施有:采用良好的容錯設(shè)計(jì)、利用合適的編碼方案并結(jié)合相應(yīng)的自檢技術(shù)等。對程序?qū)嵭袑?shí)時監(jiān)控,防止程序發(fā)生“死掉”的現(xiàn)象,從而導(dǎo)致系統(tǒng)發(fā)生死鎖,來提高系統(tǒng)的可靠性和執(zhí)行頻率。
4.2 安全性
GPRS可以向用戶提供快速的數(shù)據(jù)傳輸速度。但是數(shù)據(jù)在傳輸過程,經(jīng)常有數(shù)據(jù)被截獲的危險(xiǎn)。因此傳輸過程中,使用了較新的算法——SHA512加密算法,安全性明顯提高,使得數(shù)據(jù)在傳送過程中被截獲的可能性相對降低。.NET安全機(jī)制的實(shí)現(xiàn)及用戶鑒別的處理是與IIS相互關(guān)聯(lián)的。安全的設(shè)計(jì)模式需要IIS與.NET兩者都能正確配置,才能通過驗(yàn)證,訪問系統(tǒng)。.NET中提供了加密的解決方法——SHA1和MD5,把用戶提交的密碼加密后存儲到數(shù)據(jù)庫相應(yīng)的字段中。
在數(shù)據(jù)傳輸過程中數(shù)據(jù)加密和.NET中的安全技術(shù)聯(lián)合使用,同時對軟硬件采取一定的措施。經(jīng)過系統(tǒng)測試,數(shù)據(jù)泄密幾乎為零,減少了漏報(bào)警的情況,從.NET入侵的情況也從未發(fā)生,有效地解決了系統(tǒng)的安全性和可靠性的問題,使系統(tǒng)的安全性和可靠性大大加強(qiáng)。
5 結(jié) 語
本文將GPRS和.NET技術(shù)相結(jié)合建立了船舶的實(shí)時監(jiān)控系統(tǒng),隨時對船舶的運(yùn)行狀態(tài)進(jìn)行監(jiān)控及時處理故障報(bào)警信息解決了船舶運(yùn)行過程中數(shù)據(jù)無法傳輸及各項(xiàng)參數(shù)監(jiān)控問題,并將基于TCP的Socket協(xié)議和SHA512加密算法應(yīng)用在數(shù)據(jù)傳輸過程中,已有效地減小了丟包率,數(shù)據(jù)有效傳輸率高達(dá)99.8%,現(xiàn)在內(nèi)河船舶的航行中得到了使用。隨著移動通信的發(fā)展,GPRS作為新一代無線通信方式已經(jīng)滲透到各行各業(yè)的應(yīng)用中,將來會在船舶監(jiān)控系統(tǒng)中得到廣泛應(yīng)用。