解決方案
此錯誤是由PC緩衝區溢出引起的。 PC緩衝區是電腦上存在於DAQ硬體和LabVIEW應用程式內存之間的緩衝區。它由硬體連續寫入,但只能由LabVIEW定期讀取。這通常會導致讀取速率不匹配。通常,由於讀取速率比採樣速率慢,或者DAQmx PC緩衝區太小而無法容納DAQmx任務所需的數據,因此數據會在DAQmx PC緩衝區中被覆蓋。
情況1:讀取速率低於採樣速率
此錯誤通常是由於連續採樣的DAQmx應用程式的讀取速率比DAQmx任務的採樣速率慢導致的,導致採樣在DAQmx PC緩衝區中累積,直到出現覆蓋錯誤為止。採樣速率是通過下面的DAQmx Timing VI屬性指定的速率:
解決此錯誤時,第一步應該是確保應用程式的讀取率和採樣率相同。
由於您的應用程式的讀取速率取決於您每次DAQmx讀取請求的樣本數量以及每秒呼叫DAQmx讀取功能的次數,因此您可以通過顯式控制讀取數量來調整讀取速率DAQmx讀取所需的樣本數量,或者通過使用timing節點(例如,Wait(ms))顯式控制包含您的DAQmx讀取的while迴圈在一秒鐘內執行的次數:
請注意: DAQmx讀取將自動等待,直到請求的樣本數量可用為止,因此通常僅需在特定應用中控制這些因素之一。
如果while迴圈的執行速度比預期的慢,則可能需要實現
Producer / Consumer結構 以將其他過程(例如日誌記錄,post-processing,分析和用戶界面功能)移到Acquisition迴圈之外。
如果不能提高while迴圈性能,則可能需要降低應用程式的採樣率。
請注意:請勿對包含DAQmx讀取的程式碼使用Highlight Execution執行,因為這會減慢執行速度並導致緩衝區溢出。
情況2:PC緩衝區太小,無法保存任務數據
導致此錯誤的另一個原因是DAQmx PC緩衝區太小而無法容納DAQmx任務所需的數據量,從而導致DAQmx PC Buffer在完全獲取數據之前被覆蓋。
有時,可以通過簡單地
手動增加主機端數據緩衝區的大小來解決此錯誤。但是,如果由於未足夠快地從DAQmx緩衝區中讀取數據而發生錯誤(上述情況1),則增加緩衝區大小只會延遲錯誤的發生,而不能完全消除錯誤。
情況3:使用一個採集迴圈讀取以不同速率運行的兩個任務
如果共享一個採集迴圈的兩個任務具有不同的採樣率,則會發生此錯誤。出現此錯誤的原因是,讀取的DAQmx是阻止呼叫。一次DAQmx讀取將花費更長的時間來讀取相同數量的樣本,而另一次任務的緩衝區正在填滿時,將進行更長的讀取。
請注意:DSA模組可以
強制使用特定的採樣率。