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