虛擬儀器應(yīng)用-項(xiàng)目3_第1頁(yè)
虛擬儀器應(yīng)用-項(xiàng)目3_第2頁(yè)
虛擬儀器應(yīng)用-項(xiàng)目3_第3頁(yè)
虛擬儀器應(yīng)用-項(xiàng)目3_第4頁(yè)
虛擬儀器應(yīng)用-項(xiàng)目3_第5頁(yè)
已閱讀5頁(yè),還剩65頁(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)介

項(xiàng)目3

應(yīng)用結(jié)構(gòu)設(shè)計(jì)程序目錄3.1任務(wù)1應(yīng)用For循環(huán)編寫(xiě)VI3.2任務(wù)2應(yīng)用While循環(huán)設(shè)計(jì)VI3.3應(yīng)用條件結(jié)構(gòu)設(shè)計(jì)VI3.4應(yīng)用順序結(jié)構(gòu)設(shè)計(jì)VI3.5應(yīng)用事件結(jié)構(gòu)設(shè)計(jì)VI

3.1任務(wù)1應(yīng)用For循環(huán)編寫(xiě)VI

LabVIEW中除了擁有C語(yǔ)言中所有的程序結(jié)構(gòu)外,還有一些特殊的程序結(jié)構(gòu),如事件結(jié)構(gòu)、公式節(jié)點(diǎn)等,通過(guò)這些可以方便快捷地實(shí)現(xiàn)任何復(fù)雜的程序結(jié)構(gòu)。

同其它的文本語(yǔ)言一樣,LabVIEW中也有各種結(jié)構(gòu)。LabVIEW中的結(jié)構(gòu)主要有While循環(huán)、For循環(huán)、順序結(jié)構(gòu)、條件結(jié)構(gòu)、事件結(jié)構(gòu)等。選擇函數(shù)選板→編程→結(jié)構(gòu),打開(kāi)結(jié)構(gòu)子選板。3.1任務(wù)1應(yīng)用For循環(huán)編寫(xiě)VILabVIEW中的結(jié)構(gòu)放置在程序框圖中,其外形一般是一個(gè)大小可以縮放的邊框,當(dāng)它與其他節(jié)點(diǎn)的連線有數(shù)據(jù)傳遞時(shí),邊框內(nèi)的一段代碼將反復(fù)執(zhí)行或有條件執(zhí)行或按某一定的順序執(zhí)行。結(jié)構(gòu)內(nèi)的該段代碼則被稱為子框圖。LabVIEW中的循環(huán)與結(jié)構(gòu)位于程序框圖的“函數(shù)”選板下的“結(jié)構(gòu)”子選板中。3.1任務(wù)1應(yīng)用For循環(huán)編寫(xiě)VI“結(jié)構(gòu)”子選板界面3.1任務(wù)1應(yīng)用For循環(huán)編寫(xiě)VI1.For循環(huán)結(jié)構(gòu)

在結(jié)構(gòu)子選板中找到For循環(huán),鼠標(biāo)左鍵單擊,移動(dòng)鼠標(biāo)到程序框圖上,找到合適位置,按下鼠標(biāo)左鍵,定位框體的左上角,然后移動(dòng)鼠標(biāo)??梢钥吹诫S鼠標(biāo)移動(dòng)而變化的矩形虛線框。釋放鼠標(biāo)左鍵,就出現(xiàn)一個(gè)For循環(huán)結(jié)構(gòu)。3.1任務(wù)1應(yīng)用For循環(huán)編寫(xiě)VI3.1.1設(shè)計(jì)循環(huán)計(jì)數(shù)器

要求:應(yīng)用For循環(huán),設(shè)計(jì)循環(huán)計(jì)數(shù)器。設(shè)置“循環(huán)總數(shù)”為5,觀察“循環(huán)計(jì)數(shù)”的輸出,并記錄循環(huán)次數(shù)。

循環(huán)總數(shù):輸入要循環(huán)的次數(shù)。循環(huán)次數(shù)為正整數(shù),因此N為藍(lán)色。在默認(rèn)的情況下確立了For循環(huán)執(zhí)行的次數(shù),一旦開(kāi)始執(zhí)行后,只有達(dá)到輸入的循環(huán)次數(shù)才能終止其運(yùn)行。也可以給N輸入0值,此時(shí)不會(huì)執(zhí)行該循環(huán)中的內(nèi)容。循環(huán)計(jì)數(shù):表示它是一個(gè)循環(huán)計(jì)數(shù)器i。計(jì)數(shù)由0開(kāi)始計(jì)數(shù),第一次循環(huán)結(jié)束,i計(jì)數(shù)為0,之后依次加1,一直記到i=N-1。3.1任務(wù)1應(yīng)用For循環(huán)編寫(xiě)VI步驟:1)新建一個(gè)VI。2)在“計(jì)數(shù)接線端”的右側(cè)端點(diǎn)上點(diǎn)擊鼠標(biāo)右鍵,創(chuàng)建顯示控件,并把該控件命名為“循環(huán)計(jì)數(shù)”,用來(lái)顯示i的數(shù)值。3)構(gòu)造反饋結(jié)構(gòu),實(shí)現(xiàn)每執(zhí)行一次循環(huán)體內(nèi)部程序,計(jì)數(shù)的數(shù)值加1,用來(lái)觀察循環(huán)次數(shù);并顯示“循環(huán)次數(shù)”。4在循環(huán)體內(nèi)放置一個(gè)“等待”節(jié)點(diǎn),使得For循環(huán)每運(yùn)行一次等待1秒。5)保存VI,切換到前面板,然后運(yùn)行VI,觀察兩個(gè)數(shù)值控件數(shù)據(jù)變化情況:可以看到顯示控件的數(shù)據(jù)每秒加1;“循環(huán)計(jì)數(shù)”從0遞增到4、“循環(huán)次數(shù)”從1增加到5。3.1任務(wù)1應(yīng)用For循環(huán)編寫(xiě)VI從運(yùn)行結(jié)果可以看出,F(xiàn)or循環(huán)的循環(huán)次數(shù)由循環(huán)總數(shù)N決定;循環(huán)計(jì)數(shù)器從0開(kāi)始計(jì)數(shù),計(jì)到N-1For循環(huán)停止。3.1任務(wù)1應(yīng)用For循環(huán)編寫(xiě)VI1.For循環(huán)中的自動(dòng)索引

自動(dòng)索引的功能是使循環(huán)框外面的數(shù)組成員逐個(gè)進(jìn)入循環(huán)框內(nèi),或使循環(huán)框內(nèi)的數(shù)據(jù)累加成一個(gè)數(shù)組輸出到循環(huán)框外面。

For循環(huán)的索引可通過(guò)鼠標(biāo)右鍵單擊循環(huán)邊框的數(shù)據(jù)通道來(lái)啟動(dòng)和關(guān)閉,F(xiàn)or循環(huán)默認(rèn)開(kāi)啟自動(dòng)索引功能。3.1.2利用For循環(huán)創(chuàng)建二維數(shù)組3.1任務(wù)1應(yīng)用For循環(huán)編寫(xiě)VI用自動(dòng)索引后,循環(huán)框內(nèi)的標(biāo)量數(shù)據(jù)在循環(huán)框外變成一維數(shù)組;循環(huán)框內(nèi)一維數(shù)組在循環(huán)框外就變成二維數(shù)組,因此通過(guò)自動(dòng)索引可改變數(shù)組維度。2.創(chuàng)建二維數(shù)組要求:利用兩個(gè)嵌套的For循環(huán),創(chuàng)建一個(gè)4行5列的二維數(shù)組,數(shù)組如下:123451112131415212223242531323334353.1任務(wù)1應(yīng)用For循環(huán)編寫(xiě)VI步驟:1)新建一個(gè)VI,在程序框圖窗口工作區(qū)放置放置兩個(gè)個(gè)嵌套的For循環(huán),把循環(huán)總數(shù)內(nèi)層設(shè)為5,外層設(shè)為4。2)生成行元素一維數(shù)組。3)生成二維數(shù)組。4)保存VI,命名為“創(chuàng)建二維數(shù)組”。5)運(yùn)行該VI,二維數(shù)組有4行、5列??梢?jiàn),外層循環(huán)總數(shù)為數(shù)組行數(shù),內(nèi)層循環(huán)總數(shù)為數(shù)組列數(shù)。3.1任務(wù)1應(yīng)用For循環(huán)編寫(xiě)VI3.1任務(wù)1應(yīng)用For循環(huán)編寫(xiě)VI3.1.3移位寄存器使用移位寄存器是LabVIEW循環(huán)結(jié)構(gòu)中的一個(gè)附加對(duì)象,其功能是將當(dāng)前循環(huán)完成的某個(gè)數(shù)據(jù)傳遞給下一個(gè)循環(huán)開(kāi)始。在For循環(huán)的左邊框或右邊框上右擊,打開(kāi)快捷菜單,選擇“添加移位寄存器”。此時(shí)左右框各出現(xiàn)一個(gè)黑色移位寄存器端口。右邊端口存儲(chǔ)檔次循環(huán)結(jié)束時(shí)的數(shù)據(jù),下次循環(huán)開(kāi)始時(shí),該數(shù)據(jù)傳遞給左邊端口。3.1任務(wù)1應(yīng)用For循環(huán)編寫(xiě)VI3.1.3移位寄存器使用為了存儲(chǔ)多次循環(huán)的數(shù)據(jù),可以在寄存器的左端添加端口。方法是在端口上右擊,打開(kāi)的菜單中選擇“添加元素”或“刪除元素”來(lái)改變移位寄存器的位數(shù)。(a)添加寄存器(b)寄存器賦值(c)初始化與添加端口3.1任務(wù)1應(yīng)用For循環(huán)編寫(xiě)VI一般來(lái)說(shuō),移位寄存器可以存儲(chǔ)任何類型的數(shù)據(jù),但是連接在同一個(gè)寄存器兩個(gè)端子上的數(shù)據(jù)必須是同一類型的。在使用移位寄存器之前,可對(duì)寄存器進(jìn)行初始化,即在左側(cè)寄存器端口連接一個(gè)常量作為初始值。如果不進(jìn)行初始化,首次運(yùn)行,把“0”作為初始值;非首次運(yùn)行則把上次運(yùn)行的數(shù)據(jù)作為初始值。3.1任務(wù)1應(yīng)用For循環(huán)編寫(xiě)VI移位寄存器用來(lái)將本次循環(huán)的數(shù)據(jù)存儲(chǔ)下來(lái),以備下一次循環(huán)使用,在下一次循環(huán)使用以后,其中的數(shù)據(jù)被新的數(shù)據(jù)所覆蓋。把初始化數(shù)據(jù)設(shè)為“5”,在每個(gè)端口添加一個(gè)顯示控件,并放置一個(gè)探針,如圖3-7所示。運(yùn)行VI時(shí),右端口數(shù)據(jù)送入左測(cè)的第1個(gè)端口,左側(cè)數(shù)據(jù)按照三角箭頭的方向傳遞,1號(hào)端口數(shù)據(jù)送入2號(hào)端口,依次下傳。第0次運(yùn)行i=0,“0”被送給右側(cè)端口,左側(cè)3個(gè)端口被賦值“5”,運(yùn)行結(jié)果為“0,5,5,5”;第1次運(yùn)行,數(shù)據(jù)為“1,0,5,5”;第2次結(jié)果“2,1,0,5”,第3次“3,2,1,0”……第9次運(yùn)行結(jié)果。3.1任務(wù)1應(yīng)用For循環(huán)編寫(xiě)VI3.1任務(wù)1應(yīng)用For循環(huán)編寫(xiě)VI3.2任務(wù)2應(yīng)用While循環(huán)設(shè)計(jì)VI1.While循環(huán)結(jié)構(gòu)While循環(huán)也在函數(shù)選板的結(jié)構(gòu)子選板中,放置方法與For循環(huán)相同,功能結(jié)構(gòu)也與For循環(huán)類似。While循環(huán)由循環(huán)框架、循環(huán)計(jì)數(shù)端子、條件端子三個(gè)部分組成。While循環(huán)無(wú)固定的運(yùn)行次數(shù),當(dāng)滿足停止條件時(shí),循環(huán)停止。循環(huán)計(jì)數(shù)端子i由0開(kāi)始計(jì)數(shù),也就是說(shuō)第一次循環(huán)結(jié)束,i計(jì)數(shù)為0,之后依次累加1。條件端子需要輸入一個(gè)布爾量,否則程序無(wú)法運(yùn)行。默認(rèn)狀態(tài)是指當(dāng)條件輸入為真(True)時(shí),循環(huán)停止。點(diǎn)擊條件端子,其會(huì)變?yōu)?,此時(shí)條件輸入為假(False)時(shí),循環(huán)停止。3.2.1設(shè)計(jì)復(fù)數(shù)運(yùn)算VI2.設(shè)計(jì)復(fù)數(shù)運(yùn)算VI要求:設(shè)計(jì)VI實(shí)現(xiàn)復(fù)數(shù)運(yùn)算代數(shù)式和指數(shù)式的互相轉(zhuǎn)換。該任務(wù)中要用到“復(fù)數(shù)”和“數(shù)學(xué)與科學(xué)常量”兩個(gè)子選板。這兩個(gè)子選板都在數(shù)值子選板中。3.2任務(wù)2應(yīng)用While循環(huán)設(shè)計(jì)VI3.2任務(wù)2應(yīng)用While循環(huán)設(shè)計(jì)VI步驟:1)新建一個(gè)VI,在程序框圖上放置一個(gè)While循環(huán),在條件停止端子上創(chuàng)建一個(gè)輸入控件,用來(lái)停止該循環(huán)。2)實(shí)現(xiàn)把復(fù)數(shù)的極坐標(biāo)式轉(zhuǎn)換成代數(shù)式,并在該控件屬性里設(shè)置“精度位數(shù)”為小數(shù)點(diǎn)后2位。3)實(shí)現(xiàn)把復(fù)數(shù)的代數(shù)式轉(zhuǎn)換成極坐標(biāo)式,數(shù)值顯示控件的“精度位數(shù)”設(shè)置為小數(shù)點(diǎn)后2位。4)運(yùn)行該VI。?在模和幅角輸入控件分別輸入5和36.87,觀察代數(shù)式輸出為4+3i。?在實(shí)部和虛部輸入控件分別輸入4和3,得到的模是5,幅角是36.87度。3.2任務(wù)2應(yīng)用While循環(huán)設(shè)計(jì)VI3.2任務(wù)2應(yīng)用While循環(huán)設(shè)計(jì)VI3.2.2設(shè)計(jì)溫度轉(zhuǎn)換與報(bào)警VI要求:溫度測(cè)量輸入為攝氏溫度,調(diào)用在“1.3任務(wù)3創(chuàng)建VI”中創(chuàng)建的“ConvertCtoF.vi”,把攝氏溫度轉(zhuǎn)換成華氏溫度。當(dāng)溫度超過(guò)華氏200度時(shí),指示燈點(diǎn)亮,并停止運(yùn)行VI。3.2任務(wù)2應(yīng)用While循環(huán)設(shè)計(jì)VI3.2任務(wù)2應(yīng)用While循環(huán)設(shè)計(jì)VI1.While循環(huán)與For循環(huán)比較1)For循環(huán)的數(shù)組默認(rèn)為自動(dòng)索引開(kāi)啟,While循環(huán)中的數(shù)組默認(rèn)為自動(dòng)索引禁用??稍谘h(huán)的通道上單擊鼠標(biāo)右鍵彈出快捷菜單選擇“啟用\禁用索引”選項(xiàng)。另外,在創(chuàng)建二維數(shù)組時(shí)一般使用For循環(huán)而不使用While循環(huán)。2)和For循環(huán)一樣,While循環(huán)也有移位寄存器,使用方法和For循環(huán)一樣。

