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

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

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

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

Для этого Устаревшая командаОснованная на сеансе команда
Найдите поддерживаемое оборудование доступным вашей системе.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);
Для просмотра документации необходимо авторизоваться на сайте