如何每隔5秒就截取資料呢??

請問一下,如何把底下的vi改成每隔5秒就截取資料到table呢?我是用DAQ的channel 0和channel 2送兩個電壓值進來,想把所截取到的資料呈現到table上,到達我所設定的系統時間後會自動存檔。

DAQ-2.vi

 

 

可以在while loop裡面放一個wait的vi,或是如果你是使用LabVIEW7.1的話,可以使用「Timed loop」。

在while loop裡面放置「wait」

 

使用「timed loop」,下圖中的紅色框框是指這個timed loop的週期是5000ms,也就是每五秒會執行一次迴圈。

![](upload://fxNdv77stX9EzkRpjbwtKGnYUmW.jpeg)

Timed loop的設定畫面:

![](upload://5pNMIs7n9sXStlBj1hPW2PaUVbK.jpeg)

但是我是想用系統時間來做呢??例如2:06、2:11、2:16........

我想再說明一下,因為我的判斷式裡有用系統時間,如果用wait的話,可能會跳過那個時間點,而不會使Loop停止。

附帶二點--1.第一次打開的時候,為什麼table抓進來資料會是0呢? 2.如何讓table都一直可以顯示最底層的資料。

有人可以幫忙嗎??

[QUOTE=Vic]

但是我是想用系統時間來做呢??例如2:06、2:11、2:16........

[/QUOTE]

那麼你可一下我剛剛改的程式:DAQ-2-2.vi

主要是將:

改成:

 

原理說明:假設你設定擷取時間是5秒,那麼叫程式去檢查目前系統時間的秒數可不可以被5整除,如果可以被5整除的話,就執行擷取資料。

但是如果是我,我不會這麼做,原因如下:

  1. 如果你每一次擷取的花費時間只有100ms,那麼系統可能會在05秒的時候擷取9~10筆資料,到了10秒的時候又再擷取9~10筆資料,原因是擷取的速度比較快。這種誤判雖然可以用軟體來修正。但是有一點麻煩。
  2. 如果每一次擷取數據所花的時間是6秒,那麼在第05秒的時候,電腦去擷取資料,在第10秒的時候,照理說應該要擷取資料,但是電腦目前正在擷取資料,所以不知道在第10秒的時候還要擷取一次。在第11秒的時候,電腦擷取完畢,然後開始等待下一次的擷取。到了第15秒的時候,電腦再去擷取資料。所以整體的效過就便成系統每10秒擷取一次,而不是你原先設定的每5秒擷取一次。
  3. 人類會去看時鐘,依照時鐘的秒針來讀取數據。但是不要用人的思維來寫程式,而要用電腦的思維來寫程式。好的程式是:花最少的程式買來做到相同的效果。

[QUOTE=Vic]附帶二點--1.第一次打開的時候,為什麼table抓進來資料會是0呢? 2.如何讓table都一直可以顯示最底層的資料。[/QUOTE]

如果要將資料寫入table,可以參考這個程式:table.vi

 

你可以將最後一筆資料存到硬碟中,在下次程式開啟的時候,再把資料從硬碟讀出,然後寫入table中,你自己試試看。