Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

Generate AM Waveforms on Keysight® 3352x Waveform Generator using the IVI-C Driver

This example shows how to initialize the driver, read a few properties of the driver, generate waveforms using Agilent Technologies 3352x waveform generator and output the result in MATLAB®.

Requirements

This example requires the following:

  • Keysight IO libraries version 17.1 or newer

  • Keysight 335XX / 336XX Function / Arbitrary Waveform Generator IVI driver version 2.2.1.0 or newer

Enumerate Available IVI-C Drivers on the Computer

This enumerates the IVI drivers that have been installed on the computer.

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 MATLAB Instrument Driver And Connect to the Instrument

% 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);

Attributes and Variables Definition

% 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;

Get General Device Properties

Query information about the driver and instrument

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
 

Create AM Waveform

% 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);

Display Any Errors from the Driver

% 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 Device Object and Clean Up

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

Additional Information:

This example shows the setup and generating of waveforms from a waveform generator using the IVI driver. Using Instrument Control Toolbox™, it is possible to automate control of instruments, and, build test systems that use MATLAB to perform analyses that may not be possible using the built-in capability of the hardware.

Was this topic helpful?