最近在複習一些基本觀念,有些小細節總是容易搞混,即使用了很多次還是一樣。有關"wait" & "wait until next ms multiple"這兩樣時間控制的元件。
比較:
若以help的解釋來看,其實有點模糊不清楚。所以從網路資訊可以得到的概念大概就是:
wait:執行到包含此元件的時候會等待所設定時間,再繼續執行下一個流程(或下一個迴圈)。wait until...:有點類似wait,但是當要執行下一個流程(或者下一個迴圈)會以設定的時間"倍數"作為起始點。這樣說起來還是有點ㄚ札,自己的理解大概就是使用wait until...可以保證每次迴圈起始時間都是所設定的整數倍。或者可以參考這裡(需加入會員)
那這樣就衍生一個有趣的問題,在這樣的假設下,在同樣的時間(例如五分鐘、十分鐘或者更長時間)下,超過wait或者wait until...設定時間的程式,那哪個程式可以執行比較多次呢??於是我設計了一個VI如下:
程式的設計是迴圈每兩個迴圈後持行執行一次包含time delay的迴圈。程式中的T1是設定wait的迴圈,另外T2是設定wait until...的迴圈,looptime是兩個並行迴圈共同執行的速度,而code time則是"假的"code運行速度。(使用的ICON為time delay)
狀況一:looptime=100 ms, code time=0.12(120 ms)
在這樣的模擬下,執行時間與相對應的迴圈技術(i number)如下:
Time(second)-Code count-delta
60-(c1)561/ (c2)601-40
300-(c1)2795/ (c2)2996-201
以上的結果顯示了使用wait until...在相同的時間下,執行的次數反而比較多!??
狀況二:looptime=100 ms, code time(second)>=0.199
在這樣的模擬之下,兩個執行時間則會變成相當接近!!就不會再有持續的差距出現了!!真是有趣啊!?~WHY~
小結論:
不過我對這樣的結果也是稍微存疑,因為一來我沒有適合的程式可以真的測試運行時間,用Time delay不知道合不合理。第二因為兩個迴圈雖然是並行運行,但是不知道是否可以自行的變成多核心運行(雖然查詢到的資訊是說會自行轉換!)。至於狀況一與狀況二的差異,還需要思考一下真正導致的原因,雖然我覺得就跟time delay這個icon所造成的有關係,好像有一點點跟原本討論的不太一樣。
沒有留言:
張貼留言