<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > labview的深入探索------什么是“節(jié)點(diǎn)“

          labview的深入探索------什么是“節(jié)點(diǎn)“

          作者: 時(shí)間:2017-01-09 來源:網(wǎng)絡(luò) 收藏
          即便是用了LV多年,有些基本概念還是非常模糊的,比如"節(jié)點(diǎn)"和"函數(shù)"(NODE AND FUNCTION),我們稱LV本身提供的函數(shù)為節(jié)點(diǎn),或者節(jié)點(diǎn)函數(shù),那自己做的子VI被調(diào)用時(shí)算不算節(jié)點(diǎn),它內(nèi)部包含的下一級(jí)別的子VI是不是節(jié)點(diǎn)那?控件是不是節(jié)點(diǎn)?裝飾是不是節(jié)點(diǎn)?程序的結(jié)構(gòu)比如順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)是否是節(jié)點(diǎn)那?

          LV經(jīng)常用節(jié)點(diǎn)的數(shù)量來統(tǒng)計(jì)VI的性能,所以了解節(jié)點(diǎn)的真正含義是非常有必要的。

          首先看看幫助文件對(duì)節(jié)點(diǎn)的定義:

          節(jié)點(diǎn)是程序框圖上的對(duì)象,帶有輸入輸出端,在VI運(yùn)行時(shí)進(jìn)行運(yùn)算。節(jié)點(diǎn)類似于文本編程語言中的語句、運(yùn)算符、函數(shù)和子程序。LabVIEW有以下類型的節(jié)點(diǎn):

          本文引用地址:http://www.ex-cimer.com/article/201701/337237.htm
          • 函數(shù)-內(nèi)置的執(zhí)行元素,相當(dāng)于操作符、函數(shù)或語句。
          • 子VI-用于另一個(gè)VI程序框圖上的VI,相當(dāng)于子程序。
          • Express VI-協(xié)助常規(guī)測(cè)量任務(wù)的子VI。Express VI是在配置對(duì)話框中配置的。
          • 結(jié)構(gòu)-執(zhí)行控制元素,如For循環(huán)、While循環(huán)、條件結(jié)構(gòu)、平鋪式和層疊式順序結(jié)構(gòu)、定時(shí)結(jié)構(gòu)和事件結(jié)構(gòu)。
          • 公式節(jié)點(diǎn)和表達(dá)式節(jié)點(diǎn)-公式節(jié)點(diǎn)是可以直接向程序框圖輸入方程的結(jié)構(gòu),其大小可以調(diào)節(jié)。表達(dá)式節(jié)點(diǎn)是用于計(jì)算含有單變量表達(dá)式或方程的結(jié)構(gòu)。
          • 屬性節(jié)點(diǎn)和調(diào)用節(jié)點(diǎn)-屬性節(jié)點(diǎn)是用于設(shè)置或?qū)ふ翌惖膶傩缘慕Y(jié)構(gòu)。調(diào)用節(jié)點(diǎn)是設(shè)置對(duì)象執(zhí)行方式的結(jié)構(gòu)。
          • 通過引用節(jié)點(diǎn)調(diào)用-用于調(diào)用動(dòng)態(tài)加載的VI的結(jié)構(gòu)。
          • 調(diào)用庫函數(shù)節(jié)點(diǎn)-調(diào)用大多數(shù)標(biāo)準(zhǔn)庫或DLL的結(jié)構(gòu)。
          • 代碼接口節(jié)點(diǎn)(CIN)-調(diào)用以文本編程語言所編寫的代碼的結(jié)構(gòu)。


          這里函數(shù)的概念本身就不好理解,內(nèi)置的執(zhí)行元素,加減運(yùn)算符號(hào)算一個(gè)節(jié)點(diǎn),一個(gè)文件操作函數(shù)內(nèi)部包含大量的子函數(shù)或者子VI,也是一個(gè)節(jié)點(diǎn)?
          我們自己制作的VI稱作子VI,它可以理解成函數(shù)嗎?從分類上看顯然不是,那它到底有那些不同那?




          顯然,兩個(gè)輸入控件+一個(gè)顯示控件+運(yùn)算符號(hào)共四個(gè)節(jié)點(diǎn),前面板的裝飾當(dāng)然也是控件,因?yàn)槲覀兛梢缘玫剿膮⒖?進(jìn)而控制它的屬性,從分類上看,它也是繼承于最基本的圖形對(duì)象的,所以裝飾是控件,但不是輸入控件,也不是輸出控件,換個(gè)角度看,它沒有數(shù)據(jù)的流入或者流出,因此,裝飾不屬于節(jié)點(diǎn).


          從上圖可以看出,常量,結(jié)構(gòu),屬性節(jié)點(diǎn)都屬于節(jié)點(diǎn),一個(gè)屬性節(jié)點(diǎn)可以同時(shí)控制多個(gè)屬性,它仍然只算是一個(gè)節(jié)點(diǎn),所以通過一個(gè)屬性節(jié)點(diǎn)控制可以減少節(jié)點(diǎn)數(shù)量,全局變量和局部變量也都屬于節(jié)點(diǎn),因?yàn)樗忌婕傲藬?shù)據(jù)的流入或者流出.

          我們感興趣的是自己做的子VI和內(nèi)置函數(shù)有何不同之處



          上圖中,頂層VI有三個(gè)節(jié)點(diǎn),但是EXPRESS VI內(nèi)部包括53個(gè)節(jié)點(diǎn),自己做的SUBVI內(nèi)部包含8個(gè)節(jié)點(diǎn),而WRITE SPREAD SHEET盡管內(nèi)部包含大量操作,我們可以打開跟蹤,但是它只是一個(gè)節(jié)點(diǎn),從這里可以看出,經(jīng)管EXPRESS VI使用非常方便,但是LV沒有把EXPRESS VI稱為函數(shù),而寫文本文件VI盡管內(nèi)部非常復(fù)雜,但是仍然是一個(gè)節(jié)點(diǎn).

          所以使用LV內(nèi)置的函數(shù)可以提高程序運(yùn)行效率,而EXPRESS VI盡管使用方便,但是效率很低.


          上圖表明,我的計(jì)算二次函數(shù)VI,的確內(nèi)部包含8個(gè)節(jié)點(diǎn),那么如果我多次調(diào)用它,情況會(huì)如何那?


          二次函數(shù)本身8個(gè)節(jié)點(diǎn)沒有變化,每多調(diào)用一次,節(jié)點(diǎn)增加一個(gè),6+8=14個(gè)節(jié)點(diǎn).
          對(duì)于經(jīng)常使用的操作,如果作成子VI,可以有效地減少節(jié)點(diǎn)數(shù)量,提高運(yùn)行效率.

          為什么LV內(nèi)置的函數(shù)只是一個(gè)節(jié)點(diǎn)那,而我們自己做的子VI卻包含內(nèi)部使用的節(jié)點(diǎn)那?

          猜測(cè)LV啟動(dòng)后,很多內(nèi)置的函數(shù)已經(jīng)調(diào)入內(nèi)存了,因此我們使用它不過是增加了一個(gè)節(jié)點(diǎn),而我們自己做的SUBVI則不同,它是添加在程序框圖中被調(diào)入內(nèi)存的,所以節(jié)點(diǎn)數(shù)量應(yīng)該包括它內(nèi)部使用的節(jié)點(diǎn).


          關(guān)鍵詞: labview節(jié)

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();