Рабочие процессы сеанса с демонстрационным адаптером

Обнаружение устройств и настройка

Когда вы создаете сеанс сбора данных, он применяется к определенному поставщику и позволяет вам добавлять применимые устройства и каналы. Открытие и настройка являются частью подготовки вашего сеанса. Этот пример показывает типичную настройку сеанса с демонстрационным адаптером.

Примечание

Чтобы включить демонстрационный адаптер в вашей установке, смотрите, что инструкции во Включают Демонстрационный Адаптер.

v = daq.getVendors
v = 

Number of vendors: 2

index ID Operational         Comment         
----- -- ----------- ------------------------
1     ni false       Click here for more info
2     mw true        MathWorks

Properties, Methods, Events

Additional data acquisition vendors may be available as 
downloadable support packages.
Open the Support Package Installer to install additional vendors.
d = daq.getDevices
d = 

Data acquisition devices:

index Vendor Device ID    Description    
----- ------ --------- ------------------
1     mw     MWDev0    MathWorks MW314159
2     mw     MWDev1    MathWorks MW314159
3     mw     MWDev2    MathWorks MW628318

Со списком доступных поставщиков и устройств, можно создать сеанс и добавить каналы в него.

s = daq.createSession('mw')
s = 

Data acquisition session using MathWorks hardware:
   Will run for 1 second (1000 scans) at 1000 scans/second.
   No channels have been added.
   
Properties, Methods, Events

Чтобы видеть детали об одном из устройств, используйте его индекс, чтобы получить доступ к массиву устройств.

d(1)
mw: MathWorks MW314159 (Device ID: 'MWDev0')
   Analog input subsystem supports:
      3 ranges supported
      Rates from 0.1 to 1000000.0 scans/sec
      2 channels ('ai0','ai1')
      'Voltage','Current' measurement types
   
   Analog output subsystem supports:
      3 ranges supported
      Rates from 0.1 to 1000000.0 scans/sec
      2 channels ('ao0','ao1')
      'Voltage','Current' measurement types
   

Первые и вторые устройства являются той же моделью, таким образом, этот пример использует один во входе ('ai0' и другой для выхода ('ao0').

ch1 = addAnalogInputChannel(s,'MWDev0','ai0','voltage')
ch1 = 

Data acquisition analog input voltage channel 'ai0' on device 'MWDev0':

       Coupling: DC
 TerminalConfig: Differential
          Range: -10 to +10 Volts
           Name: ''
             ID: 'ai0'
         Device: [1x1 daq.sdk.DeviceInfo]
MeasurementType: 'Voltage'
ch2 = addAnalogOutputChannel(s,'MWDev1','ao0','voltage')
ch2 = 

Data acquisition analog output voltage channel 'ao0' on device 'MWDev1':

 TerminalConfig: SingleEnded
          Range: -10 to +10 Volts
           Name: ''
             ID: 'ao0'
         Device: [1x1 daq.sdk.DeviceInfo]
MeasurementType: 'Voltage'

Просмотрите сеанс, чтобы видеть настройку.

s
s = 

Data acquisition session using MathWorks hardware:
   No data queued.  Will run at 1000 scans/second.
   Number of channels: 2
      index Type Device Channel   MeasurementType        Range       Name
      ----- ---- ------ ------- ------------------- ---------------- ----
      1     ai   MWDev0 ai0     Voltage (Diff)      -10 to +10 Volts
      2     ao   MWDev1 ao0     Voltage (SingleEnd) -10 to +10 Volts

Сеанс теперь готов отправить и получить одно сканирования или потоки данных.

Один ввод и вывод сканирования

Одно сканирование - когда вы отправляете выход или читаете вход из каналов в один момент вовремя. Передача данных обработана слоем MEX адаптера. Для демонстрационного адаптера это содержится в файле MEX matlabroot\toolbox\daq\daqsdk\bin\win64\DemoAdaptor.mexw64, который обеспечивает функциональность, показанную в следующей схеме.

Чтобы сгенерировать один аналоговый выход сканирования 1,25 В, введите следующий код.

outputSingleScan(s,1.25)
DemoDriver output: 1.25

Считать одно сканирование аналогового входа:

data = inputSingleScan(s)

Только с одним входным каналом это возвращает только одно значение. Если вы добавляете, что больше аналогового входа образовывает канал на сеанс, inputSingleScan возвращает вектор, с элементом для каждого канала.

ch3 = addAnalogInputChannel(s,'MWDev2','ai0','voltage');
data = inputSingleScan(s)
data =

     0   200

Удалите каналы из сеанса, в котором вы больше не нуждаетесь.

removeChannel(s,[1 2 3]);

Потоковая передача ввода и вывода

Потоковая передача включает последовательность данных о вводе или выводе по каждому каналу, обычно форма волны, состоявшая из многих сканирований. Потоковая передача может быть выполнена на переднем плане (блокирующийся MATLAB, пока поток не завершен), или в фоновом режиме (запускающийся асинхронно, в то время как MATLAB продолжается). Потоковая передача может включить больше сканирований или выборок, чем память устройства может содержать. По этим причинам, использование тулбокса, передающее каналы потоком, чтобы разместить поток данных. Это позволяет данным быть отправленными и полученными, не вызывая переполнение памяти, и не прерывая MATLAB.

Используйте MWDev2, чтобы сгенерировать синусоиду на 100 Гц в фоновом режиме в течение 10 секунд. Частота дискретизации по умолчанию является 1 000 сканирований в секунду; это составляет 1 000 циклов для 10 000 выборок.

ch4 = addAnalogOutputChannel(s,'MWDev2','ao1','voltage')
ch4 = 

Data acquisition analog output voltage channel 'ao1' on device 'MWDev2':

 TerminalConfig: SingleEnded
          Range: -10 to +10 Volts
           Name: ''
             ID: 'ao1'
         Device: [1x1 daq.sdk.DeviceInfo]
MeasurementType: 'Voltage'
Y = sin(linspace(0,2*pi*1000,10000))' % 1000 cycles for 10000 samples;
queueOutputData(s,Y);
s
s = 

Data acquisition session using MathWorks hardware:
   Will run for 10000 scans (10 seconds) at 1000 scans/second.
   Number of channels: 1
      index Type Device Channel   MeasurementType        Range       Name
      ----- ---- ------ ------- ------------------- ---------------- ----
      1     ao   MWDev2 ao1     Voltage (SingleEnd) -10 to +10 Volts

Отображение сеанса теперь указывает на количество сканирований с очередями, и сколько времени это запустится, чтобы вывести все данные. Можно запустить выход.

startBackground(s)
s.IsRunning
  logical

   1
pause(10)
s.IsRunning
  logical

   0

Смотрите также

Функции

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте