Skip to content

Power Supply Output

PSU output channel configuration

Power supply output control and configuration.

Represents a single power supply output with voltage, current, and enable control.

PowerSupplyOutput

PowerSupplyOutput(psu: PowerSupply, spec: OutputSpec)

Represents a single power supply output channel.

Provides methods to configure output settings including voltage setpoint, current limit, output enable/disable, and measurements.

Initialize power supply output.

Parameters:

Name Type Description Default
psu PowerSupply

Parent PowerSupply instance

required
spec OutputSpec

OutputSpec with voltage/current limits for this output

required
Source code in scpi_control/power_supply_output.py
def __init__(self, psu: "PowerSupply", spec: "OutputSpec"):
    """Initialize power supply output.

    Args:
        psu: Parent PowerSupply instance
        spec: OutputSpec with voltage/current limits for this output
    """
    self._psu = psu
    self._spec = spec
    self._output_num = spec.output_num

    if not 1 <= self._output_num <= 3:
        raise exceptions.InvalidParameterError(f"Invalid output number: {self._output_num}. Must be 1-3.")

voltage property writable

voltage: float

Get voltage setpoint in volts.

Returns:

Type Description
float

Voltage setpoint in volts

current property writable

current: float

Get current limit setpoint in amps.

Returns:

Type Description
float

Current limit in amps

enabled property writable

enabled: bool

Get output enable state.

Returns:

Type Description
bool

True if output is enabled, False otherwise

ovp_level property writable

ovp_level: float

Get over-voltage protection level in volts.

Returns:

Type Description
float

OVP level in volts

Raises:

Type Description
NotImplementedError

If OVP is not supported by this model

ocp_level property writable

ocp_level: float

Get over-current protection level in amps.

Returns:

Type Description
float

OCP level in amps

Raises:

Type Description
NotImplementedError

If OCP is not supported by this model

timer_enabled property writable

timer_enabled: bool

Get timer enable state.

Returns:

Type Description
bool

True if timer is enabled, False otherwise

Raises:

Type Description
NotImplementedError

If timer is not supported by this model

waveform_enabled property writable

waveform_enabled: bool

Get waveform generation enable state.

Returns:

Type Description
bool

True if waveform is enabled, False otherwise

Raises:

Type Description
NotImplementedError

If waveform generation is not supported

set_voltage

set_voltage(volts: float) -> None

Set voltage setpoint (alias for voltage setter).

Parameters:

Name Type Description Default
volts float

Voltage setpoint in volts

required
Source code in scpi_control/power_supply_output.py
def set_voltage(self, volts: float) -> None:
    """Set voltage setpoint (alias for voltage setter).

    Args:
        volts: Voltage setpoint in volts
    """
    self.voltage = volts

set_current

set_current(amps: float) -> None

Set current limit (alias for current setter).

Parameters:

Name Type Description Default
amps float

Current limit in amps

required
Source code in scpi_control/power_supply_output.py
def set_current(self, amps: float) -> None:
    """Set current limit (alias for current setter).

    Args:
        amps: Current limit in amps
    """
    self.current = amps

enable

enable() -> None

Enable output (turn on).

Source code in scpi_control/power_supply_output.py
def enable(self) -> None:
    """Enable output (turn on)."""
    self.enabled = True

disable

disable() -> None

Disable output (turn off).

Source code in scpi_control/power_supply_output.py
def disable(self) -> None:
    """Disable output (turn off)."""
    self.enabled = False

measure_voltage

measure_voltage() -> float

Measure actual output voltage in volts.

Returns:

Type Description
float

Actual output voltage in volts

Source code in scpi_control/power_supply_output.py
def measure_voltage(self) -> float:
    """Measure actual output voltage in volts.

    Returns:
        Actual output voltage in volts
    """
    cmd = self._psu._get_command("measure_voltage", ch=self._output_num)
    response = self._psu.query(cmd)
    return self._parse_float(response)

measure_current

measure_current() -> float

Measure actual output current in amps.

Returns:

Type Description
float

Actual output current in amps

Source code in scpi_control/power_supply_output.py
def measure_current(self) -> float:
    """Measure actual output current in amps.

    Returns:
        Actual output current in amps
    """
    cmd = self._psu._get_command("measure_current", ch=self._output_num)
    response = self._psu.query(cmd)
    return self._parse_float(response)

measure_power

measure_power() -> float

Measure actual output power in watts.

Returns:

Type Description
float

Actual output power in watts

Source code in scpi_control/power_supply_output.py
def measure_power(self) -> float:
    """Measure actual output power in watts.

    Returns:
        Actual output power in watts
    """
    cmd = self._psu._get_command("measure_power", ch=self._output_num)
    response = self._psu.query(cmd)
    return self._parse_float(response)

get_mode

get_mode() -> str

Get current operating mode.

Returns:

Type Description
str

Operating mode: 'CV' (constant voltage) or 'CC' (constant current)

Note

Not all power supplies support mode query. May raise an exception if the command is not supported.

Source code in scpi_control/power_supply_output.py
def get_mode(self) -> str:
    """Get current operating mode.

    Returns:
        Operating mode: 'CV' (constant voltage) or 'CC' (constant current)

    Note:
        Not all power supplies support mode query. May raise an exception
        if the command is not supported.
    """
    try:
        cmd = self._psu._get_command("get_output_mode", ch=self._output_num)
        response = self._psu.query(cmd)
        return response.strip()
    except Exception as e:
        logger.warning(f"Failed to get output mode: {e}")
        return "UNKNOWN"

get_configuration

get_configuration() -> Dict[str, any]

Get all output configuration parameters.

Returns:

Type Description
Dict[str, any]

Dictionary with all output settings

Source code in scpi_control/power_supply_output.py
def get_configuration(self) -> Dict[str, any]:
    """Get all output configuration parameters.

    Returns:
        Dictionary with all output settings
    """
    config = {
        "output": self._output_num,
        "enabled": self.enabled,
        "voltage_setpoint": self.voltage,
        "current_limit": self.current,
        "max_voltage": self._spec.max_voltage,
        "max_current": self._spec.max_current,
        "max_power": self._spec.max_power,
    }

    # Add measurements
    try:
        config["measured_voltage"] = self.measure_voltage()
        config["measured_current"] = self.measure_current()
        config["measured_power"] = self.measure_power()
        config["mode"] = self.get_mode()
    except Exception as e:
        logger.warning(f"Failed to get measurements: {e}")

    return config