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

Этот пример показывает, как постоянно генерировать сигналы. Непрерывная генерация фона зависит от коллбэков, чтобы обеспечить непрерывную постановку данных в постановку в очередь и реагировать на любые ошибки по мере их возникновения. В этом примере вы генерируете с устройства 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")

Похожие темы