虛擬儀器-第4章-LabVIEW的程序結(jié)構(gòu)課件_第1頁
虛擬儀器-第4章-LabVIEW的程序結(jié)構(gòu)課件_第2頁
虛擬儀器-第4章-LabVIEW的程序結(jié)構(gòu)課件_第3頁
虛擬儀器-第4章-LabVIEW的程序結(jié)構(gòu)課件_第4頁
虛擬儀器-第4章-LabVIEW的程序結(jié)構(gòu)課件_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第4章

LabVIEW的程序結(jié)構(gòu)4.1循環(huán)結(jié)構(gòu)4.2條件結(jié)構(gòu)4.3順序結(jié)構(gòu)4.4事件結(jié)構(gòu)4.5公式節(jié)點4.6LabVIEW中變量的數(shù)值傳遞第4章

LabVIEW的程序結(jié)構(gòu)學(xué)習(xí)目標(biāo)

熟練掌握循環(huán)結(jié)構(gòu)、條件結(jié)構(gòu)、順序結(jié)構(gòu)的使用方法理解移位寄存器和反饋節(jié)點的概念掌握公式節(jié)點與事件結(jié)構(gòu)的用法理解局部變量與全局變量的作用,掌握這二種變量的操作方法第4章

LabVIEW的程序結(jié)構(gòu)

程序結(jié)構(gòu)對任何一種計算機編程語言來說都是十分重要的,它控制整個程序語言的執(zhí)行過程,一個好的程序結(jié)構(gòu),可以大大提高程序的執(zhí)行效率。LabVIEW作為一種圖形化的高級程序開發(fā)語言,執(zhí)行的是數(shù)據(jù)流驅(qū)動機制,在程序結(jié)構(gòu)方面除支持循環(huán)、順序、條件等通用編程語言支持的結(jié)構(gòu)外,還包含一些特殊的程序結(jié)構(gòu),如事件結(jié)構(gòu)、使能結(jié)構(gòu)、公式節(jié)點等等。由于LabVIEW是圖形化編程語言,它的代碼以圖形形式表現(xiàn),因此各種結(jié)構(gòu)的實現(xiàn)也是圖形化的。每種結(jié)構(gòu)都含有一個可調(diào)整大小的清晰邊框,用于包圍根據(jù)結(jié)構(gòu)規(guī)則執(zhí)行的程序框圖部分。

1.For循環(huán)的構(gòu)成For循環(huán)由循環(huán)框架、總數(shù)接線端N和計數(shù)接線端i組成該循環(huán)結(jié)構(gòu)類似于以下C語言:for(i=0;i<N;i++){

循環(huán)體}4.1循環(huán)結(jié)構(gòu)4.1.1For循環(huán)

For循環(huán)中程序?qū)ο蟮膬煞N添加方法

將對象拖曳到已放置的循環(huán)結(jié)構(gòu)內(nèi)將循環(huán)結(jié)構(gòu)包圍在已存在的對象周圍For循環(huán)的執(zhí)行流程:在開始執(zhí)行前,從循環(huán)總數(shù)接線端讀入循環(huán)執(zhí)行次數(shù),然后循環(huán)計數(shù)接線端輸出當(dāng)前已經(jīng)執(zhí)行循環(huán)次數(shù)的數(shù)值,接著執(zhí)行循環(huán)框架中的程序代碼,當(dāng)循環(huán)框架中的程序執(zhí)行完后,如果執(zhí)行循環(huán)次數(shù)未達到設(shè)定次數(shù),則繼續(xù)執(zhí)行,否則退出循環(huán)。

如果循環(huán)總數(shù)接線端子的初始值為0,則For循環(huán)內(nèi)的程序一次都不執(zhí)行。在循環(huán)執(zhí)行過程中,改變循環(huán)總數(shù)接線端的值將不改變循環(huán)執(zhí)行次數(shù),循環(huán)按執(zhí)行前讀入的循環(huán)總數(shù)接線端所確定的次數(shù)執(zhí)行。2.For循環(huán)的執(zhí)行過程利用For循環(huán)繪制正弦波曲線的實例For循環(huán)的執(zhí)行中止方式有兩種:其一是執(zhí)行完成N次循環(huán);其二是添加條件接線端,當(dāng)滿足條件時停止循環(huán)。

添加條件接線端的方法是,在For循環(huán)結(jié)構(gòu)邊框單擊右鍵,從快捷菜單中選擇“條件接線端”。

