




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第4章結構控制4.1循環結構4.2條件結構4.3事件結構4.4順序結構4.5公式節點綜合實訓小結習題
LabVIEW中所有的結構都包含在“結構”子選板中,如圖4-1所示。圖4-1“結構”子選板
4.1循環結構
4.1.1For循環1.For循環建立“For循環”(ForLoop)是LabVIEW最基本結構之一。在程序框圖中創建For循環方法:在函數選板中的“編程”(Program)下的“結構”(Structures)子選板中,用鼠標點擊“For循環”圖標,然后在程序框圖窗口中需要創建的空白區域再單擊鼠標,同時按住鼠標向右下角拖曳到合適大小即可,如圖4-2所示。圖4-2For循環的建立
圖4-3所示為使用For循環索引隨機數(RandomNumber)的程序,程序按照設定的總數執行了50次,即由波形圖表顯示出50個隨機數圖形,程序執行完畢,計數接線端輸出顯示為49。
圖4-3使用For循環索引隨機數的程序
2.For循環的數據通道及自動索引
For循環的數據通道(DataCommunication)是循環體內的數據與循環體外的數據(輸入/輸出)進行交換的通道,所有結構要通過數據通道才能和外部節點進行數據交換。數據通道位于邊框上,其顯示形式為小方格,小方格的顏色和數據類型的系統顏色一致,若為浮點數,則數據通道的顏色為橙色。
通道有輸入數據通道和輸出數據通道,以圖4-4為例說明數據通道的創建方法:選擇“連線工具”,將程序框圖界面中數組常量連接至For循環左側循環體邊框后,系統會自動生成數據通道。該例中,連接到For循環的數組默認為能自動索引,即循環體邊框外面的數組元素依次進入到循環邊框內;若不需要索引,可以右擊循環體邊框上的數據通道,選擇“禁用索引”(DisableIndexing)命令,則連接到循環體的數組默認為不能自動索引,如果需要自動索引;可以在數據通道上單擊右鍵,選擇“開啟自動索引”(EnableIndexing)。“開啟自動索引”時,數據通道的外觀為空的矩陣符號[];“禁用索引”時,數據通道的外觀為實心的方框。
圖4-4所示為索引二維數組(2DArray)程序,程序中使用了兩個嵌套的For循環;外層的For循環每執行一次則從輸入的二維數組中索引出一行數組,里層的For循環則是每執行一次再從剛生成的一維數組(1DArray)中索引出一個數據元素。圖中嵌套的兩個For循環均未連接計數接線端,此時For循環執行的次數等于數組的長度,即循環一直執行至所有元素索引完畢為止。
圖4-4使用For循環索引二維數組程序
圖4-5所示為使用For循環生成二維數組程序,程序中也使用了兩個嵌套的For循環:里層的For循環通過4次執行得到的循環數累積輸出一個一維數組0~3;外層的For循環依次為這個數組中的各個元素加上當前循環計數,再將6次循環產生的6個一維數組累積成二維數組輸出,輸出結果同圖4-4中的二維數組相同。
圖4-5使用For循環生成二維數組程序
3.移位寄存器與反饋節點
1)移位寄存器
利用移位寄存器(ShiftRegister)可以把上一次循環中產生的數據傳遞到下一次循環。移位寄存器是成對出現的,分別出現在循環體邊框的兩個垂直邊上。
移位寄存器創建方法:在循環邊框上單擊右鍵,從彈出快捷菜單中選擇“添加移位寄存器”(AddRegister)可創建一對移位寄存器,如圖4-6所示。也可以創建多個左側移位寄存器,但是只能有一個右端口。添加左側端口的方法有兩個:一是在移位寄存器上單擊右鍵,從快捷菜單選擇“添加元素”(AddElement)來增加數據終端;二是直接對寄存器上的左側端口進行拖曳。
圖4-6添加移位寄存器
新創建移位寄存器出現在兩個垂直邊框上,是顏色為黑色的相對的端口,當將其連接到相應的數據上時,才會顯示相應數據的顏色,如圖4-7所示。圖4-7用移位寄存器求隨機數的最大值
2)反饋節點
前、后兩次數據的交換,除使用移位寄存器實現外,還可以使用反饋節點來實現。當一次循環完成后,反饋節點會保存相應數據,并傳遞到下一次循環;即移位寄存器和反饋節點的功能是相似的,當For循環的邊框太大時,使用移位寄存器會造成過長的連線,而反饋節點的優點在于可以節省掉過長的連線,使程序看上去更加簡潔。
反饋節點位于函數選板中的“編程”下的“結構”子選板中,如圖4-8所示。
圖4-8自動創建反饋節點
4.?For循環應用實例
例4-1使用For循環創建程序,完成從1~100這100個數相加求和,如圖4-9所示。圖4-91~100求和程序框圖
解創建步驟如下:
(1)前面板窗口創建一個數值顯示控件,在該控件上單擊右鍵彈出快捷菜單,從“表示法”(Representation)中選擇“I32”。
(2)創建一個For循環,為其設定的循環總數為100。
(3)添加一對移位寄存器,為左側的端子賦初始值為0。
(4)添加“加法”(Add)函數,將該函數的一個輸入端與移位寄存器的左側輸出端相連。
(5)將循環次數i接入“加1”(Increment)函數的輸入端,并將“加1”函數的輸出端連接至“加法”函數的另一個輸入端。
(6)將“加法”函數的輸出端與移位寄存器的右側端子的輸入端相連。
(7)將移位寄存器右側端子的輸出端與數值顯示控件的接線端連接。
4.1.2While循環的組成
“While循環”(WhileLoop)是一種條件循環,循環會控制程序反復執行一段代碼,直到某個條件成立發生為止。
1.While循環建立
建立While循環的方法與For循環是一樣的,在函數選板的“編程”下的“結構”子選板中,單擊鼠標選中“While循環”圖標,然后在程序框圖窗口中需要創建的空白區域再單擊鼠標,同時按住鼠標向右下角拖曳到合適的大小即可,如圖4-10所示。由圖可見,循環框不是閉合的,并有代表重復執行的箭頭。
圖4-10While循環結構圖
While循環有兩個固定的接線端:計數接線端是一個輸出接線端,它輸出循環當前執行的次數,循環數是從0開始計數的;條件接線端是一個布爾量輸入接線端,程序在每次循環結束時檢查條件接線端,因此,布爾量的值將控制循環是否繼續執行。“條件接線端”的條件有兩種,這兩種條件可以在端口上單擊右鍵所彈出的快捷菜單中進行轉換,如圖4-11所示。條件接線端默認的狀態為“真(T)時停止”(StopifTrue),即條件接線端的布爾量為“真”時退出循環,如圖4-11(a)所示;如果將條件接線端的狀態改為“真(T)時繼續”(ContinueifTrue),則條件接線端的布爾量為“假”時退出循環,如圖4-11(b)所示。如果條件接線端連接的是一個按鈕,則按鈕按下時循環停止。
圖4-11While循環條件接線端
2.?While循環應用實例
例4-2使用While循環創建程序,實現0~100這100個數相加求和。
解程序框圖如圖4-12所示。
創建步驟參考例4-1,這里稍有不同:
(1)創建一個While循環,其循環次數用一個“大于等于?”函數來確定,i≥100時退出循環。
(2)使用反饋節點代替移位寄存器。
運行該程序,前面板中顯示控件的顯示結果應為5050。
圖4-121~100求和程序框圖
4.2條件結構
“條件結構”(CaseStructure)類似于文本編程語言中的switch語句、ifelse語句或者case語句。條件結構包含兩個或兩個以上子程序框圖,每個子程序框圖中的一段程序代碼對應一個條件分支,條件結構每次只能看到一個子程序框圖,即每次程序運行時只選擇其中的一個框圖執行,執行其中的哪一個子程序框圖是由輸入值決定的。
4.2.1條件結構創建
條件結構的創建同循環結構相同,在函數選板的“編程”下的“結構”子選板中選擇“條件結構”圖標即可。條件結構由選擇器標簽(CaseSelectorLabel)、分支選擇器(SelectorTerminal)和分支子程序框圖組成,如圖4-13(a)所示。
子框圖的數量根據實際需要確定,下面舉例說明如何將選擇器與選擇器標簽相匹配。當枚舉型控件連接到選擇器接線端時,選擇器標簽會自動轉換為兩個字符串。當為該枚舉型控件設定幾個枚舉型值后,在條件結構邊框上單擊右鍵,彈出的快捷菜單上選擇“為每個值添加分支”(AddCaseForEveryValue)命令,就會增加到幾個子程序框圖,如圖4-13(b)所示。圖4-13條件結構選擇器標簽
需要注意的是,選擇器接線端的數據類型必須與選擇器標簽中的數據類型一致,如果不一致,LabVIEW則會自動報錯,同時選擇器值中的字體顏色變為紅色,提示必須修改,否則程序將無法執行。不同數據類型的條件結構如圖4-14所示,其中布爾型條件結構如圖4-14(a)所示,整型數條件結構如圖4-14(b)所示,字符串型條件結構如圖4-14(c)所示,枚舉型條件結構如圖4-14(d)所示。
圖4-14不同數據類型的條件結構
4.2.2條件結構的數據輸入和輸出通道
當向“條件結構”內引入連線或從“條件結構”向外引出連線時,會在邊框上生成隧道;當向“條件結構”隧道輸入數據時,所有分支都可以使用該數據,所有的分支各個子程序框圖連接或不連接這個數據的隧道都可以。但是從“條件結構”邊框向外輸出數據時,各個子程序框圖都必須為這個隧道連接數據,否則會出現代碼錯誤,程序無法運行。此時,輸出隧道的圖標是空心,表示部分分支中沒有接入輸入值。當每個分支的輸出隧道都連接好數據時,輸出隧道才會變為實心,程序才能正常運行。
4.2.3條件結構應用實例
例4-3求一個數的平方根,若該數大于等于0,則計算該數的平方根并輸出計算結果;若該數小于0,則輸出錯誤的數值為-9999。
解創建步驟如下:
(1)前面板窗口創建一個數值輸入控件和數值顯示控件。
(2)程序框圖中創建一個條件結構,其子框圖為“真”和“假”兩個。
(3)將數值型輸入控件的接線端與條件結構連接,生成隧道。
(4)使用“大于等于?”函數,將數值與0進行比較,該函數的輸出端接入分支選擇器。
(5)在“真”子框圖中添加“平方根”函數,其輸入端連接左側隧道,輸出端連接到“條件結構”右側邊框產生隧道。
(6)在“假”子框圖中添加“數值常量”,并為其賦值?-9999。
運行該程序,前面板中顯示控件的顯示結果如圖4-15所示。
圖4-15例4-2前面板及程序框圖
4.3事件結構
所謂事件,是指發生了某種事情的通知。事件可以來自于用戶界面、外部I/O或者其他方式。LabVIEW支持兩種來源的事件:(1)用戶界面事件。(2)編程生成事件。
圖4-16為事件結構,圖中各部分含義為:
(1)事件超時接線端(TimeoutTerminal):用來設定超時時間,其接入數據是以毫秒為單位的整數值。
(2)選擇器標簽(SelectorLabel):標識當前顯示的子框圖所處理事件的事件源。
(3)事件數據節點(DataNode):為子框圖提供所處理事件的相關數據,事件數據節點由若干個事件數據端子構成。
編輯事件結構的方法:在“事件結構”邊框上單擊右鍵彈出快捷菜單,如圖4-17所示,選擇“添加事件分支”(AddEventCase)選項,可以彈出“編輯事件”對話框,如圖4-18所示。“編輯事件”對話框內包括事件說明符、事件源和事件三部分。
圖4-17事件結構添加分支
圖4-18“編輯事件”對話框
4.4順序結構
4.4.1平鋪式順序結構1.平鋪式順序結構建立“平鋪式順序結構”(FlatSequenceStructure)位于函數選板“編程”下的“結構”子選板中,選擇其下拉菜單中的“平鋪式順序結構”對象,拖至程序框圖中,按住鼠標左鍵,向右下方拖動到所需大小后松開按鍵,即可創建一個平鋪式順序結構,如圖4-19(a)所示。
新建好的平鋪式順序結構只有一幀,可以通過單擊鼠標右鍵,在出現的快捷菜單中選擇“在后面添加幀”(AddFrameAfter)選項或者“在前面添加幀”(AddFrameBefore)選項進行子框圖的添加,通過拖動框圖四周的箭頭可以改變框圖大小。添加好的順序結構如圖4-19(b)所示。
圖4-19平鋪式順序結構
2.平鋪式順序結構數據傳遞
平鋪式順序結構中,兩個幀之間的數據傳遞可以通過直接連線的方式來實現,連線經過兩幀連接處時將產生一個小方塊,稱為隧道,數據通過隧道進行傳輸。如圖4-20(a)所示,在第0幀創建了一個“字符串常量”(Stringconstant),連線經過第1幀直接傳輸到第2幀,運行之后輸出顯示為“LabVIEW”(如圖4-20(b)所示)。
圖4-20平鋪式順序結構數據傳遞
4.4.2層疊式順序結構
1.層疊式順序結構建立
在LabVIEW2015集成開發環境中,不能直接創建“層疊式順序結構”(StackedSequenceStructure),但“層疊式順序結構”可以通過“平鋪式順序結構”轉換而來。在“平鋪式順序結構”對象中,單擊鼠標右鍵,在出現的快捷菜單中選擇“替換為層疊式順序”(ReplacewithStackedSequence),即可創建“層疊式順序結構”,如圖4-21(a)所示。層疊式順序結構添加幀的方法同平鋪式順序結構相同,但每次只能看到一個子框圖,按照子框圖0、1、2的順序執行;單擊頂部的順序選擇標識符左右兩側的箭頭,可以增加或減少子框圖的序號。圖4-21(b)為添加好的層疊式順序結構的每一個子框圖。
圖4-21層疊式順序結構
2.層疊式順序結構數據傳遞
在層疊式順序結構中,兩個幀之間的數據傳遞不能通過直接連線的方式來實現,必須要借助“局部變量”(LocalVariable)來實現。建立“局部變量”的方法是:在“順序結構”的邊框上單擊鼠標右鍵,在彈出的快捷菜單中選擇“添加順序局部變量”(AddSequentialLocalVariables)選項,此時在彈出快捷菜單的位置會出現一個小方框,小方框的顏色會隨傳輸數據類型的系統顏色發生變化。為這個小方框連接數據后,它的中間會出現一個指向順序結構框的箭頭,此時數據已經存儲到順序局部變量中。
圖4-22(a)中,第0幀輸入字符串創建了一個“字符串常量”,該常量存儲于該子框圖的順序局部變量中,數據經過第1幀向第2幀傳輸時,此時第2幀必須也要創建順序局部變量才能進行數據接收;創建后小方框中的箭頭方向指向外,表明數據傳輸方向指向字符串顯示控件,運行之后輸出顯示為“LabVIEW”,如圖4-22(b)。
圖4-22層疊式順序結構數據傳遞
例4-4使用順序結構實現由“隨機數”函數產生0~1的隨機數,計算出這些隨機數的平均值達到0.5所用的時間,同時顯示出隨機數累加值、循環次數。
解該程序使用順序結構來實現,這里選用“層疊式順序結構”,該順序結構共有3幀,每一幀具體編輯如下:
(1)第0幀中放置一個時間計數器。時間計數器返回計算機開機到當前的時間,時間單位為毫秒。
(2)第1幀中使用移位寄存器將連續產生的隨機數進行累加,用累加值除以循環次數,則可得到這些隨機數的平均值。將該平均值直接送入“判定范圍并強制轉換”(InRangeandCoerce)函數,比較它是否在0.5000~0.5001范圍內,如果在此范圍內,則退出循環。
(3)第2幀中放置一個時間計數器。用當前時間值減去程序開始運行的時間,即可得到程序運行所消耗的時間。
運行程序,觀察前面板的顯示結果,如圖4-23所示。
圖4-23例4-4的程序框圖
4.5公式節點
在程序設計中,如果復雜的運算完全依賴于圖形代碼來實現,工作量會比較大,而且程序框圖也會顯得十分復雜、不直觀,調試也不方便。LabVIEW提供了一種專門用于編輯、處理數學公式的結構形式,稱為公式節點。在公式節點內,可以直接輸入數學公式或者方程式,并連接相應的輸入、輸出端口。
公式節點適合于含有多個變量和較為復雜的方程,以及對已有代碼的利用。可通過復制、粘貼的方式將已有的文本代碼移植到公式節點中,無需通過圖形化的編程語言再次創建相同的代碼。
4.5.1公式節點的建立
在函數選板的“編程”下的“結構”子選板中,選擇“公式節點”(FormulaNode)拖至程序框圖空白處,按住鼠標左鍵,向右下方拖動到所需大小后松開按鍵,即可創建一個公式節點,如圖4-24所示。
圖4-24公式節點
4.5.2公式節點的編輯
公式節點中的代碼看上去就像一小段C語言的程序。公式節點中也可以聲明變量,可以使用C語言的語法,可以加語句注釋,每個公式語句也是以分號結束。公式節點的變量可以與輸入/輸出接線端連線無關,但是變量不能有單位。
需要輸入變量時,使用鼠標右鍵單擊“公式節點”邊框,在彈出的快捷菜單中,選擇“添加輸入”即可添加一個輸入變量,選擇“添加輸出”即可添加一個輸出變量。輸入和輸出變量位于節點框上,可以沿節點框四周移動,在變量中添加變量名,即可完成變量的定義。圖4-25所示的公式節點中定義了“x”“m”“n”三個輸入變量和一個輸出變量“y”。使用鼠標右鍵單擊變量,在彈出的快捷菜單中選擇“刪除”即可刪除該變量。
例4-5如圖4-25所示,使用公式節點完成數學運算,x>0,y?=?2mx2?-?3nx?+?1和x≤0,y?=?-mx2?+?2x?-?3。圖4-25使用公式節點完成數學運算
綜合實訓
1.前面板創建函數發生器程序的前面板如圖4-26所示。
圖4-26函數發生器程序的前面板
(1)打開一個新的前面板窗口。
(2)按題目要求添加控件到前面板。
①依次添加信號頻率、采樣頻率、采樣點數、幅度、相位、占空比等數值型輸入控件對象。
②按圖4-26所示添加兩個布爾型控件。
③添加波形圖表。
④添加信號源控件。
首先在枚舉型控件中鍵入“正弦波”,然后在控件上單擊右鍵,從彈出的下拉菜單中選擇“在后面添加項”,如圖4-27所示。重復此操作,直至三角波、方波和鋸齒波全部鍵入。
圖4-27信號源控件的項目添加
2.程序框圖創建
函數發生器的程序框圖如圖4-28所示。圖4-28函數發生器的程序框圖
(1)條件結構包含有不同的程序,它僅僅執行所選定情況下的子程序。
(2)將信號源與條件結構相連,在缺省條件下,條件結構只有兩種情況。在此例中信號源枚舉控制包含四種元素,則必須添加兩種以上情況到條件結構。即用鼠標右鍵點擊條件結構并從彈出菜單中選擇“在后面添加”重復執行上述操作,以得到所需的情況。
(3)關于采樣頻率的創建。首先在采樣頻率上單擊右鍵,從彈出的下拉菜單中選擇“創建”→“局部變量”,即可創建,但注意此時得到的函數是顯示量,需要右鍵轉化為輸入量。
(4)添加波形發生器到條件結構的各個情況。單擊子程序顯示條兩側的增加或減少箭頭,以在不同情況直接轉換。
①添加正弦波VI到正弦波情況結構,從“信號處理”(SignalDispose)的“信號生成”(SignalGeneration)中選擇“正弦波”(Sine)得到,如圖4-29(a)所示。使用連線工具將“正弦波”的連線端點分別與采樣
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025春季建投國電準格爾旗能源有限公司招聘31人(內蒙古)筆試參考題庫附帶答案詳解
- 青海警官職業學院《健康經濟學》2023-2024學年第二學期期末試卷
- 黑龍江職業學院《計算機網絡基礎》2023-2024學年第二學期期末試卷
- 上海科學技術職業學院《半導體材料分析測試實驗》2023-2024學年第二學期期末試卷
- 重慶旅游職業學院《汽車新能源與節能技術》2023-2024學年第二學期期末試卷
- 武漢交通職業學院《半導體物理學》2023-2024學年第二學期期末試卷
- 阿勒泰職業技術學院《工程項目管理及監理概論》2023-2024學年第二學期期末試卷
- 濱州職業學院《媒介通論》2023-2024學年第二學期期末試卷
- 西南民族大學《中學思想政治課程標準解讀與教材分析》2023-2024學年第二學期期末試卷
- 江西中醫藥大學《傳統民居與鄉土建筑》2023-2024學年第二學期期末試卷
- 大學生建筑類創業項目
- 醫院藥品二級庫房管理
- 自體輸血知識培訓課件
- 《無人機操控基礎》課件
- 檢測糖化白蛋白臨床意義
- 2025年湖北省新華書店(集團)限公司招聘(93人)高頻重點提升(共500題)附帶答案詳解
- 鈹箔及鈹合金箔行業行業發展趨勢及投資戰略研究分析報告
- 女小學生關于月經的課件
- 2024年中考地理專項復習:材料分析題(解析版)
- 應急廣播終端安裝施工規范
- 以“蛋白質”為主線的單元境脈設計與教學重構
評論
0/150
提交評論