LabVIEW에서 NI-DAQmx를 사용하여 정지 트리거 구성하기

업데이트 됨 Nov 13, 2023

해당 제품

드라이버

  • NI-DAQmx

프로그래밍 언어

  • LabVIEW G

문의사항

NI DAQ 디바이스를 가지고 있으며, LabVIEW 지원을 통해 NI-DAQmx 를 사용하여 데이터 수집을 시작하고 중지할지 타이밍을 알리는 신호를 디바이스에 보냅니다. 어떻게 구성해야 합니까?

해결책

DAQmx 는 정지 트리거를 생성하는 직접적인 방법을 제공하지 않습니다; 그러나 참조 트리거를 사용하고 읽기 위치를 수정하여 LabVIEW 에서 정지 트리거와 동등한 것을 생성 할 수 있습니다.

이를 수행하려면 참조 트리거 전후에 N 개의 샘플을 수집하도록 구성된 유한 수집을 설정해야 합니다. 이는 참조 트리거에 대해 사전 트리거 샘플을 제공하기 위해 DAQmx 태스크가 참조 트리거를 기다리는 동안 계속해서 데이터를 수집하기 때문에 유용합니다. DAQmx Read 함수를 사용하여 계속 수집된 이 데이터는 명시적으로 구성된 데이터 수집 태스크의 일부가 아니더라도 읽을 수 있습니다.

참조 트리거를 정지 트리거로 구현하는 방법의 예는 아래 스니펫을 참조하십시오.

그림 1 : LabVIEW에서 시작 및 정지 트리거를 사용하는 DAQmx 어플리케이션


위의 예에서, DAQmx API 로 아날로그 입력 태스크를 생성하고 시작 디지털 에지 트리거와 기준 디지털 에지 트리거라는 두 가지 트리거를 사용하도록 구성했습니다.

시작 트리거는 태스크가 참조 트리거를 준비하기 위해 샘플 획득을 시작할 시기를 결정하고, 참조 트리거는 태스크가 태스크를 중지하기 전에 원래 요청된 유한한 사전 트리거 및 사후 트리거 샘플을 보낼 시기를 결정합니다.

참고 : DAQmx 드라이버는 시작 트리거가 발생할 때까지 참조 트리거를 기다리지 않기 때문에 원하는 경우 동일한 PFI 라인에 도착하도록 시작 및 참조 트리거를 설정할 수 있습니다.

참조 트리거 구성하기

참조 트리거에는 채널 당 트리거 이전 샘플이라는 추가 입력 매개 변수가 필요합니다.

그림 2 : LabVIEW의 사전 트리거 샘플 파라미터

트리거 이전 샘플 수는 참조 트리거가 발생하기 전 유한 수집이 이루어지는 동안 얼마나 많은 총 샘플 수가 있는지 결정합니다. 수집 중 나머지 샘플은 트리거 이후 샘플로 간주됩니다. 암시적으로 사후 트리거 샘플의 수는 다음과 같습니다 : 

포스트 트리거 샘플 = 채널 당 샘플 (DAQmx 타이밍 입력) - 채널 당 트리거 이전 샘플 (DAQmx 트리거 입력)

예를 들어 최소 트리거 전 샘플 (2), 트리거 후 샘플 40 개를 수집하는 작업을 구성하려면 채널당 샘플을 DAQmx 타이밍에 대한 입력으로 42 개를 사용하고 채널당 사전 트리거 샘플로 2 개를 사용합니다. 유한 수집의 최종 출력은 다음과 같이 보입니다.



그림 3 : 참조 트리거가있는 최종 DAQmx 판독 출력의 시각화

참고 : 작업의 타이밍을 설정할 때 참조 트리거에 대해 적어도 2 개의 사전 트리거 샘플과 2 개의 사후 트리거 샘플이 있어야합니다. 결과적으로 참조 트리거가 정지 트리거로 사용 되더라도 참조 트리거가 발생한 후에도 최소한 두 개의 샘플을 수신하게 되지만, 원하는 경우 수집 이후 처리 과정에서 제거될 수 있습니다.

추가 정보

참조 트리거를 연속적으로 가져오기
기본적으로, DAQmx는 읽으려는 총 샘플 수에 맞게 충분히 큰 버퍼 크기를 선택합니다 (예 : 버퍼는 위에서 설명한 예제에서 크기가 42입니다).

DAQmx 애플리케이션이 참조 트리거를 기다리는 동안 버퍼에서 연속 샘플을 가져올 수 있으려면 두 가지 수정이 필요합니다.
  1. DAQmx 의 타이밍 특성을 구성한 후, DAQmx Configure Input Buffer를 사용하여  DAQmx 어플리케이션의 버퍼 크기를 수동으로 변경하십시오.
  2. DAQmx 읽기 프로퍼티 노드에서 상대적인(RelativeTo)을 선택하여 읽기 위치를 수정합니다. 기본적으로 이 속성은 참조 트리거를 사용할 때 첫 번째 사전 트리거 샘플로 설정됩니다. 현재 읽기 위치로 설정하면, DAQmx Read는 시작 트리거가 발생한 후 버퍼에 넣는 샘플을 읽습니다. 이 값이 변경되지 않으면 DAQmx Read는 버퍼에서 샘플을 검색하기 전에 참조 트리거가 수신 될 때까지 대기합니다.