Этот пример показывает, как сгенерировать данные с помощью Национального Инструментального устройства, доступного MATLAB® с помощью основанного на сеансе интерфейса.
Чтобы обнаружить устройство, которое поддерживает подсистемы напряжения аналогового выхода, кликните по имени устройства в списке в Командном окне или получите доступ к устройству в массиве, возвращенном командой daq.getDevices
. Этот пример использует Соотечественника Инструменты устройство NI 9263 CompactDAQ с ID 'cDAQ1Mod2', представляющим модуль в слоте 2 Шасси 'cDAQ1'.
devices = daq.getDevices
devices = Data acquisition devices: index Vendor Device ID Description ----- ------ --------- -------------------------------- 1 ni cDAQ1Mod1 National Instruments NI 9205 2 ni cDAQ1Mod2 National Instruments NI 9263 3 ni cDAQ1Mod3 National Instruments NI 9234 4 ni cDAQ1Mod4 National Instruments NI 9201 5 ni cDAQ1Mod5 National Instruments NI 9402 6 ni cDAQ1Mod6 National Instruments NI 9213 7 ni cDAQ1Mod7 National Instruments NI 9219 8 ni cDAQ1Mod8 National Instruments NI 9265 9 ni Dev1 National Instruments PCIe-6363 10 ni Dev2 National Instruments NI ELVIS II
devices(2)
ans = ni: National Instruments NI 9263 (Device ID: 'cDAQ1Mod2') Analog output subsystem supports: -10 to +10 Volts range Rates from 0.6 to 100000.0 scans/sec 4 channels ('ao0','ao1','ao2','ao3') 'Voltage' measurement type This module is in slot 2 of the 'cDAQ-9178' chassis with the name 'cDAQ1'.
Используйте функцию daq.createSession
, чтобы создать сеанс, сопоставленный с поставщиком. Сеанс содержит информацию, описывающую оборудование, частоту развертки, длительность и другие свойства, сопоставленные с генерацией. Когда вы создаете сеанс, присваиваете его переменной.
s = daq.createSession('ni')
s = Data acquisition session using National Instruments hardware: Will run for 1 second (1000 scans) at 1000 scans/second. No channels have been added.
Используйте функцию addAnalogOutputChannel
, чтобы добавить два канала аналогового выхода от этого устройства до сеанса.
addAnalogOutputChannel(s,'cDAQ1Mod2',0,'Voltage'); addAnalogOutputChannel(s,'cDAQ1Mod2',1,'Voltage');
По умолчанию сеанс сконфигурирован для 1 000 сканирований/секунда. Измените частоту развертки, чтобы получить на 8 000 сканирований/секунда.
s.Rate = 8000
s = Data acquisition session using National Instruments hardware: No data queued. Will run at 8000 scans/second. Number of channels: 2 index Type Device Channel MeasurementType Range Name ----- ---- --------- ------- --------------- ---------------- ---- 1 ao cDAQ1Mod2 ao0 Voltage (Diff) -10 to +10 Volts 2 ao cDAQ1Mod2 ao1 Voltage (Diff) -10 to +10 Volts
Используйте функцию outputSingleScan
, чтобы сгенерировать одно сканирование. Данные являются матрицей 1 на n, где N соответствует количеству выходных каналов. Здесь вы выводите 2 В на каждом канале.
outputSingleValue = 2; outputSingleScan(s,[outputSingleValue outputSingleValue]);
Используйте функцию queueOutputData
, чтобы сгенерировать несколько сканирований. Данные должны быть матрицей M на n, где M является количеством сканирований, вы хотите, и N является количеством каналов на сеансе. Сгенерируйте 2 тестовых сигнала (синусоида на 1 Гц и пандус на 1 Гц) и выведите их на каналах на этом сеансе. График изображает данные, сгенерированные обоими каналами вместе. (Проверяйте, используете ли устройство вы поддержки одновременная выборка.)
outputSignal1 = sin(linspace(0,pi*2,s.Rate)'); outputSignal2 = linspace(-1,1,s.Rate)'; plot(outputSignal1); hold on; plot(outputSignal2,'-g'); xlabel('Time'); ylabel('Voltage'); legend('Analog Output 0', 'Analog Output 1'); queueOutputData(s,[outputSignal1 outputSignal2]);
Используйте функцию startForeground
, чтобы запустить операцию аналогового выхода и выполнение блока MATLAB, пока все данные не будут сгенерированы.
s.startForeground;