LabVIEW - DAQ之模擬量輸入的緩沖區大小是如何確定的(轉)


數據采集過程中經常遇到緩沖區重寫錯誤,一般提示,原來采集的數據已經被重寫。這樣的錯誤與緩沖區密切相關。

 在傳統DAQ中    緩沖區非常明顯,但是在新的DAQMX中,緩沖區的分配被隱含了,從程序框圖上看不到緩沖區的概念,這一方面簡化了編程的復雜性,對於初學者非常有利, 但是另一方面,由於不了解緩沖區的基本原理,導致采集程序的低效和錯誤無法處理。

下面談一下NI板卡模擬量緩沖區是如何確定的,這些知識在DAQMX文檔中解釋的非常清楚。

輸入類型任務這里指的模擬量輸入,我們知道模擬量輸入可以分為單點采集方式、定點采集方式和連續采集方式。

A、單點采集方式不需要分配緩沖區。

B、定點采集方式

所謂定點采集,是由用戶確定需要采樣的點數,這可以通過設置Samples Per  Channel參數實現。比如每通道采集1000個采樣,采集8個通道,則分配的緩沖區大小為1000×8,因此LV分配的緩沖區是足夠容納所有采樣點的。

上面是定點采集的程序框圖,紅色箭頭處表示與分配緩沖區相關的參數。

  1. 圖中虛擬通道VI中,物理通道參數決定了需要采集的通道數。
  2. 采樣模式確定了定點采集方式。
  3. Samples per channel(每通道采樣數)和物理通道數共同決定了緩沖區的大小,為二者的乘積關系。
  4. RATE(采樣率)在定點方式下與緩沖區的大小無關,采樣率決定了完成所有采樣所需要的時間,不影響緩沖區的大小。
  5. 定點采集方式下讀函數一次讀取整個緩沖區, 不需要設置要讀取的采樣數。

C、連續采集方式

同定點采集方式類似,連續采集方式下,LV分配的最小緩沖區等於每通道采樣數X通道數,保證能容納規定的采樣數量。但是與定點采樣不同,根據每通道采樣數和采樣速率設置不同,LV會對緩沖區進一步調整,如下表所示。連續采集方式下,緩沖區的大小不僅取決於Samples Per Channel,也取決於Sample Rate,緩沖區的大小取二者之間較大的數。

連續采集方式緩沖區的大小與采樣率相同,這是可以理解的。設想一下,在高速采樣的情況下,采樣速率為100萬每秒,每通道采樣1000個,假設為單通道采集,則1000個采樣需要時間為1毫秒。如果緩沖區為1000,則必須保證1MS 讀取一次,每次1000個。這對於WINDOWS操作系統,由於其非實時性,根本無法保證1MS循環一次。所以必須要擴大緩沖區的大小,才能滿足要求。

一般情況下,連續采集的緩沖區大小決定於采樣速率,其分配情況如下表所示。

 

Sample Rate Buffer Size
No rate specified 10 kS
0–100 S/s 1 kS
100–10,000 S/s 10 kS
10,000–1,000,000 S/s 100 kS
>1,000,000 S/s 1 MS

 

看一下連續采集方式下的程序框圖。

  1.  虛擬通道設置與定點采集相同,物理通道決定了采集的通道數。
  2. 采樣模式確定為連續采集方式。
  3. Samples Per ChanelX通道數決定最小緩沖區的大小。
  4. 采樣率決定了是否調整緩沖區大小,如上述表格所示。
  5. 讀函數必須規定每次讀取采樣數,這樣通過采樣率和每通道采樣數,就可以確定循環時間。

不僅僅是AD采集需要緩沖區,緩沖計數方式和DA波形輸出都涉及到緩沖區分配的問題。對於AD采集,為了充分利用緩沖區的內存,采用循環緩沖的方式,在以后的文章中,會專門說明循環緩沖區的工作原理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM