虛擬儀器與測(cè)量技術(shù)_第1頁(yè)
虛擬儀器與測(cè)量技術(shù)_第2頁(yè)
虛擬儀器與測(cè)量技術(shù)_第3頁(yè)
虛擬儀器與測(cè)量技術(shù)_第4頁(yè)
虛擬儀器與測(cè)量技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、虛擬儀器與測(cè)量技術(shù) 北京大學(xué)信息科學(xué)技術(shù)系電路基礎(chǔ)教學(xué)中心2006年6月10日目錄第一講 虛擬儀器與測(cè)試技術(shù)概述第二講 LabVIEW基礎(chǔ)21 LabVIEW程序的基本構(gòu)成22 LabVIEW的模板23 子VI的創(chuàng)建第三講 程序結(jié)構(gòu)31 For循環(huán)結(jié)構(gòu)32 Whiler循環(huán)結(jié)構(gòu)33 順序結(jié)構(gòu)34 選擇結(jié)構(gòu)35 公式節(jié)點(diǎn)第四講 數(shù)據(jù)采集和信號(hào)輸出41 數(shù)據(jù)采集系統(tǒng)的構(gòu)成42 模擬輸出43 模擬輸入實(shí)驗(yàn)一 信號(hào)發(fā)生與顯示實(shí)驗(yàn)二 頻率特性的測(cè)量利用虛擬儀器實(shí)現(xiàn)數(shù)據(jù)采集和信號(hào)輸出實(shí)驗(yàn)三 元件伏安特性測(cè)量1 二極管正向伏安特性測(cè)量2 三極管特性的測(cè)量第一講 虛擬儀器與測(cè)量技術(shù)概述虛擬儀器(Virtual

2、 Instruments)技術(shù)是檢測(cè)技術(shù)與計(jì)算機(jī)和通信技術(shù)有機(jī)結(jié)合的產(chǎn)物,由美國(guó)國(guó)家儀器 ( National Instruments)公司于1986年提出,是指在通用計(jì)算機(jī)上添加軟件和一些硬件模塊構(gòu)成一套根據(jù)個(gè)人需求來(lái)獲取數(shù)據(jù),分析數(shù)據(jù)和輸出可視化數(shù)據(jù)的計(jì)算機(jī)儀器系統(tǒng)。它利用PC機(jī)的顯示功能模擬真實(shí)儀器的控制面板,以多種形式表達(dá)輸出檢測(cè)結(jié)果,利用PC軟件功能實(shí)現(xiàn)信號(hào)的運(yùn)算、分析、處理,由I/O接口設(shè)備(卡)完成信號(hào)的采集、測(cè)量與調(diào)理,從而完成各種測(cè)試功能,用戶操作這臺(tái)計(jì)算機(jī)就像操作一臺(tái)真實(shí)的儀器。虛擬儀器系統(tǒng)的構(gòu)成是在以計(jì)算機(jī)為核心的硬件平臺(tái)支持下,通過(guò)專用軟件(如LabVIEW、VEE)來(lái)

3、實(shí)現(xiàn)儀器的測(cè)試功能,而且可以通過(guò)不同測(cè)試功能的軟件模塊組合來(lái)實(shí)現(xiàn)多種測(cè)試功能;接口卡是外界電信號(hào)與計(jì)算機(jī)之間的橋梁和紐帶,具有數(shù)據(jù)采集、信號(hào)控制和輸出功能,它將從傳感器或相應(yīng)設(shè)備獲取的信號(hào)經(jīng)A/D轉(zhuǎn)換,送給計(jì)算機(jī),并接受計(jì)算機(jī)傳來(lái)的數(shù)據(jù)或控制信號(hào),將模擬或數(shù)字信號(hào)傳遞給外設(shè)。在幾種主要虛擬儀器系統(tǒng)開(kāi)發(fā)平臺(tái)中,以美國(guó)國(guó)家儀器公司的LabVIEW影響最大,LabVIEW作為一個(gè)圖形化的開(kāi)發(fā)環(huán)境,帶有大量的內(nèi)置功能,能夠完成仿真、數(shù)據(jù)采集、儀器控制、測(cè)量分析和數(shù)據(jù)顯示等任務(wù)。虛擬儀器的系統(tǒng)構(gòu)成如下圖所示:被測(cè)信號(hào)PC-DAQGPI儀器串口儀器VXI模塊PXI模塊計(jì)算機(jī)軟件結(jié)構(gòu)利用虛擬儀器可以構(gòu)成常規(guī)

4、儀器不易完成的測(cè)試系統(tǒng),如大量重復(fù)的測(cè)量,長(zhǎng)時(shí)間的數(shù)據(jù)采集,特性曲線的測(cè)量等。在基礎(chǔ)電子線路實(shí)驗(yàn)中,測(cè)量頻率響應(yīng)曲線是必需和常見(jiàn)的實(shí)驗(yàn)內(nèi)容,如測(cè)量濾波器的通頻帶、放大器的頻率特性、萬(wàn)用表的頻率特性等,傳統(tǒng)的測(cè)試方法需要信號(hào)源、示波器和直流電源這些傳統(tǒng)設(shè)備,測(cè)試方法是逐點(diǎn)設(shè)置頻率,逐點(diǎn)測(cè)量輸入輸出電壓,并要進(jìn)行數(shù)據(jù)的處理,然后逐點(diǎn)繪圖,完成一次測(cè)試過(guò)程需要較長(zhǎng)的時(shí)間,并且精度不是很高,如果利用虛擬儀器技術(shù),瞬間即可高精度地完成同樣的測(cè)試過(guò)程,大大提高了效率。我們使用的傳統(tǒng)儀器主要有三個(gè)部分:數(shù)據(jù)采集與控制、數(shù)據(jù)分析和數(shù)據(jù)顯示,如我們用示波器探頭采集信號(hào),屏幕上顯示信號(hào),用頻譜儀進(jìn)行譜分析等,而虛

5、擬儀器(Virtual Instruments)的概念是為了適應(yīng)計(jì)算機(jī)而提出的,即利用計(jì)算機(jī)的強(qiáng)大功能,通過(guò)圖形化的人機(jī)界面,配合不同的傳感器和接口卡為電路提供信號(hào)源,對(duì)電路進(jìn)行測(cè)試,或者對(duì)儀器進(jìn)行遠(yuǎn)程控制,所需的操作和信號(hào)的顯示都是利用鍵盤(pán)、鼠標(biāo)和顯示器來(lái)完成,從而實(shí)現(xiàn)了傳統(tǒng)儀器的功能,無(wú)須直接操作儀器,甚至可在一臺(tái)計(jì)算機(jī)上實(shí)現(xiàn)幾種不同儀器的功能。隨著計(jì)算機(jī)技術(shù)和虛擬儀器技術(shù)的發(fā)展,同一臺(tái)虛擬儀器可在更多場(chǎng)合應(yīng)用,比如既可在電量測(cè)量中應(yīng)用,又可在振動(dòng)、運(yùn)動(dòng)和圖像等非電量測(cè)量中應(yīng)用,甚至在網(wǎng)絡(luò)測(cè)控中應(yīng)用。總之,虛擬儀器技術(shù)是自動(dòng)測(cè)控系統(tǒng)的發(fā)展趨勢(shì)。11 儀器與測(cè)量技術(shù)的幾個(gè)發(fā)展階段1. 模擬儀

6、器 指針式萬(wàn)用表、晶體管電壓表等。2. 數(shù)字化儀器 如數(shù)字電壓表、數(shù)字頻率計(jì)等。3. 智能儀器 這類儀器內(nèi)置微處理器, 既能進(jìn)行自動(dòng)測(cè)試又具有一定的數(shù)據(jù)處理功能。4. 虛擬儀器 12 虛擬儀器的特點(diǎn)虛擬儀器軟件體系結(jié)構(gòu)(VISA,Virtual Instrumentation Software Architecture), 使得不管虛擬儀器使用的計(jì)算機(jī)或操作系統(tǒng)是什么 , 所編寫(xiě)的用戶應(yīng)用程序都是可移植的, 軟件模塊具有通用性。軟件代替硬件、以圖形代替代碼、以組態(tài)代替編程、以虛擬代替真實(shí)儀器組建自動(dòng)測(cè)試系統(tǒng)13 虛擬儀器的優(yōu)點(diǎn)儀器功能是用戶根據(jù)需要由軟件來(lái)定義。儀器性能改進(jìn)或功能擴(kuò)展只需相關(guān)軟

