Biscuit
(Biscuit)
#1
之前用Wait Until Next ms Multipe會導致原本程式剛開始執行時會重秒,如這樣

後來我使用 Wait(ms) 改善了程式剛開始時會重秒的問題 (使用1000ms)
但 程式跑幾小時就會出現實際上其實不是真正剛好1000ms會多一點點
導致跑久了會有誤差大約15分鐘差0.1秒,跑快兩小時會差1秒
下圖是重秒的時刻
若長久下來看來Wait Until Next ms Multipe似乎比較穩定,但缺點是一開始會重秒,Wait(ms)會越跑越快,請問各位高手知道其原因或是更好之解決方法嗎,長久跑下來讓程式不會有重秒或空秒的問題發生。
Wait(ms).vi (11.5 KB)
Biscuit
(Biscuit)
#3
謝謝您的建議,不過因為是要跑程式數據的,若不抓系統時間的話,採用+1秒的方式,跑幾天下來誤差可能會越來越大,可能還是需要抓系統時間為準。
Maxfish
(Maxfish)
#4
就我個人觀點來說,0.999秒感覺跟1S是差不多的。
如果你覺的數據變化在每0.001秒都很重要,我建議要使用高階示波器等級的作法。
如果只是長時間數據的監控,我認為這些偏差應該部會影響到你的結果。
實際上這可能已經是軟體的極限了。
Ha666
#5
這很正常呀,電腦很快,但不代表他很穩。
你要確保更穩定的時間控管,要考慮real time架構。
然後我認為要看應用比較好給建議。舉例來說,如果你做的是量測,那其實你只需要處理好time stamp。總之從目前有的資訊,real time有他是你的最佳解,可以參考NI的real time module,硬體有NI的RT PXI, cRIO, sbRIO, WPC的GECO。
Ha666
#6
喔對了,這篇應該可以解決的你對於兩種wait的疑惑。
yohorse
(yohorse)
#7
藉著延伸一下這話題~
我記得 event structrue 的time out也是能算時間,那也會出現原PO作業時間拉長導致時間偏移嗎?
對時間要求精確的話在桌面系統mS等級內可以使用 time loop 結構來達成
event structrue 就別想了 一樣會有偏差
但就算是使用了time loop 也只是保證相對精確而己
要完全準確請使用 real time system
Biscuit
(Biscuit)
#9
謝謝各位的解釋,拉長會導致時間偏移,會產生重秒現象