程序結構要點_第1頁
程序結構要點_第2頁
程序結構要點_第3頁
程序結構要點_第4頁
程序結構要點_第5頁
免費預覽已結束,剩余12頁可下載查看

下載本文檔

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

文檔簡介

1、2.1循環結構2.1.1 While 循環While循環可以反復執行 循環體的程序,直至到達某個邊界條件。它類似于普通編程語 言中的Do循環和Repeat-Until循環。While循環的框圖是一個大小可變的方框,用于執行 框中的程序,直到條件端子接收到的布爾值為FALSE該循環有如下特點:計數從0開始(i=0 )。先執行循環體,而后i+1 ,如果循環只執行一次,那么循環輸出值i=0。循環至少要運行一次。練習2-1使用While循環和圖表 目的:用While循環和圖表獲得數據,并實時顯示。創建一個可以產生并在圖表中顯示隨機數的VI。前面板有一個控制旋鈕可在0到10秒之間調節循環時間,還有一個開

2、關可以中止VI的運行。學習怎樣改變開關的動作屬性,以便不用每次運行VI時都要打開開關。操作步驟如下:前面板?D ? o ? ±4.06.010.0? ? ? ?IONf圖2-2練習2-1的前面板1. 選擇FileoNew,打開一個新的前面板。2. 選擇ControlsoBoolean ,在前面板中放置一個開關。設置開關的標簽為控制開關。3. 使用標簽工具創建 ON和OFF的標簽,放置于開關旁。4. 選中ControlsoGraph,在前面板中放置一個波形圖(是 chart,而不是graph )。設置它 的標簽為隨機信號。這個圖表用于實時顯示隨機數。5. 把圖表的縱坐標改為0.0到1.

