DAQmx 타이밍 및 샘플 속도

업데이트 됨 Mar 25, 2021

해당 제품

드라이버

  • NI-DAQmx

문의사항

DAQmx 타이밍 기능을 사용하여 기본적인 데이터 수집을 수행하고 있습니다. 샘플 클럭은 데이터를 읽는 속도와 어떤 관련이 있습니까?

해결책

데이터 읽기에는 두 가지 측면이 있습니다. 실제 신호가 디지털화되는 속도("얼마나 빠릅니까?")와 하드웨어 FIFO에서 소프트웨어가 한 번에 검색하는 데이터 양("얼마나 한꺼번에?")입니다. 이러한 하드웨어 소프트웨어 구성은 서로 상호 의존적입니다.

하드웨어 측면에서 DAQmx 타이밍 기능은 데이터 수집 보드의 디바이스/센서에서 하드웨어 FIFO 로의 데이터 흐름 속도를 결정합니다. 소프트웨어 측에서 DAQmx 읽기 기능은 PC 버퍼에서 소프트웨어로의 데이터 전송을 결정합니다. 아래 그림을 참조하십시오.



파트 1: 디바이스/센서에서 DAQ 보드의 하드웨어 FIFO로  

개요
DAQmx 타이밍 기능은 디바이스에서 샘플을 수집하는 수와 속도를 제어합니다. 이 기능은 세 가지 샘플 모드에서 작동합니다.
  • 유한한(Finite),
  • 연속적인(Continuous),
  • 하드웨어 타이밍 단일 지점(Hardware timed single point).
선택한 모드는 수집된 샘플 수에 영향을 줍니다.
DAQmx 타이밍 함수는 다형성 입니다. 여기에서 설명하는 인스턴스는 Sample Clock입니다. DAQmx 타이밍의 다른 인스턴스에 대한 자세한 정보는 DAQmx 도움말을 참조하십시오

얼마나 많이?
유한 수집의 경우 DAQmx 타이밍 함수의 채널당 샘플 입력은 각 채널에서 읽는 샘플 수를 결정합니다. 즉, Sample Per Channel은 수집할 데이터 청크(chunk)의 크기를 설정합니다.
연속 수집의 경우 채널당 샘플은 각 채널에 지정된 PC 버퍼의 크기를 결정합니다.

얼마나 빨리?
 DAQmx 타이밍 함수의 입력은 샘플을 수집하고 하드웨어 FIFO에 넣는 속도를 결정합니다. 속도를 지정하는 값은 DAQmx 타이밍 함수의 소스 입력에 지정된 타임베이스에 따라 다릅니다. 지정된 비율은 소스의 분할이어야 합니다. 예를 들어 X 시리즈 카드의 기본 소스는 온 보드 클럭 (100MHz)입니다. 달성 가능한 획득 속도에 대한 자세한 내용은 다음을 참조하십시오. 2 부: 하드웨어 FIFO에서 PC 버퍼 및 프로그래밍 환경까지

얼마나 많이? 
DAQmx를 읽기 기능의 채널 당 샘플 수 입력은 프로그래밍 환경에 PC 버퍼에서 가져온 얼마나 많은 샘플을 결정합니다. 선택한 데이터 전송 메커니즘 (아래 글 머리 기호)에 따라 하드웨어 FIFO에서 PC 버퍼로 샘플을 실제로 가져오는 방법이 결정됩니다. 더 자세한 정보는 Data Transfer Mechanisms-NI-DAQmx Help을 참조하십시오. 
  • DMA
  • 인터럽트 요청
  • 프로그래밍 된 I/O
  • USB 벌크
프로그래밍 된 I/O 방법을 사용할 때 DAQmx 읽기 기능은 하드웨어 FIFO 자체에서 직접 샘플을 가져옵니다. 하드웨어 타이밍이 지정된 다른 모든 전송 메커니즘을 사용할 때 샘플 수는 DAQmx 타이밍 함수에 지정된 속도의 1/10이되는 것이 좋습니다. 예를 들어, DAQmx 타이밍 함수의 속도 입력이 1000 (Hz)인 경우 DAQmx 읽기 함수의 채널당 샘플 수는 100개를 넘지 않아야 합니다. 이는 PC 버퍼 덮어쓰기 또는 덮어쓰기 오류가 없는지 확인하기 위한 것입니다.

얼마나 빨리?
프로그래밍 된 I/O를 수행 할 때 DAQ 보드의 하드웨어 FIFO에서 프로그래밍 환경으로 샘플을 읽는 속도는 읽기 함수가 호출되는 빈도에 따라 다릅니다. DAQmx 읽기 함수는 종종 while 루프에 있기 때문에 루프 속도는 DAQmx 읽기 함수가 실행되는 빈도를 결정합니다. 소프트웨어의 속도는 프로세서의 속도와 한 번에 발생하는 프로세스 수에 따라 달라집니다.

다른 데이터 전송 메커니즘을 사용할 때 하드웨어 FIFO에서 PC 버퍼로 샘플을 가져오는 속도는 프로그램의 실행 속도와 무관합니다. 이러한 이유로, DAQmx 읽기 기능이 읽을 수 있도록 여러 샘플을 제 시간에 보존할 수 있도록 PC 버퍼 사용을 강제하는 프로그래밍 되지 않은 I/O 메커니즘을 사용하는 것이 종종 바람직합니다.
 

추가 정보

참고: 채널 당 샘플의 수 기능이 여러 샘플을 읽도록 구성되어 있는 경우 입력은 DAQmx를 읽기 기능에서만 사용할 수 있습니다. 
채널 당 샘플의 수가 -1, 혹은 연결되지 않거나 수집 모드가 유한한으로 세팅되지 않았을 때에는 (수집 모드는 DAQmx는 타이밍 기능의 입력입니다), DAQmx 읽기 기능은 유한 수집의 모든 샘플에 PC 버퍼에 들어올 때 까지 기다린 다음 읽어 드립니다. 만약 수집 모드가 연속이면, PC 버퍼에서 현재 사용 가능한 모든 샘플을 읽습니다.

요약
데이터 수집 속도를 결정할 때 수집의 두 단계가 모두 일치해야 합니다. 데이터가 하드웨어 FIFO에서 PC 버퍼로 전송되는 속도는 데이터가 하드웨어 FIFO 자체에 로드 되는 속도에 비해 너무 빠르거나 너무 느려서는 안됩니다. 너무 빠르거나 너무 느린 경우 PC 버퍼 오류가 발생합니다. 버퍼 오류에 대한 자세한 정보는 NI-DAQmx 덮어쓰기 및 오버 플로우 오류 이해 및 방지  참조하십시오.