7、件設(shè)計(jì)更新。研制周期相對(duì)短與計(jì)算機(jī)同步發(fā)展,靈活開(kāi)放,易于網(wǎng)絡(luò)化14 虛擬儀器的發(fā)展 虛擬儀器的發(fā)展有兩條主線 :GPIB VXI PXI 總線方式 ( 適合大型集成系統(tǒng) );PC 插卡式并行接口式串行接口式 (USB)( 普及型系統(tǒng) ) 。PC-DAQ 測(cè)量系統(tǒng)是構(gòu)成 VI 的最基本的方式 , 也是最廉價(jià)的方式。15 自動(dòng)測(cè)量系統(tǒng)應(yīng)用場(chǎng)合高速操作:例如,在短時(shí)間內(nèi)要收集大量數(shù)據(jù)的脈沖功率診斷。周期長(zhǎng)、速度低的操作 : 例如,環(huán)境監(jiān)視和控制。重復(fù)性的操作:例如,自動(dòng)化的測(cè)試和校正,以及需要執(zhí)行多次的實(shí)驗(yàn)。 遠(yuǎn)距離操作 ( 遠(yuǎn)程控制 ) 或具有危險(xiǎn)性的操作: 讓操作人員在現(xiàn)場(chǎng)執(zhí)行這種操作是不切實(shí)

8、際或不可能的,或者操作人員在現(xiàn)場(chǎng)會(huì)有危險(xiǎn)。超過(guò)人類自身能力的高精度操作需要大量輸入和輸出的復(fù)雜操作第二講 LabVIEW基礎(chǔ)LabVIEW是美國(guó)NI公司(National Instruments Corporation)開(kāi)發(fā)的軟件平臺(tái),將計(jì)算機(jī)的數(shù)據(jù)分析和顯示能力與儀器驅(qū)動(dòng)器融合在一起,為用戶設(shè)計(jì)虛擬儀器提供了軟件工具和開(kāi)發(fā)環(huán)境。LabVIEW和C及C+一樣,是一種程序開(kāi)發(fā)語(yǔ)言,但其區(qū)別在于它是使用圖形化編程語(yǔ)言G語(yǔ)言(graphical language),這種編程語(yǔ)言采用流程圖形式開(kāi)發(fā)應(yīng)用程序。它自帶的函數(shù)庫(kù)可用于數(shù)據(jù)采集、串行設(shè)備的控制、數(shù)據(jù)分析和顯示等。在LabVIEW環(huán)境下,我們每創(chuàng)

9、建一個(gè)虛擬儀器即VI,相當(dāng)于傳統(tǒng)編程語(yǔ)言中的函數(shù),可作為子VI 調(diào)用,每個(gè)VI由三個(gè)部分組成:前面板(Panel)、流程圖(Diagram)和圖標(biāo)/連接器(Connector),前面板是用戶界面,用于顯示控制端子和顯示端子, 便于在程序運(yùn)行過(guò)程中操作和觀測(cè)。流程圖使用節(jié)點(diǎn)、端子和連線創(chuàng)建可執(zhí)行程序代碼,圖標(biāo)/連接器用于在主程序中調(diào)用子程序。21 LabVIEW程序的基本構(gòu)成LabVIEW與虛擬儀器有著緊密聯(lián)系,在LabVIEW中開(kāi)發(fā)的程序都被稱為虛擬儀器(VI),其擴(kuò)展名默認(rèn)為vi。所有的VI都包括前面板、流程圖和圖標(biāo)連接器三部分。前面板是圖形用戶界面,有交互式的輸入和輸出兩類對(duì)象,分別被稱為

10、Control(控制器)和 Indicator(顯示器)。Control(控制器)包括各種開(kāi)關(guān)、旋鈕和按鍵等, Indicator(顯示器)包括圖形、Chart、LED和其他顯示輸出對(duì)象。流程圖是定義VI功能化的源代碼,其作用是從前面板上的輸入控件獲得信息,然后進(jìn)行計(jì)算和處理,最后在輸出控件中顯示結(jié)果,在流程圖上的編程元素除了與前面板對(duì)應(yīng)的連線端子外,還有函數(shù)、子VI、常量、結(jié)構(gòu)和連線等。 如果將虛擬儀器與標(biāo)準(zhǔn)儀器相比較,那么前面板相當(dāng)于儀器面板,而流程圖相當(dāng)于儀器箱內(nèi)的功能部件。VI具有層次化和結(jié)構(gòu)化的特征,一個(gè)VI可以作為另一個(gè)VI的子程序被調(diào)用,圖標(biāo)用于在主VI的流程圖中標(biāo)識(shí)被調(diào)用的子程

11、序,連接器相當(dāng)于圖形化的子程序參數(shù)。22 LabVIEW模板由開(kāi)始程序National Instruments LabVIEWLabVIEW,選擇NEW VI進(jìn)入LabVIEW環(huán)境,顯示底色為灰色的前面板,點(diǎn)擊Windowsshow diagram顯示流程圖面板,點(diǎn)擊WindowsShow panel,則又切換至前面板,在前面板,選WindowsShow Controls Palette/Shows Tools Palette顯示工具模板和控制模板(見(jiàn)下圖),一些控制量如旋鈕和開(kāi)關(guān)等的圖標(biāo)在控制模板上,選擇這些圖標(biāo)并放置在前面板上,會(huì)在流程圖上出現(xiàn)相應(yīng)的端子,由此在被前面板控制程序中的數(shù)據(jù),在

12、流程圖面板,選WindowsShow Functions Palette,顯示功能模板,可在流程圖面板上調(diào)用它上面的功能函數(shù)創(chuàng)建程序,循環(huán)、數(shù)學(xué)運(yùn)算、比較和公式節(jié)點(diǎn)等在這些模板中調(diào)用。221工具模板工具模板上的可選工具介紹 Automatic Tool Selection ( 自動(dòng)工具選擇 )Positioning ( 定位工具 )Operating ( 操作工具 )Object Shortcut ( 對(duì)象快捷菜單 )Scrolling( 滾動(dòng)窗口 )Labeling ( 標(biāo)簽工具 )Wring( 連線工具 )Probe ( 探針工具 )Breakpoint( 斷點(diǎn)操作 )Color Copy

13、ing ( 復(fù)制顏色 )Coloring ( 著色工具 )Set Color(用來(lái)給對(duì)象定義顏色 , 包括對(duì)象的前景色和背景色)默認(rèn)狀態(tài)下工具選擇是最頂端的Automatic Tool Selection ( 自動(dòng)工具選擇 ),如果該工具處于選中狀態(tài) , 則在前面板和框圖中的對(duì)象上移動(dòng)鼠標(biāo)指針時(shí) ,LabVIEW 會(huì)根據(jù)鼠標(biāo)指針?biāo)笇?duì)象類型和位置的不同而自動(dòng)選擇合適的工具用于操作前面板的控制器和顯示器。使用它向數(shù)字或字符串控件中鍵入值時(shí) , 工具會(huì)變成標(biāo)簽工具。當(dāng)用于選擇、移動(dòng)對(duì)象或改變對(duì)象的大小時(shí),鼠標(biāo)指針會(huì)變成各種方向的箭頭形狀。文本工具用于輸入標(biāo)簽 (Label) 或標(biāo)題說(shuō)明 (Capt

14、ion) 的文本或者創(chuàng)建自由標(biāo)簽 (Free Labe1)。連線工具用于在框圖上連線及在前面板上建立連接器。當(dāng)把該工具放在任一條連線上時(shí) , 在 Context Help 窗口會(huì)顯示連線的數(shù)據(jù)類型,使用該工具在對(duì)象上單擊鼠標(biāo)左鍵 ,可以彈出對(duì)象 的快捷菜單,使用該工具時(shí)不需要使用滾動(dòng)條便可在窗口中漫游,使用斷點(diǎn)工具可在 VI 的框圖對(duì)象 ( 子 VI 、函數(shù)、節(jié)點(diǎn)、 連線和結(jié)構(gòu) ) 上設(shè)置斷點(diǎn),可在框圖程序內(nèi)的連線上設(shè)置探針,通過(guò)探針窗口可觀察連線上的數(shù)據(jù)變化狀況,當(dāng)然必須在數(shù)據(jù)流過(guò)之前設(shè)置探針。 默認(rèn)狀態(tài)下 Automatic Tool Selection 被選中。單擊該按鈕將取消該工 具的

15、選擇,按下 Shift+Tab 鍵將恢復(fù)該工具的選中狀態(tài)。當(dāng) Automatic Tool Selection 被選中時(shí),單擊其他任一個(gè)工具 , 將取消 Automatic Tool Selection 的選中狀態(tài)。此時(shí),按下 Tab 鍵或者 Shift+Tab 鍵 ,都可以恢復(fù) Automatic Tool Selection 的選中狀態(tài)。在 Automatic Tool Selection 沒(méi)有被選中時(shí) , 如果當(dāng)前窗口是前面板 ,按下 Tab 鍵使得選中工具在 Operating,Positioning,Labeling 和 Coloring 之間按順序循環(huán)切換。如果當(dāng)前窗口是流程圖窗口

16、, 則按下 Tab 鍵將使得選中工具在Operating,Positioning,Labeling 和 Wiring 之間按順序循環(huán)切換。在前面板或流程圖空白區(qū)域中按下 Shift和鼠標(biāo)右鍵 ,可以彈 出臨時(shí)的 Tools 模板 , 這樣就可以把浮動(dòng)的 Tools 模板窗口關(guān) 閉 ,只有需要切換工具的時(shí)候 ,才彈出臨時(shí)模板 , 選擇新的工 具 ,從而節(jié)省空間用于程序編輯操作。23 子VI的創(chuàng)建創(chuàng)建信號(hào)發(fā)生器的圖標(biāo)和連接器,在前面板中右鍵單擊窗口右上角圖標(biāo),Edit Icon,用鉛筆工具和文本工具編輯圖標(biāo),按Ok后編好的圖標(biāo)將顯示在右上角,再右鍵點(diǎn)圖標(biāo)選Show Connector,設(shè)置連接器端

17、子連接模式,圖標(biāo)將變?yōu)檫B接器端子連接框圖,并自動(dòng)根據(jù)控制對(duì)象和顯示對(duì)象的數(shù)目確定連接模式,如本例左面4個(gè)方框右面1個(gè)方框,中間兩個(gè)方框,左面為輸入量或控制量,右面為輸出量或顯示量,點(diǎn)左面任意方框,光標(biāo)自動(dòng)變成連線工具,單擊一個(gè)控制對(duì)象如幅度,該部分將被虛線框包圍,在空白處點(diǎn)擊鼠標(biāo),虛線消失,選中的端子變暗,表明連接成功,幅度與流程圖中的的端子相連接,這樣可以在面板上控制流程中的數(shù)據(jù),將所需要的端子全部連接完成后,存貯,這樣一個(gè)VI就完成了,它可以被其他程序調(diào)用。下面幾張圖可以對(duì)LabVIEW有一些感性的認(rèn)識(shí)。圖21 LabVIEW前面板(Front Panel)圖22 LabVIEW流程圖(B

18、lock Diagram)圖23 LabVIEW層次圖最后,介紹一下LabVIEW的主要特點(diǎn):LabVIEW使用所見(jiàn)即所得的可視化技術(shù)建立人機(jī)界面,并且是針對(duì)測(cè)試測(cè)量和過(guò)程控制領(lǐng)域的。 LabVIEW提供了許多儀器面板中的控制對(duì)象如:表頭、旋鈕、開(kāi)關(guān)、坐標(biāo)圖等。 用戶還可以通過(guò)控制編輯器將現(xiàn)有的控制對(duì)象修改為適合自己工作領(lǐng)域的控制對(duì)象。 LabVIEW使用圖標(biāo)表示功能模塊,使用圖標(biāo)之間的連線表示各模塊間的數(shù)據(jù)傳遞。 因?yàn)槭褂脼榇蠖鄶?shù)工程師和科學(xué)家熟悉的數(shù)據(jù)流程圖式的語(yǔ)言書(shū)寫(xiě)程序代碼所以編程過(guò)程和思維過(guò)程非常類似。 這樣不僅使編寫(xiě)程序變得簡(jiǎn)單而且寫(xiě)出來(lái)的程序更易懂。LabVIEW繼承了高級(jí)編程語(yǔ)

19、言的結(jié)構(gòu)化和模塊化編程的優(yōu)點(diǎn)。 LabVIEW支持模塊、化層次化設(shè)計(jì)。在一個(gè)VI中可能包含了許多子VI。 這種次結(jié)構(gòu)的設(shè)計(jì)增強(qiáng)了程序的可讀性,不僅LabVIEW系統(tǒng)本身提供了許多常用的VI, 而且因?yàn)長(zhǎng)abVIEW支持分層結(jié)構(gòu)所以可以建立自己的VI庫(kù)實(shí)現(xiàn)代碼重用,減少程序開(kāi)發(fā)時(shí)間。 LabVIEW采用編譯方式運(yùn)行32位應(yīng)用程序,這既解決了其他用解釋方式運(yùn)行程序的圖形化編程平臺(tái)運(yùn)行速度慢的缺點(diǎn)。LabVIEW支持多種操作系統(tǒng)平臺(tái),如:Macintosh、Power Macintosh、HP-UX、Sun SPARC、Windows3.X、Windows95/98/2000、 Windows NT

20、等。在以上任何一個(gè)平臺(tái)開(kāi)發(fā)的LabVIEW應(yīng)用程序都可直接一直到其他平臺(tái)上。 LabVIEW提供了大量的函數(shù)庫(kù)供用戶直接調(diào)用. 從基本的數(shù)學(xué)函數(shù)、字符串處理函數(shù)、數(shù)組運(yùn)算函數(shù)和文件I/O函數(shù)到高級(jí)的數(shù)字信號(hào)處理函數(shù)和數(shù)值分析函數(shù)。 從底層的VXI儀器、數(shù)據(jù)采集板和總線接口硬件的驅(qū)動(dòng)程序到世界各大儀器廠商的GPIB儀器的驅(qū)動(dòng)程序、 LabVIEW都有現(xiàn)成的模塊幫助用戶方便迅速組建自己的應(yīng)用系統(tǒng)。LabVIEW是一個(gè)開(kāi)放的開(kāi)發(fā)平臺(tái)。 LabVIEW提供了動(dòng)態(tài)連接庫(kù)(DLL)接口和CIN節(jié)點(diǎn)。 這樣用戶可以使用其它軟件平臺(tái)的模塊來(lái)完成LabVIEW本身無(wú)法實(shí)現(xiàn)的功能。 如為自己設(shè)計(jì)的板卡編寫(xiě)驅(qū)動(dòng)模塊

21、。 利用DDE技術(shù)LabVIEW可以方便的調(diào)用其他應(yīng)用程序提供的功能。同時(shí)利用豐富的ActiveX模塊可以輕松實(shí)現(xiàn)擴(kuò)展功能。 LabVIEW運(yùn)用了多線程技術(shù)改善了系統(tǒng)的運(yùn)行速度和可靠性。將可重用代碼直接嵌入LabVIEW中,并通過(guò)簡(jiǎn)單的圖形編程方法進(jìn)行控制。 可用多種語(yǔ)言把LabVIEW做為服務(wù)器(Server)調(diào)用LabVIEW程序。第三講 程序結(jié)構(gòu)結(jié)構(gòu)(Structure)是一種程序流程控制節(jié)點(diǎn),它們放置在程序流程圖中 ,外形一般是一個(gè)大小可以縮放 的邊框 , 當(dāng)它與其他節(jié)點(diǎn)的連線有數(shù)據(jù)傳遞過(guò)來(lái)時(shí),邊框內(nèi)的一段代碼或者反復(fù)執(zhí)行、或者有條件執(zhí)行、或者按照一定順序執(zhí)行。結(jié)構(gòu)內(nèi)的一段代碼叫做子框

22、圖 Subdiagram,結(jié)構(gòu)邊框上數(shù)據(jù)輸入輸出的端口叫做通道channel。LABVIEW 有 7 種結(jié)構(gòu) :For 循環(huán)、 While 循環(huán)、選擇結(jié)構(gòu)、展平的順序結(jié)構(gòu)、層疊的順序結(jié)構(gòu)、公式節(jié)點(diǎn)和事件結(jié)構(gòu)。這些結(jié)構(gòu)都在功能模板的結(jié)構(gòu)函數(shù)子Structure模板中 , 它們各自的位置見(jiàn)下圖 所示。31 循環(huán)結(jié)構(gòu) For 循環(huán)For 循環(huán)控制一段程序代碼執(zhí)行一定的次數(shù) , 它等價(jià)于以下的偽代碼 : For i=O to N-1,Execute Diagram Inside The Loop。311 For循環(huán)的建立在程序框圖中創(chuàng)建 For 循環(huán)的做法是 , 在 Structure 函數(shù)子模板中選

