주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.

서로 다른 속도로 두 장치에서 데이터 수집

이 예제는 서로 다른 샘플링 레이트로 작동하는 두 개의 서로 다른 DAQ 장치로부터 데이터를 수집하는 방법을 보여줍니다. 이 예제는 서로 다른 수집 속도 제한을 가진 두 개의 National Instruments™ CompactDAQ 아날로그 입력 모듈(9201 및 9211)을 사용합니다. 9211 모듈은 온도 측정에 사용되며 더 느린 속도(10Hz)로 데이터를 수집하며, 9201 모듈은 전압 측정에 사용되며 100Hz로 수집합니다. 데이터 수집 객체 내의 모든 채널은 동일한 속도로 수집해야 하므로, 두 개의 모듈에서 서로 다른 속도로 수집하려면 두 개의 데이터 수집 객체를 사용해야 합니다. 두 DAQ 장치가 동시에 시작되도록 하려면 하드웨어 디지털 트리거 구성을 사용할 수 있습니다.

하드웨어 설정

  • CompactDAQ 섀시 NI cDAQ 9178 ('cDAQ1')

  • NI cDAQ 9211 모듈 (열전대 측정 유형) ('cDAQ1Mod1')

  • NI cDAQ 9201 모듈 (전압 측정 유형) ('cDAQ1Mod2')

  • 열전대 프로브 (K형)

  • 함수 발생기 계측기로 생성된 아날로그 전압 신호

데이터 수집 객체 및 채널 구성

두 개의 데이터 수집 객체를 생성하고, 각각 9211 모듈 또는 9201 모듈에서 하나의 아날로그 입력 채널을 가집니다. 데이터 수집 객체는 각각 10Hz 및 100Hz의 속도로 데이터를 수집합니다.

% Specify a common acquisition duration for both devices, in seconds
daqDuration = seconds(3);

% Create and configure DataAcquisition object and channels for cDAQ 9211 module
d1 = daq('ni');
addinput(d1, 'cDAQ1Mod1', 'ai0', 'Thermocouple');
d1.Channels(1).ThermocoupleType = 'K';
d1.Rate = 10;
Warning: The Rate property was reduced to 14.2857 due to changes in the channel
configuration. 
% Create and configure DataAcquisition object and channels for cDAQ 9201 module
d2 = daq('ni');
addinput(d2, 'cDAQ1Mod2', 'ai0', 'Voltage');
d2.Rate = 100;

트리거 연결 구성

수집 시작을 동기화하려면 하드웨어 트리거와 소스/대상 접근 방식을 사용할 수 있습니다. 둘 중 한 데이터 수집 객체(소스)가 수동으로 시작되고 또 다른 데이터 수집 객체(대상)의 수집 시작을 트리거합니다.

참고: PFI 트리거 단자가 없는 CompactDAQ 섀시 모델(예: NI 9174)을 사용하는 경우, 추가 디지털 I/O 모듈(예: NI 9402)을 사용하여 트리거 연결을 위한 PFI 단자를 제공할 수 있습니다.

% Configure the source data acquisition object to export a triggering
% signal on the PFI0 terminal of cDAQ1 chassis
addtrigger(d1, 'Digital', 'StartTrigger', 'cDAQ1/PFI0', 'External');

% Configure the destination data acquisition object to start acquisition when an
% external triggering signal is received at PFI0 terminal of cDAQ1 chassis
addtrigger(d2, 'Digital', 'StartTrigger', 'External', 'cDAQ1/PFI0');

수집을 시작하고 완료될 때까지 대기

대상 데이터 수집 객체는 소스 데이터 수집 객체가 시작되기 전에 먼저 시작되어 외부 트리거를 받을 준비가 되어 있어야 합니다.

start(d2, 'Duration', daqDuration)
while ~d2.WaitingForDigitalTrigger
    pause(0.1)
end
start(d1, 'Duration', daqDuration)

% Wait until data acquisition is complete
while d1.Running || d2.Running
    pause(1)
end
Background operation has started.
Background operation will stop after 3 s.
To read acquired scans, use read.
Background operation has started.
Background operation will stop after 3 s.
To read acquired scans, use read.

데이터를 타임테이블로 저장

각 데이터 수집 객체에 대해, 수집된 측정 데이터와 타임스탬프가 메모리에 저장되었습니다. 수집된 모든 데이터를 디폴트 타임테이블 형식으로 메모리에서 읽어옵니다.

data1 = read(d1, 'all');
data2 = read(d2, 'all');

수집 데이터 플로팅

두 장치에서 수집한 데이터의 스케일(크기)과 단위가 서로 다르기 때문에, 두 개의 y축을 가진 차트를 생성합니다.

figure
yyaxis left
plot(data1.Time, data1.Variables, '-x')
ylabel('Temperature (deg. C)')
ylim([0 50])
yyaxis right
plot(data2.Time, data2.Variables, '-o')
ylabel('Voltage (V)')
xlabel('Time (s)')

정리

데이터 수집 객체를 지워서 하드웨어 연결을 해제합니다.

clear d1 d2