В этом примере показано, как получить данные с устройства National Instruments ™.
Чтобы обнаружить устройство, которое поддерживает входные измерения, получите доступ к устройству в таблице, возвращенной daqlist
команда. Этот пример использует модуль NI 9201 в National Instruments ™ ® CompactDAQ Chassis NI cDAQ-9178. Это 8-канальное аналоговое входное устройство и модуль 4 в корпусе.
d = daqlist("ni")
d = 12×4 table DeviceID Description Model DeviceInfo ___________ __________________________________ _____________ ____________________ "cDAQ1Mod1" "National Instruments NI 9205" "NI 9205" [1×1 daq.DeviceInfo] "cDAQ1Mod2" "National Instruments NI 9263" "NI 9263" [1×1 daq.DeviceInfo] "cDAQ1Mod3" "National Instruments NI 9234" "NI 9234" [1×1 daq.DeviceInfo] "cDAQ1Mod4" "National Instruments NI 9201" "NI 9201" [1×1 daq.DeviceInfo] "cDAQ1Mod5" "National Instruments NI 9402" "NI 9402" [1×1 daq.DeviceInfo] "cDAQ1Mod6" "National Instruments NI 9213" "NI 9213" [1×1 daq.DeviceInfo] "cDAQ1Mod7" "National Instruments NI 9219" "NI 9219" [1×1 daq.DeviceInfo] "cDAQ1Mod8" "National Instruments NI 9265" "NI 9265" [1×1 daq.DeviceInfo] "Dev1" "National Instruments PCIe-6363" "PCIe-6363" [1×1 daq.DeviceInfo] "Dev2" "National Instruments NI ELVIS II" "NI ELVIS II" [1×1 daq.DeviceInfo] "Dev3" "National Instruments PCIe-6363" "PCIe-6363" [1×1 daq.DeviceInfo] "Dev4" "National Instruments PCIe-6363" "PCIe-6363" [1×1 daq.DeviceInfo]
deviceInfo = d{4, "DeviceInfo"}
deviceInfo = ni: National Instruments NI 9201 (Device ID: 'cDAQ1Mod4') Analog input supports: -10 to +10 Volts range Rates from 0.6 to 500000.0 scans/sec 8 channels ('ai0' - 'ai7') 'Voltage' measurement type This module is in slot 4 of the 'cDAQ-9178' chassis with the name 'cDAQ1'.
Создайте DataAcquisition, установите Rate
свойство (по умолчанию это 1000 сканы в секунду) и добавить аналоговые входные каналы, используя addinput
.
dq = daq("ni"); dq.Rate = 8000; addinput(dq, "cDAQ1Mod4", "ai0", "Voltage"); addinput(dq, "cDAQ1Mod4", "ai1", "Voltage");
Использование read
для выполнения одиночного скана. Результатом является таблица с двумя столбцами данных, поскольку для получения входа используются два канала скана.
tabledata = read(dq)
tabledata = 1×2 timetable Time cDAQ1Mod4_ai0 cDAQ1Mod4_ai1 _____ _____________ _____________ 0 sec 0.00081472 0.00090579
Использование read
для выполнения одиночного скана. Результатом является массив размера 1x2, поскольку для получения скана используются два входа канала.
matrixdata = read(dq, "OutputFormat", "Matrix")
matrixdata = 1.0e-03 * 0.1270 0.9134
Использование read
чтобы получить несколько сканы, блокируйте выполнение MATLAB до тех пор, пока не будут получены все запрошенные данные. Полученные данные возвращаются как расписание с шириной, равной количеству каналов, и высотой, равной количеству сканов.
% Acquire data for one second at 8000 scans per second.
data = read(dq, seconds(1));
plot(data.Time, data.Variables);
ylabel("Voltage (V)")
data = read(dq, 2*dq.Rate);
plot(data.Time, data.Variables);
ylabel("Voltage (V)")