В этом примере показано, как получать данные от двух разных устройств DAQ, работающих с разной частотой дискретизации. В примере используются два модуля аналоговых входов CompactDAQ National Instruments (9201 и 9211), которые имеют различные пределы скорости захвата. Модуль 9211 используется для измерения температуры и приобретает более медленную частоту (10 Гц), чем модуль 9201, который используется для измерения напряжения (100 Гц). Поскольку все каналы в объекте сбора данных должны получать данные с одинаковой скоростью, для получения данных из двух модулей на нескольких скоростях необходимо использовать два объекта сбора данных. Для одновременного запуска обоих устройств DAQ можно использовать аппаратную цифровую конфигурацию запуска.
Корпус CompactDAQ NI cDAQ 9178 ('cDAQ1')
Модуль NI cDAQ 9211 с типом измерения термопар ('cDAQ1Mod1')
Модуль NI cDAQ 9201 с типом измерения напряжения ('cDAQ1Mod2')
Датчик термопары (тип K)
Аналоговый сигнал напряжения, генерируемый прибором функционального генератора
Создайте два объекта сбора данных, каждый с одним аналоговым входным каналом из модуля 9211 или модуля 9201. Объекты сбора данных получают данные со скоростями 10 Гц и 100 Гц соответственно.
% Specify a common acquisition duration for both devices, in seconds daqDuration = 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;
Для синхронизации начала сбора данных можно использовать аппаратное срабатывание и подход «ведущий/ведомый». Один из объектов сбора данных (ведущий) запускается вручную и инициирует начало сбора данных другого объекта сбора данных (ведомого объекта).
Примечание.При наличии модели корпуса CompactDAQ (например, NI 9174), в которой отсутствуют триггерные терминалы PFI, можно использовать дополнительный цифровой модуль ввода/вывода (например, NI 9402) для обеспечения клемм PFI для триггерных соединений.
% Configure the master data acquisition object to export a triggering % signal on the PFI0 terminal of cDAQ1 chassis addtrigger(d1, 'Digital', 'StartTrigger', 'cDAQ1/PFI0', 'External'); % Configure the slave 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