文獻標(biāo)識碼: A
文章編號: 0258-7998(2013)06-0136-03
伴隨著海洋開發(fā)過程中人們對海量信息需求的日益多樣化,傳統(tǒng)海洋測繪體系已轉(zhuǎn)變?yōu)閿?shù)字化測繪技術(shù)體系,海洋綜合導(dǎo)航定位系統(tǒng)的應(yīng)用也越來越廣泛。如今,海底地震勘探技術(shù)正在逐步成熟,海底地震勘探技術(shù)是海洋深處地質(zhì)調(diào)查和海洋資源探測的重要手段。海底地震儀OBS(Ocean Bottom Seismometer)是一種可以放置在海底接收人工或天然地震信號的記錄儀器[1],通過將OBS布設(shè)于海底,廣方位角接收海洋調(diào)查船拖曳震源觸發(fā)放炮后的縱橫波信息,實現(xiàn)對海底深部構(gòu)造的探測[2]。
OBS布設(shè)導(dǎo)航定位系統(tǒng)(OBSNavGIS)是集數(shù)據(jù)實時采集、通信、解析、電子海圖顯示等功能為一體的海洋導(dǎo)航定位系統(tǒng),通信模塊是整個系統(tǒng)的重要組成部分,其實時性、準(zhǔn)確性和穩(wěn)定性直接影響導(dǎo)航定位系統(tǒng)的性能。目前國內(nèi)外大多數(shù)水下測量導(dǎo)航軟件都支持通過RS232串口或并口連接多種傳感器,如GPS接收機、回聲測深儀、剖面儀、涌浪儀以及USBL[3],其中最常用的通信方式是串行通信。但是采用串行通信方式也存在一些問題,即當(dāng)終端連接多個傳感器設(shè)備時,繁瑣的串口參數(shù)配置和雜亂的線路布設(shè)極大地影響了作業(yè)效率和作業(yè)環(huán)境。隨著Internet技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)通信技術(shù)應(yīng)用于工業(yè)的可行性大大加強,在導(dǎo)航領(lǐng)域,網(wǎng)絡(luò)通信技術(shù)能夠有效地彌補傳統(tǒng)串行通信技術(shù)的不足,實現(xiàn)數(shù)據(jù)的遠(yuǎn)程傳輸,發(fā)展前景廣闊。
本文設(shè)計并實現(xiàn)了支持TCP網(wǎng)絡(luò)通信,同時兼容傳統(tǒng)串口通信的OBSNavGIS設(shè)備通信模塊,以此實現(xiàn)對多源數(shù)據(jù)的實時采集、多設(shè)備的統(tǒng)一管理,以及長時間的連續(xù)監(jiān)測,為海洋布設(shè)導(dǎo)航過程提供全面可靠的數(shù)據(jù)。
1 OBS布設(shè)導(dǎo)航定位系統(tǒng)
OBSNavGIS是集數(shù)據(jù)實時采集、通信、解析及電子海圖顯示功能為一體的海洋導(dǎo)航定位系統(tǒng),該系統(tǒng)旨在落實天然氣水和物資源勘查技術(shù)的研究,主要包括對OBS高精度投放與定位技術(shù),以及海底OBS實時可視化投放技術(shù)的研究與實現(xiàn)。系統(tǒng)采用層次化的體系架構(gòu),主要分為表現(xiàn)層、業(yè)務(wù)層、數(shù)據(jù)層。表現(xiàn)層主要負(fù)責(zé)電子海圖的顯示和OBS投放觀測;業(yè)務(wù)層涵蓋了對設(shè)備的管理和OBS投放控制;數(shù)據(jù)層主要負(fù)責(zé)底層數(shù)據(jù)訪問和硬件交互。軟件架構(gòu)如圖1所示。
2 多路設(shè)備實時通信模塊的設(shè)計
2.1 功能設(shè)計
多路設(shè)備實時通信模塊是一個通用接口模塊,也是整個系統(tǒng)中最基礎(chǔ)、最核心的單元。主要由數(shù)據(jù)層的通信構(gòu)件和業(yè)務(wù)層的設(shè)備管理模塊構(gòu)成。其中通信構(gòu)件主要負(fù)責(zé)與底層硬件交互,對不同的通信機制進行封裝,采集解析多路設(shè)備數(shù)據(jù),為上層的設(shè)備管理提供基本的數(shù)據(jù)訪問支持。主要包括以下功能:
(1)連接RS232標(biāo)準(zhǔn)的串口設(shè)備,能實時獲取多個串行數(shù)據(jù),提供有效的同步機制,協(xié)調(diào)多線程的并行;
(2)建立基于TCP/IP通信協(xié)議的客戶端與服務(wù)器端的網(wǎng)絡(luò)連接,控制客戶端的數(shù)據(jù)訪問;
(3)解析多路設(shè)備的數(shù)據(jù)。提供不同設(shè)備的解析驅(qū)動,對不同設(shè)備數(shù)據(jù)進行語法和語義的分析。
設(shè)備管理模塊主要負(fù)責(zé)通信方式的集成和設(shè)備的統(tǒng)一管理。主要包括以下功能:
(1)構(gòu)建抽象的設(shè)備對象,提供統(tǒng)一的設(shè)備訪問控制接口,集成串口和TCP/IP兩種不同的通信方式連接設(shè)備;
(2)管理抽象的設(shè)備對象,處理用戶的設(shè)備操作請求,完成屬性設(shè)置、添加/刪除、啟動/停止、狀態(tài)查詢等操作。
2.2 模塊設(shè)計
2.2.1 串口通信硬件連接設(shè)計
OBSNavGIS系統(tǒng)中串口通信是指用戶通過計算機串口實現(xiàn)計算機應(yīng)用程序(OBSNavGIS)與多路設(shè)備之間的通信。串口均是按位進行數(shù)據(jù)發(fā)送和接收[5]。OBSNavGIS的外設(shè)通過RS232串口與主機相連,外設(shè)有:GPS(含DGPS)、羅經(jīng)、OBS以及水深儀。
2.2.2 網(wǎng)絡(luò)通信硬件連接設(shè)計
OBSNavGIS系統(tǒng)中TCP網(wǎng)絡(luò)通信主要負(fù)責(zé)接收遵循TCP/IP通信協(xié)議的網(wǎng)絡(luò)數(shù)據(jù),需要借助多串口轉(zhuǎn)網(wǎng)關(guān)[6]將串口設(shè)備通過標(biāo)準(zhǔn)TCP/IP協(xié)議接入Internet。多串口轉(zhuǎn)網(wǎng)關(guān)的主要作用是把串口數(shù)據(jù)流轉(zhuǎn)換成以太網(wǎng)數(shù)據(jù)流。
本系統(tǒng)中,采用RS232通信接口將DGPS(船位)、水下OBS(水下定位)等NMEA-0183[7]格式數(shù)據(jù),船艏向、水深等定位數(shù)據(jù)接入導(dǎo)航接口單元,并將數(shù)據(jù)通過網(wǎng)線發(fā)送給系統(tǒng)。
3 多路設(shè)備實時通信模塊的實現(xiàn)
3.1 關(guān)鍵技術(shù)
3.1.1 串口與TCP通信技術(shù)的集成
串口和TCP通信技術(shù)的集成主要采用了面向?qū)ο罄^承和多態(tài)機制,并將其封裝起來,屏蔽業(yè)務(wù)模塊對通信技術(shù)的直接訪問,通信模塊核心類圖如圖2所示。類CDeviceManage負(fù)責(zé)設(shè)備管理,維護一個抽象的CDeviceObj設(shè)備對象引用集合,提供對設(shè)備控制的操作,并將多種設(shè)備集成到同一平臺,實現(xiàn)一體化組織和管理,增強了系統(tǒng)的可維護性。
CDeviceObj作為設(shè)備的抽象類,提供了設(shè)備啟動和停止的接口方法,CSerialDev和CTCPDev繼承自CDeviceObj,分別基于串口和TCP/IP兩種不同通信機制的實現(xiàn)形式。CSerialDev和CTCPSocket都將具體實現(xiàn)底層通信構(gòu)件類CSerialWithBuffer和CTCPSocket,增強了系統(tǒng)的可擴展性。
3.1.2 串口通信技術(shù)的應(yīng)用
OBSNavGIS串口通信構(gòu)件使用第三方通信類CSerialWithBuffer進行通信設(shè)計。CSerialWithBuffer指基于多線程對處理串口的Windows API進行封裝。為了有效解決串口上占用CPU時間而引起的線程堵塞問題,將串口數(shù)據(jù)的采集存儲和讀取處理分置到串口監(jiān)視線程和入庫線程中。
3.1.3 TCP網(wǎng)絡(luò)通信的應(yīng)用
OBSNavGIS系統(tǒng)中TCP網(wǎng)絡(luò)通信分為服務(wù)器和客戶端兩部分,OBSNavGIS系統(tǒng)作為客戶端,用類CTcpSocket實現(xiàn)與服務(wù)器端的交互,CTcpSocket對Windows Socket API進行了封裝,其中包含一個CDateBuffer類型的數(shù)據(jù)緩沖區(qū)。進行網(wǎng)絡(luò)連接時,調(diào)用CTcpSocket的Connect()向服務(wù)器端發(fā)出連接請求,連接后調(diào)用StartReciving()向服務(wù)器發(fā)送讀設(shè)備數(shù)據(jù)請求,并啟動數(shù)據(jù)監(jiān)聽線程。客戶端收到數(shù)據(jù)后存入緩沖區(qū),并借助回調(diào)函數(shù)[7]通知主程序讀取數(shù)據(jù)。
3.2 具體實現(xiàn)
在Window平臺上,使用VS2010開發(fā)OBSNavGIS系統(tǒng)的各個模塊。
3.2.1 基于串口通信技術(shù)的實現(xiàn)過程
串口讀取數(shù)據(jù)的基本工作流程為:
(1)調(diào)用CSerialWithBuffe的Setup()方法初始化。
(2)調(diào)用Open()開啟串口,然后依次調(diào)用StartListener()啟動串口監(jiān)測線程,WaitEvent()對串口上發(fā)生的事件進行獲取和處理,WaitForSingleObject()對串口相關(guān)的用戶控制事件進行等待和處理,OnEvent()將數(shù)據(jù)寫入緩沖,并以消息方式通知主程序進行數(shù)據(jù)處理。
(3)調(diào)用Close()StopListener()關(guān)閉串口監(jiān)聽線程。
添加串口通信設(shè)備的對話框如圖3所示,圖右側(cè)顯示了從串口3接收NMEA0183格式的GPS導(dǎo)航定位數(shù)據(jù)。
3.2.2 基于網(wǎng)絡(luò)通信技術(shù)的實現(xiàn)過程
為實現(xiàn)多客戶機/服務(wù)器通信,在服務(wù)器端采用多線程技術(shù),負(fù)責(zé)接收各設(shè)備通過串行口發(fā)送的數(shù)據(jù),等待并監(jiān)聽多個客戶機的連接請求,同時創(chuàng)建一個獨立的線程把接收到的數(shù)據(jù)流發(fā)送到客戶端。
4 多路設(shè)備實時通信方式的對比分析
OBSNavGIS系統(tǒng)中,串口通信和網(wǎng)絡(luò)通信都能滿足系統(tǒng)的需求,本文設(shè)計是集合以上兩種方式的通信方式。表1為三種通信方式的簡單比較。
串口通信的優(yōu)勢在于成本低、簡捷靈活、硬件接口簡單、編程難度相對小,適合點對點的數(shù)據(jù)通信系統(tǒng),但對于實時性要求高或遠(yuǎn)距離時不適合采用串口通信。TCP網(wǎng)絡(luò)通信傳輸距離理論上無限制,易于進行遠(yuǎn)程管理,但成本高[8]。將上述兩種通信方式集成的通信技術(shù)結(jié)合了串口和TCP網(wǎng)絡(luò)通信的優(yōu)點,有效避免了缺陷,更適合實際作業(yè)中根據(jù)具體情況進行合理的選擇,從而達到資源利用的最大化,提高了效率。
針對單一的通信技術(shù)不能滿足水下測量導(dǎo)航的應(yīng)用需求,本文設(shè)計并實現(xiàn)了OBS導(dǎo)航定位的多路設(shè)備實時通信模塊,集成了串口和TCP網(wǎng)絡(luò)兩種通信技術(shù),為海洋調(diào)查提供了準(zhǔn)確、多樣化的科研數(shù)據(jù),同時對兩種通信方式進行了簡單的分析和比較。優(yōu)化通信時延處理是提升信息采集整體質(zhì)量和系統(tǒng)高效穩(wěn)定的關(guān)鍵,今后將進一步對該技術(shù)進行研究,以提高通信時延和系統(tǒng)的實時性,優(yōu)化海洋定位系統(tǒng)的效率。
參考文獻
[1] 吳志強,陳建文.OBS在我國海洋深部地質(zhì)調(diào)查中的應(yīng)用現(xiàn)狀和前景[J].海洋地質(zhì)動態(tài),2008,24(9):35-42.
[2] 阮愛國,李家彪,馮占英,等.海底地震儀及其國內(nèi)外發(fā)展現(xiàn)狀[J].東海海洋,2004,22(2):19-27.
[3] 陽凡林,康志忠,獨知行,等.海洋導(dǎo)航定位技術(shù)及其應(yīng)用與展望[J].海洋測繪,2006,26(1):71-74.
[4] 梁偉,等.Visual C++網(wǎng)絡(luò)編經(jīng)典案例詳解[M].北京:清華大學(xué)出版社,2010.
[5] 龔建偉,熊光明.Visual C++/Turbo C串口通信編程實踐[M].電子工業(yè)出版社, 2004.
[6] 馮正,韓焱,王黎明.多線程串口通信技術(shù)在GPS導(dǎo)航中的應(yīng)用[J].現(xiàn)代電子技術(shù), 2009,292(5):28-33.
[7] 佘小莉,唐禎敏.基于TCP/IP協(xié)議的串口網(wǎng)關(guān)實時性的建模與分析[J].計算機工程與設(shè)計,2007,28(21):5115-5118.
[8] 常國春,史金飛,羅翔. Windows與Linux串口通信和網(wǎng)絡(luò)通信的比較和研究[J].中國制造業(yè)信息化,2006,35(7):49-52.