3.2.3設(shè)計(jì)循環(huán)累加器3.2任務(wù)2應(yīng)用While循環(huán)設(shè)計(jì)VI3)For循環(huán)是在執(zhí)行前檢查是否符合條件,While循環(huán)是在執(zhí)行后再檢查條件端子。因此當(dāng)While循環(huán)的條件端子停止條件為“真”時(shí),也要執(zhí)行一次,即While循環(huán)至少執(zhí)行一次;而對(duì)于For循環(huán),當(dāng)總數(shù)接線端N=0時(shí),不執(zhí)行For循環(huán)內(nèi)的程序。4)在默認(rèn)的情況下,在For循環(huán)的總數(shù)接線端N輸入數(shù)值,確定For循環(huán)執(zhí)行的次數(shù),一旦開(kāi)始執(zhí)行后,只有達(dá)到N次才能終止;而While循環(huán)事先不設(shè)置循環(huán)次數(shù),只要滿足條件端子的停止條件,就停止循環(huán)跳出循環(huán)體。如果一定要用For循環(huán)實(shí)現(xiàn)滿足條件,停止循環(huán)跳出循環(huán)體,只需在其邊框上的任意位置右擊,在快彈出的捷菜單里選擇“條件接線端”,可用來(lái)實(shí)現(xiàn)滿足停止條件,停止循環(huán)。3.2任務(wù)2應(yīng)用While循環(huán)設(shè)計(jì)VI2.設(shè)計(jì)循環(huán)累加器要求:設(shè)計(jì)VI實(shí)現(xiàn)產(chǎn)生隨機(jī)數(shù),并進(jìn)行累加,當(dāng)累加和大于10或者累加20次時(shí)停止運(yùn)行。分析:從要求上看,應(yīng)該使用For循環(huán)的條件停止。3.2任務(wù)2應(yīng)用While循環(huán)設(shè)計(jì)VI

