티스토리 뷰
NI Compact DAQ 디바이스를 이용하여 입력 및 출력을 처리할 때 사용할 수 있는 타이밍에 대한 방법은 내부 타이밍 엔진을 사용하는 하드웨어 타이밍과 윈도우와 같은 OS의 타이밍을 사용하는 소프트웨어 타이밍으로 구분할 수 있습니다.
이 글은 Gen II cDAQ 샤시 (cDAQ-9171/9174/9178/9181/9184/9188/9188XT/9191)는
물론 Standalone cDAQ 샤시 (cDAQ-9138/9139)에서도 적용을 할 수 있습니다.
이 글에서는 내부 타이밍 엔진을 사용하는 하드웨어 타이밍에 대해서 정리를 해보도록 할까합니다. 데이터 수집 및 출력 처리시 최고의 성능과 동기화를 위해서는 하나의 AI 혹은 AO 태스크에서 사용자가 원하는 처리하도록 설정할 수 있습니다. 이렇게 되면 하나의 타이밍 엔진을 통해서 수집 혹은 출력을 처리하기 때문에 최선의 결과를 만들 수가 있습니다.
하지만 이런 상황은 모든 채널에서 요구하는 타이밍의 속도가 동일해야한다는 가정을 가지고 있습니다. 데이터 수집 혹은 출력 속도가 각 채널마다 다르다면 위와 같은 방법을 사용할 수는 없습니다. 이런 상황이라면 서로 다른 타이밍 엔진을 통해서 프로그래밍을 구현해야 할 것입니다.
NI Compact DAQ 하드웨어는 내부적으로 타이밍 엔진을 몇개를 가지고 있을까요? 하드웨어 타이밍은 OS의 타이밍을 사용하는 소프트웨어 타이밍과는 달리 보드의 리소스를 사용하기 때문에 생성할 수 있는 태스크의 갯수는 장비에 따라 달라집니다.
NI Compact DAQ는 물론 대다수의 NI DAQ 장비는 System Timing Controller(STC)로 부터 타이밍 정보를 받아옵니다. 이러한 타이밍 정보는 샘플을 수집하는 타이밍의 기반이 되는 샘플 클럭(Sample Clock)을 결정하는데 사용됩니다. Gen II cDAQ 샤시와 Standalone cDAQ 샤시의 STC는 STC3입니다.
STC는 NI에서 만든 ASIC 관련 기술입니다. STC의 기술의 발전과 보드의 출시에 따라 각 보드에 적용이된 STC 기술은 각각 다릅니다.
아래는 NI 보드에 대한 차이를 설명하는 글입니다.
B 시리즈 다기능 DAQ
가격이 저렴하며 DAQ디바이스의 기본적인 기능을 제공, 하나의 카운터 지원
M 시리즈 다기능 DAQ
NI-STC 2, NI-PGIA 2 기술을 이용하여 높은 성능과 정확도를 제공, 2개의 카운터 지원
X 시리즈 다기능 DAQ
NI-STC 3 기술 이용하여 M 시리즈 보드보다 빠른 샘플링 속도 제공 , 4개의 카운터 지원
NI-STC 2에서 2개의 카운터를 사용했던 작업을 하나의 카운터로 처리 가능
R 시리즈 다기능 DAQ
ASIC 칩이 아닌 FPGA 칩을 적용하여 사용자가 원하는 기능을 NI FPGA Module을 통해서 구현 가능
Compact DAQ는 일반적으로 X 시리즈 보드로 분류되지는 않지만 내부에는 X시리즈와 동일한 STC3 칩을 사용하고 있습니다. STC3 칩은 3개의 AI 타이밍 엔진, 1개의 AO 타이밍 엔진, 1개의 DI 타이밍 엔진, 1개의 DO 타이밍 엔진을 가지고 있습니다. 아래의 표는 사용자가 생성가능한 하드웨어 타이밍의 태스크 갯수를 말합니다.
하드웨어 타이밍 태스크 |
섀시 별 태스크 갯수 |
모듈별 태스트 갯수 |
아날로그 입력 |
3 |
1 |
아날로그 출력 |
1 |
1 |
카운터 입력 |
4 |
4 |
카운터 출력 |
4 |
4 |
디지털 입력 |
1 |
1 |
디지털 출력 |
1 |
1 |
하드웨어 타이밍 태스크에 대한 스트리밍 버퍼가 존재합니다. 이 버퍼는 동시에 돌릴 수 있는 하드웨어 타이밍 태스크의 전체 갯수를 제한합니다. cDAQ-9171/9181/9191은 6개의 데이터 스트리밍 버퍼를, cDAQ-9174/0178/9184/9188XT/9138/9139는 7개의 데이터 스트리밍 버퍼를 제공하고 있습니다. 이 말의 의미는 아날로그 입력/출력, 디지털 입력/출력, 카운터 입력/출력 또는 CAN 통신에 대한 하드웨어 타이밍을 총 6개 혹은 7개를 지원한다는 내용입니다.
이 데이터 스트림들은 8KB의 메모리 블록으로 이루어 져, 6-7개의 FIFO 메모리로 분할 됩니다. 분할 시 가장 첫번째 태스크에 할당된 버퍼로 분할이 되기 때문에 가장 좋은 성능을 위해서는 첫번 째 태스크에 높은 처리량을 가지는 태스크를 생성해야 합니다.
이에 반해 소프트웨어 타이밍으로도 데이터를 수집할 수 있습니다. 소프트웨어 타이밍은 STC3 칩을 사용하지 않습니다. 소프트웨어 타이밍은 ms 단위의 OS 운영체제의 sleep 타이밍을 이용하여 sleep이 풀리는 그 당시의 샘플을 가지고오는 방법을 말합니다. 소프트웨어 타이밍은 하드웨어 타이밍에서 사용하는 스트리밍 버퍼를 사용하지 않기 때문에, 태스크 갯수에 대한 제한이 없습니다.
이 글은 DAQ의 하드웨어 타이밍에 대해서 알아보았습니다.
이 글이 도움이 되셨나요? 그렇다면 아래의 그림을 클릭해주세요.
'National Instruments > DAQmx' 카테고리의 다른 글
[DAQmx] C언어에서 이더넷 DAQ 장비 예약하기 (0) | 2015.04.10 |
---|---|
[DAQmx] ANSI C기반 DAQ 샘플 속도 변경 방법 (0) | 2015.02.14 |
[DAQmx] DAQ 이더넷 장비(9188) C#으로 추가 및 예약하기 (0) | 2014.12.10 |
[DAQmx] C기반 DAQmx 함수 .NET API 와 맵핑 (2) | 2014.12.05 |
[DAQmx] 디지털 신호 기초 자료(Digital Signal Fundamental) - 디지털 입력 관련 (0) | 2014.10.29 |