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