第5章虛擬儀器設(shè)計基礎(chǔ)_第1頁
第5章虛擬儀器設(shè)計基礎(chǔ)_第2頁
第5章虛擬儀器設(shè)計基礎(chǔ)_第3頁
第5章虛擬儀器設(shè)計基礎(chǔ)_第4頁
第5章虛擬儀器設(shè)計基礎(chǔ)_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

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

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

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

For結(jié)構(gòu)條件結(jié)構(gòu)順序結(jié)構(gòu)公式節(jié)點事件結(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ù)后自動退出循環(huán);而While循環(huán)則不用指定循環(huán)的次數(shù),只需要指定循環(huán)退出的條件。

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

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

循環(huán)體;

}包含兩個端口:計數(shù)端口N

重復(fù)端口i

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

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

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

While(條件)do{{

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

}

}While(條件)Whlie循環(huán)結(jié)構(gòu)Whlie循環(huán)包含兩個端口:條件端口和重復(fù)端口i條件端口輸入的是布爾變量,它用于判斷循環(huán)在什么條件下停止執(zhí)行。它有兩種使用狀態(tài):StopifTrue和ContinueifTrue;重復(fù)端口i為當前循環(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)類似于文本編程語言中的switch語句或if...then...else語句。

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

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

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

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

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

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

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

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

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

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

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

5.1.4

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

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

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

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

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

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

過濾事件

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

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

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

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

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

5.1.5

公式節(jié)點

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

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

輸入三角形的三邊長,求三角形面積。

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

5.2.1

字符串

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

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

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

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

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

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

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

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

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

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

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

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

求一個一維數(shù)組和一個二維數(shù)組的長度。

前面板和程序框圖

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

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

前面板和程序框圖

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

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

前面板和程序框圖

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

1.

簇的創(chuàng)建

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

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

簇輸入控件簇顯示控件

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

蔟控制件與蔟指示件

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

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

簇應(yīng)用舉例

例5.13

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

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

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

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

5.3局部變量和全局變量

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

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

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

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

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

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

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

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

第二個VI的前面板和程序框圖

第一個VI測量溫度,送至全局變量中,第二個VI顯示溫度。

第一個VI程序框圖

例5.16

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

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

文本文件

二進制文件

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

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

WriteToSpreadsheetFile.viReadFromSpreadsheetFile.vi

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

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

寫電子表格文件VI的程序框圖

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

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

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

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

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

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

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

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

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

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

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

例5.21

使用寫入二進制文件函數(shù)寫二進制文件。

寫二進制文件VI的程序框圖

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

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

讀二進制文件VI的前面板和程序框圖

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

經(jīng)典圖形控件

5.5.1波形圖和圖表例5.26

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

電壓測量VI的前面板和程序框圖

波形圖舉例例5.27

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

溫馨提示

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

評論

0/150

提交評論