Перейдите свой код к основанному на сеансе интерфейсу

Эта тема помогает вам перейти свой код от устаревшего интерфейса до основанного на сеансе интерфейса.

Переход общие команды рабочего процесса

Эта таблица приводит устаревшие команды для общих рабочих процессов и их соответствующие основанные на сеансе команды.

Для этого Устаревшая командаОснованная на сеансе команда
Найдите поддерживаемое оборудование доступным для вашей системы.daqhwinfodaq.getDevices
Зарегистрированный адаптер DAQ.daqregisterВы не должны указывать адаптер, если вы используете основанный на сеансе интерфейс.
Сбросьте MATLAB к начальному состоянию.daqresetdaqreset
Узнайте недавно соединенное оборудование.Закройте MATLAB и перезапуск.daqreset
Создайте объект аналогового входа и добавьте канал.
ai = analoginput
		('nidaq', 'Dev1');
addchannel(ai, 1)
s=daq.createSession('ni'); 
addAnalogInputChannel
      (s,'Dev1',1,'Voltage');
Создайте объект аналогового выхода
ao = analogoutput
		('nidaq', 'Dev1'); 
addchannel(ao, 1)
addAnalogOutputChannel
      (s,'Dev1',0,'Current')
Создайте цифровой ввод и вывод, возражают и добавляют цифровую входную линию.
dio = digitalio
   ('nidaq','Dev1'); 
addline(dio,0:3,'in');
s = daq.createSession('ni'); 
addDigitalChannel
  (s,'Dev1','Port0/Line0:1','InputOnly');
Создайте встречные входные каналыВы не можете использовать встречные каналы в устаревшем интерфейсе.
s = daq.createSession ('ni') 
addCounterInputChannel
      (s,'Dev1','ctr0','EdgeCount')
Запустите объект.
start(ai)
startForeground(s);

для операций, которые блокируют MATLAB® при выполнении.

startBackground (s);

для операций, которые запускаются, не блокируя MATLAB.

Установите уровень приобретения.
ai.SampleRate=48000
s.rate=48000
Задайте внешний триггер.
ai.TriggerType=
			'HwDigital';
addTriggerConnection
(s,'External','Dev3/PFI0','StartTrigger');
Укажите диапазон входных сигналов
ai.Channel.InputRange=[-5 5];
ch = addAnalogInputChannel
			(s,'Dev1',1,'Voltage');
ch.Range = [-5 5];

Получите аналоговые данные

Устаревший интерфейс

Используя устаревший интерфейс, вы находите оборудование доступным для вашей системы, создаете объект аналогового входа и запускаете приобретение.

  1. Найдите оборудование доступным для вашей системы.

    d = daqhwinfo;
  2. Создайте объект аналогового входа и добавьте канал с помощью устройства National Instruments® с ID Dev1.

    ai = analoginput('nidaq','Dev1');
    addchannel(ai,1)
  3. Установите частоту дискретизации на 8 000 и запустите канал.

    ai.SampleRate = 8000;
    start(ai)

Основанный на сеансе интерфейс

Используя основанный на сеансе интерфейс, вы создаете сеанс поставщика и добавляете каналы в сеанс. Вы можете использовать любое устройство или шасси от того же поставщика, доступного для вашей системы, и можете добавить комбинацию аналога, цифрового, и противостоять каналам ввода и вывода. Все каналы действуют вместе, когда вы запускаете сеанс.

Примечание совместимости

Для устройств, которые поддерживают обе связи переменного и постоянного тока на сеансе, взаимодействуют через интерфейс, связь по умолчанию является связью DC, устанавливая Coupling канала свойство к 'DC'. Для тех же устройств в устаревшем интерфейсе значением по умолчанию была связь AC.

  1. Найдите оборудование доступным для вашей системы.

    d = daq.getDevices
  2. Создайте сеанс для Национальных Инструментальных устройств.

    s = daq.createSession('ni');
  3. Установите частоту дискретизации сеанса на 8 000.

    s.Rate = 8000
  4. Добавьте канал аналогового входа для устройства с ID Dev1 для измерения напряжения, и затем запустите приобретение.

    addAnalogInputChannel(s,'Dev1',1,'Voltage');
    startForeground(s);

Используйте триггеры

Получите аналоговые данные с помощью аппаратных триггеров.

Устаревший интерфейс

Аналоговые операции сконфигурированы, чтобы инициировать сразу по умолчанию. Необходимо задать hwDigital инициируйте тип.

