Получение данных с двух устройств с различными скоростями

Этот пример показывает, как получить данные от двух разных устройств DAQ, работающих с различными частотами дискретизации. В примере используются два модуля аналогового входа National Instruments ™ CompactDAQ (9201 и 9211), которые имеют различные пределы скорости приема. Модуль 9211 используется для измерения температуры и получает с меньшей скоростью (10 Гц), чем модуль 9201, который используется для измерения напряжения (100 Гц). Поскольку все каналы в объекте сбора данных должны быть получены с одной и той же скоростью, для получения из двух модулей с несколькими скоростями необходимо использовать два объекта сбора данных. Чтобы заставить оба устройства DAQ запускаться одновременно, можно использовать оборудование цифровое триггерное строение.

Setup оборудования

  • Корпус 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;

Сконфигурируйте триггерные соединения

Для синхронизации начала сбора можно использовать триггеры оборудования и подход master/slave. Один из объектов сбора данных (master) запускается вручную и инициирует запуск сбора других объектов сбора данных (slave).

Примечание. Если у вас есть модель корпуса 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.

Сохраните данные как Timetable

Для каждого объекта сбора данных полученные данные измерений и временные метки хранились в памяти. Считайте все полученные данные из памяти в формате расписания по умолчанию.

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