Сбор данных с помощью NI-устройств

В этом примере показано, как получить данные с устройства 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 и добавьте аналоговые входные каналы

Создайте 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)")