版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、虛擬儀器與智能測量實(shí)驗(yàn)指導(dǎo)書虛擬儀器與智能測量實(shí)驗(yàn)指導(dǎo)書董介春青島大學(xué)電子信息學(xué)院2016.9說明1、注意:在實(shí)驗(yàn)之前,首先在計算機(jī)的F盤下面創(chuàng)建一個以班級+姓名+實(shí)驗(yàn)幾命名的目錄,如電子1班張三實(shí)驗(yàn)一,所有的實(shí)驗(yàn)程序都保存到該目錄中。2、實(shí)驗(yàn)箱底板功能說明(1)本系統(tǒng)所用NI PCI-6221數(shù)據(jù)采集卡,含有24路雙向數(shù)字I/O,16路模擬輸入、2路模擬輸出,2路定時計數(shù)器,底板上68針插座接口為采集卡68-pin VHDCI母頭接口。采集卡用法詳見NI-DAQmx幫助。(2)壓力測量與步進(jìn)電機(jī)控制與霍爾元件位置檢測兩個實(shí)驗(yàn)?zāi)K集成在實(shí)驗(yàn)箱板底上。使用NI PCI-6221數(shù)據(jù)采集卡實(shí)驗(yàn)時,
2、需拔下XT1全部跳線帽,然后通過IO1和IO2將采集卡相應(yīng)端子與XT2連接起來。 目 錄第一篇 LabVIEW基礎(chǔ)單元1實(shí)驗(yàn)一 LabVIEW編程環(huán)境與基本操作1實(shí)驗(yàn)二 LabVIEW程序結(jié)構(gòu)循環(huán)結(jié)構(gòu)7實(shí)驗(yàn)三 LabVIEW程序結(jié)構(gòu)順序結(jié)構(gòu)與條件結(jié)構(gòu)11實(shí)驗(yàn)四 LabVIEW程序結(jié)構(gòu)事件結(jié)構(gòu)與狀態(tài)機(jī)14實(shí)驗(yàn)五 LabVIEW編程的數(shù)組與簇18實(shí)驗(yàn)六 LabVIEW編程的圖形顯示21實(shí)驗(yàn)七 LabVIEW字符串和文件I/O編程24實(shí)驗(yàn)八 LabVIEW信號分析與處理26第二篇 LabVIEW數(shù)據(jù)采集單元28實(shí)驗(yàn)九 模擬信號的采集與輸出28實(shí)驗(yàn)十 溫度采集與控制系統(tǒng)設(shè)計31實(shí)驗(yàn)十一 紅外數(shù)據(jù)傳輸系
3、統(tǒng)設(shè)計33實(shí)驗(yàn)十二 濕度測量計設(shè)計35實(shí)驗(yàn)十三 電子秤設(shè)計37實(shí)驗(yàn)十四 光強(qiáng)檢測與控制系統(tǒng)設(shè)計39實(shí)驗(yàn)十五 自動控制窗簾系統(tǒng)設(shè)計40實(shí)驗(yàn)十六 模擬電梯超重報警系統(tǒng)設(shè)計43實(shí)驗(yàn)十七 遙控電風(fēng)扇系統(tǒng)設(shè)計45第三篇 LabVIEW信號處理單元46實(shí)驗(yàn)十八 典型信號頻譜分析46實(shí)驗(yàn)十九 數(shù)字FIR濾波器48實(shí)驗(yàn)二十 數(shù)字IIR濾波器49第四篇 LabVIEW虛擬儀器單元50實(shí)驗(yàn)二十一 虛擬信號發(fā)生器50 第一篇 LabVIEW基礎(chǔ)單元實(shí)驗(yàn)一 LabVIEW編程環(huán)境與基本操作一、實(shí)驗(yàn)?zāi)康?了解LabVIEW的編程與運(yùn)行環(huán)境。2掌握LabVIEW的基本操作方法,并編制簡單的程序。3掌握使用調(diào)試工具調(diào)試VI
4、程序。4掌握VI子程序的建立和調(diào)用過程。二、實(shí)驗(yàn)原理虛擬儀器系統(tǒng)的概念不僅推進(jìn)了以儀器為基礎(chǔ)的測控系統(tǒng)的改造,同時也影響了以數(shù)據(jù)采集為主的測控系統(tǒng)的傳統(tǒng)構(gòu)造方法。過去獨(dú)立分散、互不相干的許多傳統(tǒng)儀器,在虛擬儀器系統(tǒng)的概念之下,正在逐漸靠攏、相互影響,并形成新的技術(shù)方法和技術(shù)規(guī)范。虛擬儀器系統(tǒng)的概念是測控系統(tǒng)的抽象。不管是傳統(tǒng)的還是虛擬的儀器,它們的功能都是相同的:采集數(shù)據(jù),對采集來的數(shù)據(jù)進(jìn)行分析處理,然后顯示處理的結(jié)果。它們之間的不同主要體現(xiàn)在靈活性方面。虛擬儀器由用戶自己定義,這意味著用戶可以自由地組合計算機(jī)平臺、硬件、軟件以及各種完成應(yīng)用系統(tǒng)所需要的附件。而這種靈活性在由制造商定義、功能固
5、定、獨(dú)立的傳統(tǒng)儀器上是達(dá)不到的。常用的數(shù)字萬用表、示波器、信號發(fā)生器、數(shù)據(jù)記錄儀以及溫度和壓力監(jiān)控器就是傳統(tǒng)儀器的代表?;谟嬎銠C(jī)的虛擬儀器得益于PC技術(shù)的發(fā)展。由于直接將儀器模塊插入到計算機(jī)中,我們就可以直接享用到臺式或便攜式計算機(jī)上出眾的處理能力、顯示、數(shù)據(jù)存儲以及連接性能等方面的優(yōu)勢,使測量以最有效的方式從使用傳統(tǒng)的儀器過渡到使用通用計算機(jī)?;谟嬎銠C(jī)的儀器不僅繼承了傳統(tǒng)儀器的標(biāo)準(zhǔn)測量能力,更增加了擴(kuò)展儀器概念的靈活性,使我們能夠更加直接、更加有效地面對當(dāng)今測量應(yīng)用的挑戰(zhàn)。更有意義的是,利用諸如LabVIEW、LabWindows/CVI等應(yīng)用開發(fā)環(huán)境,可以方便地使多臺儀器的測量能力結(jié)合
6、并同步工作,以建立功能強(qiáng)大的儀器系統(tǒng)。更進(jìn)一步,我們也可以開發(fā)自己的分析程序,實(shí)現(xiàn)那些有別于其它儀器或系統(tǒng)的功能。虛擬儀器系統(tǒng)技術(shù)的基礎(chǔ)是計算機(jī)系統(tǒng),核心是軟件技術(shù)。因此,美國國家儀器公司(NI)提出其著名的口號:The Software is the Instrument。為了使“軟件就是儀器”這句口號成為現(xiàn)實(shí),NI公司在軟件體系結(jié)構(gòu)的各個層次上,形成了完整的設(shè)備驅(qū)動程序、系統(tǒng)開發(fā)平臺、實(shí)用支持軟件、應(yīng)用軟件包相互支撐的格局,使虛擬儀器系統(tǒng)的概念不再“虛擬”。其中,LabVIEW就是美國NI公司推出的一套著名的虛擬儀器開發(fā)軟件平臺。1LabVIEW與虛擬儀器(VI)程序LabVIEW(Lab
7、oratory Virtual Instrument Engineering Workbench,實(shí)驗(yàn)室虛擬儀器集成環(huán)境)是一個高效的圖形化程序設(shè)計環(huán)境,也是一個功能強(qiáng)大的儀器和分析軟件應(yīng)用開發(fā)工具。它結(jié)合了簡單易用的圖形式開發(fā)環(huán)境與靈活強(qiáng)大的G語言,提供了一個直覺式的環(huán)境,與測量緊密結(jié)合,能迅速開發(fā)出有關(guān)數(shù)據(jù)采集、測量控制、數(shù)據(jù)分析、存儲及顯示的解決方案。像C一樣,LabVIEW也是通用的編程系統(tǒng),有一個龐大的函數(shù)庫,包括數(shù)據(jù)采集、GPIB、串口控制、數(shù)據(jù)分析、數(shù)據(jù)顯示及數(shù)據(jù)存儲等。LabVIEW也有傳統(tǒng)的程序調(diào)試工具,如設(shè)置斷點(diǎn)、以動畫方式顯示數(shù)據(jù)及其通過程序(子VI)的結(jié)果、單步執(zhí)行等,
8、便于程序的調(diào)試。使用LabVIEW開發(fā)平臺編制的程序稱為虛擬儀器程序,簡稱為VI。VI包括三個部分:程序前面板、框圖程序和圖標(biāo)/連接器。如圖1-1和圖1-2所示。 圖1-1 LabVIEW程序前面板 圖1-2 與前面板對應(yīng)的框圖程序圖1-3 工具模板程序前面板用于設(shè)置輸入數(shù)值和觀察輸出量,用于模擬真實(shí)儀表的前面板,其大小、外觀、功能布局均可以由用戶根據(jù)自己的需要進(jìn)行定制。在程序前面板上,輸入量被稱為控制(Controls),輸出量被稱為顯示(Indicators)。控制和顯示是以各種圖標(biāo)形式出現(xiàn)在前面板上,如旋鈕、開關(guān)、按鈕、圖表等,這使得前面板直觀易懂。2LabVIEW的操作模板圖1-4 控
9、制模板LabVIEW具有多個圖形化的操作模板,用于創(chuàng)建和運(yùn)行程序。該模板可以隨意在屏幕上移動,并可以放置在屏幕的任意位置。操縱模板有三類:工具(Tools)模板、控制(Controls)模板和功能(Functions)模板。1)工具模板(Tools Palette)工具模板提供了用于創(chuàng)建、修改和調(diào)試VI程序的工具。如果該模板沒有出現(xiàn),則可在Windows菜單下選擇Show Tools Palette命令以顯示。操作工具:使用該工具來操作前面板的控制和顯示。選擇工具:用于選擇、移動或改變對象的大小。標(biāo)簽工具:用于輸入標(biāo)簽文本或創(chuàng)建自由標(biāo)簽。創(chuàng)建自由標(biāo)簽時它會變成相應(yīng)形狀。連線工具:用于在框圖程序
10、上連接對象。圖1-5 功能模板對象彈出菜單工具:用左鼠標(biāo)鍵可以彈出對象的彈出式菜單。漫游工具:可以不需要使用滾動條而在窗口中漫游。斷點(diǎn)工具:使用該工具在VI的框圖對象上設(shè)置斷點(diǎn)。探針工具:在框圖程序內(nèi)的數(shù)據(jù)流線上設(shè)置探針,來觀察該線上的數(shù)據(jù)變化狀況。顏色提取工具:用來提取顏色用于編輯其他的對象。顏色工具:用來給對象定義顏色。顯示前景色和背景色。2)控制模板(Controls Palette)用控制模板可以給前面板添加輸入控制和輸出顯示。每個圖標(biāo)代表一個子模板。如果控制模板不顯示,可以用Windows菜單的Show Controls Palette功能打開它,也可以在前面板的空白處,點(diǎn)擊鼠標(biāo)右鍵
11、,以彈出控制模板,如圖1-4所示。注:只有當(dāng)打開前面板窗口時才能調(diào)用控制模板。3)函數(shù)模板(Functions Palette,又稱功能模板)功能模板是創(chuàng)建框圖程序的工具,其每一個頂層圖標(biāo)都表示一個子模板。若功能模板不出現(xiàn),則可用Show Functions Palette打開。如圖1-5所示。注:只有激活了框圖程序窗口,才能出現(xiàn)功能模板。3虛擬儀器程序的創(chuàng)建VI程序具有三個要素:前面板、框圖程序和圖標(biāo)/連接器。1)前面板使用輸入控制和輸出顯示來構(gòu)建前面板??刂剖怯脩糨斎霐?shù)據(jù)到程序的接口,顯示是輸出程序產(chǎn)生的數(shù)據(jù)接口。兩種最常用的前面板對象是數(shù)字控制和數(shù)字顯示。若想在數(shù)字控制中輸入或修改數(shù)值,
12、可使用操作工具點(diǎn)擊控制部件和增減按鈕,或用操作工具或標(biāo)簽工具雙擊數(shù)值欄進(jìn)行數(shù)值修改。2)框圖程序框圖程序是由節(jié)點(diǎn)、端點(diǎn)、圖框和連線四種元素構(gòu)成的。節(jié)點(diǎn)類似于文本語言的語句、函數(shù)或子程序。LabVIEW有兩種節(jié)點(diǎn):函數(shù)和子VI節(jié)點(diǎn)。區(qū)別:函數(shù)節(jié)點(diǎn)是LabVIEW以編譯好的機(jī)器代碼供用戶使用的,而子VI節(jié)點(diǎn)是以圖形語言形式提供給用戶的。用戶可訪問和修改任一子VI節(jié)點(diǎn)的代碼,但無法對函數(shù)節(jié)點(diǎn)進(jìn)行修改。端點(diǎn)是只有一路輸入/輸出,且方向固定的節(jié)點(diǎn)。LabVIEW有三類端點(diǎn):前面板對象端點(diǎn)、全局與局部變量端點(diǎn)和常量端點(diǎn)。對象端點(diǎn)是數(shù)據(jù)在框圖程序部分和前面板之間傳輸?shù)慕涌凇R话銇碚f,一個VI前面板上的對象都
13、在框圖中有一個對象端點(diǎn)與之一一對應(yīng)??刂茖ο髮?yīng)的端點(diǎn)在框圖中是用粗框框住的,如圖1-6中的A和B端點(diǎn),它們只能作為數(shù)據(jù)流源點(diǎn)。顯示對象對應(yīng)的端點(diǎn)是用細(xì)框框住的。如A+B和A-B端點(diǎn)。它們只能作為數(shù)據(jù)流終點(diǎn)。常量端點(diǎn)永遠(yuǎn)只能作為數(shù)據(jù)流源點(diǎn)。圖框是LabVIEW實(shí)現(xiàn)程序結(jié)構(gòu)控制命令的圖形表示。如循環(huán)控制、條件分支控制和順序控制等,編程人員可以使用它們控制VI程序的執(zhí)行方式。代碼接口節(jié)點(diǎn)(CIN)是框圖程序與用戶提供的C語言文本程序的接口。圖1-6 簡單的程序框圖和前面板連線是端口間的數(shù)據(jù)通道。類似于普通程序中的變量。數(shù)據(jù)是單向流動的,從源端口向一個或多個目的端口流動。不同的線型代表不同的數(shù)據(jù)類型
14、,并以不同的顏色予以強(qiáng)調(diào)。整 型 藍(lán)色浮點(diǎn)數(shù) 橙色邏輯量 綠色字符串 粉色文件路徑 青色當(dāng)需要連接兩個端點(diǎn)時,在第一個端點(diǎn)上點(diǎn)擊連線工具,再點(diǎn)擊第二個端點(diǎn)。當(dāng)把連線工具放在端點(diǎn)上時,該端點(diǎn)將會閃爍,表示連線將會接通。當(dāng)連線工具從一個端口接到另一個端口時,不需要按鼠標(biāo)鍵。當(dāng)連線轉(zhuǎn)彎時,按空格鍵可以改變轉(zhuǎn)角的方向。3)從框圖程序窗口創(chuàng)建前面板對象用選擇和連線工具,可以用鼠標(biāo)右鍵點(diǎn)擊任一節(jié)點(diǎn)和端點(diǎn),然后從彈出菜單中選擇“創(chuàng)建常數(shù)”,“創(chuàng)建控制”,或“創(chuàng)建顯示”等命令。4)數(shù)據(jù)流編程控制VI程序的運(yùn)行方式叫做“數(shù)據(jù)流”。對一個節(jié)點(diǎn)而言,只有當(dāng)它的所有輸入端口上的數(shù)據(jù)都成為有效數(shù)據(jù)時,它才能被執(zhí)行。當(dāng)節(jié)
15、點(diǎn)程序運(yùn)行完畢后,它把結(jié)果數(shù)據(jù)送給所有的輸出端口,使之成為有效數(shù)據(jù)。并且數(shù)據(jù)很快從源送到目的端口。如圖1-7所示,這個VI程序把兩個輸入相乘,再減去50.0。這個程序中,框圖程序從左往右執(zhí)行,這個執(zhí)行次序不是由于對象的擺放位置,而是由于相減運(yùn)算函數(shù)的一個輸入量是相乘函數(shù)的運(yùn)算結(jié)果,它只有當(dāng)相乘運(yùn)算完成并把結(jié)果送到減運(yùn)算的輸入口后才能繼續(xù)下去。 圖1-7 數(shù)據(jù)流舉例 圖1-8數(shù)據(jù)流舉例如圖1-8所示,你認(rèn)為哪一個節(jié)點(diǎn)函數(shù)將先執(zhí)行?是乘法還是除法?在這個例子中,我們無法知道哪一個節(jié)點(diǎn)函數(shù)首先執(zhí)行,因?yàn)樗休斎肓繋缀跬瑫r到達(dá)。4程序調(diào)試技術(shù)程序調(diào)試是進(jìn)行任何程序設(shè)計過程中所必須的過程。在程序設(shè)計中不
16、可避免地會有各種邏輯上和語法上的錯誤,這些都需要通過程序調(diào)試找出來加以改正。1)找出語法錯誤如果一個VI程序存在語法錯誤,則運(yùn)行按鈕將會變成一個折斷的箭頭,表示程序不能被執(zhí)行。這個按鈕被稱作錯誤列表。點(diǎn)擊,則LabVIEW彈出錯誤清單窗口,點(diǎn)擊其中任何一個所列出的錯誤,選用Find功能,則出錯的對象或端口就會變成高亮。2)設(shè)置執(zhí)行程序高亮點(diǎn)擊“高亮執(zhí)行”按鈕使其變成高亮形式,再點(diǎn)擊運(yùn)行按鈕,VI程序就以較慢的速度運(yùn)行,沒有被執(zhí)行的代碼灰色顯示,執(zhí)行后的代碼高亮顯示,并顯示數(shù)據(jù)流線上的數(shù)據(jù)值。這樣,我們就可以在根據(jù)數(shù)據(jù)的流動狀態(tài)跟蹤程序的執(zhí)行。3)斷點(diǎn)與單步執(zhí)行使用斷點(diǎn)工具可以在程序的某一地點(diǎn)中
17、止執(zhí)行,用探針或者單步方式查看數(shù)據(jù)。使用斷點(diǎn)工具時,點(diǎn)擊設(shè)置或者清除斷點(diǎn)的地方。斷點(diǎn)的顯示對于節(jié)點(diǎn)或者圖框表示為紅框,對于連線表示為紅點(diǎn)。當(dāng)VI程序運(yùn)行到斷點(diǎn)被設(shè)置處,程序被暫停在將要執(zhí)行的節(jié)點(diǎn),以閃爍表示。按下單步執(zhí)行按鈕,閃爍的節(jié)點(diǎn)被執(zhí)行,下一個將要執(zhí)行的節(jié)點(diǎn)變?yōu)殚W爍,指示它將被執(zhí)行。4)探針可以用探針工具來查看當(dāng)框圖程序流經(jīng)某一根連接線時的數(shù)據(jù)值。探針顯示窗口總是被顯示在前面板窗口或框圖窗口的上面。三、實(shí)驗(yàn)內(nèi)容1創(chuàng)建我的第一個VI。編寫程序,實(shí)現(xiàn)將一華氏溫度(F)轉(zhuǎn)換成攝氏溫度(C)的功能。已知攝氏溫度與華氏溫度的關(guān)系C5(F-32)/9。(1)前面板設(shè)計如圖1-9,華氏溫度為數(shù)值輸入控
18、件,攝氏溫度作為顯示控件,按要求設(shè)置標(biāo)簽和顯示范圍,同時配數(shù)字顯示。 圖1-9 Temp前面板 圖1-10 Temp程序框圖(2)程序框圖如圖1-10所示設(shè)計程序框圖,建議數(shù)值常數(shù)使用在連接端子處點(diǎn)擊右鍵創(chuàng)建(Create)常量(Constant)的方法更好些。(3)把該VI命名為Temp.vi,保存為 F:Yourname的文件夾中。2自己創(chuàng)建一個VI,完成以下功能:將兩個輸入的數(shù)字相加并顯示結(jié)果;將同樣兩個輸入數(shù)字相乘并顯示結(jié)果;比較兩個輸入數(shù)字,如果數(shù)字相等,則LED指示燈亮。最后,保存為Simple Math.vi文件。如圖1-11:A和B為數(shù)字控件輸入,兩個數(shù)字指示器分別顯示輸出結(jié)果
19、A+B和A×B,當(dāng)輸入數(shù)字A和B相同時,將點(diǎn)亮LED。 圖1-11 實(shí)驗(yàn)2的前面板3子VI的創(chuàng)建與調(diào)用)打開練習(xí)1中Temp.vi。)設(shè)計圖標(biāo)編輯器,如圖1-12所示,繪制一個溫度計,創(chuàng)建一個TEMP的文本。注意只能在前面板中編輯圖標(biāo)和聯(lián)接器。圖1-12編輯后的圖標(biāo)編輯器窗口3)設(shè)置聯(lián)接器端子。4)調(diào)用創(chuàng)建的子Temp,使其實(shí)現(xiàn)實(shí)驗(yàn)1的功能。4設(shè)計一個VI程序,計算一元二次方程的兩根。 四、思考題1. 寫一個VI比較兩個數(shù)的大小,如圖所示:當(dāng)A>B時,指示燈亮。2. 寫一個溫度監(jiān)測器,如圖所示,當(dāng)溫度超過報警上限,而且開啟報警時,報警燈點(diǎn)亮。溫度值可以由隨機(jī)數(shù)發(fā)生器產(chǎn)生。五、實(shí)
20、驗(yàn)報告要求1調(diào)試編輯以上VI,按順序打印以上VI的前面板與程序框圖后,貼在實(shí)驗(yàn)報告上;實(shí)驗(yàn)報告中要求詳細(xì)說明設(shè)計步驟要點(diǎn)。2理解基于數(shù)據(jù)流編程的基本編程思路。3總結(jié)VI基本編程的快捷操作。4簡述VI程序有什么構(gòu)成,其各部分的功能是什么。5思考:在前面板和框圖程序中,如何區(qū)分控制器和指示器。6心得體會及其它。實(shí)驗(yàn)二 LabVIEW程序結(jié)構(gòu)循環(huán)結(jié)構(gòu)一、實(shí)驗(yàn)?zāi)康?學(xué)習(xí)并掌握For循環(huán)和While循環(huán)以及它們的不同點(diǎn)。2學(xué)習(xí)使用移位寄存器(Shift Register)和反饋節(jié)點(diǎn)(Feedback Node)。二、實(shí)驗(yàn)原理While循環(huán)和For循環(huán)在函數(shù)的結(jié)構(gòu)(Structures)選項(xiàng)板中可以找到。
21、創(chuàng)建循環(huán)的具體方法是,選擇該循環(huán)后,先在欲放入循環(huán)內(nèi)執(zhí)行的對象左上方單擊,然后按下鼠標(biāo),拖曳出一個矩形框包圍執(zhí)行對象。釋放鼠標(biāo)時就創(chuàng)建了一個指定大小和位置的循環(huán)。While循環(huán)可以反復(fù)執(zhí)行循環(huán)體的程序,直至到達(dá)某個邊界條件。它類似于普通編程語言中的Do循環(huán)和Repeat-Until循環(huán)。While循環(huán)的框圖是一個大小可變的方框,用于執(zhí)行框中的程序,直到條件端子接收到的布爾值為FALSE。1For循環(huán)和While循環(huán)當(dāng)程序有確定的循環(huán)次數(shù)時,使用For循環(huán)。在程序框圖中添加For循環(huán),如圖2-1所示。(循環(huán)次數(shù)輸入端):For循環(huán)必須給定循環(huán)次數(shù)N(N>0,否則循環(huán)不執(zhí)行),此項(xiàng)一般都要有
22、輸入。當(dāng)For循環(huán)的輸入數(shù)據(jù)是一個數(shù)組時,如果不給定循環(huán)次數(shù),則數(shù)組的大小將決定For循環(huán)的循環(huán)次數(shù)。如果同時輸入兩個數(shù)組,循環(huán)次數(shù)以數(shù)組個數(shù)最少的決定。(循環(huán)計數(shù)):計數(shù)范圍0N1。當(dāng)具體的循環(huán)次數(shù)不可知時,我們使用While循環(huán),如圖2-2所示。While循環(huán)也有一個循環(huán)計數(shù),第一次循環(huán)時的值為0。另外,While循環(huán)有一個循環(huán)條件判斷端子。請?zhí)貏e注意,無論如何,都要給While循環(huán)結(jié)構(gòu)一個有效的停止條件,否則可能就會使循環(huán)陷入死循環(huán)的狀態(tài)。While循環(huán)還提供了一個快捷方式:Functions-Express-執(zhí)行過程控制-While Loop,程序框圖如圖2-3所示,與圖2-2不同的時
23、自動加了一個停止按鈕。 圖2-1 For循環(huán) 圖2-2 While循環(huán) 圖2-3 快捷While2. 移位寄存器和反饋節(jié)點(diǎn)使用循環(huán)結(jié)構(gòu)時,經(jīng)常會遇到下一次循環(huán)要用到上一次循環(huán)運(yùn)行結(jié)果的情況,這時就需要不斷的將每次循環(huán)的結(jié)果存儲下來,以傳遞給下一次循環(huán)。移位寄存器和反饋節(jié)點(diǎn)就是用來實(shí)現(xiàn)這樣的操作的。在For循環(huán)和While循環(huán)中都可以添加移位寄存器和反饋節(jié)點(diǎn),添加方法如下:1)移位寄存器(Shift Register)移位寄存器可以將數(shù)據(jù)從一個循環(huán)周期傳遞到另外一個周期。創(chuàng)建移位寄存器的方法是,用鼠標(biāo)右鍵單擊循環(huán)的左邊或者右邊,在快捷菜單中選擇 Add Shift Register,如圖2-4所
24、示。移位寄存器在流程圖上用在循環(huán)邊框上相應(yīng)的一對端子來表示。右邊的端子中存儲了一個周期完成后的數(shù)據(jù),這些數(shù)據(jù)在這個周期完成之后將被轉(zhuǎn)移到左邊的端子,賦給下一個周期。移位寄存器可以轉(zhuǎn)移各種類型的數(shù)據(jù)數(shù)值、布爾數(shù)、數(shù)組、字符串等等。它會自動適應(yīng)與它連接的第一個對象的數(shù)據(jù)類型。 (a)為For循環(huán)設(shè)置移位寄存器 (b)為While循環(huán)設(shè)置移位寄存器圖2-4 設(shè)置移位寄存器2)反饋節(jié)點(diǎn)(Feedback Node)反饋節(jié)點(diǎn)完成的功能同移位寄存器類似。在For循環(huán)或者While循環(huán)中,只要將其中的子VI、函數(shù)的輸入/輸出相連接,就會自動出現(xiàn)反饋節(jié)點(diǎn)。當(dāng)然,也可以通過Functions-Execution
25、-Control-Feedback Node來添加。在反饋節(jié)點(diǎn)上單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇Replace with Shift Register,反饋節(jié)點(diǎn)將變成移位寄存器,如圖2-5所示。下面通過一個例子來看一下移位寄存器和反饋節(jié)點(diǎn)是如何工作的。如圖2-6所示。 圖2-5 將反饋節(jié)點(diǎn)變?yōu)橐莆患拇嫫?圖2-6 反饋節(jié)點(diǎn)和移位寄存器在此如果不給移位寄存器和反饋節(jié)點(diǎn)賦初值(本例中For循環(huán)框左邊的兩個常數(shù)0),下次程序運(yùn)行時,移位寄存器和反饋節(jié)點(diǎn)中的值將以上次運(yùn)行完的值開始。三、實(shí)驗(yàn)內(nèi)容1While循環(huán)的基本結(jié)構(gòu)分別創(chuàng)建兩個關(guān)于While循環(huán)的VI,如圖2-7所示,其中一個帶延時,一個不帶
26、延時,都在前面板顯示循環(huán)計數(shù)和停止按鈕,比較這兩個循環(huán)的不同。(注意:是兩個VI) (a) 不帶延時 (b)有延時圖2-7 While循環(huán)前面板與程序框圖2While循環(huán)中實(shí)現(xiàn)累加的兩種方法(1)利用移位寄存器實(shí)現(xiàn)累加1-100,并將結(jié)果顯示在前面板上;(2)利用反饋節(jié)點(diǎn)實(shí)現(xiàn)累加1-100,并將結(jié)果顯示在前面板上。 3For循環(huán)的基本結(jié)構(gòu)創(chuàng)建三個關(guān)于For循環(huán)的VI,分別設(shè)定For循環(huán)的循環(huán)次數(shù)為100、循環(huán)次數(shù)設(shè)定、輸入數(shù)據(jù)為一個數(shù)組等,并在前面板上設(shè)定第二個循環(huán)的次數(shù)及顯示For循環(huán)的實(shí)時次數(shù),觀察顯示結(jié)果。 *4統(tǒng)計滿足條件隨機(jī)數(shù)的個數(shù)統(tǒng)計100個隨機(jī)數(shù)中大于0.5的個數(shù),要求在前面板顯
27、示統(tǒng)計結(jié)果。*5設(shè)計一個VI,實(shí)現(xiàn)使用循環(huán)和移位寄存器計算隨機(jī)數(shù)序列的移動平均值。要求該VI產(chǎn)生一個隨機(jī)序列,序列長度N由前面板滑動條控件輸入,該隨機(jī)數(shù)序列的移動平均值由下列公式可計算:這里,表示在第i次計算的平均值,是來自隨機(jī)數(shù)函數(shù)的當(dāng)前隨機(jī)數(shù)。前面板要求顯示當(dāng)前用于計算移動平均值的隨機(jī)數(shù)個數(shù)i+1,當(dāng)前的移動平均值,前面板設(shè)計如圖2.10所示,最后將該VI保存為Random Number Average.vi文件。在Highlight Execution加亮執(zhí)行的狀態(tài)下觀察數(shù)據(jù)流。圖 2.10Random Number Average四、實(shí)驗(yàn)報告要求1調(diào)試編輯以上VI,按順序打印以上VI的
28、前面板與程序框圖后,貼在實(shí)驗(yàn)報告上;實(shí)驗(yàn)報告中要求詳細(xì)說明設(shè)計步驟要點(diǎn)。2說明For循環(huán)與While循環(huán)的區(qū)別。3理解移位寄存器的作用以及它的初始化。4分析一下,當(dāng)VI執(zhí)行結(jié)束,結(jié)果顯示控件的值是多少?如果將內(nèi)循環(huán)隧道替換為移位寄存器呢?實(shí)驗(yàn)三 LabVIEW程序結(jié)構(gòu)順序結(jié)構(gòu)與條件結(jié)構(gòu)一、實(shí)驗(yàn)?zāi)康?掌握順序結(jié)構(gòu)(Sequence Structure)、條件結(jié)構(gòu)(Case Structure)編程。2了解時間估計和控制函數(shù)。3了解公式節(jié)點(diǎn)(Formula Node)的使用。二、實(shí)驗(yàn)原理1順序結(jié)構(gòu)(Sequence Structure)VI程序的運(yùn)行是“數(shù)據(jù)流”驅(qū)動的,有時我們必須對這種數(shù)據(jù)流進(jìn)行
29、控制,這樣就用到了順序結(jié)構(gòu)。在LabVIEW中有兩種循序結(jié)構(gòu):平鋪式和層疊式順序結(jié)構(gòu)。使用平鋪式順序結(jié)構(gòu)可以看到整個程序框圖,當(dāng)程序框圖所占空間的大小允許時,可以使用這種順序結(jié)構(gòu)。在程序框上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇Add Frame after或Add Frame Before,就可以在本幀后或者前添加一幀,如圖3-1所示。使用層疊式順序結(jié)構(gòu)比較省空間,但是數(shù)據(jù)在各幀中的傳遞必須通過Sequence Local來實(shí)現(xiàn),并且每次只能顯示一幀??梢杂妙愃频姆椒▉硖砑忧耙粠蛘吆笠粠?,在彈出的快捷菜單中選擇Add Sequence Local,則在順序結(jié)構(gòu)中添加Sequence Loca
30、l,如圖3-2所示。 圖3-1 添加幀圖 圖3-2 添加Sequence Local順序結(jié)構(gòu)順序地執(zhí)行子框圖,它看上去像是電影膠片。它可以按一定順序執(zhí)行多個子程序。首先執(zhí)行0幀中的程序,然后執(zhí)行1幀中的程序,逐個執(zhí)行下去。2. 時間估計和控制函數(shù) “等待”:控制VI定時執(zhí)行,每次執(zhí)行單元(比如循環(huán))內(nèi)部,在執(zhí)行代碼運(yùn)行結(jié)束后,開始計時。保持此狀態(tài)直到毫秒計數(shù)器的值等于預(yù)先設(shè)定的值。 “等待下一個整數(shù)倍毫秒”:每次執(zhí)行單元內(nèi)部,在執(zhí)行代碼開始運(yùn)行時,就開始計時,保持此狀態(tài)直到毫秒計數(shù)器的值等于預(yù)先設(shè)定數(shù)的整數(shù)倍。用于同步各單元操作?!癟ick Count (ms) 函數(shù)”:用與Express V
31、I完成定時任務(wù)。3條件結(jié)構(gòu)(Case Structure)條件結(jié)構(gòu)的輸入端可以連接布爾型和數(shù)字型變量。當(dāng)連接的是布爾型變量時,只有True和False兩種。當(dāng)連接的是數(shù)字型變量時,Case框上的標(biāo)識將變?yōu)?,1,根據(jù)輸入量的不同,Case結(jié)構(gòu)選擇運(yùn)行不同的程序。程序框圖如圖3-3所示。在默認(rèn)狀態(tài)下,Case結(jié)構(gòu)只有0和1兩項(xiàng),用右鍵單擊Case結(jié)構(gòu)的邊框,從彈出的快捷菜單中選擇Add Case After來添加一個Case。 圖3-3 Case結(jié)構(gòu)舉例框圖程序圖3-5 屬性設(shè)置前面板如圖3-4所示。是用來選擇操作是加法、減法還是乘法。選擇Memu Ring,然后通過工具模板改變大小,鼠標(biāo)右鍵選
32、擇Properties,在彈出的對話框中改變其屬性,同時添加如圖3-5所示的內(nèi)容。圖3-4 Case結(jié)構(gòu)舉例前面板子程序標(biāo)識按鈕條件端子圖3-6 Case結(jié)構(gòu)Case結(jié)構(gòu)含有兩個或者更多的子程序(Case),執(zhí)行哪一個取決于與選擇端子或者選擇對象的外部接口相連接的某個整數(shù)、布爾數(shù)、字符串或者標(biāo)識的值。必須選擇一個默認(rèn)的Case以處理超出范圍的數(shù)值,或者直接列出所有可能的輸入數(shù)值。Case結(jié)構(gòu)如圖3-6所示。4公式節(jié)點(diǎn)(Formula Node)公式節(jié)點(diǎn)是一個大小可變的方框,可直接在流程圖中輸入公式。從函數(shù)/結(jié)構(gòu)中選擇公式節(jié)點(diǎn)就可以把它放到流程圖中。當(dāng)某個等式有很多變量或者非常復(fù)雜時,這個功能就
33、非常有用。圖3-7 公式節(jié)點(diǎn)三、實(shí)驗(yàn)內(nèi)容1設(shè)計一個VI,計算產(chǎn)生一個與指定的數(shù)字相等的隨機(jī)數(shù)所需花費(fèi)的時間。2使用Case結(jié)構(gòu),創(chuàng)建一個VI以檢查一個數(shù)值是否為正數(shù)。如果它是正的,VI就計算它的平方根,反之則顯示出錯。如圖3-9所示,最后將該VI保存為Case Structure.vi。圖3-9 Case Structure提示:可以使用以下函數(shù):One Button Dialog函數(shù):它可以用于顯示一個對話框,內(nèi)容可由字符串常量輸入提供。例如: 3設(shè)計一個VI,用公式節(jié)點(diǎn)來計算下列方程:y1=x3-x2+5,y2=5x+3,其中x的取值為0-20,以上兩個方程只許使用一個Formula No
34、de。4設(shè)計一個VI能夠像計算器一樣進(jìn)行運(yùn)算。前面板上有兩個數(shù)字控制器,用來輸入兩個數(shù)字,另有一個指示器,用來顯示VI對輸入數(shù)字進(jìn)行運(yùn)算(Add、Subtract、Divide或Multiply)的結(jié)果。用一個滑動條控制器來選擇加、減、乘、除運(yùn)算。*5分別用Case結(jié)構(gòu)和公式節(jié)點(diǎn)語句兩種方法,實(shí)現(xiàn)下列條件分支語句:考慮計算兩數(shù)比率x/y的下列代碼段:if (y0) z=x/y;else z=+;兩VI保存為Case Division.vi和Formula Division.vi。*6利用case結(jié)構(gòu)的多分支,進(jìn)行下列簡單程序設(shè)計。要求:星期一顯示:新的一周開始了,好好學(xué)習(xí)! 星期二顯示:今天是
35、星期二,繼續(xù)努力! 星期三顯示:今天是星期三,生活愉快! 星期四顯示:周四了,加油呀!星期五顯示:今天是星期五,站好最后一班崗!星期六顯示:周末愉快!星期日顯示:好好休息,迎接新的一周!四、思考題1數(shù)據(jù)流編程有何優(yōu)點(diǎn)?2. LabVIEW有哪兩種順序結(jié)構(gòu)?各有何特點(diǎn)?3. 掌握Case結(jié)構(gòu)的組成及設(shè)計方法。五、實(shí)驗(yàn)報告要求1調(diào)試編輯以上VI,按順序打印以上VI的前面板與程序框圖后,貼在實(shí)驗(yàn)報告上;實(shí)驗(yàn)報告中要求詳細(xì)說明設(shè)計步驟要點(diǎn)。2使用公式節(jié)點(diǎn)時,如果輸入變量的名稱同輸出變量的名稱相同時,會怎樣?3心得體會及其它。實(shí)驗(yàn)四 LabVIEW程序結(jié)構(gòu)事件結(jié)構(gòu)與狀態(tài)機(jī)一、實(shí)驗(yàn)?zāi)康?掌握事件結(jié)構(gòu)(Ev
36、ent Structure)編程。2了解狀態(tài)機(jī)的工作原理和設(shè)計方法。二、實(shí)驗(yàn)原理1事件結(jié)構(gòu)(Event Node)編程的主要目的是為了實(shí)現(xiàn)用戶的某種功能,用戶通過用鼠標(biāo)、鍵盤、程序內(nèi)部等觸發(fā)某種程序動作,從而達(dá)到某種結(jié)果,這些操作都被稱作為事件,LabVIEW中相應(yīng)這些事件最常用的結(jié)構(gòu)就是“事件結(jié)構(gòu)”。事件結(jié)構(gòu)內(nèi)容豐富,基本上大的程序結(jié)構(gòu)都需要用到事件結(jié)構(gòu)。事件結(jié)構(gòu)在程序不能夠單獨(dú)響應(yīng)各種事件,必須與循環(huán)結(jié)構(gòu)一同使用。以圖形化方式響應(yīng)和處理用戶的操作;與Windows操作系統(tǒng)的事件處理方式相似。如圖4-1所示。 圖4-1 事件結(jié)構(gòu) 事件結(jié)構(gòu)的組成:(1)上邊框中間是事件選擇標(biāo)簽,用于標(biāo)識當(dāng)前顯
37、示的子框圖(第0個)所處理的事件源。其增減與層疊式順序結(jié)構(gòu)和選擇結(jié)構(gòu)中的增減類似。(2)事件數(shù)據(jù)節(jié)點(diǎn)為子框圖提供所處理事件的相關(guān)數(shù)據(jù)。事件數(shù)據(jù)節(jié)點(diǎn)由若干個事件數(shù)據(jù)端子組成。(3)事件超時端子,隸屬于整個事件結(jié)構(gòu),用于為超時事件提供超時時間參數(shù),以ms為單位。當(dāng)值為-1時,事件結(jié)構(gòu)處于永遠(yuǎn)等待狀態(tài),直到指定的事件發(fā)生為止。通常情況下,應(yīng)當(dāng)為事件結(jié)構(gòu)指定一個超時時間,否則事件結(jié)構(gòu)將一直處于等待狀態(tài)。 LabVIEW事件編程的黃金原則:(1)不要將事件結(jié)構(gòu)放置在While循環(huán)之外。(2)不要在事件結(jié)構(gòu)中直接使用循環(huán)處理事件。(3)在事件結(jié)構(gòu)中添加“停止”按鈕的處理分支。提示:為防止前面板“死鎖”,在
38、編輯事件結(jié)構(gòu)分支時,請將“鎖定前面板直至事件分支完成”復(fù)選框去掉。2狀態(tài)機(jī)順序模式是我們最先接觸,也是最基本的一種編程模式,程序按照固定的順序依次執(zhí)行,結(jié)束。但在很多情況下,靜態(tài)的順序模式并不能滿足我們編程的要求,我們需要更有效地動態(tài)結(jié)構(gòu)來實(shí)時改變程序的執(zhí)行順序。比如,一個自動的可樂販?zhǔn)蹤C(jī),當(dāng)然它可以實(shí)現(xiàn)簡單的投幣,取可樂,結(jié)束這樣的順序模式,但更多的情況下,需要經(jīng)過多次投幣,更或者是取消購買來結(jié)束一次操作。在這種情況下,狀態(tài)機(jī)的引入就成了必然的結(jié)果。 那么什么是狀態(tài)機(jī)呢?簡單的說,狀態(tài)機(jī)是對系統(tǒng)的一種描述,該類系統(tǒng)包含了有限的狀態(tài),并且在各個狀態(tài)之間可以通過一定的條件進(jìn)行轉(zhuǎn)換。一般可以用狀態(tài)
39、圖來對一個狀態(tài)機(jī)進(jìn)行精確地描述。在LabVIEW中,任何一個狀態(tài)機(jī)都是由三個基本部分構(gòu)成的,首先外層是一個while 循環(huán)(用于維持狀態(tài)機(jī)的運(yùn)行),同時在while循環(huán)中包含有一個條件結(jié)構(gòu)(用以對各個不同的狀態(tài)進(jìn)行判斷),第三個基本部分是移位寄存器(用以將下一個狀態(tài)傳遞到下一次循環(huán)狀態(tài)判斷中)。另外在一個完整的狀態(tài)機(jī)中,我們一般還會提供初始狀態(tài),每一個狀態(tài)的執(zhí)行步驟以及下一個狀態(tài)切換代碼等等。 除了前面提到的三個基本部分以外,狀態(tài)機(jī)的構(gòu)建還有一個技巧,就是使用枚舉型常量來作為狀態(tài)變量,相對于其它數(shù)據(jù)類型來說,枚舉常量表示了兩組成對的數(shù)據(jù),一組是字符串,一組是數(shù)值,兩者一一對應(yīng),在前面板上,能直
40、觀地看到字符串,在程序面板上則簡單地表示為數(shù)值型數(shù)據(jù),整個枚舉型數(shù)據(jù)的值可以是預(yù)定義的多個數(shù)據(jù)中的任何一個值。 為什么要使用枚舉型數(shù)據(jù)來作為狀態(tài)變量呢?因?yàn)槊杜e型數(shù)據(jù)和條件結(jié)構(gòu)配合使用時相當(dāng)方便。第一,在條件結(jié)構(gòu)的條件判斷框中,看到的將不是單純的數(shù)值,而是定義好的字符串,這樣直觀的表現(xiàn)形式給不同狀態(tài)的管理帶來了方便,另外,在條件結(jié)構(gòu)上通過右鍵單擊,選擇為每個值添加分支,就能夠自動地將條件結(jié)構(gòu)根據(jù)枚舉數(shù)據(jù)進(jìn)行展開,從而保證每個狀態(tài)的完整性。此外,考慮到以后對狀態(tài)機(jī)修改及維護(hù)的方便,通常將該枚舉常量保存為一個自定義控件,將其作為枚舉常量引入狀態(tài)機(jī)中,當(dāng)需要對狀態(tài)變量進(jìn)行修改時,只需要對該自定義控件
41、進(jìn)行一次修改、更新,就能對該狀態(tài)機(jī)中任何位置的狀態(tài)變量進(jìn)行統(tǒng)一的管理了。三、實(shí)驗(yàn)內(nèi)容1. 在前面板中顯示一個按鈕和一個數(shù)值輸入控件,當(dāng)在按鈕上按下鼠標(biāo)或數(shù)值輸入控件值發(fā)生變化時,產(chǎn)生事件。當(dāng)該事件發(fā)生時,彈出對話框,詢問是否繼續(xù),點(diǎn)擊Yes,While循環(huán)繼續(xù)執(zhí)行;若點(diǎn)擊No則退出While循環(huán);此外,設(shè)置一個超時處理子圖形代碼框,若5秒鐘沒有在前面板操作,則退出While循環(huán)。 2. 數(shù)據(jù)采集與處理狀態(tài)機(jī)設(shè)計。該狀態(tài)機(jī)主要完成數(shù)據(jù)采集與數(shù)據(jù)分析功能。初始化檢查VI事件數(shù)據(jù)采集數(shù)據(jù)分析停止圖4-5 狀態(tài)圖轉(zhuǎn)換圖“數(shù)據(jù)采集”:值改變“數(shù)據(jù)分析”:值改變“停止”:值改變(1)狀態(tài)變量枚舉類型定義為
42、:初始化、停止、檢查VI事件、數(shù)據(jù)采集、數(shù)據(jù)分析等五項(xiàng),將其設(shè)定為自定義類型。系統(tǒng)狀態(tài)轉(zhuǎn)換圖如圖4-5所示。(2)在“初始化”分支中,將向波形圖、信號測量局部變量寫入初始數(shù)據(jù)代碼。注意數(shù)組常亮為一個空數(shù)組。(3)在“檢查VI事件”分支中,設(shè)置一個VI事件結(jié)構(gòu),事件結(jié)構(gòu)包含以下事件分支:l “數(shù)據(jù)采集”:值改變;l “數(shù)據(jù)分析”:值改變;l “停止”:值改變。并將每個按鈕設(shè)置為“釋放時觸發(fā)”。(4)輸出隧道設(shè)置為“取消未連線時使用默認(rèn)”。(5)Case結(jié)構(gòu)中不要包含默認(rèn)幀。 (6)前面板及部分程序框圖如下: *3. 在前面板放置四個控件:門布爾控件,表示一扇門(鼠標(biāo)點(diǎn)擊表示敲門);敲門次數(shù)控件用
43、來記錄時間的次數(shù);停止按鈕布爾控件,用來表示隨時停止程序的運(yùn)行;門把手指示燈控件,要開門時門把手變綠,不開門時門把手為紅色。要求用事件結(jié)構(gòu)設(shè)計,運(yùn)行程序后,就一直等待事件的發(fā)生,此時,如果用鼠標(biāo)點(diǎn)擊“門”一次,則會彈出對話框,顯示“您找誰呀?”,如果讓其進(jìn)入,選擇“確定”按鈕,門把手變“綠”,程序終止;如果不讓其進(jìn)入,選擇“取消”,敲門次數(shù)顯示為1,程序繼續(xù)等待。如果再敲門,則顯示“對不起,您敲錯了!”,確定后,敲門次數(shù)顯示為2。如果再敲,則顯示“錯了,請不要再敲了!”,敲門次數(shù)顯示為3。如果再敲,則顯示“如果再敲,我就要報警了!”,敲門次數(shù)顯示為4。如果還敲,則顯示“這里是110,我們正趕往
44、您那兒!”,確定后,程序自行終止。如果在整個過程中,點(diǎn)擊“停止”按鈕,程序隨時終止。 四、思考題1什么是事件?事件結(jié)構(gòu)有哪幾部分組成?使用事件結(jié)構(gòu)有何優(yōu)點(diǎn)?2什么是狀態(tài)機(jī)?狀態(tài)機(jī)有哪幾部分組成?為什么要使用狀態(tài)機(jī)? 五、實(shí)驗(yàn)報告要求1調(diào)試編輯以上VI,按順序打印以上VI的前面板與程序框圖后,貼在實(shí)驗(yàn)報告上;實(shí)驗(yàn)報告中要求詳細(xì)說明設(shè)計步驟要點(diǎn)。2使用公式節(jié)點(diǎn)時,如果輸入變量的名稱同輸出變量的名稱相同時,會怎樣?3心得體會及其它。實(shí)驗(yàn)五 LabVIEW編程的數(shù)組與簇一、實(shí)驗(yàn)?zāi)康?掌握如何創(chuàng)建、使用數(shù)組;數(shù)組函數(shù)的功能和應(yīng)用,掌握它們的區(qū)別以及相應(yīng)操作。2掌握如何創(chuàng)建、使用簇;簇函數(shù)的功能和應(yīng)用,掌
45、握它們的區(qū)別以及相應(yīng)操作。二、實(shí)驗(yàn)原理1數(shù)組是一些具有相同類型的元素組成的集合。數(shù)組包含兩方面的內(nèi)容:元素和維數(shù)。數(shù)組中的元素可以是數(shù)字、布爾、字符、路徑、波形和簇等數(shù)據(jù)類型。一個數(shù)組可以是一維或者多維,如果必要,每維最多可有231-1個元素。可以通過數(shù)組索引訪問其中的每個元素。數(shù)組元素不能是數(shù)組、圖表或者圖形。LabVIEW提供了很多用于操作數(shù)組的功能函數(shù),位于函數(shù)Functions»數(shù)組Array中。其中包括創(chuàng)建數(shù)組、初始化數(shù)組、數(shù)組大小、數(shù)組子集、索引數(shù)組等。l 創(chuàng)建數(shù)組:用于根據(jù)標(biāo)量值或者其他的數(shù)組創(chuàng)建一個數(shù)組。l 初始化數(shù)組:創(chuàng)建所有元素值都相等的數(shù)組。l 數(shù)組大小:返回輸
46、入數(shù)組中的元素個數(shù)。l 數(shù)組子集:選取數(shù)組或者矩陣的某個部分。l 索引數(shù)組:用于訪問數(shù)組中的某個元素。建立數(shù)組的步驟如下:1)從數(shù)組和類子模板(Controls-All Controls-Array & Cluster)上選中數(shù)組,放置在前面板中,此時為數(shù)組空殼,可以向里邊添加(用拖拽的方法)數(shù)字、布爾、字符等數(shù)據(jù)類型的控制器或指示器,來建立相應(yīng)的數(shù)組控制器和指示器。此時可以看到數(shù)組上有兩個顯示窗口:u 標(biāo)號顯示窗:標(biāo)號從0開始,每單擊一次“增加”鍵,標(biāo)號顯示值順序遞增。這個標(biāo)號就是數(shù)組元素的序號;對于一個含n個元素的數(shù)組,其標(biāo)號為0n-1。u 元素顯示窗:用來顯示元素的數(shù)值。數(shù)組中的
47、元素按序號排列。數(shù)組元素的查找按行/列標(biāo)號進(jìn)行。2)右鍵單擊標(biāo)號窗口,彈出一個快捷菜單,選擇Add Dimension來增加數(shù)組的維數(shù)。2簇(Cluster)是另一種數(shù)據(jù)類型,它的元素可以是不同類型的數(shù)據(jù)。它類似于C語言中的structure。使用簇可以把分布在框圖中各個位置的數(shù)據(jù)元素組合起來,這樣可以減少連線的擁擠程度,減少子VI的連接端子的數(shù)量。簇相當(dāng)于一個容器,容器中的元素可以是各種不同的數(shù)據(jù)類型。也就是說,可以在一個簇中放置控制模板上的各種控件,如數(shù)字控件、布爾控件、數(shù)組控件等,但是不能將輸入控件和輸出控件同時放入其中。因此,在編輯流程圖時,可以減少連線數(shù)以及連線的節(jié)點(diǎn)數(shù),最終簡化流程
48、圖。它有多個輸入,一個輸出。要建立簇,可以選擇控制模板中數(shù)組和類子模板上的Cluster,將其調(diào)入前面板。向類控件中放入元素,即將控制模板中的相應(yīng)控件放入其中,俗稱把元素“捆綁”在一起。l 捆綁(Bundle)數(shù)據(jù)Bundle功能將分散的元件集合為一個新的簇,或允許你重置一個已有的簇中的元素??梢杂梦恢霉ぞ咄弦菲鋱D標(biāo)的右下角以增加輸入端子的個數(shù)。最終簇的序是取決于被捆綁的輸入的順序。右圖中Bundle圖標(biāo)中部的Cluster端子用于用新元素重置原簇中的元素。圖5-1 簇控件快捷菜單l 分解(Unbundle)簇 Unbundle是Bundle的逆過程,它將一個簇分解為若干分離的元素。如果要對一
49、個簇分解,就必須知道它的元素個數(shù)。LabVIEW還提供一種可以根據(jù)元素的名字來捆綁或分解簇的方法。右鍵單擊簇控件的邊緣,彈出快捷菜單,如圖5-1。其中:Reorder Controls In Cluster:用于設(shè)置類控件中各元素的排列順序,這個排列順序是輸出信號順序,如圖5-2所示。在Cluster輸出1和輸出2兩個簇控件中,元素輸出的排列順序不一樣。AutoSizing:右鍵單擊該選項(xiàng)后,出現(xiàn)如圖5-3所示的菜單,選擇相應(yīng)的選項(xiàng),可自動調(diào)節(jié)類控制的邊框大小及排列方式。圖5-2 Reorder Controls In Cluster設(shè)置圖5-3 AutoSizing設(shè)置Properties:
50、用來定義類控件的一些屬性,如“AutoSizing”,改變標(biāo)簽的名稱,是否顯示標(biāo)簽等內(nèi)容及填入描述信息。屬性頁將前面板的屬性特征集中到了一些簡單的配置對話框中。數(shù)組和簇的區(qū)別如下:u 簇可以包含不同的數(shù)據(jù)類型,而數(shù)組僅可以包含相同的數(shù)據(jù)類型;u 簇具有固定的大小。三、實(shí)驗(yàn)內(nèi)容1練習(xí)數(shù)組的基本創(chuàng)建。利用循環(huán)的自動索引功能創(chuàng)建一個裝有10個隨機(jī)數(shù)的一維數(shù)組,并計算數(shù)組元素的平方和,同時求出該數(shù)組索引為3、長度為2的子數(shù)組。要求前面板顯示該一維數(shù)組及平方和結(jié)果、輸出的子數(shù)組。2編輯下列VI,理解一維數(shù)組和二維數(shù)組的產(chǎn)生,存為Two Dimensional Array Demo.vi。 5-4 Two
51、 Dimensional Array3循環(huán)與數(shù)組函數(shù)的綜合運(yùn)用。當(dāng)VI執(zhí)行結(jié)束后,數(shù)組輸出顯示控件的值是什么? 最后將該VI保存為Practice with Arrays .vi文件。圖5-5 程序框圖4創(chuàng)建由一個控件簇和一個顯示簇所組成的VI。要求輸入控件數(shù)值加一,開關(guān)二反相,顯示簇同時進(jìn)行相應(yīng)的顯示。前面板組成如圖5-6,最后將該VI保存為Cluster.vi文件。 圖5-6 Cluster前面板和程序框圖四、思考題1討論數(shù)組和簇的相同點(diǎn)和不同點(diǎn)。2用戶可以創(chuàng)建一個包含數(shù)組的數(shù)組。( a. 真 b. 假)3將兩個輸入數(shù)組和一個For循環(huán)相連。自動索引在兩個通道中都有效。一個數(shù)組有10個元素
52、,另一個數(shù)組有5個元素。如圖所示,計數(shù)接線端與一個值7相連。這個VI運(yùn)行完之后,循環(huán)顯示控件的值是多少呢?五、實(shí)驗(yàn)報告要求1調(diào)試編輯以上VI,按順序打印以上VI的前面板與程序框圖后,貼在實(shí)驗(yàn)報告上;實(shí)驗(yàn)報告中要求詳細(xì)說明設(shè)計步驟要點(diǎn)。2心得體會及其它。實(shí)驗(yàn)六 LabVIEW編程的圖形顯示一、實(shí)驗(yàn)?zāi)康?學(xué)習(xí)并掌握Chart和Graph的使用,理解它們的區(qū)別。2掌握Chart的三種顯示模式。3了解其它二維圖形的繪制。二、實(shí)驗(yàn)原理圖形顯示是虛擬儀器面板設(shè)計的重要內(nèi)容。圖形是以曲線來顯示數(shù)組中的數(shù)據(jù),常用的二維圖形控件有Chart、Graph和XY Graph,可顯示多條曲線。并可以改變曲線顯示的格式
53、。在LabVIEW的圖形顯示中Graph和Chart是兩個基本的概念。一般說來Chart是將數(shù)據(jù)源(例如采集得到的數(shù)據(jù))在某一坐標(biāo)系中,實(shí)時、逐點(diǎn)地顯示出來,它可以反映被測物理量的變化趨勢,例如顯示一個實(shí)時變化的波形或曲線,傳統(tǒng)的模擬示波器、波形記錄儀就是這樣。而Graph則是對已采集數(shù)據(jù)進(jìn)行事后處理的結(jié)果。它先將被采集數(shù)據(jù)存放在一個數(shù)組之中,然后根據(jù)需要組織成所需的圖形顯示出來。它的缺點(diǎn)是沒有實(shí)時顯示,但是它的表現(xiàn)形式要豐富得多。例如采集了一個波形后,經(jīng)處理可以顯示出其頻譜圖。如數(shù)字示波器。LabVIEW的Graph子模板中有許多可供選用的控件,其中常用的見下表:ChartGraphWave
54、form(波形)*XY*Intensity(強(qiáng)度圖)*Digital(數(shù)字圖)*3D Curve(三維曲線)*由表中可以看出,Chart方式盡管能實(shí)時、直接地顯示結(jié)果,但其表現(xiàn)形式有限,而Graph方式表現(xiàn)形式要遠(yuǎn)為豐富,但這是以犧牲實(shí)時為代價的。1Graph控件(波形圖)曲線圖例可用來設(shè)置曲線的各種屬性,包括線型(實(shí)線、虛線、點(diǎn)劃線等)、線粗細(xì)、顏色以及數(shù)據(jù)點(diǎn)的形狀等。圖形模板可用來對曲線進(jìn)行操作,包括移動、對感興趣的區(qū)域放大和縮小等。光標(biāo)圖例用來設(shè)置光標(biāo)、移動光標(biāo),幫助你用光標(biāo)直接從曲線上讀取感興趣的數(shù)據(jù)??潭葓D例用來設(shè)置坐標(biāo)刻度的數(shù)據(jù)格式、類型(普通坐標(biāo)或?qū)?shù)坐標(biāo)),坐標(biāo)軸名稱以及刻度柵
55、格的顏色等。2Chart(波形圖表)的獨(dú)有控件Chart的數(shù)據(jù)并沒有事先存在一個數(shù)組中,它是實(shí)時顯示的,為了能夠看到先前的數(shù)據(jù),Chart控件內(nèi)部含有一個顯示緩沖器,其中保留了一些歷史數(shù)據(jù)。這個緩沖器按照先進(jìn)先出的原則管理,其最大容量是1024個數(shù)據(jù)點(diǎn)。l 滾動條:它直接對應(yīng)于顯示緩沖器,通過它可以前后觀察緩沖器內(nèi)任何位置的數(shù)據(jù)。l 數(shù)據(jù)顯示:可以在圖形右上角出現(xiàn)一個數(shù)字顯示器,這樣可以在畫出曲線的同時顯示當(dāng)前最新的一個數(shù)據(jù)值。Chart提供了三種畫面的刷新模式,分別是:Ø Strip Chart Mode(條狀圖):它與紙帶式圖表記錄儀類似。曲線從左到右連續(xù)繪制,當(dāng)新的數(shù)據(jù)點(diǎn)到達(dá)右部邊界時,先前的數(shù)據(jù)點(diǎn)逐次左移。Ø Scope Chart Mode(示波器模式):它與示波器類似。曲線從左到右連續(xù)繪制,當(dāng)新的數(shù)據(jù)點(diǎn)到達(dá)右部邊界時,清屏刷新,從左邊開始新的繪制。它的速度較快。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 拆除運(yùn)輸合同范例
- 工藝玻璃合同范例
- 墻紙 合同范例
- 河北省石家莊市新樂市2023-2024學(xué)年三年級上學(xué)期期末調(diào)研道德與法治試題
- 四川省內(nèi)江市威遠(yuǎn)縣鳳翔中學(xué)2024-2025學(xué)年七年級上學(xué)期期中考試數(shù)學(xué)試題
- 新品噴碼機(jī)采購合同模板
- 企業(yè)承包服務(wù)合同范例
- 再編合同范例
- 控價條例合同模板
- 房屋裝修翻新合同模板
- 配電設(shè)備的日常管理及維護(hù)保養(yǎng)(PPT41頁)
- 電子琴伴奏及音色中英文對照表
- 蘇教版初中化學(xué)常見氣體的檢驗(yàn)與除雜教案
- 網(wǎng)絡(luò)教研——開辟校本教研新模式
- 火災(zāi)報警系統(tǒng)技術(shù)規(guī)范書
- 魚塘租賃合同
- 教材自編傳統(tǒng)節(jié)日校本課程
- 樓宇自控系統(tǒng)調(diào)試方案
- hydac壓力繼電器說明書
- 中成藥上市公司組織架構(gòu)及部門職責(zé)
- 《教育學(xué)原理》課程教學(xué)大綱
評論
0/150
提交評論