將停止循環(huán)的布爾數(shù)據(jù)(如布爾控件或比較函數(shù)的輸出值)連至條件接線端,則可以通過條件接線端的輸入中止循環(huán)的執(zhí)行。條件接線端3.For循環(huán)的執(zhí)行中止

For循環(huán)條件接線端的應(yīng)用

并行For循環(huán)可為一個For循環(huán)分配多個線程,利用多個處理器提高For循環(huán)的執(zhí)行速度,特別是對于處理大量計算,能大大提高執(zhí)行效率。

右鍵單擊For循環(huán)外框,在快捷菜單中選擇“配置循環(huán)并行…”,打開For循環(huán)并行迭代對話框,啟用并行循環(huán)。并行For循環(huán)實現(xiàn)數(shù)組求和實例4.并行For循環(huán)

當(dāng)循環(huán)次數(shù)不能確定時,就需要用到While循環(huán)。它相當(dāng)于C語言中的Do循環(huán)。do{

循環(huán)體;

}While(條件)

4.1.2While循環(huán)基本的While循環(huán)由循環(huán)框架、計數(shù)接線端i和條件接線端組成。條件接線端是一個布爾變量,接入布爾值用于控制循環(huán)執(zhí)行。條件接線端有兩種使用狀態(tài)。與For循環(huán)是在執(zhí)行前檢查是否符合條件不同,While循環(huán)是在執(zhí)行后再檢查條件端子,因此,在While循環(huán)的執(zhí)行流程中,循環(huán)框架中的代碼至少執(zhí)行一次。為真時停止為真時繼續(xù)4.1.3循環(huán)結(jié)構(gòu)的循環(huán)隧道與自動索引

循環(huán)結(jié)構(gòu)(包括For循環(huán)和While循環(huán))通過循環(huán)隧道與外部代碼進行數(shù)據(jù)交換,當(dāng)直接把循環(huán)結(jié)構(gòu)內(nèi)的對象和外部對象連接起來時,在連線所經(jīng)過的循環(huán)結(jié)構(gòu)的邊框上出現(xiàn)一個小方格,這就是數(shù)據(jù)隧道。它的作用是確認數(shù)據(jù)在循環(huán)結(jié)構(gòu)內(nèi)外的傳遞。數(shù)據(jù)隧道分為輸入隧道和輸出隧道,輸入隧道用于從外部向內(nèi)部傳遞數(shù)據(jù),輸出隧道用于從內(nèi)部向外部傳遞數(shù)據(jù)。隧道的數(shù)據(jù)類型和輸入的數(shù)據(jù)類型相同,顏色也和輸入數(shù)據(jù)類型的顏色相同。1.循環(huán)隧道循環(huán)結(jié)構(gòu)的所有輸入數(shù)據(jù)都是在進入循環(huán)之前被讀取的,循環(huán)開始后便不再讀取輸入數(shù)據(jù);而輸出數(shù)據(jù)只有在循環(huán)執(zhí)行完畢才輸出,循環(huán)過程中不輸出數(shù)據(jù)。For循環(huán)和While循環(huán)的數(shù)據(jù)隧道還有自動索引功能。當(dāng)把一個數(shù)組連接到循環(huán)結(jié)構(gòu)的邊框上生成隧道后,可以選擇是否打開自動索引功能。如果自動索引功能被打開,則自動索引將自動計算數(shù)組的長度并根據(jù)數(shù)組長度決定循環(huán)次數(shù),數(shù)組將在每次循環(huán)中按順序取出一個值,該值在原數(shù)組中的索引與當(dāng)次循環(huán)的重復(fù)端子值相同,就是說數(shù)組在循環(huán)內(nèi)部將會降低一維,比如二維數(shù)組變?yōu)橐痪S數(shù)組,一維數(shù)組變?yōu)闃?biāo)量元素等。

