Установите и измерьте напряжение канала DAC (сбор данных) на Keysight ® 34970A Switch с помощью драйвера IVI-C

В этом примере показано, как инициализировать драйвер, прочитать несколько свойств драйвера, идентифицировать установленные платы, установить выходное напряжение канала DAC и измерить напряжение постоянного тока с помощью Agilent Technologies 34970A модуля сбора/переключения данных и вывести результат в MATLAB ®.

Требования

Этот пример требует установки на компьютере следующего:

  • Библиотеки Keysight IO версии 17.1 или новее

  • Keysight 34970A, 34972A драйвер IVI модуля сбора данных 1.0.3.0 или более новый

Перечислите доступные драйверы IVI-C на компьютере

Здесь перечисляются драйверы IVI, установленные на компьютере.

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

  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'

Создайте драйвер прибора MATLAB и соединитесь с инструментом

% Create the MATLAB instrument driver
makemid('Ag34970','Ag34970.mdd')

% Use icdevice with the MATLAB instrument driver name and instrument's
% resource name to create a device object. In this example the instrument
% is connected by GPIB at board index 0 and primary address 1.
myInstrument = icdevice('Ag34970.mdd', 'GPIB0::01::INSTR','optionstring','simulate=true');

% Connect driver instance
connect(myInstrument);

Получение общих свойств устройства

Запросите информацию о драйвере и приборе

Utility = get(myInstrument, 'Utility');
DriverIdentification = get(myInstrument,'Inherentiviattributesdriveridentification');
InstrumentIdentification = get(myInstrument,'Inherentiviattributesinstrumentidentification');
Revision = invoke(Utility, 'revisionquery');
Vendor = get(DriverIdentification, 'Specific_Driver_Vendor');
Description = get(DriverIdentification, 'Specific_Driver_Description');
InstrumentModel = get(InstrumentIdentification, 'Instrument_Model');
FirmwareRev = get(InstrumentIdentification, 'Instrument_Firmware_Revision');

% Print the queried driver properties
fprintf('Revision:        %s\n', Revision);
fprintf('Vendor:          %s\n', Vendor);
fprintf('Description:     %s\n', Description);
fprintf('InstrumentModel: %s\n', InstrumentModel);
fprintf('FirmwareRev:     %s\n', FirmwareRev);
fprintf(' \n');
Revision:        1.4.0.0 
Vendor:          Agilent Technologies
Description:     IVI driver for the Agilent 34970 data acquisition/switch unit. [Compiled for 64-bit.]
InstrumentModel: 34970A
FirmwareRev:     Sim1.4.0.0
 

Идентификация установленных плат

System = get(myInstrument, 'System');
for iLoop = 100:100:300
    CardType = invoke(System, 'systemgetcardtype', iLoop, 127);
    fprintf('Slot: %d  CardType: %s\n', iLoop, CardType);
    if regexp(CardType, ',34907A,')
        DacSlot = iLoop;
    end
    if regexp(CardType, ',34908A,')     % Single ended -- 40 channels
        MuxSlot = iLoop;
    end
    if regexp(CardType, ',34902A,')     % 16 channel Mux
        MuxSlot = iLoop;
    end
    if regexp(CardType, ',34901A,')
        MuxSlot = iLoop;
    end
end
fprintf('\n');
Slot: 100  CardType: HEWLETT-PACKARD,34901A,0,1.1 
Slot: 200  CardType: HEWLETT-PACKARD,34901A,0,1.1 
Slot: 300  CardType: HEWLETT-PACKARD,34907A,0,1.1 

Установите и измерите выходное напряжение канала DAC 5

% set DAC voltage to 2.345 V and Select channel 5 on the DAC card
DacVoltage = 2.345;
DacChannel = DacSlot+5;
if DacSlot ~= 0
    % Sets the output voltage level on the DAC channel 5
    Dac = get(myInstrument, 'Dac');
    invoke(Dac, 'dacsetvoltage', DacChannel,DacVoltage);
    % Gets the output voltage level on the DAC channel 5
    DacVoltage = invoke(Dac, 'dacgetvoltage', DacChannel);
    fprintf('DAC channel %d set to %.3f volts\n\n', DacChannel, DacVoltage);
else
    fprintf('34907A Multifunction Module not found\n\n');
end
DAC channel 305 set to 2.345 volts

Отображение ошибок

% If there are any errors, query the driver to retrieve and display them.
ErrorNum = 1;
while (ErrorNum ~= 0)
    [ErrorNum, ErrorMsg] = invoke(Utility, 'errorquery');
    fprintf('ErrorQuery: %d, %s\n', ErrorNum, ErrorMsg);
end
ErrorQuery: 0, No error. 

Отключите объект устройства и очистите

disconnect(myInstrument);
% Remove instrument objects from memory.
delete(myInstrument);

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

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

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