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