FUNCTION_GENERATOR_DS1047Z
Controls the function generator, AKA 'Source' 1 and 2.Requires a CONNECTION_DS1074Z node at the start of the app to connect with
the instrument. The VISA address will then be listed under 'connection'.
This node should also work with compatible DS1000Z oscilloscopesParams:connection : VisaConnectionThe VISA address (requires the CONNECTION_DS1074Z node).source : intControl source 1 or 2.source_on : boolTurn the wavefunction generator on (True) or off (False.)impedance : strUse high (~1e6) or 50 Ohm impedance.frequency : floatThe output frequency, in Hz.phase : float = 0The output frequency, in degrees.align_phases : boolAlign the phases of source 1 and 2 (use after both phases are set).function : strChoose the desired wavefunction shape.amplitude : floatPeak-to-peak amplitude, in V.voltage_offset : floatThe vertical voltage offset, in V.ramp_symmetry : float = 0,The symmetry of the ramp wavefunction, if used. 0-100%.duty_cycle : float = 0,The duty cycle of the pulse wavefunction, if used. 0-100%.Returns:out : DataContainerTextBlob: summary of channel settings.
Python Code
from flojoy import flojoy, DataContainer, TextBlob, VisaConnection
from typing import Optional, Literal
@flojoy(inject_connection=True)
def FUNCTION_GENERATOR_DS1047Z(
connection: VisaConnection,
source: Literal[1, 2] = 1,
source_on: bool = True,
impedance: Literal["highZ", "50"] = "50",
frequency: float = 1e5,
phase: float = 0,
align_phases: bool = True,
function: Literal[
"sin",
"squ",
"ramp",
"pulse",
"noise",
"DC",
"ext",
"sinc",
"exprise",
"expfall",
"ECG",
"gauss",
"lorentz",
"haversine",
] = "sin",
amplitude: float = 0.1,
voltage_offset: float = 0,
ramp_symmetry: float = 0,
duty_cycle: float = 0,
default: Optional[DataContainer] = None,
) -> TextBlob:
"""Controls the function generator, AKA 'Source' 1 and 2.
Requires a CONNECTION_DS1074Z node at the start of the app to connect with
the instrument. The VISA address will then be listed under 'connection'.
This node should also work with compatible DS1000Z oscilloscopes
Parameters
----------
connection: VisaConnection
The VISA address (requires the CONNECTION_DS1074Z node).
source: int
Control source 1 or 2.
source_on: bool
Turn the wavefunction generator on (True) or off (False.)
impedance: str
Use high (~1e6) or 50 Ohm impedance.
frequency: float
The output frequency, in Hz.
phase: float = 0
The output frequency, in degrees.
align_phases: bool
Align the phases of source 1 and 2 (use after both phases are set).
function: str
Choose the desired wavefunction shape.
amplitude: float
Peak-to-peak amplitude, in V.
voltage_offset: float
The vertical voltage offset, in V.
ramp_symmetry: float = 0,
The symmetry of the ramp wavefunction, if used. 0-100%.
duty_cycle: float = 0,
The duty cycle of the pulse wavefunction, if used. 0-100%.
Returns
-------
DataContainer
TextBlob: summary of channel settings.
"""
rigol = connection.get_handle()
s = f"Wavefunction settings: Source: {source} "
if source_on:
rigol.write(f":OUTPut{source} ON")
s += "ON , "
else:
rigol.write(f":OUTPut{source} OFF")
s += "OFF , "
s += f"Impedance: {impedance}, "
if impedance == "50":
rigol.write(f":OUTPut{source}:IMPedance FIFTy")
else:
rigol.write(f":OUTPut{source}:IMPedance OMEG")
s += f"Function: {function}, "
rigol.write(f":SOURce{source}:FUNC {function}")
s += f"Frequency: {frequency} Hz, Phase: {phase} degrees, "
s += f"Amplitude: {amplitude} V, Offset: {voltage_offset} V, "
rigol.write(f":SOURce{source}:FREQ {frequency}")
rigol.write(f":SOURce{source}:PHASe {phase}")
rigol.write(f":SOURce{source}:VOLT {amplitude}")
rigol.write(f":SOURce{source}:VOLTage:OFFSet {voltage_offset}")
if function == "ramp":
rigol.write(f":SOURce{source}:FUNCtion:RAMP:SYMMetry {ramp_symmetry}")
elif function == "pulse":
rigol.write(f":SOURce{source}:PULSe:DCYCle {duty_cycle}")
if align_phases:
rigol.write(":PHASe:INIT")
return TextBlob(text_blob=s)
Example
Having problems with this example app? Join our Discord community and we will help you out!
In this example the FUNCTION_GENERATOR_DS1047Z
block is used to control the source
function of the Rigol DS1047Z oscilloscope.
A CONNECTION_DS1047Z
block must first be used to make the connection between Flojoy and the instrument.
Three different functions are used, and TIMER
functions are used to delay the time between each one allowing the changes to take effect.