• 필수 조건—I/O는 하드웨어 타이밍에 따라야 합니다. 샘플 클럭 에지에 도착하면 모든 출력값이 동시에 업데이트되어야 합니다. 데이터는 시간에 결정적인 루프와 우선순위가 낮은 프로세스 사이에서 상호 교환되어야 합니다.
  • 솔루션— 다음 샘플 클럭 기다림 함수/VI를 사용하여 새로운 샘플 클럭 에지가 아직 발생하지 않았는지 확인합니다. 다음 샘플 클럭 기다림 함수/VI 뒤에 통신 코드(일반적으로 LabVIEW에서 리얼타임 FIFO 또는 LabWindows/CVI에서 스레드 안전 큐)를 놓습니다.

    장점

    • 현재 반복의 출력 샘플은 다음 반복의 입력 샘플에 반드시 정렬됩니다.
    • 다음 샘플 클럭 기다림 함수/VI가 다음 샘플 클럭 에지가 발생하기 전에 시작하지 않는 경우 NI-DAQmx는 에러를 반환합니다.
    • I/O 지터는 몇 나노초 단위인 하드웨어 클럭의 지터에 제한을 받습니다.
    • 하드웨어 타이밍에 따른 카운터 입력 작업은 멀티플렉스 아날로그 입력과 비슷한 변환 주기가 없습니다. 그러므로 리얼타임 FIFO나 스레드 안전 큐는 루프 내 어디에나 놓을 수 있습니다.

    제약

    읽기, 프로세스, 쓰기 작업은 디바이스가 데이터를 수집하기 시작한 순간과 다음 샘플 클럭 에지에 도달한 순간 사이의 시간으로 제한됩니다.
  • 샘플 어플리케이션―시간 결정적인 루프와 비 시간 결정적인 루프 사이의 데이터 교환을 이용한 하드웨어 타이밍에 의한 동시 업데이트 I/O

    이러한 종류의 어플리케이션의 예제는 일정한 개수의 아날로그 입력 채널에서 샘플을 읽고, 컨트롤 알고리즘(PID 등)을 사용하여 데이터를 프로세스하고, 새로운 컨트롤 값을 아날로그 출력 채널에 쓰는 아날로그 컨트롤 루프입니다. 이 어플리케이션은 우선순위가 낮은 프로세스가 제공한 불리언 값을 기반으로 리얼타임 FIFO를 사용하여 컨트롤 루프를 정지합니다. 이와 비슷한 접근 방식으로, 리얼타임 FIFO를 사용하여 PDI 파라미터를 변경시키거나 수집한 값이나 컨트롤 출력 값을 우선순위가 낮은 프로세스에 전송하여 데이터 로깅이나 원격 모니터링을 실시할 수 있습니다.

    타이밍 다이어그램



    LabVIEW 예제―시간 결정적인 루프와 비 시간 결정적인 루프 사이의 데이터 교환을 이용한 하드웨어 타이밍에 의한 동시 업데이트 I/O

    노트 이 예제는 LabVIEW 사용자들을 위해 작성된 것이지만 이 예제의 원리는 LabWindows/CVI와 같은 다른 ADE를 사용하는 경우에도 적용됩니다.
    • [다음 샘플 클럭 기다림] VI를 하드웨어 타이밍에 의한 태스크 중 하나에 연결합니다. 데이터 흐름 연결을 사용하여 [다음 샘플 클럭 기다림] VI가 AO 쓰기 호출 후에 실행되도록 합니다.
    • 데이터 흐름 연결을 사용하여 [다음 샘플 클럭 기다림] VI가 실행된 후에 리얼타임 FIFO 작업이 실행되도록 합니다.
    • [다음 샘플 클럭 기다림] VI가 다음 샘플 클럭 에지가 발생하기 전에 실행되지 않는 경우 이는 에러를 반환합니다.

    샘플 블록다이어그램



    노트
    • LabVIEW 루프 내에서는 하나의 [다음 샘플 클럭 기다림] VI만 사용하십시오. 같은 LabVIEW 루프 내에 여러 하드웨어 타이밍에 의한 단일 포인트 I/O 태스크가 있는 경우, [다음 샘플 클럭 기다림] VI를 해당 루프 내 모든 하드웨어 타이밍에 의한 단일 포인트 태스크에 연결할 수 있습니다.
    • 반복적인 오버플로우가 일어날 때 에러가 아닌 경고를 받으려는 경우, DAQmx 리얼 타임≫지연 에러를 경고로 변환 프로퍼티를 참으로 설정합니다.
    • 리얼타임 FIFO 코드를 반드시 [다음 샘플 클럭 기다림] VI 뒤에 놓아야 하는 것은 아니지만, 멀티플렉스 디바이스(E 및 M 시리즈)에서 여러 채널 아날로그 입력 작업을 처리할 때에는 그렇게 하는 것이 좋습니다. 디바이스가 아날로그 입력 채널에서 샘플을 변환할 때 샘플 주기의 50%까지 소요될 수 있으므로, 이 변환 주기 동안 FIFO 코드를 실행하면 유휴 시간을 효율적으로 활용할 수 있습니다.
    • DAQmx 타이밍 프로퍼티 노드를 통해 수동으로 아날로그 입력 변환 속도를 증가시킬 수 있습니다. 이렇게 하면 요청된 샘플 개수를 변환하는데 소요되는 시간을 감소시킬 수 있습니다. 전체 데이터 수집 시스템의 최소 설정 타임 스펙을 반드시 고려해야 신호 저하와 간섭을 방지할 수 있습니다.