Чтение осциллограмм с помощью драйвера IVI-C M9210A Keysight ®

В этом примере показано, как получить форму волны от обоих каналов технологий Keysight M9210A дигитайзера с помощью драйвера IVI-C и отобразить ее в MATLAB. Программное обеспечение Instrument Control Toolbox™ поддерживает связь с инструментами через драйверы IVI. Полный список поддерживаемого оборудования можно найти на странице Instrument Control Toolbox™ поддерживаемого оборудования.

Введение

Этот пример был протестирован на системах Microsoft ® Windows 7 и Windows XP. Необходимо установить Agilent IO Suite и MD1 драйвер IVI версии 1.2.2.0.

Убедитесь, что инструмент был сконфигурирован в утилите VISA (такой как Agilent Connection Expert), прежде чем выполнять этот пример.

Получите идентификационную информацию об инструменте

Использование INSTRHWINFO для поиска строки ресурса инструмента

% Get the resource string from the Agilent VISA ObjectConstructorName and
% verify it is the one used to communicate with the instrument

agilentVisaInfo = instrhwinfo('visa', 'agilent');
resourceInfo = agilentVisaInfo.ObjectConstructorName
resourceInfo =

     []

Проверьте, что драйвер установлен

Если драйвер AgMD1 установлен, он появится в списке установленных драйверов

IviInfo = instrhwinfo('ivi');
installedDrivers = IviInfo.Modules
installedDrivers = 

  Columns 1 through 6

    'Ag33220'    'Ag3352x'    'Ag34410'    'Ag34970'    'Ag532xx'    'AgAC6800'

  Columns 7 through 11

    'AgE36xx'    'AgInfiniiVision'    'AgMD1'    'AgRfSigGen'    'AgXSAn'

  Columns 12 through 13

    'KtRFPowerMeter'    'rsspecan'

Импорт драйвера IVI-C в MATLAB

Чтобы использовать установленный драйвер IVI-C от MATLAB, необходимо создать драйвер MATLAB. Драйвер MATLAB должен быть создан только один раз и должен существовать в пути MATLAB

% Create the MATLAB driver
makemid('AgMD1', 'AgMD1.mdd', 'ivi-c');

Инициализируйте объект драйвера и подключитесь к оцифровщику

Используя драйвер MATLAB, сначала необходимо создать объект устройства. С помощью объекта устройства устанавливается соединение с дигитайзером из MATLAB. В этом примере драйвер используется в режиме симуляции. Установите Simulate = false в переменной initOptions ниже, чтобы запустить этот пример с фактическим инструментом

initOptions = 'Simulate=true, DriverSetup= Cal=0, Trace=false, model=M9210A';
visaAddress = 'PXI17::10::0::INSTR';
myDigitizer = icdevice('AgMD1.mdd', visaAddress, 'optionstring', initOptions);

% Connect to the digitizer using the device object created above
connect(myDigitizer);

Настройте цифровое устройство для получения формы волны на каналах 1 и 2

После установления соединения должны быть установлены такие свойства, как входной импеданс, число точек на запись и частота дискретизации, до получения формы волны на цифровом преобразователе. Значения используемых перечисленных типов данных можно найти в MD1 документации драйвера

% Abort present acquisition if any
invoke(myDigitizer.Waveformacquisitionlowlevelacquisition, 'abort');

% Set the input impedance values of the individual channels
myDigitizer.RepCapIdentifier = 'Channel1';
myDigitizer.Channel.Input_Impedance = 50; % (Ohms)

myDigitizer.RepCapIdentifier = 'Channel2';
myDigitizer.Channel.Input_Impedance = 50; % (Ohms)

% Set the acquisition parameters
numberOfRecords = 1;
ptsPerRecord = 1e4;
samplingRate = 2e9;

invoke(myDigitizer.Configurationacquisition, 'configureacquisition',...
       numberOfRecords, ptsPerRecord, samplingRate);

% Set the individual channel parameters
Range = 0.2;
Offset = 0.0;
Coupling = 1;
Enabled = true;
invoke(myDigitizer.Configurationchannel, 'configurechannel', 'Channel1',...
       Range, Offset, Coupling, Enabled);
