exponenta event banner

Непрерывно генерировать сигналы в фоновом режиме

В этом примере показано, как непрерывно генерировать сигналы. Непрерывное формирование фона зависит от обратных вызовов для обеспечения возможности непрерывной организации очереди данных и реагирования на любые ошибки по мере их возникновения. В этом примере создается с устройства NI 9263 с идентификатором cDAQ1Mod2.

Функция обратного вызова настроена на выполнение при необходимости определенного количества сканирований.

Создание объекта NI DataAcquisition и добавление аналогового канала выходного напряжения cDAQ1Mod2:

d = daq("ni");
addoutput(d,"cDAQ1Mod2","ao0","Voltage");

Укажите идентификатор канала на NI-устройствах, используя имя терминала, например 'ao1', или числовой эквивалент, например, 1.

Поставить в очередь столбец выходных данных.

preload(d,linspace(1,10,1000)');

Создайте простую функцию обратного вызова для одновременной загрузки данных 1000 выборок. Сохраните файл функции как loadMoreData.m в рабочей папке:

function loadMoreData(obj,evt)
    % obj is the DataAcquisition object passed in. evt is not used.
    write(obj,linspace(1,10,1000)');
end

Определите ScansRequiredFcn для вызова функции loadMoreData:

d.ScansRequiredFcn = @loadMoreData;

Этот обратный вызов выполняется всякий раз, когда число сканирований в очереди падает ниже порогового значения, определенного свойством ScansRequiredFcnCount. Пороговое значение по умолчанию определяется как 0,5 секунды данных с частотой сканирования по умолчанию. Другими словами, со значением по умолчанию Rate при 1000 сканирований в секунду, по умолчанию ScansRequiredFcnCount значение равно 500. Когда устройство генерирует выходной сигнал, когда данные в очереди опускаются ниже 500 сканирований, оно запускает ScansRequiredFcn.

d.ScansRequiredFcnCount
ans = 

    500

Сформировать непрерывный выходной сигнал:

start(d,"Continuous")

Во время создания можно выполнять другие команды MATLAB ®. В этом примере введите pause, что заставляет командную строку MATLAB ждать нажатия любой клавиши.

pause

Совет

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

start(d,"RepeatOutput")

Связанные темы