23、中 For 循環(huán)圖標(biāo),在所有應(yīng)在 For 循環(huán)內(nèi)執(zhí)行的節(jié)點(diǎn)左上角區(qū)域單擊一下鼠標(biāo) , 然后按住鼠標(biāo)向右下角拖動(dòng) ,直到虛線框包圍所有應(yīng)在 For 循環(huán)內(nèi)執(zhí)行的節(jié)點(diǎn) ,松開(kāi)鼠標(biāo)后,就得到了一個(gè) For 循環(huán)框。如圖 3-1 所示。也可以先放好一個(gè) For 循環(huán)框 ,再向里面填代碼。在缺省情況下 ,For 循環(huán)框可以自動(dòng)增長(zhǎng) Auto Grow, 即放置 For 循環(huán)框時(shí)如果包含了不完全的對(duì)象 ,For 循環(huán)框自動(dòng)增長(zhǎng)到把此對(duì)象完全包括進(jìn)循環(huán)框。以后再往 For 循環(huán)框內(nèi)放置 對(duì)象時(shí) , 只要大部分放進(jìn)框內(nèi) ,For 循環(huán)框自動(dòng)增長(zhǎng)到把此對(duì)象完全包括進(jìn)循環(huán)框。如果 1要自動(dòng)增長(zhǎng),可以在 For 循

24、環(huán)邊框上彈出快捷菜單,選中Auto Grow。For 循環(huán)框大小的調(diào)節(jié)只需要用定位與選擇工具拖動(dòng)邊框的方形縮放手柄即可。圖3-1 For 循環(huán)框For 循環(huán)有兩個(gè)固定的端口。計(jì)數(shù)端口 Count 是一個(gè)輸入端口,除非使用自動(dòng)索引功能 ,否則必須在 For 循環(huán)框外為 Count 端口連接一個(gè) 32 位整型數(shù),指定循環(huán)執(zhí)行的次數(shù)。如果連 接其他類型的數(shù)值 ,LabVIEW 自動(dòng)把它強(qiáng)制轉(zhuǎn)換為最接近的整型數(shù)。對(duì)正好在兩個(gè)數(shù)之間的數(shù),則轉(zhuǎn)換為接近的偶數(shù)。例如 4.5 轉(zhuǎn)換為4,而 5.5 轉(zhuǎn)換為 6 。循環(huán)端口 Iteration 是一個(gè)輸出端口,它輸出當(dāng)前執(zhí)行的循環(huán)次數(shù)。循環(huán)次數(shù)從 0 開(kāi)始計(jì)數(shù)。

25、312 循環(huán)的時(shí)間控制與數(shù)據(jù)傳遞在滿足循環(huán)條件的情況下 , 循環(huán)結(jié)構(gòu)在一次循環(huán)結(jié)束后將立即開(kāi)始執(zhí)行下一次循環(huán)。也就是說(shuō) , 如果不加控制 , 循環(huán)結(jié)構(gòu)將以盡可能快的速度執(zhí)行??刂蒲h(huán)速度最常用的方法是 Time &Dialog 函數(shù)子模板中的等待毫秒倍數(shù)函數(shù) Wait Until Next ms Multiple 。程序執(zhí)行這個(gè)函數(shù)時(shí)將等到它的毫秒計(jì)時(shí)器值 Millisecond Timer Value 變?yōu)檩斎氲?Millisecond Multiple 參數(shù)的整數(shù)倍。因此可以控制循環(huán)按照固定的時(shí)間間隔執(zhí)行。For 循 環(huán)內(nèi)的程序執(zhí)行完以后 , 如果用時(shí)不足 100 毫秒 , 將等待到 10

26、0 毫秒再執(zhí)行下一次循環(huán)。但如果循環(huán)內(nèi)的程序在 100 毫秒內(nèi)沒(méi)有執(zhí)行完 , 將在程序執(zhí)行完以后再開(kāi)始下一次循環(huán)。也就是保證程序執(zhí)行一次循環(huán)的時(shí)間不會(huì)少于 100 毫秒。循環(huán)結(jié)構(gòu)通道上的數(shù)據(jù)在循環(huán)第一次執(zhí)行時(shí)進(jìn)入循環(huán)框內(nèi) , 以后在循環(huán)執(zhí)行過(guò)程中將不理會(huì)這個(gè)數(shù)據(jù)的變化。如果程序中用圖形顯示控件 Waveform Chart時(shí), 它將第一個(gè)到達(dá)的數(shù)據(jù)立即描繪在曲線上。但是如果希望在 100 次循環(huán)執(zhí)行的過(guò)程中用滑鈕控制 波形變化是不可能的。滑鈕數(shù)值將保持在 0 循環(huán)時(shí)的值 100 次不變。程序中 waveform 將只顯示第 100 次循環(huán)時(shí)的數(shù)據(jù) , 因?yàn)檠h(huán)結(jié)構(gòu)在執(zhí)行完以后 , 才傳遞出數(shù)據(jù)

27、 。循環(huán)對(duì)數(shù)組的自動(dòng)索引。自動(dòng)索引是指使循環(huán)框外面的數(shù)組成員逐個(gè)依次進(jìn)入循環(huán)框內(nèi) , 或使循環(huán)框內(nèi)的數(shù)據(jù)累記逐個(gè)數(shù)組輸出循環(huán)框外面的功能。使用自動(dòng)索引功能時(shí) ,從循環(huán)框外連接到輸入通道的數(shù)組將索引出一維數(shù)組 , 從一維數(shù)組將索引出單個(gè)成員。與此相反 , 在循環(huán)的輸出邊框 , 單個(gè)元素依次累加成為一維數(shù)組 , 一維數(shù)組累加成為二維數(shù)組等等。For 循環(huán)和 While 循環(huán)都支持這種功能 , 但是連接到 For 循環(huán)的數(shù)組默認(rèn)為能自動(dòng)索引 , 如 果不需要索引 , 可以在數(shù)組進(jìn)入循環(huán)的通道上彈出快捷菜單 , 選 Disable Indexing 。而連接 到 While 循環(huán)的數(shù)組默認(rèn)為不能自動(dòng)索

28、引 , 如果需要索引 , 可以在循環(huán)的通道上彈出快捷菜單 , 選 Enable Indexing 。能自動(dòng)索引時(shí) , 通道圖標(biāo)是空心框 : 不能自動(dòng)索引時(shí) , 通道自 標(biāo)是實(shí)心框。進(jìn)入循環(huán)的數(shù)據(jù)通道上自動(dòng)索引以后 , 數(shù)據(jù)線型由粗線變?yōu)榧?xì)線 , 或者帆 線變?yōu)閱尉€ ; 而輸出數(shù)據(jù)的通道上使用自動(dòng)索引以后 , 數(shù)據(jù)線型由細(xì)線變?yōu)榇志€ , 或者自單線變?yōu)殡p線。如果用了兩個(gè)嵌套的 For 循環(huán) , 里層的 For 循環(huán)將 6 次執(zhí)行時(shí)的循環(huán)數(shù)累加成一個(gè)一維數(shù)組 0-5 輸出。外層的 For 循環(huán)依次為這個(gè)一維數(shù)組各個(gè)成員加當(dāng)前循環(huán)數(shù) , 最后將 1 次循環(huán)的 8 個(gè)一維數(shù)組累加成二維數(shù)組輸出。外層的

29、For循環(huán)每執(zhí)行一次循環(huán)從二維數(shù)組中索引出一行。里層的 For 循環(huán)每 執(zhí)行一次從一維數(shù)組中索引出一個(gè)成員。32 While循環(huán)While循環(huán)While 循環(huán)控制程序反復(fù)執(zhí)行一段代碼 , 直到某個(gè)條件發(fā)生。它等價(jià)于以下偽代碼 :DoExecute Diagram Inside the Loop(Which sets the condition)While Condition is TRUE建立 While 循環(huán)的方法與 For 循環(huán)是一樣的。While 循環(huán)有兩個(gè)固定的端口。循環(huán)端口 Iteration Terminal 是一個(gè)輸出端口 , 它輸出循環(huán)當(dāng)前執(zhí)行的次數(shù)。循環(huán)數(shù)是從 0 開(kāi)始計(jì)數(shù)的

