• 필수 조건—하드웨어 타이밍에 의한 카운터 입력 작업을 사용하여 컨트롤 루프를 실행합니다.
  • 솔루션—다음 샘플 클럭 기다림 함수/VI를 사용하여 카운터 작업을 카운터의 샘플 클럭에 동기화시킵니다.

    장점

    • 카운터 태스크를 사용하면 컨트롤 루프의 소프트웨어 처리를 실행할 수 있는 유연한 타이밍과 이벤트 감지 작업이 가능합니다. 즉 컨트롤 루프는 다이나믹 클럭 속도를 가질 수 있습니다.
    • 다음 샘플 클럭 기다림 함수/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가 복구를 시도하는 동안 우선순위가 낮은 프로세스가 실행되는 것을 허용합니다. 반면 폴링 모드는 샘플링 속도가 더 빠릅니다.