林開泉,李國良,徐國貴,張永超,張學波
(91388部隊,廣東 湛江 524022)
水聲浮標用于水下目標的定位和跟蹤、水聲對抗、海洋調查和海洋監測等領域,它一般包括水聽器、采集模塊、無線通信裝置和GPS/北斗接收裝置[1]。以往水聲浮標的采集系統只進行采集和信號處理,智能化程度不是很高,基站無法對浮標進行遠程控制,并且體積和功耗比較大[2]。
XPE是一種嵌入式操作系統,它以組件化的形式實現Windows操作系統的功能,使用和Windows XP Professional一樣的二進制碼,即經過編譯后可以在XP運行的應用程序同樣可以在XPE運行[3]。XPE只按需添加必要的組件,占用的內存更少,不僅繼承了XP在穩定性、通用性上的優點,還具有模塊化、體積小、可以按需定制的優點[4]。
本文基于XPE(Windows XP Embedded)實現水聲浮標采集系統的開發,浮標除了可以采集,它本身具有操作系統,基站不但能夠實時接收到浮標采集的水聲數據,而且還可以通過網絡對浮標進行遙控。
基于XPE的水聲浮標采集系統主要由PCMB-6872嵌入式板、PCH2001采集卡、水聽器、浮標電池、GPS/北斗接收模塊、漏水報警裝置、無線網橋和微波天線構成,系統構成如圖1所示。

圖1 系統構成
圖1 中,PCMB-6872板是一種低功耗的PC/104標準嵌入式工業主板,板載512MB內存,尺寸96 mm×90 mm,具有網口、USB接口、串口、顯示器口等眾多接口。水聲浮標需要布放在水中,浮標結構如果太臃腫則不利于布放和回收,功耗太大則會限制它下水后的使用時間。基于以上考慮,PCMB-6872嵌入式板因為尺寸小、功耗低、接口豐富、運行可靠,搭載XPE操作系統,非常適合應用于水聲浮標中。采集卡采用阿爾泰科技的PCH2001采集卡,PCH2001采集卡是一種基于PC/104總線的數據采集卡,可直接與PCMB-6872板的PC/104接口相連。PCH2001采集卡轉換器類型為AD7321,轉換精度為13位,可以實現16路單端或者8路雙端采集,采樣速率為31 kHz~250 kHz,存儲器深度為16 K字FIFO存儲。
XPE系統與XP系統不同,它沒有現成的系統可以安裝,必須根據實際的使用需要,以組件化的形式進行開發,開發的過程比較復雜,但它具有小型化、運行速度快、占用資源小等優點,在工業控制和嵌入式系統中有廣泛的應用[5]。XPE系統的開發主要包括以下步驟:安裝XPE系統開發工具;硬件平臺分析;根據客戶需求進行組件設計[6]。水聲浮標采集系統功能需求主要包括支持C++程序開發、數據采集和網絡通信、信息加密和遠程控制等。
XPE組件數據庫提供的組件有上萬個組件,在配置下需要添加哪些組件根據硬件和該操作系統所要實現怎樣的功能決定,但有些組件是文件系統為FAT32的XPE操作系統所必須的,這主要有FAT組件、Fat Format組件、Shell組件、NT Loader組件。除了上述組件外,水聲浮標采集系統程序由于采用C++編寫,所以添加支持C++程序的Microsoft Visual C++Run Time組件和Microsoft C++Run Time Libraries組件。浮標采集后的數據需要用網絡發送到基站,因此需要添加網絡相關組件,主要包括Client for Microsoft Networks組件、Core Networking組件、TCP/IP Networking組件TCP/IP Version6等組件。基站對浮標需要進行遠程桌面控制,因此添加Terminal Server Clint組件、Network Location Awareness Service組件。系統需要進行網絡文件共享,因此添加TCP/IP Networking with File sharing and Clint for Microsoft Networks宏組件以及File sharing組件。用在水聲浮標的XPE操作系統需要安裝一些應用程序,因此添加Windows Application Compatibility宏組件和Shell Application Compatibility宏組件。添加完組件后再使用目標設計器自動檢測組件的關聯關系,最終生成需要的系統映像文件,將映像文件拷貝到第二個大小為700 MB的硬盤分區,重新啟動板子即完成了XPE操作系統的開發和安裝。
水聲浮標采集系統除了實時采集水聽器探測到的水聲數據外,其功能還包括將浮標位置信息、浮標電池電壓和漏水報警信息等浮標狀態信息傳遞至基站,同時浮標能夠響應基站發送過來的各種命令,實現基站對浮標的遙控。浮標和基站的通信采用無線方式進行,浮標自帶微波發射天線,經過功率放大后發射功率可以達到30 dBm.為了減少無線通信的壓力,使水聲數據能夠實時傳輸至基站,需要對水聲數據進行壓縮。為了確保信息傳輸的安全,對發送的數據還需要進行加密處理。
水聲浮標采集系統的程序采用C++進行編寫,經過編譯后的可執行文件放在開機啟動項,這樣就可以實現浮標上電后開機自動運行程序。程序采用多線程編程,除了主線程外,采集數據、數據傳輸與通信、GPS/北斗信號接收等都是一個單獨的線程,這樣做可以實現采集不丟點和數據的實時傳輸。系統程序流程圖如圖2所示,基本邏輯如下:系統初始化后,浮標開始監聽基站的采集命令,如果是采集水聲數據命令,則采集水聲數據,否則采集浮標狀態信息;采集到水聲數據后程序根據是否內記數據進行數據存儲,然后進行數據壓縮和加密處理,最后將數據發送給基站;采集到浮標狀態信息則無需上述存儲、壓縮和加密步驟,直接用無線網絡把浮標狀態發送給基站;完成數據傳輸后,程序進行是否停止采集的判斷,如果停止采集則采集結束,否則繼續進行數據的采集和傳輸。

