# Agilent 33500 Function/Arbitrary Waveform Generator Family

class `pymeasure.instruments.agilent.``Agilent33500`(adapter, **kwargs)

  Bases: `pymeasure.instruments.instrument.Instrument`

  Represents the Agilent 33500 Function/Arbitrary Waveform Generator family. Individual devices are represented by subclasses.

      generator = Agilent33500("GPIB::1")

      generator.shape = 'SIN'                 # Sets the output signal shape to sine
      generator.frequency = 1e3               # Sets the output frequency to 1 kHz
      generator.amplitude = 5                 # Sets the output amplitude to 5 Vpp
      generator.output = 'on'                 # Enables the output

      generator.shape = 'ARB'                 # Set shape to arbitrary
      generator.arb_srate = 1e6               # Set sample rate to 1MSa/s

      generator.data_volatile_clear()         # Clear volatile internal memory
      generator.data_arb(                     # Send data points of arbitrary waveform
          'test',
          range(-10000, 10000, +20),          # In this case a simple ramp
          data_format='DAC'                   # Data format is set to 'DAC'
      )
      generator.arb_file = 'test'             # Select the transmitted waveform 'test'

  property `amplitude`

    A floating point property that controls the voltage amplitude of the output waveform in V, from 10e-3 V to 10 V. Depends on the output impedance. Can be set.

  property `amplitude_unit`

    A string property that controls the units of the amplitude. Valid values are VPP (default), VRMS, and DBM. Can be set.

  property `arb_advance`

    A string property that selects how the device advances from data point to data point. Can be set to ‘TRIG<GER>’ or ‘SRAT<E>’ (default).

  property `arb_file`

    A string property that selects the arbitrary signal from the volatile memory of the device. String has to match an existing arb signal in volatile memore (set by data_arb()). Can be set.

  property `arb_filter`

    A string property that selects the filter setting for arbitrary signals. Can be set to ‘NORM<AL>’, ‘STEP’ and ‘OFF’.

  property `arb_srate`

    An floating point property that sets the sample rate of the currently selected arbitrary signal. Valid values are 1 µSa/s to 250 MSa/s (maximum range, can be lower depending on your device). This can be set.

  `beep`()

    Causes a system beep.

  property `burst_mode`

    A string property that controls the burst mode. Valid values are: TRIG<GERED>, GAT<ED>. This setting can be set.

  property `burst_ncycles`

    An integer property that sets the number of cycles to be output when a burst is triggered. Valid values are 1 to 100000. This can be set.

  property `burst_period`

    A floating point property that controls the period of subsequent bursts. Has to follow the equation burst_period > (burst_ncycles / frequency) + 1 µs. Valid values are 1 µs to 8000 s. Can be set.

  property `burst_state`

    A boolean property that controls whether the burst mode is on (True) or off (False). Can be set.

  `check_errors`()

    Read all errors from the instrument.

  `clear_display`()

    Removes a text message from the display.

  `data_arb`(arb_name, data_points, data_format='DAC')

    Uploads an arbitrary trace into the volatile memory of the device. The data_points can be given as comma separated 16 bit DAC values (ranging from -32767 to +32767), as comma separated floating point values (ranging from -1.0 to +1.0) or as a binary data stream. Check the manual for more information. The storage depends on the device type and ranges from 8 Sa to 16 MSa (maximum). TODO: Binary is not yet implemented

    Parameters

      - arb_name – The name of the trace in the volatile memory. This is used to access the trace.

      - data_points –

        Individual points of the trace. The format depends on the format parameter.

        format = ‘DAC’ (default): Accepts list of integer values ranging from -32767 to +32767. Minimum of 8 a maximum of 65536 points.

        format = ‘float’: Accepts list of floating point values ranging from -1.0 to +1.0. Minimum of 8 a maximum of 65536 points.

        format = ‘binary’: Accepts a binary stream of 8 bit data.

      - data_format – Defines the format of data_points. Can be ‘DAC’ (default), ‘float’ or ‘binary’. See documentation on parameter data_points above.

  `data_volatile_clear`()

    Clear all arbitrary signals from the volatile memory. This should be done if the same name is used continuously to load different arbitrary signals into the memory, since an error will occur if a trace is loaded which already exists in the memory.

  property `display`

    A string property which is displayed on the front panel of the device. Can be set.

  property `ext_trig_out`

    A boolean property that controls whether the trigger out signal is active (True) or not (False). This signal is output from the Ext Trig connector on the rear panel in Burst and Wobbel mode. Can be set.

  property `frequency`

    A floating point property that controls the frequency of the output waveform in Hz, from 1 uHz to 120 MHz (maximum range, can be lower depending on your device), depending on the specified function. Can be set.

  property `id`

    Reads the instrument identification

  property `offset`

    A floating point property that controls the voltage offset of the output waveform in V, from 0 V to 4.995 V, depending on the set voltage amplitude (maximum offset = (Vmax - voltage) / 2). Can be set.

  property `output`

    A boolean property that turns on (True, ‘on’) or off (False, ‘off’) the output of the function generator. Can be set.

  property `output_load`

    Sets the expected load resistance (should be the load impedance connected to the output. The output impedance is always 50 Ohm, this setting can be used to correct the displayed voltage for loads unmatched to 50 Ohm. Valid values are between 1 and 10 kOhm or INF for high impedance. No validator is used since both numeric and string inputs are accepted, thus a value outside the range will not return an error. Can be set.

  property `pulse_dutycycle`

    A floating point property that controls the duty cycle of a pulse waveform function in percent, from 0% to 100%. Can be set.

  property `pulse_hold`

    A string property that controls if either the pulse width or the duty cycle is retained when changing the period or frequency of the waveform. Can be set to: WIDT<H> or DCYC<LE>.

  property `pulse_period`

    A floating point property that controls the period of a pulse waveform function in seconds, ranging from 33 ns to 1e6 s. Can be set and overwrites the frequency for all waveforms. If the period is shorter than the pulse width + the edge time, the edge time and pulse width will be adjusted accordingly.

  property `pulse_transition`

    A floating point property that controls the edge time in seconds for both the rising and falling edges. It is defined as the time between the 10% and 90% thresholds of the edge. Valid values are between 8.4 ns to 1 µs. Can be set.

  property `pulse_width`

    A floating point property that controls the width of a pulse waveform function in seconds, ranging from 16 ns to 1e6 s, within a set of restrictions depending on the period. Can be set.

  property `ramp_symmetry`

    A floating point property that controls the symmetry percentage for the ramp waveform, from 0.0% to 100.0% Can be set.

  property `shape`

    A string property that controls the output waveform. Can be set to: SIN<USOID>, SQU<ARE>, TRI<ANGLE>, RAMP, PULS<E>, PRBS, NOIS<E>, ARB, DC.

  property `square_dutycycle`

    A floating point property that controls the duty cycle of a square waveform function in percent, from 0.01% to 99.98%. The duty cycle is limited by the frequency and the minimal pulse width of 16 ns. See manual for more details. Can be set.

  `trigger`()

    Send a trigger signal to the function generator.

  property `trigger_source`

    A string property that controls the trigger source. Valid values are: IMM<EDIATE> (internal), EXT<ERNAL> (rear input), BUS (via trigger command). This setting can be set.

  property `voltage_high`

    A floating point property that controls the upper voltage of the output waveform in V, from -4.990 V to 5 V (must be higher than low voltage by at least 1 mV). Can be set.

  property `voltage_low`

    A floating point property that controls the lower voltage of the output waveform in V, from -5 V to 4.990 V (must be lower than high voltage by at least 1 mV). Can be set.

  `wait_for_trigger`(timeout=3600, should_stop=<function Agilent33500.<lambda>>)

    Wait until the triggering has finished or timeout is reached.

    Parameters

      - timeout – The maximum time the waiting is allowed to take. If timeout is exceeded, a TimeoutError is raised. If timeout is set to zero, no timeout will be used.

      - should_stop – Optional function (returning a bool) to allow the waiting to be stopped before its end.