第5章虛擬儀器設(shè)計(jì)基礎(chǔ)_第1頁(yè)
第5章虛擬儀器設(shè)計(jì)基礎(chǔ)_第2頁(yè)
第5章虛擬儀器設(shè)計(jì)基礎(chǔ)_第3頁(yè)
第5章虛擬儀器設(shè)計(jì)基礎(chǔ)_第4頁(yè)
第5章虛擬儀器設(shè)計(jì)基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩73頁(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)介

第5章虛擬儀器設(shè)計(jì)基礎(chǔ)第5章虛擬儀器設(shè)計(jì)基礎(chǔ)主要教學(xué)內(nèi)容程序結(jié)構(gòu)字符串、數(shù)組和簇局部變量和全局變量

文件操作圖形顯示5.1程序結(jié)構(gòu)LabVIEW中的結(jié)構(gòu)是其他基于文本的語(yǔ)言中的循環(huán)、判斷等結(jié)構(gòu)的圖形化體現(xiàn)。

什么是結(jié)構(gòu)?結(jié)構(gòu)是控制G程序數(shù)據(jù)流程的元素。

G語(yǔ)言包含的結(jié)構(gòu)有:

Whileloop結(jié)構(gòu)

For結(jié)構(gòu)條件結(jié)構(gòu)順序結(jié)構(gòu)公式節(jié)點(diǎn)事件結(jié)構(gòu)

5.1.1

循環(huán)結(jié)構(gòu)

LabVIEW中的循環(huán)結(jié)構(gòu)主要有:

For循環(huán)

While循環(huán)這兩種循環(huán)結(jié)構(gòu)功能基本相同,但使用上有一些差別。For循環(huán)必須指定循環(huán)的次數(shù),循環(huán)一定的次數(shù)后自動(dòng)退出循環(huán);而While循環(huán)則不用指定循環(huán)的次數(shù),只需要指定循環(huán)退出的條件。

1.For循環(huán)For循環(huán)是將某程序段重復(fù)執(zhí)行預(yù)先設(shè)定的次數(shù),類似C語(yǔ)言的ForLoop循環(huán):

For(i=0;i<N;i++){

循環(huán)體;

}包含兩個(gè)端口:計(jì)數(shù)端口N

重復(fù)端口i

移位寄存器移位積存器的功能是將第i-1,i-2,i-3…次循環(huán)的計(jì)算結(jié)果保存在For循環(huán)的緩沖區(qū)內(nèi),并在第i次循環(huán)時(shí)將這些數(shù)據(jù)從循環(huán)況架左側(cè)的移位寄存器中送出,供循環(huán)框架內(nèi)的節(jié)點(diǎn)使用,其中,i=0,1,2,3…。

移位寄存器FOR循環(huán)應(yīng)用舉例例5.1求Main(){inti,sum;Sum=0;For(i=1;i≤100;i++)sum=sum+i;Printf(“sum=%d”,sum);}FOR循環(huán)應(yīng)用舉例例5.2

求一組隨機(jī)數(shù)的最大值和最小值。前面板和程序框圖

2.While循環(huán)當(dāng)循環(huán)次數(shù)不能預(yù)先確定時(shí),就需用到While循環(huán)(WhileLoop)。While循環(huán)也是LabVIEW最基本的結(jié)構(gòu)之一,相當(dāng)于C語(yǔ)言中的While循環(huán)和do循環(huán)。

While(條件)do{{

循環(huán)體;循環(huán)體;

}

}While(條件)Whlie循環(huán)結(jié)構(gòu)Whlie循環(huán)包含兩個(gè)端口:條件端口和重復(fù)端口i條件端口輸入的是布爾變量,它用于判斷循環(huán)在什么條件下停止執(zhí)行。它有兩種使用狀態(tài):StopifTrue和ContinueifTrue;重復(fù)端口i為當(dāng)前循環(huán)的次數(shù)。

While循環(huán)應(yīng)用示例例5.3

求N!voidmain(){inta,i,n;a=1;i=0;scanf(“%d”,&n);do{i=i+1;a=a*i;}while(i<n);printf(“n!=%d”,a);}前面板和程序框圖

5.1.2條件結(jié)構(gòu)條件結(jié)構(gòu)類似于文本編程語(yǔ)言中的switch語(yǔ)句或if...then...else語(yǔ)句。

選擇端口相當(dāng)于C語(yǔ)言的Switch語(yǔ)句中的“表達(dá)式”,框圖表示符相當(dāng)于“表達(dá)式n”。選擇端口的外部控制條件的數(shù)據(jù)類型有整型、布爾型、字符串型和枚舉型。

