第4章程序結構.ppt_第1頁
第4章程序結構.ppt_第2頁
第4章程序結構.ppt_第3頁
第4章程序結構.ppt_第4頁
第4章程序結構.ppt_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第4章 程序結構,程序結構是一種由軟件內(nèi)部定義的程序執(zhí)行方式。它們就像領導指揮工作一樣,把握程序執(zhí)行的大局,同時也控制著一些微小有環(huán)節(jié)。程序結構主要有循環(huán)、事件、條件、順序結構等。本章將對它們進行詳細的講解和說明。,4.1 程序結構概念,程序結構是一個對程序執(zhí)行的總稱。它包含有多種程序結構相關的函數(shù)。LabVIEW有一個函數(shù)選板,專門用于程序的結構控制和節(jié)點的屬性設置等。通過“函數(shù)”|“編程”|“結構”下拉列表打開,如圖4.1所示。,4.2 While循環(huán),While循環(huán)是一種先執(zhí)行后檢查條件的循環(huán)程序。它不管條件滿足與否,最少要執(zhí)行一次。它的最大好處是能在條件為真是循環(huán)一下,省去了許多的麻煩

2、。下面對它的概念及使用進行詳細的說明。,4.2.1 While循環(huán)創(chuàng)建,While循環(huán)重復執(zhí)行內(nèi)部的子程序框圖,直到條件接線端(輸入端)接收到特定的布爾值。將布爾值連接至While循環(huán)的條件接線端。在條件接線端上右擊,彈出快捷菜單,選擇“真(T)時停止”或“真(T)時繼續(xù)”,可以進行運行條件狀態(tài)的選擇。也可將一個錯誤簇連線至條件接線端,具體做法如下:右擊條件接線端,從快捷菜單中選擇“真時停止”或“真時繼續(xù)”,然后把錯誤源接到此條件端口上即可。,4.2.2 While的自動索引,如果為一個進入While循環(huán)的數(shù)組啟用自動索引,則While循環(huán)將對該數(shù)組建立索引。但是,While循環(huán)只有在滿足特定

3、條件時才會停止執(zhí)行,因此While循環(huán)的執(zhí)行次數(shù)不受該數(shù)組大小的限制。當While循環(huán)索引超過輸入數(shù)組的大小時,LabVIEW會將該數(shù)組元素類型的默認值輸入循環(huán)。循環(huán)次數(shù)過多可能會引起系統(tǒng)內(nèi)存溢出。,4.3 For循環(huán),For循環(huán)是一種先檢查條件后執(zhí)行的方式。若條件不滿足,它就不執(zhí)行。若條件滿足,則For循環(huán)在內(nèi)部會重復執(zhí)行N次,當N達到設定值后就停止工作。,4.3.1 For循環(huán)概念,For循環(huán)是一個常用的判斷結構,它的其他語言的For一樣,起到一個判斷條件,再執(zhí)行的作用。它在結構如圖4.14所示。,4.3.2 循環(huán)次數(shù)的設置,For循環(huán)中要設置循環(huán)的次數(shù),這是循環(huán)設置的第一步。它的設置關系

4、到程序運行正確性和穩(wěn)定性。不然有時可能會造成死的循環(huán)。將循環(huán)外部的數(shù)值連接到總數(shù)接線端的左邊或頂部,可手動設定循環(huán)次數(shù),或者使用自動索引自動設定循環(huán)總數(shù)。循環(huán)10次時,對次數(shù)端口設置如圖4.15所示。,4.3.3 用For循環(huán)產(chǎn)生數(shù)組,For循環(huán)可以把一個單獨數(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ù)組為例進行說明。,4.4 事件結構,事件結構就是當某一指定的事件發(fā)生時,就會執(zhí)行相應框圖中的程序。它包括一個或多個子程序框圖,或事件分支。當結構執(zhí)行時