1.真假條件在文本語(yǔ)言中有if…else語(yǔ)句、Switch語(yǔ)句等,在LabVIEW中也有與之類似的結(jié)構(gòu)—條件(Case)結(jié)構(gòu)當(dāng)條件選擇器上連接的是布爾量時(shí),相當(dāng)于if…else語(yǔ)句。條件選擇器上還可以連接其它數(shù)據(jù)類型,如數(shù)值、字符串、枚舉型、錯(cuò)誤簇等。條件結(jié)構(gòu)由結(jié)構(gòu)框架、條件選擇端口、選擇器標(biāo)簽、遞增/減按鈕組成。條件結(jié)構(gòu)一般可與For循環(huán)、While循環(huán)配合使用。3.3.1設(shè)計(jì)數(shù)值選擇輸出VI3.3應(yīng)用條件結(jié)構(gòu)設(shè)計(jì)VI3.3應(yīng)用條件結(jié)構(gòu)設(shè)計(jì)VI2.設(shè)計(jì)數(shù)值選擇輸出VI要求:生成10個(gè)0~10的隨機(jī)數(shù),當(dāng)隨機(jī)數(shù)的數(shù)值大于等于5時(shí)取整;小于5時(shí)取值5。然后把這10個(gè)數(shù)組成數(shù)組顯示。3.3應(yīng)用條件結(jié)構(gòu)設(shè)計(jì)VI3.3.2編寫(xiě)水果總價(jià)計(jì)算VI1.多種選擇條件分支不一定要使用輸入數(shù)據(jù)或提供輸出數(shù)據(jù),但是如果任一分支有輸出數(shù)據(jù),則其他所有的分支也必須在該數(shù)據(jù)通道有數(shù)據(jù)輸出,否則將可能導(dǎo)致編程中的代碼錯(cuò)誤。如果有多種選擇的情況,可以為分支選擇器連接一個(gè)“枚舉”輸入控件。在條件結(jié)構(gòu)框架上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“在后面添加分支”菜單項(xiàng)用戶就可以為條件結(jié)構(gòu)添加新的分支。添加完新分支后可在快捷菜單中選擇“重排分支”菜單項(xiàng)。打開(kāi)“重排分支”對(duì)話框,在對(duì)話框的分支列表中用鼠標(biāo)拖動(dòng)列表項(xiàng)可以對(duì)分支重新排序。通常,排序按鈕以第一個(gè)選擇值為基準(zhǔn)對(duì)選擇器標(biāo)簽值進(jìn)行排序。刪除分支的操作與添加分支相同。3.3應(yīng)用條件結(jié)構(gòu)設(shè)計(jì)VI3.3應(yīng)用條件結(jié)構(gòu)設(shè)計(jì)VI2.水果總價(jià)計(jì)算VI要求:列出4種水果,如蘋(píng)果、香蕉、橙子、梨子。選擇水果種類,輸入重量,運(yùn)行VI,計(jì)算該種水果的總價(jià)。3.3應(yīng)用條件結(jié)構(gòu)設(shè)計(jì)VI步驟:1)創(chuàng)建VI,命名為“水果總價(jià)計(jì)算.vi”2)編輯前面板。在控件選板的“新式→字符串與路徑”子選板中找到組合框,拖放在前面板,并把標(biāo)簽修改為“水果種類”。鼠標(biāo)右擊該控件,選擇“編輯項(xiàng)”選項(xiàng),打開(kāi)編輯項(xiàng)屬性對(duì)話框進(jìn)行編輯。完成項(xiàng)的編輯然后點(diǎn)擊“確定”按鈕。在前面板放置一個(gè)數(shù)值輸入控件,標(biāo)簽為“重量”;放置一個(gè)數(shù)值顯示控件,標(biāo)簽為“總價(jià)”。

3.3應(yīng)用條件結(jié)構(gòu)設(shè)計(jì)VI

圖3-20組合框編輯項(xiàng)窗口3.3應(yīng)用條件結(jié)構(gòu)設(shè)計(jì)VI3)在程序框圖窗口,放置條件結(jié)構(gòu),把組合框連接到條件結(jié)構(gòu)的分支選擇器上。把選擇器標(biāo)簽修改為“a”、“b”。在“b”分支上右擊鼠標(biāo),在彈出的快捷菜單中選擇“在后面添加分支”,來(lái)添加、“p”分支。在a分支把重量與蘋(píng)果的單價(jià)相乘,b分支把重量與香蕉單價(jià)相乘,o分支重量與橙子單價(jià)相乘,p分支重量與梨子單價(jià)相乘。把每個(gè)分支的乘積與“總價(jià)”相連。把以上的程序代碼放到While循環(huán)中。

