《LabVIEW程序設(shè)計(jì)與虛擬器》課件第3章_第1頁(yè)
《LabVIEW程序設(shè)計(jì)與虛擬器》課件第3章_第2頁(yè)
《LabVIEW程序設(shè)計(jì)與虛擬器》課件第3章_第3頁(yè)
《LabVIEW程序設(shè)計(jì)與虛擬器》課件第3章_第4頁(yè)
《LabVIEW程序設(shè)計(jì)與虛擬器》課件第3章_第5頁(yè)
已閱讀5頁(yè),還剩112頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第3章數(shù)組、簇和波形3.1數(shù)組3.2簇3.3波形習(xí)題3數(shù)組、簇和波形是LabVIEW中三類比較復(fù)雜的數(shù)據(jù)類型。數(shù)組是一種由同一類型數(shù)據(jù)元素組成的大小可變的集合,與其他編程語(yǔ)言中的數(shù)組概念相同。簇是由混合類型數(shù)據(jù)元素組成的大小固定的集合,相當(dāng)于C語(yǔ)言中的結(jié)構(gòu)數(shù)據(jù)類型。波形數(shù)據(jù)是LabVIEW為數(shù)據(jù)采集和處理提供的一種專門的數(shù)據(jù)結(jié)構(gòu)。靈活運(yùn)用這三種數(shù)據(jù)類型可極大地提高編程效率,簡(jiǎn)化程序代碼。3.1數(shù)組數(shù)組是由同一類型數(shù)據(jù)元素組成的大小可變的集合。大多數(shù)數(shù)組是一維數(shù)組,少數(shù)是二維數(shù)組,極少數(shù)是三維或多維數(shù)組。LabVIEW中除了不能有數(shù)組的數(shù)組、圖表數(shù)組、圖形數(shù)組外,可以創(chuàng)建數(shù)字類型、字符串類型、布爾類型以及其他任何數(shù)據(jù)類型的數(shù)組。數(shù)組通常用一個(gè)循環(huán)來(lái)創(chuàng)建,因?yàn)镕or循環(huán)的循環(huán)次數(shù)是預(yù)先指定的,所以在循環(huán)開始前已經(jīng)分配好了內(nèi)存。3.1.1數(shù)組的創(chuàng)建在LabVIEW中,數(shù)組由數(shù)據(jù)類型、數(shù)據(jù)索引和數(shù)據(jù)3部分組成,數(shù)據(jù)類型隱含在數(shù)據(jù)中。如圖3-1所示,索引位于左側(cè),數(shù)組元素位于右側(cè)的數(shù)組框架中,用戶通過(guò)索引顯示可以很容易地訪問(wèn)到數(shù)組中的任何一個(gè)元素。圖3-1數(shù)組的組成數(shù)組控制器和指示器框架位于Controls→AllControls→Array&Cluster子模板上,數(shù)組常量框架位于Functions→AllFunctions→Array子模板上,見(jiàn)圖3-2。數(shù)組的創(chuàng)建分兩步。第一步,從Controls模板中創(chuàng)建數(shù)組框架,如圖3-3(a)所示。此時(shí)創(chuàng)建的數(shù)組框架不包含任何內(nèi)容,沒(méi)有數(shù)據(jù)類型,也沒(méi)有數(shù)據(jù),在程序中不能使用。第二步,定義數(shù)組類型。定義數(shù)組類型的方法有兩種,一是直接將面板上已有的控制器或指示器拖入數(shù)組框架內(nèi);另一種方法是在空數(shù)組框架內(nèi)右鍵彈出菜單選擇所需類型對(duì)象,放置在框架內(nèi),如圖3-3(b)所示。圖3-3(b)中所示的是放置了數(shù)值型控制器,構(gòu)成數(shù)值型控制器數(shù)組。放置在數(shù)組內(nèi)的對(duì)象一旦確定,數(shù)組類型就確定了。圖3-2數(shù)組框架在模板上的位置圖3-3數(shù)組的創(chuàng)建過(guò)程為同時(shí)顯示數(shù)組的多個(gè)元素,可使用定位工具在數(shù)組窗口角落上出現(xiàn)網(wǎng)絡(luò)形狀時(shí)或抓住大小調(diào)節(jié)柄,將對(duì)象擴(kuò)展到能顯示所希望數(shù)量的數(shù)組元素,如圖3-4所示。在后面板創(chuàng)建數(shù)組與前面板類似,首先從Functionss模板上創(chuàng)建框架,然后添加具體數(shù)據(jù)類型的數(shù)據(jù)。在前面板和框圖中創(chuàng)建數(shù)組的不同處是:前面板創(chuàng)建的是數(shù)組變量,可以是控制器,也可以是指示器;而在框圖程序中創(chuàng)建的數(shù)組只能是常量。圖3-4改變顯示數(shù)組元素的個(gè)數(shù)3.1.2多維數(shù)組數(shù)組在創(chuàng)建時(shí)都是一維數(shù)組,使其成為多維數(shù)組時(shí),可以直接用鼠標(biāo)(對(duì)象操作工具狀態(tài))在索引邊框下邊緣的尺寸控制點(diǎn)上下拖動(dòng),或者在右鍵彈出的快捷菜單中選擇AddDimension即可添加數(shù)組的維數(shù),如圖3-5所示。另外,還可以改變數(shù)組對(duì)象的屬性對(duì)話框修改數(shù)組的維數(shù)。二維數(shù)組需要有兩個(gè)索引(行索引和列索引)來(lái)定位一個(gè)元素。三維數(shù)組需要三個(gè)索引,由頁(yè)、行和列組成,每一頁(yè)可以看做是一個(gè)二維數(shù)組。通常,n維數(shù)組需要n個(gè)索引。圖3-5添加數(shù)組的維數(shù)3.1.3利用循環(huán)結(jié)構(gòu)創(chuàng)建數(shù)組利用For循環(huán)和While循環(huán)的自動(dòng)索引功能可以很方便地創(chuàng)建數(shù)組。首先看圖3-6所示的兩個(gè)程序框圖及運(yùn)行結(jié)果。圖3-6(a)中For循環(huán)的自動(dòng)索引功能默認(rèn)打開,每次循環(huán)產(chǎn)生一個(gè)0~10之間的數(shù)組元素,循環(huán)結(jié)束后,產(chǎn)生一個(gè)含有5個(gè)元素的一維數(shù)組,數(shù)組自動(dòng)傳輸?shù)街甘酒髦?。我們注意到,循環(huán)結(jié)構(gòu)外的連線比較粗。圖3-6(b)中,因?yàn)镕or循環(huán)的自動(dòng)索引功能被關(guān)閉,所以只有最后一個(gè)0~10之間的隨機(jī)數(shù)4.55576傳輸?shù)窖h(huán)體外,并且在循環(huán)體內(nèi)外的連線粗細(xì)沒(méi)有變化。使用兩個(gè)嵌套的For循環(huán)可以創(chuàng)建二維數(shù)組。外層循環(huán)產(chǎn)生行元素,內(nèi)層循環(huán)產(chǎn)生列元素。圖3-7給出了利用兩個(gè)For循環(huán)嵌套創(chuàng)建的一個(gè)3行4列的二維隨機(jī)數(shù)組的前面板和框圖程序。圖3-6利用For循環(huán)的自動(dòng)索引功能創(chuàng)建數(shù)組圖3-7使用嵌套的For循環(huán)創(chuàng)建二維數(shù)組將數(shù)組傳送到自動(dòng)索引功能打開的For循環(huán)中時(shí),LabVIEW會(huì)自動(dòng)把循環(huán)次數(shù)設(shè)置為數(shù)組的長(zhǎng)度,所以不需要為循環(huán)計(jì)數(shù)端子N連接數(shù)值。如果多個(gè)數(shù)組輸入For循環(huán),并且循環(huán)的計(jì)數(shù)端子設(shè)置了循環(huán)次數(shù),則實(shí)際的循環(huán)次數(shù)取最小值。3.1.4數(shù)組函數(shù)