2.隧道模式與自動索引(1)輸入隧道。如果輸入隧道的索引功能被啟用,則索引功能將自動計算數(shù)組的長度并根據(jù)數(shù)組長度決定循環(huán)次數(shù),數(shù)組將在每次循環(huán)中按順序取出一個值。數(shù)組長度為4,循環(huán)進行4次數(shù)組長度為4,循環(huán)總數(shù)為3,循環(huán)進行3次輸入二維數(shù)組,則For循環(huán)的循環(huán)次數(shù)由數(shù)組的行數(shù)與N值共同決定,而每次循環(huán)時將以“行”為單位將數(shù)據(jù)順序輸入循環(huán)框架進行運算。多個數(shù)組同時按照啟用索引方式輸入時,循環(huán)的次數(shù)以元素最少的數(shù)組為準(zhǔn)當(dāng)循環(huán)結(jié)構(gòu)輸入隧道禁用索引功能后,循環(huán)執(zhí)行次數(shù)由循環(huán)總數(shù)端子接入數(shù)據(jù)決定。在每次循環(huán)時,數(shù)組整體傳入循環(huán)框架進行運算。(2)輸出隧道。配置循環(huán)輸出隧道,以返回數(shù)組的索引值、最終值或連接值。右鍵單擊循環(huán)的輸出隧道,從快捷菜單中選擇“隧道模式”?“最終值”、“索引”或“連接”。索引:每循環(huán)一次,輸出數(shù)組中就增加一個元素。因此,自動索引的輸出數(shù)組的大小等于循環(huán)的次數(shù)。最終值:輸出隧道只返回最后一次循環(huán)的元素值。連接:LabVIEW按順序連接所有輸入,形成與連接的輸入數(shù)組相同維度的輸出數(shù)組。連接隧道模式下,連接數(shù)組的方式和創(chuàng)建數(shù)組函數(shù)的方式相同。循環(huán)對數(shù)組的索引作用在輸入隧道與輸出隧道的表現(xiàn)是不同的,一維數(shù)組進入循環(huán)時,隧道提取其中的標(biāo)量值;二維數(shù)組進入循環(huán)時,隧道提取其中的一維數(shù)組。輸出隧道的情況正好相反,標(biāo)量元素在輸出隧道上按順序累積形成一維數(shù)組,一維數(shù)組累積形成二維數(shù)組,以此類推。For循環(huán)禁用自動索引輸入和輸出的示例For循環(huán)輸入和輸出隧道分別啟用和禁用自動索引的示例For循環(huán)和While循環(huán)都支持自動索引功能,但其主要區(qū)別在于:For循環(huán)的數(shù)組默認為能自動索引,如不需要索引,可在數(shù)組進入循環(huán)的通道上單擊鼠標(biāo)右鍵彈出快捷菜單選擇“禁用索引”選項;而While循環(huán)中的數(shù)組默認為不能自動索引,如果需要索引,可在循環(huán)的通道上單擊鼠標(biāo)右鍵彈出快捷菜單選擇“啟用索引”選項。4.1.4移位寄存器和反饋節(jié)點

為了實現(xiàn)將前幾次循環(huán)完成時的某個數(shù)據(jù)傳遞到下一次循環(huán)的開始,

LabVIEW在循環(huán)結(jié)構(gòu)中引入了移位寄存器。移位寄存器的功能是將i-1、i-2、i-3…次循環(huán)的計算結(jié)果保存在循環(huán)的緩沖區(qū)中,并在第i次循環(huán)時將這些數(shù)據(jù)從循環(huán)框架左側(cè)的移位寄存器中送出,供循環(huán)框架內(nèi)的節(jié)點使用。

在循環(huán)結(jié)構(gòu)中創(chuàng)建移位寄存器的方法是在循環(huán)框圖的邊框上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“添加移位寄存器”命令,便可以為循環(huán)結(jié)構(gòu)創(chuàng)建一個移位寄存器。1.移位寄存器

移位寄存器聽執(zhí)行過程如下:當(dāng)每次循環(huán)結(jié)束時,移位寄存器的右端子保存?zhèn)魅肫渲械臄?shù)據(jù),并在下一次循環(huán)開始前傳給左端子,這樣就可以從左端子得到前一次循環(huán)結(jié)束的輸出值,該值可以用于進行下一次的循環(huán)。

要為移位寄存器的左端子指定初始值,其初始化值將在循環(huán)開始前讀入一次,循環(huán)執(zhí)行后就不再讀取該初始值。移位寄存器的值通過右端子輸出到循環(huán)結(jié)構(gòu)外,輸出的值是移位寄存器右端子的最終值。一個移位寄存器可以有多個左端子,但只能有一個右端子。右擊移位寄存器,在彈出的快捷菜單中選擇“添加元素”命令,就可以添加一個元素;用鼠標(biāo)將左端子向下拖動,好可以添加多個元素。