圖2 水聲浮標采集系統程序流程圖
在編寫采集程序之前,需要安裝設備商提供的采集卡驅動程序。編寫采集部分程序的時候,首先創建設備對象,然后進行采集卡參數初始化。這些參數包括輸入量程、采集模式、觸發方式、采樣頻率等。本采集程序將采樣頻率默認設置為200 kHz,浮標可以根據基站的命令更改采樣速率。采集卡的輸出量程設置為-5 V~5 V,采樣方式為半滿,采集模式為連續、單端采集,觸發方式為邊沿觸發,觸發方向為負向,采用軟件觸發。設置好以上采集參數后,初始化硬件和啟動設備,然后調用采集函數即可實現既定的采集。因為采用的是半滿的方式進行采集,所以每次采集的數據量為8k個字,當存儲器未到半滿時則會等到半滿時再讀出采集卡存儲器的數據。采集的數據包括水聲數據和浮標電池電壓,但是水聲數據是最重要的數據,所以在進行程序設計的時候,默認情況只采集水聲數據,以防止采樣頻率設置比較高時采樣丟點,只有當基站發送查詢浮標狀態時才采集電池電壓信號。
浮標與基站基于TCP/IP協議利用無線網橋進行網絡通信,浮標是服務器,基站是客戶端。除了傳輸數據,在基站與浮標的通信中,基站還需要對浮標進行控制,這種控制是依賴于數據幀結構和幀類型的定義實現的。浮標與基站的通信采用比較簡單的數據幀結構,主要包括幀頭、幀類型及補碼、數據段。“幀類型及補碼”與浮標下達的命令一一對應,基站下達的命令包括查詢浮標狀態、采集水聲數據、內記數據清除、停止采集數據、原始數據回傳和關機。浮標收到一幀命令首先根據“幀類型和補碼”判斷該幀包含的命令,然后做出回應執行相應的命令,浮標與基站通信的幀類型定義如表1所示。

