В этом примере показано, как сгенерировать сигналы на аналоговом выходе текущий канал для устройства NI, способного к текущей производительности с помощью основанного на сеансе интерфейса.
Чтобы обнаружить устройство что текущие выходные параметры, кликните по имени устройства в списке в Командном окне или получите доступ к устройству в массиве, возвращенном daq.getDevices
команда. Этот пример использует устройство NI 9265. Это - 4 аналоговых выхода канала текущий модуль и является устройством 5 в нашей системе.
devices = daq.getDevices devices(8)
devices = Data acquisition devices: index Vendor Device ID Description ----- ------ --------- -------------------------------- 1 ni cDAQ1Mod1 National Instruments NI 9205 2 ni cDAQ1Mod2 National Instruments NI 9263 3 ni cDAQ1Mod3 National Instruments NI 9234 4 ni cDAQ1Mod4 National Instruments NI 9201 5 ni cDAQ1Mod5 National Instruments NI 9402 6 ni cDAQ1Mod6 National Instruments NI 9213 7 ni cDAQ1Mod7 National Instruments NI 9219 8 ni cDAQ1Mod8 National Instruments NI 9265 9 ni Dev1 National Instruments PCIe-6363 10 ni Dev2 National Instruments NI ELVIS II ans = ni: National Instruments NI 9265 (Device ID: 'cDAQ1Mod8') Analog output subsystem supports: 0 to +0.020 A range Rates from 0.6 to 100000.0 scans/sec 4 channels ('ao0','ao1','ao2','ao3') 'Current' measurement type This module is in slot 8 of the 'cDAQ-9178' chassis with the name 'cDAQ1'.
Создайте сеанс и используйте addAnalogOutputChannel
команда, чтобы добавить аналоговый выход образовывает канал на сеанс для генерации. В целях этого примера добавьте два текущих канала и измените сеанс Rate
к 100 сканированиям в секунду.
s = daq.createSession('ni') addAnalogOutputChannel(s,'cDAQ1Mod8',0, 'Current'); addAnalogOutputChannel(s,'cDAQ1Mod8',1, 'Current'); s.Rate = 100
s = Data acquisition session using National Instruments hardware: Will run for 1 second (1000 scans) at 1000 scans/second. No channels have been added. s = Data acquisition session using National Instruments hardware: No data queued. Will run at 100 scans/second. Number of channels: 2 index Type Device Channel MeasurementType Range Name ----- ---- --------- ------- --------------- ------------- ---- 1 ao cDAQ1Mod8 ao0 Current 0 to +0.020 A 2 ao cDAQ1Mod8 ao1 Current 0 to +0.020 A
Каналы NI 9265 имеют область значений от 0 до 20 мА. Сползайте от 0 до 20 мА на одном канале и установите постоянных 10 мА на другом канале. Сгенерируйте 1 000 точек данных для каждого канала так, чтобы мы получили 10 секунд выходных данных.
data1 = (0.00002:0.00002:0.02)'; % ramp up plot(data1) % plot the data for channel 1 hold on grid on xlabel('Data Points') ylabel('Amps') data2 = repmat(0.01, 1000); % constant value matrix data2 = data2(:, 1); % take first column for constant 10 mA output plot(data2, 'r') % plot the data for channel 2 legend('data1','data2') data = [data1 data2]; % you must have one column of data for each output channel
queueOutputData
команда присоединяет данные к сеансу.
queueOutputData(s,data) % Queuing the data for output
startForeground
команда запускает сеанс. Поскольку этот сеанс в качестве примера включает только аналоговый выход, эта команда запускает выход и ожидает операции, чтобы завершиться.
s.startForeground();
Чтобы уменьшать длительность выхода, можно увеличить частоту развертки. В течение одной секунды выхода измените Rate
к 1 000 выборок в секунду. Это исчерпает данные с очередями через одну секунду.
s.Rate = 1000; queueOutputData(s,data) % Queue the output data again s.startForeground(); % start the output