- LabVIEW虛擬儀器從入門到測(cè)控應(yīng)用130例
- 李江全等編著
- 2804字
- 2019-01-01 07:19:29
0.3 LabVIEW的基本概念
LabVIEW是一個(gè)功能完整的程序設(shè)計(jì)語(yǔ)言,具有區(qū)別于其他程序設(shè)計(jì)語(yǔ)言的一些獨(dú)特結(jié)構(gòu)和語(yǔ)法規(guī)則。應(yīng)用LabVIEW編程的關(guān)鍵是掌握LabVIEW的基本概念和圖形化編程的基本思想。在深入學(xué)習(xí)LabVIEW之前,有必要先介紹一些LabVIEW中的基本概念術(shù)語(yǔ)和結(jié)構(gòu),這是理解與學(xué)習(xí)LabVIEW的基礎(chǔ)。
0.3.1 VI與子VI
用LabVIEW開發(fā)的應(yīng)用程序稱為虛擬儀器(Virtual Instrument,VI)。
一個(gè)最基本的VI由前面板和后面板兩部分組成。
VI運(yùn)行采用數(shù)據(jù)流驅(qū)動(dòng),具有順序、循環(huán)、條件等多種程序結(jié)構(gòu)控制。
與其他編程語(yǔ)言一樣,在LabVIEW中也存在子程序的概念。在LabVIEW中的子程序稱為子VI。在程序中使用子VI有以下益處:
(1)將一些代碼封裝成為一個(gè)子VI(即一個(gè)圖標(biāo)或節(jié)點(diǎn)),可以使程序的結(jié)構(gòu)變得更加清晰、明了。
(2)將整個(gè)程序劃分為若干模塊,每個(gè)模塊用一個(gè)或者幾個(gè)子VI實(shí)現(xiàn),易于程序的編寫和維護(hù)。
(3)將一些常用的功能編制成為一個(gè)子VI,在需要時(shí)可以直接調(diào)用,不用重新編寫這部分程序,因而子VI有利于代碼復(fù)用。
正因?yàn)樽覸I的使用對(duì)編寫LabVIEW程序有很多益處,所以在使用LabVIEW編寫程序時(shí)經(jīng)常會(huì)使用子VI。基于LabVIEW圖形化編程語(yǔ)言的特點(diǎn),在LabVIEW環(huán)境中,子VI也是以圖標(biāo)(節(jié)點(diǎn))的形式出現(xiàn)的,在使用子VI時(shí),需要定義其數(shù)據(jù)輸入和輸出的端口,然后就可以將其當(dāng)做一個(gè)普通的VI來(lái)使用了。
0.3.2前面板
前面板就是圖形化用戶界面,用于設(shè)置輸入數(shù)值和觀察輸出量,是人機(jī)交互的窗口。由于VI前面板是模擬真實(shí)儀器的前面板,所以輸入量稱為控制,輸出量稱為指示。
在前面板中,用戶可以使用各種圖標(biāo),如旋鈕、按鈕、開關(guān)、波形圖、實(shí)時(shí)趨勢(shì)圖等,這樣可使前面板的界面同真實(shí)的儀器面板一樣。圖0-9 是一個(gè)波形發(fā)生器程序的前面板。

圖0-9 波形發(fā)生器程序的前面板
前面板對(duì)象按照功能可以分為控制、指示和修飾三種。控制是用戶設(shè)置和修改VI程序中輸入量的接口;指示則用于顯示VI程序產(chǎn)生或輸出的數(shù)據(jù)。如果將一個(gè)VI程序比作一臺(tái)儀器的話,那么控制就是儀器的數(shù)據(jù)輸入端口和控制開關(guān),而指示則是儀器的顯示窗口,用于顯示測(cè)量結(jié)果。
在本書中,為方便起見,將前面板中的控制和指示統(tǒng)稱為前面板對(duì)象或控件。
值得一提的是,任何一個(gè)前面板對(duì)象都有控制和指示兩種屬性,在前面板對(duì)象的右鍵彈出菜單中選擇“轉(zhuǎn)換為顯示控件”或“轉(zhuǎn)換為輸入控件”命令,可以在控制和指示兩種屬性之間切換。請(qǐng)注意,如果用于輸入的前面板對(duì)象被設(shè)置為指示,或用于輸出的前面板對(duì)象被設(shè)置為控制,則LabVIEW會(huì)報(bào)錯(cuò)。
修飾的作用僅是將前面板點(diǎn)綴得更加美觀,修飾并不能作為VI的輸入或輸出來(lái)使用。在控制選板中專門有一個(gè)修飾子選板。當(dāng)然,用戶也可以直接將外部圖片(BMP或JPEG格式)粘貼到前面板中作為修飾。
0.3.3框圖程序
每一個(gè)前面板都有一個(gè)框圖程序與之對(duì)應(yīng)。框圖程序是用圖形化編程語(yǔ)言編寫的,可以把它理解成傳統(tǒng)編程語(yǔ)言程序中的源代碼。用圖形來(lái)進(jìn)行編程,而不是用傳統(tǒng)的代碼來(lái)進(jìn)行編程,這是LabVIEW最大的特色。
框圖程序由節(jié)點(diǎn)、端口和連線組成。
1.節(jié)點(diǎn)
節(jié)點(diǎn)是VI程序中的執(zhí)行元素,類似于文本編程語(yǔ)言程序中的語(yǔ)句、函數(shù)或者子程序。節(jié)點(diǎn)之間由數(shù)據(jù)連線按照一定的邏輯關(guān)系相互連接,以定義框圖程序內(nèi)的數(shù)據(jù)流動(dòng)方向。0.3.2節(jié)中波形發(fā)生器的框圖程序就是一個(gè)典型的例子,如圖0-10所示。