LabVIEW中用于處理數(shù)組的節(jié)點(diǎn)位于Functions→AllFunctions→Array子模板上,如圖3-8所示。下面詳細(xì)介紹各個(gè)節(jié)點(diǎn)的用法。圖3-8Array子模板

1.ArraySize

ArraySize節(jié)點(diǎn)的圖標(biāo)如圖3-9所示,節(jié)點(diǎn)的輸入array為一個(gè)任意維數(shù)的數(shù)組,輸出size(s)返回各維的長(zhǎng)度。若輸入一維數(shù)組,則輸出為一個(gè)整數(shù)值;若輸入多維數(shù)組,則輸出為一個(gè)一維數(shù)組,每個(gè)元素對(duì)應(yīng)輸入數(shù)組中每一維的長(zhǎng)度。

【例3.1】求一維數(shù)組、二維數(shù)組和三維數(shù)組的長(zhǎng)度。

VI的前面板和程序框圖如圖3-10所示。圖3-9ArraySize節(jié)點(diǎn)的圖標(biāo)圖3-10例3.1的前面板和程序框圖

2.IndexArray

IndexArray節(jié)點(diǎn)的圖標(biāo)如圖3-11所示,n-dimensionarray是任意類型的n維數(shù)組,接入數(shù)組后會(huì)自動(dòng)生成n個(gè)索引端口,這n個(gè)索引端口是一組。以二維數(shù)組為例,使用定位工具拖拽節(jié)點(diǎn)的下邊沿增加新的輸入索引端子組,每組索引端子對(duì)應(yīng)一個(gè)輸出端口,如圖3-12所示。輸出elementorsubarray返回索引值對(duì)應(yīng)的標(biāo)量或數(shù)組。如果索引端口沒(méi)有輸入,則輸出端口將按照從上到下的順序依次輸出數(shù)組的元素;對(duì)于二維數(shù)組,將從上到下依次按行輸出。仔細(xì)觀察索引端口組,注意到,默認(rèn)情況下除了第一個(gè)索引端口以外的其他索引端口都被禁用,禁用的端口由一個(gè)空心小方框表示,未禁用的索引端口由實(shí)心小方框表示。當(dāng)對(duì)索引端口輸入數(shù)據(jù)時(shí),禁用狀態(tài)自動(dòng)解除。圖3-11IndexArray節(jié)點(diǎn)的圖標(biāo)圖3-12添加索引端口