5、,僅有一個子程序框圖或分支在執(zhí)行。事件結構將等待直至某一事件發(fā)生,并執(zhí)行相應條件分支從而處理該事件。,4.4.1 事件結構的概念,事件結構是一種在程序運行時通過前面板可以改變程序執(zhí)行方式的結構。也就是說它可以改變數(shù)據(jù)流。比如當程序執(zhí)行在中間時,有一個事件的發(fā)生,引發(fā)一個事件結構,就可以調(diào)到程序前面去執(zhí)行。這就很好地干涉了程序的執(zhí)行。有點類似于C語言中的goto語句。,4.4.2 事件結構的組成及建立,事件結構的創(chuàng)建是通過在程序框圖中托動生成。這個和上面的兩循環(huán)類似。它創(chuàng)建后如圖4.19所示。,4.4.3 事件結構的設置,事件結構中,要對事件的屬性進行定義并做出響應。不同的事件,它的數(shù)據(jù)屬性端口

6、不一樣。常用的有“源”、“類型”、“時間”3種。它的子程序框圖可以創(chuàng)建多個,且每一個子框圖都可以代表不同的事件操作。下面將對它們的操作詳細說明。,4.4.4 事件編程,事件的編程是非常有用的一種方法。這里以一個對前面板控件的識別做出響應為例說明編程過程。本程序是用一個開關控制一個事件分支,來顯示燈的亮和滅。用一個旋鈕控件一個分支進行數(shù)據(jù)顯示。用一個燈來字符串的顯示。,4.5 條件結構,條件結構是一種由輸入的條件進行選擇執(zhí)行分支的結構。它可以包含多個分支,第一個分支都有一個不同的程序進行條件。它類似于C語言中的case選擇結構。當輸入的條件符合某一條件的入口值時,程序就執(zhí)行此條件結構內(nèi)的程序。但

7、它的執(zhí)行是唯一的,不同同時執(zhí)行兩個或兩個以上的分支。它的條件選擇端可以是布爾量、數(shù)值、字符串等多種形式。本節(jié)將從幾個方面講解它的應用。,4.5.1 條件結構概念,條件結構是在程序多種情況下進行選擇的最佳結構。它能最快最安全的選擇要進入的分支,獨立的執(zhí)行。以創(chuàng)建它時,和前面向種軟件一樣,先在要創(chuàng)建的地方單擊,再托動鼠標,有一個虛線框在從起點開始,一直在增大。到目的點后再次單擊鼠標。就給出了條件結構的框圖,如圖4.29所示。,4.5.2 分支設置,條件結構分支的設置和事件結構的設置一樣,右擊結構邊框,從彈出的快捷菜單中選擇添加方式。這里有“在后面添加分支”、“在前面添加分支”、“復制分支”“刪除分

8、支”等。這里選擇“在后面添加分支”命令,如圖4.30所示。,4.5.3 條件輸入,當對條件結構進行編程時,必須先對條件輸入進行編輯。這樣才能在連接到條件結構時能設置相關的分支。若輸入的條件多于結構中的分支,則輸入的條件量中,后面的一些量被忽略。當把條件輸入編輯好后,連接到結構的輸入端口上,就會自動掃描出輸入分支量入口。下面以一個轉盤作為條件的輸入,進行整個結構的條件設置講解。,4.5.4 條件結構的應用,實際應用中要用到大量的條件結構使用。這里先以一個“組合框”為輸入條件,再把它產(chǎn)生的字符串作為條件入口的判斷。這樣就練習了以字符串為條件的選擇。,4.6 定時結構,定時結構是一個用時間來控制程序

9、執(zhí)行的結構。它包含有許多子時間函數(shù)。主要用來對循環(huán)的定時執(zhí)行,做出響應。它本節(jié)將對它的操作進行詳細說明。,4.6.1 定時結構概念,定時結構是用于控制定時結構在執(zhí)行其子程序框圖、同步各定時結構的起始時間、創(chuàng)建定時源,以及創(chuàng)建定時源層次結構時的速率和優(yōu)先級。通過“函數(shù)”|“編程”|“結構”|“定時結構”下拉列表打開,如圖4.39所示。,4.6.2 定時循環(huán),定時循環(huán)是一種能在一定的時間內(nèi)按指定的時間執(zhí)行程序相關動作的結構。它的程序框圖中含有許多的條件端口,如圖4.40所示。 1循環(huán)定時源 2循環(huán)定時屬性 3處理器分配 4延遲周期,4.6.3 定時順序,定時順序是一種在設定時間下按順序執(zhí)行程序框圖

