王宗省 翟亞楠 康樹強 蘇金娣 董淑冷
摘 要:在LabVIEW虛擬平臺下設計了一種用USB接口實現(xiàn)的高速數(shù)據(jù)采集系統(tǒng)。提出了自動分文件存儲的方法解決了使用Excel文件存儲數(shù)據(jù)產(chǎn)生的大文件問題。提出了一次最多讀取兩個文件依次讀取的方法,解決了用波形顯示多個文件的大量數(shù)據(jù)時占用大量內(nèi)存甚至導致無法顯示的問題。實驗證明文中所用方法效果明顯。該系統(tǒng)支持8條通道32位數(shù)據(jù)的同時采集、存儲、波形回放,系統(tǒng)界面簡潔、操作簡單、可添加模塊以拓展功能。
關鍵詞:數(shù)據(jù)采集 高速 波形回放 表格文件 占內(nèi)存
中圖分類號:TP274+.2 文獻標識碼:A 文章編號:1672-3791(2016)05(a)-0001-02系統(tǒng)一次存入8個通道的數(shù)據(jù),每通道200個32位的數(shù),共存1 000次,即8 000行200列為一個Excel文件。程序中先設定一個循環(huán)次數(shù)i,當i=0時,用Create File函數(shù)新建文件并寫入電子表格文件,當i=1~998時,直接寫入電子表格文件;當i=999時,寫入電子表格文件并用Close File函數(shù)關閉文件;當i>999時,令i=0。程序中用移位寄存器來保存上一次的循環(huán)次數(shù)、文件路徑、文件句柄、文件狀態(tài)。文件句柄用來做Close File函數(shù)的輸入。文件狀態(tài)為真(T)表明正在寫入文件,文件狀態(tài)為假(F)表明文件已關閉。用文件狀態(tài)主要是確定在文件不再寫入時,關閉文件以節(jié)省內(nèi)存。
1.2 波形回放模塊
回放模塊程序一直在檢測輸入框的變化并更新,直到用戶點擊開始后就進入波形顯示,若要改變輸入的條件,需先停止顯示波形。以下是實現(xiàn)回放時根據(jù)滾動條的位置自動更換讀取的數(shù)據(jù)文件的分文件讀取方法。
一個Excel文件存儲的數(shù)據(jù)有限,要查看的是多個文件的數(shù)據(jù),如果先打開多個Excel文件讀到一個數(shù)組中,數(shù)組太大導致內(nèi)存占用大,運行速度慢甚至會提示內(nèi)存占滿而不能運行。該系統(tǒng)的設計是先判斷滾動條的位置,根據(jù)滾動條的位置判斷要打開哪個文件,讀取要打開的文件及下一個文件的數(shù)據(jù)存入二維數(shù)組,顯示到波形圖表。以上為一個循環(huán),如果判斷要打開的文件跟上一循環(huán)的文件相同,則直接用上一循環(huán)讀取的數(shù)據(jù),無需再重新讀取。這樣能保證每次循環(huán)只讀取兩個文件的數(shù)據(jù)。程序中用移位寄存器來保存上一次循環(huán)的數(shù)據(jù)。
在顯示波形時,用事件結構檢測滾動條的值變化。滾動條滾動一次,采用平鋪順序結構先用波形圖表的歷史數(shù)據(jù)屬性節(jié)點接入空數(shù)組來清空圖表,然后以滾動條的位置乘200為原點,讀取16 000個數(shù)為波形圖表的一個畫面。
2 測試結果
程序中USB屬性設置為高速批量傳輸,測試時硬件設置為高速的64字節(jié)批量傳輸端點進行數(shù)據(jù)傳輸,考慮協(xié)議開銷計算在理論上最高傳輸速度為6.656 MB/s(53.248 Mb/s)。經(jīng)對系統(tǒng)測試,8個通道同時采集得到每個通道的數(shù)據(jù)傳輸速率為400 kB/s。在實際應用中,采樣頻率跟采集系統(tǒng)的硬件程序中的USB傳輸設置有關?,F(xiàn)比較在波形回放時一次性全部讀取文件數(shù)據(jù)進行波形顯示和使用該文提出的分文件讀取方法的內(nèi)存占用情況。該文使用應用程序性能檢測器V3.0軟件檢測,得到占內(nèi)存的記錄情況用Excel畫散點圖,得到如下LabVIEW運行時內(nèi)存占用曲線。每個Excel文件大小為12 706 kB,分別讀取10個文件(約120 MB)和20個文件(約240 MB)。
由圖1、2可看出讀取10個文件時相對于一次性讀取文件,該文提出的分文件讀取方法使內(nèi)存使用減少了約180 MB。由圖3、圖4在讀取20個文件時,一次性讀取文件方法由于內(nèi)存不足而無法運行,而分文件讀取法所占內(nèi)存并沒有隨著文件的增多而改變。充分說明了分文件讀取法的實用效果。圖1、圖3中曲線波動是由于文件的關閉打開導致的內(nèi)存變化。
3 結語
在LabVIEW虛擬儀器開發(fā)平臺下設計了一種基于USB的高速數(shù)據(jù)采集系統(tǒng),該系統(tǒng)能實現(xiàn)數(shù)據(jù)存儲、實時顯示及波形回放的功能,提出了分文件存儲法解決了使用Excel文件存儲數(shù)據(jù)產(chǎn)生的大文件問題,并針對回放時占用大量內(nèi)存的問題提出了分文件讀取法,經(jīng)實際測試證明了所提方法的實用性。系統(tǒng)還可添加函數(shù)模塊對數(shù)據(jù)處理以完善功能,且系統(tǒng)的性能隨USB的性能提升而提升。
參考文獻
[1] 羅偉林.基于USB2.0的高速數(shù)據(jù)采集系統(tǒng)[D].哈爾濱:哈爾濱工業(yè)大學,2008.
[2] 郭迎福,羅曉莉,毛征宇.基于LabVIEW虛擬高速數(shù)據(jù)流盤與波形再現(xiàn)儀[J].儀器儀表學報,2006(S3):1788-1789.
[3] 黃琦,崔文佳.基于LabVIEW的波形文件回放分析系統(tǒng)設計[J].廣西電力,2013,36(5):16-18.
[4] 向科峰.基于LabVIEW的數(shù)據(jù)采集系統(tǒng)設計與實現(xiàn)[J].機械管理開發(fā),2011(4):191-192.
[5] 蘇蘭蘭,施偉峰.基于VISA技術的高速USB數(shù)據(jù)采集系統(tǒng)[J].機電設備,2007(4):36-39.
[6] 孫文.多通道數(shù)據(jù)采集系統(tǒng)的設計與實現(xiàn)[D].湖南大學,2013.
[7] 余志榮,楊莉.基于NI_VISA與LabVIEW的USB接口應用設計[J].單片機與嵌入式系統(tǒng)應用,2007(1):66-69.
[8] 侯國屏,王坤,葉齊鑫.LabVIEW7.1編程與虛擬儀器設計[M].北京:清華大學出版社,2007.