2013/10/20

Wait (ms) 與 Wait Until Next Multiple (ms) 有何不同


圖一

大多數的 LabVIEW 使用者對於延時元件 Wait (ms) 與 Wait Until Next ms Multiple 都不陌生,但對於這兩者的差別往往說不清楚,甚至有錯誤的理解。讓我們先來看以下的例子:



圖二

在上圖的程式中,註解1標示的區域是模擬一個執行時間為 50 ms 的主程式功能,註解2標示的是延時元件,此處以Wait (ms)等待200 ms。註解3的程式則是利用 Tick Count (ms) 實測每次迴圈執行所費的時間。由於在上圖中,Wait 等待的時間為 200 ms 大於主程式的 50 ms,for 迴圈每次執行完主程式的 50 ms後,都要等待額外的150 ms,補足到 200 ms 才會執行下一次迴圈運算。因此Wait元件的功能,顧名思義就是「等待」,等到一定的時間後,才進行下一次迴圈運算。實際的運算結果如下圖所示,每次都是不多不少正好是 200 ms。

2013/09/21

如何開啟多個相同的執行檔

在Windows內的許多應用程式,例如小畫家(Painter)、記事本(Notepad)、計算機(Calculator)...等,均可以同時重複開啟。但若是以 LabVIEW 封裝成的執行檔(executable),似乎同一時間內只能夠開啟一個,有沒有辦法可以改變這項設定呢?

做法其實很簡單,由 LabVIEW 封裝的執行檔,在同一層資料夾內都有另一個檔名相同,但副檔名是 .ini 的組態檔,如圖一所示:

圖一

2013/09/08

動態地讓Array Size增長 - Part 3

在前兩篇文章〈動態地讓Array Size增長 - Part 1〉與〈動態地讓Array Size增長 - Part 2〉中,介紹了如果不能夠事先知道陣列(array)大小,可以使用Shift Register + Build Array 來動態地讓陣列長大。這個技巧雖然簡潔易用,但有一個缺點:記憶體使用效率不佳
圖一:動態成長手法

以圖一為例,當我們使用Build Array元件將一個長度為5的1D Array與獨立元素結合成一個長度為6的1D Array時,LabVIEW除了原本長度為5的1D Array外,會需要再向作業系統請求一個新的記憶體位置,來存放長度為6的1D Array。並且把新的這個Array存入Shift Register內,並將舊的Array刪除;若使用動態成長手法讓Build Array執行了一萬次,那麼請求新記憶體位置與刪除舊記憶體位置的動作也要執行一萬次。