В этом примере показано, как инициализировать драйвер, прочитать несколько свойств драйвера, сгенерировать формы волны с помощью генератора формы Agilent Technologies 3352x и вывести результат в MATLAB ®.
Этот пример требует следующего:
Библиотеки Keysight IO версии 17.1 или новее
Keysight 335XX/ 336XX Function/Произвольный Генератор сигналов IVI драйвер версии 2.2.1.0 или новее
Здесь перечисляются драйверы 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'
% Create the MATLAB instrument driver makemid('Ag3352x','Ag3352x.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('Ag3352x.mdd', 'GPIB0::01::INSTR','optionstring','simulate=true'); % Connect driver instance connect(myInstrument);
% These values are defined in the driver's header file 'Ag3352x.h'
IVI_ATTR_BASE = 1000000;
IVI_SPECIFIC_ATTR_BASE = IVI_ATTR_BASE + 150000;
IVI_CLASS_ATTR_BASE = IVI_ATTR_BASE + 250000;
AG3352X_ATTR_CHANNEL_AM_MODE = IVI_SPECIFIC_ATTR_BASE + 46;
AG3352X_ATTR_AM_INTERNAL_DEPTH = IVI_CLASS_ATTR_BASE + 403;
AG3352X_ATTR_AM_INTERNAL_FREQUENCY = IVI_CLASS_ATTR_BASE + 405;
AG3352X_VAL_AM_AMPLITUDE_MODULATION_MODE_ON = 0;
AG3352X_VAL_WFM_SINE = 1;
AG3352X_VAL_AM_INTERNAL = 0;
AG3352X_VAL_AM_INTERNAL_SINE = 1;
Запросите информацию о драйвере и приборе
DriverIdentification = get(myInstrument,'Inherentiviattributesdriveridentification'); InstrumentIdentification = get(myInstrument,'Inherentiviattributesinstrumentidentification'); Utility = get(myInstrument, 'Utility'); 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: 2.2.1.0 Vendor: Agilent Technologies Description: IVI driver for the Agilent 33500 family of Function/Arbitrary Waveform Generators [Compiled for 64-bit.] InstrumentModel: 33522B FirmwareRev: Sim2.2.1.0
% Clears all event registers and error queue DriverStatus = get(myInstrument, 'Driverstatus'); invoke(DriverStatus, 'statusclear'); %Places the instrument in a known state Utility = get(myInstrument, 'Utility'); invoke(Utility, 'reset'); % Configures standard waveform generation % AMPLITUDE is set to 5 V,DCOFFSET is set to 0 V,FREQUENCY is set to 1 MHz, % STARTPHASE is set to 0 degree ConfigurationStandardWaveform = get(myInstrument, 'Configurationstandardwaveform'); invoke(ConfigurationStandardWaveform, 'configurestandardwaveform', 'Channel1',AG3352X_VAL_WFM_SINE,5,0,1000000,0); % Enable amplitude modulation ConfigurationAmplitudeModulation = get(myInstrument, 'Configurationamplitudemodulation'); invoke(ConfigurationAmplitudeModulation, 'configureamenabled', 'Channel1',true); % Configures the source of the AM modulating waveform to be internal invoke(ConfigurationAmplitudeModulation, 'configureamsource', 'Channel1',AG3352X_VAL_AM_INTERNAL); % Configures internal amplitude modulating waveform source DEPTH = 50; AM_FREQUENCY = 10000; invoke(ConfigurationAmplitudeModulation, 'configureaminternal',DEPTH,AG3352X_VAL_AM_INTERNAL_SINE,AM_FREQUENCY); % Enable signal output Enabled = true; ConfigurationGeneral = get(myInstrument, 'Configurationgeneral'); invoke(ConfigurationGeneral, 'configureoutputenabled', 'Channel1',Enabled);
% 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);
Этот пример показывает настройку и генерацию формы волны от генератора формы волны с помощью драйвера IVI. Используя Instrument Control Toolbox™, можно автоматизировать управление инструментами, и, создать тестовые системы, которые используют MATLAB для выполнения анализа, который может быть невозможен с помощью встроенной возможности оборудования.