【例3.2】從一個(gè)二維數(shù)組中取出某一行的所有元素、某一列的所有元素和某一個(gè)元素。

VI的前面板和程序框圖如圖3-13所示。輸入一個(gè)二維數(shù)組,通過(guò)拖動(dòng)節(jié)點(diǎn)的下邊沿,建立了3組索引端口,利用第一組索引端口取出某一行的所有元素,利用第二組索引端口取出某一列的所有元素,利用第三組索引端口取出某一元素。

3.ReplaceArraySubset

ReplaceArraySubset節(jié)點(diǎn)的圖標(biāo)如圖3-14所示,n-dimensionarray是任意類型的n維數(shù)組,接入數(shù)組后會(huì)自動(dòng)生成n個(gè)索引端口,完成的功能是用newelement/subarray的內(nèi)容替換索引值的索引目標(biāo),可以是某一位置的元素或子數(shù)組。輸出端口outputarray為替換后的新數(shù)組。注意,newelement/subarray端口的數(shù)據(jù)類型必須與輸入數(shù)組的數(shù)據(jù)類型一致。圖3-13例3.2的前面板和程序框圖圖3-14ReplaceArraySubset節(jié)點(diǎn)的圖標(biāo)

【例3.3】替換二維數(shù)組中的某一列元素。

VI的前面板和程序框圖如圖3-15所示。

4.InsertIntoArray

InsertIntoArray節(jié)點(diǎn)的圖標(biāo)如圖3-16所示,n-dimarray是任意類型的n維數(shù)組,接入數(shù)組后會(huì)自動(dòng)生成n個(gè)索引端口,完成的功能是在index指定的位置插入norn-1dimarray的內(nèi)容。注意,對(duì)每組n個(gè)索引端口只能連接一個(gè)。

【例3.4】在二維數(shù)組中插入一行元素。

VI的前面板和程序框圖如圖3-17所示。圖3-15例3.3的前面板和程序框圖圖3-16InsertIntoArray節(jié)點(diǎn)的圖標(biāo)圖3-17例3.4的前面板和程序框圖

5.DeleteFromArray

DeleteFromArray節(jié)點(diǎn)的圖標(biāo)如圖3-18所示,其功能是從n-dimarray輸入的數(shù)組中刪除指定的元素或者子數(shù)組。刪除的起始位置由index端口決定,刪除的長(zhǎng)度由length端口決定。arrayw/subsetdeleted端口輸出刪除元素后的新數(shù)組,deletedportion端口輸出被刪除的元素。索引端口的數(shù)目由輸入數(shù)組的維數(shù)決定,而且只能有一個(gè)索引端口接入數(shù)值。

【例3.5】在一個(gè)三維數(shù)組中刪除指定列數(shù)的元素。

VI的前面板和程序框圖如圖3-19所示,從每一頁(yè)的第一列開始,刪除一列,前面板顯示的是刪除第一列后,第一頁(yè)的變化情況。圖3-18DeleteFromArray節(jié)點(diǎn)的圖標(biāo)圖3-19例3.5的前面板和程序框圖

6.InitializeArray

InitializeArray節(jié)點(diǎn)的圖標(biāo)如圖3-20所示,其功能是初始化數(shù)組,數(shù)組的維數(shù)由dimensionsize端口的個(gè)數(shù)決定,每一維的長(zhǎng)度由dimensionsize確定,數(shù)組中的元素全部等于element端口輸入的值。將節(jié)點(diǎn)放置在框圖上時(shí),只有一個(gè)dimensionsize端口,通過(guò)拖動(dòng)節(jié)點(diǎn)的下邊沿,或在dimensionsize端口的快捷菜單中選擇AddDimension,可以創(chuàng)建多維數(shù)組,如圖3-21所示。

【例3.6】初始化一個(gè)二維數(shù)組。

