Генерируйте сигналы в фоновом режиме постоянно

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

Функция обратного вызова сконфигурирована, чтобы запуститься, когда определенное число сканов требуется.

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

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

Задайте ID канала на устройствах NI с помощью терминального имени, как 'ao1', или числовой эквивалент как 1.

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

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

Создайте простую функцию обратного вызова, чтобы загрузить данные 1 000 выборок за один раз. Сохраните файл функции как 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 по умолчанию при 1 000 сканов в секунду, ScansRequiredFcnCount по умолчанию значение 500. Когда ваше устройство генерирует выходной сигнал, когда данные с очередями падают ниже 500 сканов, это инициировало ScansRequiredFcn.

d.ScansRequiredFcnCount
ans = 

    500

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

start(d,"Continuous")

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

pause

Совет

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

start(d,"RepeatOutput")

Похожие темы