В этом примере показано, как получить данные с устройства NI FieldDAQ.
Чтобы обнаружить устройство, которое поддерживает входные измерения, получите доступ к устройству в таблице, возвращенной daqlist
команда. Этот пример использует устройство FD-11603 NI. Это устройство имеет два банка, каждый с 4 каналами. Канал 0 Bank 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)")