新聞中心

EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > LabVIEW關(guān)于定時(shí)的研究

LabVIEW關(guān)于定時(shí)的研究

作者: 時(shí)間:2012-09-07 來(lái)源:網(wǎng)絡(luò) 收藏

二.Wait Until Next ms Multiple


要比較好的解釋這個(gè)vi,需要知道系統(tǒng)(至少Windows里有)中有一個(gè)millisecond timer這樣一個(gè)計(jì)時(shí)器,這個(gè)vi跟這個(gè)計(jì)時(shí)器有著千絲萬(wàn)縷的關(guān)系。
簡(jiǎn)單來(lái)說(shuō),這個(gè)vi將一直等到ms timer得到輸入值的整數(shù)倍才結(jié)束,通過(guò)下面的example,將會(huì)更好的理解(Wait Until Demo 1.vi)。程序中,首先輸入50ms給Wait Until,計(jì)算第一次Wait Until花的時(shí)間,再輸入50ms,同樣地計(jì)算出第二次Wait Until花的時(shí)間。

運(yùn)行完程序后,得到大致下面的結(jié)果:

每次運(yùn)行的結(jié)果都不相同,但是可以看到,第一次Wait Until所花的時(shí)間總不是50ms,而第二次花的時(shí)間肯定是50ms,并且Timer Value兩次一般都是50ms的倍數(shù);出現(xiàn)這樣的情況是這樣來(lái)解釋:首先,在程序運(yùn)行的時(shí)候,系統(tǒng)的Timer值并不會(huì)正好是50的倍數(shù),假設(shè)為10450935,那么程序在運(yùn)行了15ms后Timer達(dá)到10450950(50的倍數(shù))從而結(jié)束第一個(gè)Wait Until;在之后又進(jìn)入第二個(gè)Wait Until,在達(dá)到后一個(gè)50的倍數(shù)(10451000)后完成。
因此,如果將Wait Until并行地放在While循環(huán)中時(shí),可能會(huì)出現(xiàn)兩個(gè)問(wèn)題,首先是它的第一次的周期就是不確定的。如下面的例子(Wait Until Parallel Demo 1.vi):

將按鈕調(diào)在Wait Until和Wait,運(yùn)行程序后,得到下面的對(duì)比結(jié)果:

可以看到,在用Wait Until時(shí),第一次(即第二個(gè)值)都達(dá)不到20ms,但用Wait時(shí),第一次就能保證在20ms,這是由于程序剛開(kāi)始時(shí)Timer值不是整數(shù)倍導(dǎo)致。
用Wait Until Next ms Multiple.vi的第二個(gè)問(wèn)題見(jiàn)下面的鏈接,講得也很清楚了:http://zone.ni.com/devzone/cda/tut/p/id/4120
最后再看一個(gè)例子,當(dāng)Wait Until放在順序模式中時(shí),大致可以起到Wait的并行模式的作用,但是在代碼時(shí)間超過(guò)設(shè)定值時(shí),兩者還是有著很大的區(qū)別。

當(dāng)將Loop Num設(shè)大后,代碼執(zhí)行時(shí)間超過(guò)了20ms,此時(shí)得到的結(jié)果如下圖,執(zhí)行周期達(dá)到了40ms,這也證明了一旦代碼時(shí)間超過(guò)設(shè)定值后,Wait Until就會(huì)一直等到下一個(gè)設(shè)定值的整數(shù)倍才能結(jié)束。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: LabVIEW 定時(shí)

評(píng)論


相關(guān)推薦

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

關(guān)閉