버퍼된 이벤트 카운팅을 할 때 Error-200141이 발생합니다.



하드웨어: Multifunction DAQ (MIO)

문제점: 버퍼된 이벤트 카운팅을 할 때 왜 Error-200141이 발생합니까?

솔루션:

Error-200141 - Data was overwritten before it could be read by the system - 는 데이터 수집 장비가 컴퓨터에서 FIFO Input 버퍼를 읽는 속도보다 데이터를 빠르게 수집할 때 발생합니다. 데이터가 전송되는 속도는 다음 몇가지 내용에 의해 좌우됩니다.

데이터 전송 메소드:

데이터는 Direct Memory Access (DMA)나 인터럽트 방식으로 전송됩니다. DMA 데이터 전송은 가장 빠른 데이터 전송 메커니즘 입니다. 그러나 앞선 DAQmx Base 2.0에서는 모든 데이터는 인터럽트 방식으로만 전송이 가능했습니다. 인터럽트 방식은 동작이 느리며 샘플링 속도에 크게 제한이 있습니다.

DMA를 사용하면 데이터는 DAQ 장비에서 메모리로 직접 써지게 됩니다. 이는 데이터 전송이 프로세서를 거치지 않아 높은 스루풋으로 진행될 수 있습니다. DAQmx의 간단한 벤치마크 테스트에서 버퍼된 이벤트 카운팅은 DMA를 사용했을때 인터럽트 방식보다 대략 10배정도 더 빠르게 동작합니다.

그러므로 빠른 샘플링 속도를 위해서 DAQmx Base 2.0 이후 버전을 사용하시기 바랍니다. 2011년 5월에 현재 버전인 DAQmx Base는 3.4와 DAQmx 9.2.3이 출시되었습니다.

FIFO 버퍼 크기:

현재 X-Series 보드의 경우 127개의 온보드 FIFO 버퍼 크기를 갖고 있으며 M-Series나 E-Series는 각각 2개나 1개의 버퍼만을 갖고 있습니다. 크기가 큰 버퍼를 갖고 있는 컴퓨터의 경우 DAQ 카드에서 데이터를 자주 불러올 필요가 없으며 이는 빠른 샘플 속도를 가능하게 합니다.

데이터 전송 버스:

Express 버스 (PCIe or PXIe) 는 좀더 빠른 데이터 버스이며 PCI와 PXI 또는 USB 를 상회합니다. Express 버스에 훨씬 더 빠른 샘플링 속도로 데이터를 수집하는게 가능하며, 버스들은 FIFO 버퍼에서 훨씬 더 빠른 속도로 데이터를 전송합니다.

아래의 내용을 읽어보시면 Error 200141을 예방할 수 있습니다.

Counting 속도를 좀더 느리게 하시기 바랍니다.

만약 이벤트 카운팅에 속도가 중요하지 않다면, 간단하게 카운터 측정 속도를 줄이면 됩니다.

버퍼링을 사용하는 것보다는 폴링을 사용 하시기 바랍니다.

다른 방법은 간단하게 현재 카운팅 값을 입력하여 단일 이벤트 카운팅을 사용하는 것입니다. 그러나 불행하게도 이 방법은 샘플과 샘플간의 정확한 간격을 제공하지는 않습니다. 그러나 이 방법은 버퍼를 사용하지 않고 인터럽트 방식과 같은 느린 전송 속도 방법도 사용할 수 있습니다.

커다란 온보드 FIFO를 가지거나 빠른 데이터 전송 버스를 갖고 있는 카드를 사용하시기 바랍니다.

만약 카운팅 속도와 시간이 중요하다면, 더 높은 데이터 전송량을 갖고있는 하드웨어가 필요합니다. X-Series 하드웨어들은 가장 높은 샘플링 속도를 지원합니다.



관련 링크:
KnowledgeBase 3YKFLO88: NI-DAQ and NI-DAQmx Base Driver Support for Mac OS
Developer Zone Tutorial: DMA
Developer Zone Tutorial: Programming Data Acquisition for Linux with NI-DAQmx Base
Community Example: Use Counter to Create a Clock for a Buffered Edge Counting Task
Community Example: Buffered Edge Counting Task: Edges Counted Per Period
Developer Zone Tutorial: Buffered Event Counting

첨부:





리포트 날짜: 11/11/2005
마지막 업데이트: 02/18/2015
문서 번호: 3RA73U2W