圖0-10 波形發(fā)生器框圖程序
LabVIEW共有4種類型的節(jié)點(diǎn),參見表0-6。
表0-6 LabVIEW節(jié)點(diǎn)類型

節(jié)點(diǎn)是LabVIEW作為G語(yǔ)言這種圖形化編程語(yǔ)言的特色之一,是圖形化的常量、變量、函數(shù)以及VIs和Express VIs。
一般情況下,LabVIEW中的每個(gè)節(jié)點(diǎn)至少有一個(gè)端口,用于向其他圖標(biāo)傳遞數(shù)據(jù)。
2.端口
節(jié)點(diǎn)之間、節(jié)點(diǎn)與前面板對(duì)象之間通過數(shù)據(jù)端口和數(shù)據(jù)連線來(lái)傳遞數(shù)據(jù)。
端口是數(shù)據(jù)在框圖程序部分和前面板之間傳輸?shù)耐ǖ澜涌冢约皵?shù)據(jù)在框圖程序的節(jié)點(diǎn)之間傳輸?shù)慕涌凇6丝陬愃朴谖谋境绦蛑械膮?shù)和常數(shù)。
端口有兩種類型:控制器/指示器端口和節(jié)點(diǎn)端口(即函數(shù)圖標(biāo)的連線端口)。控制或指示端口用于前面板,當(dāng)程序運(yùn)行時(shí),從控制器輸入的數(shù)據(jù)就通過控制器端口傳送到框圖程序。而當(dāng)VI程序運(yùn)行結(jié)束后,輸出數(shù)據(jù)就通過指示器端口從框圖程序送回到前面板的指示器。當(dāng)在前面板創(chuàng)建或刪除控制器或指示器時(shí),可以自動(dòng)創(chuàng)建或刪除相應(yīng)的控制器/指示器端口。上述控制程序有兩個(gè)控制器端口、一個(gè)指示器端口,同時(shí)在框圖程序中,Add功能函數(shù)在圖標(biāo)下隱含著節(jié)點(diǎn)端口。
3.連線
連線是端口間的數(shù)據(jù)通道,類似于文本程序中的賦值語(yǔ)句。數(shù)據(jù)是單向流動(dòng)的,從源端口向一個(gè)或多個(gè)目的端口流動(dòng)。不同的線型代表不同的數(shù)據(jù)類型,每種數(shù)據(jù)類型還通過不同的顏色予以強(qiáng)調(diào)。
連線點(diǎn)是連線的線頭部分。
當(dāng)需要連接兩個(gè)端點(diǎn)時(shí),在第一個(gè)端點(diǎn)上單擊連線工具(從工具選板調(diào)用),然后移動(dòng)到另一個(gè)端點(diǎn),再單擊第二個(gè)端點(diǎn)。端點(diǎn)的先后次序不影響數(shù)據(jù)流動(dòng)的方向。
當(dāng)把連線工具放在端點(diǎn)上時(shí),該端點(diǎn)區(qū)域?qū)?huì)閃爍,表示連線將會(huì)接通該端點(diǎn)。當(dāng)把連線工具從一個(gè)端口接到另一個(gè)端口時(shí),不需要按住鼠標(biāo)。當(dāng)需要連線轉(zhuǎn)彎時(shí),單擊一次鼠標(biāo),即可以正交垂直的方向彎曲連線,按空格鍵可以改變轉(zhuǎn)角的方向。
接線頭是為了保證端口的連線位置正確。當(dāng)把連線工具放到端口上,接線頭就會(huì)彈出。接線頭還有一個(gè)黃色小標(biāo)識(shí)框,顯示該端口的名字。
節(jié)點(diǎn)/連接端口可以讓用戶把VI變成一個(gè)對(duì)象(SubVI,即VI子程序),然后在其他VI中像子程序一樣被調(diào)用。圖標(biāo)作為SubVI的直觀標(biāo)記,當(dāng)被其他VI調(diào)用時(shí),圖標(biāo)代表SubVI中的所有框圖程序。而連接端口表示該SubVI與調(diào)用它的VI之間進(jìn)行數(shù)據(jù)交換的輸入/輸出端口,就像傳統(tǒng)編程語(yǔ)言子程序的參數(shù)端口一樣,它們對(duì)應(yīng)著SubVI中前面板上的控制和指示。連接端口通常是隱藏在圖標(biāo)中的。圖標(biāo)和連接端口都是由用戶在編制VI時(shí)根據(jù)實(shí)際需要?jiǎng)?chuàng)建的。
0.3.4數(shù)據(jù)流驅(qū)動(dòng)
由于框圖程序中的數(shù)據(jù)是沿?cái)?shù)據(jù)連線按照程序中的邏輯關(guān)系流動(dòng)的,因此,LabVIEW編程又稱為“數(shù)據(jù)流編程”。“數(shù)據(jù)流”控制LabVIEW程序的運(yùn)行方式。對(duì)一個(gè)節(jié)點(diǎn)而言只有當(dāng)它的輸入端口上的數(shù)據(jù)都被提供以后,它才能夠執(zhí)行。當(dāng)節(jié)點(diǎn)程序運(yùn)行完畢以后,它會(huì)把結(jié)果數(shù)據(jù)送到其輸出端口中,這些數(shù)據(jù)很快地通過數(shù)據(jù)連線送至與之相連的目的端口。“數(shù)據(jù)流”與常規(guī)編程語(yǔ)言中的“控制流”類似,相當(dāng)于控制程序語(yǔ)句一步一步地執(zhí)行。
兩數(shù)相加前面板如圖0-11所示,兩數(shù)相加框圖程序如圖0-12所示,這個(gè)VI程序把控制a和b中的數(shù)值相加,然后再把相加之和乘以100,結(jié)果送至指示c中顯示。