條件結(jié)構(gòu)的數(shù)據(jù)輸入和輸出通道

當(dāng)由外部節(jié)點(diǎn)向結(jié)構(gòu)框架連線時(shí),在結(jié)構(gòu)邊框就創(chuàng)建了輸入通道,而當(dāng)由框內(nèi)內(nèi)節(jié)點(diǎn)與邊框連線時(shí),在結(jié)構(gòu)邊框就建立了輸出通道。對(duì)所有條件分支來(lái)說(shuō)對(duì)于輸入通道的數(shù)據(jù)可以使用,也可以不使用;只要有一個(gè)分支提供輸出數(shù)據(jù),所有分支條件都必須與輸出通道連接。條件結(jié)構(gòu)應(yīng)用舉例例5.4

求一個(gè)數(shù)的平方根,若該數(shù)≥0,計(jì)算該值平方根并將計(jì)算結(jié)果輸出;若該數(shù)<0時(shí),輸出錯(cuò)誤代碼“-999.00”。

框圖程序運(yùn)行結(jié)果

條件結(jié)構(gòu)應(yīng)用舉例例5.5

利用條件結(jié)構(gòu)編寫(xiě)溫度采集報(bào)警程序,當(dāng)采集溫度高于設(shè)定值時(shí)產(chǎn)生報(bào)警。

前面板和程序框圖5.1.3順序結(jié)構(gòu)LabVIEW順序結(jié)構(gòu)的功能是強(qiáng)制程序按一定的順序執(zhí)行。順序結(jié)構(gòu)包含一個(gè)或多個(gè)按順序執(zhí)行的子程序框圖或幀。LabVIEW提供了兩種順序結(jié)構(gòu):平鋪式順序結(jié)構(gòu)層疊式順序結(jié)構(gòu)

順序結(jié)構(gòu)應(yīng)用舉例例5.6

計(jì)算生成等于某個(gè)給定值的隨機(jī)數(shù)據(jù)所用時(shí)間。

層疊式順序結(jié)構(gòu)VI的程序框圖

5.1.4

事件結(jié)構(gòu)

事件是對(duì)活動(dòng)發(fā)生的異步通知。事件可以來(lái)自于用戶界面、外部I/O或程序的其他部分。用戶界面事件包括鼠標(biāo)點(diǎn)擊、鍵盤(pán)按鍵等動(dòng)作;LabVIEW應(yīng)用程序在沒(méi)有事件發(fā)生時(shí)處于休息狀態(tài),直到前面板窗口中有一個(gè)事件發(fā)生為止。

1.事件結(jié)構(gòu)的組成事件結(jié)構(gòu)包含超時(shí)端口和事件端口

事件選擇器標(biāo)簽表明由哪些事件引起了當(dāng)前分支的執(zhí)行;

事件超時(shí)接線端用于設(shè)置事件結(jié)構(gòu)在等待指定事件發(fā)生時(shí)的超時(shí)時(shí)間;事件數(shù)據(jù)節(jié)點(diǎn)用于輸出事件的參數(shù),端口數(shù)目和數(shù)據(jù)類型根據(jù)事件的不同而不同。

2.事件結(jié)構(gòu)的使用用戶界面事件有兩種類型:通知事件

過(guò)濾事件

通知事件表明某個(gè)用戶操作已經(jīng)發(fā)生,比如用戶改變了控件的值;

過(guò)濾事件允許用戶對(duì)發(fā)生的事件做出響應(yīng),人為控制事件的發(fā)生。編輯事件對(duì)話框

通過(guò)編輯事件對(duì)話框,可以設(shè)定某個(gè)事件結(jié)構(gòu)分支響應(yīng)的事件。

事件結(jié)構(gòu)應(yīng)用舉例例5.7

利用事件結(jié)構(gòu)演示用鼠標(biāo)單擊前面板窗口時(shí),發(fā)生鼠標(biāo)按下事件并處理鼠標(biāo)按下事件。詢問(wèn)對(duì)話框事件結(jié)構(gòu)VI的程序框圖

5.1.5

公式節(jié)點(diǎn)

公式節(jié)點(diǎn):一種專用于處理數(shù)學(xué)公式編程的特殊結(jié)構(gòu)形式。在公式節(jié)點(diǎn)框架內(nèi),LabVIEW允許用戶像書(shū)寫(xiě)數(shù)學(xué)公式或方程一樣,直接編寫(xiě)數(shù)學(xué)處理節(jié)點(diǎn),形式與標(biāo)準(zhǔn)C語(yǔ)言類似。公式節(jié)點(diǎn)的創(chuàng)建通常按以下步驟進(jìn)行:

第一步創(chuàng)建公式節(jié)點(diǎn)第二步添加輸入、輸出端口第三步輸入程序代碼公式節(jié)點(diǎn)的應(yīng)用例5.8

輸入三角形的三邊長(zhǎng),求三角形面積。

基本公式節(jié)點(diǎn)框架中出現(xiàn)的所有變量,必須有一個(gè)相對(duì)應(yīng)的輸入端口或輸出端口,否則,LabVIEW會(huì)報(bào)錯(cuò)。前面板和程序框圖5.2字符串、數(shù)組和簇字符串、數(shù)組和簇是LabVIEW中的三種數(shù)據(jù)類型。字符串是ASCII碼集合;數(shù)組與其他編程語(yǔ)言中的數(shù)組概念是相同的;簇相當(dāng)于C語(yǔ)言中的結(jié)構(gòu)數(shù)據(jù)類型。

5.2.1

字符串

字符串是可顯示的或不可顯示的ASCII字符序列;

在前面板上,字符串以表格、文本輸入框和標(biāo)簽的形式出現(xiàn)。LabVIEW提供了用于對(duì)字符串進(jìn)行操作的內(nèi)置VI和函數(shù),可對(duì)字符串進(jìn)行格式化、解析字符串等編輯操作。

1.字符串顯示類型字符串有4種顯示類型

不可顯示字符2.字符串函數(shù)LabVIEW8.2的字符串子選板中有多個(gè)字符串處理函數(shù)

3.字符串應(yīng)用舉例例5.9

將一些字符串和數(shù)值轉(zhuǎn)換成一個(gè)新的輸出字符串。

VI的功能是將浮點(diǎn)型數(shù)據(jù)12.3轉(zhuǎn)換為“12.300”,單位為“V”,結(jié)果顯示“Voltage=12.300V”的組合字符串。前面板和程序框圖5.2.2數(shù)組數(shù)組是相同類型數(shù)據(jù)元素的有序集合。一個(gè)數(shù)組可以是一維或者多維,如果必要,每維最多可有231-1個(gè)元素??梢酝ㄟ^(guò)數(shù)組索引訪問(wèn)其中的每個(gè)元素;索引的范圍是0到n–1,其中n是數(shù)組中元素的個(gè)數(shù)。

1.數(shù)組的創(chuàng)建有2種方法:前面板上創(chuàng)建數(shù)組程序框圖上創(chuàng)建數(shù)組

一般說(shuō)來(lái),創(chuàng)建一個(gè)數(shù)組有兩件事要做,首先要建一個(gè)數(shù)組的“殼”(shell),然后在這個(gè)殼中置入數(shù)組元素(數(shù)或字符串等)。(1)前面板上創(chuàng)建數(shù)組方法是:在前面板上放置一個(gè)數(shù)組框架,然后將一個(gè)數(shù)據(jù)對(duì)象或元素拖曳到該數(shù)組框架中。數(shù)據(jù)對(duì)象或元素可以是數(shù)值、布爾、字符串、路徑、引用句柄、簇輸入控件或顯示控件。

(2)程序框圖上創(chuàng)建數(shù)組首先在數(shù)組函數(shù)子選板上選擇“數(shù)組常量”,在程序框圖上創(chuàng)建一個(gè)數(shù)組外殼,然后可以在數(shù)組外殼里選擇放入數(shù)值型常量、字符串型常量、布爾型常量以及枚舉等。

2.數(shù)組函數(shù)LabVIEW8.2在數(shù)組函數(shù)子選板中給出了大量的數(shù)組處理函數(shù),數(shù)組函數(shù)子選板如圖

3.數(shù)組應(yīng)用舉例例5.10

求一個(gè)一維數(shù)組和一個(gè)二維數(shù)組的長(zhǎng)度。

前面板和程序框圖

數(shù)組函數(shù)應(yīng)用例5.11

利用創(chuàng)建數(shù)組函數(shù)組建數(shù)組。

前面板和程序框圖

數(shù)組函數(shù)應(yīng)用例5.12

從一個(gè)二維數(shù)組中取出一部分元素。

前面板和程序框圖

5.2.3簇什么是簇?簇是由不同類型的數(shù)據(jù)元素組成的一種數(shù)據(jù)類型。簇是LabVIEW中一個(gè)比較特別的數(shù)據(jù)類型。

1.

簇的創(chuàng)建

(1)前面板上創(chuàng)建簇

在前面板上放置一個(gè)簇框架,再將一個(gè)數(shù)據(jù)對(duì)象或元素拖曳到簇框架中。

簇輸入控件簇顯示控件