Создайте объект аналогового входа и добавьте два канала

  1. Создайте объект аналогового входа и добавьте два канала

    ai = analoginput('nidaq','Dev1');
    chan = addchannel(ai,0:1)
    
  2. Укажите диапазоны канала, чтобы масштабировать данные однородно. Сконфигурируйте входной тип, чтобы быть SingleEnded терминал.

    chan.InputRange = [-10 10];
    chan.UnitsRange = [-10 10];
    chan.SensorRange = [-10 10];
    chan.InputType = 'SingleEnded';
    
  3. Задайте триггерный тип, источник и условие. Установите TriggerRepeat к 0.

    ai.TriggerType = 'HwDigital';
    ai.HwDigitalTriggerSource = 'PFI0';
    ai.TriggerCondition = 'PositiveEdge';
    ai.TriggerRepeat = 0;
  4. Задайте уровень и длительность.

    actualRate = setverify(ai,'SampleRate',50000);
    duration = 0.01;
    ai.SamplesPerTrigger = duration*actualRate;
  5. Запустите канал, ожидайте, пока канал не получает заданный объем данных, и получите данные.

    start(ai);
    
    wait(ai,duration+1);
    [data,timestamps] = getdata(ai);
  6. Отобразите данные на графике.

    plot(timestamps,data)

Основанный на сеансе интерфейс

Можно задать внешнее событие, чтобы инициировать сбор данных с помощью основанного на сеансе интерфейса.

  1. Создайте сеанс и добавьте два канала аналогового входа.

    s = daq.createSession('ni');
    ch = addAnalogInputChannel(s,'Dev1',0:1,'Voltage');
    
  2. Сконфигурируйте терминал и область значений каналов на сеансе.

    ch(1).TerminalConfig = 'SingleEnded';
    ch(1).Range = [-10.0 10.0];
    ch(2).TerminalConfig = 'SingleEnded';
    ch(2).Range = [-10.0 10.0];
  3. Создайте внешнюю триггерную связь и установите триггер запускать одно время.

    addTriggerConnection(s,'External','Dev1/PFI0','StartTrigger');
    s.Connections(1).TriggerCondition = 'RisingEdge';
    s.TriggersPerRun = 1;
  4. Установите уровень и длительность приобретения.

    s.Rate = 50000;
    s.DurationInSeconds = 0.01;
    
  5. Получите данные на переднем плане и отобразите данные на графике.

    [data,timestamps] = startForeground(s);
    plot(timestamps,data)

Данные логов

Устаревший интерфейс

Можно регистрировать данные к диску и использовать daqread считывать данные назад.

  1. Создайте объект аналогового входа и добавьте два канала.

    ai = analoginput('winsound');
    ch = addchannel(ai,0:1);
  2. Задайте 2-секундное приобретение для каждого триггера, установите триггер повторяться три раза, и информация о журнале к файлу file00.daq.

    duration = 2; 
    ai.SampleRate = 8000;
    actualRate = ai.SampleRate;
    ai.SamplesPerTrigger = duration*ActualRate;
    ai.TriggerRepeat = 3;
    ai.LogFileName = 'file00.daq';
    ai = LoggingMode = 'Disk&Memory';
  3. Запустите приобретение, ожидайте длительности времен приобретения количество триггеров для приобретения, чтобы завершиться. Затем извлеките все данные, хранимые в файле журнала как пары шага расчета.

    start(ai)
    wait(ai, (ai.TriggerRepeat+1)*duration + 1)
    [data,time] = daqread('file00.daq');

Основанный на сеансе интерфейс

Основанный на сеансе интерфейс не имеет заданного формата файла для регистрации данных. Можно записать в файл в режиме двоичного счета или сохранить данные к MAT-файлу.

  1. Создайте сеанс и добавьте четыре канала аналогового входа из Dev1.

    s = daq.createSession('ni');
    ch = addAnalogInputChannel(s,'Dev1',0:3,'Voltage');
    
  2. Установите ту же область значений и терминалы для всех каналов.

    ch(1).Range = [-10.0 10.0];
    ch(1).TerminalConfig = 'SingleEnded';
    ch(2).Range = [-10.0 10.0];
    ch(2).TerminalConfig = 'SingleEnded';
    ch(3).Range = [-10.0 10.0];
    ch(3).TerminalConfig = 'SingleEnded';
    ch(4).Range = [-10.0 10.0];
    ch(4).TerminalConfig = 'SingleEnded';
    
  3. Установите уровень сеанса и длительность приобретения.

    s.Rate = 50000;
    s.DurationInSeconds = 0.01;
  4. Запустите приобретение и отобразите данные на графике.

    [data,timestamps] = startForeground(s);
    figure
    plot(timestamps,data)
    
  5. Сохраните полученные данные к MAT-файлу.

    fileName = 'data.mat';
    save(fileName,'timestamps','data')
    
  6. Загрузите данные из файла в рабочее пространство MATLAB.

    savedData = load('data.mat');
    figure;
    plot(savedData.timestamps,savedData.data)
    

Установите область значений подсистемы аналогового входа

Можно указать диапазон измерения подсистемы аналогового входа.