移位寄存器的左端子元素分別對應(yīng)前幾次循環(huán)的輸出數(shù)據(jù),其能保存的數(shù)目與左端子數(shù)目相同。第i次循環(huán)結(jié)束時,其數(shù)據(jù)便進入最上面的左端子;而第i-1次循環(huán)的數(shù)據(jù)被擠到第2個端子上;第i-2次循環(huán)的數(shù)據(jù)被擠到第3個端子上;依次類推,最后一個端子上原來的數(shù)據(jù)被拋棄。

用移位寄存器求和實例

一個For循環(huán)或While循環(huán)可以建立多個移位寄存器

反饋節(jié)點位于“函數(shù)”?“結(jié)構(gòu)”子選板上,其功能和只有一個左端子的移位寄存器完全相同,它同樣用于將數(shù)據(jù)從一次循環(huán)傳遞到下一次循環(huán),但和移位寄存器相比,反饋節(jié)點是一種在兩次循環(huán)之間傳遞數(shù)據(jù)更簡潔的表示形式。2.反饋節(jié)點反饋節(jié)點由兩部分組成,分別為反饋節(jié)點和初始化接線端。反饋節(jié)點的箭頭表示連線上的數(shù)據(jù)流動方向,可以通過右鍵的快捷菜單中選擇“修改方向”項來改變。初始化端子既可位于循環(huán)框圖內(nèi),也可位于循環(huán)框圖外,默認為位于循環(huán)框圖內(nèi)。若要把初始化接線端移動到循利框圖外,可在初始化端子上單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇“將初始化器移出一個循環(huán)”項來完成操作。

移位寄存器和反饋節(jié)點可以互相轉(zhuǎn)換,在移位寄存器的右鍵快捷菜單中選擇“替換為反饋節(jié)點”項,即可將移位寄存器轉(zhuǎn)換為反饋節(jié)點。反之,移位寄存器也同樣可替換為反饋節(jié)點。

移位寄存器和反饋節(jié)點求和示例用While循環(huán)求和示例用For循環(huán)和While循環(huán)分別實現(xiàn)100以內(nèi)的奇數(shù)之和,即1+3+5+…99?!緦嵱?xùn)練習(xí)】4.2條件結(jié)構(gòu)條件結(jié)構(gòu)位于“函數(shù)”?“結(jié)構(gòu)”子選板中相當(dāng)于C語言中的switch語句:switch(表達式){case常量表達式1:語句1;

case常量表達式2:語句2;

case常量表達式n:語句n;

default:語句n+1;}

條件結(jié)構(gòu)是用來控制在不同條件下執(zhí)行不同程序塊的功能,基本條件結(jié)構(gòu)由條件結(jié)構(gòu)分支程序子框架、分支選擇器端子、選擇器標(biāo)簽及減量增量按鈕組成。

分支選擇器端子相當(dāng)于C語言switch語句中的“表達式”

每個分支的標(biāo)簽相當(dāng)于“常量表達式i”

分支選擇器的值可以是布爾型、字符串型、整型或者枚舉類型,其顏色會隨連接的數(shù)據(jù)類型而改變,同時根據(jù)分支選擇接入的數(shù)據(jù)類型不同,選擇器標(biāo)簽的設(shè)置也有差異,其默認數(shù)據(jù)類型為布爾型,同時自動生成兩個選擇器標(biāo)簽分別為“真”和“假”的子框架。分支程序子框架用來放置不同分支對應(yīng)的程序

LabVIEW中的條件結(jié)構(gòu),必須指定一種默認情況或者列出所有可能的情況。設(shè)置默認分支的方法是,在該分支程序的標(biāo)簽上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“本分支設(shè)置為默認分支”即可。

條件結(jié)構(gòu)內(nèi)部與外部之間的數(shù)據(jù)也是通過隧道來交換傳遞的。

向條件結(jié)構(gòu)邊框內(nèi)輸入數(shù)據(jù)時,各個子程序框圖連接或不連接這個數(shù)據(jù)的隧道都可以。從條件結(jié)構(gòu)邊框向外輸出數(shù)據(jù)時,各個子程序框圖都必須為這個隧道連接數(shù)據(jù),否則隧道圖標(biāo)是空的,程序也不能運行。

如果允許沒有連線的子程序框圖輸出默認值,可以在數(shù)據(jù)隧道上右擊,在彈出的快捷菜單中選擇“未連線時使用默認”命令,在這種情況下,程序執(zhí)行到?jīng)]有為輸出隧道連線的子程序框圖時,就輸出相應(yīng)數(shù)據(jù)類型的默認值。數(shù)據(jù)隧道