VI的前面板和程序框圖如圖3-22所示。圖3-20InitializeArray節(jié)點(diǎn)的圖標(biāo)圖3-21添加dimensionsize端口圖3-22例3.6的前面板和程序框圖

7.BuildArray

BuildArray節(jié)點(diǎn)的圖標(biāo)如圖3-23所示,其功能是合并多個(gè)數(shù)組或給數(shù)組添加元素,形成一個(gè)新數(shù)組,因此節(jié)點(diǎn)可以接收數(shù)組和單值元素。該節(jié)點(diǎn)的兩種組合方式取決于開關(guān)選項(xiàng)ConcatenateInputs(連接輸入)。當(dāng)ConcatenateInputs被選中時(shí),輸出appendedarray是將所有輸入連接,其維數(shù)與所有輸入?yún)?shù)中的最高維數(shù)相同。當(dāng)ConcatenateInputs被關(guān)閉時(shí),所有輸入?yún)?shù)的維數(shù)必須相等,輸出比輸入高一維。最初在框圖上放置的節(jié)點(diǎn)只有一個(gè)輸入端口,通過(guò)快捷菜單選擇AddInput或使用定位工具拖拽節(jié)點(diǎn)的下邊沿可以增加輸入端口。圖3-23BuildArray節(jié)點(diǎn)的圖標(biāo)

【例3.7】利用BuildArray節(jié)點(diǎn)創(chuàng)建數(shù)組。

VI的前面板和程序框圖如圖3-24所示。圖3-24(a)中的輸入?yún)?shù)全是標(biāo)量,輸出是一維數(shù)組,而且ConcatenateInputs選項(xiàng)自動(dòng)關(guān)閉不能打開;圖3-24(b)和圖3-24(c)都是輸入兩個(gè)一維數(shù)組,但結(jié)果不一樣,因?yàn)閳D3-24(c)將連接輸入功能打開;圖3-24(d)輸入兩個(gè)數(shù)組的維數(shù)不同,ConcatenateInputs選項(xiàng)被打開而且不能關(guān)閉,輸出是二維數(shù)組。圖3-24例3.7的前面板和程序框圖

8.ArraySubset

ArraySubset節(jié)點(diǎn)的圖標(biāo)如圖3-25所示,其功能是從輸入數(shù)組array中取出由index和length端口指定的元素。index端口和length端口成對(duì)出現(xiàn),而且對(duì)數(shù)與輸入數(shù)組的維數(shù)相同。輸出subarray與輸入數(shù)組的維數(shù)相同。

【例3.8】從二維數(shù)組中取出部分元素。

VI的前面板和程序框圖如圖3-26所示。

9.Rotate1DArray

Rotate1DArray節(jié)點(diǎn)的圖標(biāo)如圖3-27所示,其功能是將輸入的一維數(shù)組元素循環(huán)右移n個(gè)位置,即將最后n個(gè)元素移至最前面。

【例3.9】將一維數(shù)組循環(huán)左移3位和右移3位。

VI的前面板和程序框圖如圖3-28所示。當(dāng)輸入端口n為負(fù)值時(shí),左移n位。圖3-26例3.8的前面板和程序框圖圖3-27Rotate1DArray節(jié)點(diǎn)的圖標(biāo)圖3-28例3.9的前面板和程序框圖

10.Reverse1DArray

Reverse1DArray節(jié)點(diǎn)的圖標(biāo)如圖3-29所示,其功能是將輸入的一維數(shù)組倒序輸出,輸入數(shù)組可以是任意類型的數(shù)組。

【例3.10】將一維數(shù)組倒序輸出。

VI的前面板和程序框圖如圖3-30所示。

11.Search1DArray

Search1DArray節(jié)點(diǎn)的圖標(biāo)如圖3-31所示,其功能是從輸入的一維數(shù)組中檢索值為element的元素,由端口startindex確定檢索的初始位置。如果找到該元素,則返回該元素的索引值,否則返回-1。

【例3.11】在一維數(shù)組中檢索一個(gè)字母的位置。

VI的前面板和程序框圖如圖3-32所示。圖3-29Reverse1DArray節(jié)點(diǎn)的圖標(biāo)圖3-30例3.10的前面板和程序框圖圖3-31Search1DArray節(jié)點(diǎn)的圖標(biāo)圖3-32例3.11的前面板和程序框圖

12.Split1DArray

Split1DArray節(jié)點(diǎn)的圖標(biāo)如圖3-33所示,其功能是將輸入的一維數(shù)組array從index設(shè)置的索引處分成兩個(gè)一維數(shù)組。當(dāng)index的值小于等于0時(shí),firstsubarray輸出為空;當(dāng)index的值大于數(shù)組長(zhǎng)度時(shí),secondsubarray輸出為空。

【例3.12】將一維數(shù)組分成兩部分。

VI的前面板和程序框圖如圖3-34所示。

