在使用NI-DAQmx for LabVIEW連續擷取資料時如何設定Number of Samples

更新 Nov 30, 2022

環境

軟體

  • LabVIEW Full

驅動程式

  • NI-DAQmx

本文介紹為什麼以及如何在使用支援LabVIEW的NI-DAQmx連續擷取資料時指定要讀取的樣本數量。

陣列/波形的大小以及DAQmx PC緩衝區的大小由DAQmx任務的配置隱式確定,如下所述。

使用DAQmx擷取資料時,資料首先從DAQ裝置傳輸到電腦的內存 (RAM) 中。在您的電腦RAM上有一個預先分配的緩衝區,稱為DAQmx PC緩衝區,作為未讀資料的存放位置。

然後可以通過執行DAQmx讀取功能從DAQmx PC緩衝區讀取資料,並將資料讀取到DAQmx應用程式內部的陣列或波形中。

 


當你設定DAQmx Timing VI時,Samples per Channel所給定的數值會根據Sample Mode設定的不同會有不同的效果,具體取決於設定為Continuous Samples還是Finite Samples

  • 如果是設定為Finite SamplesSamples per Channel會是task結束前實際擷取進來的資料量。
  • 如果是設定為Continuous Samples,如果默認緩衝區大小不足,Samples per Channel會用來決定buffer的大小。但是,在大多數情況下都會使用默認緩衝區大小並忽略此值。有關如何為連續擷取設定緩衝區大小的更多信息,請參考DAQmx 緩衝區(Buffer)大小分配,用於Finite(有限)或Continuous(連續)擷取

在設定DAQmx Read VI時會去設定第二段傳輸的部分,也就是從buffer傳到軟體記憶體中。此VI其中一個參數設定Number of Samples per Channel中,當sample mode設定為continuous時,該參數會去設定每次從buffer讀取進來的資料量。

需要注意的是,DAQmx Read VI會等到設定的大小擷取至buffer後才會去取用回軟體的記憶體中再去做後續處理。因此,若是sample rate設定的不夠高,不足以在設定的timeout內讀到足夠的量,該VI即會產生timeout的錯誤。為了避免這樣的狀況,可以增加timeout或是減少Number of Samples per Channel

附加訊息

DAQ裝置和主電腦RAM上的DAQmx PC緩衝區之間的傳輸速度取決於與DAQ裝置(PCI、USB、PXI 等)通信所使用的總線。

在interactive DAQ Assistant panel,SignalExpress和NI MAX中,此參數重命名為Samples to Read,如下所示:

在LabVIEW中,不給定Number of Samples per Channel的默認值為 -1,當Number of Samples per Channel設定為 -1時,DAQmx Read VI會讀入buffer所有的資料。如果buffer內沒有任何資料,DAQmx Read VI 會回傳empty array。