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