表1 浮標與基站通信的幀類型定義
浮標的通信部分程序采用Winsock進行編程,程序調用 socket、bind、listen 等 Windows API函數完成創建套接字、綁定和監聽工作后,采用Winsock I/O模型中的WSAAsyncSelect模型實現浮標是否接受連接和接收數據的判斷,避免通信阻塞的出現。當通信狀態不好時,通信有可能出現阻塞現象。為了避免這種情況,Winsock提供了幾種套接字I/O模型供選擇:阻塞模型、select模型、WSAAsyncSelect模型、WSAEvent Select模型、Overlapped模型和Completion Port模型。WSAAsyncSelect模型給指定的窗口發送自定義消息,通過消息對應的參數(WPARAM、LAARAM)來判斷是否發生錯誤或者感興趣的事件,感興趣的事件主要有連接事件、讀事件和寫事件。在使用WSAAsyncSelect模型時首先自定義一個消息,然后調用WSAAsyncSelect函數,最后調用WSAGETSELECTEVENT函數判斷發生了哪類事件,最后進行響應。
程序用串口來接收GPS/北斗信號,得到浮標的位置信息。程序打開串口后,進行串口配置,通過DCB結構體設置好波特率、停止位、奇偶校驗位等參數。打開串口時設置串口為異步I/O操作,并調用GetOverLappedResult函數獲取異步I/O操作結果,調用ReadFile函數即可實現串口的讀操作。程序接收到GPS/北斗信息后,只將浮標經緯度發送給基站,其他信息不用。
水聲浮標采集系統采用Adaptive Differential Pulse Code Modulation(ADPCM)數據壓縮算法和對稱密鑰加密算法進行數據壓縮和加密。ADPCM是一種針對16bit聲音波形數據的有損壓縮算法,它將聲音流中每次采樣的16bit數據以4bit存儲,壓縮比為4∶1.ADPCM通過保存波形的變化情況來達到描述整個波形的目的,即ADPCM記錄的量化值不是每個采樣點的幅值,而是該點的幅值與前一個采樣點幅值之差。本采集程序ADPCM壓縮算法在基本不影響數據質量的情況下可以有效降低數據量,對于16k個數據點的壓縮時間可以控制在幾十個毫秒量級,不會影響實時的數據傳輸。程序采用對稱密鑰加密方法進行加密,加密和解密使用同一個密鑰。當收發雙方能夠安全地傳遞蜜鑰時,對稱密鑰加密是最好的加密方法,適用于本系統音頻通信數據流的加密。
在完成適用于水聲浮標的嵌入式XPE操作系統、浮標采集軟件、船載基站顯控軟件開發后,系統開機,船載基站遙控浮標,完成采集數據、浮標狀態查詢、GPS/北斗信號接收、數據壓縮和加密、數據傳輸和通信等操作。在該試驗中,浮標采集的信號源條件為:信號頻率 13.51 kHz,LFM信號,帶寬1 kHz,脈寬 10 ms,周期4 s,功率175 dB,系統采樣頻率 80 kHz.在收到采集和控制指令后,浮標完成水聲信號采集和回傳,經船載基站信號處理后,其結果如圖3所示。圖3中,系統能穩定接收信號,時域信號明顯,頻譜圖在13 kHz~14 kHz出有一個較強的信號,25 kHz~28 kHz為信號倍頻程所致,在14 kHz附近每隔4 s由一個明顯的亮點,為接收的發射信號。試驗表明系統運行正常,數據采集、通信、信號處理等功能完整。作性。在編程的時候也盡量考慮了程序的可靠性和健壯性,避免采集丟點和通信阻塞等情況的出現。

圖3 船載基站接收的浮標采集數據及分析圖
本文主要給出了一種新的水聲浮標采集系統的實現方法,該方法的創新部分在于,浮標采集系統是基于XPE操作系統的,這個操作系統是一個面向需求的Windows操作系統,通過組件設計的方式實現操作系統所需要的功能,使用這種操作系統有三點好處:一是只添加了需要的組件,因此系統占用內存小;二是和XP使用一樣的二進制碼,在XP下可以運行的應用程序在XPE也能運行;三是這種系統使用的嵌入式板,功率損耗小。試驗結果表明系統運行正常,各項功能完整,應用軟件的開發部分,除了實采集數據和數據傳輸功能外,基站可以通過程序對浮標的工作狀態進行控制,提高了采集系統的可操