圖0-11 兩數(shù)相加前面板

圖0-12 兩數(shù)相加框圖程序
在這個(gè)程序中,框圖程序從左向右執(zhí)行,但這個(gè)執(zhí)行次序不是由其對(duì)象的擺放位置來(lái)確定的,而是由于相乘節(jié)點(diǎn)的一個(gè)輸入量是相加節(jié)點(diǎn)的運(yùn)算結(jié)果。只有當(dāng)相加運(yùn)算完成并把結(jié)果送到相乘運(yùn)算節(jié)點(diǎn)的輸入端口后,相乘節(jié)點(diǎn)才能執(zhí)行下去。注意,一個(gè)節(jié)點(diǎn)只有當(dāng)其輸入端口的所有數(shù)據(jù)全都有效地到達(dá)后才能執(zhí)行下去,而且只有當(dāng)它執(zhí)行完成后,它才把結(jié)果送到輸出端口。
再看另一個(gè)VI的框圖程序,如圖0-13所示。該程序是乘法節(jié)點(diǎn)和除法節(jié)點(diǎn)并行執(zhí)行。這兩個(gè)節(jié)點(diǎn)相互之間沒有數(shù)據(jù)依賴的關(guān)系,它們是相互獨(dú)立的,輸入數(shù)據(jù)是同時(shí)到達(dá)減法節(jié)點(diǎn),它們是并行執(zhí)行的。但是如果根據(jù)某種要求,需要先執(zhí)行除法,后執(zhí)行乘法,該怎么辦呢?用順序結(jié)構(gòu)可解決這個(gè)問題。
- 大數(shù)據(jù)戰(zhàn)爭(zhēng):人工智能時(shí)代不能不說的事
- 現(xiàn)代測(cè)控電子技術(shù)
- Dreamweaver CS3網(wǎng)頁(yè)制作融會(huì)貫通
- Mastering Game Development with Unreal Engine 4(Second Edition)
- 單片機(jī)C語(yǔ)言程序設(shè)計(jì)完全自學(xué)手冊(cè)
- Dreamweaver CS6精彩網(wǎng)頁(yè)制作與網(wǎng)站建設(shè)
- 人工智能:語(yǔ)言智能處理
- Mastering pfSense
- Java組件設(shè)計(jì)
- Learn Microsoft Azure
- Embedded Linux Development using Yocto Projects(Second Edition)
- ARM體系結(jié)構(gòu)與編程
- Keras Reinforcement Learning Projects
- 牛津通識(shí)讀本:大數(shù)據(jù)(中文版)
- fastText Quick Start Guide