from ...core.devio import SCPI, interface
from .base import GenericRigolError, GenericRigolBackendError
[docs]
class DP1116A(SCPI.SCPIDevice):
"""
Rigol DP1116A DC power supply.
Args:
addr: device address (usually a VISA name).
"""
Error=GenericRigolError
ReraiseError=GenericRigolBackendError
def __init__(self, addr):
super().__init__(addr)
with self._close_on_error():
self.get_id()
self._add_scpi_parameter("output_range","OUTP:RANG",kind="param",parameter="output_range")
self._add_scpi_parameter("output_enabled","OUTP:STATE",kind="bool")
self._add_scpi_parameter("ovp_enabled","OUTP:OVP:STATE",kind="bool")
self._add_scpi_parameter("ovp_threshold","OUTP:OVP")
self._add_scpi_parameter("ocp_enabled","OUTP:OCP:STATE",kind="bool")
self._add_scpi_parameter("ocp_threshold","OUTP:OCP")
self._add_scpi_parameter("voltage_setpoint","SOURCE:VOLT")
self._add_scpi_parameter("current_setpoint","SOURCE:CURR")
self._add_scpi_parameter("voltage","MEAS:VOLT")
self._add_scpi_parameter("current","MEAS:CURR")
self._add_scpi_parameter("power","MEAS:POWER")
self._add_settings_variable("enabled",self.is_output_enabled,self.enable_output)
self._add_settings_variable("output_range",self.get_output_range,self.set_output_range)
self._add_settings_variable("ovp_threshold",self.get_ovp_threshold,self.set_ovp_threshold)
self._add_status_variable("ovp_enabled",self.is_ovp_enabled,self.enable_ovp)
self._add_settings_variable("ocp_threshold",self.get_ocp_threshold,self.set_ocp_threshold)
self._add_status_variable("ocp_enabled",self.is_ocp_enabled,self.enable_ocp)
self._add_settings_variable("voltage_setpoint",self.get_voltage_setpoint,self.set_voltage)
self._add_status_variable("voltage",self.get_voltage)
self._add_settings_variable("current_setpoint",self.get_current_setpoint,self.set_current)
self._add_status_variable("current",self.get_current)
self._add_status_variable("power",self.get_power)
_bool_selector=("OFF","ON")
_float_fmt="{:.4f}"
_p_output_range=interface.EnumParameterClass("output_range",{"16V":"16V","32V":"32V"})
[docs]
def is_output_enabled(self):
"""Check if the output is enabled"""
return self._get_scpi_parameter("output_enabled")
[docs]
def enable_output(self, enable=True):
"""Enable or disable the output"""
return self._set_scpi_parameter("output_enabled",enable,result=True)
[docs]
def get_output_range(self):
"""
Get output range.
Can be either ``"16V"`` (16V/10A) or ``"32V"`` (32V/5A).
"""
return self._get_scpi_parameter("output_range")
[docs]
def set_output_range(self, value="16V"):
"""
Set output range.
Can be either ``"16V"`` (16V/10A) or ``"32V"`` (32V/5A).
"""
return self._set_scpi_parameter("output_range",value,result=True)
[docs]
def get_voltage_setpoint(self):
"""Get output voltage setpoint"""
return self._get_scpi_parameter("voltage_setpoint")
[docs]
def get_voltage(self):
"""Get the actual output voltage"""
return self._get_scpi_parameter("voltage")
[docs]
def set_voltage(self, value):
"""Set output voltage setpoint"""
return self._set_scpi_parameter("voltage",value,result=True)
[docs]
def get_current_setpoint(self):
"""Get output current setpoint"""
return self._get_scpi_parameter("current_setpoint")
[docs]
def get_current(self):
"""Get the actual output current"""
return self._get_scpi_parameter("current")
[docs]
def set_current(self, value):
"""Set output current setpoint"""
return self._set_scpi_parameter("current",value,result=True)
[docs]
def get_power(self):
"""Get the actual output power"""
return self._get_scpi_parameter("power")
[docs]
def get_ovp_threshold(self):
"""Get over-voltage protection threshold"""
return self._get_scpi_parameter("ovp_threshold")
[docs]
def set_ovp_threshold(self, value):
"""Set over-voltage protection threshold"""
return self._set_scpi_parameter("ovp_threshold",value,result=True)
[docs]
def is_ovp_enabled(self):
"""Check if the over-voltage protection is enabled"""
return self._get_scpi_parameter("ovp_enabled")
[docs]
def enable_ovp(self, enable=True):
"""Enable or disable the over-voltage protection"""
return self._set_scpi_parameter("ovp_enabled",enable,result=True)
[docs]
def get_ocp_threshold(self):
"""Get over-current protection threshold"""
return self._get_scpi_parameter("ocp_threshold")
[docs]
def set_ocp_threshold(self, value):
"""Set over-current protection threshold"""
return self._set_scpi_parameter("ocp_threshold",value,result=True)
[docs]
def is_ocp_enabled(self):
"""Check if the over-current protection is enabled"""
return self._get_scpi_parameter("ocp_enabled")
[docs]
def enable_ocp(self, enable=True):
"""Enable or disable the over-current protection"""
return self._set_scpi_parameter("ocp_enabled",enable,result=True)