13.Sort1DArray

Sort1DArray節(jié)點(diǎn)的圖標(biāo)如圖3-35所示,其功能是將輸入的一維數(shù)組按照升序排列。另外,該節(jié)點(diǎn)與Reverse1DArray節(jié)點(diǎn)組合可以實(shí)現(xiàn)對(duì)一維數(shù)組的降序排列。

【例3.13】將一維數(shù)組按照升序和降序分別排列。

VI的前面板和程序框圖如圖3-36所示。圖3-33Split1DArray節(jié)點(diǎn)的圖標(biāo)圖3-34例3.12的前面板和程序框圖圖3-35Sort1DArray節(jié)點(diǎn)的圖標(biāo)圖3-36例3.13的前面板和程序框圖

14.ArrayMax&Min

ArrayMax&Min節(jié)點(diǎn)的圖標(biāo)如圖3-37所示,其功能是返回輸入任意維數(shù)組的最大值和最小值,以及它們?cè)跀?shù)組中的位置。當(dāng)數(shù)組中有多個(gè)元素同為最大值或同為最小值時(shí),只輸出第一個(gè)值所在的位置。

【例3.14】查找數(shù)組中的最大值和最小值。

VI的前面板和程序框圖如圖3-38所示。

15.Transpose2DArray

Transpose2DArray節(jié)點(diǎn)的圖標(biāo)如圖3-39所示,其功能是將輸入的二位數(shù)組轉(zhuǎn)置,即求矩陣的轉(zhuǎn)置矩陣。圖3-37ArrayMax&Min節(jié)點(diǎn)的圖標(biāo)圖3-38例3.14的前面板和程序框圖圖3-39Transpose2DArray節(jié)點(diǎn)的圖標(biāo)

16.Interpolate1DArray

Interpolate1DArray節(jié)點(diǎn)的圖標(biāo)如圖3-40所示,其功能是進(jìn)行線性插值。

【例3.15】在一維數(shù)組中進(jìn)行線性插值。

VI的前面板和程序框圖如圖3-41所示。

17.Threshold1DArray

Threshold1DArray節(jié)點(diǎn)的圖標(biāo)如圖3-42所示,其功能是求一維數(shù)組的門限值,是線性插值的逆過(guò)程。圖3-40Interpolate1DArray節(jié)點(diǎn)的圖標(biāo)圖3-41例3.15的前面板和程序框圖圖3-42Threshold1DArray節(jié)點(diǎn)的圖標(biāo)

18.Interleave1DArrays

Interleave1DArrays節(jié)點(diǎn)的圖標(biāo)如圖3-43所示,其功能是將輸入的一維數(shù)組進(jìn)行插接。首先將所有一維數(shù)組的第0個(gè)元素按順序放在輸出數(shù)組中;再將所有一維數(shù)組的第1個(gè)元素按順序放在輸出數(shù)組中,依次類推。如果輸入數(shù)組的長(zhǎng)度不同,則以最小長(zhǎng)度為準(zhǔn)對(duì)其他數(shù)組進(jìn)行截取。

【例3.16】將3個(gè)不同長(zhǎng)度的一維數(shù)組插接。

VI的前面板和程序框圖如圖3-44所示。圖3-43Interleave1DArrays節(jié)點(diǎn)的圖標(biāo)圖3-44例3.16的前面板和程序框圖

19.Decimate1DArray

Decimate1DArray節(jié)點(diǎn)的圖標(biāo)如圖3-45所示,其實(shí)現(xiàn)的功能與Interleave1DArrays節(jié)點(diǎn)相反。

【例3.17】將一個(gè)一維數(shù)組分解成多個(gè)一維數(shù)組。

VI的前面板和程序框圖如圖3-46所示。

20.ReshapeArray

ReshapeArray節(jié)點(diǎn)的圖標(biāo)如圖3-47所示,其功能是將n維數(shù)組轉(zhuǎn)化成m維數(shù)組數(shù)出。輸出數(shù)組的維數(shù)由dimensionsize端口的個(gè)數(shù)決定。

【例3.18】將一個(gè)二維數(shù)組轉(zhuǎn)化為三維數(shù)組。

