BASIC_PARAMETERS_AFG31000
Python Code
from flojoy import flojoy, DataContainer, String, VisaConnection
from typing import Optional, Literal
@flojoy(inject_connection=True)
def BASIC_PARAMETERS_AFG31000(
    connection: VisaConnection,
    source: Literal["1", "2"] = "1",
    frequency: float = 1e6,
    amplitude: float = 1,
    offset: float = 0,
    phase: float = 0,
    input: Optional[DataContainer] = None,
) -> String:
    """Set basic parameters such as frequency for a single channel.
    This block should also work with compatible Tektronix AFG31XXX instruments.
    Parameters
    ----------
    connection: VisaConnection
        The VISA address (requires the CONNECTION_AFG31000 block).
    channel: select, default=1
        Choose the channel to alter.
    frequency: float, default=1e6
        The voltage of the waveform to set, in Hz.
    amplitude: float, default=1
        The voltage of the waveform to set.
    offset: float, default=0
        The voltage offset to set the waveform to, in volts.
    phase: float, default=0
        The phase to set the waveform to, in degrees.
    Returns
    -------
    String
        Placeholder
    """
    assert -180.0 <= phase <= 180.0, "The phase must be between -180 and 180 degrees."
    afg = connection.get_handle()
    afg.write(f"SOURCE{source}:FREQUENCY {frequency}")
    afg.write(f"SOURCE{source}:VOLTAGE:AMPLITUDE {amplitude}")
    afg.write(f"SOURCE{source}:VOLTAGE:OFFSET {offset}")
    afg.write(f"SOURCE{source}:PHASE:ADJUST {phase}DEG")
    return String(s="Set FG parameters")
Example
In this example, an Tektronix AFG31000 is used to generate an arbitrary waveform.
First the necessary blocks were added:
- CONNECT_AFG31000
- COPY_AFG31000
- ARBITRARY_AFG31000
- BASIC_PARAMETERS_AFG31000
- OUTPUT_AFG31000
- 3x BASIC_OSCILLATOR
- MULTIPLY
- LINE
The instrument address was set for each AFG31000 block. Ensure the OUTPUT_AFG31000 block has channel 1 output turned on. Note the COPY_AFG31000 block is rename PLACEHOLDER here and it preset for block running order reasons. The BASIC_PARAMETERS_AFG31000 block is used to change frequency, offset, voltage, and phase for a single channel, without changing the function itself.
The blocks were connected as shown and the app was run. The 3 BASIC_OSCILLATOR blocks were used to generate the arbitrary waveform. Any waveform generated in Flojoy can be used as the input for ARBITRARY_AFG31000 to allow for any output.
An oscilloscope was connected to the AFG31000 resulting in waveform:
