Wait(ms)函數和Wait Until Next ms Multiple函數之間的區別

更新 May 28, 2021

產品資訊

軟體

  • LabVIEW

問題敘述

我聽說過Wait(ms)和Wait Until Next ms Multiple函數,但是似乎它們都完成了相同的事情。 LabVIEW中的“Wait(ms)”和“Wait Until Next ms Multiple功能”有什麼區別?

解決方案

這兩個函數通常在指定的時間段內用於阻止執行,通常是為了控制迴圈執行的速率。不同之處在於,Wait(ms)函數只是阻止直到等待的毫秒數指定的時間過去,而Wait After Next ms Multiple函數阻止直到系統毫秒時鐘的當前值被毫秒數指定的值整除。 

下圖說明了如果兩個VI都以100作為各自的輸入並在50ms處開始運行時,何時執行將被解除阻止。水平軸是系統毫秒時鐘的值。


您還可以使用以下程式碼範例觀察執行方面的差異。

等待(毫秒):
Wait(ms)函數將阻止執行,直到指定的milliseconds to wait 過去。
  • 範例1:假設一個迴圈,該迴圈的程式碼需要5毫秒才能執行。該迴圈還包括一個Wait(ms)功能,其10毫秒連接至milliseconds to wait 輸入。 While迴圈總共需要10毫秒才能執行,因為程式碼在5毫秒後完成,然後Wait(ms)函數在5毫秒後完成。在這種情況下,Wait(ms)函數與程式碼並行執行。

在此範例中,迴圈定時由外部Wait (ms)功能設置。
  • 範例2:迴圈與前面的範例相同,但是程式碼現在需要15毫秒才能執行。外部的“Wait (ms)”功能還有10毫秒的連線milliseconds to wait 輸入。因為連接到Wait (ms)函數的時間小於執行程式碼所花費的時間,所以程式碼完成後沒有延遲,並且迴圈在15 ms之後立即移至下一個迭代。

在此範例中,未通過“Wait(ms)”功能設置迴圈定時。它由迴圈內程式碼的總體執行時間設置。

Wait Until Next ms Multiple:
您可以使用“Wait Until Next ms Multiple”功能將單獨的迴圈同步到系統的毫秒時鐘。顧名思義,它會一直等到milliseconds multiple輸入處指定的毫秒數的下一個倍數,然後才能解除阻止運行。
  • 範例3:該迴圈的程式碼需要100毫秒才能執行,而“ Wait Until Next ms Multiple”是與程式碼並行運行的多重功能。 “Wait Until Next ms Multiple”功能將200毫秒連接到其millisecond multiple輸入。該迴圈以系統毫秒時鐘的每200毫秒倍執行一次。同一VI中有第二個迴圈,具有“Wait Until Next ms Multiple”功能,其200毫秒連接至其millisecond multiple輸入。第二個迴圈中的程式碼需要150毫秒才能執行並行運行。每當系統時鐘的200 ms的倍數過去時,這兩個迴圈將被同步以移至它們的下一個迭代。使用這種方法,可以確保每個迴圈同時開始後續的迭代。

相關資訊

請注意,在迴圈中使用“Wait Until Next ms Multiple”功能時,第一次迭代延遲將與為millisecond multiple輸入指定的時間不同。這是因為“Wait Until Next ms Multiple”功能會一直等待,直到系統的毫秒時鐘的當前值可被您在millisecond multiple輸入處指定的值整除為止。因此,它第一次運行時,其等待時間取決於系統毫秒時鐘的絕對時間。隨後的每個迭代都將與此時間對齊,並等待以毫秒為單位指定的適當時間。

請記住,與Wait(ms)函數一樣,如果並行執行的程式碼所花費的時間長於毫秒倍數指定的時間,則Wait Until Next ms Multiple函數不會對迴圈速度產生影響在這種情況下,下一個迴圈將在程式碼完成運行之後開始。

有關Wait(ms)函數和 Wait Until Next ms Multiple函數之間差異的更多訊息,請參閲LabVIEW幫助文章。