姜波 陳馨 張聰 付志超
(中國船舶重工集團公司七一二研究所,武漢 430064)
在工廠自動化、地理遙感與地球物理、鐵路鐵軌、橋梁涵洞、公路運輸?shù)却罅繑?shù)據(jù)的測試與測量領域,數(shù)據(jù)采集與回放系統(tǒng)得到廣泛應用。本文以 LabVIEW 為開發(fā)平臺,將特定參量作為處理對象,構(gòu)建出一個功能較為完善的歷史數(shù)據(jù)回放系統(tǒng)。
LabVIEW 是一種用圖標代替文本行創(chuàng)建應用程序的圖形化編程語言[1],其基本思想是“軟件即是儀器”[2],它是以計算機軟、硬件技術(shù)為核心,以自動控制技術(shù)、傳感器技術(shù)、現(xiàn)代信號處理技術(shù)、現(xiàn)代網(wǎng)絡技術(shù)、數(shù)值分析技術(shù)為支撐,以各專業(yè)學科為應用背景的現(xiàn)代測試技術(shù)。它利用高性能的模塊化集成化概念和方法,結(jié)合軟件設計平臺高效、簡便的程序編譯功能,依據(jù)用戶各類特殊需求創(chuàng)建出人機對話界面,實現(xiàn)并取代了很多特殊、昂貴的測試儀器的功能。
傳統(tǒng)文本編程語言根據(jù)語句和指令決定程序的執(zhí)行順序,而 LabVIEW 采用數(shù)據(jù)流編程方式[3],程序框圖中節(jié)點之間的數(shù)據(jù)流向決定了程序的執(zhí)行順序。LabVIEW的軟件編程界面包括前面板和程序框圖兩部分。前面板提供非常多的類示波器控件,用來創(chuàng)建用戶界面,方便人機交流與對話,可使用工具和控件選板。程序框圖以圖標、連線、結(jié)構(gòu)框體為主體,圖標表示函數(shù),連線表示數(shù)據(jù)流向,其顏色代表不同的數(shù)據(jù)類型,也可象VC一樣在程序中添加文字性說明,可使用工具與函數(shù)選板。前面板中的每一個控件與程序框圖中一個對象相對應,兩者的界面類似,都采用window的通用軟件界面,且可顯示單步運行、連續(xù)運行、步進運行,對用戶調(diào)試程序很有幫助。
在面向?qū)ο蟮木幊讨?,將類中定義的數(shù)據(jù)稱為屬性,而函數(shù)稱為方法。LabVIEW中一切對象均有屬性,所謂屬性是指 LabVIEW 中預定義的用來描述對象狀態(tài)的數(shù)據(jù)。改變對象的屬性將改變對象相應的狀態(tài)。LabVIEW為所有用戶可能接觸到的對象預定義了非常豐富的屬性,使得 Lab VIEW 的開發(fā)具有很強的靈活性和功能性,可實現(xiàn)各種想象得到的高級功能和豐富效果,而某些控件必須通過屬性節(jié)點才能使用。屬性節(jié)點可以用來通過編程設置或獲取控件的屬性。
創(chuàng)建屬性節(jié)點有兩種方法,一種是在程序框圖中直接右擊控件圖標,選擇Create/Property No de選項,在彈出的下一級菜單中選擇想設置或獲取的屬性,即可創(chuàng)建該屬性節(jié)點;另一種方法是在Functions Palette中選擇Programming/Applicat ion Control/Property Node選項,右擊該屬性節(jié)點選擇 Link to到想設置或獲取屬性的控件,即可創(chuàng)建該屬性節(jié)點。
屬性節(jié)點由三部分組成,標簽、引用輸入和輸出端、屬性名及其輸入或輸出端。引用輸入與輸出端之間的條形顏色隨著屬性節(jié)點所屬控件輸入或輸出的數(shù)據(jù)不同而改變。在已創(chuàng)建的屬性節(jié)點條形顏色框上單擊左鍵可選定該屬性節(jié)點,單擊右鍵彈出下圖1所示菜單。在屬性名上單擊鼠標左鍵可改變已設置控件的屬性,如下圖2所示,單擊右鍵彈出下圖3所示菜單。對于每一個屬性節(jié)點,鼠標放在其上時會顯示上下可拉伸的標志,在該標志上按住鼠標左鍵不放,向上或向下移動鼠標即可同時顯示或設置多個屬性。
一般而言,回放系統(tǒng)由數(shù)據(jù)通道選擇、歷史數(shù)據(jù)加載、數(shù)據(jù)圖象變換、回放處理及參量計算等幾大部分組成。其系統(tǒng)框圖如下圖4所示。
一般數(shù)據(jù)存儲有多個通道構(gòu)成,且通道選擇應具有實時性和可重復性。數(shù)據(jù)加載可使用的文件類型很多,這里我們選擇TDMS文件類型。T DMS是以流文件的形式存儲數(shù)據(jù),讀取速度相對于 TDM而言更快,使用簡單方便,適合于我們目前的存儲需要。波形變換主要是獲得波形的局部特征和整體概貌。此外,參數(shù)計算也是回放中必不可少的一環(huán)。大量的數(shù)據(jù)信息必須被統(tǒng)計和歸整,便于使用者定量地了解回放數(shù)據(jù)的特性。
由以上幾部分組成的回放系統(tǒng)[4]功能完整,界面采用類示波器的設計。波形顯示區(qū)域下方為回放進度條,右側(cè)是當前波形通道的名稱與顏色信息。波形調(diào)節(jié)與控制區(qū)設有文件路徑選擇框、加載、左右移動、暫停、停止、通道選擇、參量選擇等按鈕、加載完成指示燈、時基幅基選擇下拉列表、相對與絕對時間切換開關、游標信息圖表。下圖5為該軟件完整的前面板展示。
歷史數(shù)據(jù)加載和通道選擇[5]部分如下圖6所示。程序使用了條件結(jié)構(gòu)和層疊順序結(jié)構(gòu),按先選定后加載的次序進行數(shù)據(jù)加載。在存儲數(shù)據(jù)時,已經(jīng)將通道賦予了名稱,因此在加載時我們就據(jù)此加載數(shù)據(jù)。
數(shù)組由布爾和字符串組成的簇元素構(gòu)成,字符串作為輸入通道名,布爾值作為條件結(jié)構(gòu)的選擇信號輸入。使用 for循環(huán)來給選定通道的曲線賦予編號(編號要從0開始,否則程序會報錯),將選定通道的名稱作為曲線名。圖例的寬度應該與通道數(shù)成正比,我們用移位寄存器統(tǒng)計選定通道的數(shù)量,以確定圖例寬度(注意,此寬度與顯示器的分辨率有關)。已選通道出for循環(huán)后形成一新數(shù)組,使用TDMS讀取函數(shù)讀取該數(shù)組,在波形圖上顯示曲線。
圖6 數(shù)據(jù)加載和通道選擇
一般回放系統(tǒng)應具備以下功能:圖象可雙向移動,暫停和停止,回放速度可調(diào),回放進度條顯示,回放時間顯示,磁盤空間使用情況顯示,相對時間軸和絕對時間軸的轉(zhuǎn)換,游標定位,顯示區(qū)域跳轉(zhuǎn)。本模塊的程序框圖如下圖7所示。
在具體的程序編程中,我們使用了下圖6所示的以屬性節(jié)點為主的回放模塊。圖中兩個波形圖屬性節(jié)點XScale.Minimum和XScale.Maximum分別起到接收和發(fā)送數(shù)據(jù)的作用,同時也作為暫存器使用,結(jié)合循環(huán)結(jié)構(gòu)實現(xiàn)數(shù)據(jù)回放。用三個條件選擇結(jié)構(gòu)實現(xiàn)暫停鍵對左右移動鍵的控制,數(shù)據(jù)圖象的向左和向右移動,用移動按鈕布爾控件的局部變量實現(xiàn)雙鍵互鎖,循環(huán)結(jié)構(gòu)的條件接線端用停止按鈕作為輸入,起到程序整體控制的作用。而另兩個屬性節(jié)點 XScale.Increment則獲取波形圖像的增量值,將回放速度與波形圖象增量值相匹配,達到了較好的回放效果。在數(shù)據(jù)回放的過程中,根據(jù)數(shù)據(jù)量的大小,須調(diào)節(jié)回放的速度,可用定時結(jié)構(gòu)的控件改變回放速度。
在回放的過程中,對數(shù)據(jù)圖像的一系列變換具有重要意義。我們不僅要了解一段時間內(nèi)數(shù)據(jù)波形的整體概貌,而且對感興趣的局部也想做進一步的觀察,以便得出特定的結(jié)論和相應的處理手段。波形變化有很多種,時基幅基變換即為其中一種,下圖8所示為時基幅基變換的程序方框圖。圖中用帶多個分支的事件結(jié)構(gòu)實現(xiàn)時基、幅基的變換。時基和幅基的下拉列表作為條件結(jié)構(gòu)的選擇信號輸入。波形圖的屬性節(jié)點XScale.Min imum獲取當前波形圖像的初始值,條件結(jié)構(gòu)中的各個分支具體規(guī)定了圖像的變換方法,這些分支可隨時增加和減少,以適應廣泛的變換需求,每條分支中的數(shù)據(jù)可按要求修改,以調(diào)節(jié)圖像的具體時基與幅基值。圖9為時基和幅基均改變的波形對照圖。
圖10所示為計算有效值的程序框圖??驁D使用了Functions Palette/programming/waveform/An alog Waveform/Waveform Measurement中的基本平均直流-均方根函數(shù),在這個地方還有很多其他函數(shù)供用戶使用,可計算平均值、瞬態(tài)值等等?;酒骄绷?均方根函數(shù)的輸入是 TDMS數(shù)據(jù)流,將其轉(zhuǎn)換為動態(tài)數(shù)據(jù)提供給創(chuàng)建表格函數(shù),轉(zhuǎn)置后形成表格。
經(jīng)運行與測試,本程序針對500 M以下的數(shù)據(jù)量運行狀態(tài)良好,載入速度較快,回放功能正常,波形變換具有較好的實時性,能實現(xiàn)回放系統(tǒng)的絕大部分功能。
[1] 張桐, 陳國順, 王正林. 精通 LabVIEW 程序設計.北京: 電子工業(yè)出版社, 2008, 12.
[2] 陳錫輝, 張銀鴻. LabVIEW 8.20程序設計從入門到精通. 北京: 清華大學出版社, 2007, 7.
[3] 江建軍, 劉繼光. LabVIEW 程序設計教程. 北京:電子工業(yè)出版社, 2008.3.
[4] 張寧, 王言章. 便攜式動態(tài)心電記錄儀及數(shù)據(jù)回放系統(tǒng)設計. 長春理工大學學報, 2006, 29(4).
[5] 劉卓, 張維競, 聶鵬瑜. 基于 LabVIEW 平臺的數(shù)據(jù)回放系統(tǒng)設計. 儀表技術(shù), 2003, (6).