В этом примере показано, как получать данные с устройства NI StartDAQ.
Чтобы обнаружить устройство, поддерживающее входные измерения, обратитесь к устройству в таблице, возвращенной 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 свойство (значение по умолчанию - 1000 сканирований в секунду) и добавление каналов аналогового ввода с помощью 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)")