3.3應(yīng)用條件結(jié)構(gòu)設(shè)計(jì)VI4)運(yùn)行VI,在前面板組合框“水果種類”中選擇一種水果(如蘋(píng)果),選擇框里面就會(huì)顯示該種水果名稱。再輸入重量,“總價(jià)”顯示控件中就會(huì)顯示該水果的總價(jià)。3.3應(yīng)用條件結(jié)構(gòu)設(shè)計(jì)VI3.4應(yīng)用順序結(jié)構(gòu)設(shè)計(jì)VI3.4.1順序結(jié)構(gòu)在LabVIEW中,可以用順序結(jié)構(gòu)來(lái)控制程序執(zhí)行順序。順序結(jié)構(gòu)由多個(gè)框架組成,從框架0到框架n。程序運(yùn)行時(shí),首先執(zhí)行的是放在框架0中的程序,然后執(zhí)行的是放在框架1中的程序,……,這樣依次執(zhí)行下去。這些子框圖看起來(lái)就像一幀幀的電影膠片,因此每個(gè)框架稱為一幀。在程序運(yùn)行時(shí),只有上一個(gè)框架中的程序運(yùn)行結(jié)束后才能運(yùn)行下一個(gè)框架中的程序。順序結(jié)構(gòu)共有兩種類型:層疊式順序結(jié)構(gòu)和平鋪式順序結(jié)構(gòu)。平鋪式,結(jié)構(gòu)比較簡(jiǎn)單,從第0號(hào)開(kāi)始依次排列;層疊式每次只能看到一幀,與條件結(jié)構(gòu)類似,框架上端有“選擇器標(biāo)簽”,可以選擇某一幀來(lái)察看該幀的程序。這兩種類型選擇器功能相同,順序結(jié)構(gòu)簡(jiǎn)單直觀不需要在框架之間的切換;層疊結(jié)構(gòu)使程序簡(jiǎn)潔,節(jié)省視覺(jué)空間;兩種類型之間是可以互相切換。3.4應(yīng)用順序結(jié)構(gòu)設(shè)計(jì)VI3.4.2編寫(xiě)順序點(diǎn)亮指示燈VI

