В этом примере показано, как сгенерировать сигналы на аналоговом выходе текущий канал для устройства 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