30、。條件端口 Conditional Terminal 是一個(gè)布爾量 輸入端口。程序在每次循環(huán)結(jié)束時(shí)檢查條件端口。因此 ,While 循環(huán)總是至少執(zhí)行一次。條件端口到底遇到什么條件能使 While 循環(huán)停止下來(lái) , 是可以設(shè)置的。默認(rèn)設(shè)置為 Stop if Ture, 即直至傳遞到條件端口的布爾量值為 True 時(shí)退出循環(huán) 。在這種 情況下,如果為條件端口創(chuàng)建一個(gè)停止按鈕 Stop Button, 由于這個(gè)控件按下時(shí)布爾量值為 True, 所以按下按鈕 , 循環(huán)即停止。而且這個(gè)按鈕默認(rèn)的動(dòng)作方式設(shè)置是第 5 種 ,一旦程序讀取這個(gè)值 ,它就彈起恢復(fù)到 False 值 , 以便于程序下一次運(yùn)行。在

31、條件端口上彈出快捷菜單將設(shè)置改為 Continue if Ture, 則傳遞到條件端口的布爾量值為 False 時(shí)退出循環(huán) 。如果連接一個(gè)出錯(cuò)信息簇?cái)?shù)據(jù)到條件端口 , 則默認(rèn)設(shè)置為 Stop On Error, 即遇到己發(fā)生錯(cuò)誤的信息時(shí)停止 ,許多 VI 會(huì)返回一個(gè)出錯(cuò)信息參數(shù) , 它是一個(gè)簇 ,包含一個(gè)出錯(cuò)信息碼數(shù)值、一個(gè)出錯(cuò)狀態(tài)布爾量 , 和一個(gè)錯(cuò)誤源說(shuō)明字符串條件端口自動(dòng)解析出其中的出錯(cuò)狀態(tài)布爾量 , 根據(jù)這個(gè)值確定執(zhí)行什么操作。在條件端口上彈出快捷菜單將設(shè)置改為 Continue While Error, 則即使遇到錯(cuò)誤信息也不會(huì)退出循環(huán)。由于循環(huán)結(jié)構(gòu)在進(jìn)入循環(huán)后將不會(huì)再理會(huì)循環(huán)框外面

32、數(shù)據(jù)的變化 , 因此產(chǎn)生循環(huán)終止條件的數(shù)據(jù)源一定要放在循環(huán)框內(nèi) ,否則會(huì)造成死循環(huán)。321 While 循環(huán)的自動(dòng)索引、循環(huán)時(shí)間控制方法及使用使用數(shù)組自動(dòng)索引功能時(shí)應(yīng)該注意 ,While循環(huán)的循環(huán)次數(shù)不是事先確定的 , 在對(duì)進(jìn)入循環(huán)的數(shù)組進(jìn)行索引時(shí) , 如果數(shù)組成員已經(jīng)索引告罄 , 則 LabVIEW會(huì)自動(dòng)在后面追加缺省值 , 例如一個(gè)數(shù)值型數(shù)組有 10個(gè)成員 , 那么從第 11 次循環(huán)開(kāi)始 , 從數(shù)組通道進(jìn)入循環(huán)的數(shù)值就是 0, 而假如數(shù)組是布爾型 的 , 追加的就是 False 等等。 While 循環(huán)使用自動(dòng)索引時(shí)輸出數(shù)組的長(zhǎng)度一般在事前也是未知的。在快速函數(shù)模板的 Exec Ctrl

33、子模板中的 While 循環(huán)節(jié)點(diǎn), 放進(jìn)程序框圖中會(huì)自動(dòng)產(chǎn)生停止按鈕。33 順序結(jié)構(gòu)(Sequence Structure)331 層疊順序結(jié)構(gòu) 層疊順序結(jié)構(gòu) (Stacked sequence structure)在LabVIEW中,利用數(shù)據(jù)流機(jī)制可以實(shí)現(xiàn)很多順序執(zhí)行的功能,基于文本的編程語(yǔ)言 , 程序是按語(yǔ)句出現(xiàn)的順序執(zhí)行。而在數(shù)據(jù)流程序中 , 只要一個(gè)節(jié)點(diǎn)所有需要輸入的數(shù)據(jù)全部到達(dá)就開(kāi)始執(zhí)行。如果有時(shí)需要某個(gè)節(jié)點(diǎn)先于其他節(jié)點(diǎn)執(zhí)行 , 可以用順序結(jié)構(gòu)作為控制節(jié)點(diǎn)執(zhí)行次序的一種方法。順序結(jié)構(gòu)的圖標(biāo)看上去是電影膠片的樣子 , 可以包含有一個(gè)或多個(gè)子框圖 , 每一個(gè)子框圖被稱為一個(gè) Frame

34、。子框圖編號(hào)從 0 開(kāi)始 ,順序結(jié)構(gòu)從 0 號(hào)程序框圖內(nèi)的代碼開(kāi)始 ,順序結(jié)構(gòu) Fh 執(zhí)行每一個(gè)子框圖。有層疊順序結(jié)構(gòu) Stacked Sequence Structure 和平鋪?lái)樞蚪Y(jié)構(gòu)flat Sequence Structure兩種順序結(jié)構(gòu)。有多個(gè)子框圖時(shí),層疊順序結(jié)構(gòu)的子框圖像一摞卡片一樣重疊在一起,需要一層層打開(kāi)向這些子框圖填寫(xiě)代碼;而平鋪?lái)樞蚪Y(jié)構(gòu)像一卷展開(kāi)的電影膠片,所有的子框圖在一個(gè)平面上。層疊順序結(jié)構(gòu)節(jié)省程序框圖的空間,但是掩蓋了數(shù)據(jù)流的關(guān)系。平鋪?lái)樞蚪Y(jié)構(gòu)與它正好相反。332 順序結(jié)構(gòu)的建立在程序框圖中放置順序結(jié)構(gòu)的方法以及結(jié)構(gòu)邊框的自動(dòng)增長(zhǎng)、邊框大小的手動(dòng)調(diào)整等與循環(huán)結(jié)構(gòu)是一

35、樣的。剛放進(jìn)程序框圖的順序結(jié)構(gòu)里只有一個(gè)子框圖。在順序結(jié)構(gòu)邊框上點(diǎn)右鍵彈出的快捷菜單中選 Add Frame After或 Add Frame Before 可以逐個(gè)增加子框圖。增加子框圖后的層疊順序結(jié)構(gòu)如下圖所示 , 邊框的頂部出現(xiàn)子框圖標(biāo)識(shí)框 ,它的中間是子框圖標(biāo)識(shí) , 顯示出當(dāng)前框在順序結(jié)構(gòu)序列中的號(hào)碼 (0 到 n-l), 以及此順序結(jié)構(gòu)共有幾個(gè)子框圖。子框圖標(biāo)識(shí)兩邊分別是降序、升序按鈕 , 單擊它們可以分別查看前一個(gè)或后一個(gè)子框圖。在子框圖標(biāo)識(shí)上單擊鼠標(biāo)左鍵 ,則出現(xiàn)所有存在的子框圖名 ,可以選擇顯示 其中任意一個(gè)。在層疊順序結(jié)構(gòu)邊框上彈出快捷菜單可以進(jìn)行子框圖的復(fù)制 Duplica

36、te Frame 、刪除 Delete This Frame 或者移除整個(gè)順序結(jié)構(gòu) Remove Sequence, 此時(shí)只剩下頂層內(nèi)的程序框圖。 彈出快捷菜單選擇 Make This Frame- 選項(xiàng) , 可以為當(dāng)前 Frame 指定順序號(hào) ,此順序號(hào)原有的 代碼與它交換位置。在層疊順序結(jié)構(gòu)邊框上彈出快捷菜單選擇 Replace 選項(xiàng) , 可以把它替換為平鋪?lái)樞蚪Y(jié)構(gòu) Replace with Flat Sequence 或選擇結(jié)構(gòu) Replace with Case Structure。選擇結(jié)構(gòu)也可以替換為層疊順序結(jié)構(gòu)。333 平鋪?lái)樞蚪Y(jié)構(gòu)平鋪?lái)樞蚪Y(jié)構(gòu)(Flat Sequence Stru

37、cture )增加子框圖后的平鋪?lái)樞蚪Y(jié)構(gòu)如下圖所示。平鋪?lái)樞蚪Y(jié)構(gòu)與層疊順序結(jié)構(gòu)主要有這樣幾點(diǎn)不同 :1. 不可以復(fù)制子框圖。2. 只能替換為層疊順序結(jié)構(gòu)而不能直接替換為選擇結(jié)構(gòu)。3. 移除平鋪?lái)樞蚪Y(jié)構(gòu)后各個(gè)子框圖的代碼都保留。34 選擇結(jié)構(gòu)Case Sfrucfure 選擇結(jié)構(gòu)Case Sfrucfure選擇結(jié)構(gòu)包含有多個(gè)子框圖 ,每個(gè)子框圖的一段程序代碼對(duì)應(yīng)一個(gè) Case 選項(xiàng) ,程序運(yùn)行 時(shí)選擇其中的一段執(zhí)行。341 選擇結(jié)構(gòu)的建立在程序框圖中放置選擇結(jié)構(gòu)的方法以及結(jié)構(gòu)邊框的自動(dòng)增長(zhǎng)、邊框大小的手動(dòng)調(diào)整等與循環(huán)結(jié)構(gòu)是一樣的。放進(jìn)程序框圖的選擇結(jié)構(gòu)圖標(biāo)如上圖所示。它的子框圖像一摞卡片一樣重疊