VI的前面板和程序框圖如圖3-48所示。圖3-45Decimate1DArray節(jié)點(diǎn)的圖標(biāo)圖3-46例3.17的前面板和程序框圖圖3-47ReshapeArray節(jié)點(diǎn)的圖標(biāo)圖3-48例3.18的前面板和程序框圖3.1.5多態(tài)性多態(tài)性(Polymorphism)是LabVIEW的一些函數(shù)(如加、減、乘和除)接受不同維數(shù)和類型輸入的能力。具有這種能力的函數(shù)是多態(tài)函數(shù),圖3-49顯示了乘函數(shù)的一些多態(tài)性的不同組合。圖3-48中,第一個(gè)組合是兩個(gè)標(biāo)量相乘;第二個(gè)組合是一個(gè)標(biāo)量和一個(gè)一維數(shù)組相乘;第三個(gè)組合是兩個(gè)長(zhǎng)度不同的一維數(shù)組相乘,相乘后的數(shù)組維數(shù)取較短的一個(gè)數(shù)組的長(zhǎng)度。圖3-49乘函數(shù)的多態(tài)性組合3.2簇簇(cluster)是一種類似數(shù)組的數(shù)據(jù)結(jié)構(gòu),也是復(fù)合數(shù)據(jù)類型,用于分組數(shù)據(jù)。簇與數(shù)組有兩個(gè)重要區(qū)別,一是簇可以包含不同的數(shù)據(jù)類型,而數(shù)據(jù)組只能包含相同的數(shù)據(jù)類型;另一個(gè)區(qū)別是簇具有固定的大小,在運(yùn)行時(shí)不能添加元素,而數(shù)組的長(zhǎng)度在運(yùn)行時(shí)可以自由改變。簇和數(shù)組的相似之處是二者都是由控件和指示器組成的。3.2.1簇的創(chuàng)建簇的創(chuàng)建和數(shù)組的創(chuàng)建類似,首先建立框架,然后向框架中添加元素。簇控制器和指示器的框架位于Controls→AllControls→Array&Cluster子模板上,簇常量框架位于Functions→AllFunctions→Cluster子模板上,如圖3-50所示。圖3-50簇框架在Controls和Functions模板上的位置簇的創(chuàng)建過(guò)程如圖3-51所示。需要注意的是,向簇框架中添加元素時(shí)不能同時(shí)包含控制器和指示器。在簇框架上彈出的快捷菜單中,?AutoSizing中的3個(gè)選項(xiàng)可以調(diào)整簇元素的布局。其中,SizetoFit選項(xiàng)調(diào)整簇框架的大小,以適合所包含的所有元素;ArrangeHorizontally選項(xiàng)水平壓縮排列所有元素;ArrangeVertically選項(xiàng)垂直壓縮排列所有元素。3.2.2簇的順序簇元素按照放入簇框架中的先后順序排序,并且依次標(biāo)記為0、1、2、…。當(dāng)從簇中刪除元素時(shí),剩余元素的順序?qū)⒆詣?dòng)調(diào)整。改變簇中已有元素排列順序的方法是在簇邊緣彈出的快捷菜單中選擇RecordControlsinCluster…,這樣進(jìn)入簇元素順序的編輯狀態(tài),如圖3-52所示。圖3-51簇的創(chuàng)建過(guò)程圖3-52簇元素順序編輯狀態(tài)從上簇元素順序編輯狀態(tài)圖中看到,每個(gè)元素右下角出現(xiàn)兩個(gè)序號(hào),左邊黑底白字的是新序號(hào),右邊是修改之前的舊序號(hào)。在改變順序之前,左邊和右邊的數(shù)字是相等的。最初工具欄提示Clicktosetto0,這時(shí)單簇元素之一將把該元素設(shè)置為第0個(gè)元素。此時(shí),工具欄信息變成Clicktosetto1,再單擊某個(gè)元素將其設(shè)置為第1個(gè)元素,依次設(shè)置完畢后,單擊工具欄中的OK按鈕確認(rèn)修改,也可以單擊X按鈕恢復(fù)到?jīng)]有改變順序之前的狀態(tài)。簇元素的順序是比較重要的,通過(guò)圖3-53所示的例子可以看到。當(dāng)改變簇元素的順序后,相應(yīng)的也要改變簇指示器,否則連線是無(wú)效的,如圖3-53(b)所示。圖3-53簇元素順序的重要性3.2.3簇的功能函數(shù)簇的功能函數(shù)位于Functions→AllFunctions→Cluster子模板上,如圖3-54所示,其中最重要的是Unbundle和Bundle函數(shù)。

1.Unbundle

Unbundle節(jié)點(diǎn)的圖標(biāo)如圖3-55所示,其功能是將輸入簇cluster進(jìn)行解包以提取簇中的單個(gè)元素,輸出元素按照簇順序從上到下排列。框圖上放置的Unbundle節(jié)點(diǎn)只有兩個(gè)輸出端口,接入cluster后,輸出端口數(shù)會(huì)自動(dòng)調(diào)整為cluster所包含的元素的個(gè)數(shù)。

【例3.19】將一個(gè)簇中的元素分別取出。

VI的前面板和程序框圖如圖3-56所示。接入簇后,Unbundle函數(shù)自動(dòng)調(diào)整輸出端口的數(shù)目和數(shù)據(jù)類型,使其與輸入簇所含元素一致。圖3-54Cluster子模板圖3-55Unbundle節(jié)點(diǎn)的圖標(biāo)圖3-56例3.19的前面板和程序框圖

