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