38、在一起,任何時(shí)候只顯示其中一個(gè)。向這些子框圖填寫(xiě)代碼也要一層層打開(kāi)進(jìn)行。選擇結(jié)構(gòu)左側(cè)邊框上帶 ? 的圖標(biāo)是選擇端口。由選擇結(jié)構(gòu)外連接到選擇端口的值決定了選擇結(jié)構(gòu)應(yīng)該執(zhí)行哪一個(gè)子框圖的代碼。這個(gè)值的類型可以是整型、布爾型、字符型或枚舉型。選擇端口的圖標(biāo)顏色也會(huì)隨連接的數(shù)值類型而改變。默認(rèn)情況是連接一個(gè)布爾量,圖標(biāo)為綠色,共有兩個(gè)子框圖。如圖3-4-1 所示 , 為選擇端口連接了一個(gè)枚舉型控制件“機(jī)組號(hào)”, 并為它輸入3個(gè)值“Nol”、“N02”、“N03”。為枚舉型數(shù)據(jù)賦值的方法是 , 用文本工具寫(xiě)完一個(gè)枚舉值后,在 圖標(biāo)上彈出的快捷菜單中選 Add Item After或 Add Item B

39、efore, 再用文本工具為下一個(gè)枚舉量賦值。選擇結(jié)構(gòu)邊框的頂部是子框圖標(biāo)識(shí)框 ,它的中間是子框圖標(biāo)識(shí) ,兩邊分別是降序、升序 按鈕。子框圖標(biāo)識(shí)指明當(dāng)前顯示的子框圖對(duì)應(yīng)的選工頁(yè) , 但是程序運(yùn)行時(shí)并不一定執(zhí)行當(dāng)前顯示 的子框圖。枚舉型控制件連接到選擇端口以后,子框圖標(biāo)識(shí)自動(dòng)轉(zhuǎn)換為前兩個(gè)枚舉值 Nol 和 N02, 因?yàn)槟壳爸挥袃蓚€(gè)子框圖。在選擇結(jié)構(gòu)邊框上彈出快捷菜單選 Add Case for EveIYE Value, 則條件端口有幾個(gè)枚舉值 , 就會(huì)增加到幾個(gè)子框圖。當(dāng)選擇端口輸入數(shù)值型或字符型數(shù)據(jù)時(shí) , 則需要在彈出的快捷菜單中選 Add Case After 或 Add Case Be

40、fore 逐個(gè)增加子框圖。 子框圖標(biāo)識(shí)兩邊分別是降序、升序按鈕 , 單擊它們可以分別查看或編輯前一個(gè)或后一個(gè)子框圖。在子框圖標(biāo)識(shí)上單擊鼠標(biāo)左鍵,則出現(xiàn)所有存在的子框圖名,可以選擇顯示其中任意一個(gè)。通過(guò)在選擇結(jié)構(gòu)邊框上彈出快捷菜單還可以進(jìn)行子框圖的復(fù)制 Duplicate Case 、刪除 Delete This Case, 或者移除整個(gè)選擇結(jié)構(gòu) REmove Case Stmcture, 這時(shí)只剩下頂層內(nèi)的程序框圖。接到選擇結(jié)構(gòu)的選擇端口 , 子框圖標(biāo)識(shí)自動(dòng)變?yōu)?No Error 和 Error 兩項(xiàng) , 并且 No Error 子框圖圍繞一個(gè)綠色邊框 ,Error 子框圖圍繞一個(gè)紅色邊框。如

41、果 error out 參數(shù)中沒(méi)有指出發(fā)生錯(cuò)誤,就執(zhí)行 No Error 子框圖的代碼 , 否則執(zhí)行 Error 子框圖的代碼。在圖 所示的程序中 , 調(diào)用了快速函數(shù)模板 Input 子模板中的 Simulate Signal VI, 讓它產(chǎn)生一個(gè)帶噪聲的正強(qiáng)信號(hào)。如果這個(gè) VI 執(zhí)行時(shí)沒(méi)有發(fā)生錯(cuò)誤 , 就調(diào)用快速函數(shù)模板 呻 Signal Analysis 子模板中的 Statistics VI 計(jì)算它輸出信號(hào)的算術(shù)平均值 , 并提示信號(hào)正常。 如果這個(gè) VI 執(zhí)行時(shí)發(fā)生錯(cuò)誤 , 只提示生成信號(hào)發(fā)生錯(cuò)誤。3.5 公式節(jié)點(diǎn)Formula Node公式節(jié)點(diǎn)假如程序中有一些復(fù)雜的數(shù)學(xué)計(jì)算 , 那么

42、使用函數(shù)編寫(xiě)程序圖形代碼是比較麻煩的。使用公式節(jié)點(diǎn)可以直接輸入復(fù)雜的公式或多個(gè)公式 , 而不必創(chuàng)建多段代碼。351 公式節(jié)點(diǎn)的建立在 StrueUIre 函數(shù)子模板和 Analyze Mathematics Formula 函數(shù)子模板都可以找到公式節(jié)點(diǎn)。在程序框圖中放置公式節(jié)點(diǎn)的方法以及公式節(jié)、點(diǎn)邊框大小的調(diào)整與其他結(jié)構(gòu)是一樣的。使用文本工具往公式節(jié)點(diǎn)中輸入公式 , 也可以將符合語(yǔ)法要求的代碼直接復(fù)制到公式節(jié)點(diǎn)中。一個(gè)公式節(jié)點(diǎn)可以有多個(gè)公式。在公式節(jié)點(diǎn)邊框上彈出快捷菜單 , 選擇 Add Input 或 Add Output 為公式節(jié)點(diǎn)創(chuàng)建輸入或 輸出端口。通過(guò)在端口上彈出快捷菜單 , 選擇

43、Change to Output 或 Change to InpM 可以對(duì)輸 入輸出端口數(shù)據(jù)流方向進(jìn)行轉(zhuǎn)換。在端口的方框中輸入變量名 , 變量名要區(qū)分大小寫(xiě)。一個(gè) 公式節(jié)點(diǎn)可以有多個(gè)變量 , 輸入端口不能重名 , 輸出端口也不能重名 , 但是輸出和輸入端口 可以重名。每個(gè)輸入端口必須與程序框圖中一個(gè)為變量賦值的端口連線。輸出端口連接到顯 示件或需要此數(shù)據(jù)的后續(xù)節(jié)點(diǎn)。352 公式節(jié)點(diǎn)的語(yǔ)法公式節(jié)點(diǎn)中的代碼看上去就像一段 C 語(yǔ)言的程序。公式節(jié)點(diǎn)中也可以聲明變量 , 可以使 用 C 語(yǔ)言的語(yǔ)法 , 可以加語(yǔ)句注釋 , 每個(gè)公式語(yǔ)句也是以分號(hào)結(jié)束。公式節(jié)點(diǎn)的變量可以與 輸入輸出端口連線無(wú)關(guān) , 但是

44、變量不能有單位。公式節(jié)點(diǎn)中允許使用的函數(shù)名可以在上下文幫助窗口中找到。而運(yùn)算符、語(yǔ)法和函數(shù)的詳細(xì)說(shuō)明則需要在下一級(jí)的幫助窗口中才能找到。353 公式節(jié)點(diǎn)常用運(yùn)算符條件運(yùn)算符 ? 前面的部分是辨別條件 ,“?”和 “:”之間是辨別條件為 True 時(shí)的表達(dá)式 ,“:” 后面是辨別條件為 False 時(shí)的表達(dá)式。用條件運(yùn)算符表達(dá)以下的代碼 :條件運(yùn)算符可以嵌套 ,例如有以下表達(dá)式 : X5 y=a X=-5)&(x5)?a:b;第四講 數(shù)據(jù)采集和信號(hào)輸出LabVIEW的數(shù)據(jù)采集(Data Acquisition)程序庫(kù)包括了許多NI公司數(shù)據(jù)采集(DAQ)卡的驅(qū)動(dòng)控制程序。通常,一塊卡可以完成多種功

