摘 要:為了自動(dòng)探測(cè)海底中氫氣、氧氣、氮?dú)狻⒓淄榈仁聚櫄怏w含量,同濟(jì)大學(xué)海洋與地球科學(xué)學(xué)院研制了一套海底示蹤氣體原位自動(dòng)檢測(cè)系統(tǒng)。本文以這套系統(tǒng)的遠(yuǎn)程控制軟件為例,研究了建立海底示蹤氣體原位自動(dòng)檢測(cè)系統(tǒng)通信協(xié)議的設(shè)計(jì)步驟以及實(shí)現(xiàn)方法,提出了一種將所有數(shù)據(jù)包抽象成一個(gè)抽象類,讓繼承類去重寫(xiě)發(fā)送函數(shù)和處理函數(shù)的方法,極大的提高了通信協(xié)議的可擴(kuò)展性以及穩(wěn)定性;在通信過(guò)程中,先將接收的數(shù)據(jù)存入鏈表中,讓后臺(tái)線程處理鏈表中的數(shù)據(jù),從而將通信業(yè)務(wù)與邏輯處理分開(kāi),提高通信的效率,從應(yīng)用程序?qū)哟伪WC了通信的實(shí)時(shí)性。
關(guān)鍵詞:應(yīng)用層協(xié)議;海底觀測(cè)網(wǎng);抽象類;遠(yuǎn)程控制;海底示蹤氣體
中圖分類號(hào):TP274.4 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-7712 (2014) 02-0000-03
當(dāng)前地球科學(xué)研究的最大特點(diǎn)在于觀測(cè)系統(tǒng)的迅速發(fā)展,如果把地面與海面看作地球科學(xué)的第一個(gè)觀測(cè)平臺(tái),把空中的遙測(cè)遙感看作第二個(gè)觀測(cè)平臺(tái),那么海底觀測(cè)網(wǎng)絡(luò)平臺(tái)是繼對(duì)地面/洋面、空中之后,觀測(cè)地球系統(tǒng)的第三個(gè)平臺(tái)[1]。一個(gè)完整地海底觀測(cè)網(wǎng)絡(luò)從結(jié)構(gòu)上可以分為基站部分,海底接駁盒,海底電壓轉(zhuǎn)換設(shè)備以及科學(xué)儀器[2]。觀測(cè)海底的主要目的是探測(cè)和理解大洋系統(tǒng)的物理、化學(xué)、生物和地質(zhì)等過(guò)程,而深海中溶解態(tài)氣體與這些過(guò)程密切相關(guān)[6],利用這些標(biāo)志性氣體的異常信息尋找海底的成礦礦區(qū),是當(dāng)前國(guó)際上找礦的重要發(fā)展趨勢(shì)之一,研究這些氣體的在深海中的含量具有深刻意義[7]。因此,如何在海底原位自動(dòng)觀測(cè)這些示蹤氣體含量,研制相關(guān)的深海儀器成為海底觀測(cè)網(wǎng)研究與建設(shè)迫切需要解決的科學(xué)問(wèn)題。
一、系統(tǒng)分析
如果將深海中溶解態(tài)氣體樣本采集回實(shí)驗(yàn)室進(jìn)行分析,由于室內(nèi)的溫度、壓力等與海底的差別,氣體的含量、成分可能會(huì)發(fā)生變化,所以最好的方法是將實(shí)驗(yàn)室的儀器投到海底去分析樣品[1]。本文所支持的海底示蹤氣體原位自動(dòng)檢測(cè)系統(tǒng)就是以氣象色譜為基礎(chǔ)建立的一套自動(dòng)分析海底示蹤氣體成分與含量的科學(xué)儀器(圖1),該系統(tǒng)可作為科學(xué)儀器布置在海底觀測(cè)網(wǎng)絡(luò)的末端,原地實(shí)時(shí)探測(cè)海底H2、CH4、CO2、N2的含量,然后將采集的數(shù)據(jù)上傳到遠(yuǎn)程控制軟件和岸基站海底觀測(cè)網(wǎng)數(shù)據(jù)庫(kù)中。
二、通信協(xié)議分析
在數(shù)據(jù)傳輸?shù)倪^(guò)程中,考慮到海底環(huán)境的特殊性、系統(tǒng)本身的復(fù)雜性和儀器多樣性,通信協(xié)議設(shè)計(jì)需要注意如下幾點(diǎn):(1)穩(wěn)定性。海底數(shù)據(jù)的采集是一個(gè)連續(xù)的過(guò)程,需要24小時(shí)不間斷的采集數(shù)據(jù),并將采集的數(shù)據(jù)發(fā)送回岸基/船基遠(yuǎn)程控制系統(tǒng)和海底觀測(cè)網(wǎng)數(shù)據(jù)庫(kù),良好的穩(wěn)定性是保證通信持續(xù)進(jìn)行的保證。(2)實(shí)時(shí)性。為了保證岸基/船基工作人員在第一時(shí)間觀測(cè)到海底數(shù)據(jù)發(fā)生的變化,通信協(xié)議應(yīng)該具有較高的實(shí)時(shí)性。(3)可擴(kuò)展性。海底觀測(cè)網(wǎng)處在不斷的發(fā)展與完善階段,在以后可能會(huì)有更多先進(jìn)的設(shè)備連接到網(wǎng)絡(luò)中,所以通信協(xié)議也會(huì)不斷的擴(kuò)展,良好的擴(kuò)展性能保證能夠給系統(tǒng)的維護(hù)修改帶來(lái)方便。
三、通信協(xié)議設(shè)計(jì)
數(shù)據(jù)包是通信傳輸中的數(shù)據(jù)單位,數(shù)據(jù)包格式的設(shè)計(jì)直接影響到數(shù)據(jù)的傳輸與解析效率。本系統(tǒng)網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)包括:注冊(cè)信息、指令數(shù)據(jù)、監(jiān)測(cè)數(shù)據(jù)。
(一)數(shù)據(jù)包定義
在數(shù)據(jù)通信過(guò)程中,每個(gè)數(shù)據(jù)包都包括四個(gè)部分:PackageLen(數(shù)據(jù)包長(zhǎng)度)、Head(頭結(jié)構(gòu))、Body(主體結(jié)構(gòu))、ACK(校驗(yàn))。其中PackageLen、Head、ACK是公共的部分,但對(duì)于Body結(jié)構(gòu)體,不同的消息具有不同的內(nèi)容。
(二)數(shù)據(jù)格式定義
在整個(gè)系統(tǒng)中,水下中央控制單元(CCS)是服務(wù)器,其它設(shè)備都以客戶端的形式與CCS連接。當(dāng)其它設(shè)備第一次連接服務(wù)器時(shí),必須發(fā)送數(shù)據(jù)類型為0xFF的數(shù)據(jù)包(圖2),在服務(wù)器端進(jìn)行注冊(cè),以便中央控制單元為其建立連接。
為了實(shí)現(xiàn)對(duì)海底水下設(shè)備的控制,需要通過(guò)遠(yuǎn)程控制軟件向水下中央控制單元發(fā)送控制命令。指令數(shù)據(jù)包括中央控制系統(tǒng)控制命令數(shù)據(jù)和電路儀器控制命令數(shù)據(jù)。
中央控制單元控制命令包括系統(tǒng)運(yùn)行模式控制命令和GC控制命令。這兩個(gè)指令決定了水下中央控制單元(CCS)和水下氣體分析裝置(GC)的工作狀態(tài)(圖3)。
電路設(shè)備控制命令主要用來(lái)控制各個(gè)部分的電源開(kāi)關(guān)狀態(tài),包括各模塊電源開(kāi)關(guān)、電機(jī)與閥控制命令、步進(jìn)電機(jī)控制命令(圖4)。
監(jiān)測(cè)數(shù)據(jù)包括中央控制單元監(jiān)測(cè)數(shù)據(jù)、中央控制單元電源參數(shù)和GC分析數(shù)據(jù)。中央控制單元監(jiān)測(cè)數(shù)據(jù)主要傳送水下設(shè)備艙的溫度、壓力數(shù)據(jù)以及GC的狀態(tài)數(shù)據(jù)。
為了遠(yuǎn)程監(jiān)視海底設(shè)備的工作狀態(tài),中央控制單元實(shí)時(shí)采集電流數(shù)據(jù)、電壓數(shù)據(jù)、電源開(kāi)關(guān)狀態(tài)、步進(jìn)電機(jī)狀態(tài)、電磁閥狀態(tài)、系統(tǒng)溫度等電源參數(shù)數(shù)據(jù)后,發(fā)送給遠(yuǎn)程控制軟件。中央控制單元電源參數(shù)如圖6所示。
GC分析數(shù)據(jù)是整個(gè)系統(tǒng)的核心數(shù)據(jù),數(shù)據(jù)包中的數(shù)據(jù)分為三個(gè)部分,包編號(hào)、時(shí)間數(shù)據(jù)、氣體分析結(jié)果(氫氣、氧氣、氮?dú)狻⒓淄楹浚鳉怏w分析結(jié)果分別用4Byte表示(圖7)。
四、通信協(xié)議設(shè)計(jì)
(一)協(xié)議內(nèi)容的類設(shè)計(jì)
從數(shù)據(jù)格式的定義中可知,通信協(xié)議內(nèi)容(數(shù)據(jù)包)的整體結(jié)構(gòu)相同,只有Body(數(shù)據(jù)體)部分存在差別,故將所有的數(shù)據(jù)包設(shè)計(jì)成如圖8所示的類結(jié)構(gòu)。CDataBase為基類,該類為抽象類,不能定義該類型的對(duì)象,其它的數(shù)據(jù)類型繼承于該類。
在圖9中,CDataBase類為所有數(shù)據(jù)包類型的基類,它是一個(gè)抽象類。在該類中有SendData()和ProcessIO()兩個(gè)純虛函數(shù),這兩個(gè)函數(shù)代表了每一種結(jié)構(gòu)的數(shù)據(jù)都必須具有的操作,繼承類必須重寫(xiě)這些函數(shù)。SendData()函數(shù)表示發(fā)送當(dāng)前數(shù)據(jù)包中的內(nèi)容,ProcessIO()函數(shù)的功能是處理接收到的當(dāng)前類型的數(shù)據(jù),例如存儲(chǔ)、實(shí)時(shí)顯示等等。在基類中還定義了一些公共接口函數(shù),比如CountCheckSum(),SendAnswerData()等函數(shù)。其中CountCheckSum()函數(shù)的功能是計(jì)算校驗(yàn)和,SendAnswerData()的功能是發(fā)送應(yīng)答數(shù)據(jù)。
(二)通信協(xié)議實(shí)現(xiàn)及測(cè)試結(jié)果分析
1.通信協(xié)議實(shí)現(xiàn)
在遠(yuǎn)程控制軟件中,采用Microsoft visual C++2005實(shí)現(xiàn)了本文設(shè)計(jì)的通信協(xié)議,通信的主要流程如圖9所示。
在圖9中,遠(yuǎn)程控制軟件向服務(wù)器發(fā)起連接請(qǐng)求,如果連接成功,則調(diào)用CRCCSSocket類中的Recv()函數(shù)接收數(shù)據(jù),將接受的數(shù)據(jù)存入CRCCSList中,然后調(diào)用CDataBase中的ProcessIO()函數(shù)處理接收的數(shù)據(jù),最后調(diào)用CDataBase中的SendAnswerACK()函數(shù)應(yīng)答數(shù)據(jù)包,通知服務(wù)器正確收到該數(shù)據(jù),本次通信結(jié)束。
2.軟件測(cè)試結(jié)果分析
目前,基于本文通信協(xié)議開(kāi)發(fā)的中央控制系統(tǒng)遠(yuǎn)程控制軟件已經(jīng)交付使用,實(shí)驗(yàn)室的測(cè)試運(yùn)行過(guò)程中,該軟件表現(xiàn)出了良好的運(yùn)行穩(wěn)定性、控制與監(jiān)測(cè)實(shí)時(shí)性、收發(fā)數(shù)據(jù)準(zhǔn)確性和完整性、數(shù)據(jù)類型可擴(kuò)充性等優(yōu)良性能,滿足了海底示蹤氣體原位觀測(cè)要求。
(1)穩(wěn)定性。在同濟(jì)大學(xué)海底觀測(cè)網(wǎng)實(shí)驗(yàn)室進(jìn)行了該系統(tǒng)的測(cè)試實(shí)驗(yàn),遠(yuǎn)程控制系統(tǒng)控制界面如圖10所示。在圖中,遠(yuǎn)程控制軟件正處于無(wú)人值守模式,設(shè)備艙環(huán)境參數(shù)的三條曲線分別表示設(shè)備艙溫度、設(shè)備艙壓力、設(shè)備艙濕度三個(gè)數(shù)據(jù)的變化,在測(cè)試的過(guò)程中,這三個(gè)監(jiān)測(cè)數(shù)值基本保持平穩(wěn)的變化,無(wú)劇烈抖動(dòng)的現(xiàn)象,說(shuō)明所有數(shù)據(jù)都被正確的接收并且顯示出來(lái)。
(2)實(shí)時(shí)性。由于遠(yuǎn)程控制系統(tǒng)與中央控制單元采用100Mb以太網(wǎng)進(jìn)行通信,網(wǎng)絡(luò)傳輸速度快,從硬件層次保證了系統(tǒng)的實(shí)時(shí)性。另外,通過(guò)前述通信協(xié)議及處理優(yōu)化設(shè)計(jì),在圖9中的實(shí)時(shí)監(jiān)測(cè)曲線中,并未出現(xiàn)明顯的曲線抖動(dòng)或突變的情況;
(3)擴(kuò)展性。如果系統(tǒng)需要添加新的數(shù)據(jù)類型,只需以新擴(kuò)充的數(shù)據(jù)類型為基礎(chǔ),創(chuàng)建一個(gè)繼承CBaseData基類的子類,然后再重寫(xiě)相關(guān)的處理函數(shù)即可,擴(kuò)展方便、快捷。在本系統(tǒng)研發(fā)過(guò)程中,后期擴(kuò)展了CRunProgramData(離線參數(shù)的設(shè)置)數(shù)據(jù),添加如下代碼后(圖11),程序便基本完成了對(duì)離線參數(shù)數(shù)據(jù)的處理。
五、結(jié)束語(yǔ)
通過(guò)海底示蹤氣體原位自動(dòng)檢測(cè)系統(tǒng)之遠(yuǎn)程控制軟件、水下中央控制單元、水下氣體分析裝置等三個(gè)組成部分之間數(shù)據(jù)的通信需求分析,本文研究對(duì)其通信協(xié)議進(jìn)行了設(shè)計(jì)和實(shí)現(xiàn)。為便于統(tǒng)一處理和擴(kuò)充,總體上將通信中的數(shù)據(jù)包設(shè)計(jì)成PackageLen(數(shù)據(jù)包長(zhǎng)度)、DataHead(包頭)、Body(數(shù)據(jù)體)、ACK(校驗(yàn)和)等四個(gè)部分,并將其構(gòu)建成一個(gè)抽象基類CDataBase,在該類中建立了處理對(duì)應(yīng)數(shù)據(jù)體的純虛函數(shù)接口。只要調(diào)用該接口函數(shù),就能實(shí)現(xiàn)對(duì)相應(yīng)數(shù)據(jù)的處理,極大地提高了通信協(xié)議的擴(kuò)展性。為了提高程序的可重用性,甚至可以將通信協(xié)議部分的內(nèi)容編寫(xiě)成動(dòng)態(tài)鏈接庫(kù)以便其他應(yīng)用調(diào)用,但由于研究時(shí)間所限,本文未完成該部分的工作。
在數(shù)據(jù)通信的過(guò)程中采用TCP/IP傳輸協(xié)議,保證了數(shù)據(jù)準(zhǔn)確有序的傳送;接收與發(fā)送的數(shù)據(jù)存入鏈表中,然后交給后臺(tái)處理線程處理,使得通信的業(yè)務(wù)與邏輯分開(kāi),提高了通信的處理效率,從應(yīng)用層保證了通信的實(shí)時(shí)性。
參考文獻(xiàn):
[1]汪品先.從海底觀察地球——地球系統(tǒng)的第三個(gè)觀測(cè)平臺(tái)[J].自然雜志,2007(03):125-130+122.
[2]薛志剛,金波,李德駿.海底觀測(cè)網(wǎng)絡(luò)的監(jiān)測(cè)信息系統(tǒng)研究[J].輕工機(jī)械,2010(04):83-86.
[3]吳邦春,彭曉彤,周懷陽(yáng).基于海底觀測(cè)網(wǎng)的深海化學(xué)監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)[J].儀器儀表學(xué)報(bào),2011(05):1171-1176.
[4]彭曉彤,周懷陽(yáng),吳邦春.美國(guó)MARS海底觀測(cè)網(wǎng)絡(luò)中國(guó)節(jié)點(diǎn)試驗(yàn)[J].地球科學(xué)進(jìn)展,2011(09):991-996.
[5]王虎,楊群慧,季福武.二維氣相色譜法分析天然氣水合物區(qū)沉積物間隙水中示蹤氣體的濃度[J].色譜,2011(01):70-74.
[6]周炳坤,張躍,徐廷松.遠(yuǎn)程多生理參數(shù)監(jiān)護(hù)系統(tǒng)通信協(xié)議的研究[J].計(jì)算機(jī)工程,2008(18):102-104.
[7]張曉麗.\"加拿大海王星\"直播海底世界[N].遼寧日?qǐng)?bào),2010-01-14(005).
[8]楊霞.基于虛擬儀器技術(shù)的色譜工作站的開(kāi)發(fā)[D].南京工業(yè)大學(xué),2006.
[9]趙麗萍.遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)通信協(xié)議設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2004(10):51-52+13.
[作者簡(jiǎn)介]鐘文章(1988-),男,湖南寧鄉(xiāng)人,碩士研究生,研究方向:GIS應(yīng)用軟件開(kāi)發(fā);通訊作者:李德平(1964-),男,湖南常德人,教授,博士,研究方向:GIS應(yīng)用開(kāi)發(fā)與自然資源評(píng)價(jià)。
[基金項(xiàng)目]國(guó)家863項(xiàng)目(2009AA09Z2487830),湖南師范大學(xué)地圖學(xué)與地理信息系統(tǒng)校級(jí)重點(diǎn)學(xué)科建設(shè)項(xiàng)目資助。