Labview的使用技巧

2022-09-28 13:27:05 字數 2339 閱讀 5460

對於labview中用於定時的兩個最常用的vi就是wait (ms).vi 以及 wait until next ms multiple,本文將用實際例子來講述這兩個vi的區別。不想看後面的詳細討論的可以只看下面幾個結論即可:

1. 如果想實現定週期while迴圈時,需要用wait(ms).vi而不是wait until next ms

2. wait(ms).vi在與**並行時可以保證整個執行時間為設定值,這個功能一般都會以為是wait until next ms 的特性

3. wait until next ms 並非想象中那麼好用,它會造成不少的問題,至少第一次的執行時間無法保證為設定值。

4. 在**執行時間沒超過設定值時,兩者可以通過程式設計實現大致相同的功能,但是當**執行時間很大時,兩者的處理方法是截然不同的。

一.wait (ms)

對於wait (ms) 這個vi來說需要分兩部分來討論,即它是被順序地放入**中還是並行地放入**中,這兩種方式的不同將導致它起的作用完全不同。

(1)順序模式

看一下附帶程式中的wait sequence demo ,在乙個while迴圈中,首先用time 延時0.05s,然後順序地使用wait (ms).vi,設為20ms。

最後執行後的結果如下圖,迴圈的週期在70ms左右。

從結果中可以得知,在順序模式中,wait (ms).vi是實打實地延時了所設定的時間,如果其他順序中的**耗了時間後,那整個迴圈的時間就是**時間+延時的時間。即使在此例中將time delay換成一些其他消耗一定時間的code後結果也是一樣。

(2)並行模式

當在並行模式時,在不是跑real-time時,wait (ms)這個vi竟然是能保證整個迴圈週期是所設定的值,我們看下面的例子(wait parallel demo 程式如下:

迴圈中有n多wait(ms).vi,執行後的結果是迴圈週期是20ms,因此可以初步得出結論,對於wait(ms).vi與其他**並行時,它會保證整個部分的執行時間是所設定的值(millisecondes to wait)。

如果還不很確定的話可以看下面乙個例子(wait parallel demo 整個程式的迴圈中有乙個這樣乙個小vi,它的作用就是執行一堆**從而佔據一段時間(可調)。results中有兩條曲線,白線表示的是**的執行時間,紅線表示的是整個迴圈的執行時間。

執行後,我們將loop num設小一點,比如5,以保證**的執行時間小於20ms,得到下面的結果曲線,可以看到,當**時間不大於設定時間值時,整個迴圈週期保證為設定值。

我們再將loop num增大,使**執行時間大於20ms,從而得到下面的結果曲線,即迴圈週期跟著**的時間走了。

那麼我們大致知道了wait(ms).vi在並行時的特性了,那麼在下面的框圖中可以很明顯地推斷出迴圈週期是50ms。

二.wait until next ms multiple

要比較好的解釋這個vi,需要知道系統(至少windows裡有)中有乙個millisecond timer這樣乙個計時器,這個vi跟這個計時器有著千絲萬縷的關係。

簡單來說,這個vi將一直等到ms timer得到輸入值的整數倍才結束,通過下面的example,將會更好的理解(wait until demo 程式中,首先輸入50ms給wait until,計算第一次wait until花的時間,再輸入50ms,同樣地計算出第二次wait until花的時間。

執行完程式後,得到大致下面的結果:

每次執行的結果都不相同,但是可以看到,第一次wait until所花的時間總不是50ms,而第二次花的時間肯定是50ms,並且timer value兩次一般都是50ms的倍數;出現這樣的情況是這樣來解釋:首先,在程式執行的時候,系統的timer值並不會正好是50的倍數,假設為10450935,那麼程式在執行了15ms後timer達到10450950(50的倍數)從而結束第乙個wait until;在之後又進入第二個wait until,在達到後乙個50的倍數(10451000)後完成。

因此,如果將wait until並行地放在while迴圈中時,可能會出現兩個問題,首先是它的第一次的週期就是不確定的。如下面的例子(wait until parallel demo

將按鈕調在wait until和wait,執行程式後,得到下面的對比結果:

可以看到,在用wait until時,第一次(即第二個值)都達不到20ms,但用wait時,第一次就能保證在20ms,這是由於程式剛開始時timer值不是整數倍導致。

最後再看乙個例子,當wait until放在順序模式中時,大致可以起到wait的並行模式的作用,但是在**時間超過設定值時,兩者還是有著很大的區別。

當將loop num設大後,**執行時間超過了20ms,此時得到的結果如下圖,執行週期達到了40ms,這也證明了一旦**時間超過設定值後,wait until就會一直等到下乙個設定值的整數倍才能結束。

LABVIEW的程式設計技巧之如何比較系統時間

上圖所示的就是lv定義的0時刻時間,這個時間是時區相關的。2 時間識別符號,時間識別符號可能是在lv8.0之後才出現的,是lv專門為時間操作提供的新的控制項,如上圖所示。其時間精度比直接使用秒數要高。3 時間簇表示。時間簇表示是我們最為常用的時間表示法,簇的資料結構如下圖所示 回過頭來看看所提的問題...

的使用技巧

3 如何在word中任意修改字間距 在word中修改字間距很不直觀,有些使用者甚至不知道該如何設定字間距,而不得不使用系統預設值。word的字距有 標準 加寬 緊縮 等三種字間距,其中 標準 字距即預設字間距,它的實際距離不是一成不變的,而是與文件中字型大小的大小有一定的關係。加寬 間距則是在 標準...

基於LabVIEW的廣告LED燈設計

成績 虛擬儀器技術及應用 期末作業 學期 2013 2014學年第一學期 指導教師 陶林 時間 2013 年 12月 25 日 姓名 x 學號 惺惺惜惺惺小 年級 專業 xx 西南交通大學峨眉校區機械工程系 關鍵字 labview廣告 led燈 引言led廣告燈是一種通過控制半導體發光二極體的顯示方...