Эта тема помогает вам перейти свой код от устаревшего интерфейса до основанного на сеансе интерфейса.
Запустите событие, когда количество сканирований превысит заданное значение
Используйте тайм-аут, чтобы блокировать MATLAB, в то время как операция завершается
Эта таблица приводит устаревшие команды для общих рабочих процессов и их соответствующие основанные на сеансе команды.
Для этого | Устаревшая команда | Основанная на сеансе команда |
---|---|---|
Найдите поддерживаемое оборудование доступным для вашей системы. |
| daq.getDevices |
Зарегистрированный адаптер DAQ. | daqregister | Вы не должны указывать адаптер, если вы используете основанный на сеансе интерфейс. |
Сбросьте MATLAB к начальному состоянию. | daqreset | daqreset |
Узнайте недавно соединенное оборудование. | Закройте 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]; |
Используя устаревший интерфейс, вы находите оборудование доступным для вашей системы, создаете объект аналогового входа и запускаете приобретение.
Найдите оборудование доступным для вашей системы.
d = daqhwinfo;
Создайте объект аналогового входа и добавьте канал с помощью устройства National Instruments® с ID Dev1
.
ai = analoginput('nidaq','Dev1'); addchannel(ai,1)
Установите частоту дискретизации на 8 000 и запустите канал.
ai.SampleRate = 8000; start(ai)
Используя основанный на сеансе интерфейс, вы создаете сеанс поставщика и добавляете каналы в сеанс. Вы можете использовать любое устройство или шасси от того же поставщика, доступного для вашей системы, и можете добавить комбинацию аналога, цифрового, и противостоять каналам ввода и вывода. Все каналы действуют вместе, когда вы запускаете сеанс.
Для устройств, которые поддерживают обе связи переменного и постоянного тока на сеансе, взаимодействуют через интерфейс, связь по умолчанию является связью DC, устанавливая Coupling
канала свойство к
'DC'
. Для тех же устройств в устаревшем интерфейсе значением по умолчанию была связь AC.
Найдите оборудование доступным для вашей системы.
d = daq.getDevices
Создайте сеанс для Национальных Инструментальных устройств.
s = daq.createSession('ni');
Установите частоту дискретизации сеанса на 8 000.
s.Rate = 8000
Добавьте канал аналогового входа для устройства с ID Dev1 для измерения напряжения, и затем запустите приобретение.
addAnalogInputChannel(s,'Dev1',1,'Voltage'); startForeground(s);
Получите аналоговые данные с помощью аппаратных триггеров.
Аналоговые операции сконфигурированы, чтобы инициировать сразу по умолчанию. Необходимо задать hwDigital
инициируйте тип.
Создайте объект аналогового входа и добавьте два канала
Создайте объект аналогового входа и добавьте два канала
ai = analoginput('nidaq','Dev1'); chan = addchannel(ai,0:1)
Укажите диапазоны канала, чтобы масштабировать данные однородно. Сконфигурируйте входной тип, чтобы быть SingleEnded
терминал.
chan.InputRange = [-10 10];
chan.UnitsRange = [-10 10];
chan.SensorRange = [-10 10];
chan.InputType = 'SingleEnded';
Задайте триггерный тип, источник и условие. Установите TriggerRepeat
к 0.
ai.TriggerType = 'HwDigital'; ai.HwDigitalTriggerSource = 'PFI0'; ai.TriggerCondition = 'PositiveEdge'; ai.TriggerRepeat = 0;
Задайте уровень и длительность.
actualRate = setverify(ai,'SampleRate',50000);
duration = 0.01;
ai.SamplesPerTrigger = duration*actualRate;
Запустите канал, ожидайте, пока канал не получает заданный объем данных, и получите данные.
start(ai); wait(ai,duration+1); [data,timestamps] = getdata(ai);
Отобразите данные на графике.
plot(timestamps,data)
Можно задать внешнее событие, чтобы инициировать сбор данных с помощью основанного на сеансе интерфейса.
Создайте сеанс и добавьте два канала аналогового входа.
s = daq.createSession('ni'); ch = addAnalogInputChannel(s,'Dev1',0:1,'Voltage');
Сконфигурируйте терминал и область значений каналов на сеансе.
ch(1).TerminalConfig = 'SingleEnded'; ch(1).Range = [-10.0 10.0]; ch(2).TerminalConfig = 'SingleEnded'; ch(2).Range = [-10.0 10.0];
Создайте внешнюю триггерную связь и установите триггер запускать одно время.
addTriggerConnection(s,'External','Dev1/PFI0','StartTrigger'); s.Connections(1).TriggerCondition = 'RisingEdge'; s.TriggersPerRun = 1;
Установите уровень и длительность приобретения.
s.Rate = 50000; s.DurationInSeconds = 0.01;
Получите данные на переднем плане и отобразите данные на графике.
[data,timestamps] = startForeground(s); plot(timestamps,data)
Можно регистрировать данные к диску и использовать daqread
считывать данные назад.
Создайте объект аналогового входа и добавьте два канала.
ai = analoginput('winsound');
ch = addchannel(ai,0:1);
Задайте 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';
Запустите приобретение, ожидайте длительности времен приобретения количество триггеров для приобретения, чтобы завершиться. Затем извлеките все данные, хранимые в файле журнала как пары шага расчета.
start(ai)
wait(ai, (ai.TriggerRepeat+1)*duration + 1)
[data,time] = daqread('file00.daq');
Основанный на сеансе интерфейс не имеет заданного формата файла для регистрации данных. Можно записать в файл в режиме двоичного счета или сохранить данные к MAT-файлу.
Создайте сеанс и добавьте четыре канала аналогового входа из Dev1
.
s = daq.createSession('ni'); ch = addAnalogInputChannel(s,'Dev1',0:3,'Voltage');
Установите ту же область значений и терминалы для всех каналов.
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';
Установите уровень сеанса и длительность приобретения.
s.Rate = 50000; s.DurationInSeconds = 0.01;
Запустите приобретение и отобразите данные на графике.
[data,timestamps] = startForeground(s); figure plot(timestamps,data)
Сохраните полученные данные к MAT-файлу.
fileName = 'data.mat'; save(fileName,'timestamps','data')
Загрузите данные из файла в рабочее пространство MATLAB.
savedData = load('data.mat');
figure;
plot(savedData.timestamps,savedData.data)
Можно указать диапазон измерения подсистемы аналогового входа.
Создайте объект аналогового входа ai
для устройства National Instruments®, и добавляют два канала в него.
ai = analoginput('nidaq','Dev1'); addchannel(ai,0:1);
Сконфигурируйте оба канала, чтобы принять входные сигналы в диапазоне от-10 вольт до 10 вольт.
ai.Channel.InputRange = [-10 10];
Создайте сеанс и добавьте канал аналогового входа.
s = daq.createSession('ni'); ch = addAnalogInputChannel(s,'Dev1','ai1','Voltage')
Установите диапазон от-10 вольт до 10 вольт.
ch.Range = [-10 10];
Можно задать приобретение, чтобы смотреть за конкретным количеством сканирований, чтобы произойти и запустить событие, если приобретение превышает конкретное количество.
Можно использовать BufferingConfig
свойство задать выделенную память для заданного канала. Если количество полученных выборок превышает выделенную память, то ошибка возвращена.
Создайте объект аналогового входа ai
для Национального Инструментального устройства и добавляют канал в него.
ai = analoginput('nidaq','Dev1'); ch = addchannel(ai,0);
Установите частоту дискретизации на 800 000.
ai.SampleRate = 800000)
Установите bufferingConfigMode
к 'Manual'
и набор bufferingConfig
значение.
ai.bufferingConfigMode = 'Manual';
ai.bufferingConfig = [512 30];
Используйте NotifyWhenDataAvailableExceeds
свойство запустить DataAvailable
событие.
Создайте сеанс приобретения, добавьте канал аналогового входа.
s = daq.createSession('ni'); addAnalogInputChannel(s,'Dev1','ai0','Voltage');
Установите Уровень на 800 000 сканирований в секунду, который автоматически устанавливает DataAvailable
уведомление, чтобы автоматически стрелять 10 раз в секунду.
s.Rate = 800000; s.NotifyWhenDataAvailableExceeds
ans = 80000
Увеличьте NotifyWhenDataAvailableExceeds
к 160 000.
s.NotifyWhenDataAvailableExceeds = 160000;
Создайте объект 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)));
Запустите приобретение и дайте команду ожидания для приобретения с блоком MATLAB в течение двух секунд. Если приобретение не завершается за две секунды, тайм-аут происходит.
start(ao) wait(ao,2)
Фоновые работы, запущенные, не прерывая Окно Команды MATLAB. Можно использовать wait
к блочным операциям в Окне Команды MATLAB во время фоновых работ.
Создайте сеанс приобретения, добавьте канал аналогового выхода.
s = daq.createSession('ni'); addAnalogOutputChannel(s,'Dev1','ao0','Voltage');
Установите уровень сеанса на 8 000.
s.Rate = 8000
Очередь некоторые выходные данные.
queueOutputData(s,zeros(10000,1));
Запустите приобретение и выпустите 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);