用條件結(jié)構(gòu)來實現(xiàn)兩個數(shù)的加、減、乘、除四則運算,要求用組合框作為條件結(jié)構(gòu)的選擇器?!緦嵱?xùn)練習(xí)】4.3順序結(jié)構(gòu)

LabVIEW作為一種圖形化的編程語言,有其獨特的程序執(zhí)行順序——數(shù)據(jù)流執(zhí)行方式,數(shù)據(jù)流經(jīng)節(jié)點的動作決定了程序框圖上VI和函數(shù)的執(zhí)行順序。但在實際中希望節(jié)點按一定的次序執(zhí)行,這就需要引入順序結(jié)構(gòu)執(zhí)行。LabVIEW順序結(jié)構(gòu)的功能是強制程序按一定的順序執(zhí)行。

LabVIEW提供了兩種順序結(jié)構(gòu):平鋪式順序結(jié)構(gòu)和層疊式順序結(jié)構(gòu),這兩種結(jié)構(gòu)的功能是相同的,只是外觀和用法略有差別。

平鋪式順序結(jié)構(gòu)位于“函數(shù)”?“編程”?“結(jié)構(gòu)”子選板中。順序結(jié)構(gòu)包含一個或多個按順序執(zhí)行的子程序框圖或幀。1.平鋪式順序結(jié)構(gòu)新建的平鋪式順序結(jié)構(gòu)只有一幀,為單框順序結(jié)構(gòu),它只執(zhí)行一步操作,可以通過右鍵快捷菜單添加或者刪除幀。通過拖動幀四周的方向箭頭可以改變其大小。平鋪式順序結(jié)構(gòu)將所有的幀按照0,1,2…的順序自左至右平鋪,并按從左至右的順序執(zhí)行,能夠確保子程序框圖按一定順序執(zhí)行。平鋪式順序結(jié)構(gòu)的數(shù)據(jù)流不同于其他結(jié)構(gòu)的數(shù)據(jù)流,當(dāng)所有連線至幀的數(shù)據(jù)都可用時,平鋪式順序結(jié)構(gòu)的幀按從左至右的順序執(zhí)行。每幀執(zhí)行完畢后會將數(shù)據(jù)通過連線直接穿過幀壁(隧道)傳遞至下一幀,即幀的輸入可能取決于另一幀的輸出。平鋪式順序結(jié)構(gòu)數(shù)據(jù)通道2.層疊式順序結(jié)構(gòu)

層疊式順序結(jié)構(gòu)在選板上不可用。如果要創(chuàng)建層疊式順序結(jié)構(gòu),先在程序框圖上創(chuàng)建平鋪式順序結(jié)構(gòu),然后右鍵單擊該結(jié)構(gòu)并選擇“替換為層疊式順序”。當(dāng)層疊式順序結(jié)構(gòu)的幀超過2個時,所有幀的程序框圖會堆疊在一起,將由順序框架、選擇器標(biāo)簽、和遞增/遞減按鈕組成。在層疊式順序結(jié)構(gòu)上右鍵單擊結(jié)構(gòu)邊框,可選擇“在后面添加幀”、“在前面添加幀”、“復(fù)制幀”及“刪除本幀”來在當(dāng)前幀上添加或刪除幀。

當(dāng)程序運行時,順序結(jié)構(gòu)會按照選擇器材標(biāo)簽0,1,2…的順序逐步執(zhí)行各個框圖中的程序。

層疊式順序結(jié)構(gòu)的幀間數(shù)據(jù)傳遞需要通過局部變量的機制來實現(xiàn)。(1)添加局部變量。在層疊式順序結(jié)構(gòu)的邊框上單擊右鍵彈出快捷菜單,選擇“添加順序局部變量”選項,在順序結(jié)構(gòu)邊框上出現(xiàn)一個小方塊(所有幀程序框的同一位置都有),表示添加了一個局部變量,顏色由傳輸數(shù)據(jù)類型決定。添加的局部變量只可以在當(dāng)前幀后面的各個幀中作為輸入數(shù)據(jù)使用。用數(shù)據(jù)線連接局部變量后,局部變量小方塊中的箭頭表明了數(shù)據(jù)的流動方向。(2)刪除局部變量。在局部變量的小方塊上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“刪除”命令,即可刪除選中的局部變量。3.順序結(jié)構(gòu)之間的轉(zhuǎn)換

