◇樂(lè)山師范學(xué)院電子信息與材料學(xué)院 張幼麟
LabVIEW是常用的虛擬儀器設(shè)計(jì)平臺(tái),本文介紹了其向用戶(hù)提供的5種常用程序結(jié)構(gòu):順序、分支、循環(huán)、事件響應(yīng)和公式節(jié)點(diǎn)。通過(guò)對(duì)每種程序結(jié)構(gòu)的特點(diǎn)與使用方法進(jìn)行說(shuō)明,總結(jié)了各個(gè)程序結(jié)構(gòu)的適用范圍與注意事項(xiàng)。
隨著計(jì)算機(jī),尤其是個(gè)人電腦(PC機(jī))的普及,給人們的生產(chǎn)生活帶來(lái)了極大的便利,現(xiàn)代社會(huì)的正常運(yùn)行離不開(kāi)計(jì)算機(jī)的支持。利用計(jì)算機(jī)強(qiáng)大的運(yùn)算能力可以對(duì)信號(hào)進(jìn)行分析、處理,從而完成各種測(cè)試研究,具有這種功能的系統(tǒng)可以叫做虛擬儀器。LabVIEW就是一款常用的虛擬儀器程序開(kāi)發(fā)平臺(tái)。
虛擬儀器的開(kāi)發(fā)工具有兩大類(lèi):基于傳統(tǒng)的文本語(yǔ)言和基于圖形化的編程語(yǔ)言。文本語(yǔ)言開(kāi)發(fā)靈活、適用面廣,但它要求較高的編程技術(shù),相對(duì)難度大。圖形化的程序語(yǔ)言(Graphics Language)不同于我們熟悉的編程語(yǔ)言,不是由文本代碼組成,而是由一系列的圖形框圖組成;LabVIEW是它的典型代表。所以,LabVIEW把復(fù)雜晦澀的文本編程語(yǔ)言轉(zhuǎn)變成了利用線條連接各種功能模塊組成的圖形程序。由此可見(jiàn),LabVIEW形象、直觀、容易上手;并且在LabVIEW中提供了大量的傳統(tǒng)儀器(示波器、萬(wàn)用表等)的仿真控件、各種常用仿真信號(hào)源和信號(hào)處理模塊,所以它特別適用于具有專(zhuān)業(yè)知識(shí)但缺乏編程經(jīng)驗(yàn)的工程師。
與傳統(tǒng)的面向結(jié)構(gòu)的語(yǔ)言不同,作為圖形化的編程語(yǔ)言,LabVIEW采用數(shù)據(jù)流驅(qū)動(dòng)的控制機(jī)制,各個(gè)模塊之間的數(shù)據(jù)流向決定了程序的執(zhí)行順序。但是程序結(jié)構(gòu)對(duì)于任何一種計(jì)算機(jī)編程語(yǔ)言來(lái)說(shuō)都是十分重要的,它控制著整個(gè)程序語(yǔ)言的執(zhí)行過(guò)程,一個(gè)好的程序結(jié)構(gòu),可以大大提高程序的執(zhí)行效率。所以,在LabVIEW中,不僅支持基本的程序結(jié)構(gòu):順序、分支、循環(huán),還擴(kuò)充了其他的程序結(jié)構(gòu):事件結(jié)構(gòu)、公式節(jié)點(diǎn)、定時(shí)結(jié)構(gòu)等;當(dāng)然,各個(gè)結(jié)構(gòu)也是圖形化的。LabVIEW在程序框圖中的函數(shù)模塊的編程模塊中提供了各種程序結(jié)構(gòu)的功能模塊。
循環(huán)是計(jì)算機(jī)程序中必不可少的一個(gè)組成部分,一般由循環(huán)體和循環(huán)控制條件2部分組成。在LabVIEW中,提供了For循環(huán)和While循環(huán)兩種程序結(jié)構(gòu),它們都是框圖的形式,用戶(hù)將需要重復(fù)執(zhí)行的程序塊(循環(huán)體)放置于框體中即可;2種循環(huán)結(jié)構(gòu)差別在于控制條件不同。
在For循環(huán)的框圖中有兩個(gè)參數(shù):N和i。N決定了總的循環(huán)次數(shù),可由用戶(hù)設(shè)置;i是循環(huán)計(jì)算器,表示的是已經(jīng)循環(huán)執(zhí)行的次數(shù),如果用戶(hù)需要時(shí)可調(diào)用,所以For循環(huán)常用于已知循環(huán)次數(shù)的循環(huán)控制。當(dāng)循環(huán)次數(shù)不確定時(shí)可用While循環(huán)結(jié)構(gòu),While結(jié)構(gòu)的框圖中除了有i這個(gè)計(jì)數(shù)器外,還有一個(gè)條件接線端,由它來(lái)控制循環(huán)是否繼續(xù);條件接線端接收布爾變量,用戶(hù)可以把它設(shè)置為真時(shí)繼續(xù)或?yàn)檎鏁r(shí)停止。
不同情況下不同的操作由分支結(jié)構(gòu)來(lái)完成,LabVIEW中的條件結(jié)構(gòu)模塊提供了分支結(jié)構(gòu)的控制功能。條件結(jié)構(gòu)不似C語(yǔ)言中的if else這種典型的一分為二的結(jié)構(gòu),更相當(dāng)于switch這種多路分支結(jié)構(gòu),用戶(hù)可以根據(jù)自己的需求添加多個(gè)分支框圖,不同的條件下執(zhí)行不同的分支框圖。
條件結(jié)構(gòu)的條件由分支選擇器來(lái)接收,可對(duì)分支選擇器輸入的數(shù)據(jù)類(lèi)型有:布爾、字符串、整型或枚舉數(shù)據(jù)類(lèi)型。當(dāng)分支選擇器中的數(shù)據(jù)與每個(gè)分支框圖的選擇器標(biāo)簽相同時(shí)就會(huì)執(zhí)行對(duì)應(yīng)分支框圖中的控制程序。需要注意的是,當(dāng)條件結(jié)構(gòu)需要輸出數(shù)據(jù)時(shí),每個(gè)分支框圖都要有數(shù)據(jù)輸出,否則就會(huì)造成整個(gè)條件結(jié)構(gòu)無(wú)法正常運(yùn)行。
在傳統(tǒng)的文本程序語(yǔ)言中,沒(méi)有跳轉(zhuǎn)指令時(shí),指令的執(zhí)行是按照其位置的前后順序來(lái)決定的,所以順序結(jié)構(gòu)是最基礎(chǔ)的一種程序結(jié)構(gòu)。但LabVIEW中程序執(zhí)行的先后是靠著數(shù)據(jù)流經(jīng)節(jié)點(diǎn)的動(dòng)作來(lái)決定的;所以要強(qiáng)調(diào)程序執(zhí)行的先后次序時(shí)就可以用LabVIEW提供的順序結(jié)構(gòu)來(lái)實(shí)現(xiàn)。
順序結(jié)構(gòu)由幀組成,用戶(hù)可在每一個(gè)幀的框體中添加需要執(zhí)行的程序,幀位置的前后就決定了這些程序執(zhí)行的先后次序。LabVIEW提供了兩種順序結(jié)構(gòu):平鋪式順序結(jié)構(gòu)和層疊式順序結(jié)構(gòu);它們的功能相同,只是表達(dá)形式不同而已。順序結(jié)構(gòu)經(jīng)常使用在需要統(tǒng)計(jì)某功能程序執(zhí)行時(shí)間的應(yīng)用中。
一個(gè)事件可以理解為一個(gè)活動(dòng);事件可以來(lái)自用戶(hù)(鼠標(biāo)、鍵盤(pán)的操作)、外部的輸入輸出設(shè)備(數(shù)據(jù)采集完成、硬件錯(cuò)誤等)和其他程序的控制來(lái)觸發(fā)。對(duì)于缺乏編程經(jīng)驗(yàn)的用戶(hù)而言,要設(shè)計(jì)應(yīng)用程序進(jìn)行事件響應(yīng)相對(duì)困難,而LabVIEW提供了簡(jiǎn)單方便的事件結(jié)構(gòu)來(lái)進(jìn)行響應(yīng)控制;不過(guò)它只支持由用戶(hù)和其他程序觸發(fā)的兩類(lèi)事件。
右擊事件結(jié)構(gòu)功能圖的框體,在出現(xiàn)的菜單中選擇“編輯本分支所處理的事件”就可以方便的選擇觸發(fā)事件的源頭,它可以是鼠標(biāo)(系統(tǒng)提供了鼠標(biāo)的按下、移到、滾輪滑動(dòng)等各種操作)或鍵盤(pán)引發(fā)的窗格變化,也可以是程序框圖中的存在控件,或者是其他的應(yīng)用程序。這些源頭發(fā)生了指定的變化時(shí)就可以執(zhí)行事件結(jié)構(gòu)框體中的程序模塊,即進(jìn)行事件響應(yīng)。由此可見(jiàn),通過(guò)LabVIEW系統(tǒng)提供的事件結(jié)構(gòu),可以快速方便的建立事件響應(yīng)的控制設(shè)計(jì)模塊。
LabVIEW中還提供了公式節(jié)點(diǎn)這種程序結(jié)構(gòu),當(dāng)LabVIEW平臺(tái)提供的功能模塊不能滿(mǎn)足用戶(hù)的靈活要求,而用文本代碼能更加方便的時(shí)候,我們就可以使用公式節(jié)點(diǎn)來(lái)添加文本代碼模塊。在公式節(jié)點(diǎn)的框圖的框體上可以方便的添加輸入、輸出的變量,在框體內(nèi)中支持C語(yǔ)言,用戶(hù)可以輸入用C語(yǔ)言描述的算術(shù)表達(dá)式;并且公式節(jié)點(diǎn)還支持C語(yǔ)言的控制語(yǔ)句,比如for、while、if、switch等。公式節(jié)點(diǎn)經(jīng)常使用于含有多個(gè)輸入、輸出變量或較為復(fù)雜的算術(shù)表達(dá)式。
LabVIEW作為虛擬儀器主要的編程設(shè)計(jì)平臺(tái),它以數(shù)據(jù)流的方式驅(qū)動(dòng)程序的運(yùn)行;但程序的結(jié)構(gòu)設(shè)計(jì)依然是其一個(gè)重要的、基礎(chǔ)的組成元素。本文介紹了LabVIEW支持的幾種程序結(jié)構(gòu),除了其他文本編程語(yǔ)言常見(jiàn)的順序、分支和循環(huán)控制結(jié)構(gòu)外,LabVIEW還提供了事件結(jié)構(gòu)和公式節(jié)點(diǎn)2種特有的程序結(jié)構(gòu),它們的出現(xiàn)使LabVIEW更加簡(jiǎn)單方便且靈活。