Эта тема помогает вам перейти свой код от устаревшего интерфейса до основанного на сеансе интерфейса.
Запустите событие, когда количество сканирований превысит заданное значение
Используйте тайм-аут, чтобы блокировать 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);