10、內(nèi)容的結構。它最大的好處是能不用手動設置,自動的按一定順序進行。創(chuàng)建后它的程序框圖如圖4.42所示。,4.6.4 定時操作,定時操作有創(chuàng)建定時源、清除定時源等。它們主要是對一些時間的設置和創(chuàng)建。下面分別講解它們的操作方法。 1創(chuàng)建定時源 2定時結構停止,4.6.5 定時結構的編程,下面以一個定時循環(huán)為例進行編程。編程的目標是通過定時循環(huán),在一定的時間內(nèi)進行循環(huán)。當循環(huán)到第30次時,產(chǎn)生一個定時。當時間延時達到后,定時循環(huán)的“延遲完成?”輸出端口會產(chǎn)生一個脈沖,讓延遲完成這一燈亮。同時還用到一個進度顯示框。當進度達到100%時定時循環(huán)停止。下面將分步講解具體操作過程。,4.7 公式節(jié)點,公式節(jié)點

11、是對一些復雜的算法和公式進行編輯,能方便地為一些程序處理提供依據(jù)。在LabVIEW中,編程時只需要要在公式節(jié)點中按一定的要求輸入對應公式即可,簡化了編程過程。本節(jié)對公式節(jié)點的操作進行詳細說明。,4.7.1 公式節(jié)點的概念,在公式節(jié)點中,創(chuàng)建一個公式節(jié)點,類似于循環(huán)結構。在程序框圖界面畫出公式節(jié)點區(qū)域,就可以進行公式編程,如圖4.50所示。,4.7.2 公式節(jié)點的語法,公式節(jié)點的語法類似于C語言中的編程語法。編程中每一句程序結束時,都必須加上一個分號作為結束。且任何一個命令都和C語言中的優(yōu)先級一樣。編程時要遵守這些語法。大體上涵蓋了下列非終結符號:復合語句、標識符、條件表達式、數(shù)字、數(shù)組大小、浮

12、點型、整型、左式、賦值運算符和函數(shù)。編程中規(guī)則有如下幾條。 對在框圖上添加的變量不需要在程序中定義,其他要用到的變量都要定義。 字符不能在公式節(jié)點中定義。 數(shù)值的定義要有長度。 所有公式中用的符號都可以在編程中直接使用。 編程中可以用到C語言中的一些命令,比如case、while、switch等。,4.8 順序結構,順序結構是一種按照事先編程,只要進入此順序結構,就會按順序進行執(zhí)行。它主要是引導了程序的執(zhí)行順序。本節(jié)將對兩種順序結構進行詳細講解。,4.8.1 順序結構的建立,順序結構有兩類,它們分別是層疊式順序結構和平鋪式順序結構。它們幾乎沒有什么大的差別,只是前都是一個層疊的結構,程序編程過

13、程簡短,可以添加順序幀。后者是一個排開的形狀,它把所有的順序幀都顯示出來,占用了大量程序界面。但是它的數(shù)據(jù)流執(zhí)行明了,維護更加方便。 1層疊式順序 2平鋪式順序結構,4.8.2 順序結構的執(zhí)行,下面以3個燈按順序依次亮起為事例,編寫一個程序,反應順序結構的執(zhí)行過程。,4.9 移位寄存器,移位寄存器是LabVIEW中對程序運行中數(shù)據(jù)進行臨時保存的一種方式。它用于在循環(huán)中保存前面幾次的執(zhí)行的數(shù)據(jù)。本節(jié)將對移位寄存器的使用進行編程講解。,4.9.1 移位寄存器的建立,移位寄存器是一種用于數(shù)據(jù)保存的方式。在For循環(huán)和While循環(huán)中,都可以創(chuàng)建移位寄存器。在循環(huán)結構的程序邊框上,右擊彈出快捷菜單,選