3、0。方法是用標簽工具把最大值從10.0改為1.0。6. 選擇ControlsoNumeric ,在前面板中放置一個旋鈕。設置旋鈕的標簽為循環延時。這個 旋鈕用于控制While循環的循環時間。流程圖7開流程圖,按照下圖創建流程圖。圖2-2練習2-1的流程圖a. 從FunctionsoStruct ures中選擇 While循環,把它放置在流程圖中。將其拖至適 當大小,將相關對象移到循環圈內。b. 從FunctionsoNumeri c中選擇隨機數(0-1 )功能函數放到循環內。c. 在循環中設置 Wait Un til Next ms Multiple函數(Fun ctio nsoTime&am

4、p;Dialog ),該函數的時間單位是毫秒,按目前面板旋鈕的標度,可將每次執行時間延遲0到10毫秒。d. 照上面所示的流程圖連線,把隨機數功能函數和隨機信號圖表輸入端子連接起來, 并把啟動開關和 While循環的條件端子連接。8. 返回前面板,調用操作工具后單擊垂直開關將它打開。9. 把該 VI 保存為 LabVIEWActivity 目錄中的 Random Signal.vi 。10. 執行該VI。While循環的執行次數是不確定的,只要設置的條件為真,循環程序就會持續運行。在這個例子中,只要開關打開(TRUE,框圖程序就會一直產生隨機數,并將其在圖表中顯示。11. 單擊垂直開關,中止該

5、VI。關閉開關這個動作會給循環條件端子發送一個FALSE直,從而中止循環。12. 用鼠標右鍵單擊圖表,選擇Data OperationsoClear Chart,清除顯示緩存,重新設置圖表。練習2-1結束附注與說明布爾開關的機械動作:布爾開關有6種機械動作屬性可供選擇。在前面板上用鼠標右鍵單擊開關,在快捷菜單中選擇Mechanical Action就可以看到這些可選的動作。LabVIEW還提供了一個范例示范這些動作,它是位于Examples'General'Controlsbooleans.llb的 Mechanical Action ofBoolea ns.vi 。2.1.2

6、 移位寄存器(Shift Register)移位寄存器可以將數據從一個循環周期傳遞到另 外一個周期。在程序設計中,經常要用到它創建一 個移位寄存器的方法是,用鼠標右鍵單擊循環的左邊 _ 或者右邊,在快捷菜單中選擇Add Shift Register。如右圖所示。移位寄存器在流程圖上用在循環邊框上相應的一對端子來表示。右邊的端子中存儲了一個周期完成后 的數據,這些數據在這個周期完成之后將被轉移到左 邊的端子,賦給下一個周期。移位寄存器可以轉移各 種類型的數據-數值、布爾數、數組、字符串等等。IVisible Items|HelpDescription and Tip Set BreakpomtR

7、epUjce>Relive Yhih LoopAdd Shift RegisterStop If True7 CantLUiiLe If TrueBefore Loop BinsFirst IterationSub&equenl lleratinn呂L呂呂111總閔曲口圖2-3 Shift Register的工作過程它會自動適應與它連接的第一個對象的數據類型。下 圖表示了它的工作過程:可以令移位寄存器記憶前面的多個周期的數值。這個功能對于計算數據均值非常有用。 還可以創建其他的端子訪問先前的周期的數據,方法是用鼠標右鍵單擊左邊或者右邊的端 子,在快捷菜單中選擇 Add Eleme

8、nt。例如,如果某個移位寄存器左邊的端口含有三個元素, 那么就可以訪問前三個周期的數據。練習2-2使用移位寄存器目的:創建一個可以在圖表中顯示運行平均數的VI。1. 打開一個新的前面板,按照下圖所示創建對象。2. 把波形圖表的坐標范圍改為0.0到2.0。Mechanical Action? Latch3. 在添加豎直坐標之后,用鼠標右鍵單擊它,在快捷菜單中選擇When Pressed,再選擇 Operate?Make Current Values Default,把 ON 狀態設置為默認狀態。Boolean曰ON? ah金2.0 OFF走圭 £ ON Q ? 3-4 51 1.5La

9、tch WhenPressed1.00.50.0050圖2-4練習2-2的前面板流程圖4按下圖創建流程圖。0. 5圖2-4練習2-2的流程圖5. 在流程圖中添加 While循環(Functions?Structures),創建移位寄存器。a用鼠標右鍵單擊 While循環的左邊或者右邊,在快捷菜單中選擇Add Shift Register。b. 用鼠標右鍵單擊寄存器的左端子,在快捷菜單中選擇 Add Element,添加一個寄存器。用同樣的方法創建第三個元素。6. Random Number(O -)函數(Functions?Numeric )產生 0 到 1 之間的某個隨機數。7. Compo

10、und Arithmetic 函數(Functions?Numeric )在本練習中,它將返回兩個周期產生的隨機數的和。如果要加入其他的輸入,只需用右鍵單擊某個輸入,從快捷菜單中選擇Add In put。8. 除法函數(Functions?Numeric)在本練習中,它用于返回最近四個隨機數的平均值。9. 數值常數(Functions?Numeric) 在 While 循環的每個周期, Random Number(0 -)函 數將產生一個隨機數。 VI就將把這個數加入到存儲在寄存器中的最近三個數值中。RandomNumber(0 -)再將結果除以4,就能得到這些數的平均值(當前數加上以前的三個

11、數)。然后再將這個平均值顯示在波形圖中。10. Wait Un til Next ms Multiple 函數(Functions?Time&Dialog )它將確保循環的每個周期不會比毫秒輸入快。在本練習中,毫秒輸入的值是500毫秒。如果用鼠標右鍵單擊圖標, 從快捷菜單中選擇 Visible?Label,就可以看到 Wait Un til Next ms Multiple 的標簽。11.用鼠標右鍵單擊 Wait Until Next ms Multiple功能函數的輸入端子,在快捷菜單中選擇 Create Constant。出現一個數值常數,并自動與功能函數連接。12將Constan

12、t設置為500。這樣連接到函數的數值常數設置了500毫秒的等待時間。因此循環每半秒執行一次。注意,VI用一個隨機數作為移位寄存器的初始值。如果沒有設置移位寄存器端子的初始值,它就含有一個默認的數值,或者上次運行結束時的數值,因此開始得到的平均數沒有任何意義。13執行該VI,觀察過程。14.把該 VI 保存為 LabVIEWActivity 目錄下的 Random Average.vi。練習2-2結束。附注:移位寄存器的初值:上面的練習中對移位寄存器設置了初值 0.5。如果不設這個初值,默認的初值是0。在 這個例子中,一開始的計算結果是不對的, 只有到循環完3次后移位寄存器中的過去值才填 滿,即

13、第4次循環執行后可以得到正確的結果。2.1.3 For 循環For循環用于將某段程序執行指定次數。和While循環一樣,它不會立刻出現在流程圖中,而是出現一個小的圖標,而后您可以修改它的大小和位置。具體的方法是,先單擊所有 端子的左上方,然后按下鼠標,拖曳出一個包含所有端子的矩形。釋放鼠標時就創建了一個指定大小和位置的 For循環。For循環將把它的框圖中的程序執行指定的次數,For循環具有下面這兩個端子:N:計數端子(輸入端子)一一用于指定循環執行的次數。I:周期端子(輸出端子)一一含有循環已經執行的次數。上圖顯示了一可以產生 100個隨機數并將數據顯示在一個圖表上的For循環。在該例中,i

14、的初值是0,終值是99。練習2-3使用For循環目的:用For循環和移位寄存器計算一組隨機數的最大值。1. 打開一個新的前面板,按照下圖創建對象。a. 將一個數字顯示對象放在前面板,設置它的標簽為“最大值”。b. 將一個波形圖表放在前面板,設置它的標簽為“隨機數”。將圖表的縱坐標范圍改為0.0 到 1.0。c. 在圖表的快捷菜單中選擇Visible ItemsoScrollbar 和 Digital Display ,并隱藏Plot Lege nd 。d. 用移位工具修改滾動欄的大小。0.0-050*PTl4MduJYTime40盤大值1 00圖2-5練習2-3的面板和流程圖2. 按照上圖畫流

15、程圖。3. 在流程圖中放置一個 For循環(FunctionsoStructures )。4. 在For循環的邊框處單擊鼠標右鍵,在快捷菜單中選擇Add Shift Register 。5. 將下列對象添加到流程圖。a. Random Number(0 - 1)函數(Functi onsoNumeric )產生 0 到 1 之間的某個隨機數。b. 數值常數(FunctionsoNumeric )在這個練習中需要將移位寄存器的初始值設成0。c. Max&Min函數(FunctionsoComparison )輸入兩個數值,再將它們的最大值輸出到右上角,最小值輸出到右下角。這里只需要最大值

16、,只用連接最大值輸出。d. 數值常數(FunctionsoNumeric )For循環需要知道需要執行的次數。本練習中是100次。6. 按照上圖連接各個端子。7. 運行該VI。8. 將該 VI 保存為 LabVIEWActivity目錄下的 Calculate Max.vi 。練習2-3結束。2.2分支結構:CaseCase結構含有兩個或者更多的子程序(Case),執行那一個取決于與 選擇端子或者選擇對象的外部接口相連接的某個整數、布爾數、字符串或者標識的值。必須選擇一個默認的Case以處理超出范圍的數值,或者直接列出所有可能的輸入數值。Case結構見下圖,各個子程序占有各自的流程框,在其上沿

17、中央有相應的子程序標識:Ture、False或1、2、3,。按鈕用來改變當前顯示的子程序(各子程序是重疊放在屏幕同一位置上的)。練習2-4使用Case結構目的:創建一個VI以檢查一個數值是否為正數。如果它是正的,VI就計算它的平方根,反之則顯示出錯。前面板并按照下圖所示創建對象。控制對象用于輸入數值,顯示對象用于1. 打開一個新的前面板, 顯示該數值的平方根。 流程圖2. 照下圖創建流程圖。NumberNumber慘 =叭INumberSQRT諮001.41圖2-6練習2-4的面板和流程圖3.從FunctionsoStructures中選擇一個 Case結構,并放置在在流程圖中。 Case結構

18、是個可以改變大小的方框。先來做Ture的情況,照流程圖上半部分構造。a. Greater Or Equal To 0?函數(FunctionsoComparison )如果輸入數值大于或者等于0就會返回一個TRUE®。b. Square Root 函數(FunctionsoNumeric )返回輸入數值的平方根。c. 連好線d. 點擊Case框的選擇按鈕,轉入 False情況編程e. 數值常數(FunctionsoNumeric )這里用于顯示錯誤的代數值-999.00 。在這里它用于顯円彳在對話框中輸入字符串。f. One Button Dialog 函數(FunctionsoTi

19、me&D ialog )-示一個對話框,內容是Error.。g. 字符串常數(FunctionsoString)用 Edit Text Toolsh.該VI在TRUE或者FALSE情況下都會執行。如果輸入的數值大于等于0, VI會執行TRUE Case返回該數的平方根,否則將會輸出999.00,并顯示一個對話框,內容為Error.4. 返回前面板,運行該 VI。修改標簽為Number的數字式控制對象的數值,分別嘗試一個正數和負數。注意,當把數字式控制對象的值改為負數時,LabVIEW會顯示Case結構的FALSECase中設置的出錯信息。5. 保存該 VI 至U LabVIEWActi

20、vity 目錄中的 Square Root.vi 。VI的算法本練習中的流程圖功能相當于代碼式編程語言中的下列偽代碼:if(Number>=0)the nSquare Root Value=SQRT(Number)elseSquare Root Value=-999.00Display Message"Error."end if練習2-4結束。2.3順序結構和公式節點2.3.1 順序結構(Sequenee Structure )在代碼式的傳統編程語言中,默認的情況是,程序語句按照排列順序執行,但LabVIEW中不同,它是一種圖形化的數據流式編程語言。在圖2-7左圖中,

21、假設有 A B、C、D4個節點,其數據流向如右圖所示。按照數據流式語言的約定,任何一個節點只有在所有1 0.J匚匚:口的輸入數據有效時才會執行,所以圖中,當且僅當A B、C3個節點執行完,使得 D節點的3個輸入數據都到達 D節點后,D節點才執行。但是你要注意,這里并沒有規定A、B C3個節點的執行順序。在 LabVIEW中這種情況下,A、B、C的執行順序是不確定的,如果你需 要對它們規定一個確定的順序,那就需要使用本節介紹的“順序結構”。圖2-7中的右邊是順序結構的圖標,它看上去像是電影膠片。它可以按一定順序執行多個子程序。首先執行 0幀中的程序,然后執行 1幀中的程序,逐個執行下去。與Cas

22、e結構 類似,這多幀程序在流程圖中占有同一個位置。練習2-5使用順序結構目的:創建一個 VI,計算生成等于某個給定值的隨機數所需要的時間。1打開一個新的前面板,并按照下圖所示創建對象。? ?忙 Y? D ?忙理? ± ? ?壬± ? ?L5060.00圖2-8練習2-5的前面板“執行次數”我們約定數據是0到100范圍的整數。當前值用于顯示當前產生的隨機數。 用于顯示達到指定值循環執行的次數。匹配時間用來顯示達到指定值所用的時間。流程圖口口匸 口口口 h Cl Q .匸卜 口口口 口口口|喚取初始時間 Z1 匚口 口 二I 口口 口=1口=1 口 口匹配計算|wOhOO|當前

23、上nfti 1愕定數據1飆行次數 |l»b> JI1|him 3-"口 口 tJtJ 口口 tJtJ 百 I 0.2 沖口 口 口 !口 口 口 口 口 計算延時時間【秒 口匚口口 口 口 口口口口圖2-8練習2-5的流程圖(共3幀)2. 在流程圖中放置順序結構 (FunctionsoStructures)。3. 用鼠標右鍵單擊幀的邊框,在快捷菜單中選擇Add Frame After,創建一個新幀。重復這個步驟,再創建一個幀。共3楨。4. 選中第0楨,設置讀取初始時間(子)程序5. 第0幀的下邊框上含有一個小方框,其中有一個箭頭。這個方框叫做順序局部變量,可以在同一個

24、順序結構中的各個幀之間傳遞數據。用鼠標右鍵單擊第0幀的底部邊框,選擇 AddSequenee Local,創建順序局部變量。順序局部變量顯示為一個空的方塊。當您將某個功能 函數與順序局部變量相連時,方塊中的箭頭就會自動顯示。6. Tick Count(ms)函數(FunctionsoTime&Dialog )返回啟動到現在的時間(以毫秒為單位)。在這里例子里需要使用兩個這個函數。另一個在第2幀中。.7. 按圖連好線。轉入第 1幀。該幀是匹配計算,內含一個循環結構。該圖中使用的 新函數有:1 ' Round to Nearest 函數(FunctionsoNumeric )在該例

25、中,它用于取0 到 100 之間的隨機數到距離最近的整數。卜"Not Equal?函數(Functionso Comparison )在該例中,它將隨機數和前面板中設置的數相比較,如果兩者不相等會返回TRUE®,否則返回FALSEN In creme nt函數(Fu nctio nsoNumeric )在該例中,它將 While循環的計數器加 1。8. 按圖連好線。轉入第 2幀在第0幀中,Tick Count (ms)功能函數將以毫秒為單位表示當前時間。這個數值被連到順 序局部變量,這樣它就可以被后續的幀使用。在第1幀中,只要函數返回的值與指定值不等,VI就會持續執行 Wh

26、ile循環。在第2幀中,Tick Count ( ms)功能函數以毫秒為單位返回 新的時間。VI從中減去原來的時間(由第 0幀通過順序局部變量提供)就可以計算出花費 的時間。9. 返回前面板,在 Number to Match控制對象中輸入一個數值,執行該 VI。10. 把該 VI 保存為 LabVIEWActivity 目錄下 Time to Match.vi 。練習2-5結束。附注與說明:設置數據范圍Data Ra nge,選項,在設定一個數據對象時,可以設置對輸入數據的限制,利用快捷鍵選擇 將會出現如下對話框:Data RangeRep resent ationLongIf Value

27、is Out of Range:SuspendUse Default ValuesOKCancel圖2-9設置數據范圍它可以防止用戶創建的控制對象或顯示對象的值超出某個預設的范圍。您可以選擇忽略這個值,將它強制修改到范圍以內,或暫停程序的執行。在程序執行時,如果發生溢出錯誤,溢 出錯誤符號將顯示在工具欄中的執行按鈕的位置。而且,一個立體的黑框將把發生溢出的控制對象包圍起來。2.3.2 公式節點(Formula Node)公式節點是一個大小可變的方框,可以利用它直接在流程圖中輸入公式。從 Fun ctio nsoStructures中選擇公式節點就可以把它放到流程圖中。當某個等式有很多變量或者非常復雜時,這個功能就非常有用。例如等式:y=x2+x+1使用公式節點可以表示為:y=WM2tx+L:JEFormule Node圖2-10 公式節點示意圖Idbu利用公式節點可以直接輸入一個或者多個復雜的公式,而不用創建流程圖的很多子程 序。使用文本編輯工具來輸入公式。創建公式節點的輸入和輸出端子的方法是,用鼠標右鍵單擊第0幀的底部邊框,選擇 Add Input(Add Output)。再在節點框中輸入變量名稱。變量 名對大小寫

溫馨提示

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

評論

0/150

提交評論