exponenta event banner

читать

Считывание данных, полученных аппаратным обеспечением

Описание

пример

scanData = read(d) считывает один входной скан из всех входных каналов в DataAcquisition и возвращает расписание в scanData.

scanData = read(d,span) считывает диапазон входных сканирований из интерфейса DataAcquisition и возвращает расписание в scanData. Можно указать span как длительность, количество сканирований или "all".

  • Если DataAcquisition не выполняется и не имеет полученных данных, DataAcquisition начинает конечное получение переднего плана для считывания требуемого количества сканирований. MATLAB блокируется до завершения сбора и считывания.

  • Если DataAcquisition выполняется при вызове этой функции, он считывает уже полученные данные, при необходимости ожидая, пока не будет доступно указанное количество сканирований. MATLAB блокируется до завершения сбора и считывания. Это типично, когда start вызывается для запуска фонового сбора данных перед вызовом read.

  • Если DataAcquisition не запущен, но получил данные из предыдущего прогона, он считывает указанное количество сканирований или все данные, в зависимости от того, что меньше.

[scanData,triggerTime] = read(___) выполняет указанное чтение и возвращает расписание scanData и время запуска сканирования до triggerTime в качестве даты и времени.

пример

scanData = read(___,"OutputFormat","Matrix") выполняет указанное считывание и возвращает матрицу M-на-N из двойников в scanData, где М - количество сканирований, а N - количество входных каналов. Каждый столбец содержит данные одного канала.

[scanData,timeStamp,triggerTime] = read(___,"OutputFormat","Matrix") выполняет указанное чтение и возвращает временные метки сканирования в timeStamp, как M-by-1 вектор двойников, представляющий относительное время в секундах после первого сканирования. Строки timeStamp вектор соответствует строкам scanData матрица. Время запуска сканирования возвращается к triggerTime как двойное датенум.

Примеры

свернуть все

Без указания продолжительности или количества сканирований, read функция получает одно сканирование по требованию на всех каналах.

d = daq("ni")
addinput(d,"Dev1",1,"Voltage"); % add more channels as needed
scanData = read(d)
data =

  timetable

    Time     Dev1_ai1
    _____    ________

    0 sec    -1.9525

Если нет данных, доступных для чтения с устройства, read инициирует получение основной системы, блокируя MATLAB до завершения.

d = daq("ni");
ch = addinput(d,"Dev1",1:2,"Voltage")
ch = 

    Index    Type    Device    Channel    Measurement Type          Range              Name   
    _____    ____    ______    _______    ________________    __________________    __________

      1      "ai"    "Dev1"     "ai1"     "Voltage (Diff)"    "-10 to +10 Volts"    "Dev1_ai1"
      2      "ai"    "Dev1"     "ai2"     "Voltage (Diff)"    "-10 to +10 Volts"    "Dev1_ai2"

Прочитайте пять сканирований данных по всем каналам.

scanData = read(d,5)
scanData =

  5×2 timetable

      Time       Dev1_ai1    Dev1_ai2
    _________    ________    ________

    0 sec         0.1621     0.62579 
    0.001 sec    0.42124     0.56955 
    0.002 sec    0.51069     0.56002 
    0.003 sec    0.54193     0.56166 
    0.004 sec    0.55377     0.56396

Считывание 5 миллисекунд данных по всем каналам.

d.Rate = 1000;
scanData = read(d,seconds(0.005))
scanData =

  5×2 timetable

      Time       Dev1_ai1    Dev1_ai2
    _________    ________    ________

    0 sec         0.2259     0.33278 
    0.001 sec    0.28871     0.31699 
    0.002 sec     0.3068     0.31633 
    0.003 sec     0.3137     0.31929 
    0.004 sec    0.31732     0.32028

Можно также считывать данные в массивы с двойными значениями. Пять сканирований на двух каналах приводят к матрице 5 на 2 с столбцом для каждого канала.

scanData = read(d,5,"OutputFormat","Matrix")
scanData =

    0.0424    0.0644
    0.0572    0.0621
    0.0605    0.0638
    0.0618    0.0641
    0.0631    0.0648

Когда фоновое получение инициируется с помощью start функция, использование read для импорта данных.

d = daq("ni");
ch = addinput(d,"Dev1",1:2,"Voltage")
start(d,"NumScans",5)
Background operation has started.
Background operation will stop after 0.005 s.
To read acquired scans, use read.
scanData = read(d,"all")
scanData =

  5×2 timetable

      Time       Dev1_ai1    Dev1_ai2
    _________    ________    ________

    0 sec        0.012466    0.023977
    0.001 sec    0.019373    0.023319
    0.002 sec    0.021017     0.02299
    0.003 sec    0.021346     0.02299
    0.004 sec    0.022661    0.023648

Входные аргументы

свернуть все

Интерфейс DataAcquisition, указанный как DataAcquisition объект, созданный с помощью daq функция.

Пример: d = daq()

Продолжительность операции чтения, заданная как длительность или двойная. Если это тип длительности, он определяет длительность времени получения; если двойное число, оно определяет количество сканирований.

Пример: seconds(5)

Типы данных: double | duration

Выходные аргументы

свернуть все

Ввод данных сканирования с устройства, возвращаемых в виде расписания или матрицы двойных значений, в зависимости от OutputFormat установка.

Вы можете получить доступ к времени запуска сканирования в свойстве расписания scanData.Properties.CustomProperties.TriggerTime, возвращено в качестве даты и времени.

Время начала получения, возвращенное в качестве даты и времени, если OutputFormat является 'Timetable' (по умолчанию), или как двойное, если OutputFormat является 'Matrix'. Эта информация также доступна в качестве значения datetime в свойстве расписания scanData.Properties.CustomProperties.TriggerTime.

Времена скан-приобретений, возвращенные в виде матрицы дублей. Каждое значение представляет относительное время в секундах после первого сканирования. Этот аргумент возвращается только в том случае, если OutputFormat указывается как "Matrix".

См. также

Функции

Представлен в R2020a