Устаревший интерфейс

  1. Создайте объект аналогового входа ai для устройства National Instruments®, и добавляют два канала в него.

    ai = analoginput('nidaq','Dev1');
    addchannel(ai,0:1);
  2. Сконфигурируйте оба канала, чтобы принять входные сигналы в диапазоне от-10 вольт до 10 вольт.

    ai.Channel.InputRange = [-10 10];

Основанный на сеансе интерфейс

  1. Создайте сеанс и добавьте канал аналогового входа.

    s = daq.createSession('ni');
    ch = addAnalogInputChannel(s,'Dev1','ai1','Voltage')
  2. Установите диапазон от-10 вольт до 10 вольт.

    ch.Range = [-10 10];

Запустите событие, когда количество сканирований превысит заданное значение

Можно задать приобретение, чтобы смотреть за конкретным количеством сканирований, чтобы произойти и запустить событие, если приобретение превышает конкретное количество.

Устаревший интерфейс

Можно использовать BufferingConfig свойство задать выделенную память для заданного канала. Если количество полученных выборок превышает выделенную память, то ошибка возвращена.

  1. Создайте объект аналогового входа ai для Национального Инструментального устройства и добавляют канал в него.

    ai = analoginput('nidaq','Dev1');
    ch = addchannel(ai,0);
    
  2. Установите частоту дискретизации на 800 000.

    ai.SampleRate = 800000)
  3. Установите bufferingConfigMode к 'Manual' и набор bufferingConfig значение.

    ai.bufferingConfigMode = 'Manual';
    ai.bufferingConfig = [512 30];

Основанный на сеансе интерфейс

Используйте NotifyWhenDataAvailableExceeds свойство запустить DataAvailable событие.

  1. Создайте сеанс приобретения, добавьте канал аналогового входа.

    s = daq.createSession('ni');
    addAnalogInputChannel(s,'Dev1','ai0','Voltage');
  2. Установите Уровень на 800 000 сканирований в секунду, который автоматически устанавливает DataAvailable уведомление, чтобы автоматически стрелять 10 раз в секунду.

    s.Rate = 800000;
    s.NotifyWhenDataAvailableExceeds
    ans =
        80000
  3. Увеличьте NotifyWhenDataAvailableExceeds к 160 000.

    s.NotifyWhenDataAvailableExceeds = 160000;

Используйте тайм-аут, чтобы блокировать MATLAB, в то время как операция завершается

Устаревший интерфейс

  1. Создайте объект ao аналогового выхода для Национального Инструментального устройства затем добавьте канал и установите его на выходные данные на 8 000 выборок в секунду с одним ручным триггером.

    ao = analogoutput('nidaq','Dev1');
    ch = addchannel(ao,1);
    ao.SampleRate =  8000;
    ao.TriggerType = 'Manual';
    ao.RepeatOutput = 0;
    putdata(ao(zeros(10000,1)));
  2. Запустите приобретение и дайте команду ожидания для приобретения с блоком MATLAB в течение двух секунд. Если приобретение не завершается за две секунды, тайм-аут происходит.

    start(ao)
    wait(ao,2)

Основанный на сеансе интерфейс

Фоновые работы, запущенные, не прерывая Окно Команды MATLAB. Можно использовать wait к блочным операциям в Окне Команды MATLAB во время фоновых работ.

  1. Создайте сеанс приобретения, добавьте канал аналогового выхода.

    s = daq.createSession('ni');
    addAnalogOutputChannel(s,'Dev1','ao0','Voltage');
  2. Установите уровень сеанса на 8 000.

    s.Rate = 8000
  3. Очередь некоторые выходные данные.

    queueOutputData(s,zeros(10000,1));	
  4. Запустите приобретение и выпустите wait с блоком MATLAB. Если операция не завершается за 2 секунды, тайм-аут происходит.

    startBackground(s);
    s.wait(2);

Считайте импульсы

Можно считать импульсы, чтобы синхронизировать сбор данных.

Устаревший интерфейс

Вы не можете использовать, отвечают на каналы ввода и вывода устаревшим интерфейсом. Можно использовать внутренние часы подсистемы аналогового входа, чтобы создать порог и искать последовательные выборки, которые находятся на противоположных сторонах порога. Это дает, вы заканчиваетесь похожие на использование встречного входного канала.

ai = analoginput('nidaq');
addchannel(ai,1);
threshold = 3.5;
offsetData = [data(2:end);NaN];
risingEdge = find(data < threshold & offsetData > threshold);
fallingEdge = find(data > threshold & offsetData < threshold);

Основанный на сеансе интерфейс

Считайте ребра импульса с помощью встречного входного канала на устройстве.

s.createSession('ni');
addCounterInputChannel(s,'Dev1','ctr0','EdgeCount');
c = inputSingleScan(s);
Для просмотра документации необходимо авторизоваться на сайте