invoke(myDigitizer.Configurationchannel, 'configurechannel', 'Channel2',...
       Range, Offset, Coupling, Enabled);

% Set the trigger source, and trigger type
myDigitizer.RepCapIdentifier = 'Channel1';
myDigitizer.Trigger.Active_Trigger_Source = 'External1';

% The hex value can be found in the MD1 driver documentation
AGMD1_VAL_IMMEDIATE_TRIGGER = hex2dec('000003E9');
myDigitizer.Trigger.Trigger_Type = AGMD1_VAL_IMMEDIATE_TRIGGER;

% Determine the minimum amount of memory needed to fetch or read data from
% the digitizer for maximum performance
dataWidth = 64;
numRecords = 1;
offsetWithinRecord = 0;
numPointsPerRecord = ptsPerRecord;

arrayElements = invoke(myDigitizer.Waveformacquisitionlowlevelacquisition,...
                       'queryminwaveformmemory', dataWidth, numRecords,...
                       offsetWithinRecord, numPointsPerRecord);
WaveformArray = zeros(arrayElements, 1);

Получение данных

Чтобы получить данные от канала 1, READWAVEFORMREAL64 используется метод. The READWAVEFORMREAL64 способ инициирует прием сигнала как по каналу 1, так и по каналу 2, но возвращает форму волны только для канала 1. Следуя этому, чтобы считать уже полученную форму волны от канала 2, FETCHWAVEFORMREAL64 используется метод

maxTimeMilliseconds = 50;

% Initiate an acquisition on all enabled channels, wait (up to
% |maxTimeMilliseconds|) for the acquisition to complete, and return the
% waveform for this channel

[sig1, ActualPoints, FirstValidPoint, ~, ~, ~, XIncrement] = ...
    invoke(myDigitizer.Waveformacquisition, 'readwaveformreal64', ...
    'Channel1', maxTimeMilliseconds, arrayElements, WaveformArray);
sig1 = sig1(FirstValidPoint+1:FirstValidPoint+ActualPoints);

% |FETCHWAVEFORMREAL64| returns a previously acquired waveform for the selected
% channel. An acquisition must be made prior to calling this method. For
% this case the previous call to |READWAVEFORMREAL64| has performed the waveform
% acquisition already. Call this method separately for each channel

[sig2, ActualPoints, FirstValidPoint, ~, ~, ~, ~] = ...
    invoke(myDigitizer.Waveformacquisitionlowlevelacquisition, ...
    'fetchwaveformreal64', 'Channel2', arrayElements, WaveformArray);
sig2 = sig2(FirstValidPoint+1:FirstValidPoint+ActualPoints);

Постройте график полученных сигналов

The SUBPLOT функция MATLAB используется для построения графика сигналов, считанных с канала 1 и канала 2 цифрового преобразователя

% Create the time vector using the XIncrement value returned by the
% |READWAVEFORMREAL64| method
t = 0:XIncrement:(length(sig1)-1)*XIncrement;

figure;
% Plot the channel 1 waveform
subplot(2, 1, 1);
plot(t, sig1);
xlabel('Time (s)');
ylabel('Voltage (V)');
ylim([-.2 0.2]);
title('Digitizer Channel 1');

% Plot the channel 2 waveform
subplot(2, 1, 2);
plot(t, sig2);
xlabel('Time (s)');
ylabel('Voltage (V)');
ylim([-.2 0.2]);
title('Digitizer Channel 2');

Очистка - Удаление объекта MD1 Device

После настройки дигитайзера и извлечения/чтения данных с него объект устройства нужно закрыть и удалить из рабочей области

disconnect(myDigitizer);
delete(myDigitizer);
clear myDigitizer;

Дополнительная информация:

Этот пример показывает настройку и сбор данных от цифрового преобразователя с помощью драйвера IVI. После извлечения измеренной формы волны из прибора MATLAB может использоваться, чтобы визуализировать и выполнить анализ данных, используя богатую библиотеку функций в Signal Processing Toolbox™ и Коммуникационные системы Toolbox™. Используя Instrument Control Toolbox™, можно автоматизировать управление инструментами, и, создать тестовые системы, которые используют MATLAB для выполнения анализа, который может быть невозможен с помощью встроенной возможности оборудования.

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