read

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

Описание

пример

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

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

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

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

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

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

пример

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

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

Примеры

свернуть все

Не задавая длительность или количество сканов, 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()

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

Пример: seconds(5)

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

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

свернуть все

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

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

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

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

См. также

Функции

Введенный в R2020a