하드웨어 타이밍에 의한 카운터 태스크
- 업데이트 날짜:2025-12-03
- 3분 (읽기 시간)
장점
- 카운터 태스크를 사용하면 컨트롤 루프의 소프트웨어 처리를 실행할 수 있는 유연한 타이밍과 이벤트 감지 작업이 가능합니다. 즉 컨트롤 루프는 다이나믹 클럭 속도를 가질 수 있습니다.
- 다음 샘플 클럭 기다림 함수/VI가 다음 샘플 클럭 에지가 도착하기 전에 시작하지 않는 경우 NI-DAQmx는 에러를 반환합니다.
제약
읽기, 프로세스, 쓰기 작업은 디바이스가 데이터를 수집하기 시작한 순간과 다음 샘플 클럭 에지에 도달한 순간 사이의 시간으로 제한됩니다.
샘플 어플리케이션―하드웨어 타이밍에 따른 카운터 태스크
이러한 종류의 어플리케이션 예는 일부 미리 정의된 컨트롤 로직을 기반으로 디지털 라인을 컨트롤하는 동안 카운터 에지와 같은 카운터 입력 태스크를 사용하는 컨트롤 루프입니다. 이 샘플 어플리케이션은 리얼타임 FIFO를 사용하여 통신을 수행합니다. LabWindows/CVI의 경우 리얼타임 FIFO 대신 스레드 안전 큐를 사용할 수 있습니다.
타이밍 다이어그램
샘플 어플리케이션 2―하드웨어 타이밍에 따른 카운터 태스크
또 하나의 예제 어플리케이션은 펄스 주파수 모드를 사용하여 펄스 폭 조절 컨트롤 신호를 생성함으로써 이산 입력을 모니터하고 이 값을 사용하여 카운터 출력 태스크를 업데이트하는 컨트롤 루프입니다. 이 예제 어플리케이션은 리얼타임 FIFO를 사용하여 통신을 수행합니다. LabWindows/CVI의 경우 리얼타임 FIFO 대신 스레드 안전 큐를 사용할 수 있습니다.
타이밍 다이어그램
LabVIEW 예제―하드웨어 타이밍에 따른 카운터 태스크
노트 이 예제는 LabVIEW 사용자들을 위해 작성된 것이지만 이 예제의 원리는 LabWindows/CVI와 같은 다른 ADE를 사용하는 경우에도 적용됩니다.
- [다음 샘플 클럭 기다림] VI를 카운터 입력 태스크에 연결합니다.
- 다음 샘플 클럭 기다림 함수/VI가 다음 샘플 클럭 에지가 발생하기 전에 실행되는 경우 이는 에러를 반환합니다.
샘플 블록다이어그램

예 2
- [다음 샘플 클럭 기다림] VI를 카운터 출력 태스크에 연결합니다.
- [다음 샘플 클럭 기다림] VI가 다음 샘플 클럭 에지가 발생하기 전에 실행되지 않는 경우 이는 에러를 반환합니다.
샘플 블록다이어그램

노트
- LabVIEW 루프 내에서는 하나의 [다음 샘플 클럭 기다림] VI만 사용하십시오. 같은 LabVIEW 루프 내에 여러 하드웨어 타이밍에 의한 단일 포인트 I/O 태스크가 있는 경우, [다음 샘플 클럭 기다림] VI를 해당 루프 내 모든 하드웨어 타이밍에 의한 단일 포인트 태스크에 연결할 수 있습니다.
- 반복적인 오버플로우가 일어날 때 에러가 아닌 경고를 받으려는 경우, DAQmx 리얼 타임≫지연 에러를 경고로 변환 프로퍼티를 참으로 설정합니다.
- 하드웨어 타이밍에 따른 카운터 작업은 멀티플렉스 아날로그 입력과 비슷한 변환 주기가 없습니다. 그러므로 리얼타임 FIFO는 LabVIEW 루프 내 어디에나 놓을 수 있습니다.
- NI-DAQmx는 카운터 쓰기를 수행할 때 샘플 클럭 에지를 잃어버린 후 복구하는 메커니즘을 제공합니다. 이 쓰기 복구 메커니즘이 성공하지 않는 경우, NI-DAQmx는 에러를 반환하며 해당 태스크의 이후 작업은 더 이상 하드웨어 타이밍에 따라 실행되지 않습니다.
- DAQmx 리얼타임≫쓰기 복구 모드 프로퍼티를 사용하면 복구 메커니즘에 사용할 모드를 인터럽트 기다림 또는 폴링 중에서 선택할 수 있습니다. 인터럽트 기다림 모드는 기본이며, NI-DAQmx가 복구를 시도하는 동안 우선순위가 낮은 프로세스가 실행되는 것을 허용합니다. 반면 폴링 모드는 샘플링 속도가 더 빠릅니다.