層疊式順序結(jié)構(gòu)與平鋪式順序結(jié)構(gòu)可以通過右鍵快捷菜單中的“替換為平鋪式/層疊式順序”選項可以相互轉(zhuǎn)換。4.順序結(jié)構(gòu)內(nèi)部與外部的數(shù)據(jù)交換

順序結(jié)構(gòu)外部與內(nèi)部之間的數(shù)據(jù)傳遞是通過建立隧道來實現(xiàn)的。隧道有輸入隧道和輸出隧道。在順序執(zhí)行前,輸入隧道上得到輸入值,在執(zhí)行過程中,此值保持不變,且每幀都能讀取此值。輸出隧道上的值只能在整個順序結(jié)構(gòu)執(zhí)行完后才會輸出。

將隨機產(chǎn)生的數(shù)值與給定的數(shù)值比較,計算達到兩數(shù)相等時所需時間?!緦嵱?xùn)練習(xí)】4.4事件結(jié)構(gòu)

所謂事件,是指對活動發(fā)生的異步通知。事件可以來自于用戶界面、外部I/O或其他方式。用戶界面事件包括鼠標(biāo)點擊(單擊、雙擊)、鍵盤按鍵、窗口(關(guān)閉、縮小窗口)等動作;外部I/O事件則指諸如數(shù)據(jù)采集完畢或發(fā)生錯誤時硬件觸發(fā)器或定時器發(fā)出信號;其他方式的事件可通過編程生成并與程序的不同部分進行通信。LabVIEW支持用戶界面事件和通過編程生成的事件,但不支持外部I/O事件。

LabVIEW中的事件結(jié)構(gòu)也是一種能改變數(shù)據(jù)流執(zhí)行方式的一種結(jié)構(gòu),使用事件結(jié)構(gòu)可以實現(xiàn)用戶在前面板的操作(事件)與程序執(zhí)行的互動。事件結(jié)構(gòu)位于“函數(shù)”?“編程”?“結(jié)構(gòu)”子選板4.4.1事件結(jié)構(gòu)的構(gòu)成

事件結(jié)構(gòu)由框架、超時端子、事件數(shù)據(jù)節(jié)點、遞增/減按鈕、選擇器標(biāo)簽組成。事件結(jié)構(gòu)可以由多層框架組成,每次只能運行一個框圖,但可以同時響應(yīng)幾個事件。

超時端子用來設(shè)定超時時間,其接入數(shù)據(jù)是以毫秒為單位的整數(shù)值。在等待其他類型事件發(fā)生的時間超過設(shè)定的超時時間后,將自動觸發(fā)超時事件。如果超時端子接入值為-1,則事件結(jié)構(gòu)處于永遠等待狀態(tài),直到指定的事件發(fā)生為止。事件數(shù)據(jù)節(jié)點用于輸出事件的參數(shù),端口數(shù)目和數(shù)據(jù)類型根據(jù)事件的不同而不同。數(shù)據(jù)端子的增減可以通過拖拉事件數(shù)據(jù)節(jié)點來進行,也可以通過快捷菜單進行。

在事件選擇器標(biāo)簽上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中可以做“刪除事件結(jié)構(gòu)”、“編輯本分支所處理的事件”、“添加事件分支”、“刪除本事件分支”等操作。事件結(jié)構(gòu)的處理事件結(jié)構(gòu)同樣支持隧道。4.4.2事件結(jié)構(gòu)的設(shè)置“事件分支”列出所有事件分支的序號和名稱“事件說明符”列出“事件分支”中當(dāng)前事件配置的所有事件的名稱事件源—列出事件源(例如,應(yīng)用程序、VI、動態(tài)事件或控件)事件—列出當(dāng)前分支處理的所有事件的名稱添加事件—在當(dāng)前結(jié)構(gòu)中添加新的事件。刪除—在事件說明符列表中刪除選定的事件“事件源”列出按類排列的事件源,對其進行配置以生成事件“事件”列出對話框的事件源和事件欄中選定事件源的可用事件。通知事件用綠色符號表示,過濾事件用紅色符號表示。本頁為“事件分支[0]超時”指定了一個事件,事件源是“應(yīng)用程序”,事件名稱是“超時”,即由應(yīng)用程序本身產(chǎn)生的超時事件。4.4.3通知事件和過濾事件1.通知事件