2.Bundle

Bundle節(jié)點(diǎn)的圖標(biāo)如圖3-57所示,當(dāng)不接入輸入?yún)?shù)cluster時(shí),該節(jié)點(diǎn)將element0~n-1打包生成含有n個(gè)元素的新簇,接入輸入端口的順序決定了生成新簇中元素的順序。當(dāng)接入?yún)?shù)cluster后,element端口的數(shù)目自動(dòng)調(diào)整為與cluster所含元素?cái)?shù)相同,節(jié)點(diǎn)的功能是替換cluster中的指定元素。注意,接入元素的順序必須與cluster中所含元素的順序按照類型匹配。剛在框圖上放置的Bundle節(jié)點(diǎn)只有兩個(gè)輸入端口,用鼠標(biāo)拖動(dòng)下邊沿,或者在節(jié)點(diǎn)的快捷菜單中選擇AddInput可以增加端口,如圖3-58所示。圖3-57Bundle節(jié)點(diǎn)的圖標(biāo)圖3-58增加element端口

【例3.20】將不同數(shù)據(jù)類型的元素組成一個(gè)新簇;替換簇中的某些元素。

VI的前面板和程序框圖如圖3-59所示。在第2個(gè)例子中看到,沒(méi)有接入替換元素的原簇元素沒(méi)有改變。

3.UnbundleByName

UnbundleByName節(jié)點(diǎn)的圖標(biāo)如圖3-60所示,其功能是將clusterofnamed輸入簇中的元素按標(biāo)簽解包,只能獲得有標(biāo)簽元素的值。當(dāng)接入簇時(shí),在輸出端口右鍵彈出的快捷菜單中的SelectItem子菜單中可以選擇元素。

【例3.21】UnbundleByName節(jié)點(diǎn)應(yīng)用舉例。

VI的前面板和程序框圖如圖3-61所示。圖3-59例3.20的前面板和程序框圖圖3-60UnbundleByName節(jié)點(diǎn)的圖標(biāo)圖3-61例3.21的前面板和程序框圖

4.BundleByName

BundleByName節(jié)點(diǎn)的圖標(biāo)如圖3-62所示,inputcluster必須接入?yún)?shù),而且至少有一個(gè)元素有標(biāo)簽。節(jié)點(diǎn)的功能是按照輸入端口的標(biāo)簽替換inputcluster中的元素。由于該節(jié)點(diǎn)是按照元素標(biāo)簽打包的,所以name端口不需要有明確的順序,只要按照在name端口(OperateValue狀態(tài)左鍵單擊)彈出的菜單或右鍵SelectIstm子菜單中所選的元素標(biāo)簽接入數(shù)據(jù)即可,如圖3-63所示。

【例3.22】BundleByName節(jié)點(diǎn)應(yīng)用舉例。

VI的前面板和程序框圖如圖3-64所示。圖3-62BundleByName節(jié)點(diǎn)的圖標(biāo)圖3-63選擇name端口的數(shù)據(jù)圖3-64例3.22的前面板和程序框圖

5.BuildClusterArray

BuildClusterArray節(jié)點(diǎn)的圖標(biāo)如圖3-65所示,該節(jié)點(diǎn)的功能是先將component端口輸入的n個(gè)參數(shù)打包成簇,然后組成元素為簇的一維數(shù)組。輸入?yún)?shù)可以都是數(shù)組,但要求維數(shù)必須相等。

6.Index&BundleClusterArray

Index&BundleClusterArray節(jié)點(diǎn)的圖標(biāo)如圖3-66所示,輸入?yún)?shù)為任意數(shù)據(jù)類型的一維數(shù)組,將輸入數(shù)組中的元素按照索引組成簇,然后將這些簇組成一維數(shù)組輸出。

【例3.23】Index&BundleClusterArray節(jié)點(diǎn)應(yīng)用舉例。

VI的前面板和程序框圖如圖3-67所示。圖3-65BuildClusterArray節(jié)點(diǎn)的圖標(biāo)圖3-66Index&BundleClusterArray節(jié)點(diǎn)的圖標(biāo)圖3-67例3.23的前面板和程序框圖3.2.4簇和數(shù)組互換在LabVIEW中,簇和數(shù)組的轉(zhuǎn)換很容易,可通過(guò)下面兩個(gè)節(jié)點(diǎn)實(shí)現(xiàn)。這兩個(gè)節(jié)點(diǎn)位于Functions→AllFunctions→Cluster子模板上。

1.ClusterToArray

ClusterToArray節(jié)點(diǎn)的圖標(biāo)如圖3-68所示,輸入簇cluster的所有元素必須是相同數(shù)據(jù)類型,該節(jié)點(diǎn)將所有簇元素按照順序組合成一維數(shù)組輸出。