要求:用平鋪式順序結(jié)構(gòu)編寫(xiě)VI,實(shí)現(xiàn)紅、黃、綠三個(gè)指示燈依次點(diǎn)亮3秒。分析:用平鋪式順序結(jié)構(gòu),需要3幀,第1幀紅燈亮,黃燈和綠燈滅;第2幀黃燈亮,紅燈和綠燈滅;第3幀綠燈亮,紅燈和黃燈滅。3幀當(dāng)中都要用到紅、黃、綠三個(gè)指示燈,因此要用到變量。3.4應(yīng)用順序結(jié)構(gòu)設(shè)計(jì)VI(a)平鋪式順序結(jié)構(gòu)(b)層疊式順序結(jié)構(gòu)3.4應(yīng)用順序結(jié)構(gòu)設(shè)計(jì)VI1.局部變量與全局變量在LabVIEW環(huán)境中,各個(gè)對(duì)象之間傳遞數(shù)據(jù)的基本途徑是通過(guò)連線。但是需要在幾個(gè)同時(shí)運(yùn)行的程序之間傳遞數(shù)據(jù)時(shí),顯然是不能通過(guò)連線的;即使在一個(gè)程序內(nèi)部各部分之間傳遞數(shù)據(jù)時(shí),有時(shí)也會(huì)遇到連線的困難;還有的時(shí)候,需要在程序中多個(gè)位置訪問(wèn)同一個(gè)前面板對(duì)象,甚至有些是對(duì)它寫(xiě)入數(shù)據(jù)、有些是由它讀出數(shù)據(jù)。在這些情況下,就需要使用全局變量和局部變量。3.4應(yīng)用順序結(jié)構(gòu)設(shè)計(jì)VI1.局部變量與全局變量在LabVIEW中的變量是程序框圖中的元素,通過(guò)它可以在另一位置訪問(wèn)或存儲(chǔ)數(shù)據(jù)。根據(jù)不同的變量類型,數(shù)據(jù)的實(shí)際位置也不一樣,局部變量將數(shù)據(jù)存儲(chǔ)在前面板的輸入控件和顯示控件中;全局變量將數(shù)據(jù)存儲(chǔ)在特殊的可以通過(guò)多個(gè)VI訪問(wèn)的倉(cāng)庫(kù)中。局部變量的作用域是整個(gè)VI,用于在單個(gè)VI中傳輸數(shù)據(jù);全局變量的作用域是整臺(tái)計(jì)算機(jī),主要用在多個(gè)VI之間共享數(shù)據(jù)。3.4應(yīng)用順序結(jié)構(gòu)設(shè)計(jì)VI1)局部變量為控件創(chuàng)建局部變量的方法有兩種,一是在已有的控件對(duì)應(yīng)端子上右擊,從彈出的快捷菜單中選擇創(chuàng)建→局部變量,如圖3-23所示。這樣就得到該對(duì)象的一個(gè)局部變量。另一種方法是選擇函數(shù)選板→結(jié)構(gòu)→局部變量,然后將其拖到框圖上,就可得到一個(gè)圖標(biāo)。鼠標(biāo)左鍵單擊該圖標(biāo),將其與框圖中已有的變量建立關(guān)聯(lián),即完成。3.4應(yīng)用順序結(jié)構(gòu)設(shè)計(jì)VI局部變量可以是“寫(xiě)入”也可以是“讀取”。默認(rèn)情況下為寫(xiě)入型,可以鼠標(biāo)右鍵單擊圖標(biāo),選擇轉(zhuǎn)換為讀取。局部變量只是原變量的一個(gè)數(shù)據(jù)拷貝,但是它的屬性可以修改,并且這種改變不會(huì)影響原變量。局部變量有三種基本的用途:控制初始化、協(xié)調(diào)控制功能、臨時(shí)保存數(shù)據(jù)和傳遞數(shù)據(jù)。3.4應(yīng)用順序結(jié)構(gòu)設(shè)計(jì)VI2)全局變量全局變量是LabVIEW中一個(gè)與VI地位等同的模塊,它以獨(dú)立文件的形式保存在磁盤中,文件后綴為.gbl。通過(guò)全局變量不同VI之間可以交換數(shù)據(jù)。創(chuàng)建全局變量的方法是在函數(shù)選板的“結(jié)構(gòu)→全局變量”,將其圖標(biāo)拖到框圖中,得到全局變量,圖標(biāo)。雙擊全局變量圖標(biāo),打開(kāi)其前面板,在該面板上放上所需要的變量,例如一個(gè)數(shù)值量、一個(gè)布爾量、一個(gè)字符串變量等。保存這個(gè)變量,默認(rèn)名稱為“全局1.gbl”。至此,全局變量創(chuàng)建完備,下面就可以用調(diào)用子VI的方法調(diào)用這個(gè)全局變量。3.4應(yīng)用順序結(jié)構(gòu)設(shè)計(jì)VI全局變量的創(chuàng)建和調(diào)用3.4應(yīng)用順序結(jié)構(gòu)設(shè)計(jì)VI在一個(gè)VI中調(diào)用全局變量的方法同調(diào)用子VI的方法,即在函數(shù)下選擇“選擇VI”然后打開(kāi)所需的全局變量文件,如“全局1.gbl”。鼠標(biāo)左鍵單擊全局變量圖標(biāo),“全局1”中包含的3個(gè)變量就以列表形式出現(xiàn),見(jiàn)圖8-17。選擇其中的布爾,該變量就是“布爾”控件的全局變量。有時(shí)需要從全局變量中讀數(shù),有時(shí)需要向全局變量寫(xiě)數(shù)。這時(shí)可利用快捷菜單改變其屬性。方法是右擊全局變量圖標(biāo),選擇“轉(zhuǎn)換為讀取”或“轉(zhuǎn)換為寫(xiě)入”來(lái)改變讀寫(xiě)方式。全局變量不僅可以在不同VI間傳遞數(shù)據(jù),而且可以通過(guò)它傳遞消息,控制各VI的協(xié)調(diào)執(zhí)行。它在程序設(shè)計(jì)中很有用。3.4應(yīng)用順序結(jié)構(gòu)設(shè)計(jì)VI無(wú)論是全局變量,還是局部變量使用過(guò)多也會(huì)帶來(lái)一些其它問(wèn)題,必須引起注意。首先,從程序的靜態(tài)結(jié)構(gòu)上看,會(huì)使程序結(jié)構(gòu)不直觀,造成混亂。其次在程序運(yùn)行過(guò)程中可能帶來(lái)數(shù)據(jù)狀態(tài)的競(jìng)態(tài)現(xiàn)象,這主要指因?yàn)槿肿兞孔鳛橐环N可讀可寫(xiě)的中間變量,應(yīng)當(dāng)嚴(yán)格控制讀寫(xiě)的操作,最好是使它們處于“一寫(xiě)多讀”的狀態(tài)。否則可能帶來(lái)問(wèn)題。3.4應(yīng)用順序結(jié)構(gòu)設(shè)計(jì)VI2.程序設(shè)計(jì)步驟1)把平鋪式順序結(jié)構(gòu)拖放到工作區(qū),在后面添加2個(gè)分支。2)在第一個(gè)分支放置3個(gè)指示燈,分別為紅、黃、綠。在紅燈上右擊鼠標(biāo),創(chuàng)建一個(gè)常量,單擊一下改為真常量,為黃燈和綠燈分別創(chuàng)建一個(gè)假常量。3)在指示燈上右擊鼠標(biāo),分別創(chuàng)建紅、黃、綠燈的局部變量,放置在第二幀中,并設(shè)置黃燈為真,紅燈和綠燈為假;同樣方法在第三幀中,紅燈和黃燈將為假,綠燈為真。4)在每一幀中放置“等待(ms)”,并設(shè)置等待時(shí)間為3000ms3.4應(yīng)用順序結(jié)構(gòu)設(shè)計(jì)VI2.程序設(shè)計(jì)步驟5)在前面板,改變指示燈的顏色。指示燈默認(rèn)點(diǎn)亮為亮綠色,熄滅為暗綠色,因此,紅燈和黃燈需要修改一下。在紅燈上右擊鼠標(biāo),在彈出的快捷菜單中選擇“屬性”,打開(kāi)屬性對(duì)話框。在標(biāo)簽為“外觀”選項(xiàng)界面,看到顏色屬性中的“開(kāi)”為亮綠色,單擊該綠色方塊,彈出顏色選擇窗口,選擇紅色。再單擊“關(guān)”對(duì)應(yīng)的色塊,選擇暗紅色,然后單擊確定按鈕,即完成紅燈顏色設(shè)置。同樣方法設(shè)置黃燈的顏色。6)運(yùn)行程序,觀察指示燈點(diǎn)亮過(guò)程。3.4應(yīng)用順序結(jié)構(gòu)設(shè)計(jì)VI3.4應(yīng)用順序結(jié)構(gòu)設(shè)計(jì)VI3.5應(yīng)用事件結(jié)構(gòu)設(shè)計(jì)VI在LabVIEW中另一個(gè)常用的結(jié)構(gòu)就是事件結(jié)構(gòu)(Events),事件結(jié)構(gòu)用來(lái)作界面響應(yīng)。當(dāng)前面板上有數(shù)值變化、按鍵按下等情況時(shí),就觸發(fā)事件結(jié)構(gòu)中的對(duì)應(yīng)幀,實(shí)現(xiàn)相應(yīng)的功能。事件結(jié)構(gòu)避免了程序運(yùn)行中不斷地輪詢前面板是否有用戶交互事件的發(fā)生,而是在有事件發(fā)生時(shí)才做響應(yīng),避免了不必要的資源占用。3.5.1事件結(jié)構(gòu)所謂事件,是指對(duì)活動(dòng)發(fā)生的異步通知。事件可以來(lái)自于用戶界面、外部I/O或其他方式。用戶界面事件包括鼠標(biāo)點(diǎn)擊、鍵盤按鍵等動(dòng)作;外部I/O事件則指諸如數(shù)據(jù)采集完畢或發(fā)生錯(cuò)誤時(shí)硬件觸發(fā)器或定時(shí)器發(fā)出信號(hào)。其他方式的事件可通過(guò)編程生成并與程序的不同部分進(jìn)行通信。LabVIEW支持用戶界面事件和通過(guò)編程生成的事件,但不支持外部I/O事件。LabVIEW中的事件結(jié)構(gòu)也是一種能改變數(shù)據(jù)流執(zhí)行方式的一種結(jié)構(gòu),使用事件結(jié)構(gòu)可以實(shí)現(xiàn)用戶在前面板的操作(事件)與程序執(zhí)行的互動(dòng)。3.5應(yīng)用事件結(jié)構(gòu)設(shè)計(jì)VI一個(gè)標(biāo)準(zhǔn)的事件結(jié)構(gòu)由框架、超時(shí)端子、事件數(shù)據(jù)節(jié)點(diǎn)、遞增/減按鈕、選擇器標(biāo)簽組成。事件結(jié)構(gòu)也可以由多層框架組成,但與條件結(jié)構(gòu)不同的是,事件結(jié)構(gòu)雖然每次只能運(yùn)行一個(gè)框圖,但可以同時(shí)響應(yīng)幾個(gè)事件。事件結(jié)構(gòu)中,“超時(shí)端子”用來(lái)設(shè)定超時(shí)時(shí)間,其接入數(shù)據(jù)是以毫秒為單位的整數(shù)值。當(dāng)超時(shí)時(shí)間設(shè)置成“-1”時(shí),表示永不超時(shí),程序運(yùn)行時(shí)就不會(huì)進(jìn)入超時(shí)幀。3.5應(yīng)用事件結(jié)構(gòu)設(shè)計(jì)VI事件結(jié)構(gòu)注冊(cè)事件函數(shù)選板3.5應(yīng)用事件結(jié)構(gòu)設(shè)計(jì)VI“事件數(shù)據(jù)節(jié)點(diǎn)”由若干個(gè)事件數(shù)據(jù)端子構(gòu)成,數(shù)據(jù)端子的增減可以通過(guò)拖拉事件數(shù)據(jù)節(jié)點(diǎn)來(lái)進(jìn)行,也可以通過(guò)單擊鼠標(biāo)右鍵從彈出的快捷菜單中選擇“添加/刪除元素”選項(xiàng)進(jìn)行。事件結(jié)構(gòu)同樣支持隧道。3.5應(yīng)用事件結(jié)構(gòu)設(shè)計(jì)VI動(dòng)態(tài)事件結(jié)構(gòu)的創(chuàng)建就需要使用注冊(cè)事件節(jié)點(diǎn)注冊(cè)事件(指定事件結(jié)構(gòu)中事件的事件源和事件類型的過(guò)程稱為注冊(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)即可。3.5應(yīng)用事件結(jié)構(gòu)設(shè)計(jì)VI

溫馨提示

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