基于PC/104的實(shí)時(shí)姿態(tài)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)
1 引言
數(shù)據(jù)采集是信息處理的重要環(huán)節(jié)。在野外試驗(yàn)系統(tǒng)中,試驗(yàn)平臺(tái)的姿態(tài)及運(yùn)動(dòng)狀態(tài)信息測量對試驗(yàn)結(jié)果具有較大影響,因此,對試驗(yàn)平臺(tái)的姿態(tài)信息進(jìn)行實(shí)時(shí)采集具有現(xiàn)實(shí)意義。而且, 特別是對于導(dǎo)彈導(dǎo)引雷達(dá)等設(shè)備, 由于要求對現(xiàn)場信息實(shí)現(xiàn)實(shí)時(shí)測量和控制, 并且應(yīng)用環(huán)境復(fù)雜,因而對數(shù)據(jù)采集系統(tǒng)的精度、便攜性、可靠性與實(shí)時(shí)性具有較強(qiáng)要求。PC/104是嵌入式PC的機(jī)械電氣標(biāo)準(zhǔn)[2],它的制定為嵌入式應(yīng)用提供了標(biāo)準(zhǔn)的系統(tǒng)平臺(tái),它繼承了IBM-PC的開放式總線結(jié)構(gòu)的優(yōu)點(diǎn),為工程師提供了標(biāo)準(zhǔn)的、高可靠的、功能強(qiáng)大的、使用方便的系統(tǒng)組件。本文詳細(xì)論述了基于PC/104平臺(tái)的姿態(tài)數(shù)據(jù)、GPS定位信息采集系統(tǒng)的設(shè)計(jì)方案。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 系統(tǒng)組成及功能
采集系統(tǒng)在硬件上主要由地面固定站和便攜式流動(dòng)站組成。固定站包括:嵌入式控制計(jì)算機(jī)、多種姿態(tài)傳感器、固態(tài)硬盤和數(shù)傳系統(tǒng);流動(dòng)站包括:便攜式手持機(jī)和數(shù)傳電臺(tái)等組成。系統(tǒng)組成如圖1所示。[1]
圖1 系統(tǒng)組成框圖
地面固定站主要完成實(shí)時(shí)記錄地面GPS接收機(jī)的定位及姿態(tài)信息;記錄便攜式流動(dòng)站的GPS定位信息并進(jìn)行實(shí)時(shí)顯示[3][9];對地面設(shè)備進(jìn)行參數(shù)裝訂和系統(tǒng)設(shè)置,實(shí)時(shí)監(jiān)控地面設(shè)備的工作狀態(tài),實(shí)時(shí)顯示地面站和流動(dòng)站的相對空間位置和姿態(tài)數(shù)據(jù)并送給試驗(yàn)設(shè)備;實(shí)時(shí)記錄試驗(yàn)數(shù)據(jù),試驗(yàn)結(jié)束后進(jìn)行數(shù)據(jù)處理分析;打印試驗(yàn)數(shù)據(jù)、圖形、曲線及分析結(jié)果。其組成為:(1)GPS接收機(jī);(2)無線傳輸設(shè)備;(3)電源模塊;(4)控制計(jì)算機(jī)(地面固定站控制計(jì)算機(jī));(5)試驗(yàn)設(shè)備;(6)平臺(tái)姿態(tài)傳感器等。
流動(dòng)站主要完成實(shí)時(shí)記錄并顯示本站的GPS定位信息[1]、姿態(tài)信息,將所得到的數(shù)據(jù)通過無線數(shù)傳電臺(tái)傳輸給地面固定站進(jìn)行處理。其組成為:(1)GPS接收機(jī);(2)姿態(tài)傳感器;(3)無線傳輸設(shè)備;(4)電源及天線系統(tǒng);(5)控制計(jì)算機(jī)(流動(dòng)站手持機(jī))等。
本系統(tǒng)主要用于精確測量試驗(yàn)設(shè)備載體和流動(dòng)站的定位及姿態(tài)信息,通過無線數(shù)傳設(shè)備進(jìn)行通信,同時(shí)提供速度信息,導(dǎo)航信息,用以輸出給試驗(yàn)設(shè)備。固定站和流動(dòng)站無線傳輸采用半雙工模式,速率為9600bps。
2.2固定站控制計(jì)算機(jī)設(shè)計(jì)
固定站系統(tǒng)組件中控制計(jì)算機(jī)是核心,經(jīng)過分析,其外部數(shù)據(jù)輸入/輸出接口有:GPS數(shù)據(jù)串行RS232輸出1路,平臺(tái)姿態(tài)傳感器串行輸出1路,無線傳輸設(shè)備串行輸出1路,試驗(yàn)設(shè)備USB接口輸出1路。
在設(shè)計(jì)過程中按照便攜式、模塊化的思想,嵌入式計(jì)算機(jī)模塊采用DiamondSystems公司的ATHENA模塊,該模塊有CPU子模塊和數(shù)據(jù)獲取子模塊兩部分組成,可以支持DOS、Linux、Windows 98/NT/XP/2000、Windows CE.Net、VxWork等操作系統(tǒng),CPU子模塊包括128位圖形加速卡,128M板載內(nèi)存,支持UDMA33硬盤、最大可以安裝512M電子盤,4個(gè)全功能RS-232,2個(gè)UART,2個(gè)異步口,4個(gè)USB 1.1接口。模塊尺寸4.175英寸4.475英寸。完全能夠滿足設(shè)計(jì)要求,且具有端口備份。
2.3 其他部件的配置
除控制計(jì)算機(jī)外,其他部件包括:固定站GPS接收機(jī)、平臺(tái)姿態(tài)傳感器、無線傳輸設(shè)備和流動(dòng)站手持機(jī)。
1、GPS接收機(jī):固定站接收機(jī)選用NovAtel公司高性能雙天線GPS接收機(jī) BeelineTM 。該卡工作在L1頻率,采用雙GPS天線,通過原始觀測量來獲取基線的方位和俯仰角度,同時(shí)能得到主天線的三維位置和速度信息。數(shù)據(jù)率最高可達(dá)5Hz。流動(dòng)站接收機(jī)選用Garmin25 LP GPS模塊。
2、平臺(tái)姿態(tài)傳感器:在地面固定站和流動(dòng)站的姿態(tài)傳感器選用Crossbow公司出品的CXILT02E數(shù)字傾角傳感器。該產(chǎn)品可提供360度范圍的滾動(dòng)角和180度范圍的俯仰角。電源輸入9~30VDC,采用RS232輸出。
3、無線傳輸設(shè)備:采用Pacific Crest公司的PDL數(shù)傳電臺(tái)。該電臺(tái)在低功率工作時(shí),最大僅2W,傳輸波特率為4800~38400bps。
4、手持機(jī):選用濟(jì)南浪潮超越公司的巧金剛Ⅱ型加固手持式計(jì)算機(jī),該機(jī)RISC CPU主頻可達(dá)400MHz, 超高分辨率顯示, 內(nèi)置GPS模塊,實(shí)現(xiàn)全球定位, 可提供應(yīng)用軟件開發(fā)系統(tǒng),方便用戶進(jìn)行二次開發(fā),支持Windows CE操作系統(tǒng)。
3 系統(tǒng)軟件設(shè)計(jì)
在進(jìn)行軟件設(shè)計(jì)時(shí),固定站系統(tǒng)軟件設(shè)計(jì)采用了Borland公司的C++ Builder 6.0進(jìn)行二次開發(fā)而成[5]。在設(shè)計(jì)過程中,利用交互編程技術(shù)使窗口、事件和消息等Windows操作系統(tǒng)的工作方式與底層硬件驅(qū)動(dòng)程序相融合,使軟件完全按事件驅(qū)動(dòng)的模式來執(zhí)行,并在軟件中加強(qiáng)了容錯(cuò)能力設(shè)計(jì),在最大限度上避免了操作人員人為或非正常因素造成的錯(cuò)誤。
由于設(shè)計(jì)時(shí)采用手持機(jī)作為流動(dòng)站的主控計(jì)算機(jī),操作系統(tǒng)為Windows CE,因此,流動(dòng)站軟件設(shè)計(jì)采用EVC(Embedded Visual C++)作為開發(fā)工具。Windows CE是緊湊的、高效的和可升級的操作系統(tǒng),被廣泛應(yīng)用在各種嵌入式產(chǎn)品中。EVC是Microsoft公司退出的開發(fā)WinCE應(yīng)用程序的成熟、強(qiáng)大的工具,它和Visual C++開發(fā)工具具有一定的相似之處。
3.1 系統(tǒng)軟件組成
整個(gè)軟件系統(tǒng)包括固定站操控軟件和流動(dòng)站操控軟件。如圖2所示。
點(diǎn)擊看原圖
圖2軟件模塊組成圖
流動(dòng)站操控軟件主要完成通過串行接口接收手持機(jī)內(nèi)部GPS接收機(jī)數(shù)據(jù)、外部姿態(tài)傳感器數(shù)據(jù),并將數(shù)據(jù)進(jìn)行處理、存儲(chǔ)、顯示、打包下行發(fā)送等功能??偟膩碚f在結(jié)構(gòu)上主要分為:端口初始化模塊;數(shù)據(jù)接收模塊;數(shù)據(jù)處理模塊;數(shù)據(jù)輸出模塊。在數(shù)據(jù)打包下行過程中,軟件將接收的姿態(tài)傳感器數(shù)據(jù)和GPS接收機(jī)數(shù)據(jù)自定義格式進(jìn)行打包,一起輸出給無線數(shù)傳設(shè)備。
固定站操控軟件完成Beeline接收機(jī)數(shù)據(jù)、平臺(tái)姿態(tài)傳感器數(shù)據(jù)和流動(dòng)站通過數(shù)傳設(shè)備輸入的數(shù)據(jù)接收工作,經(jīng)過處理后,將有效的姿態(tài)數(shù)據(jù)通過USB接口輸出給試驗(yàn)設(shè)備使用。在結(jié)構(gòu)上由以下功能模塊組成:
初始化模塊。
該模塊在軟件啟動(dòng)時(shí),完成程序初始化,對各個(gè)端口的設(shè)置,包括串行口協(xié)議設(shè)定,USB接口初始化等。另外還要對固定站的Beeline GPS 接收機(jī)進(jìn)行初始化設(shè)置,以使之按照要求輸出有效數(shù)據(jù)。
數(shù)據(jù)接收模塊。
數(shù)據(jù)接收模塊包括固定站GPS數(shù)據(jù)接收子程序、流動(dòng)站打包數(shù)據(jù)接收子程序和固定站平臺(tái)姿態(tài)數(shù)據(jù)接收子程序。
數(shù)據(jù)處理模塊
數(shù)據(jù)轉(zhuǎn)換模塊完成數(shù)據(jù)包的解包過程,并且根據(jù)流動(dòng)站與固定站定位信息計(jì)算兩者間距離及流動(dòng)站以固定站為原點(diǎn)在空間直角坐標(biāo)系中的方位角和俯仰角。
數(shù)據(jù)輸出模塊
數(shù)據(jù)輸出主要用來將有效的姿態(tài)數(shù)據(jù)通過USB接口輸出給受試設(shè)備。
3.2 軟件設(shè)計(jì)難點(diǎn)分析
從圖1中不難看出,無論是固定站還是流動(dòng)站,對串口進(jìn)行操作都是一個(gè)不可或缺的方面。固定站有3個(gè)串口操作,流動(dòng)站需要3個(gè)串口操作。因此,設(shè)計(jì)過程中,統(tǒng)一采用YbCommDevice串口控件實(shí)現(xiàn)。通信參數(shù)可直接在屬性中設(shè)定,在程序運(yùn)行過程中也可通過輸入界面進(jìn)行多次更改。它支持任意格式的數(shù)據(jù)包收發(fā),支持多種數(shù)據(jù)包協(xié)議,操作簡單、實(shí)用,是一個(gè)較為實(shí)用的C++ Builder串口控件[4]。在實(shí)現(xiàn)時(shí),按照協(xié)議統(tǒng)一的原則,設(shè)定串口數(shù)據(jù)格式為9600bps,1個(gè)起始位,8個(gè)數(shù)據(jù)位,1個(gè)停止位,無奇偶校驗(yàn)。
在軟件的設(shè)計(jì)開發(fā)過程中發(fā)現(xiàn)包括GPS數(shù)據(jù)、傳感器數(shù)據(jù)等各種數(shù)據(jù)包均有固定格式,因此, 數(shù)據(jù)包的格式分析是重要一環(huán)。
1.GPS輸出格式分析[6]:兩型GPS接收機(jī)的定位信息格式為NMEA-0183格式。這一格式是較常用的一種數(shù)據(jù)通信標(biāo)準(zhǔn),它是在0180和0182的基礎(chǔ)上增加了GPS接收機(jī)輸出內(nèi)容而完成的。此格式直觀、易處理的優(yōu)點(diǎn)使得幾乎所有的接收機(jī)及OEM板都采用了這一格式。典型輸出的語句如下所示:
$ AABBB,ddd ……………………ddd,*hhCR>LF>
其各字段定義如下:
$:起始語句頭;
AA:對話設(shè)備識(shí)別符;
BBB:語句名;
,:域分隔符;
ddd…ddd:發(fā)送的數(shù)據(jù)內(nèi)容;
*:校驗(yàn)和符號;
hh:校驗(yàn)和;
CR>LF>:終止符(回車、換行)。
2.傾角傳感器輸出格式分析[8]:傾角傳感器數(shù)據(jù)包為6字節(jié)的定長數(shù)據(jù)包,數(shù)據(jù)格式如表1所示。數(shù)據(jù)頭字節(jié)和最后的校驗(yàn)和字節(jié)用于通信同步,實(shí)際格式為ASCII碼。具體定義如下:
表1:傾角傳感器數(shù)據(jù)包格式
3.USB接口操作:在對USB進(jìn)行操作的時(shí)候,必須要利用WinDDK將設(shè)備驅(qū)動(dòng)程序進(jìn)行編譯,主要步驟為:得到設(shè)備的廠家標(biāo)識(shí)和產(chǎn)品標(biāo)識(shí),利用驅(qū)動(dòng)程序的GUID值獲取設(shè)備的文件名, 用 CreateFile 函數(shù)打開設(shè)備,接著利用設(shè)備文件名和驅(qū)動(dòng)程序里面的 Pipe 名打開 Pipe, 訪問這個(gè) Pipe 對應(yīng)的 USB 端點(diǎn),利用CreateFile 得到的設(shè)備句柄,從而通過 DeviceIoControl 函數(shù)實(shí)現(xiàn)設(shè)備規(guī)定的動(dòng)作。需要注意的是廠家標(biāo)識(shí)、產(chǎn)品標(biāo)識(shí)和GUID值在驅(qū)動(dòng)程序的“*.inf”文件里面就可找到,如果沒有,則需要聯(lián)系設(shè)備生產(chǎn)廠家了;Pipe 名和DeviceIoControl函數(shù)的參數(shù)需要參考驅(qū)動(dòng)程序資料才能找到。
相關(guān)代碼如下:
HANDLE hPipe = OpenDevPipe("Pipe1"); //驅(qū)動(dòng)程序里面的 Pipe 名, 對應(yīng)訪問某個(gè)端點(diǎn)的 I/O,需要與驅(qū)動(dòng)一致
if(hPipe != INVALID_HANDLE_VALUE) //打開 Pipe 成功
{
WriteFile(hPipe, Buffer, BytesToWrite, nBytesWritten, NULL); //把 Buffer 里面的字節(jié)寫入 hPipe
CloseHandle(hPipe);
}
//使用 DeviceIoControl 訪問 USB 設(shè)備
HANDLE hDevice = OpenDevice();
if(hDevice != INVALID_HANDLE_VALUE) //打開設(shè)備成功
{
if(DeviceIoControl(hDevice, IOCTL_READ_xxxx, IOBlock, sizeof(IOBLOCK), c, 1, nBytes, NULL))
{ //操作成功,
}
CloseHandle(hDevice);
}
4 結(jié)束語
在系統(tǒng)設(shè)計(jì)中,以PC/104嵌入式計(jì)算機(jī)模塊為核心,構(gòu)建了由GPS接收機(jī)、無線數(shù)傳設(shè)備、傾角傳感器等設(shè)備組成的實(shí)時(shí)姿態(tài)數(shù)據(jù)采集系統(tǒng),試驗(yàn)表明,系統(tǒng)能夠?qū)崟r(shí)、穩(wěn)定、連續(xù)地提供固定站和流動(dòng)站的姿態(tài)信息、定位信息以及兩者的相對位置信息,從而能更好地掌握試驗(yàn)設(shè)備載體的運(yùn)動(dòng)狀態(tài),為得到精確的試驗(yàn)結(jié)論提供保障。
本文主要?jiǎng)?chuàng)新點(diǎn)在于以PC/104嵌入式計(jì)算機(jī)模塊為核心,構(gòu)建由GPS接收機(jī)、無線數(shù)傳設(shè)備、傾角傳感器等設(shè)備組成的實(shí)時(shí)姿態(tài)數(shù)據(jù)采集系統(tǒng),分析了軟件設(shè)計(jì)的難點(diǎn)及實(shí)現(xiàn)方法。在工程實(shí)踐上具有實(shí)際意義。
參考文獻(xiàn):
[1] 王惠南.GPS導(dǎo)航原理與應(yīng)用[M].科學(xué)出版社,2003.8
[2] 彭樹生. 3mm接收機(jī)的PC104數(shù)據(jù)采集與控制電路設(shè)計(jì)[M].微計(jì)算機(jī)信息(測控儀表自動(dòng)化),2003.NO.11 P.36-38
[3] 劉基余.GPS衛(wèi)星導(dǎo)航定位原理與方法[M].科學(xué)出版社,2003.8
[4] 范逸之等.C++ Builder與RS-232串行通信控制[M].清華大學(xué)出版社,2002.6
[5] 陳燦煌.C++ Builder 6徹底研究[M].中國鐵道出版社,2003.1
[6] Beeline GPS Receiver User’s Mannual[S].Novatel Company.
[7] Garmin25 LP GPS Receiver User’s Mannual[S].Novatel Company.
[8] CXTILT02E_02EC User’s Mannual[S].CrossBow Technology,INC
[9] Jeffrey S, Yoaz B et al. Micro GPS: On-Orbit demonstration of a new approach to GPS for space applications[J]. Navigation, ION, 2000, 47(2)
評論