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