通知事件用于通知程序代碼某個用戶界面事件發(fā)生了,并且LabVIEW已經(jīng)進行了最基本的處理。例如修改一個數(shù)值控件的數(shù)值時,LabVIEW會先進行默認的處理,即把新數(shù)值顯示在數(shù)值控件中。此后,如果已經(jīng)為這個控件注冊了“值改變”事件,該事件的代碼將得到執(zhí)行。2.過濾事件過濾器事件用于告訴程序代碼某個事件發(fā)生了,LabVIEW還未對其進行任何處理,從而便于用戶就程序如何與用戶界面的交互作出自己相應(yīng)的定制。使用過濾事件參與事件處理可能會覆蓋事件的默認行為。在過濾事件的事件結(jié)構(gòu)分支中,可在LabVIEW結(jié)束處理該事件之前驗證或改變事件數(shù)據(jù),或完全放棄該事件以防止數(shù)據(jù)的改變影響到VI。處理過濾事件的事件結(jié)構(gòu)分支有一個事件過濾節(jié)點,可將新的數(shù)據(jù)值連接至這些接線端以改變事件數(shù)據(jù)。如果不對某一數(shù)據(jù)項連線,那么該數(shù)據(jù)項將保持不變??蓪⒄嬷颠B接至“放棄?”接線端已完全放棄某個事件。事件結(jié)構(gòu)分為靜態(tài)和動態(tài)兩種。如果只需對前面板對象進行操作判斷,使用靜態(tài)事件結(jié)構(gòu)就完全可以實現(xiàn);如果需要實時改變注冊內(nèi)容或?qū)⒊绦蛑械臄?shù)據(jù)作為事件的發(fā)生條件等特殊情況時就要用到動態(tài)事件結(jié)構(gòu)。動態(tài)事件結(jié)構(gòu)的創(chuàng)建就需要使用注冊事件節(jié)點注冊事件,再將結(jié)果輸出到事件結(jié)構(gòu)動態(tài)事件注冊端子上。若要創(chuàng)建一個事件動態(tài)注冊端子,可以在事件結(jié)構(gòu)框圖上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“顯示動態(tài)事件接線端”選項即可。注冊事件節(jié)點位于“函數(shù)”?“編程”?“對話框與用戶界面”?“事件”子選板內(nèi)。

直接在事件動態(tài)注冊端子上單擊鼠標(biāo)右鍵從彈出的快捷菜單中選擇“事件選板”,則彈出注冊事件界面。4.4.4事件結(jié)構(gòu)的應(yīng)用舉例在前面板放置兩個確認按鈕,分別取名為“按鈕1”和“按鈕2”,再放置一個停止按鈕,然后放置兩個數(shù)值顯示控件,取名為“計數(shù)器1”和“計數(shù)器2”,能實現(xiàn)以下功能:(1)鼠標(biāo)單擊按鈕1時,計數(shù)器1中的值增加1;(2)鼠標(biāo)單擊按鈕1或按鈕2時,計數(shù)器2中的值均增加1;(3)鼠標(biāo)單擊單擊停止按鈕時,程序自動退出運行。停止按鈕鼠標(biāo)按下過濾事件

停止鼠標(biāo)按下通知事件利用事件結(jié)構(gòu)實現(xiàn)的單擊計數(shù)器利用事件結(jié)構(gòu)實現(xiàn)數(shù)字的自動累加,即在數(shù)值輸入控件中,每當(dāng)用戶輸入一個數(shù)字后,累加值就及時發(fā)生變化。例如,依次輸入1、2時,累加值為3,再按下5時,累加值為8。【實訓(xùn)練習(xí)】4.5公式節(jié)點

公式節(jié)點也是一種程序結(jié)構(gòu),是便于在程序框圖上執(zhí)行數(shù)學(xué)運算的文本節(jié)點。適用于含有多個變量或較為復(fù)雜的方程。

公式節(jié)點可以使用算術(shù)表達式來實現(xiàn)算法過程,C語言的If語句、While循環(huán)和For循環(huán)等都可以在公式節(jié)點中使用。公式節(jié)點也適用于已有文本代碼,通過復(fù)制、粘貼的方式將已有的文本代碼移植到公式節(jié)點中。1.公式節(jié)點的建立

公式節(jié)點位于“函數(shù)”?“編程”?“結(jié)構(gòu)”子選板

及“函數(shù)”?“數(shù)學(xué)”?“腳本與公式”子選板通過邊框上右鍵快捷菜單添加輸入、輸出變量。

輸入變量和輸出變量可以互相轉(zhuǎn)換,也可刪除變量,方法是在變量上單擊鼠標(biāo)右鍵的快捷菜單中選擇。

