虛擬儀器-第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ù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第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é)點(diǎn)4.6LabVIEW中變量的數(shù)值傳遞第4章

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

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

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

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

1.For循環(huán)的構(gòu)成For循環(huán)由循環(huán)框架、總數(shù)接線端N和計(jì)數(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添加方法

將對(duì)象拖曳到已放置的循環(huán)結(jié)構(gòu)內(nèi)將循環(huán)結(jié)構(gòu)包圍在已存在的對(duì)象周圍For循環(huán)的執(zhí)行流程:在開始執(zhí)行前,從循環(huán)總數(shù)接線端讀入循環(huán)執(zhí)行次數(shù),然后循環(huán)計(jì)數(shù)接線端輸出當(dāng)前已經(jīng)執(zhí)行循環(huán)次數(shù)的數(shù)值,接著執(zhí)行循環(huán)框架中的程序代碼,當(dāng)循環(huán)框架中的程序執(zhí)行完后,如果執(zhí)行循環(huán)次數(shù)未達(dá)到設(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)繪制正弦波曲線的實(shí)例For循環(huán)的執(zhí)行中止方式有兩種:其一是執(zhí)行完成N次循環(huán);其二是添加條件接線端,當(dāng)滿足條件時(shí)停止循環(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)可為一個(gè)For循環(huán)分配多個(gè)線程,利用多個(gè)處理器提高For循環(huán)的執(zhí)行速度,特別是對(duì)于處理大量計(jì)算,能大大提高執(zhí)行效率。

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

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

循環(huán)體;

}While(條件)

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

循環(huán)結(jié)構(gòu)(包括For循環(huán)和While循環(huán))通過循環(huán)隧道與外部代碼進(jìn)行數(shù)據(jù)交換,當(dāng)直接把循環(huán)結(jié)構(gòu)內(nèi)的對(duì)象和外部對(duì)象連接起來時(shí),在連線所經(jīng)過的循環(huán)結(jié)構(gòu)的邊框上出現(xiàn)一個(gè)小方格,這就是數(shù)據(jù)隧道。它的作用是確認(rèn)數(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ù)都是在進(jìn)入循環(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)索引功能。當(dāng)把一個(gè)數(shù)組連接到循環(huán)結(jié)構(gòu)的邊框上生成隧道后,可以選擇是否打開自動(dòng)索引功能。如果自動(dòng)索引功能被打開,則自動(dòng)索引將自動(dòng)計(jì)算數(shù)組的長(zhǎng)度并根據(jù)數(shù)組長(zhǎng)度決定循環(huán)次數(shù),數(shù)組將在每次循環(huán)中按順序取出一個(gè)值,該值在原數(shù)組中的索引與當(dāng)次循環(huán)的重復(fù)端子值相同,就是說數(shù)組在循環(huán)內(nèi)部將會(huì)降低一維,比如二維數(shù)組變?yōu)橐痪S數(shù)組,一維數(shù)組變?yōu)闃?biāo)量元素等。

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

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

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

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

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

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

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

用移位寄存器求和實(shí)例

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

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

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

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

case常量表達(dá)式2:語句2;

case常量表達(dá)式n:語句n;

default:語句n+1;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論