




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第2章 程序結構第第2 2章章 程序結構程序結構2.1 循環(huán)結構循環(huán)結構 2.2 分支結構分支結構 2.3 順序結構順序結構 2.4 公式節(jié)點公式節(jié)點 習題習題2 第2章 程序結構 本章將系統(tǒng)介紹LabVIEW提供的程序結構,包括While Loop(While循環(huán))、For Loop(For循環(huán))、Shift Register(移位寄存器)、Case Structure(分支結構)、Sequence Structure(順序結構)、Formula Node(公式節(jié)點)等。第2章 程序結構2.1 循循 環(huán)環(huán) 結結 構構在LabVIEW中有While循環(huán) 和 For循環(huán) 兩種循環(huán)結構。二者的區(qū)別
2、是:While循環(huán)只要滿足循環(huán)退出的條件則退出相應的循環(huán),否則變成死循環(huán);而For循環(huán)是預先確定循環(huán)次數(shù),當循環(huán)體運行完指定的次數(shù)后自動退出循環(huán)。2.1.1 While循環(huán)循環(huán)While循環(huán)是LabVIEW最基本的結構之一。當不需要指定循環(huán)次數(shù)時,使用While循環(huán)。圖2-1(a)所示為FunctionsExecution Control子模板,While循環(huán)是第一個模塊;圖2-1(b)所示為FunctionsStructures子模板,While循環(huán)在第二行的第二個模塊。二者的不同之處在于,Execution Control子模板中的While循環(huán)的Loop Condition數(shù)據(jù)端子已經(jīng)事
3、先連接了布爾型變量,用于控制何時退出循環(huán)。第2章 程序結構圖2-1 While循環(huán)的位置第2章 程序結構建立While循環(huán)的方法是,在函數(shù)模板中的Structures子模板中選擇While循環(huán)對象,把鼠標移動到框圖上,鼠標指針變成縮小的While循環(huán)的樣子,按下左鍵拖拽出虛線框,松開鼠標左鍵后,While循環(huán)放置完畢。While循環(huán)有兩個固定的數(shù)據(jù)端子,分別是重復端子(Loop Iteration)和條件端子(Loop Condition)。重復端子表示當前循環(huán)的次數(shù),初始值是0。條件端子連接一個布爾型變量,指示循環(huán)退出或循環(huán)繼續(xù)的條件。具體的循環(huán)繼續(xù)的條件有兩種,即Stop if True
4、和Continue if True ,具體采用哪種方式可在條件端子上彈出的快捷菜單里指定,也可以使用操作工具在端子上單擊鼠標,以切換兩種不同的條件。條件不同,端子的圖標也不同,默認是Stop if True。第2章 程序結構While循環(huán)可以進行嵌套。【例2.1】 使用While循環(huán)每0.5秒顯示一個隨機數(shù)和循環(huán)次數(shù),最后波形顯示所有隨機數(shù)序列。VI的前面板和程序框圖如圖2-2所示,While循環(huán)條件端子與布爾開關對象相連,只要開關狀態(tài)為“關”,程序重復執(zhí)行,直到條件端子為“開”,停止循環(huán)。While循環(huán)框內(nèi)放置一個隨機數(shù)對象和Time Delay Express VI,每0.5秒循環(huán)一次,在
5、前面板顯示隨機數(shù)和循環(huán)次數(shù),最后利用While循環(huán)的自動索引功能將隨機數(shù)序列通過波形顯示出來,可以看到,波形的橫坐標表示循環(huán)次數(shù),當循環(huán)次數(shù)為115時,隨機數(shù)加1是1.38577。第2章 程序結構圖2-2 例2.1的前面板和程序框圖第2章 程序結構2.1.2 移位寄存器移位寄存器使用移位寄存器將上一次循環(huán)的值傳給下一次循環(huán)。添加移位寄存器的方法是:在循環(huán)結構的左邊或右邊框上彈出快捷菜單,選擇菜單項Add Shift Register,可以添加一個移位寄存器,如圖2-3所示。新添加的移位寄存器由左、右兩個端子組成,都是黑色邊框、黃色底色,而且左、右端子分別有一個向下和向上的黑色黑色箭頭。此時,表
6、明移位寄存器中沒有接入任何數(shù)據(jù)沒有接入任何數(shù)據(jù)。當接入某種數(shù)據(jù)后,移位寄存器的顏色會發(fā)生相應的變化,以反映接入第2章 程序結構數(shù)據(jù)的類型。連接到同一個寄存器端子的數(shù)據(jù)必須是同一類型連接到同一個寄存器端子的數(shù)據(jù)必須是同一類型的的??梢詣?chuàng)建多個左側移位寄存器,但只能有一個右端子可以創(chuàng)建多個左側移位寄存器,但只能有一個右端子。添加左端子的方法是:用鼠標(定位工具狀態(tài))在左側移位寄存器的最下邊沿拖動,或在右鍵彈出快捷菜單中選擇Add Element,如圖2-4所示,這樣在多個左端子中保留前面多次循環(huán)的數(shù)據(jù)值。在左端子上,最近一次循環(huán)保留在右端子的數(shù)據(jù)進入最上面的端子,原來的數(shù)據(jù)依次向下存放,最下面端子
7、中的數(shù)據(jù)被拋棄。建議為移位寄存器的左端子指定初始化值為移位寄存器的左端子指定初始化值。第2章 程序結構圖2-3 為While循環(huán)添加移位寄存器第2章 程序結構圖2-4 添加多個左側移位寄存器第2章 程序結構圖2-5 移位寄存器中數(shù)據(jù)的操作流程第2章 程序結構刪除該寄存器端子:在移位寄存器的端子彈出快捷菜單,選擇Remove Element命令可以刪除該寄存器端子,這種方法無論所要刪除的左端子是否連有數(shù)據(jù)都可以。另外一種方法是使用定位工具拖拽整個左端子隊列的最上沿(向下拖)或者最下沿(向上拖)。在拖的過程中,若遇到連接數(shù)據(jù)線的端子,則只能拖到此處。左側移位寄存器除了初始化時可以輸入數(shù)據(jù)外,其他情
8、況只能輸出數(shù)據(jù),而右側移位寄存器除了在循環(huán)結束時輸出數(shù)據(jù)外,其他情況只能輸入數(shù)據(jù)。 第2章 程序結構【例2.2】 利用移位寄存器顯示多個數(shù)據(jù),理解數(shù)據(jù)在移位寄存器中的工作流程。VI的前面板和程序框圖如圖2-6所示,在While循環(huán)中使用移位寄存器訪問前三次的循環(huán)值。Ni表示循環(huán)次數(shù),此值在下一次循環(huán)開始傳給左端子。Ni-1表示前一次循環(huán)的值,Ni-2表示前兩次循環(huán)的值,Ni-3表示前三次循環(huán)的值。由于While循環(huán)重復端子的初始值為0,步長為1,因此前面板數(shù)字指示器按照逐漸遞增的順序依次顯示。第2章 程序結構圖2-6 例2.2的前面板和程序框圖第2章 程序結構2.1.3 For循環(huán)循環(huán)For循
9、環(huán)位于FunctionsStructures子模板上。For循環(huán)有兩個固定的數(shù)據(jù)端子,分別是計數(shù)端子(Loop Count)和重復端子(Loop Iteration),如圖2-8所示。其中計數(shù)端子連接整型數(shù)值,指定循環(huán)次數(shù);重復端子輸出已經(jīng)執(zhí)行循環(huán)的次數(shù),循環(huán)次數(shù)默認從“0”開始計數(shù),依次增加“1”?!纠?.3】 利用For循環(huán)計算100個隨機數(shù)的最大值。VI的前面板和程序框圖如圖2-9所示。隨機發(fā)生的數(shù)和前面循環(huán)得到的最大值依次比較,循環(huán)100次,比較得到01之間的最大值。在前面板顯示100個隨機數(shù)形成的曲線圖和最大值。第2章 程序結構圖2-7 For循環(huán)的位置 第2章 程序結構圖2-8 F
10、or循環(huán)的計數(shù)端子和重復端子 第2章 程序結構圖2-9 例2.3的前面板和程序框圖第2章 程序結構2.1.4 反饋節(jié)點反饋節(jié)點反饋節(jié)點(Feedback Node)用于將子VI、函數(shù)或一組子VI和函數(shù)的輸出連接到同一個子VI、函數(shù)或組的輸入上,即創(chuàng)建反饋路徑。反饋節(jié)點只能用在While循環(huán)或For循環(huán)中,它和只有一個左端子的移位寄存器的功能完全相同,是一種更簡潔的表達方式。移位寄存器和反饋節(jié)點之間的轉換很容易。在移位寄存器的左或右端子上彈出快捷菜單,選擇Replace with Feedback Node,即可轉變?yōu)橥瑯庸δ艿姆答伖?jié)點;在反饋節(jié)點本身或者其初始化端子上彈出快捷菜單,選擇Repl
11、ace with Shift Register,即可轉變?yōu)橥瑯庸δ艿囊莆患拇嫫鳌H鐖D2-10所示,先建立圖(a),然后把移位寄存器轉換為反饋節(jié)點就得到圖(b)。第2章 程序結構圖2-10 移位寄存器和反饋節(jié)點轉換 (a)(b)第2章 程序結構2.2 分分 支支 結結 構構分支結構(Case Structure)是一種多分支程序控制結構,類似于文本編程語言中的IfThenElse語句。分支結構包含多個子框圖代碼,這些子框圖就像一疊卡片,一次只能看見一張。分支結構位于FunctionsExecution Control子模板和FunctionsStructures子模板上,如圖2-11所示。與Fo
12、r循環(huán)和While循環(huán)結構的使用一樣,通過拖拽Case結構圖標將其放置在框圖上,并使其邊框包圍所希望的對象;也可以先將Case結構放置在框圖上,然后根據(jù)需要調(diào)整大小并將對象放到結構內(nèi)部。第2章 程序結構第2章 程序結構圖2-11 分支結構的位置第2章 程序結構分支結構左邊框圖上有一個輸入端子,中心顯示問號,稱做選擇器端子(Selector Terminal);上邊框是分支選擇器標簽(Case Selector Label)。選擇器端子的數(shù)據(jù)類型可以是布爾型、字符串型、整型或枚舉型。默認的選擇器端子為布爾類型默認的選擇器端子為布爾類型,即LabVIEW自動生成兩個子框圖,標簽分別為True和Fa
13、lse,如圖2-12所示。當選擇端子為數(shù)字整型時,分支選擇器標簽的值為整數(shù)0,1,2,;當選擇端子為字符串型或枚舉類型時,分支選擇器標簽的值為由雙引號括起來的字符串。選擇框架的個數(shù)根據(jù)實際需要確定,如圖2-13所示。第2章 程序結構圖2-12 分支結構的組成及默認狀態(tài)第2章 程序結構圖2-13 不同類型的分支結構第2章 程序結構注意,在使用選擇結構時,控制端子的數(shù)據(jù)類型必須與分支選擇器標簽中的數(shù)據(jù)類型一致。二者如果不匹配,LabVIEW會報錯,同時,分支選擇器標簽中的字體顏色變?yōu)榧t色。分支結構子框圖是層疊在一起的,用鼠標(對象操作工具狀態(tài))單擊分支選擇器標簽遞增或遞減按鈕可以將當前的選擇框架切
14、換到前一個或后一個選擇框架;單擊標簽右端的向下黑色箭頭,彈出所有已經(jīng)定義的標簽列表,可以在多個子框圖之間快速跳轉。如圖2-14所示,當前顯示的框圖分支對應的標簽前有“”標記。 第2章 程序結構圖2-14 多個子框圖之間切換 第2章 程序結構2.2.1 添加、刪除和排序分支添加、刪除和排序分支在分支結構邊框上彈出的快捷菜單為用戶提供很多選項,如圖2-15所示。選擇Add Case After(在后面添加分支)或Add Case Before(在前面添加分支)可以在當前顯示的分支的后面或前面添加分支;選擇Duplicate Case(副本分支)可以復制當前顯示的分支;選擇Delete Case可以
15、刪除當前顯示的分支;選擇Remove Empty Cases可刪除所有不包含代碼的空分支。當添加或刪除Case結構中的分支時,框圖標識符自動更新以反映出插入或刪除的子框圖。我們習慣看到分支的順序是從小到大依次排列,但有時會出現(xiàn)2、5、3、4、1的排序,這樣,我們可以重新排序。重新排序后,框圖結構的分支顯示不會影響Case結構的運行結構,第2章 程序結構僅僅是編程上的習慣。在彈出的快捷菜單中選擇Rearrange Cases(重排分支),彈出圖2-15所示的對話框。為了改變選擇器的位置,單擊要移動的選擇器值(當選中時該值加亮)并將其拖拽到列表中所希望的位置。Sort按鈕將以第一個選擇器值為基準對
16、分支選擇器值進行排序。在LabVIEW的分支結構中,如果結構不能遍歷所有可能的條件或情況,就必須設置一個默認的情況用來處理超出條件選設置一個默認的情況用來處理超出條件選項范圍的情況項范圍的情況。設置默認Case分支的方法是:當顯示默認子Case框圖時,在分支結構邊框上彈出快捷菜單中選擇Make This Default Case項。對于用戶定義的默認分支,將在Case結構頂部的選擇器標簽中顯示“Default”字樣。 第2章 程序結構圖2-15 在Case結構中添加、刪除和排序分支第2章 程序結構2.2.2 輸入和輸出數(shù)據(jù)輸入和輸出數(shù)據(jù)向Case結構內(nèi)引入連線,或從Case結構向外引出連線時,
17、會在邊框上生成隧道。輸入隧道的數(shù)據(jù)對所有分支都可以使用。分支不一定要使用輸入數(shù)據(jù)或提供輸出數(shù)據(jù),但如果任何一個分支提供了輸出數(shù)據(jù),則所有的分支也必須提供輸出數(shù)據(jù),否則會導致代碼錯誤,程序無法運行。此時,輸出隧道的圖標是空心的,表示部分分支中沒有接入輸入值。只有每個分支的輸出隧道都連接數(shù)據(jù)后,圖標才變成實心,程序才能正常運行。如果不想為每個分支都明確指定輸出隧道的輸入值,可以讓LabVIEW為沒有接入隧道輸入值的分支接入隧道的默認數(shù)據(jù)類型,方法是在輸出隧道上右鍵彈出快捷菜單,選擇Use Default If Unwired,如圖2-16所示。第2章 程序結構圖2-16 在輸出隧道沒有接入數(shù)據(jù)的分
18、支采用默認值第2章 程序結構【例2.4】 求一個數(shù)的平方根,若該數(shù)大于或等于0,則計算其平方根,并輸出結果;若該數(shù)小于0,則讓系統(tǒng)產(chǎn)生蜂鳴。本例中使用布爾型Case結構,由前面板數(shù)字控制器輸入數(shù)字,若該數(shù)大于或等于0,則由數(shù)字顯示器顯示該數(shù)的平方根,否則發(fā)出蜂鳴聲。VI的前面板和程序框圖如圖2-17所示。VI執(zhí)行TRUE分支或FALSE分支,當輸入的數(shù)據(jù)大于或等于0時,VI執(zhí)行TRUE分支并將計算結果顯示到前面板;當輸入的數(shù)據(jù)小于0時,系統(tǒng)發(fā)出蜂鳴聲。從圖上看到輸入“-5”,輸出的是“0”,這是因為對于FALSE分支的輸出端選擇了Use Default If Unwire。另外,Beep.vi
19、在vi.libplatformsystem.lib庫中。第2章 程序結構圖2-17 例2.4的前面板和程序框圖第2章 程序結構2.3 順順 序序 結結 構構順序結構(Sequence Structure)順序地執(zhí)行每個子框架,包括層疊的順序結構(Stacked Sequence Structure)和平鋪的順序結構(Flat Sequence Structure)兩類。平鋪的順序結構位于FunctionsExecution Control子模板上。兩種順序結構都能從FunctionsStructures子模板上找到,見圖2-11。2.3.1 層疊的順序結構層疊的順序結構層疊的順序結構的表現(xiàn)形式
20、與Case結構很相似,都是在框圖窗口的同一位置層疊多個子框架。剛創(chuàng)建的順序結構是單框架順序結構(見圖2-18),只能執(zhí)行一步操作,起不到控制多個代碼段順序執(zhí)行的作用。順序結構執(zhí)行的過程好像逐幀放第2章 程序結構電影一樣,所以LabVIEW中順序結構的每個子框架都稱為一個幀(frame)。在單框架的基礎上創(chuàng)建多框架順序結構。方法是:在順序結構邊框上彈出快捷菜單中選擇Add Frame After或Add Frame Before,在當前幀的后面或前面添加一個空白幀,如圖2-19所示。另外,Add Sequence Local選項為順序結構添加局部變量(關于局部變量見第8章);Remove Seq
21、uence移除順序結構,同時保留當前幀代碼;Duplicate Frame是對當前幀進行復制,并把復制的結果作為新的一幀放到當前幀的后面;Delete This Frame是刪除當前幀,只有一幀的時候此項不能用,如圖2-19(a)所示,只有一幀時,Delete This Frame為不可選項。第2章 程序結構圖2-18 剛創(chuàng)建時的層疊的順序結構第2章 程序結構(a) (b)圖2-19 添加多個幀第2章 程序結構最基本的順序結構由順序框架和選擇器標簽組成,如圖2-19(b)所示,選擇器標簽的內(nèi)容是10.2,表示該順序結構含有第0到第2幀共3幀,并且第1幀是當前幀。選擇器標簽左右的兩個箭頭分別為減
22、量按鈕和增量按鈕,用于瀏覽全部幀。單擊向下黑色箭頭打開幀列表,可以實現(xiàn)多個幀之間的切換。程序運行時,順序結構是按照選擇器標簽中0、1、2、的順序依次執(zhí)行框架中的代碼。2.3.2 平鋪的順序結構平鋪的順序結構平鋪的順序結構的功能和用法與層疊的順序結構基本相同,區(qū)別是表現(xiàn)形式不同。最初建立的平鋪順序結構也只有一幀,通過添加幀后的形式如圖2-20所示。新添加的幀寬度比較小,拖拽邊框可以改變其大小。第2章 程序結構圖2-20 為平鋪的順序結構添加幀第2章 程序結構平鋪的順序結構把按照順序執(zhí)行的幀從左到右依次鋪開,占用的空間比較大,而層疊的順序結構節(jié)省框圖窗口空間。而平鋪的順序結構優(yōu)點是,在幀數(shù)不多時,
23、將各個幀平鋪開來比較直觀,方便閱讀代碼。平鋪的順序結構和層疊的順序結構的另一個區(qū)別是不能添加局部變量,可以從前一幀直接連線到后一幀來傳遞數(shù)據(jù),不需要借助局部變量這種機制傳遞數(shù)據(jù)。在圖2-20給出的層疊的順序結構邊框上彈出快捷菜單,選擇Replace-Replace with Flat Sequence可以轉換為圖2-21的平鋪順序結構,反之亦可。我們可以看到幀1的輸出數(shù)據(jù)直接穿過幀壁傳送到幀2,幀2的計算結果通過幀壁傳送給幀3,不需要引入局部變量傳送數(shù)據(jù)。 第2章 程序結構圖2-21 平鋪順序結構 第2章 程序結構【例2.5】 將隨機產(chǎn)生的數(shù)值與給定數(shù)值比較,計算當兩數(shù)相等時所需的時間。該例是
24、順序結構的典型應用。第一幀確定程序運行前的系統(tǒng)時間;第二幀運行程序;第三幀確定程序運行結束后的系統(tǒng)時間;最后兩時間相減得到程序運行的時間。采用層疊的順序結構,VI的前面板和程序框圖如圖2-22所示。幀0和幀2中采用Tick Count(ms)函數(shù),該函數(shù)位于Time & Dialog子模版上,用于返回當前系統(tǒng)時間,以毫秒為單位。采用局部變量將程序運行前的時間傳遞給幀2與當前時間相減的差值就是隨機數(shù)與給定數(shù)據(jù)相等時所花費的時間,結果除以1000,將時間單位轉換為秒,在前面板顯示。第2章 程序結構圖2-22 例2.5的前面板和程序框圖第2章 程序結構【例2.6】 利用平鋪的順序結構實現(xiàn)例2
25、.5的功能??驁D程序如圖2-23所示,平鋪的順序結構沒有局部變量,需要向后續(xù)的幀傳遞數(shù)據(jù)時,只需要將數(shù)據(jù)直接連接到后續(xù)幀中即可。第2章 程序結構圖2-23 例2.6的框圖程序第2章 程序結構2.4 公公 式式 節(jié)節(jié) 點點一些復雜的算法如果完全依賴于圖形代碼實現(xiàn),框圖程序會十分復雜,工作量大,而且不直觀,調(diào)試和改錯也不方便。LabVIEW提供了一種專門用于處理數(shù)學公式編輯的特殊結構形式,稱為公式節(jié)點(Formula Node)。在框架內(nèi),可以直接輸入數(shù)學公式或者方程式,并連接相應的輸入、輸出端口。公式節(jié)點位于FunctionsStructures子模板上,見圖2-11。從節(jié)點邊框上彈出快捷菜單中選擇Add Input或Add Output創(chuàng)建輸入變量和輸出變量端口,并使用標簽工具為每個變量命名,如圖2-24所示。第2章 程序結構變量名有大小寫之分,必須與公式中的變量匹配。輸出變量的邊框比輸入變量寬一些,通過從快捷菜單中選擇Change to Output或Change to Input可選擇輸出或輸入,同時也可在公式節(jié)點的邊框上添加多個變量。輸入公式時,每個公式一定要用分號結束;若有很多公式,可以從公式節(jié)點(不是邊框)彈出快捷菜單中選擇Visible It
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025商業(yè)隔斷裝修合同
- 2025酒店管理合同酒店管理協(xié)議書
- 2025年皮革化學品:浸水助劑項目合作計劃書
- 2025年PP-R再生料項目合作計劃書
- 2025年解熱鎮(zhèn)痛類藥物項目合作計劃書
- 2025年工業(yè)噪聲控制設備項目建議書
- 陡坡維修施工方案
- 降水位施工方案
- 執(zhí)業(yè)藥師2024年筆試考試題庫有答案分析
- 高級社會工作者職業(yè)資格筆試2024年考試題庫有答案分析
- 2024年江蘇省高考政治試卷(含答案逐題解析)
- 培訓調(diào)查問卷分析報告
- 肝癌肝移植中國指南解讀
- 2024版年度中華人民共和國傳染病防治法
- 后廚崗位招聘筆試題及解答(某大型央企)2025年
- 2024人教版初中九年級數(shù)學上冊第二十二章二次函數(shù)大單元整體課時教學設計
- 高血鈣癥的遺傳易感性研究
- 2023年版成人機械通氣患者俯臥位護理解讀
- GB 44495-2024汽車整車信息安全技術要求
- 猩紅熱知識科普
- 《中國服飾史》-沈從文等
評論
0/150
提交評論