每個賦值中賦值運算符(=)的左側(cè)僅可有一個變量。每個賦值必須以分號(;)結(jié)束。注釋內(nèi)容可通過/*…*/封閉起來。

LabVIEW公式節(jié)點主要有以下幾種語句:變量聲明語句、賦值語句、條件語句、循環(huán)語句、Switch語句、控制語句。2.公式節(jié)點的語法3.應(yīng)用舉例完成y1=2x2+3x+1,y2=a*x+b的運算,其中,x的取值為0~20的整數(shù)值

使用公式節(jié)點實現(xiàn)y=cos(x),并將輸出用圖形顯示?!緦嵱?xùn)練習(xí)】4.6LabVIEW中變量的數(shù)值傳遞

在LabVIEW中,為了實現(xiàn)應(yīng)用程序中無法連線位置間的信息傳遞,引入了局部變量和全局變量。局部變量實現(xiàn)了數(shù)據(jù)在同一VI程序中的復(fù)用,而全局變量實現(xiàn)了數(shù)據(jù)在不同VI程序中的共享。4.6.1局部變量

通過局部變量可對前面板上的輸入控件或顯示控件進行數(shù)據(jù)讀寫,寫入一個局部變量相當(dāng)于將數(shù)據(jù)傳遞給其他接線端。局部變量只出現(xiàn)在程序框圖上。

(1)鼠標(biāo)右鍵單擊一個前面板中已有的對象,從彈出的快捷菜單中選擇“創(chuàng)建”選項下的“局部變量”選項,便可創(chuàng)建為該對象一個局部變量。1.局部變量的創(chuàng)建程序框圖上創(chuàng)建前面板上創(chuàng)建(2)從“結(jié)構(gòu)”子選板中選擇“局部變量”并將其拖放到程序框圖上。此時局部變量尚未與一個輸入控件或顯示控件相關(guān)聯(lián)。如使局部變量與輸入控件或顯示控件關(guān)聯(lián),利用鼠標(biāo)“操作值”工具直接點擊圖標(biāo),將彈出所有自帶標(biāo)簽的前面板對象,選中某對象即可,也可在要關(guān)聯(lián)的控件上單擊右鍵,從快捷菜單中選擇“選擇項”,展開的快捷菜單同樣列出了所有自帶標(biāo)簽的前面板對象,選中某對象即建立了局部對象與控件的關(guān)聯(lián)。

創(chuàng)建了一個局部變量后,就可從變量讀寫數(shù)據(jù)了。默認狀態(tài)下,新變量將接收數(shù)據(jù),變量就像一個顯示控件,是一個寫入局部變量。將新數(shù)據(jù)寫入該局部變量,與之相關(guān)聯(lián)的前面板輸入控件或顯示控件將由于新數(shù)據(jù)的寫入而更新。

變量可配置為數(shù)據(jù)源,即讀取局部變量。右鍵單擊變量,從快捷菜單中選擇“轉(zhuǎn)換為讀取”,便可將該變量配置為一個輸入控件。節(jié)點執(zhí)行時,VI將讀取相關(guān)前面板輸入控件或顯示控件中的數(shù)據(jù)。

如需使變量從程序框圖接收數(shù)據(jù)而不是提供數(shù)據(jù),可右鍵單擊該變量并從快捷菜單中選擇“轉(zhuǎn)換為寫入”。

在程序框圖上,讀取局部變量與寫入局部變量的區(qū)別相當(dāng)于輸入控件和顯示控件的區(qū)別。與輸入控件類似,讀取局部變量的邊框較粗;寫入局部變量的邊框較細,類似于顯示控件。2.局部變量的讀/寫3.局部變量應(yīng)用舉例利用局部變量實現(xiàn)一個布爾開關(guān)同時控制兩個While循環(huán)。4.6.2全局變量

局部變量主要用于在程序內(nèi)部傳遞數(shù)據(jù),不能實現(xiàn)程序之間進行數(shù)據(jù)傳遞。而全局變量可以同時在運行的多個VI或子VI之間訪問和傳遞數(shù)據(jù)。創(chuàng)建全局變量時,LabVIEW將自動創(chuàng)建一個有前面板但無程序框圖的特殊全局VI。向該全局VI的前面板添加控件可定義其中所含全局變量的數(shù)據(jù)類型及變量數(shù)目。該前面板實際便成為一個可供多個VI進行數(shù)據(jù)訪問的容器。1.創(chuàng)建全局變量方法一:在“結(jié)構(gòu)”子選板中選擇“全局變量

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論