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