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