Time loop相關疑問

您好想詢問各位先進,目前我想要的loop方向是限制程式在設定的時間內完成一次程式


所以我使用了time loop迴圈,並將Period設定我想要的時間,不過我後來在程式內寫入下圖內容來偵測Period是否為我設定的值,發現跟我設定的Period對不太上,time loop好像不是我想的那樣,設定Period後並強迫迴圈內的程式在特定時間執行完成,且重複執行到我設定秒數。

如果不是time loop不是我想的那樣的話,想詢問各位先進有甚麼方式是可以達到我要的呢?

在特定時間內執行迴圈內所有程式,並且執行到我設定秒數後才中止程式。


Time Loop Example.vi (63.8 KB)

1個讚


想請問Period設定50,不是50ms跑一次嗎?
他怎麼是跑一半,我以為他會有100個結果

是的~

  1. Period 設定 50 表示 Time Loop 跑迴圈一次 50ms (一個週期)
  2. Index 1 Time = 100 因為 程式碼運作時間 Sine 超過了 50 ms
    也就是說 如果迴圈內 有 其他程式碼運作 跑迴圈一次 會以實際的運作時間為主.

跑一半 ??? 100個結果???
不懂你的意思???

Period Time @ Strat Time - Last Strat Time
判斷式
i >= Period 停止迴圈

View Indwx Value 是 記錄 i 跟 每次迴圈的時間
你 Period 設置 50
所以 View Indwx Value (array) 長度 最多 50 , 不會是 100

停止條件判斷式 :

  1. 程式運行 Error
  2. Stop = True
  3. i >= Period Time
  4. 已運行秒數>= 設定秒數

你看一下 停止的條件.
Time Loop Example_2.vi (67.1 KB)

1個讚


請問這邊是計算Real Period Time嗎

程式一開始運行的時間 Current Time

i = 0 並沒有 上一次 迴圈的時間 Not yet Last Strat Time
所以 我在 i = 0 時, 迴圈內 以 Get Period Time 設置為延遲時間 當成 Period Time
(Get Period Time- Period Time 為 Offset)

i > 0
Period Time @ Strat Time - Last Strat Time

然後後面的時間才是之後程式循環的Period time

是的~
Period Time @ Strat Time - Last Strat Time

你的貼圖 也是如此
只是 你 i=0 沒有判斷 Current Time

1個讚

如果是這樣的話,那period應該就真的是循環一次的時間,可是實際上好像不是,是因為loop裡面程式比較多嗎?

LabView Help 上有說明 :
National Instruments 不支持包含週期為 0 的定時循環的應用程序,
因為這些週期會導致未定義的應用程序行為。

我的推測 Period 値設太小 造成的不穩定.
或許應該跟 CPU處理速度 電腦記憶體資源 有關聯
因為單位是 (ms) 而且這個物件的初始值內建是 1000(ms)

fyi

所以Period的極限值還是取決於Time loop裡面的程式大小嗎?
沒辦法說我設定多少他就多少循環一次嗎?



目前loop內的程式,還沒整理 有點亂XD

辦法是有的…
只不過…你 迴圈內的程式碼 VI 都要有加入 強制停止的功能.