Main Content

Acquire Data Using NI FieldDAQ Device

This example shows how to acquire data from an NI™ FieldDAQ device.

Discover Analog Input Devices

To discover a device that supports input measurements, access the device in the table returned by the daqlist command. This example uses a NI FD-11603 device. This device has two banks, each with 4 channels. Channel 0 of Bank 1 is connected to a frequency generator that produces a 1 kHz sine wave (1 Vpp centered around 0.5V).

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]

Create DataAcquisition Interface and Add Analog Input Channels

Create a DataAcquisition, set the Rate property (the default is 1000 scans per second), and add analog input channels using 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.

Acquire Data For Specified Duration

Use read to acquire multiple scans, blocking MATLAB execution until all the data requested is acquired. The acquired data is returned as a timetable with width equal to the number of channels and height equal to the number of scans.

% Acquire data for one second at 20000 scans per second.
data = read(dq, seconds(1));

Plot Acquired Data

t = data.Time;
v = data.Variables;
n = 200;
plot(t(1:n), v(1:n));
ylabel("Voltage (V)")

Acquire Specified Number of Scans

data = read(dq, 200);
plot(data.Time, data.Variables);
ylabel("Voltage (V)")