이 문서는 LabVIEW ADE 내에서 NI-DAQ™mx 타이밍 및 동기화의 기초를 설명합니다. 특히 다루는 토픽에는 혼합 모드 측정, 아날로그 기능 이상의 동기화, 데이터 수집(DAQ) 디바이스 사이의 타이밍 신호 공유 등이 포함됩니다.
텍스트 기반 프로그래밍 환경의 데이터 수집은 함수 호출이 NI-DAQmx VI와 동일하므로 LabVIEW NI-DAQmx 프로그래밍과 매우 유사합니다. 텍스트 기반 프로그래밍 환경에서 NI-DAQmx 사용하기
타이밍을 정확하게 컨트롤하고 작업을 동기화할 수 있는 기능이 필요한 어플리케이션이 많습니다. 예를 들어, 많은 수의 매우 다이나믹한 신호를 측정하고 분석하는 작업을 수행하는 경우, 위상 불일치의 범위는 허용할 수 없습니다. 한 시점에서 한 신호의 측정값이 같은 시점에서 다른 신호를 기준으로 계산될 수 있다는 점을 이해해야 하며, 따라서 이러한 수집에는 동기화 방식의 종류가 필요합니다. NI-DAQmx와 LabVIEW 그래픽 프로그래밍 환경은 이러한 유형의 데이터 수집 시스템을 쉽게 구축할 수 있는 도구를 제공합니다.
NI-DAQmx는 사용자의 타이밍 및 동기화 요구에 대한 다양한 강력한 솔루션을 제공합니다. LabVIEW 기본 기능은 차세대 데이터 수집 프로그래밍을 보여줍니다. 디바이스 사이에서 신호의 연결 경로를 구체적으로 정의하는 시대가 지났습니다. NI-DAQmx는 신호를 필요한 곳으로 가져오는 방법을 자동으로 찾습니다. 당신이 해야 할 일은 대상을 지정하는 것입니다. 따라서 드라이버는 복잡한 설정 작업을 방지하기 위해 현명하게 장면 뒤에서 작동합니다. 그러나 이것은 타이밍과 동기화 빙점의 팁일 뿐입니다...
대부분의 E 시리즈 데이터 수집 디바이스에는 아날로그 입력, 아날로그 출력, 카운터/타이머, 디지털 입력/출력 기능이 있기 때문에, 디바이스를 프로그래밍하여 각 측정 타입이 서로 동기화되어 있는지 확신할 정도로 활용하는 것이 어려운 경우가 많습니다. 일부 용도는 다음과 같습니다.
1) 동시에 시작된 아날로그 입력 및 출력
동시에 작업이 시작되지만 동기화되지 않음
동기화된 아날로그 입력 및 아날로그 출력
동시에 동작을 시작하고 동일한 속도로 동작을 실행하도록 설정할 수 있음
작업이 샘플 클럭을 공유할 수 있음
2) 트리거와 동기화된 아날로그 입력 및 아날로그 출력
하드웨어 트리거 및 샘플 클럭 공유
3) 동기화된 아날로그 및 카운터 작업
4) 카운터가 펄스 트레인을 아날로그 작업의 클럭으로 생성함
5) 아날로그 클럭 게이트 카운터 작업
NI-DAQmx API에서는 매우 작은 수의 VI를 사용하여 대부분의 타이밍 및 동기화 요구 사항을 충족할 수 있습니다. 특히 DAQmx Timing.vi와 DAQmx Trigger.vi를 사용하면 채널이 스캔되는 간격과 시작(또는 정지) 시간을 지정할 수 있습니다. 이 두 VI는 LabVIEW 다형성을 활용하여 아날로그 입력 신호뿐만 아니라 위에서 언급한 아날로그 출력, 카운터/타이머, 디지털 입력/출력(그림 1)의 타이밍과 트리거링을 정의할 수 있습니다.
동기화 문제가 있는 일반적인 경우는 아날로그 입력과 아날로그 출력 작업이 동일한 클럭을 사용하는 경우입니다. 이 경우, 아날로그 입력과 아날로그 출력이라는 두 개의 코드 체인이 필요합니다. 각각에서 DAQmx 타이밍 VI를 사용하여 원하는 연속 작업을 지정합니다. 아날로그 출력 타이밍의 경우, “소스” 입력을 기본값으로 둡니다. 이는 아날로그 출력 작업이 내부 클럭인 기본 아날로그 출력 클럭에 따라 작동하는 것을 의미합니다. 아날로그 입력 DAQmx 타이밍 VI에서, “소스”를 아날로그 출력 샘플 클럭으로 지정하는 것뿐입니다. 이렇게 하면 아날로그 입력과 아날로그 출력 동작이 아날로그 출력의 타이밍 신호에서 작동하도록 설정됩니다(그림 2 참조).
위의 예제는 아날로그 타이밍 신호를 함께 연결하는 방법을 보여줍니다. 혼합된 아날로그와 디지털 신호를 함께 처리하려면 어떻게 해야 합니까? 여전히 같은 양의 원활한 통합을 기대할 수 있습니까? 답은 예입니다.
아날로그 측정값이 외부 클럭 신호 또는 비정상적인 클럭 신호에 의존한다고 가정해 봅시다. 예를 들어, 10 밀리초 동안 밀리초마다 한 번씩 샘플을 수집하고, 3 밀리초를 기다린 후, 반복합니다. 이 경우, E 시리즈 디바이스의 카운터 기능을 사용하여 원하는 타이밍 신호를 생성할 수 있지만, 아날로그 측에 이를 클럭으로 사용하도록 하려면 어떻게 해야 합니까? 답은 DAQmx 타이밍 VI입니다. “소스”를 카운터의 내부 출력 핀으로 지정하면, 카운터 출력은 외부 와이어를 사용하여 터미널 블록의 핀을 연결하지 않고 아날로그 입력 클럭이 됩니다(그림 3 참조).
동기화와 같은 사용의 편이성은 트리거링에도 적용됩니다. [DAQmx 트리거] VI를 사용하여, 작업이 내부 또는 외부 트리거 신호(아날로그 또는 디지털)를 기다리도록 쉽게 설정할 수 있습니다. 좋은 예는 이벤트 트리거링과 관련된 것입니다. 이벤트 트리거링의 경우, 디바이스는 수집을 시작하기 전에 첫번째 N개의 트리거를 무시합니다. 이렇게 하려면, 카운터를 사용하여 단일 펄스를 생성하여 아날로그 입력 수집을 시작합니다. 카운터는 첫번째 N 트리거를 사용하여 펄스의 낮은 부분을 생성하고 유효한 트리거를 사용하여 펄스의 높은 부분을 시작하고 실제 수집을 트리거합니다. 다음 예에서, 두 개의 병렬 행의 코드가 있습니다. 위쪽은 아날로그 입력 작업을 설정하고 아래쪽은 카운터를 설정합니다. 트리거의 소스는 카운터 0의 출력이며, 카운터 0은 "n번째" 펄스를 입력한 후에 트리거 펄스를 출력하도록 설정되어 있습니다. 이 경우, 100 kHz 내부 타임베이스가 입력 소스로 선택되지만, 소스의 외부 위치를 지정하여 외부 펄스 트레인의 지연 트리거를 설정할 수도 있습니다(그림 4 참조).
참고: 마지막 두 예에서 Ctr0InternalOutput과 Crt0Out은 클럭 또는 트리거 신호의 위치로 참조됩니다. Ctr0Internal Out는 보드 내부에 연결할 때 사용 가능한 신호입니다. 카운터 출력을 PFI 및 RTSI에 연결할 때 Crt0Out을 사용해야 합니다. 그림 4의 예제는 Ctr0Out 대신 CtrOInternal Out를 사용할 수 있습니다.
위의 예와 같이 디바이스의 한 위치에서 다른 위치로 신호를 연결하려면 몇 가지 사항을 고려해야 합니다. 먼저, NI-DAQmx가 이러한 신호를 연결하도록 설정되어 있습니까? 두 번째로, 라우팅에 사용할 수 있는 신호는 무엇입니까? 이러한 신호를 전달하는 기능은 중간 통신 경로에 의존하기 때문에, RTSI (Real Time System Integration) 버스를 사용하십시오.
RTSI 버스(PCI 디바이스에서 34핀 커넥터로 사용 가능하거나 PXI의 백플레인 커넥터에 포함)는 타이밍 신호를 한 디바이스에서 다른 디바이스로 전송할 수 있는 7개의 핀을 노출합니다(또는 내부적으로 한 디바이스에서). 이 통신 경로를 사용하기 전에, 시스템의 디바이스가 어떻게 연결되어 있는지 드라이버에 알립니다. PCI 디바이스의 경우, 적절한 디바이스를 RTSI 케이블로 연결하고 이 연결을 Measurement & Automation Explorer (MAX)에 등록하십시오. MAX 3.0에서는 NI-DAQmx 디바이스에서 마우스 오른쪽 버튼을 클릭한 후 새 NI-DAQmx 디바이스 생성 >>RTSI 케이블을 선택합니다. 이렇게 하면 RTSI 케이블이 NI-DAQmx 디바이스 리스트에 추가됩니다. PXI 시스템의 경우, PXI 시스템 >> 다른 이름으로 식별을 마우스 오른쪽 버튼으로 클릭하여 PXI 시스템을 식별할 수 있습니다. RTSI 버스는 PXI 시스템에서 PXI 트리거 버스로 불립니다. (그림 5는 하나의 DAQ 디바이스에 연결된 RTSI 케이블을 보여줍니다.)
MAX의 디바이스 경로 탭에서 단일 DAQ 디바이스 내에서 어떤 신호를 라우팅할 수 있는지 확인할 수 있습니다. MAX에서 DAQ 디바이스를 클릭하면, 설정 트리의 오른쪽에 있는 윈도우에서 디바이스 속성이 나타납니다. 해당 윈도우의 아래쪽에 있는 디바이스 경로 탭을 선택하면 각 사용 가능한 신호 경로가 나열됩니다. 녹색 사각형은 직접 생성할 수 있는 경로를 나타내며, 노란색 사각형은 생성될 디바이스에서 특정 타입의 서브시스템을 통과해야 하는 경로를 나타냅니다. 연결을 완료하는데 필요한 중간 서브시스템은 노란색 사각형 위로 마우스를 움직일 때 사용되는 서브시스템 상자에 나열되어 있습니다. 이는 간접 연결이 수행 중인 다른 작업을 간섭할 수 있기 때문에 유용할 수 있습니다(그림 6).
DAQmx 타이밍 및 DAQmx 트리거 VI는 작업을 설정하기 위한 상위 레벨 기능을 제공하지만, 하위 레벨 정보가 중요해지는 경우도 있습니다. 예를 들어, 아날로그 출력 작업이 업데이트되는 타임베이스 또는 아날로그 에지 트리거가 설정된 레벨을 알아야 합니다. 이 정보는 DAQmx 타이밍 및 DAQmx 트리거 프로퍼티 노드를 통해 나타납니다(그림 7 참조). 이 프로퍼티 노드를 사용하여, 관련으로 설정된 모든 값에 접근하여 설정하거나 확인할 수 있습니다.
DAQmx 트리거 프로퍼티 노드가 복잡한 기능을 노출하는 예는 카운터를 재트리거할 수 있는 옵션입니다. 이전 API에서, 카운터를 재트리거 가능으로 설정하면 카운터 작업의 코드가 완전히 변경되었습니다. NI-DAQmx API에서, DAQmx 트리거 프로퍼티 노드를 Start.Retriggerable로 설정하기만 하면 카운터가 단일 트리거에서 재트리거 가능 동작으로 변경됩니다 (그림 8 참조).
위의 예는 동일한 디바이스에서 트리거링 또는 타이밍을 통해 작업을 함께 연결할 수 있는 몇 가지 방법을 보여줍니다. 그러나 한 디바이스의 기능 때문에 시스템의 특성을 완전히 정의할 수 없는 경우 어떻게 해야 합니까? 시스템의 채널 개수가 여러 디바이스를 결합해야 하는 경우가 보고되었습니다. 각 디바이스가 RTSI 연결을 포함하는 경우, 단일 디바이스와 동일한 동기화 옵션을 사용할 수 있습니다.
디바이스 사이의 연결을 보려면, MAX의 RTSI 케이블에서 마우스 오른쪽 버튼을 클릭한 후 디바이스를 케이블에 추가 아래에 있는 각 디바이스를 선택합니다. 각 디바이스가 추가되면, NI-DAQmx는 디바이스 사이의 모든 연결 경로를 활용하게 됩니다(동기화는 원활하게 이루어집니다). PCI 디바이스인 경우, 디바이스 사이에 RTSI 케이블을 물리적으로 추가해야 합니다.
이제 다른 디바이스의 적절한 타이밍 또는 트리거 핀을 DAQmx 타이밍 및 트리거 VI의 "소스"로 참조할 수 있습니다. (RTSI 버스의 관리는 기본적으로 사용자에게는 숨겨져 있지만, [신호 반출] VI를 사용하여 특정 신호를 특정 RTSI 핀에 명시적으로 연결하는 옵션이 있습니다.) 다음 예는 아날로그 입력 작업을 위해 한 디바이스에서 다른 디바이스로 타이밍 신호를 공유하는 방법을 보여줍니다(그림 10 참조).
여기서 두 개의 개별 디바이스에서 실행되는 두 개의 개별 작업이 있습니다. 디바이스 1의 샘플 클럭은 NI-DAQmx가 Dev1/ai/SampleClock을 디바이스 2의 샘플 클럭으로 사용하도록 지시함으로써 디바이스 2의 샘플 클럭으로 설정되었습니다. NI-DAQmx는 두 데이터 수집 디바이스에서 동일한 속도로 데이터를 수집할 수 있도록 실제로 이 경로를 설정하는 방법을 파악합니다.
대부분의 NI DAQ 디바이스에는 타이밍과 트리거링을 공유할 수 있는 기능이 포함되어 있습니다. 이 기능을 활용하려면, NI-DAQmx는 특징적인 사용 편의성, 분석 단순화, 성능 향상으로 같은 시간 영역에서 측정을 수행할 수 있는 도구를 제공합니다.