labview 100題
《labview 100題》由會(huì)員分享,可在線閱讀,更多相關(guān)《labview 100題(42頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 第一講:認(rèn)識(shí)Labview 1.1 Labview 簡(jiǎn)介 在開始菜單里找見NI Labview7.1 點(diǎn)擊打開,會(huì)出現(xiàn)如下界面: 從File>>New VI 或者從右半部分中的New>>Blank VI 都可以打開如下界面: 上圖中前圖是虛擬儀器的前面板,是用戶使用的人機(jī)界面,后面的是程序框圖界面(即后面板)。 在LabVIEW的用戶界面上,應(yīng)特別注意它提供的操作模板,包括工具(Tools)模板、控制(Controls)模板和函數(shù)(Functions)模板。這些模板集中反映了該軟件的功能與特征。下面我們來大致瀏覽一下。 工具模板(Tools Pale
2、tte) 該模板提供了各種用于創(chuàng)建、修改和調(diào)試VI程序的工具。如果該模板沒有出現(xiàn),則可以在Windows菜單下選擇Show Tools Palette命令以顯示該模板。當(dāng)從模板內(nèi)選擇了任一種工具后,鼠標(biāo)箭頭就會(huì)變成該工具相應(yīng)的形狀。當(dāng)從Windows菜單下選擇了Show Help Window功能后,把工具模板內(nèi)選定的任一種工具光標(biāo)放在流程圖程序的子程序(Sub VI)或圖標(biāo)上,就會(huì)顯示相應(yīng)的幫助信息。 工具圖標(biāo)有如下幾種: 圖標(biāo) 名稱 功 能 1 Operate Value(操作值) 用于操作前面板的控制和顯示。使用它向數(shù)字或字符串控制中鍵入值時(shí),工
3、具會(huì)變成標(biāo)簽工具 2 Position/Size/Select (選擇) 用于選擇、移動(dòng)或改變對(duì)象的大小。當(dāng)它用于改變對(duì)象的連框大小時(shí),會(huì)變成相應(yīng)形狀。 3 Edit Text(編輯文本) 用于輸入標(biāo)簽文本或者創(chuàng)建自由標(biāo)簽。當(dāng)創(chuàng)建自由標(biāo)簽時(shí)它會(huì)變成相應(yīng)形狀。 4 Connect Wire(連線) 用于在流程圖程序上連接對(duì)象。如果聯(lián)機(jī)幫助的窗口被打開時(shí),把該工具放在任一條連線上,就會(huì)顯示相應(yīng)的數(shù)據(jù)類型。 5 Object Shortcut Menu(對(duì)象菜單) 用鼠標(biāo)左鍵可以彈出對(duì)象的彈出式菜單。 6 Scroll Windows(窗口漫游) 使
4、用該工具就可以不需要使用滾動(dòng)條而在窗口中漫游。 7 Set/Clear Breakpoint(斷點(diǎn)設(shè)置/清除) 使用該工具在VI的流程圖對(duì)象上設(shè)置斷點(diǎn)。 8 Probe Data(數(shù)據(jù)探針) 可在框圖程序內(nèi)的數(shù)據(jù)流線上設(shè)置探針。通過控針窗口來觀察該數(shù)據(jù)流線上的數(shù)據(jù)變化狀況。 9 Get Color(顏色提?。? 使用該工具來提取顏色用于編輯其他的對(duì)象。 10 Set Color(顏色設(shè)置) 用來給對(duì)象定義顏色。它也顯示出對(duì)象的前景色和背景色。 下面的兩個(gè)模板是多層的,其中每一個(gè)子模板下還包括多個(gè)對(duì)象。 控制模板(Control Pal
5、ette) 注意:只有打開前面板時(shí)才能調(diào)用該模板 該模板用來給前面板設(shè)置各種所需的輸出顯示對(duì)象和輸入控制對(duì)象。每個(gè)圖標(biāo)代表一類子模板。如果控制模板不顯示,可以用Windows菜單的Show Controls Palette功能打開它,也可以在前面板的空白處,點(diǎn)擊鼠標(biāo)右鍵,以彈出控制模板。 控制模板如右圖所示,它包括如下所示的一些子模板。子模板中包括的對(duì)象,我們?cè)诠δ苤杏梦淖趾?jiǎn)要介紹。 圖標(biāo) 子模板名稱 功 能 1 Numeric(數(shù)值量) 數(shù)值的控制和顯示。包含數(shù)字式、指針式顯示表盤及各種輸入框。 2 Boolean(布爾量) 邏輯數(shù)值
6、的控制和顯示。包含各種布爾開關(guān)、按鈕以及指示燈等。 3 String & Path(字符串和路徑) 字符串和路徑的控制和顯示。 4 Array & Cluster(數(shù)組和簇) 數(shù)組和簇的控制和顯示。 5 List & Table(列表和表格) 列表和表格的控制和顯示 6 Graph(圖形顯示) 顯示數(shù)據(jù)結(jié)果的趨勢(shì)圖和曲線圖。 7 Ring & Enum(環(huán)與枚舉) 環(huán)與枚舉的控制和顯示。 8 I/O(輸入/輸出功能) 輸入/輸出功能。于操作OLE、ActiveX等功能。 9 Refnum 參考數(shù) 10 Digilog
7、 Controls(數(shù)字控制) 數(shù)字控制 11 Clussic Controls(經(jīng)典控制) 經(jīng)典控制,指以前版本軟件的面板圖標(biāo)。 12 Activex 用于ActiveX等功能。 13 Decorations(裝飾) 用于給前面板進(jìn)行裝飾的各種圖形對(duì)象。 14 Select a Controls(控制選擇) 調(diào)用存儲(chǔ)在文件中的控制和顯示的接口。 15 User Controls(用戶控制) 用戶自定義的控制和顯示。 功能模板(Functions Palette) 注:只有打開了流程圖程序窗口(即后面板),才能出現(xiàn)功能模板。
8、 功能模板是創(chuàng)建流程圖程序的工具。該模板上的每一個(gè)頂層圖標(biāo)都表示一個(gè)子模板。若功能模板不出現(xiàn),則可以用Windows菜單下的Show Functions Palette功能打開它,也可以在流程圖程序窗口的空白處點(diǎn)擊鼠標(biāo)右鍵以彈出功能模板。 功能模板如右圖所示,其子模塊如下所示。(個(gè)別不常用的子模塊未包含) 圖標(biāo) 子模板名稱 功 能 1 Structure(結(jié)構(gòu)) 包括程序控制結(jié)構(gòu)命令,例如循環(huán)控制等,以及全局變量和局部變量。 2 Numeric(數(shù)值運(yùn)算) 包括各種常用的數(shù)值運(yùn)算,還包括數(shù)制轉(zhuǎn)換、三角函數(shù)、對(duì)數(shù)、復(fù)數(shù)等運(yùn)算,以及各種數(shù)值常數(shù)。
9、3 Boolean(布爾運(yùn)算) 包括各種邏輯運(yùn)算符以及布爾常數(shù)。 4 String(字符串運(yùn)算) 包含各種字符串操作函數(shù)、數(shù)值與字符串之間的轉(zhuǎn)換函數(shù),以及字符(串)常數(shù)等。 5 Array(數(shù)組) 包括數(shù)組運(yùn)算函數(shù)、數(shù)組轉(zhuǎn)換函數(shù),以及常數(shù)數(shù)組等。 6 Cluster(簇) 包括簇的處理函數(shù),以及群常數(shù)等。這里的群相當(dāng)于C語言中的結(jié)構(gòu)。 7 Comparison(比較) 包括各種比較運(yùn)算函數(shù),如大于、小于、等于。 8 Time & Dialog(時(shí)間和對(duì)話框) 包括對(duì)話框窗口、時(shí)間和出錯(cuò)處理函數(shù)等。 9 File I/O(文件輸入
10、/輸出) 包括處理文件輸入/輸出的程序和函數(shù)。 10 Data Acquisition(數(shù)據(jù)采集) 包括數(shù)據(jù)采集硬件的驅(qū)動(dòng),以及信號(hào)調(diào)理所需的各種功能模塊。 11 Waveform(波形) 各種波形處理工具 12 Analyze(分析) 信號(hào)發(fā)生、時(shí)域及頻域分析功能模塊及數(shù)學(xué)工具 。 13 Instrument I/O(儀器輸入/輸出) 包括GPIB(488、488.2)、串行、VXI儀器控制的程序和函數(shù),以及VISA的操作功能函數(shù)。 14 Motion & Vision(運(yùn)動(dòng)與景像) 15 Mathematics(數(shù)學(xué)) 包括統(tǒng)
11、計(jì)、曲線擬合、公式框節(jié)點(diǎn)等功能模塊,以及數(shù)值微分、積分等數(shù)值計(jì)算工具模塊。 16 Communication(通訊) 包括TCP、DDE、ActiveX和OLE等功能的處理模塊。 17 Application Control(應(yīng)用控制) 包括動(dòng)態(tài)調(diào)用VI、標(biāo)準(zhǔn)可執(zhí)行程序的功能函數(shù)。 18 Graphics & Sound(圖形與聲音) 包括3D、OpenGL、聲音播放等功能模塊。包括調(diào)用動(dòng)態(tài)連接庫(kù)和CIN節(jié)點(diǎn)等功能的處理模塊。 19 Tutorial(示教課程) 包括LabVIEW示教程序。 20 Report Generation(文檔生成)
12、 21 Advanced(高級(jí)功能) 22 Select a VI(選擇子VI) 23 User Library(用戶子VI庫(kù)) 下面我們通過練習(xí)掌握如何應(yīng)用Labview7.1 練習(xí)一:建立一個(gè)測(cè)量溫度和容積的VI 步驟如下: 1. 選擇 File?New VI,打開一個(gè)新的前面板窗口。 2. 從 Controls>>All Controls>>numeric中選擇 Tank放到前面板中。(注:如果前面板中沒有Controls模版,可在菜單欄選window>>show controls palette,即可打開或直接點(diǎn)擊鼠標(biāo)右鍵)
13、 3. 在標(biāo)簽(Tank)文本框中輸入“容積” ,然后在前面板中的其他任何位置單擊一下。 4. 同樣從Controls>>All Controls>>numeric中選擇Thermometer放到前面板中 5. 在標(biāo)簽文本框中輸入“溫度計(jì)” ,然后在前面板中的其他任何位置單擊一下。 6. 把容器顯示對(duì)象的顯示范圍設(shè)置為0.0到1000.0。 a.雙擊容器坐標(biāo)的10.0 標(biāo)度,使它高亮顯示。在坐標(biāo)中輸入 1000,再在前面板中的其他任何地方單擊一下。 這時(shí)0.0到1000.0之間的增量將被自動(dòng)顯示。 7. 在容器旁配數(shù)據(jù)顯示。 將鼠標(biāo)移到容器上,點(diǎn)右鍵,在出現(xiàn)的快速菜單中選Vis
14、ible Iterms>>Digital Display即可。 前面板如下圖所示: 圖1-1 練習(xí)一的前面板圖 8. Windows>>Show block Diagram 打開流程圖窗口,在窗口中建立如下程序: 隨機(jī)數(shù)發(fā)生器 乘法函數(shù) 數(shù)值常數(shù) 延時(shí)函數(shù) 圖1-2 練習(xí)一的流程圖 該流程圖中新增的對(duì)象有兩個(gè)乘法器、兩個(gè)數(shù)值常數(shù)、兩個(gè)隨機(jī)數(shù)發(fā)生器、一個(gè)延時(shí)函數(shù),一個(gè)while循環(huán),一個(gè)布爾常量,溫度和容積對(duì)象是由前棉板的設(shè)置自動(dòng)帶出來的。 a. 乘法器(Multiply)、隨機(jī)數(shù)發(fā)生器(Random number (0--1))和數(shù)值常數(shù)(Numberi
15、c constant)由Functions>>All Functions>>Numeric中拖出。(注:如果面板中沒有Functions模版,可以從菜單欄中選Window>>Show Functions palette 或點(diǎn)擊鼠標(biāo)右鍵) b. 延時(shí)函數(shù)(Time delay)可以從Functions>>All Functions>>Time&Dialog>>Time delay中拖出,在自動(dòng)彈出的對(duì)話框中輸入要延時(shí)的時(shí)間(比如0.5s)。 9.連線:把鼠標(biāo)放到函數(shù)端子上,當(dāng)鼠標(biāo)自動(dòng)變?yōu)檫B線模式并出現(xiàn)一閃一閃時(shí),點(diǎn)擊一下鼠標(biāo)左鍵然后找要連接的函數(shù)端子,當(dāng)鼠標(biāo)出現(xiàn)一閃一閃時(shí),再次點(diǎn)擊鼠標(biāo)左鍵,
16、這時(shí)就把兩個(gè)函數(shù)連接起來了。 10. 最后選Functions>>All Functions>>Structures>>While Loop,在已編好的程序左上角點(diǎn)擊鼠標(biāo)左鍵,然后移動(dòng)鼠標(biāo),直到出現(xiàn)的虛線把程序全包含起來再點(diǎn)鼠標(biāo)左鍵,就創(chuàng)建了一個(gè)While循環(huán)。在右下角條件端子上點(diǎn)擊鼠標(biāo)右鍵,再?gòu)棾龅牟藛卫镞xCreat constant就可,目的是讓循環(huán)能夠維持下去。 11. 在前面板中,單擊Run(運(yùn)行)按鈕,運(yùn)行該 VI 12. 在后面板的工具欄中點(diǎn)擊類似燈泡狀的按鈕,就可以看見程序中各個(gè)數(shù)據(jù)流的走向。 13. 選擇 File?Save, 把該VI 保存到任意目錄下。 14. 選
17、擇File?Close,關(guān)閉該 VI 。 練習(xí)一 結(jié)束 附注與說明: 1. 顯示對(duì)象(Indicator)、控制對(duì)象(Control)和數(shù)值常數(shù)對(duì)象 顯示對(duì)象和控制對(duì)象都是前面板上的控件,前者有輸入端子而無輸出端子,后者正好相反,它們分別相當(dāng)于普通編程語言中的輸出參數(shù)和輸入?yún)?shù)。數(shù)值常數(shù)對(duì)象可以看成是控制對(duì)象的一個(gè)特例。 在前面板中創(chuàng)建新的控制對(duì)象或顯示對(duì)象時(shí),LabVIEW 都會(huì)在流程圖中創(chuàng)建對(duì)應(yīng)的端子。端子的符號(hào)反映該對(duì)象的數(shù)據(jù)類型。例如,DBL 符號(hào)表示對(duì)象數(shù)據(jù)類型是雙精度數(shù);TF 符號(hào)表示布爾數(shù);I16 符號(hào)表示16位整型數(shù);ABC符號(hào)表示對(duì)象數(shù)據(jù)類型是字符串。 一個(gè)對(duì)象應(yīng)
18、當(dāng)是顯示對(duì)象還是控制對(duì)象必須弄清楚,否則無法正確連線。有時(shí)他們的圖標(biāo)是相似或相同的,可以根據(jù)需要明確規(guī)定它是顯示對(duì)象還是控制對(duì)象。方法是將鼠標(biāo)移到圖標(biāo)上,然后點(diǎn)右鍵,可出現(xiàn)快速菜單(例見右圖)。如果菜單中的第一項(xiàng)是Chang to Control,說明這是一個(gè)顯示對(duì)象,你可以根據(jù)需要,將其變?yōu)榭刂茖?duì)象。如果菜單中的第一項(xiàng)是Chang to Indicator ,說明這是一個(gè)控制對(duì)象,你也可以根據(jù)需要,將其變?yōu)轱@示對(duì)象。 2. 關(guān)于連線 連線是程序設(shè)計(jì)中較為復(fù)雜的問題。流程圖上的每一個(gè)對(duì)象都帶有自己的連線端子,連線將構(gòu)成對(duì)象之間的數(shù)據(jù)通道。因?yàn)檫@不是幾何意義上的連線,因此并非任意兩個(gè)端子間都
19、可連線,連線類似于普通程序中的變量。數(shù)據(jù)單向流動(dòng),從源端口向一個(gè)或多個(gè)目的端口流動(dòng)。不同的線型代表不同的數(shù)據(jù)類型。下面是一些常用數(shù)據(jù)類型所對(duì)應(yīng)的線型和顏色: 類型 顏色 標(biāo)量 一維數(shù)組 二維數(shù)組 整形數(shù) 蘭色 浮點(diǎn)數(shù) 橙色 邏輯量 綠色 字符串 粉色 文件路徑 青色 當(dāng)需要連接兩個(gè)端點(diǎn)時(shí),在第一個(gè)端點(diǎn)上點(diǎn)擊連線工具(從工具模板欄調(diào)用),然后移動(dòng)到另一個(gè)端點(diǎn),再點(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)
20、需要連線轉(zhuǎn)彎時(shí),點(diǎn)擊一次鼠標(biāo)鍵,即可以正交垂直方向地彎曲連線,按空格鍵可以改變轉(zhuǎn)角的方向。
接線頭是為了幫助正確連接端口的連線。當(dāng)把連線工具放到端口上,接線頭就會(huì)彈出。接線頭還有一個(gè)黃色小標(biāo)識(shí)框,顯示該端口的名字。
線型為波折號(hào)的連線表示壞線。出現(xiàn)壞線的原因有很多,例如:連接了兩個(gè)控制對(duì)象;源端子和終點(diǎn)端子的數(shù)據(jù)類型不匹配(例如一個(gè)是數(shù)字型,而另一個(gè)是布爾型)。可以通過使用定位工具點(diǎn)擊壞線再按下
21、e Ends (信號(hào)丟失終端)的錯(cuò)誤信息時(shí),這是一個(gè)快捷的調(diào)試方法。 程序調(diào)試技術(shù) (以下操作大家可以用練習(xí)一嘗試) 1.找出語法錯(cuò)誤 如果一個(gè)VI程序存在語法錯(cuò)誤,則在面板工具條上的運(yùn)行按鈕會(huì)變成一個(gè)折斷的箭頭,表示程序不能被執(zhí)行。這時(shí)該按鈕被稱作錯(cuò)誤列表。點(diǎn)擊它,則LabVIEW彈出錯(cuò)誤清單窗口,點(diǎn)擊其中任何一個(gè)所列出的錯(cuò)誤,選用Find功能,則出錯(cuò)的對(duì)象或端口就會(huì)變成高亮。 2.設(shè)置執(zhí)行程序高亮 在LabVIEW的工具條上有一個(gè)畫著燈泡的按鈕,這個(gè)按鈕叫做“高亮執(zhí)行”按鈕上。點(diǎn)擊這個(gè)按鈕使它變成高亮形式,再點(diǎn)擊運(yùn)行按鈕,VI程序就以較慢的速度運(yùn)行,沒有被執(zhí)行的代
22、碼灰色顯示,執(zhí)行后的代碼高亮顯示,并顯示數(shù)據(jù)流線上的數(shù)據(jù)值。這樣,你就可以根據(jù)數(shù)據(jù)的流動(dòng)狀態(tài)跟蹤程序的執(zhí)行。 3.?dāng)帱c(diǎn)與單步執(zhí)行 為了查找程序中的邏輯錯(cuò)誤,有時(shí)希望流程圖程序一個(gè)節(jié)點(diǎn)一個(gè)節(jié)點(diǎn)地執(zhí)行。使用斷點(diǎn)工具可以在程序的某一地點(diǎn)中止程序執(zhí)行,用探針或者單步方式查看數(shù)據(jù)。使用斷點(diǎn)工具時(shí),點(diǎn)擊你希望設(shè)置或者清除斷點(diǎn)的地方。斷點(diǎn)的顯示對(duì)于節(jié)點(diǎn)或者圖框表示為紅框,對(duì)于連線表示為紅點(diǎn)。當(dāng)VI程序運(yùn)行到斷點(diǎn)被設(shè)置處,程序被暫停在將要執(zhí)行的節(jié)點(diǎn),以閃爍表示。按下單步執(zhí)行按鈕,閃爍的節(jié)點(diǎn)被執(zhí)行,下一個(gè)將要執(zhí)行的節(jié)點(diǎn)變?yōu)殚W爍,指示它將被執(zhí)行。你也可以點(diǎn)擊暫停按鈕,這樣程序?qū)⑦B續(xù)執(zhí)行直到下一個(gè)斷點(diǎn)。 4.
23、探針 可用探針工具來查看當(dāng)流程圖程序流經(jīng)某一根連接線時(shí)的數(shù)據(jù)值。從Tools工具模板選擇探針工具,再用鼠標(biāo)左建點(diǎn)擊你希望放置探針的連接線。這時(shí)顯示器上會(huì)出現(xiàn)一個(gè)探針顯示窗口。該窗口總是被顯示在前面板窗口或流程圖窗口的上面。在流程圖中使用選擇工具或連線工具,在連線上點(diǎn)擊鼠標(biāo)右鍵,在連線的彈出式菜單中選擇“探針”命令,同樣可以為該連線加上一個(gè)探針。 1.2 子VI的建立 子VI(SubVI)相當(dāng)于普通編程語言中的子程序,也就是被其他的 VI調(diào)用的VI??梢詫⑷魏我粋€(gè)定義了圖標(biāo)和聯(lián)接器的 VI作為另一個(gè) VI的子程序。在流程圖中打開 Functions?Select a VI…. ,就可以選擇
24、要調(diào)用的子 VI 。構(gòu)造一個(gè)子VI主要的工作就是定義它的圖標(biāo)和聯(lián)接器。 每個(gè)VI在前面板和流程圖窗口的右上角都顯示了一個(gè)默認(rèn)的圖標(biāo)。啟動(dòng)圖標(biāo)編輯器的方法是,用鼠標(biāo)右鍵單擊面板窗口的右上角的默認(rèn)圖標(biāo),在彈出菜單中選擇 Edit Icon。 下圖顯示了圖標(biāo)編輯器的窗口。可以用窗口左邊的各種工具設(shè)計(jì)像素編輯區(qū)中的圖標(biāo)形狀。編輯區(qū)右側(cè)的一個(gè)方框中顯示了一個(gè)實(shí)際大小的圖標(biāo)。圖標(biāo)編輯器的具體使用細(xì)節(jié)參閱練習(xí)二 圖標(biāo)編輯器窗口 聯(lián)接器是 VI 數(shù)據(jù)的輸入輸出接口。如果用面板控制對(duì)象或者顯示對(duì)象從子 VI 中輸出或者輸入數(shù)據(jù),那么這些對(duì)象都需要在聯(lián)接器面板中有一個(gè)連線端子。您可以通過選擇 VI
25、的端子數(shù)并為每個(gè)端子指定對(duì)應(yīng)的前面板對(duì)象以定義聯(lián)接器。 定義聯(lián)接器的方法是,用鼠標(biāo)右鍵單擊面板窗口中的圖標(biāo)窗口,在快捷菜單中選擇 Show Connector。 聯(lián)接器圖標(biāo)會(huì)取代面板窗口右上角的圖標(biāo)。LabVIEW 自動(dòng)選擇的端子連接模式是控制對(duì)象的端子位于聯(lián)接器窗口的左邊,顯示對(duì)象的端子位于聯(lián)接器窗口右邊。選擇的端子數(shù)取決于前面板中控制對(duì)象和顯示對(duì)象的個(gè)數(shù)。 聯(lián)接器中的各個(gè)矩形表示各個(gè)端子所在的區(qū)域,可以用它們從 VI 中輸入或者輸出數(shù)據(jù)。如果必要,也可以選擇另外一種端子連接模式。方法是在圖標(biāo)上單擊鼠標(biāo)右鍵單出快捷菜單,選擇 Show Connector,再次彈出快捷菜單,選擇Patt
26、erns。下面我們通過一個(gè)練習(xí)說明具體操作。 練習(xí)二:子VI的建立及調(diào)用 步驟如下: 1. 打開一個(gè)NEW VI 2. 在前面板中放置一個(gè)Number control 控件(數(shù)據(jù)輸入控件)和一個(gè)Number Indicator控件(數(shù)據(jù)顯示),都在All controls>>numberic模板下并把標(biāo)簽分別改為 X 和 X^6,如下圖: 3. 后面板程序圖如下圖連接,這是一個(gè)計(jì)算X 的6次方程序 4. 在前面板中,用鼠標(biāo)右鍵單擊窗口右上角的圖標(biāo),在快捷菜單中選擇 Edit Icon….,也可以雙擊圖標(biāo)激活圖標(biāo)編輯器。注意只能在前面板中編輯圖
27、標(biāo)和聯(lián)接器。
5. 刪除默認(rèn)圖標(biāo)。使用Select Tool(矩形框),單擊并拖動(dòng)想要?jiǎng)h除的部分,按下 28、兩個(gè)對(duì)象,所以聯(lián)接器有兩個(gè)端子,如右圖所示。用鼠標(biāo)右鍵單擊聯(lián)接器窗口,在快捷菜單中選擇Rotate 90 Degrees(旋轉(zhuǎn)90度),注意聯(lián)接器窗口的變化,如右圖所示。
9. 端子連接到X和X^6:
a. 點(diǎn)擊聯(lián)接器左部端子。光標(biāo)自動(dòng)變成連線工具,同時(shí)端子變成黑色。
b. 單擊X控件對(duì)象。一個(gè)移動(dòng)的虛線框把它包圍起來,選中的端子的顏色變?yōu)榕c控制/顯示對(duì)象的數(shù)據(jù)類型一致的顏色。
如果單擊前面板中的任何空白區(qū)域以后,虛線消失,選中的端子變暗,這表示您已經(jīng)成功地把顯示對(duì)象和上部端子連接起來。如果端子是白色,則表示沒有連接成功。c. 重復(fù)步驟a 和 b,把右部的端子和X^6連接起來。
c. 29、 用鼠標(biāo)右鍵單擊聯(lián)接器,在快捷菜單中選擇Show Icon.
10. 選擇File?Save ,保存該 VI,保存名為X^6。這樣這個(gè) VI 就完成了,并也可以作為子 VI被其他的VI調(diào)用。子VI 的圖標(biāo)在主 VI 的流程圖中代表它。
11. 調(diào)用子VI。新建一個(gè)New VI
12. 在前面板中放置一個(gè)Number control 控件和一個(gè)Number Indicator控件,并把標(biāo)簽分別改為 X 和 X^6,如下圖
13. 后面板操作。在Functions>>All Functions>>Select a VI ,選中并打開剛才保存的VI,并連接好線如下圖:
30、14.運(yùn)行該程序
練習(xí)二 結(jié)束
1.3 使用三種圖表模式
目的:查看 VI 分別在三種模式下執(zhí)行時(shí)圖表的顯示。
練習(xí)三:
建立前面板及流程圖如下
步驟:
1.在前面板放置chart(Controls>>All Controls>>Graph>>Waveform chart)控件
2.在后面板放置Sine函數(shù)(Functions>>All Functions>>Numberic>>
Trigonometric>>sine)及Wait Until Next ms Multiple 函數(shù)(Functions>>All Functions>>Time&Di 31、alog>> Wait Until Next ms Multiple)并在左端子建立常數(shù)如100。最后放置while循環(huán)
該程序中利用一個(gè)while循環(huán)產(chǎn)生連續(xù)的sin(i)函數(shù)值,并及時(shí)地在chart圖表上顯示出來,現(xiàn)在前面板上的chart是一個(gè)strip,這是一個(gè)坐標(biāo)式顯示器,與紙帶式圖表記錄器相似。每接受一個(gè)新數(shù)據(jù),新數(shù)據(jù)就將顯示在右側(cè),而原有數(shù)據(jù)移動(dòng)到左側(cè)
3.用鼠標(biāo)選中chart,點(diǎn)擊右鍵,可在快速菜單中選擇Advanced?Update Mode子菜單。可以選擇更換其他兩種更新模式。
示波器模式是一個(gè)返回式的顯示器,與示波器類似。每接受一個(gè)新數(shù)據(jù)時(shí),它就把新數(shù)據(jù)繪制在原有數(shù)據(jù) 32、的右側(cè)。當(dāng)數(shù)據(jù)曲線到達(dá)顯示區(qū)的右邊緣時(shí),VI 會(huì)刪除全部圖形,從左邊緣重新開始繪制曲線。示波器模式顯然要快于條狀圖模式,因?yàn)樗粫?huì)因?yàn)闈L動(dòng)產(chǎn)生溢出。
掃描模式更接近于示波器模式,但是當(dāng)數(shù)據(jù)曲線到達(dá)顯示區(qū)的右邊時(shí),不會(huì)變成空白,而是會(huì)出現(xiàn)一個(gè)移動(dòng)的垂線,標(biāo)記新數(shù)據(jù)的開始,并當(dāng)VI添加新數(shù)據(jù)時(shí)穿過整個(gè)顯示區(qū)。
練習(xí)三 結(jié)束。
第二講 程序結(jié)構(gòu)
循環(huán)結(jié)構(gòu)
While循環(huán)
While 循環(huán)可以反復(fù)執(zhí)行循環(huán)體的程序,直至到達(dá)某個(gè)邊界條件。它類似于普通編程語言中的 Do 循環(huán)和 Repeat-Until 循環(huán)。While 循環(huán)的框圖是一個(gè)大小可變的方框,用于執(zhí)行框中的程序,直到 33、條件端子接收到的布爾值為 FALSE。
該循環(huán)有如下特點(diǎn):
計(jì)數(shù)從0開始(i=0)。
先執(zhí)行循環(huán)體,而后i+1,如果循環(huán)只執(zhí)行一次,那么循環(huán)輸出值i=0。
循環(huán)至少要運(yùn)行一次。
圖4-1 While 循環(huán)示意圖
由于在練習(xí)一中已講過While循環(huán)的應(yīng)用,大家可以自己做下面的練習(xí),其前面板和流程圖如下圖所示:
2.1.1.1 移位寄存器(Shift Register)
移位寄存器可以將數(shù)據(jù)從一個(gè)循環(huán)周期傳遞到另外一個(gè)周期。在程序設(shè)計(jì)中,經(jīng)常要用到它.創(chuàng)建一個(gè)移位寄存器的方法 34、是,用鼠標(biāo)右鍵單擊循環(huán)的左邊或者右邊,在快捷菜單中選擇 Add Shift Register。如右圖所示。
移位寄存器在流程圖上用在循環(huán)邊框上相應(yīng)的一對(duì)端子來表示。右邊的端子中存儲(chǔ)了一個(gè)周期完成后的數(shù)據(jù),這些數(shù)據(jù)在這個(gè)周期完成之后將被轉(zhuǎn)移到左邊的端子,賦給下一個(gè)周期。移位寄存器可以轉(zhuǎn)移各種類型的數(shù)據(jù)--數(shù)值、布爾數(shù)、數(shù)組、字符串等等。它會(huì)自動(dòng)適應(yīng)與它連接的第一個(gè)對(duì)象的數(shù)據(jù)類型。下圖表示了它的工作過程.
圖2-3 Shift Register的工作過程
可以令移位寄存器記憶前面的多個(gè)周期的數(shù)值。這個(gè)功能對(duì)于計(jì)算數(shù)據(jù)均值非常有用。還 35、可以創(chuàng)建其他的端子訪問先前的周期的數(shù)據(jù),方法是用鼠標(biāo)右鍵單擊左邊或者右邊的端子,在快捷菜單中選擇Add Element。例如,如果某個(gè)移位寄存器左邊的端口含有三個(gè)元素,那么就可以訪問前三個(gè)周期的數(shù)據(jù)。
練習(xí)四 使用移位寄存器
目的:創(chuàng)建一個(gè)可以在圖表中顯示運(yùn)行平均數(shù)的VI。
前面板
1. 打開一個(gè)新的前面板,按照下圖所示創(chuàng)建對(duì)象。
2. 把波形圖表的坐標(biāo)范圍改為0.0到2.0。
3. 在添加開關(guān)之后,用鼠標(biāo)右鍵單擊它,在快捷菜單中選擇Mechanical Action?Latch When Pressed,再選擇Operate?Make Current Values D 36、efault,把ON狀態(tài)設(shè)置為默認(rèn)狀態(tài)。
2.0
0.0
0.5
1.0
1.5
50
0
隨機(jī)數(shù)
Boolean
ON
OFF
練習(xí)四 的前面板
流程圖
1.按下圖創(chuàng)建流程圖。
練習(xí)四 的流程圖
2.在流程圖中添加 While 循環(huán)(Functions?Structures),創(chuàng)建移位寄存器。
a. 用鼠標(biāo)右鍵單擊While循環(huán)的左邊或者右邊,在快捷菜單中選擇Add Shift Register。
b. 用鼠標(biāo)右鍵單擊寄存器的左端子,在快捷菜單中選擇Add Element,添加一個(gè)寄存器。用同樣的方法創(chuàng)建第三個(gè)元素。
3.Random Nu 37、mber (0–1)函數(shù)(Functions?Numeric)——產(chǎn)生0到1之間的某個(gè)隨機(jī)數(shù)。
4.Compound Arithmetic 函數(shù)(Functions?Numeric)——在本練習(xí)中,它將返回兩個(gè)周期產(chǎn)生的隨機(jī)數(shù)的和。如果要加入其他的輸入,只需用右鍵單擊某個(gè)輸入,從快捷菜單中選擇Add Input。
5.除法函數(shù)(Functions?Numeric)——在本練習(xí)中,它用于返回最近四個(gè)隨機(jī)數(shù)的平均值。
6.數(shù)值常數(shù)(Functions?Numeric)——在While循環(huán)的每個(gè)周期,Random Number (0–1)函數(shù)將產(chǎn)生一個(gè)隨機(jī)數(shù)。VI就將把這個(gè)數(shù)加入到存儲(chǔ)在寄存器 38、中的最近三個(gè)數(shù)值中。Random Number (0–1)再將結(jié)果除以4,就能得到這些數(shù)的平均值(當(dāng)前數(shù)加上以前的三個(gè)數(shù))。然后再將這個(gè)平均值顯示在波形圖中。
7.Wait Until Next ms Multiple函數(shù) (Functions?Time & Dialog)——它將確保循環(huán)的每個(gè)周期不會(huì)比毫秒輸入快。在本練習(xí)中,毫秒輸入的值是500毫秒。如果用鼠標(biāo)右鍵單擊圖標(biāo),從快捷菜單中選擇Visible?Label,就可以看到Wait Until Next ms Multiple的標(biāo)簽。
8.用鼠標(biāo)右鍵單擊Wait Until Next ms Multiple 功能函數(shù)的輸入端子,在快 39、捷菜單中選擇Create Constant。出現(xiàn)一個(gè)數(shù)值常數(shù),并自動(dòng)與功能函數(shù)連接。
9.將Constant設(shè)置為500。這樣連接到函數(shù)的數(shù)值常數(shù)設(shè)置了500毫秒的等待時(shí)間。因此循環(huán)每半秒執(zhí)行一次。注意,VI用一個(gè)隨機(jī)數(shù)作為移位寄存器的初始值。如果沒有設(shè)置移位寄存器端子的初始值,它就含有一個(gè)默認(rèn)的數(shù)值,或者上次運(yùn)行結(jié)束時(shí)的數(shù)值,因此開始得到的平均數(shù)沒有任何意義。
10.執(zhí)行該 VI,觀察過程。
11.把該 VI 保存。
練習(xí) 四 結(jié)束。
附注:移位寄存器的初值:
上面的練習(xí)中對(duì)移位寄存器設(shè)置了初值0.5。如果不設(shè)這個(gè)初值,默認(rèn)的初值是0。在這個(gè)例子中,一開始的計(jì)算結(jié)果是不 40、對(duì)的,只有到循環(huán)完3次后移位寄存器中的過去值才填滿,即第4次循環(huán)執(zhí)行后可以得到正確的結(jié)果。
2.1.2 For循環(huán)
For循環(huán)用于將某段程序執(zhí)行指定次數(shù)。和While 循環(huán)一樣,它不會(huì)立刻出現(xiàn)在流程圖中,而是出現(xiàn)一個(gè)小的圖標(biāo),而后您可以修改它的大小和位置。具體的方法是,先單擊所有端子的左上方,然后按下鼠標(biāo),拖曳出一個(gè)包含所有端子的矩形。釋放鼠標(biāo)時(shí)就創(chuàng)建了一個(gè)指定大小和位置的For循環(huán)。
For循環(huán)將把它的框圖中的程序執(zhí)行指定的次數(shù),F(xiàn)or循環(huán)具有下面這兩個(gè)端子:
N: 計(jì)數(shù)端子(輸入端子)——用于指定循環(huán)執(zhí)行的次數(shù)。
I: 周期端子(輸出端子)——含有循環(huán)已經(jīng)執(zhí)行的次 41、數(shù)。
上圖顯示了一可以產(chǎn)生100個(gè)隨機(jī)數(shù)并將數(shù)據(jù)顯示在一個(gè)圖表上的For循環(huán)。在該例中,i 的初值是0,終值是99。
練習(xí)五 使用For循環(huán)
目的:用For循環(huán)和移位寄存器計(jì)算一組隨機(jī)數(shù)的最大值。
1.打開一個(gè)新的前面板,按照下圖創(chuàng)建對(duì)象。
a.將一個(gè)數(shù)字顯示對(duì)象放在前面板,設(shè)置它的標(biāo)簽為“最大值”。
b.將一個(gè)波形圖表放在前面板,設(shè)置它的標(biāo)簽為“隨機(jī)數(shù)”。將圖表的縱坐標(biāo)范圍改為0.0到1.0。
c.在圖表的快捷菜單中選擇Visible Items?Scrollbar和Digital Display,并隱藏Plot Legend。
d.用移位工具修改滾動(dòng)欄的大小。
42、
練習(xí)五 的前面板和流程圖
2.按照上圖畫流程圖。
3.在流程圖中放置一個(gè)For循環(huán)(Functions?Structures)。
4.在For循環(huán)的邊框處單擊鼠標(biāo)右鍵,在快捷菜單中選擇Add Shift Register。
5.將下列對(duì)象添加到流程圖。
a.Random Number (0–1)函數(shù)(Functions?Numeric)——產(chǎn)生0到1之間的某個(gè)隨機(jī)數(shù)。
b.數(shù)值常數(shù)(Functions?Numeric)——在這個(gè)練習(xí)中需要將移位寄存器的初始值設(shè)成0。
c.Max&Min函數(shù)(Functions?C 43、omparison)——輸入兩個(gè)數(shù)值,再將它們的最大值輸出到右上角,最小值輸出到右下角。這里只需要最大值,只用連接最大值輸出。
d.數(shù)值常數(shù)(Functions?Numeric)——For循環(huán)需要知道需要執(zhí)行的次數(shù)。本練習(xí)中是100次。
6.按照上圖連接各個(gè)端子。
7.運(yùn)行該VI。
8.將該VI保存。
練習(xí)五 結(jié)束。
2.2 分支結(jié)構(gòu):Case
Case結(jié)構(gòu)含有兩個(gè)或者更多的子程序(Case),執(zhí)行那一個(gè)取決于與選擇端子或者選擇對(duì)象的外部接口相連接的某個(gè)整數(shù)、布爾數(shù)、字符串或者標(biāo)識(shí)的值。必須選擇一個(gè)默認(rèn)的Case以處理超出范圍的數(shù)值,或者直接列出所有可能的輸入數(shù)值。C 44、ase結(jié)構(gòu)見下圖,各個(gè)子程序占有各自的流程框,在其上沿中央有相應(yīng)的子程序標(biāo)識(shí):Ture、False或1、2、3…。按鈕用來改變當(dāng)前顯示的子程序(各子程序是重疊放在屏幕同一位置上的)。
子程序標(biāo)識(shí)
按鈕
條件端子
練習(xí)六 使用 Case結(jié)構(gòu)
目的:創(chuàng)建一個(gè)VI以檢查一個(gè)數(shù)值是否為正數(shù)。如果它是正的,VI就計(jì)算它的平方根,反之則顯示出錯(cuò)。
前面板
1. 打開一個(gè)新的前面板,并按照下圖所示創(chuàng)建對(duì)象。控制對(duì)象用于輸入數(shù)值,顯示對(duì)象用于顯示該數(shù)值的平方根。
流程圖
2. 照下圖創(chuàng)建流程圖。
練習(xí)六的面板和流程圖
3. 從Functions? 45、Structures中選擇一個(gè) Case結(jié)構(gòu),并放置在在流程圖中。 Case 結(jié)構(gòu)是一個(gè)可以改變大小的方框。先來做Ture的情況,照流程圖上半部分構(gòu)造。
a. Greater Or Equal To 0? 函數(shù)(Functions?Comparison)——如果輸入數(shù)值大于或者等于0就會(huì)返回一個(gè)TRUE值。
b. Square Root 函數(shù)(Functions?Numeric)——返回輸入數(shù)值的平方根。
連好線
c. 點(diǎn)擊Case框的選擇按鈕,轉(zhuǎn)入False情況編程
數(shù)值常數(shù)(Functions?Numeric)——這里用于顯示錯(cuò)誤的代數(shù)值-999.0 46、0。
d. One Button Dialog函數(shù)(Functions?Time & Dialog)——在 這里它用于顯示一個(gè)對(duì)話框,內(nèi)容是Error...。
e. 字符串常數(shù) (Functions?String)——用Edit Text Tools在對(duì)話框中輸入字符串。
該VI在TRUE或者FALSE情況下都會(huì)執(zhí)行。如果輸入的數(shù)值大于等于0,VI會(huì)執(zhí)行TRUE Case,返回該數(shù)的平方根,否則將會(huì)輸出-999.00,并顯示一個(gè)對(duì)話框,內(nèi)容為Error...。
返回前面板,運(yùn)行該VI。修改標(biāo)簽為Number的數(shù)字式控制對(duì)象的數(shù)值,分別嘗試一個(gè)正數(shù)和負(fù)數(shù)。注意,當(dāng)把 47、數(shù)字式控制對(duì)象的值改為負(fù)數(shù)時(shí),LabVIEW會(huì)顯示Case結(jié)構(gòu)的FALSE Case中設(shè)置的出錯(cuò)信息。
4. 保存該 VI。
VI 的算法
本練習(xí)中的流程圖功能相當(dāng)于代碼式編程語言中的下列偽代碼:
if (Number >= 0) then
Square Root Value = SQRT(Number)
else
Square Root Value = -999.00
Display Message "Error.. "
end if
練習(xí) 六 結(jié)束。
2.3 順序結(jié)構(gòu)和公式節(jié)點(diǎn)
2.3.1 順序結(jié)構(gòu)(Sequence Structu 48、re)
在代碼式的傳統(tǒng)編程語言中,默認(rèn)的情況是,程序語句按照排列順序執(zhí)行,但LabVIEW中不同,它是一種圖形化的數(shù)據(jù)流式編程語言。在下圖左圖中,假設(shè)有A、B、C、D4個(gè)節(jié)點(diǎn),其數(shù)據(jù)流向如右圖所示。按照數(shù)據(jù)流式語言的約定,
順序結(jié)構(gòu)的說明
任何一個(gè)節(jié)點(diǎn)只有在所有的輸入數(shù)據(jù)有效時(shí)才會(huì)執(zhí)行,所以圖中,當(dāng)且僅當(dāng)A、B、C3個(gè)節(jié)點(diǎn)執(zhí)行完,使得D節(jié)點(diǎn)的3個(gè)輸入數(shù)據(jù)都到達(dá)D節(jié)點(diǎn)后,D節(jié)點(diǎn)才執(zhí)行。但是你要注意,這里并沒有規(guī)定A、B、C3個(gè)節(jié)點(diǎn)的執(zhí)行順序。在LabVIEW中這種情況下,A、B、C的執(zhí)行順序是不確定的,如果你需要對(duì)它們規(guī)定一個(gè)確定的順序,那就需要使用本節(jié)介紹的“順序結(jié)構(gòu)”。
上圖中 49、的右邊是順序結(jié)構(gòu)的圖標(biāo),它看上去像是電影膠片。它可以按一定順序執(zhí)行多個(gè)子程序。首先執(zhí)行0幀中的程序,然后執(zhí)行1幀中的程序,逐個(gè)執(zhí)行下去。與Case結(jié)構(gòu)類似,這多幀程序在流程圖中占有同一個(gè)位置。
練習(xí) 七 使用順序結(jié)構(gòu)
目的:創(chuàng)建一個(gè) VI,計(jì)算生成等于某個(gè)給定值的隨機(jī)數(shù)所需要的時(shí)間。
前面板
打開一個(gè)新的前面板,并按照下圖所示創(chuàng)建對(duì)象。
練習(xí)七的前面板
我們約定數(shù)據(jù)是0到100范圍的整數(shù)。當(dāng)前值用于顯示當(dāng)前產(chǎn)生的隨機(jī)數(shù)?!皥?zhí)行次數(shù)”用于顯示達(dá)到指定值循環(huán)執(zhí)行的次數(shù)。匹配時(shí)間用來顯示達(dá)到指定值所用的時(shí)間。
流程圖
練習(xí) 七 的流程圖( 50、共3幀)
1. 在流程圖中放置順序結(jié)構(gòu)(Functions?Structures)。
2. 用鼠標(biāo)右鍵單擊幀的邊框,在快捷菜單中選擇Add Frame After,創(chuàng)建一個(gè)新幀。重復(fù)這個(gè)步驟,再創(chuàng)建一個(gè)幀。共3楨。
3. 選中第0楨,設(shè)置讀取初始時(shí)間(子)程序
4. 第0幀的下邊框上含有一個(gè)小方框,其中有一個(gè)箭頭。這個(gè)方框叫做順序局 部變量,可以在同一個(gè)順序結(jié)構(gòu)中的各個(gè)幀之間傳遞數(shù)據(jù)。用鼠標(biāo)右鍵單擊第0 幀的底部邊框,選擇Add Sequence Local,創(chuàng)建順序局部變量。順序局部變量顯示為一個(gè)空的方塊。當(dāng)您將某個(gè)功能函數(shù)與順序局部變量相連時(shí),方塊中的箭頭就會(huì)自 51、動(dòng)顯示。
5. Tick Count (ms) 函數(shù)(Functions?Time & Dialog)——返回啟動(dòng) 到現(xiàn)在的時(shí)間(以毫秒為單位)。在這里例子里需要使用兩個(gè)這個(gè)函數(shù)。另一個(gè)在第2幀中。
6. 按圖連好線。轉(zhuǎn)入第1幀。該幀是匹配計(jì)算,內(nèi)含一個(gè)循環(huán)結(jié)構(gòu)。該圖中使 用的新函數(shù)有:
Round to Nearest函數(shù)(Functions?Numeric)——在該例中,它用于取0到100之間的隨機(jī)數(shù)到距離最近的整數(shù)。
Not Equal?函數(shù)(Functions? Comparison)——在該例中,它將隨機(jī)數(shù)和前面板中設(shè)置的數(shù)相比較,如果兩者不相等會(huì)返回TRUE值, 52、否則返回FALSE。
Increment函數(shù)(Functions?Numeric)——在該例中,它將While循環(huán)的計(jì)數(shù)器加1。
7. 按圖連好線。轉(zhuǎn)入第2幀
在第0幀中,Tick Count (ms)功能函數(shù)將以毫秒為單位表示當(dāng)前時(shí)間。這個(gè)數(shù)值被連到順序局部變量,這樣它就可以被后續(xù)的幀使用。在第1幀中,只要函數(shù)返回的值與指定值不等,VI就會(huì)持續(xù)執(zhí)行While循環(huán)。在第2幀中,Tick Count (ms)功能函數(shù)以毫秒為單位返回新的時(shí)間。VI從中減去原來的時(shí)間(由第0幀通過順序局部變量提供)就可以計(jì)算出花費(fèi)的時(shí)間。
8. 返回前面板,在Number to Match控制對(duì)象中輸入一個(gè) 53、數(shù)值,執(zhí)行該VI。
9. 把該VI保存。
練習(xí) 七 結(jié)束。
附注與說明:設(shè)置數(shù)據(jù)范圍
在設(shè)定一個(gè)數(shù)據(jù)對(duì)象時(shí),可以設(shè)置對(duì)輸入數(shù)據(jù)的限制,利用快捷鍵選擇Data Range… 選項(xiàng),將會(huì)出現(xiàn)如下對(duì)話框:
圖 設(shè)置數(shù)據(jù)范圍
它可以防止用戶創(chuàng)建的控制對(duì)象或顯示對(duì)象的值超出某個(gè)預(yù)設(shè)的范圍。您可以選擇忽略這個(gè)值,將它強(qiáng)制修改到范圍以內(nèi),或暫停程序的執(zhí)行。在程序執(zhí)行時(shí),如果發(fā)生溢出錯(cuò)誤,溢出錯(cuò)誤符號(hào)將顯示在工具欄中的執(zhí)行按鈕的位置。而且,一個(gè)立體的黑框?qū)寻l(fā)生溢出的控制對(duì)象包圍起來。
2.3.2 公式節(jié)點(diǎn)(Formula Node)
公式節(jié)點(diǎn)是一個(gè)大小可變的方框,可以 54、利用它直接在流程圖中輸入公式。從Functions?Structures中選擇公式節(jié)點(diǎn)就可以把它放到流程圖中。當(dāng)某個(gè)等式有很多變量或者非常復(fù)雜時(shí),這個(gè)功能就非常有用。例如等式:y = x2 + x + 1使用公式節(jié)點(diǎn)可以表示為:
公式節(jié)點(diǎn)示意圖
利用公式節(jié)點(diǎn)可以直接輸入一個(gè)或者多個(gè)復(fù)雜的公式,而不用創(chuàng)建流程圖的很多子程序。使用文本編輯工具來輸入公式。創(chuàng)建公式節(jié)點(diǎn)的輸入和輸出端子的方法是,用鼠標(biāo)右鍵單擊第0幀的底部邊框,選擇Add Input (Add Output)。再在節(jié)點(diǎn)框中輸入變量名稱。變量名對(duì)大小寫敏感。然后就可以在框中輸入公式。每個(gè)公式語句都必須以 55、分號(hào)(;)結(jié)尾。
公式節(jié)點(diǎn)的幫助窗口中列出了可供公式節(jié)點(diǎn)使用的操作符、函數(shù)和語法規(guī)定。一般說來,它與C語言非常相似,大體上一個(gè)用C寫的獨(dú)立的程序塊都可能用到公式節(jié)點(diǎn)中。但是仍然建議不要在一個(gè)公式節(jié)點(diǎn)中寫過于復(fù)雜的代碼程序。
下面這個(gè)例子顯示了如何在一個(gè)公式節(jié)點(diǎn)中執(zhí)行不同條件時(shí)的數(shù)據(jù)發(fā)送。
請(qǐng)閱讀下面這段程序代碼,如果X為正數(shù),它將算出X的平方根并把該值賦給Y,如果X為負(fù)數(shù),程序就給Y賦值-99。
if (x >= 0) then
y = sqrt(x)
else
y = -99
end if
可以用公式節(jié)點(diǎn)取代上面這段代碼,如下圖所示:
注意:公式節(jié)點(diǎn)中變量字母 56、X,Y大、小寫是有區(qū)別的,開方的函數(shù)sqrt(X)中函數(shù)名稱是小寫。
練習(xí) 八 使用公式節(jié)點(diǎn)
目的:創(chuàng)建一個(gè)VI,它用公式節(jié)點(diǎn)計(jì)算下列等式:
y1 = x 3 – x 2 + 5
y2 = m* x + b
x的范圍是從0到10。可以對(duì)這兩個(gè)公式使用同一個(gè)公式節(jié)點(diǎn),并在同一個(gè)圖表中顯示結(jié)果。
前面板
練習(xí) 八 的面板
打開一個(gè)新的前面板,按照上圖(該圖中包含運(yùn)行結(jié)果)創(chuàng)建前面板中的對(duì)象。波形圖顯示對(duì)象用于顯示等式的圖形。該 VI使用兩個(gè)數(shù)字式控制對(duì)象來輸入m和b的值。
流程圖
按照下圖創(chuàng)建流程圖。
練習(xí) 八 的流程圖
在創(chuàng)建某個(gè)輸入或 57、者輸出端子時(shí),必須給它指定一個(gè)變量名。這個(gè)變量名必須與公式節(jié)點(diǎn)中使用的變量名完全相符。
公式節(jié)點(diǎn)中,在邊框上單擊鼠標(biāo)右鍵,在快捷菜單中選擇Add Input,可以創(chuàng)建三個(gè)輸入端子。在快捷菜單中選擇Add Output,創(chuàng)建輸出端子。
x的范圍是從0到10(包括10),就必須連接11到計(jì)數(shù)端子。
Build Array (Functions?Array)——在這個(gè)例子中,它用于將兩個(gè)數(shù)據(jù)構(gòu)成數(shù)組形式提供給一個(gè)多曲線的圖形中。通過用變形工具拖拉邊角就可以創(chuàng)建兩個(gè)輸入端子。
返回前面板,嘗試給m和b賦以不同的值再執(zhí)行該 VI。
把該VI保存。
練習(xí) 八 結(jié)束。
第三講 58、 數(shù)據(jù)類型:數(shù)組、簇和波形
3.1 概述
數(shù)組是同類型元素的集合。一個(gè)數(shù)組可以是一維或者多維,如果必要,每維最多可有231-1個(gè)元素。可以通過數(shù)組索引訪問其中的每個(gè)元素。索引的范圍是0到n – 1,其中n是數(shù)組中元素的個(gè)數(shù)。圖3-1所顯示的是由數(shù)值構(gòu)成的一維數(shù)組。注意第一個(gè)元素的索引號(hào)為0,第二個(gè)是1,依此類推。數(shù)組的元素可以是數(shù)據(jù)、字符串等,但所有元素的數(shù)據(jù)類型必須一致。
圖3-1 數(shù)組示意圖
簇(Cluster)是另一種數(shù)據(jù)類型,它的元素可以是不同類型的數(shù)據(jù)。它類似于C語言中的stuct。使用簇可以把分布在流程圖中各個(gè)位置的數(shù)據(jù)元素組合起來,這樣可以減少連線的擁擠程度。減少 59、子VI的連接端子的數(shù)量。
波形(Waveform)可以理解為一種簇的變形,它不能算是一種有普遍意義的數(shù)據(jù)類型,但非常實(shí)用。
3.2 數(shù)組的創(chuàng)建及自動(dòng)索引
3.2.1 創(chuàng)建數(shù)組
一般說來,創(chuàng)建一個(gè)數(shù)組有兩件事要做,首先要建一個(gè)數(shù)組的“殼”(shell),然后在這個(gè)殼中置入數(shù)組元素(數(shù)或字符串等)。
如果需要用一個(gè)數(shù)組作為程序的數(shù)據(jù)源,可以選擇Functions?Array?Array Constant,將它放置在流程圖中。然后再在數(shù)組框中放置數(shù)值常量、布爾數(shù)還是字符串常量。下圖顯示了在數(shù)組框放入字符串常量數(shù)組的例子。左邊是一個(gè)數(shù)組殼,中間的圖上已經(jīng)置入了字符串元素,右邊的圖 60、反映了數(shù)組的第0個(gè)元素為:”ABC”,后兩個(gè)元素均為空。
圖3-1 數(shù)組的創(chuàng)建
在前面板中創(chuàng)建數(shù)組的方法是,從Controls模板中選擇Array & Cluster,把數(shù)組放置在前面板中,然后選擇一個(gè)對(duì)象(例如數(shù)值常量)插入到數(shù)組框中。這樣就創(chuàng)建了一個(gè)數(shù)值數(shù)組。也可以直接在前面板中創(chuàng)建數(shù)組和相應(yīng)的控制對(duì)象,然后將它們復(fù)制或者拖曳到流程圖中,創(chuàng)建對(duì)應(yīng)的常數(shù)。還有很多在流程圖中創(chuàng)建和初始化數(shù)組的方法,有些功能函數(shù)也可以生成數(shù)組。
3.2.2 數(shù)組控制對(duì)象、常數(shù)對(duì)象和顯示對(duì)象
通過把數(shù)組與數(shù)值、布爾數(shù)、字符串或者簇組合在一起,可以在前面板和流程圖中創(chuàng)建任何一種控制對(duì)象、常數(shù)對(duì)象 61、和顯示對(duì)象。數(shù)組元素不能是數(shù)組、圖表或者圖形。
3.2.3 自動(dòng)索引
For循環(huán)和While循環(huán)可以自動(dòng)地在數(shù)組的上下限范圍內(nèi)編索引和進(jìn)行累計(jì)。這些功能稱為自動(dòng)索引。在啟動(dòng)自動(dòng)索引功能以后,當(dāng)把某個(gè)外部節(jié)點(diǎn)的任何一維元素連接到循環(huán)邊框的某個(gè)輸入通道時(shí),該數(shù)組的各個(gè)元素就將按順序一個(gè)一個(gè)地輸入到循環(huán)中。循環(huán)會(huì)對(duì)一維數(shù)組中的標(biāo)量元素,或者二維數(shù)組中的一維數(shù)組等編制索引。在輸出通道也要執(zhí)行同樣的工作――數(shù)組元素按順序進(jìn)入一維數(shù)組,一維數(shù)組進(jìn)入二維數(shù)組,依此類推。
在默認(rèn)情況下,對(duì)于每個(gè)連接到For循環(huán)的數(shù)組都會(huì)執(zhí)行自動(dòng)索引功能。可以禁止這個(gè)功能的執(zhí)行,方法是用鼠標(biāo)右鍵單擊通道(輸入數(shù)組進(jìn)入循環(huán) 62、的位置),在快捷菜單中選擇Disable Indexing。
練習(xí) 九 創(chuàng)建一個(gè)自動(dòng)索引的數(shù)組
目的:使用 For 循環(huán)的自動(dòng)索引功能創(chuàng)建數(shù)組,并用一個(gè)圖形(Graph)顯示該數(shù)組。
前面板
圖3-2 練習(xí) 九 的面板
1. 打開一個(gè)新的前面板。
2. 選擇Controls?Array & Cluster,在前面板中放置一個(gè)數(shù)組。設(shè)置它的標(biāo)簽為Waveform Array。
3. 選擇Controls?Numeric,在數(shù)組框中插入一個(gè)數(shù)字式顯示對(duì)象。如右圖所示。它用于顯示數(shù)組的內(nèi)容。
4. 選擇Controls?Grap 63、h,在前面板中放置一個(gè)波形圖。設(shè)置它的標(biāo)簽為Waveform Graph。
5. 隱藏圖例和模板。
6. 用鼠標(biāo)右鍵單擊圖形,并在快捷菜單中取消選中 Y Scale?Autoscale Y,禁止自動(dòng)坐標(biāo)功能。
7. 使用文本工具,把Y軸的范圍改為-0.5到1.5。
8. 按照下圖創(chuàng)建流程圖。
圖3-2 練習(xí) 九 的流程圖
由Functions?Select a VI…尋找LabVIEW\activity目錄下的Generate Waveform VI ,它的作用是返回波形中的某一點(diǎn)。這個(gè)VI需要輸入一個(gè)索引,我們將循環(huán)周期連接到這 64、個(gè)輸入。
注意Generate Waveform VI連出來的連線在循環(huán)邊界變成一個(gè)數(shù)組時(shí)會(huì)變粗,正是在這個(gè)邊界處形成了一維數(shù)組。
For循環(huán)會(huì)自動(dòng)累計(jì)邊界內(nèi)的數(shù)組。這種功能叫做自動(dòng)索引。在這個(gè)例子中,連接到循環(huán)計(jì)數(shù)輸入的數(shù)值常數(shù)令For循環(huán)創(chuàng)建了一個(gè)由100個(gè)元素組成的數(shù)組。
Bundle函數(shù)( Functions? Cluster)——將圖塊中的各個(gè)組件組合成一個(gè)簇,在正確連接以前需要改變?cè)摵瘮?shù)的圖標(biāo)的大小。將移位工具放在圖標(biāo)的左下角。變形工具會(huì)變成如左圖所示,拖曳鼠標(biāo)直到出現(xiàn)第三個(gè)輸入端子。
數(shù)值常數(shù)( Functions?Numeric)——三個(gè)數(shù)值常數(shù)用于設(shè)置For循環(huán)執(zhí)行 65、的周期數(shù)N=100,初始X=0和delta X=1。
9. 從前面板執(zhí)行該VI。該VI將把自動(dòng)索引后的波形圖數(shù)組顯示在波形圖中。
10.把 X的delta值改為0.5,X的初始值改為20。再次執(zhí)行該VI。注意,波形圖現(xiàn)在同樣顯示100個(gè)點(diǎn),而每個(gè)點(diǎn)的初始值為20,X的delta值為0.5(見X軸)。
11.只需在顯示器中輸入元素的索引號(hào)就可以查看波形數(shù)組中的任何元素。如果輸入的數(shù)比數(shù)組的元素個(gè)數(shù)大,那么顯示器將變暗,表示您沒有為該元素設(shè)置索引。
如果需要一次查看多個(gè)元素,可以通過改變數(shù)組顯示對(duì)象的大小來實(shí)現(xiàn)。 把定位工具放置在數(shù)組框的右下角。工具將變成右圖所示的變形工具。當(dāng)工具變形時(shí), 66、用鼠標(biāo)拖曳數(shù)組的右邊或者下邊。數(shù)組現(xiàn)在就可以按照元素索引的上升順序顯示多個(gè)素,以某個(gè)與指定索引對(duì)應(yīng)的元素開始,如下圖所示。
圖3-3 練習(xí) 九 中多個(gè)數(shù)組元素的同時(shí)觀察
在前面的流程圖中,您為波形圖指定了初始的X值和delta X值。默認(rèn)的X初始值是0,delta X 值是1。這樣,也可以把波形數(shù)組直接連接到波形圖端子, 而無需指定初始的X值和delta X值,如圖3-4所示。
圖3-4 練習(xí) 九使用默認(rèn)X及Delta X時(shí)簡(jiǎn)化后的流程圖
12. 按上圖刪除 Bundle功能函數(shù)和它所連接的常數(shù)對(duì)象。方法是用移位工具選擇該功能函數(shù)和連接的常數(shù)對(duì)象,按下
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案