Сгенерируйте Сигналы на устройствах NI который Текущий Вывод

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