exponenta event banner

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

В этом примере показано, как получать данные от двух разных устройств 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