LabVIEW中的時標(biāo)、波形以及動態(tài)數(shù)據(jù)
掃描二維碼
隨時隨地手機(jī)看文章
在LabVIEW中我們分析或采集的數(shù)據(jù)通常都是時間的函數(shù)。例如,我們可能希望知道在一天中溫度隨著時間的變化,或者是變化的波形在時間軸上繪出之后的樣子。
LabVIEW有一些特殊的數(shù)據(jù)類型可以用來幫助一般的用戶來以曲線的形式分析或展示這些數(shù)據(jù)。這些特殊的數(shù)據(jù)類型就是時標(biāo)(Time Stamp)、波形(Waveform)和動態(tài)數(shù)據(jù)(dynamic da
時標(biāo)這個數(shù)據(jù)類型用來存儲絕對日期/時間值,比如數(shù)據(jù)采集的時間。它的精度非常高,不論是對于計(jì)數(shù)秒的整數(shù)部分還是分?jǐn)?shù)部分都有19位的精度。
雖然我們可通過將一個數(shù)值控件的顯示方式設(shè)定為日期/時間來存儲與顯示時標(biāo)值,不過數(shù)值控件保存的是相對值,而時標(biāo)控件保存的則是絕對值。
在LabVIEW中,我們可以使用Get Date/Time In Seconds函數(shù)來獲取當(dāng)前的時標(biāo)值。一個時標(biāo)控件如下圖所示:
時標(biāo)是一個高精度保存絕對時間的手段,而時標(biāo)控件則可以用來查看與修改時標(biāo)的值。時標(biāo)控件可以在Controls控件面板的Modern>>Numeric子面板中找到。
通過點(diǎn)擊你要修改的時標(biāo)控件左側(cè)的上下箭頭就可以對該時標(biāo)的值進(jìn)行增減操作?;蛘呤峭ㄟ^鍵盤直接鍵入數(shù)值來取代時標(biāo)的當(dāng)前值。也可以在時標(biāo)控件上點(diǎn)擊鼠標(biāo)右鍵,并在右鍵菜單中選擇Da
不過我們還有一個更有趣的修改時標(biāo)的方法,那就是點(diǎn)擊時標(biāo)控件右側(cè)的日期/時間瀏覽按鈕。在點(diǎn)擊該按鈕之后,就會彈出下面的日期與時間設(shè)置對話框。從這個對話框,我們能夠輕松的用這個日歷式的界面來修改時標(biāo)的日期與時間值。
這個對話框也可以在時標(biāo)控件上點(diǎn)擊鼠標(biāo)右鍵,在右鍵菜單中Da
有些時候我們也需要時間計(jì)算。比如下面程序框圖中我們使用相減函數(shù)來計(jì)算兩個時標(biāo)之間的相對時間。
通過這種方式,我們可以用來對某些程序代碼的執(zhí)行時間進(jìn)行測試,比如在一個VI開始之前獲取一個時標(biāo)值,在VI結(jié)束之后獲取一個時標(biāo)值,將這兩個值相減就可以知道這個VI的具體執(zhí)行時間是多少了。
另外我們也可以對時標(biāo)數(shù)據(jù)進(jìn)行加操作,將相對時間加上舊的時標(biāo)值得到一個新的時標(biāo)值,這個程序就不再演示了。
時標(biāo)與數(shù)值之間的轉(zhuǎn)換如前面的兩個時標(biāo)相減的例子,我們可以發(fā)現(xiàn)時標(biāo)與數(shù)值兩種數(shù)據(jù)類型是密切相關(guān)的。在有些情況下,我們需要在這兩個數(shù)據(jù)類型之間進(jìn)行轉(zhuǎn)換。加、減這兩個函數(shù)在對時標(biāo)數(shù)據(jù)操作時,函數(shù)不是匹配為時標(biāo)類型(由于這兩個函數(shù)是可復(fù)用的)就是將時標(biāo)強(qiáng)制轉(zhuǎn)換為雙精度浮點(diǎn)數(shù)。有些時候,我們也想要直接執(zhí)行這個轉(zhuǎn)換操作。我們可以在函數(shù)VI面板的Programming>>Numeric>>Conversion子面板上找到To Double Precision Float函數(shù)來將時標(biāo)數(shù)據(jù)轉(zhuǎn)換為雙精度浮點(diǎn)數(shù)?;蛟赑rogramming>>Numeric>>Conversion子面板上找到To Time Stamp函數(shù)將一個數(shù)值轉(zhuǎn)換為時標(biāo)數(shù)據(jù)(這個函數(shù)也可以在Programming>>Timing子面板上面找到)。
這兩個函數(shù)如下圖所示:
這里的To Double Precision Float函數(shù)可以將任何數(shù)值型數(shù)據(jù)轉(zhuǎn)換為雙精度浮點(diǎn)數(shù)。
波形(Waveforms)在許多工程以及科技應(yīng)用中,需要處理的數(shù)據(jù)都是一組隨著時間變化的數(shù)值。例如,音頻信號就是隨著時間變化的壓力值,心電圖則是隨著時間變化的電壓值,滴落的水滴的表面就是隨時間變化的其xyz坐標(biāo)的值,計(jì)算機(jī)常用的數(shù)字信號則是隨時間變化三維二進(jìn)制值。LabVIEW中提供了波形數(shù)據(jù)這個數(shù)據(jù)類型來組織與處理這些時變信號。一個波形數(shù)據(jù)不但可以讓你來存儲數(shù)據(jù)的值,還可以用來存儲第一個數(shù)據(jù)獲取時的時標(biāo)值、每個數(shù)據(jù)點(diǎn)之間的間隔時間以及數(shù)據(jù)的備注信息。它與LabVIEW中其他的數(shù)據(jù)類型類似,可以進(jìn)行加減運(yùn)算操作,以及其他的直接對波形進(jìn)行的操作。你可以在I/O控件面板選擇相應(yīng)控件來在VI前面板上創(chuàng)建Wavwform或Digital Waveform類型的控件。
上圖中就是一個波形控件在前面板以及框圖中的表現(xiàn)形式。下圖中的則是數(shù)字波形控件在前面板以及框圖中的表現(xiàn)形式。我們可以發(fā)現(xiàn)在程序框圖中,波形控件的圖標(biāo)為棕/橙色而數(shù)值波形控件的則為綠色。
這兩個圖標(biāo)里面,模擬波形是一個類似正弦波的波形,數(shù)值波形則是一個方波,再加上它們的顏色不同,區(qū)分它們還是很容易的。
通過仔細(xì)檢查波形數(shù)據(jù)類型,我們可以發(fā)現(xiàn)它其實(shí)就是一個特殊的簇類型的數(shù)據(jù)。在這個簇中包含了四個元素:Y、t0、dt以及Attributes(屬性),對其詳細(xì)講解如下:
Y:這個元素是隨著時間變化數(shù)據(jù)。對于一個模擬波形來說,這是一個元素為數(shù)值數(shù)據(jù)點(diǎn)的一維的數(shù)組,這個數(shù)據(jù)點(diǎn)可以是一個單點(diǎn)也可以是另外一個波形,根據(jù)所執(zhí)行的操作的不同而不同。模擬信號類型的一維數(shù)組的元素?cái)?shù)據(jù)類型為雙精度浮點(diǎn)數(shù)。離散信號則被稱為"數(shù)字"信號,離散信號一般就是只有兩個狀態(tài)的信號,比如TRUE或FALSE、0或5V、開或關(guān)等等。對于離散信號,我們需要使用的是數(shù)字波形。對于數(shù)字波形來說。Y元素是數(shù)字?jǐn)?shù)據(jù),你可以將其想象為一個二進(jìn)制值的表格,列為數(shù)字線,行為變話的值。t0:這個元素是一個時標(biāo)值,用來標(biāo)識Y數(shù)組中第一個點(diǎn)采集時的時間(相對于當(dāng)期的系統(tǒng)時間)。它也被稱為初始時間或初始時標(biāo)。dt:Δt,念作"得爾它T"(哈哈,小幽默一下)。用來表示Y數(shù)組中兩個相鄰數(shù)據(jù)點(diǎn)之間的間隔時間的數(shù)值。Attribute:默認(rèn)情況下,這個元素是隱藏的,只有在波形上點(diǎn)擊鼠標(biāo)右鍵并在右鍵菜單中選擇Visible Items>>Attribute才能看到。屬性元素是可選的,它是可變數(shù)據(jù)類型的量,可以讓你方便的捆綁自定義信息,比如設(shè)備編號、通道號等等。該元素不會影響波形數(shù)據(jù)的表現(xiàn)或Y與時間值。波形與數(shù)組的差別在很多情況下,你可以將波形想象為一維數(shù)組,在這個一維數(shù)組中除了保存數(shù)據(jù)外還附加了一些關(guān)于數(shù)據(jù)點(diǎn)的時間以及采樣時間的信息。波形數(shù)據(jù)在模擬信號采集中經(jīng)常被用到。
實(shí)際上你也可以使用數(shù)組來保存你的數(shù)據(jù)而不是使用波形數(shù)據(jù)。不過,波形數(shù)據(jù)比數(shù)組數(shù)據(jù)要有以下幾個優(yōu)勢:
t0的標(biāo)識:如果沒有t0的話,你就不知道你的數(shù)據(jù)是什么時候得到的。波形數(shù)據(jù)則會自動在t0中返回?cái)?shù)據(jù)采集的日期以及時間,這提供了你的數(shù)據(jù)的現(xiàn)實(shí)世界的時間。更易繪圖:波形數(shù)據(jù)同樣簡化了數(shù)據(jù)曲線的繪制。在較老的LabVIEW版本中,你必須綁定初始點(diǎn)的值(x0)以及兩點(diǎn)之間的間隔時間(delta x)到你的數(shù)據(jù)(Y數(shù)組),才能完成繪制曲線的工作?,F(xiàn)在的波形數(shù)據(jù)就直接包括了這些元素,你只要將波形數(shù)據(jù)連線到曲線圖控件就可以繪圖了。更簡單的多曲線圖:波形數(shù)據(jù)也簡化了多曲線的曲線圖的繪制。在舊版的LabVIEW中,每條曲線需要先將x0、delta x以及Y數(shù)組綁定之后,再用它們創(chuàng)建一個數(shù)組之后才能繪制一個多曲線的曲線圖。如果使用波形數(shù)據(jù),只要將一個波形數(shù)據(jù)的一維數(shù)組連線到一個曲線圖控件就可以繪出多曲線的曲線圖了。波形函數(shù)在LabVIEW的函數(shù)面板的Programming下的Waveform面板上全部都是用于波形數(shù)據(jù)操作的函數(shù),如下圖所示:
這里的獲取波形元素(Get Waveform Components)以及創(chuàng)建波形(Build Waveform)函數(shù)分別用來獲取或設(shè)置模擬、數(shù)組波形和數(shù)字值的波形元素。
獲取波形元素函數(shù)可以返回你需要的波形元素。你可以通過在該函數(shù)節(jié)點(diǎn)上面右鍵點(diǎn)擊并選擇Add Element并左鍵點(diǎn)擊來選擇需要的波形元素。這個函數(shù)是可擴(kuò)展的。
創(chuàng)建波形函數(shù)可以用來創(chuàng)建一個新的波形或者是修改一個現(xiàn)有波形。如果不鏈接輸入到waveform輸入端,這個函數(shù)就會按照輸入的數(shù)據(jù)來創(chuàng)建一個新的波形。如連接了一個波形到這個輸入端,這個函數(shù)就會按照你輸入的參數(shù)修改這個波形。這個函數(shù)也是可擴(kuò)展的。
這兩個函數(shù)都是可復(fù)用的,可以對模擬波形、數(shù)字波形以及數(shù)字?jǐn)?shù)據(jù)進(jìn)行操作。函數(shù)的waveform輸入端會根據(jù)輸入波形的不同而自動轉(zhuǎn)換。
除此之外,還有很多對波形進(jìn)行操作的函數(shù),可以參考LabVIEW的自帶幫助文件或例子來自己熟悉。
動態(tài)數(shù)據(jù)(Dynamic Da幾乎所有的用于采集、分析、操作以及生成信號的Express VI都使用了一個特殊的數(shù)據(jù)類型傳送信號數(shù)據(jù),這個數(shù)據(jù)類型就是動態(tài)數(shù)據(jù)。簡單地說,動態(tài)數(shù)據(jù)就是一個或多個通道的波形數(shù)據(jù)。實(shí)際上,你也可以將動態(tài)數(shù)據(jù)想象為只是一個簡單的模擬波形的數(shù)組,用一個智能的線所表示。不過,在實(shí)際的使用中,動態(tài)數(shù)據(jù)確實(shí)也是非常智能的,比如將幾個動態(tài)數(shù)據(jù)合并為一個動態(tài)數(shù)據(jù)的操作是非常簡單的。
在LabVIEW中,將一個動態(tài)數(shù)據(jù)連線到另一個動態(tài)數(shù)據(jù),LabVIEW會自動的添加一個合并信號的函數(shù)將這兩個信號線合并為一個信號線。
對動態(tài)信號操作的函數(shù)都位于Express>>Signal Manipulation子面板中,大家可以通過幫助文件來熟悉這些函數(shù)的使用。