





摘 要: 針對衛星電推進分系統地面測試設備建設方案,開發了配套的數據采集存儲系統,闡述了FPGA在LabVIEW語言編程中下位機自動變速率采集的實現,并通過LabVIEW如何建立與數據庫的鏈接,進行數據插入,查詢,系統能夠在前臺監控計算機提供人機界面,能夠自動根據情況變換速率采集。詳細介紹了每個程序VI的編程思路,給下位機自動變速率編程提供一個新的方向,實際運行系統表明,該思路編程新穎獨特,自動變速率運行穩定,采集效果準確。
關鍵詞: 數據采集; LabVIEW; SQL數據庫; 變速率采集
中圖分類號: TN911?34; TP311 文獻標識碼: A 文章編號: 1004?373X(2015)09?0096?04
Abstract: According to the development scheme of ground testing equipment for the satellite electric propulsion subsystem, a matched data acquisition and memory system is developed. The implementation of FPGA?based automatic variable rate acquisition in the LabVIEW language programming by slave computer is described. The realization method for link of the database with SQL database through LabVIEW is introduced. With data insertion and query, the system can provide human?machine interface in the PC monitoring computer and transform the acquisition rate automatically according the situation. The programming idea for each program VI is elaborated, which provides a new direction for computer automatic variable rate programming. The actual running result shows that the programming idea is novel and unique, and the system works well and can realize accurate acquisition.
Keywords: data acquisition; LabVIEW; SQL database; variable rate acquisition
0 引 言
隨著航空航天技術的不斷發展,對電推進技術的要求不斷提高,依托于電推進系統的數據采集系統應運而生。數據采集存儲系統配套服務于電推進分系統地面試驗設備,是電推進系統進行地面測試、驗證的重要組成部分,提供對實驗的過程控制、數據存儲、數據分析等功能。傳統的數據采集系統只能對于特定硬件進行相應的軟件定制,拓展性適應性較差,研發費用較高。而且系統的自控型較遲滯,不能根據現場環境自動進行變速率采集。本文著重闡述了一種FPGA在下位機中基于LabVIEW編程語言的自動變速率采集方式[1],及如何把采集到數據進行數據庫鏈接及存儲回放。系統程序可以自動變換所需的采集速率,不用人為手動控制,而且系統可以隨著現場環境隨時修改程序,結合相應的硬件就可以快速地搭建一個完整的采集系統,為實驗和工程節約大量時間和經費,程序靈活度大大增加。
1 硬件設計
數據采集卡是計算機與外界的接口[2],它的主要作用是將外部的模擬信號轉化為計算機能夠處理的數字信號。本文采用了NI公司提供的FPGA CampactRIO系列(CRIO)數據采集設備。整個硬件CRIO采集系統由NI CompactRIO?9025控制器、CRIO?9118機箱、NI?9222和NI?9229采集卡三部分硬件組成,在下位機,采用了NI TPC?2212 LabVIEW觸屏式計算機實現人機界面,實時控制數據采集過程[3]。從硬件結構上,FPGA程序運行在FPGA機箱背板中,它是作為 CRIO系統中的一個部件存在的,它的上一級是控制器,運行的是實時操作系統,下一級是C系列模塊即采集卡,負責實際的數據采集和控制[4]。圖1為采集設備硬件連接圖。
2 FPGA下位機軟件設計
下位機FPGA中采用LabVIEW編程語言進行編程,主要程序由FPGA機箱中的最底層采集程序Target.VI和RT實時控制器中進行數據整理交換程序HOST.VI組成。FPGA編程是整個數據采集的核心所在,它是采集系統的數據來源。
2.1 FPGA采集程序Target.VI
整個程序采用平鋪式順序結構來實現,確保程序按一定順序進行,不容易出現程序混亂。首先在第一個幀中設置要采集的采樣率,完成后在第二幀中開啟采集卡START,采集卡模塊準備數據采集。因為需要變速率進行采集,運用了條件結構進行程序搭建。當速率一切正常不需要變換速率時,直接運行“假”程序,這里的16路I/O接口通道進行采集,把采集到的數據進行創建數組以便用于數據傳送。因為在FPGA中,不能使用全局變量進行數據共享,同時為了保持FPGA運行的精確性,摒棄了輪詢和中斷方式,這里采用DMA FIFO進行VI間數據傳送,把得到的數據直接傳遞到RT實時控制器的內存中。這里需要注意的是保持數據連續采集的While只需要在第三幀I/O接口進行循環即可,不用覆蓋整個平鋪順序結構,防止每次采集都需要重新設置采樣率,影響系統運行。采集底層程序要求越簡單直接越好,拋卻系統冗繁性,拖慢整個系統。
當系統需要變換速率時,運行條件“真”中的程序,這里設置了一個真假布爾開關update speed,根據環境需要以便自動控制采樣率切換。在“真”條件結構內部創建第二個平鋪順序結構,第一幀程序中設置采集模塊STOP,把采集卡模塊進行中斷,第二幀中設置需要改變的采樣率,這里用采樣率2控件進行輸入,為后面RT程序中自動變換速率留下輸入端口。最后第三幀中進行采集模塊START進行,創建update speed布爾輸入開關局部變量,局部變量狀態為“F”,把條件結構切換到運行“假”中程序,進行I/O端口數據采集。FPGA程序條件“假”如2圖表示,變速率條件“真”程序如3圖表示。
2.2 RT實時控制器HOST.VI
RT中程序主要負責對FPGA采集上來的數據進行傳遞和處理[5]。上位機通過RT控制器進行數據共享,來進行波形顯示數據庫存儲等功能。首先運用打開FPGA VI引用句柄控件進行FPGA Target.vi的底層程序調用,經過屬性重置及FIFO請求深度的設置后,連接一個FPGA的讀取/寫入控件,通過它可以直接對FPGA中采樣率2端口進行采樣率重置輸入以達到變速率的目的。這里對采樣率2及update speed端口連接了兩個局部變量,它們負責對改變的采樣率進行輸入和采集卡模塊的切換控制。最后連接FIFO讀取控件,運用FIFO成功把底層數據傳遞上來。
下面進行最重要的自動變速率切換程序編程。主要思想是利用條件結構進行程序“真假”切換。當需要25 Kb/s的采樣率時,調用執行“真”中的程序,條件結構中輸入25 Kb/s到顯示控件,并通過剛開始創建的局部變量直接把改正數值輸入FPGA讀寫控件,達到改正采樣率的目的。最后把得到的數據進行隊列數據傳送,以便后面進行外掛硬盤存儲。這里還創建了一個數值局部變量配合相應的采樣率進行后面的數據存儲時間配合,方法同修改采樣率一樣。當程序穩定運行一段時間,只需要2 Kb/s的采樣率時,執行“假”中程序,同樣運用局部變量把2 Kb/s采樣率輸入到讀寫控件,直接改正采樣率,不需要回到底層FPGA Target.vi中改正。因為此時,只需要1 Kb/s的存儲就可以,這里做了一個數組子集索引,把兩個索引出來的數組相加除2即可,同樣在VI內部傳遞數據用隊列實現。在這里用布爾開關控制調節采樣率,當需要自動控制變速率時,比如當系統剛開始采集15 s時數率值較高,電壓電流較大不穩定,需要高速率25 Kb/s采集,可以把采集到的一組數據索引出來進行比對,當高于特定值時選擇器輸入“真”信號,實行條件結構“真”中程序,進行25 Kb/s采樣率切換,之后系統運行穩定,電壓電流降下來小于特定值,輸入“假”信號,切換到2 Kb/s的采樣率。這就實現了工程上的自動轉換速率功能,采樣率可以根據自己實際需要進行轉換。圖4,圖5為數據讀取及采樣率真假切換程序。
3 LabVIEW上位機數據庫鏈接設計
運用數據共享傳遞從下位機采集上來的數據,也就是來自從下位機RT實時控制器HOST.VI中的數據。把數據進行濾波、加窗等處理后導入隊列,進行VI內部數據庫存儲。
3.1 數據庫寫入.VI
把由隊列傳來的數據進行SQL數據庫存儲。存儲速率由主界面VI程序中時間等待控件來確定,這里設定1 s存儲1個,即等待1 000 ms。首先把數據進行至小數字符串轉換,就是把數據變換為小數分數格式的浮點數字符串,因為需要把時間字符串加入數據中以便存儲,所以需要把數組全都變成統一類型的字符串形式。然后索引16路數組字符串,為的是添加時間字符串,把得到的17路數組進行創建數組。其中,獲得的時間格式化,格式為′%Y?%m?%d %H:%M:%S%3u′。把得到的17路數組轉換為電子表格字符串,因為SQL Executu模塊中命令文本需要連接的是字符串格式。把得到的字符串格式化,加入表名和values,把得到的格式化字符串用數據庫inserti nto語句利用SQL Execute執行模塊,插入數據庫,進行數據存儲,把數據存到SQL數據庫中。這里用了兩個執行模塊,第一個是執行插入數據,第二個執行模塊的作用是查詢表中所有的數據,檢查是否存入數據,其中表名用全局變量來顯示,方便查詢不同表的數據,利用Rows fetch顯示存儲的數據行數。數據寫入VI見圖6。
數據庫ADO框圖程序操作步驟分析:利用ADO Connection Create.vi創建一個鏈接對象,利用ADO Connection Open.vi建立與數據庫的鏈接。數據庫鏈接串這里建立了一個數據庫鏈接子VI用于指定數據庫鏈接。數據庫鏈接串也可以用ODBC數據源中創建一個DSN進行鏈接。但是用這種方式鏈接,需要在每一臺電腦上運行程序鏈接數據庫時都需要重新創建數據源,非常麻煩。這里直接創建一個數據庫子VI,把服務器和數據庫名稱直接用全局變量寫入子VI,用戶只需要選擇好數據庫和服務器就可以直接運行程序進行存儲,方便快捷。利用ADO Conn Execute.vi執行插入數據和SQL查詢命令“select*from表名”。最后用ADO Conn Close.vi關閉與數據庫之間的鏈接。
3.2 數據庫鏈接(子)VI
用鏈接字符串把Server(服務器名稱),Database(數據庫名稱),Uid(用戶名),Pwd(密碼)鏈接起來,用ADO Conn Open.Vi指定打開的路徑。其中服務器名稱等做成全局變量,直接選擇,方便一點。此vi用于代替電腦上設置ODBC數據源。數據庫鏈接VI程序設計見圖7。
3.3 信息查詢子.VI
信息查詢子VI調用于歷史數據查詢vi,為其提供歷史數據。用鏈接字符串把數據庫的查詢語句鏈接起來,數據庫語句為“select*from表名where cisj between′時間′and′時間′”。用connection VIS進行實現,原理同數據插入,只是查詢語句的改變。信息查詢VI程序設計見圖8。
4 實驗驗證
當系統運行時,通過CRIO系統分別采集10 V交流電壓,10 A的交流電流,下載在FPGA機箱中的Target.VI通過NI 9229和9222模塊進行采集數據,并把采到的數據通過FIFO上傳到RT中進行分析,并存儲到外掛的硬盤中進行保存,最后RT與上位機PC進行數據傳遞,在上位機中進行信號處理,最后在系統主界面顯示出來。系統運行主界面如圖9所示。
從圖9可以看出,系統采集的電壓、電流與實際輸出10 V正弦電壓一致,數據準確穩定。系統連續采集24 h無死機狀態出現,系統運行穩定。
5 結 論
經過某研發所應用實踐證明,基于LabVIEW的數據采集系統完全達到用戶的標準,其可以自動變速率的新穎思想有很大的拓展性,可以有多重變換方式,實際應用可靠,其設計費用相比于傳統數據采集設備大大降低,顧客只需要根據自己不同環境使用硬件設備就可以快速搭建起一個采集系統。本文采用的程序結合NI CRIO系列采集模塊,運行穩定,可靠性高,具有一定推廣價值。
參考文獻
[1] 陳樹學,劉萱.LabVIEW寶典[M].北京:電子工業出版社,2011.
[2] 王立強.計算機測控系統與數據采集卡應用[M].北京:機械工業出版社,2007.
[3] 崔佩佩,何強,韓壯志,等.基于LabVIEW FPGA實現不同時域的數據連續傳輸[J].現代電子技術,2011,34(17):21?24.
[4] 周益青,王勇.基于LabVIEW軟件的數據采集與分析系統[J].制導與引信,2012,33(1):24?28.
[5] 劉曉燕,吳娜,陳宇佳.基于LabVIEW數據采集的大型機械故障診斷分系統[J].華北水利水電學院學報,2013,34(6):126?128.
[6] 向科峰.基于LabVIEW的數據采集系統設計與實現[J].機械管理開發,2011(4):191?192.
[7] 呂向峰,高洪林,馬亮,等.基于LabVIEW串口通信的研究[J].國外電子測量技術,2009,28(12):27?30.
[8] 章勇勤,艾勇,鄧德祥,等.基于FPGA的超高速數據采集與處理系統[J].數據采集與處理,2009,24(2):238?242.
[9] 初華,李長兵.LabVIEW基于USB 2.0的數據采集及處理[J].儀表技術,2010(5):22?25.
[10] 楊樂平,李海濤,趙勇,等.LabVIEW高級程序設計[M].北京:清華大學出版社,2003.