摘 要: 針對上海世博會車載系留氣球監(jiān)測系統(tǒng)的應(yīng)用要求,設(shè)計了基于LabWindows的地面測控系統(tǒng),該系統(tǒng)具有多串口數(shù)據(jù)采集、數(shù)據(jù)庫存儲數(shù)據(jù)、用SQL語句訪問數(shù)據(jù)庫等特點(diǎn),利用POS和GPS數(shù)據(jù)實現(xiàn)地面目標(biāo)定位。
關(guān)鍵詞: 測控;數(shù)據(jù)庫;SQL;目標(biāo)定位;LabWindows
在浮空器領(lǐng)域,地面測控系統(tǒng)的性能和可靠性對于浮空器載荷的工作性能尤為重要。在上海世博會車載系留氣球監(jiān)測系統(tǒng)任務(wù)系統(tǒng)中,地面測控系統(tǒng)面向的對象是浮空平臺上裝載的光電載荷及其配套設(shè)備,主要包括可見光高清攝像機(jī)、紅外相機(jī)和高光譜相機(jī)、POS(位置與姿態(tài)測量)系統(tǒng)及球上測控系統(tǒng)等,圖1所示是車載系留氣球監(jiān)測系統(tǒng)任務(wù)應(yīng)用系統(tǒng)的組成框圖。
車載系留氣球監(jiān)測系統(tǒng)任務(wù)系統(tǒng)地面測控系統(tǒng)軟件的目標(biāo)是保證球上光電平臺上各個載荷與球下控制設(shè)備的正常工作,對球上載荷的狀態(tài)數(shù)據(jù)進(jìn)行采集、接收、顯示與存儲,控制球上各個載荷的狀態(tài)。對球上載荷的某些參數(shù)具有報警功能,保證控制命令和參數(shù)返回具有很好的實時性,同時測控系統(tǒng)還要對世博園地面目標(biāo)進(jìn)行定位。
1 系統(tǒng)功能
車載系留氣球監(jiān)測系統(tǒng)任務(wù)系統(tǒng)地面測控系統(tǒng)軟件具體功能如下:
(1)數(shù)據(jù)采集功能。對可見光攝像機(jī)、POS系統(tǒng)、紅外和高光譜相機(jī)、供配電等單元的工作數(shù)據(jù)與狀態(tài)數(shù)據(jù)進(jìn)行實時采集。
(2)坐標(biāo)解算功能。解算出氣球位置變化引起的可見光監(jiān)測系統(tǒng)吊艙的姿態(tài)變化。
(3)球下目標(biāo)位置解算功能。利用球載POS系統(tǒng)獲得的光電平臺姿態(tài)和位置以及可見光監(jiān)測吊艙獲得的轉(zhuǎn)角信息解算球下目標(biāo)點(diǎn)的位置坐標(biāo)。
(4)遙控功能。對可見光攝像機(jī)、POS系統(tǒng)、紅外和高光譜相機(jī)、供配電單元等進(jìn)行指令控制,包括通斷電、可見光攝像機(jī)視軸指向控制、攝像機(jī)變焦、任務(wù)應(yīng)用各分系統(tǒng)的通斷電及保護(hù)等。
(5)數(shù)據(jù)顯示與存儲功能。對球載設(shè)備的所有遙測數(shù)據(jù)在球下測控系統(tǒng)操控臺上均能實時顯示,重要數(shù)據(jù)存儲到硬盤上以供分析。
2 系統(tǒng)設(shè)計
2.1 設(shè)計工具的選擇
在應(yīng)用程序開發(fā)軟件中,VC和VB等工具開發(fā)周期普遍較長、難度也比較高。美國NI公司推出的NI LabWindows/CVI是一類久經(jīng)驗證的ANSI C集成開發(fā)環(huán)境,為用戶提供了用于創(chuàng)建測試和控制應(yīng)用的全套編程工具[1]。NI LabWindows/CVI兼有ANSI C的耐用性、復(fù)用性和特定的工程性能,適用于儀器控制、數(shù)據(jù)采集、分析和用戶界面開發(fā)。NI的數(shù)據(jù)庫連接工具包(Database Connectivity Toolkit)具有完整的SQL功能,與本地或遠(yuǎn)程數(shù)據(jù)庫可直接交互式操作,高級而易用的功能適用于常見的數(shù)據(jù)庫操作,利用其豐富的按鈕和圖形等用戶界面庫函數(shù),可大大縮短軟件的開發(fā)周期,滿足軟件開發(fā)的實際需要。
根據(jù)地面測控系統(tǒng)上述功能要求,采用模塊化設(shè)計方法把系統(tǒng)分為四個功能模塊:串口采集模塊、數(shù)據(jù)分析處理(包括定位)模塊、數(shù)據(jù)顯示模塊和數(shù)據(jù)管理模塊。采用單線程定時器技術(shù)滿足各個載荷不同數(shù)據(jù)采集頻率的要求;根據(jù)POS提供的數(shù)據(jù)和可見光監(jiān)測球艙(穩(wěn)定轉(zhuǎn)臺)輸出的的遙測數(shù)據(jù),通過空間坐標(biāo)變換計算球下目標(biāo)位置;根據(jù)遙測下行數(shù)據(jù)流量大(傳輸速率6.2 Gb/s)、運(yùn)行時間長(182天)的特點(diǎn),采用SQL Tookit工具包應(yīng)用Access數(shù)據(jù)庫存儲數(shù)據(jù)。系統(tǒng)物理模塊框圖如圖2所示,以下詳細(xì)介紹其中幾個重要的物理模塊的設(shè)計。
2.2 遙測數(shù)據(jù)接收模塊
LabWindows/CVI編程語言提供了豐富的串口函數(shù),可以很容易實現(xiàn)串口通信功能。利用豐富的RS-232庫函數(shù)可以方便地實現(xiàn)對載荷的數(shù)據(jù)/命令收發(fā)功能,這些函數(shù)包括:OpenCom函數(shù)打開串口、OpenComConfig函數(shù)設(shè)置串口并用設(shè)置串口的返回值來判定串口的狀態(tài)、ComWrtByte函數(shù)對串口發(fā)送字節(jié)、ComReadByte函數(shù)由串口接收字節(jié)、CloseCom函數(shù)關(guān)閉串口等[2]。圖3所示為串口初始化流程圖。
以下為串口初始化程序示例:
//打開并設(shè)置串號,波特率為9600,沒有校驗,8位數(shù)據(jù)位,1位停止位,最大輸入和輸出隊列長度都為512
OpenComConfig(ComPort,””,9600,0,8,1,512,512);
FlushlnQ(ComPo~); //清空接收隊列
FlushOutQ(ComPo~); //清空發(fā)送隊列
//裝載串回調(diào)函數(shù)
Installc0mcallback(ComPo,eventMask,3,eventChar,ComCallback,0);
CloseCom(ComPo); //關(guān)閉串13
2.3 遙控指令發(fā)送模塊
在車載系留氣球監(jiān)測系統(tǒng)任務(wù)應(yīng)用系統(tǒng)測控分系統(tǒng)中,要求實時監(jiān)測各載荷的工作狀態(tài)。根據(jù)要求本系統(tǒng)具有不同的數(shù)據(jù)/控制命令發(fā)送頻率,最小周期是20 ms,最大周期是1 s??紤]到本系統(tǒng)不要求精確定時,可以采用Timer定時器。
定時器的建立、刪除和設(shè)置可通過調(diào)用New Timer函數(shù)、Discard Timer函數(shù)和Set TimerAttribute函數(shù)來實現(xiàn)。定時響應(yīng)函數(shù)的聲明為:
Int CVICALLBACK MyTimerCallback(int reserved,int theTimerId,int event,void *callbackData,int eventData1,int eventData2);
測試系統(tǒng)軟件啟動之后,建立一個定時器;然后設(shè)置定時器的定時時間和響應(yīng)函數(shù);在軟件退出時,刪除定時器;在定時響應(yīng)函數(shù)中,調(diào)用串口函數(shù)和面板響應(yīng)函數(shù)讀取串口數(shù)據(jù)來實現(xiàn)實時狀態(tài)監(jiān)測的功能,并定時發(fā)送控制指令。
2.4 地面目標(biāo)位置定位模塊
世博會車載系留氣球監(jiān)測系統(tǒng)任務(wù)應(yīng)用系統(tǒng)主要是監(jiān)控世博會園區(qū),對地面目標(biāo)進(jìn)行定位,所有圖像數(shù)據(jù)、定位數(shù)據(jù)和遙測數(shù)據(jù)通過地面光纜傳送至世博總控中心,為世博園安全提供有力的保障。
POS定位與姿態(tài)測量系統(tǒng)及可見光轉(zhuǎn)臺均固定于浮空器光電平臺安裝基面上,當(dāng)可見光球艙瞄準(zhǔn)地面靜態(tài)目標(biāo)后,可輸出視軸相對可見光轉(zhuǎn)臺自身的方位角和俯仰角,利用可見光轉(zhuǎn)臺與POS系統(tǒng)(方位和姿態(tài)角)的相對位置數(shù)據(jù)(事先標(biāo)定),同時采集POS系統(tǒng)輸出的定位數(shù)據(jù)和光電平臺的姿態(tài)數(shù)據(jù),通過一系列的坐標(biāo)轉(zhuǎn)換后,可獲得視軸在以地面差分基站為原點(diǎn)建立的參考坐標(biāo)系中的直線方程,進(jìn)而可以得到目標(biāo)點(diǎn)的定位數(shù)據(jù)。定位示意圖如圖4所示。
2.5 數(shù)據(jù)存儲模塊
地面操作人員需要對載荷參數(shù)、設(shè)備狀態(tài)和設(shè)備操作等信息進(jìn)行實時存儲,如果用文本文件、excel等格式存儲數(shù)據(jù),考慮到本系統(tǒng)數(shù)據(jù)量大和運(yùn)行時間長等特點(diǎn),存儲文件將會很大,這對后續(xù)文件運(yùn)行、查詢等操作將產(chǎn)生影響,本系統(tǒng)通過創(chuàng)建數(shù)據(jù)庫使數(shù)據(jù)存儲、數(shù)據(jù)查詢等操作變得簡單方便。
2.5.1 數(shù)據(jù)庫建立
首先需要新建數(shù)據(jù)庫,將獲取的數(shù)據(jù)寫入數(shù)據(jù)庫,本文采用微軟公司的Access軟件。Access存儲方式單一,管理對象包括表、查詢、窗體、報表、頁、宏和模塊, 數(shù)據(jù)存放在后綴(.mdb)的數(shù)據(jù)庫文件中,便于用戶的操作和管理[3]。系統(tǒng)訪問數(shù)據(jù)庫時,首先必須用ODBC管理器注冊一個數(shù)據(jù)源,管理器根據(jù)數(shù)據(jù)源提供的數(shù)據(jù)庫位置、數(shù)據(jù)庫類型及ODBC驅(qū)動程序等信息,建立ODBC與具體數(shù)據(jù)庫的聯(lián)系。步驟如下:
(1)打開控制面版→管理工具→數(shù)據(jù)源odbc;
(2)點(diǎn)擊系統(tǒng)dsn,添加并選擇Microsoft Access driver(*.mdb),在“數(shù)據(jù)源名稱”中輸入定義的名字;
(3)安裝Office里面的Accees,安裝好以后打開Access,新建一個數(shù)據(jù)庫,命名為***.mdb;
(4)使用設(shè)計器創(chuàng)建新的表,一個數(shù)據(jù)庫MDB文件里面可以建立多個表。雙擊“使用設(shè)計器創(chuàng)建表”即可;
(5)填寫字段名字,選擇字段類型,一條記錄可以有很多字段,字段大小即表示是這個字段最多可容納的字符數(shù)。
該模塊部分代碼如下:
int hdbc; //定義數(shù)據(jù)庫連接句柄
int hstmt; //定義SQL連接句柄
hdbc=DBConnect(”DSN=TestData”); //連接數(shù)據(jù)源
hstmt=DBActivateSQL(hdbc,”SELECT FROM發(fā)通道測試數(shù)據(jù)表”); //顯式激活一個SQL語句,并通過字段索引的方法綁定各個字段到特定類型的變量
DBDeactivateSQL(hstmt); //解除SQL檢索語言
DBDiseo~ect(hdbc); //斷開與數(shù)據(jù)庫的連接
2.5.2 數(shù)據(jù)庫寫入
建好數(shù)據(jù)庫之后,收到串口發(fā)來的數(shù)據(jù),經(jīng)分析后,需要將新的數(shù)據(jù)寫入數(shù)據(jù)庫。寫入數(shù)據(jù)庫的信息包括載荷狀態(tài)、報警信息、控制命令等,它們對應(yīng)不同的表或字段。ODBC本身提供了對SQL語言的支持,所以用戶可以直接將SQL語句送給ODBC,首先利用DBCreateRecord函數(shù)創(chuàng)建一個新的記錄,將測試結(jié)果直接賦給新記錄的各字段的變量,然后調(diào)用DBPutRecord函數(shù)保存新的記錄[4]。
hstmt=DBActivateSQL(hdbc,string);激活SQL語句。
DBPutRecord(hstmt);刷新數(shù)據(jù)庫。
2.5.3 數(shù)據(jù)庫查詢
系統(tǒng)在測試聯(lián)調(diào)時,經(jīng)常需要對設(shè)備運(yùn)行狀態(tài)中的數(shù)據(jù)進(jìn)行比對分析,即對數(shù)據(jù)庫已有信息進(jìn)行分類檢索。Access提供對SQL語句的支持,SQL是使用關(guān)系模型的數(shù)據(jù)庫應(yīng)用語言,可以用SELECT語句對信息進(jìn)行檢索。
LabWindows/CVI工具包中,用途廣泛的SQL命令為[5]:
(1)CREATE TABLE;
(2)SELECT;
(3)INSERT;
(4)UPDATA;
(5)DELETE。
使用SELECT語句可以執(zhí)行對數(shù)據(jù)庫的下列操作:
(1)取回表中的記錄;
(2)更新表中的記錄;
(3)新建或刪除表中的記錄。
hdbc=DBConnect(“UserID=sa;PWD=123;DSN=xx”);//指明連接SQL Server服務(wù)器的口令,DSN為連接到數(shù)據(jù)源的路徑
i(f hdbc≤0){ShowErro(r);goto Error;}
MessagePopup(“Successful connect to the server”,“OK”);//判斷是否連接成功
hstmt=DBActivateSQL(hdbc,“SELECT * FROM表名WHERE查詢條件”);
i(f hstmt≤0){ShowErro(r);gotoError;}
//根據(jù)條件對表進(jìn)行激活并查詢
//根據(jù)定義的緩存變量類型,對要進(jìn)行查詢的項目分別進(jìn)行緩存分配。
本文利用LabWindows豐富的函數(shù)VI、直觀的控件、可嵌入C程序等特點(diǎn),完成了上海世博會車載系留氣球地面測控系統(tǒng)的設(shè)計,該系統(tǒng)可完成數(shù)據(jù)采集存儲、載荷控制、目標(biāo)定位等功能,系統(tǒng)已經(jīng)過聯(lián)調(diào)、地面考機(jī)、升空試驗、穩(wěn)定運(yùn)行所有階段性試驗,試驗表明本測控系統(tǒng)具有功能齊全、穩(wěn)定可靠、操作簡便、人機(jī)交互友好等特點(diǎn)。
參考文獻(xiàn)
[1] 應(yīng)秉斌,賀世正.基于LabVIEW的微速差雙轉(zhuǎn)子動平衡測試系統(tǒng)的開發(fā)[J].流體機(jī)械,2006,34(7):39-42.
[2] 史君成,張淑偉,律淑珍.LabWindows虛擬儀器設(shè)計[M].北京:國防工業(yè)出版社,2007.
[3] 劉方鑫,羅昌隆,等.?dāng)?shù)據(jù)庫原理與技術(shù)[M].北京:電子工業(yè)出版社,2002.
[4] 張桐,陳國順,王正林.精通LabVIEW程序設(shè)計[M].北京:電子工業(yè)出版社,2008.
[5] 白鳳山,潘長勇,楊知行.用動態(tài)鏈接庫技術(shù)LabWindows/CVI與高速數(shù)據(jù)采集卡的通訊[J].電測與儀表,2000(8):54-56.