(2)程序框圖上創(chuàng)建簇從函數(shù)選板中選擇一個(gè)簇常量,將該簇框架放置于程序框圖上,再將字符串常量、數(shù)值常量、布爾常量放置到該簇框架中。

蔟控制件與蔟指示件

a)混合簇控制件(b)混合簇指示器(c)數(shù)值型簇控制件

在一個(gè)簇對(duì)象中,簇元素只能同為控制件或指示件,不能同時(shí)包含兩種。一個(gè)簇是控制簇還是指示簇,取決于放進(jìn)簇中的第一個(gè)元素。2.簇函數(shù)用戶在使用一個(gè)簇時(shí),主要是訪問(wèn)簇中的各個(gè)元素,或?qū)⒉煌愋偷嚓P(guān)的數(shù)組組成一個(gè)簇,這些功能由各個(gè)函數(shù)來(lái)實(shí)現(xiàn)。3.

簇應(yīng)用舉例

例5.13

將幾個(gè)不同的數(shù)據(jù)類型組成一個(gè)簇。

打包簇VI的前面板和程序框圖

解除捆綁函數(shù)的使用例5.14將一個(gè)簇中的各個(gè)元素值分別取出。

解包簇VI的前面板和程序框圖

5.3局部變量和全局變量

局部變量和全局變量是LabVIEW用來(lái)傳遞數(shù)據(jù)的工具。LabVIEW編程是一種數(shù)據(jù)流編程,它是通過(guò)連線來(lái)傳遞數(shù)據(jù)的。但是如果一個(gè)程序太復(fù)雜的話,有時(shí)連線會(huì)很困難甚至無(wú)法連線,這時(shí)就需要用到局部變量。另外,需要在兩個(gè)程序之間交換數(shù)據(jù)時(shí),靠連線的方式是無(wú)法實(shí)現(xiàn)的,在這種情況下,就需要使用全局變量。

5.3.1局部變量局部變量:只能在同一個(gè)VI中使用的變量。創(chuàng)建局部變量的方法有兩種:(1)直接為前面板對(duì)象創(chuàng)建局部變量;(2)通過(guò)函數(shù)選板創(chuàng)建局部變量。創(chuàng)建局部變量方式一創(chuàng)建局部變量方式二注意:局部變量具有讀、寫(xiě)兩種屬性

局部變量的應(yīng)用舉例例5.15

要求使用局部變量向與它聯(lián)系的前面板上的電壓表控件寫(xiě)數(shù)據(jù),也可以從電壓表控件讀取數(shù)據(jù)。

局部變量創(chuàng)建VI的前面板和程序框圖局部變量的特點(diǎn)

(1)局部變量只能在同一個(gè)VI中使用,其生存期與它所在的VI模塊密切相關(guān),VI停止運(yùn)行,在此VI內(nèi)定義的局部變量自動(dòng)消失;(2)局部變量必須依附在一個(gè)前面板對(duì)象上。一個(gè)前面板對(duì)象可以建立多個(gè)局部變量,但一個(gè)局部變量只能有一個(gè)端點(diǎn)與其對(duì)應(yīng);(3)局部變量就是其相應(yīng)前面板對(duì)象的一個(gè)數(shù)據(jù)拷貝,要占用一定的內(nèi)存。

5.3.2全局變量全局變量:可在不同VI之間進(jìn)行數(shù)據(jù)傳遞。全局變量是內(nèi)置的LabVIEW對(duì)象。創(chuàng)建全局變量時(shí),LabVIEW將自動(dòng)創(chuàng)建一個(gè)前面板但無(wú)程序框圖的特殊全局VI。向該全局VI的前面板添加輸入控件和顯示控件可定義其中所含全局變量的數(shù)據(jù)類型。

1.創(chuàng)建全局變量(1)新建一個(gè)VI,從函數(shù)選板的結(jié)構(gòu)子選板中選擇一個(gè)全局變量,將其放置在程序框圖中;(2)使用操作工具雙擊全局變量節(jié)點(diǎn),會(huì)自動(dòng)打開(kāi)全局變量VI的前面板,然后在前面板上放置所需的控制或顯示對(duì)象;(3)保存全局變量文件。方法是在主菜單中選擇【文件】→【保存】。然后關(guān)閉全局變量的前面板窗口;2.全局變量的應(yīng)用舉例

第二個(gè)VI的前面板和程序框圖

第一個(gè)VI測(cè)量溫度,送至全局變量中,第二個(gè)VI顯示溫度。

第一個(gè)VI程序框圖

例5.16

利用全局變量在不同VI中傳遞數(shù)據(jù)。