14、擇“添加移位寄存器”命令,則會自動在循環(huán)結構的輸入和輸入邊框上分別添加一個端口。這樣就可以在兩個端口上接線,如圖4.57所示。,4.9.2 移位寄存器的初始化,移位寄存器相當于數(shù)組,可以在其中保存大量的數(shù)據(jù)。所在使用之前和數(shù)組一樣,要對它進行初始化。這樣可以保證在使用時輸出的值才時正確的值。它的初始化是也就是程序剛開始執(zhí)行時,送一個選定的數(shù)值到移位寄存器。這樣做保證了數(shù)據(jù)的安全性,不再混亂。比如對布爾量中,初始化給定一個真常量或者假常量。對數(shù)值性變量,初始化時送一個0或者其他的數(shù)值即可。對字符串的初始化可以送一個空字符串,如圖4.59所示。,4.9.3 移位寄存器的使用,移位寄存器的使用很廣泛

15、,它和其他編程語言中的移位寄存器一樣,用于對數(shù)據(jù)的保存。下面以保存循環(huán)中當前計數(shù)值和相加的前后三次的值。,4.10 其他結構,LabVIEW中還包括許多結構,這一節(jié)里將對它們進行一些簡要的講解。以便在以后的編程中用到時能靈活應用。,4.10.1 程序框圖禁用結構,程序框圖禁用結構包括一個或多個子程序框圖(分支),僅有啟用的子程序框圖可執(zhí)行。它是對一些不想執(zhí)行的程序進行屏蔽的手段。程序框圖禁用結構用于禁用一部分程序框圖。它的程序框圖類似于條件結構,框圖如圖4.64所示。,4.10.2 反饋節(jié)點,反饋節(jié)點是把一次VI或循環(huán)運行所得的數(shù)據(jù)值保存到下一次。反饋節(jié)點類似于反饋控制理論和數(shù)字信號處理中的z

16、-1塊。它的關鍵是返回以前的值。反饋節(jié)點將連接到初始化接線端的值作為第一次循環(huán)或運行的初始值。然后將上一次循環(huán)的結果保存以用于此后的每次循環(huán)。如初始化接線端未連接任何值,反饋節(jié)點將使用數(shù)據(jù)類型的默認值,并在此后的運行中不斷在之前所得結果的基礎上產(chǎn)生值。,4.10.3 共享變量,共享變量表示程序框圖上的一個共享變量。要將程序框圖中的共享變量節(jié)點和處于活動狀態(tài)的項目中的共享變量進行綁定,可在程序框圖中放置一個共享變量節(jié)點。雙擊或右擊該共享變量節(jié)點,從快捷菜單中選擇選擇變量以顯示選擇變量對話框。也可將項目瀏覽器窗口中的共享變量拖放至相同項目中VI的程序框圖,從而創(chuàng)建一個共享變量節(jié)點。,4.10.4

17、局部變量,創(chuàng)建局部變量時,該對象的局部變量的圖標將出現(xiàn)在程序框圖上。寫入一個局部變量相當于將數(shù)據(jù)傳遞給其他接線端。但是,局部變量還可向輸入控件寫入數(shù)據(jù)和從顯示控件讀取數(shù)據(jù)。事實上,通過局部變量,前面板對象既可作為輸入訪問也可作為輸出訪問。,4.10.5 全局變量,全局變量用于在多個VI之間訪問和傳遞數(shù)據(jù)。如此看來它非常方便不同程序間的數(shù)據(jù)傳輸。但實際它在編程中不是經(jīng)常用到。因為全局變量在運行中,要占用大量的系統(tǒng)內(nèi)存,傳輸速度也不高。,4.11 小結,本章對LabVIEW中編程結構進行了詳細的說明。這也是對所有編程中要用的控制函數(shù)和編程用法進行了系統(tǒng)的講解。本章的難點是循環(huán)結構和公式節(jié)點的應用。循環(huán)在編程中經(jīng)常用到,也是最重要的用法之一。公式節(jié)點在一些

溫馨提示

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

評論

0/150

提交評論