Этот пример показывает, как получить форму волны от обоих каналов Keysight технологии цифровой преобразователь M9210A с помощью драйвера IVI-C и отобразить его в MATLAB. Программное обеспечение Instrument Control Toolbox™ поддерживает связь с инструментами через IVI драйверов. Для полного списка поддерживаемого оборудования посетите страницу поддерживаемого оборудования Instrument Control Toolbox™.
Этот пример был протестирован на Microsoft® Windows 7 и Windows XP Systems. Комплект Agilent IO и версия драйвера 1.2.2.0 MD1 IVI должны быть установлены.
Гарантируйте, что инструмент был сконфигурирован в утилите VISA (такой как Эксперт по Связи Agilent), прежде чем вы выполните этот пример.
Используйте 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 будет установлен, он обнаружится в списке installedDrivers
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, драйвер 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);
После того, как связь устанавливается, свойства, такие как входной импеданс, число точек на запись, и уровень выборки должен быть установлен до получения форм волны на цифровом преобразователе. Значения перечислимых используемых типов данных могут быть найдены в документации драйвера 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
используется. Метод 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);
Функция 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');
После конфигурирования цифрового преобразователя и выборки/чтения данных из него, объект устройства должен быть закрыт и удален из рабочей области
disconnect(myDigitizer);
delete(myDigitizer);
clear myDigitizer;
Этот пример показывает настройку и приобретение данных из Цифрового преобразователя с помощью IVI драйверов. Если измеренная форма волны получена из инструмента, MATLAB может использоваться, чтобы визуализировать и выполнить исследования данных, пользующихся богатой библиотекой функций в Signal Processing Toolbox™ и Системах связи Toolbox™. Используя Instrument Control Toolbox™, возможно автоматизировать управление инструментов, и, создать системы тестирования, которые используют MATLAB, чтобы выполнить исследования, которые не могут быть возможным использованием встроенной возможности оборудования.