В этом примере показано, как получить данные из устройства NI FieldDAQ.
Чтобы обнаружить устройство, которое поддерживает входные измерения, получите доступ к устройству в таблице, возвращенной daqlist
команда. Этот пример использует устройство NI FD-11603. Это устройство имеет два банка, каждого с 4 каналами. Канал 0 из Банка 1 соединяется с генератором частоты, который производит синусоиду на 1 кГц (1 Vpp сосредоточил приблизительно 0.5 В).
d = daqlist("ni")
d=10×4 table
DeviceID Description Model DeviceInfo
_______________________ ___________________________________ __________ _______________________
"Dev1" "National Instruments(TM) USB-6351" "USB-6351" [1×1 daq.ni.DeviceInfo]
"FD11603-1D3BB09-Bank1" "National Instruments(TM) FD-11603" "FD-11603" [1×1 daq.ni.DeviceInfo]
"FD11603-1D3BB09-Bank2" "National Instruments(TM) FD-11603" "FD-11603" [1×1 daq.ni.DeviceInfo]
"FieldDAQ1-Bank1" "National Instruments(TM) FD-11603" "FD-11603" [1×1 daq.ni.DeviceInfo]
"FieldDAQ1-Bank2" "National Instruments(TM) FD-11603" "FD-11603" [1×1 daq.ni.DeviceInfo]
"FieldDAQ2-Bank1" "National Instruments(TM) FD-11613" "FD-11613" [1×1 daq.ni.DeviceInfo]
"FieldDAQ3-Bank1" "National Instruments(TM) FD-11634" "FD-11634" [1×1 daq.ni.DeviceInfo]
"FieldDAQ3-Bank2" "National Instruments(TM) FD-11634" "FD-11634" [1×1 daq.ni.DeviceInfo]
"FieldDAQ4-Bank1" "National Instruments(TM) FD-11637" "FD-11637" [1×1 daq.ni.DeviceInfo]
"FieldDAQ4-Bank2" "National Instruments(TM) FD-11637" "FD-11637" [1×1 daq.ni.DeviceInfo]
Создайте DataAcquisition, установите Rate
свойство (значением по умолчанию являются 1 000 сканов в секунду), и добавляет каналы аналогового входа с помощью addinput
.
dq = daq("ni"); dq.Rate = 20000; addinput(dq,"FD11603-1D3BB09-Bank1","ai0","Voltage");
Warning: Added channel does not support on-demand operations: only clocked operations are allowed.
Используйте read
чтобы получить несколько сканов, блокируя выполнение MATLAB до, все запрошенные данные получены. Полученные данные возвращены как расписание с шириной, равной количеству каналов и высоты, равной количеству сканов.
% Acquire data for one second at 20000 scans per second.
data = read(dq, seconds(1));
t = data.Time;
v = data.Variables;
n = 200;
plot(t(1:n), v(1:n));
ylabel("Voltage (V)")
data = read(dq, 200);
plot(data.Time, data.Variables);
ylabel("Voltage (V)")