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