2.ArrayToCluster

ArrayToCluster節(jié)點(diǎn)的圖標(biāo)如圖3-69所示,其功能與ClusterToArray節(jié)點(diǎn)的功能相反,即將輸入數(shù)組中的元素按順序打包成簇輸出。圖3-68ClusterToArray節(jié)點(diǎn)的圖標(biāo)圖3-69ArrayToCluster節(jié)點(diǎn)的圖標(biāo)3.3波形在信號(hào)采集、處理和分析過(guò)程中經(jīng)常使用波形數(shù)據(jù)類型。波形的結(jié)構(gòu)和簇非常相似,是一種特殊類型的簇。LabVIEW提供了很多功能強(qiáng)大的節(jié)點(diǎn)用來(lái)處理波形數(shù)據(jù)。3.3.1TimeStamp和Variant

TimeStamp是LabVIEW中記錄時(shí)間的專用數(shù)據(jù)類型。TimeStamp控制器和指示器位于Controls→AllControls→Numeric子模板上,TimeStampConstant位于Functions→AllFunctions→Numeric子模板上,如圖3-70所示。TimeStamp的初始值是0。在TimeStamp對(duì)象彈出的快捷菜單中選擇DataOperation→SetTimeandData…,打開對(duì)話框,可以在此修改日期和時(shí)間。圖3-70TimeStamp控件和常量

Variant是一種特殊的數(shù)據(jù)類型,任何數(shù)據(jù)類型都可以轉(zhuǎn)化為Variant類型,然后為其添加屬性。Variant類型的操作節(jié)點(diǎn)都在Functions→AllFunctions→Communication→DataSocket→Variant子模板上,如圖3-71所示,節(jié)點(diǎn)依次為:ToVariant、VariantToData、VariantToFlattenedString、FlattenedStringToVariant、GetVariantAttribute、SetVariantAttribute、DeleteVariantAttribute。圖3-71Variant操作節(jié)點(diǎn)3.3.2波形數(shù)據(jù)的組成

LabVIEW中的波形數(shù)據(jù)有兩種:模擬波形數(shù)據(jù)(WaveformData)和數(shù)字波形數(shù)據(jù)(DigitalWaveformData)。模擬波形數(shù)據(jù)用來(lái)表示模擬信號(hào)的波形;數(shù)字波形用來(lái)表示二進(jìn)制數(shù)據(jù)。通常二者都是由4個(gè)元素組成,即起始時(shí)間、Deltat、波形數(shù)據(jù)和屬性。

(1)起始時(shí)間t0。起始時(shí)間t0為TimeStamp類型,表示波形數(shù)據(jù)的時(shí)間起點(diǎn)。起始時(shí)間可以用來(lái)同步多個(gè)波形,也可以用來(lái)確定兩個(gè)波形的相對(duì)時(shí)間。

(2)?Deltatdt。dt是雙精度浮點(diǎn)數(shù),表示一個(gè)波形中相鄰兩個(gè)數(shù)據(jù)點(diǎn)之間的時(shí)間間隔,以s為單位。

(3)波形數(shù)據(jù)Y。Y是雙精度浮點(diǎn)數(shù)組,按照時(shí)間先后順序給出整個(gè)波形的所有數(shù)據(jù)點(diǎn)。

(4)屬性Attributes。屬性包含了波形的數(shù)據(jù)信息,如波形名稱、數(shù)據(jù)采集設(shè)備的名稱等。Attributes是Variant數(shù)據(jù)類型,用于攜帶任意的屬性信息。

LabVIEW利用前面板對(duì)象Waveform和DigitalWaveform來(lái)分別存放模擬波形數(shù)據(jù)和數(shù)字波形數(shù)據(jù),Waveform和DigitalWaveform在Controls→AllControls→I/O子模板上。默認(rèn)情況下只顯示3個(gè)元素(t0、dt和Y),在右鍵彈出的快捷菜單中選擇VisibleItems→Attributes可顯示屬性,如圖3-72所示。圖3-72波形控件3.3.3波形數(shù)據(jù)的操作節(jié)點(diǎn)波形數(shù)據(jù)的操作節(jié)點(diǎn)位于Functions→AllFunctions→Waveform子模板上,如圖3-73所示。這些節(jié)點(diǎn)分為基本波形運(yùn)算節(jié)點(diǎn)、模擬波形數(shù)據(jù)運(yùn)算節(jié)點(diǎn)、數(shù)字波形數(shù)據(jù)運(yùn)算節(jié)點(diǎn)和波形數(shù)據(jù)的存取節(jié)點(diǎn)4部分。這里主要介紹幾個(gè)最基本的波形操作節(jié)點(diǎn)。

1.GetWaveformC

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論