45、能 - 模/數(shù)轉(zhuǎn)換,數(shù)/模轉(zhuǎn)換,數(shù)字量輸入/輸出,以及計(jì)數(shù)器/定時(shí)器操作等。用戶在使用之前必須DAQ卡的硬件進(jìn)行配置。這些控制程序用到了許多低層的DAQ驅(qū)動(dòng)程序。DAQ系統(tǒng)的基本任務(wù)是物理信號(hào)的產(chǎn)生或測(cè)量。但是要使計(jì)算機(jī)系統(tǒng)能夠測(cè)量物理信號(hào),必須要使用傳感器把物理信號(hào)轉(zhuǎn)換成電信號(hào)(電壓或者電流信號(hào))。有時(shí)不能把被測(cè)信號(hào)直接連接到DAQ卡,而必須使用信號(hào)調(diào)理輔助電路,先將信號(hào)進(jìn)行一定的處理。同樣產(chǎn)生的控制信號(hào)的也并不一定直接能去控制一些儀器, 有時(shí)也需要信號(hào)的調(diào)理輔助電路??傊?,數(shù)據(jù)采集是借助軟件來(lái)控制整個(gè)DAQ系統(tǒng) 包括采集原始數(shù)據(jù)、分析數(shù)據(jù)、給出結(jié)果及產(chǎn)生控制信號(hào)等。41 數(shù)據(jù)采集系統(tǒng)的構(gòu)成

46、在計(jì)算機(jī)主機(jī)箱中,插上數(shù)據(jù)采集卡,可以通過(guò)卡上的接線端子向外部輸出信號(hào)和向計(jì)算機(jī)內(nèi)采集信號(hào),采集卡內(nèi)部可以完成多種功能,如模/數(shù)、數(shù)/模轉(zhuǎn)換,數(shù)字量輸入/輸出,以及計(jì)數(shù)器/定時(shí)器操作等,在使用采集卡之前必須設(shè)置好它的硬件設(shè)置,可以根據(jù)需要設(shè)置成單端對(duì)地采集和差分采集兩種方式,可以采集模擬量和數(shù)字量,同時(shí)采集8路信號(hào),并可以輸出兩路模擬信號(hào)和8路數(shù)字信號(hào),采集和輸出的電壓范圍為正負(fù)10伏,最高采樣率為200ks/s,最高輸出速率為10ks/s, 單位是點(diǎn)數(shù)/每秒,其采集和輸出的通道號(hào)與接線端子標(biāo)號(hào)的對(duì)應(yīng)關(guān)系如下: 采集端:ACH068,ACH133,ACH265,ACH330,ACH428, A

47、CH560,ACH625,ACH757,ACH834,ACH966,ACH1031,ACH1163,ACH1261,ACH1326,ACH1458,ACH1523輸出端:DAC0OUT22, DAC1OUT21接地端:AOGND55, AOGND54, AIGND56,DGND53, DGND15 采集系統(tǒng)框圖:傳感器模擬信號(hào)計(jì)算機(jī)數(shù)據(jù)采集卡軟件 電路板 42 模擬輸出421 數(shù)據(jù)采集VI程序的調(diào)用方法LabVIEW的DAQ程序包括模擬輸入、模擬輸出、計(jì)數(shù)器操作、或者數(shù)字輸入、輸出等。你可以在框圖程序窗口下選擇Data Acquisition。 再在此子模板下,可以看到6個(gè)子模板:Analog

48、 Input, Analog Output, Digital I/O, Counter, Calibration and Configuration和Signal Conditioning。在上述6個(gè)子模板下,每個(gè)子模板又分成Easy I/O Vis, Intermediate Vis, Utility Vis和Advanced Vis。下面以Analog Output子模板為例進(jìn)行解釋。如圖所示,在其頂層是簡(jiǎn)單模擬量輸出VI程序(Easy AO),中間層是中級(jí)模擬量輸出VI程序(Intermediate AO),然后下面是兩個(gè)圖標(biāo),一個(gè)用于調(diào)用模擬輸出應(yīng)用程序(Utility AO),一個(gè)調(diào)

49、用高級(jí)模擬量輸出程序(Advanced AO)。高級(jí)程序涉及到與DAQ驅(qū)動(dòng)程序的低層接口,而通用應(yīng)用程序是中級(jí)程序的組合。簡(jiǎn)單I/O程序僅僅只是表面層接口程序,它能執(zhí)行基本的模擬量輸入、模擬量輸出、數(shù)字I/O,以及計(jì)數(shù)器/定時(shí)器操作。它簡(jiǎn)單易用,并且包含一個(gè)簡(jiǎn)單的出錯(cuò)處理方法。當(dāng)出錯(cuò)時(shí),將彈出一個(gè)對(duì)話框,顯示出錯(cuò)信息,而用戶可以選擇中止程序執(zhí)行或者忽略錯(cuò)誤。相對(duì)于簡(jiǎn)單程序而言,中級(jí)程序具備更多的硬件設(shè)置功能,靈活性,并且可以更有效地開(kāi)發(fā)實(shí)用程序。它具有許多簡(jiǎn)單程序所缺乏的功能,如外部時(shí)鐘等。它對(duì)出錯(cuò)的處理也更加靈活,可以把出錯(cuò)狀態(tài)信息傳遞給其它的程序,編程處理出錯(cuò)情況。422 Single-P

50、oint Output (單點(diǎn)輸出)下圖是往多個(gè)模擬輸出通道寫(xiě)數(shù)據(jù)(刷新并保持模出口的電壓)的流程圖:圖42 多通道單點(diǎn)刷新流程圖注意: 流程圖中的values數(shù)組的第一個(gè)數(shù)值對(duì)應(yīng)第一個(gè)channel,依此類推,不要跟以后的Scaled Array搞混, 那相當(dāng)于輸出一個(gè)波形了。Buffered Analog Output (緩沖輸出)下圖是往多個(gè)模擬輸出通道輸出波形的流程圖:圖43 多個(gè)模擬通道輸出波形流程圖以一定的刷新率(update rate)往通道口寫(xiě)數(shù)據(jù),波形輸出完后AO口保持最后一點(diǎn)的電壓值。423 如何畫(huà)用戶定義的波形如果要發(fā)生常見(jiàn)的波形比如正弦波,方波,三角波等,可以在Wave

51、form Generation 功能板上選擇,相當(dāng)于波形發(fā)生器。如下圖:圖44 波形發(fā)生器模板但是如果想要畫(huà)用戶自己特定的波形,比如特殊的控制時(shí)序,那么就要用其他方法了。一般的波形用公式節(jié)點(diǎn)就可以解決問(wèn)題,下面就舉一個(gè)例子來(lái)介紹一下公式節(jié)點(diǎn)。比如要產(chǎn)生如下的波形:圖45 用戶需要產(chǎn)生的波形圖其中在0ms800ms中保持5V不變,而在800ms-900ms之間成以e為底的指數(shù)下降到0V一直延續(xù)到1000ms.假定波形輸出時(shí)的刷新率(update rate)1000 points/sec,那么1000ms即1sec中輸出點(diǎn)數(shù)為1000點(diǎn),正好每毫秒一個(gè)點(diǎn)。這樣Time(x)與Amplitude(y

52、)之間就可以建立關(guān)系,對(duì)于上面的波形關(guān)鍵是800ms-900ms之間那段,其實(shí)有很多下降方法,我們就選擇其中的一種:y=10*exp(800-x)*ln(2)/100)-5;下圖就是編這個(gè)波形的流程圖:圖46 產(chǎn)生用戶定義波形的流程圖注意:要想到時(shí)候波形輸出的時(shí)候調(diào)用這個(gè)波形,就要?jiǎng)?chuàng)建聯(lián)接器端口。424 單通道模擬輸出如果想要對(duì)模擬輸出有更多的控制,就要用到中級(jí)的DAQ VIs來(lái)編程,下面這個(gè)VI就是用中級(jí)模塊來(lái)實(shí)現(xiàn)單通道模擬輸出的VI。圖47 單通道模擬輸出流程圖上面這個(gè)程序是把CH0的波形按一定的刷新頻率(update rate)輸出到特定的DAQ卡(device)上的一個(gè)AO Chann

