




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第4章 程序結(jié)構(gòu),程序結(jié)構(gòu)是一種由軟件內(nèi)部定義的程序執(zhí)行方式。它們就像領(lǐng)導(dǎo)指揮工作一樣,把握程序執(zhí)行的大局,同時也控制著一些微小有環(huán)節(jié)。程序結(jié)構(gòu)主要有循環(huán)、事件、條件、順序結(jié)構(gòu)等。本章將對它們進(jìn)行詳細(xì)的講解和說明。,4.1 程序結(jié)構(gòu)概念,程序結(jié)構(gòu)是一個對程序執(zhí)行的總稱。它包含有多種程序結(jié)構(gòu)相關(guān)的函數(shù)。LabVIEW有一個函數(shù)選板,專門用于程序的結(jié)構(gòu)控制和節(jié)點(diǎn)的屬性設(shè)置等。通過“函數(shù)”|“編程”|“結(jié)構(gòu)”下拉列表打開,如圖4.1所示。,4.2 While循環(huán),While循環(huán)是一種先執(zhí)行后檢查條件的循環(huán)程序。它不管條件滿足與否,最少要執(zhí)行一次。它的最大好處是能在條件為真是循環(huán)一下,省去了許多的麻煩
2、。下面對它的概念及使用進(jìn)行詳細(xì)的說明。,4.2.1 While循環(huán)創(chuàng)建,While循環(huán)重復(fù)執(zhí)行內(nèi)部的子程序框圖,直到條件接線端(輸入端)接收到特定的布爾值。將布爾值連接至While循環(huán)的條件接線端。在條件接線端上右擊,彈出快捷菜單,選擇“真(T)時停止”或“真(T)時繼續(xù)”,可以進(jìn)行運(yùn)行條件狀態(tài)的選擇。也可將一個錯誤簇連線至條件接線端,具體做法如下:右擊條件接線端,從快捷菜單中選擇“真時停止”或“真時繼續(xù)”,然后把錯誤源接到此條件端口上即可。,4.2.2 While的自動索引,如果為一個進(jìn)入While循環(huán)的數(shù)組啟用自動索引,則While循環(huán)將對該數(shù)組建立索引。但是,While循環(huán)只有在滿足特定
3、條件時才會停止執(zhí)行,因此While循環(huán)的執(zhí)行次數(shù)不受該數(shù)組大小的限制。當(dāng)While循環(huán)索引超過輸入數(shù)組的大小時,LabVIEW會將該數(shù)組元素類型的默認(rèn)值輸入循環(huán)。循環(huán)次數(shù)過多可能會引起系統(tǒng)內(nèi)存溢出。,4.3 For循環(huán),For循環(huán)是一種先檢查條件后執(zhí)行的方式。若條件不滿足,它就不執(zhí)行。若條件滿足,則For循環(huán)在內(nèi)部會重復(fù)執(zhí)行N次,當(dāng)N達(dá)到設(shè)定值后就停止工作。,4.3.1 For循環(huán)概念,For循環(huán)是一個常用的判斷結(jié)構(gòu),它的其他語言的For一樣,起到一個判斷條件,再執(zhí)行的作用。它在結(jié)構(gòu)如圖4.14所示。,4.3.2 循環(huán)次數(shù)的設(shè)置,For循環(huán)中要設(shè)置循環(huán)的次數(shù),這是循環(huán)設(shè)置的第一步。它的設(shè)置關(guān)系
4、到程序運(yùn)行正確性和穩(wěn)定性。不然有時可能會造成死的循環(huán)。將循環(huán)外部的數(shù)值連接到總數(shù)接線端的左邊或頂部,可手動設(shè)定循環(huán)次數(shù),或者使用自動索引自動設(shè)定循環(huán)總數(shù)。循環(huán)10次時,對次數(shù)端口設(shè)置如圖4.15所示。,4.3.3 用For循環(huán)產(chǎn)生數(shù)組,For循環(huán)可以把一個單獨(dú)數(shù)據(jù)變?yōu)橐粋€數(shù)組,第一個For循環(huán)都能產(chǎn)生一個一維的數(shù)組。也就是說,每經(jīng)過一個For循環(huán),數(shù)組就增加一個維。用這種操作,方便的創(chuàng)建一個數(shù)組。每循環(huán)一次,就增加一個元素。下面以產(chǎn)生一個二維的數(shù)組為例進(jìn)行說明。,4.4 事件結(jié)構(gòu),事件結(jié)構(gòu)就是當(dāng)某一指定的事件發(fā)生時,就會執(zhí)行相應(yīng)框圖中的程序。它包括一個或多個子程序框圖,或事件分支。當(dāng)結(jié)構(gòu)執(zhí)行時
5、,僅有一個子程序框圖或分支在執(zhí)行。事件結(jié)構(gòu)將等待直至某一事件發(fā)生,并執(zhí)行相應(yīng)條件分支從而處理該事件。,4.4.1 事件結(jié)構(gòu)的概念,事件結(jié)構(gòu)是一種在程序運(yùn)行時通過前面板可以改變程序執(zhí)行方式的結(jié)構(gòu)。也就是說它可以改變數(shù)據(jù)流。比如當(dāng)程序執(zhí)行在中間時,有一個事件的發(fā)生,引發(fā)一個事件結(jié)構(gòu),就可以調(diào)到程序前面去執(zhí)行。這就很好地干涉了程序的執(zhí)行。有點(diǎn)類似于C語言中的goto語句。,4.4.2 事件結(jié)構(gòu)的組成及建立,事件結(jié)構(gòu)的創(chuàng)建是通過在程序框圖中托動生成。這個和上面的兩循環(huán)類似。它創(chuàng)建后如圖4.19所示。,4.4.3 事件結(jié)構(gòu)的設(shè)置,事件結(jié)構(gòu)中,要對事件的屬性進(jìn)行定義并做出響應(yīng)。不同的事件,它的數(shù)據(jù)屬性端口
6、不一樣。常用的有“源”、“類型”、“時間”3種。它的子程序框圖可以創(chuàng)建多個,且每一個子框圖都可以代表不同的事件操作。下面將對它們的操作詳細(xì)說明。,4.4.4 事件編程,事件的編程是非常有用的一種方法。這里以一個對前面板控件的識別做出響應(yīng)為例說明編程過程。本程序是用一個開關(guān)控制一個事件分支,來顯示燈的亮和滅。用一個旋鈕控件一個分支進(jìn)行數(shù)據(jù)顯示。用一個燈來字符串的顯示。,4.5 條件結(jié)構(gòu),條件結(jié)構(gòu)是一種由輸入的條件進(jìn)行選擇執(zhí)行分支的結(jié)構(gòu)。它可以包含多個分支,第一個分支都有一個不同的程序進(jìn)行條件。它類似于C語言中的case選擇結(jié)構(gòu)。當(dāng)輸入的條件符合某一條件的入口值時,程序就執(zhí)行此條件結(jié)構(gòu)內(nèi)的程序。但
7、它的執(zhí)行是唯一的,不同同時執(zhí)行兩個或兩個以上的分支。它的條件選擇端可以是布爾量、數(shù)值、字符串等多種形式。本節(jié)將從幾個方面講解它的應(yīng)用。,4.5.1 條件結(jié)構(gòu)概念,條件結(jié)構(gòu)是在程序多種情況下進(jìn)行選擇的最佳結(jié)構(gòu)。它能最快最安全的選擇要進(jìn)入的分支,獨(dú)立的執(zhí)行。以創(chuàng)建它時,和前面向種軟件一樣,先在要創(chuàng)建的地方單擊,再托動鼠標(biāo),有一個虛線框在從起點(diǎn)開始,一直在增大。到目的點(diǎn)后再次單擊鼠標(biāo)。就給出了條件結(jié)構(gòu)的框圖,如圖4.29所示。,4.5.2 分支設(shè)置,條件結(jié)構(gòu)分支的設(shè)置和事件結(jié)構(gòu)的設(shè)置一樣,右擊結(jié)構(gòu)邊框,從彈出的快捷菜單中選擇添加方式。這里有“在后面添加分支”、“在前面添加分支”、“復(fù)制分支”“刪除分
8、支”等。這里選擇“在后面添加分支”命令,如圖4.30所示。,4.5.3 條件輸入,當(dāng)對條件結(jié)構(gòu)進(jìn)行編程時,必須先對條件輸入進(jìn)行編輯。這樣才能在連接到條件結(jié)構(gòu)時能設(shè)置相關(guān)的分支。若輸入的條件多于結(jié)構(gòu)中的分支,則輸入的條件量中,后面的一些量被忽略。當(dāng)把條件輸入編輯好后,連接到結(jié)構(gòu)的輸入端口上,就會自動掃描出輸入分支量入口。下面以一個轉(zhuǎn)盤作為條件的輸入,進(jìn)行整個結(jié)構(gòu)的條件設(shè)置講解。,4.5.4 條件結(jié)構(gòu)的應(yīng)用,實(shí)際應(yīng)用中要用到大量的條件結(jié)構(gòu)使用。這里先以一個“組合框”為輸入條件,再把它產(chǎn)生的字符串作為條件入口的判斷。這樣就練習(xí)了以字符串為條件的選擇。,4.6 定時結(jié)構(gòu),定時結(jié)構(gòu)是一個用時間來控制程序
9、執(zhí)行的結(jié)構(gòu)。它包含有許多子時間函數(shù)。主要用來對循環(huán)的定時執(zhí)行,做出響應(yīng)。它本節(jié)將對它的操作進(jìn)行詳細(xì)說明。,4.6.1 定時結(jié)構(gòu)概念,定時結(jié)構(gòu)是用于控制定時結(jié)構(gòu)在執(zhí)行其子程序框圖、同步各定時結(jié)構(gòu)的起始時間、創(chuàng)建定時源,以及創(chuàng)建定時源層次結(jié)構(gòu)時的速率和優(yōu)先級。通過“函數(shù)”|“編程”|“結(jié)構(gòu)”|“定時結(jié)構(gòu)”下拉列表打開,如圖4.39所示。,4.6.2 定時循環(huán),定時循環(huán)是一種能在一定的時間內(nèi)按指定的時間執(zhí)行程序相關(guān)動作的結(jié)構(gòu)。它的程序框圖中含有許多的條件端口,如圖4.40所示。 1循環(huán)定時源 2循環(huán)定時屬性 3處理器分配 4延遲周期,4.6.3 定時順序,定時順序是一種在設(shè)定時間下按順序執(zhí)行程序框圖
10、內(nèi)容的結(jié)構(gòu)。它最大的好處是能不用手動設(shè)置,自動的按一定順序進(jìn)行。創(chuàng)建后它的程序框圖如圖4.42所示。,4.6.4 定時操作,定時操作有創(chuàng)建定時源、清除定時源等。它們主要是對一些時間的設(shè)置和創(chuàng)建。下面分別講解它們的操作方法。 1創(chuàng)建定時源 2定時結(jié)構(gòu)停止,4.6.5 定時結(jié)構(gòu)的編程,下面以一個定時循環(huán)為例進(jìn)行編程。編程的目標(biāo)是通過定時循環(huán),在一定的時間內(nèi)進(jìn)行循環(huán)。當(dāng)循環(huán)到第30次時,產(chǎn)生一個定時。當(dāng)時間延時達(dá)到后,定時循環(huán)的“延遲完成?”輸出端口會產(chǎn)生一個脈沖,讓延遲完成這一燈亮。同時還用到一個進(jìn)度顯示框。當(dāng)進(jìn)度達(dá)到100%時定時循環(huán)停止。下面將分步講解具體操作過程。,4.7 公式節(jié)點(diǎn),公式節(jié)點(diǎn)
11、是對一些復(fù)雜的算法和公式進(jìn)行編輯,能方便地為一些程序處理提供依據(jù)。在LabVIEW中,編程時只需要要在公式節(jié)點(diǎn)中按一定的要求輸入對應(yīng)公式即可,簡化了編程過程。本節(jié)對公式節(jié)點(diǎn)的操作進(jìn)行詳細(xì)說明。,4.7.1 公式節(jié)點(diǎn)的概念,在公式節(jié)點(diǎn)中,創(chuàng)建一個公式節(jié)點(diǎn),類似于循環(huán)結(jié)構(gòu)。在程序框圖界面畫出公式節(jié)點(diǎn)區(qū)域,就可以進(jìn)行公式編程,如圖4.50所示。,4.7.2 公式節(jié)點(diǎn)的語法,公式節(jié)點(diǎn)的語法類似于C語言中的編程語法。編程中每一句程序結(jié)束時,都必須加上一個分號作為結(jié)束。且任何一個命令都和C語言中的優(yōu)先級一樣。編程時要遵守這些語法。大體上涵蓋了下列非終結(jié)符號:復(fù)合語句、標(biāo)識符、條件表達(dá)式、數(shù)字、數(shù)組大小、浮
12、點(diǎn)型、整型、左式、賦值運(yùn)算符和函數(shù)。編程中規(guī)則有如下幾條。 對在框圖上添加的變量不需要在程序中定義,其他要用到的變量都要定義。 字符不能在公式節(jié)點(diǎn)中定義。 數(shù)值的定義要有長度。 所有公式中用的符號都可以在編程中直接使用。 編程中可以用到C語言中的一些命令,比如case、while、switch等。,4.8 順序結(jié)構(gòu),順序結(jié)構(gòu)是一種按照事先編程,只要進(jìn)入此順序結(jié)構(gòu),就會按順序進(jìn)行執(zhí)行。它主要是引導(dǎo)了程序的執(zhí)行順序。本節(jié)將對兩種順序結(jié)構(gòu)進(jìn)行詳細(xì)講解。,4.8.1 順序結(jié)構(gòu)的建立,順序結(jié)構(gòu)有兩類,它們分別是層疊式順序結(jié)構(gòu)和平鋪式順序結(jié)構(gòu)。它們幾乎沒有什么大的差別,只是前都是一個層疊的結(jié)構(gòu),程序編程過
13、程簡短,可以添加順序幀。后者是一個排開的形狀,它把所有的順序幀都顯示出來,占用了大量程序界面。但是它的數(shù)據(jù)流執(zhí)行明了,維護(hù)更加方便。 1層疊式順序 2平鋪式順序結(jié)構(gòu),4.8.2 順序結(jié)構(gòu)的執(zhí)行,下面以3個燈按順序依次亮起為事例,編寫一個程序,反應(yīng)順序結(jié)構(gòu)的執(zhí)行過程。,4.9 移位寄存器,移位寄存器是LabVIEW中對程序運(yùn)行中數(shù)據(jù)進(jìn)行臨時保存的一種方式。它用于在循環(huán)中保存前面幾次的執(zhí)行的數(shù)據(jù)。本節(jié)將對移位寄存器的使用進(jìn)行編程講解。,4.9.1 移位寄存器的建立,移位寄存器是一種用于數(shù)據(jù)保存的方式。在For循環(huán)和While循環(huán)中,都可以創(chuàng)建移位寄存器。在循環(huán)結(jié)構(gòu)的程序邊框上,右擊彈出快捷菜單,選
14、擇“添加移位寄存器”命令,則會自動在循環(huán)結(jié)構(gòu)的輸入和輸入邊框上分別添加一個端口。這樣就可以在兩個端口上接線,如圖4.57所示。,4.9.2 移位寄存器的初始化,移位寄存器相當(dāng)于數(shù)組,可以在其中保存大量的數(shù)據(jù)。所在使用之前和數(shù)組一樣,要對它進(jìn)行初始化。這樣可以保證在使用時輸出的值才時正確的值。它的初始化是也就是程序剛開始執(zhí)行時,送一個選定的數(shù)值到移位寄存器。這樣做保證了數(shù)據(jù)的安全性,不再混亂。比如對布爾量中,初始化給定一個真常量或者假常量。對數(shù)值性變量,初始化時送一個0或者其他的數(shù)值即可。對字符串的初始化可以送一個空字符串,如圖4.59所示。,4.9.3 移位寄存器的使用,移位寄存器的使用很廣泛
15、,它和其他編程語言中的移位寄存器一樣,用于對數(shù)據(jù)的保存。下面以保存循環(huán)中當(dāng)前計(jì)數(shù)值和相加的前后三次的值。,4.10 其他結(jié)構(gòu),LabVIEW中還包括許多結(jié)構(gòu),這一節(jié)里將對它們進(jìn)行一些簡要的講解。以便在以后的編程中用到時能靈活應(yīng)用。,4.10.1 程序框圖禁用結(jié)構(gòu),程序框圖禁用結(jié)構(gòu)包括一個或多個子程序框圖(分支),僅有啟用的子程序框圖可執(zhí)行。它是對一些不想執(zhí)行的程序進(jìn)行屏蔽的手段。程序框圖禁用結(jié)構(gòu)用于禁用一部分程序框圖。它的程序框圖類似于條件結(jié)構(gòu),框圖如圖4.64所示。,4.10.2 反饋節(jié)點(diǎn),反饋節(jié)點(diǎn)是把一次VI或循環(huán)運(yùn)行所得的數(shù)據(jù)值保存到下一次。反饋節(jié)點(diǎn)類似于反饋控制理論和數(shù)字信號處理中的z
16、-1塊。它的關(guān)鍵是返回以前的值。反饋節(jié)點(diǎn)將連接到初始化接線端的值作為第一次循環(huán)或運(yùn)行的初始值。然后將上一次循環(huán)的結(jié)果保存以用于此后的每次循環(huán)。如初始化接線端未連接任何值,反饋節(jié)點(diǎn)將使用數(shù)據(jù)類型的默認(rèn)值,并在此后的運(yùn)行中不斷在之前所得結(jié)果的基礎(chǔ)上產(chǎn)生值。,4.10.3 共享變量,共享變量表示程序框圖上的一個共享變量。要將程序框圖中的共享變量節(jié)點(diǎn)和處于活動狀態(tài)的項(xiàng)目中的共享變量進(jìn)行綁定,可在程序框圖中放置一個共享變量節(jié)點(diǎn)。雙擊或右擊該共享變量節(jié)點(diǎn),從快捷菜單中選擇選擇變量以顯示選擇變量對話框。也可將項(xiàng)目瀏覽器窗口中的共享變量拖放至相同項(xiàng)目中VI的程序框圖,從而創(chuàng)建一個共享變量節(jié)點(diǎn)。,4.10.4
17、局部變量,創(chuàng)建局部變量時,該對象的局部變量的圖標(biāo)將出現(xiàn)在程序框圖上。寫入一個局部變量相當(dāng)于將數(shù)據(jù)傳遞給其他接線端。但是,局部變量還可向輸入控件寫入數(shù)據(jù)和從顯示控件讀取數(shù)據(jù)。事實(shí)上,通過局部變量,前面板對象既可作為輸入訪問也可作為輸出訪問。,4.10.5 全局變量,全局變量用于在多個VI之間訪問和傳遞數(shù)據(jù)。如此看來它非常方便不同程序間的數(shù)據(jù)傳輸。但實(shí)際它在編程中不是經(jīng)常用到。因?yàn)槿肿兞吭谶\(yùn)行中,要占用大量的系統(tǒng)內(nèi)存,傳輸速度也不高。,4.11 小結(jié),本章對LabVIEW中編程結(jié)構(gòu)進(jìn)行了詳細(xì)的說明。這也是對所有編程中要用的控制函數(shù)和編程用法進(jìn)行了系統(tǒng)的講解。本章的難點(diǎn)是循環(huán)結(jié)構(gòu)和公式節(jié)點(diǎn)的應(yīng)用。循環(huán)在編程中經(jīng)常用到,也是最重要的用法之一。公式節(jié)點(diǎn)在一些
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西藏取水收費(fèi)管理辦法
- 異地辦公團(tuán)隊(duì)管理辦法
- 移動推車定置管理辦法
- 萊蕪瓷器修復(fù)培訓(xùn)課件
- 高三上期末數(shù)學(xué)試卷
- 高考模擬感人數(shù)學(xué)試卷
- 定西市歷年中考數(shù)學(xué)試卷
- 德陽市期末高二數(shù)學(xué)試卷
- 2025年03月浙江紹興嵊州市婦幼保健院第一次招聘編外合同制人員12人筆試歷年專業(yè)考點(diǎn)(難、易錯點(diǎn))附帶答案詳解
- 2025至2030打印機(jī)市場行業(yè)市場深度研究與戰(zhàn)略咨詢分析報告
- 七年級下冊英語語法填空專項(xiàng)訓(xùn)練100題含答案5篇
- 租房合同可打印版
- 2024年xx中學(xué)學(xué)生校服選用采購實(shí)施方案
- DL∕T 2622-2023 1000kV高壓并聯(lián)電抗器局部放電現(xiàn)場測量技術(shù)導(dǎo)則
- 農(nóng)活承攬合同
- JT-T-1270.3-2019公路橋梁梳齒板伸縮裝置第3部分:整體錨固式伸縮裝置
- 廣東省茂名市2023-2024學(xué)年八年級下學(xué)期期末數(shù)學(xué)試題
- 遼寧省沈陽沈河區(qū)七校聯(lián)考2024屆物理八下期末考試試題及答案解析
- DZ∕T 0221-2006 崩塌、滑坡、泥石流監(jiān)測規(guī)范(正式版)
- 小學(xué)英語祈使句練習(xí)題
- 1例2型糖尿病酮癥酸中毒伴心衰患者的護(hù)理
評論
0/150
提交評論