全局變量的特點(diǎn)(1)LabVIEW中的全局變量相對(duì)于傳統(tǒng)編程語(yǔ)言中的全局變量更加靈活。傳統(tǒng)編程語(yǔ)言中的全局變量只能是一個(gè)變量,一種數(shù)據(jù)類型。而LabVIEW中的全局變量以獨(dú)立文件的形式存在,并且在一個(gè)全局變量中可以包含多個(gè)對(duì)象,擁有多種數(shù)據(jù)類型;(2)全局變量與子VI的不同之處在于它不是一個(gè)真正的VIs,不能進(jìn)行編程,只能用于簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)與數(shù)據(jù)傳遞;(3)全局變量不能用于兩個(gè)VI之間的實(shí)時(shí)數(shù)據(jù)傳遞。因?yàn)椋ǔG闆r下兩個(gè)VI對(duì)全局變量的讀寫(xiě)速度不能保證嚴(yán)格一致。5.4文件操作文件操作三個(gè)基本步驟:打開(kāi)現(xiàn)存文件或創(chuàng)建一個(gè)新文件;寫(xiě)入或讀取文件;關(guān)閉文件。5.4.1LabVIEW支持的文件類型LabVIEW可讀寫(xiě)的文件格式有:

文本文件

二進(jìn)制文件

數(shù)據(jù)記錄文件

5.4.2文件操作函數(shù)5.4.3文件操作舉例1.電子表格文件的輸入、輸出在LabVIEW8.2中,提供了兩個(gè)專門(mén)用于電子表格文件的輸入和輸出操作VI,它們是:

WriteToSpreadsheetFile.viReadFromSpreadsheetFile.vi

(1)電子表格文件的輸入例5.17

使用WriteToSpreadsheetFile.vi,將用正弦函數(shù)產(chǎn)生的100點(diǎn)正弦波幅值和循環(huán)序號(hào)組成的數(shù)組,存儲(chǔ)到一個(gè)電子表格文件“D:\Wave_Sine.xls”中。

寫(xiě)電子表格文件VI的程序框圖

(2)電子表格文件的輸出例5.18

使用ReadFromSpreadsheetFile.vi讀取例5.17所創(chuàng)建的電子表格文件“D:\Wave_Sine.xls”。

讀電子表格文件VI的前面板和程序框圖

2.文本文件的輸入、輸出文本文件是一種以ASCII形式存儲(chǔ)數(shù)據(jù)的文件格式,它存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)類型為字符串。在LabVIEW8.2中,對(duì)文本文件的存儲(chǔ)是通過(guò)寫(xiě)入文本文件函數(shù)和讀取文本文件函數(shù)來(lái)完成的。

(1)文本文件的輸入例5.19

使用寫(xiě)入文本文件函數(shù)寫(xiě)文本文件。

寫(xiě)文本文件VI的前面板和程序框圖

(2)文本文件的輸出例5.20

使用讀取文本文件函數(shù)讀文本文件。

讀文本文件VI的前面板和程序框圖

3.二進(jìn)制文件的輸入、輸出(1)二進(jìn)制文件的輸入

例5.21

使用寫(xiě)入二進(jìn)制文件函數(shù)寫(xiě)二進(jìn)制文件。

寫(xiě)二進(jìn)制文件VI的程序框圖

(2)二進(jìn)制文件的輸出例5.22

使用讀取二進(jìn)制文件函數(shù)讀二進(jìn)制文件。

讀二進(jìn)制文件VI的前面板和程序框圖

5.5圖形顯示在LabVIEW8.2的圖形顯示功能中,按照處理測(cè)量數(shù)據(jù)的方式和顯示過(guò)程的不同,圖形顯示控件主要分成兩大類:圖形:圖形的VI通常先將數(shù)據(jù)采集到數(shù)組中,再將數(shù)據(jù)繪制到圖形中;圖表:圖表將新的數(shù)據(jù)點(diǎn)追加到已顯示的數(shù)據(jù)點(diǎn)上以形成歷史記錄。

經(jīng)典圖形控件

5.5.1波形圖和圖表例5.26

設(shè)計(jì)一個(gè)VI,顯示一個(gè)正弦波電壓測(cè)量結(jié)果。電壓采樣從0開(kāi)始,每隔2ms采樣一個(gè)點(diǎn),共采樣50個(gè)點(diǎn),要求程序的顯示能夠反映出實(shí)際的采樣時(shí)間及電壓值。

電壓測(cè)量VI的前面板和程序框圖

波形圖舉例例5.27

設(shè)計(jì)一個(gè)程序,進(jìn)行2組數(shù)據(jù)采集,采樣間隔相同,

溫馨提示

  • 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)論