53、el上,波形輸出完后端口的電壓保持在最后一點(diǎn)的電壓值;AO CONFIG, AO WRITE, AO START, AO WAIT,Error等節(jié)點(diǎn)都有特定的作用,下面就以數(shù)據(jù)流的過(guò)程來(lái)介紹一下各個(gè)節(jié)點(diǎn)的作用。AO CONFIG是對(duì)DAQ卡進(jìn)行初始化指定要輸出的板子號(hào)和通道號(hào),上面這個(gè)流程中,在設(shè)定Channel是由一個(gè)Build Array節(jié)點(diǎn),目的是把指定的通道號(hào)(標(biāo)量)轉(zhuǎn)換為一維數(shù)組的格式,因?yàn)锳O CONFIG只接受數(shù)組指定的Channels。同時(shí)也設(shè)定Buffer的大小,一般來(lái)說(shuō)Buffer的大小跟波形的點(diǎn)數(shù)相同這樣的話如果想要多次循環(huán)輸出此波形,兩個(gè)波形之間就不會(huì)有間隔,也不會(huì)出現(xiàn)

54、一個(gè)波形還沒(méi)有輸出完,結(jié)下來(lái)又開(kāi)始重新輸出這個(gè)波形;其中CH0右上角的Array Size節(jié)點(diǎn)就是用來(lái)讀取CH0波形的點(diǎn)數(shù)來(lái)作為Buffer Size的大小。AO WRITE是把波形往指定大小的Buffer里寫(xiě)數(shù)據(jù),因?yàn)檫@個(gè)圖標(biāo)也只接受二維數(shù)組,所以先要把一路的一維數(shù)組通過(guò)Build Array變成二維數(shù)組的格式。到這里為止數(shù)據(jù)就已經(jīng)存在緩沖區(qū)里了。AO START是開(kāi)始把緩沖區(qū)里的數(shù)據(jù)按一定的刷新頻率(update rate)往在AO CONFIG里指定的模擬輸出口輸出。還可以設(shè)定要循環(huán)輸出的次數(shù)(number of buffer iterations)。在這里波形才真正的開(kāi)始輸出。AO W

55、AIT是等待波形輸出完成,然后再進(jìn)行AO CLEAR的節(jié)點(diǎn)執(zhí)行,AO CLEAR是解除對(duì)DAQ卡的設(shè)置,同時(shí)釋放Buffer;如果不等待波形輸出完,執(zhí)行AO CLEAR,那么輸出就被停止了。但是如果是無(wú)限循環(huán)輸出的話,就是iterations的值為0,那么就不能用AO WAIT這個(gè)節(jié)點(diǎn)了,因?yàn)樗鼤?huì)一直等下去,后面的程序不可能被執(zhí)行了。最后一個(gè)節(jié)點(diǎn)Error是處理出錯(cuò)信息的,從AO CONFIG開(kāi)始出錯(cuò)信息一直被傳遞到Error然后進(jìn)行處理,告訴用戶。與其相對(duì)應(yīng)的上面的藍(lán)色細(xì)線是傳遞Task ID用的,說(shuō)明是在處理同一個(gè)任務(wù)。425 多通道同步輸出多通道如果需要同步輸出,關(guān)鍵是把所要輸出的波形放

56、在一起組成一個(gè)二維數(shù)組,下圖就是兩通道同步輸出兩路信號(hào)的例子:圖48 多通道同步輸出流程圖CH0,和CH1通過(guò)Build Array組成一個(gè)二維數(shù)組,然后轉(zhuǎn)置數(shù)組用Transpose 2D Array節(jié)點(diǎn),這是應(yīng)該注意的地方;然后把這兩路波形的共同點(diǎn)數(shù)經(jīng)過(guò)Index Array 和 Array Size 輸入進(jìn)AO CONFIG節(jié)點(diǎn)中的Buffer Size接口。程序的最后是用AO Write One Update使輸出口的電壓清零。43 模擬輸入模擬輸入的模板與模擬輸出的模板類似,包括易用函數(shù)和中級(jí)函數(shù)等,它的模板如下圖所示。使用易用模塊輸出模擬信號(hào)的流程圖如下圖所示。使用中級(jí)模塊連續(xù)輸出模

57、擬信號(hào)的流程圖如下所示。 輸入模塊(即采集模塊)的器件和通道設(shè)置與輸出模塊類似,采樣率與采樣點(diǎn)數(shù)以及緩存大小也同樣要注意合理匹配,同時(shí)要滿足采樣定律,被采信號(hào)不能高于采樣率的一半。實(shí)驗(yàn)一 信號(hào)的發(fā)生與顯示實(shí)驗(yàn)內(nèi)容:1初步學(xué)習(xí)在LabVIEW開(kāi)發(fā)環(huán)境下的基本操作和簡(jiǎn)單的編程方法。2學(xué)習(xí)創(chuàng)建一個(gè)頻率、幅度可調(diào)并能產(chǎn)生方波和正弦波的信號(hào)發(fā)生器,并通過(guò)該過(guò)程學(xué)習(xí)一些基本函數(shù)的用法。3嘗試創(chuàng)建一臺(tái)虛擬示波器的控制面板,以便在數(shù)據(jù)采集的實(shí)驗(yàn)中使用。實(shí)驗(yàn)步驟:1由開(kāi)始程序National Instruments LabVIEWLabVIEW,選擇NEW VI進(jìn)入LabVIEW環(huán)境,顯示底色為灰色的前面板,點(diǎn)

58、擊WindowsShow diagram顯示流程圖面板,點(diǎn)擊WindowsShow panel,則又切換至前面板,在前面板,選WindowsShow Controls Palette/Shows Tools Palette顯示工具模板和控制模板(見(jiàn)下圖),一些控制量如旋鈕和開(kāi)關(guān)等的圖標(biāo)在控制模板上,選擇這些圖標(biāo)并放置在前面板上,會(huì)在流程圖上出現(xiàn)相應(yīng)的端子,由此在前面板控制程序中的數(shù)據(jù),在流程圖面板,選WindowsShow Functions Palette,顯示功能模板,可在流程圖面板上調(diào)用它上面的功能函數(shù)創(chuàng)建程序,循環(huán)、數(shù)學(xué)運(yùn)算、比較和公式節(jié)點(diǎn)等在這些模板中調(diào)用。2創(chuàng)建信號(hào)發(fā)生器子程序通過(guò)

59、調(diào)用Functions模板中的Signal Processing子模板中的 Signal Generation Sine Wave.vi。用工具欄里的連線工具點(diǎn)在模板上,當(dāng)顯示出samples、f等提示后,點(diǎn)擊右鍵Creat Control,在前面板上會(huì)顯示可調(diào)節(jié)的控制量,samples、f和amplitude,幅度單位是V。 前面板 流程圖在模擬狀態(tài)下,信號(hào)頻率以每秒周期數(shù)為單位(Hz),但在數(shù)字系統(tǒng)中常采用數(shù) 字頻率,單位是周期數(shù)/采樣點(diǎn),也被稱為標(biāo)準(zhǔn)頻率,它們之間轉(zhuǎn)換關(guān)系如下: 模擬頻率=數(shù)字頻率采樣頻率; 數(shù)字頻率=模擬頻率/采樣頻率; (采樣頻率是每秒采樣的點(diǎn)數(shù))上圖中的模塊采用的是

60、數(shù)字頻率,所以要轉(zhuǎn)換成模擬頻率。前面板和流程圖如下:改變采樣點(diǎn)數(shù)、采樣率、模擬頻率和數(shù)字頻率,觀察顯示的波形,并解釋。3生成方波信號(hào),在流程圖中加一個(gè)Case結(jié)構(gòu),該結(jié)構(gòu)可以含有兩個(gè)或更多的子程序(Case),由與問(wèn)號(hào)連接的外部的控制量決定程序執(zhí)行那一個(gè)子程序(Case),控制量可以是布爾量、整數(shù)或者字符串等。選Function Structures 中的Case結(jié)構(gòu),將Sine Wave.vi的圖標(biāo)框住,注意Case的邊框上出現(xiàn)黑色的小方塊,表示與外部連線的節(jié)點(diǎn),上邊框會(huì)顯示 True或 False,將鼠標(biāo)放在黑色三角型上點(diǎn)右鍵可確定當(dāng)前是True或 False(make this case

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論