이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.
서로 다른 속도로 두 장치에서 데이터 수집
이 예제는 서로 다른 샘플링 레이트로 작동하는 두 개의 서로 다른 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