Julabo CF41
PyLabware driver for Julabo CF41 chiller.
- class PyLabware.devices.julabo_cf41.CF41Chiller(device_name, connection_mode, address, port)[source]
Bases:
AbstractTemperatureController
This provides a Python class for the Julabo CF41 chiller based on the the original operation manual 1.951.4871-V3 11/15 26.11.15
Default constructor
- Parameters:
device_name (str) –
connection_mode (str) –
address (str | None) –
port (str | int) –
- get_heating_power_setpoint()[source]
Returns the value of the heating power setpoint in %
- Return type:
int
- get_recirculation_pump_speed()[source]
Returns the recirculation pump speed: 1 (low flow rate) –> 4 (high flow rate)
- Return type:
int
- get_temperature(sensor=0)[source]
Retrieves the current temperature of the chiller. This can be the internal or external temperature, depending in what mode the chiller is currently operating.
- Parameters:
sensor (int) – Specify which temperature probe the setpoint applies to.
- Return type:
float
- get_temperature_setpoint(sensor=0)[source]
Reads the current temperature setpoint.
- Parameters:
sensor (int) – Specify which temperature probe the setpoint applies to. This device uses a shared setpoint for all temperature probes. Hence, this argument has no effect here.
- Return type:
float
- is_idle()[source]
Returns true if the chiller is off: pump and temperature control
- Return type:
bool
- ramp_temperature(end_temperature, time)[source]
Ramps chiller temperature from the current temperature to the end_temperature over time.
- Parameters:
end_temperature (float) –
time (float) –
- set_cooling_power(cooling_power)[source]
Sets the value of the chiller cooling power in %
- Parameters:
cooling_power (int) –
- set_heating_power(heating_power=100)[source]
Sets the heating power of the chiller, in percent [10-100%].
- Parameters:
heating_power (int) –
- set_recirculation_pump_speed(speed)[source]
Sets the recirculation pump speed (4 different speeds allowed).
- Parameters:
speed (int) –
- set_regulation_mode(mode)[source]
Sets chiller temperature regulation mode.
- Parameters:
mode (int) –
- set_temperature(temperature, sensor=0)[source]
Sets the target temperature of the chiller.
- Parameters:
temperature (float) – Temperature setpoint in °C.
sensor (int) – Specify which temperature probe the setpoint applies to. The Julabo CF41 chiller has one common setpoint temperature shared by the external and internal probe. Thus, the sensor variable has no effect here.
- class PyLabware.devices.julabo_cf41.CF41ChillerCommands(*args, **kwargs)[source]
Bases:
LabDeviceCommands
Collection of command definitions for CF41 chiller.
This class shouldn’t be instantiated
- CONTROL_DYNAMCIS_MODES = {0: 'APERIODIC', 1: 'STANDARD'}
- DEFAULT_NAME = 'JULABO CRYOCOMPACT CF41'
- ERRORS = {'-01': 'Coolant level critically low!', '-03': 'Coolant temperature too high!', '-04': 'Coolant temperature too low!', '-05': 'Working temperature sensor short-circuited or open!', '-06': 'Temperature difference between working and safety temperature is above 35°C!', '-07': 'Internal I2C bus error!', '-08': 'Invalid command!', '-09': 'Invalid command in current operating mode!', '-12': 'Internal ADC error!', '-13': 'Set temperature value exceeds safety limits!', '-14': 'Excess temperature protection alarm'}
- EXTPROG_MODES = {0: 'EXT_VOLTAGE', 1: 'EXT_CURRENT'}
- GET_BAND_LIM_HI = {'name': 'IN_PAR_15', 'reply': {'type': <class 'int'>}}
- GET_BAND_LIM_LO = {'name': 'IN_PAR_16', 'reply': {'type': <class 'int'>}}
- GET_BATH_BAND_LIMIT = {'name': 'IN_PAR_04', 'reply': {'type': <class 'float'>}}
- GET_BATH_TE_EXT = {'name': 'IN_PAR_01', 'reply': {'type': <class 'float'>}}
- GET_BATH_TE_INT = {'name': 'IN_PAR_03', 'reply': {'type': <class 'float'>}}
- GET_CHILLER_STATE = {'name': 'IN_MODE_05', 'reply': {'type': <class 'int'>}}
- GET_DYN_MODE = {'name': 'IN_MODE_08', 'reply': {'type': <class 'int'>}}
- GET_EXTPROG_MODE = {'name': 'IN_MODE_03', 'reply': {'type': <class 'int'>}}
- GET_EXT_FLOWRATE = {'name': 'IN_SP_08', 'reply': {'type': <class 'float'>}}
- GET_HEAT_PWR = {'name': 'IN_PV_01', 'reply': {'type': <class 'float'>}}
- GET_MAX_COOL_PWR = {'name': 'IN_HIL_00', 'reply': {'type': <class 'int'>}}
- GET_MAX_HEAT_PWR = {'name': 'IN_HIL_01', 'reply': {'type': <class 'int'>}}
- GET_NAME = {'name': 'VERSION', 'reply': {'args': [0, 23], 'parser': <function slicer>, 'type': <class 'str'>}}
- GET_PKPH0 = {'name': 'IN_PAR_05', 'reply': {'type': <class 'float'>}}
- GET_PROP_CAS = {'name': 'IN_PAR_10', 'reply': {'type': <class 'float'>}}
- GET_PUMP_SPEED = {'name': 'IN_SP_07', 'reply': {'type': <class 'int'>}}
- GET_SELFTUNE_MODE = {'name': 'IN_MODE_02', 'reply': {'type': <class 'int'>}}
- GET_SI = {'name': 'IN_PAR_02', 'reply': {'type': <class 'float'>}}
- GET_STATUS = {'name': 'STATUS', 'reply': {'args': [0, 2], 'parser': <function slicer>, 'type': <class 'str'>}}
- GET_TEMP_CAS_MAX = {'name': 'IN_PAR_13', 'reply': {'type': <class 'float'>}}
- GET_TEMP_CAS_MIN = {'name': 'IN_PAR_14', 'reply': {'type': <class 'float'>}}
- GET_TEMP_DELTA = {'name': 'IN_PAR_00', 'reply': {'type': <class 'float'>}}
- GET_TEMP_EXT = {'name': 'IN_PV_02', 'reply': {'type': <class 'float'>}}
- GET_TEMP_EXTPROG = {'name': 'IN_SP_05', 'reply': {'type': <class 'float'>}}
- GET_TEMP_INT = {'name': 'IN_PV_00', 'reply': {'type': <class 'float'>}}
- GET_TEMP_LIM_HI = {'name': 'IN_SP_03', 'reply': {'type': <class 'float'>}}
- GET_TEMP_LIM_LO = {'name': 'IN_SP_04', 'reply': {'type': <class 'float'>}}
- GET_TEMP_REG_MODE = {'name': 'IN_MODE_04', 'reply': {'type': <class 'int'>}}
- GET_TEMP_SAFE = {'name': 'IN_PV_03', 'reply': {'type': <class 'float'>}}
- GET_TEMP_SAFE_SET = {'name': 'IN_PV_04', 'reply': {'type': <class 'float'>}}
- GET_TEMP_SP = {'name': 'IN_MODE_01', 'reply': {'type': <class 'int'>}}
- GET_TEMP_SP1 = {'name': 'IN_SP_00', 'reply': {'type': <class 'float'>}}
- GET_TEMP_SP2 = {'name': 'IN_SP_01', 'reply': {'type': <class 'float'>}}
- GET_TEMP_SP3 = {'name': 'IN_SP_02', 'reply': {'type': <class 'float'>}}
- GET_TEMP_UNITS = {'name': 'IN_SP_06', 'reply': {'type': <class 'float'>}}
- GET_TN_CAS = {'name': 'IN_PAR_11', 'reply': {'type': <class 'int'>}}
- GET_TN_INT = {'name': 'IN_PAR_07', 'reply': {'type': <class 'int'>}}
- GET_TV_CAS = {'name': 'IN_PAR_12', 'reply': {'type': <class 'int'>}}
- GET_TV_INT = {'name': 'IN_PAR_08', 'reply': {'type': <class 'int'>}}
- GET_VERSION = {'name': 'VERSION', 'reply': {'args': [-3], 'parser': <function slicer>, 'type': <class 'str'>}}
- GET_XP_CAS = {'name': 'IN_PAR_09', 'reply': {'type': <class 'float'>}}
- GET_XP_INT = {'name': 'IN_PAR_06', 'reply': {'type': <class 'float'>}}
- PUMP_SPEED_MODES = [1, 2, 3, 4]
- REGULATION_MODES = {0: 'INTERNAL', 1: 'EXTERNAL'}
- SELFTUNE_MODES = {0: 'SELFTUNE_OFF', 1: 'SELFTUNE_ONCE', 2: 'SELFTUNE_ALWAYS'}
- SETPOINT_MODES = {0: 'SP1', 1: 'SP2', 2: 'SP3'}
- SET_BAND_LIM_HI = {'check': {'max': 200, 'min': 0}, 'name': 'OUT_PAR_15', 'type': <class 'int'>}
- SET_BAND_LIM_LO = {'check': {'max': 200, 'min': 0}, 'name': 'OUT_PAR_16', 'type': <class 'int'>}
- SET_CONTROL_MODE = {'check': {'values': {0: 'APERIODIC', 1: 'STANDARD'}}, 'name': 'OUT_MODE_08', 'type': <class 'int'>}
- SET_COSPEED_EXT = {'check': {'max': 5, 'min': 0}, 'name': 'OUT_PAR_04', 'type': <class 'float'>}
- SET_EXTPROG_MODE = {'check': {'values': {0: 'EXT_VOLTAGE', 1: 'EXT_CURRENT'}}, 'name': 'OUT_MODE_03', 'type': <class 'int'>}
- SET_HEATER_VALUE = {'check': {'max': 100, 'min': -100}, 'name': 'OUT_SP_06', 'type': <class 'int'>}
- SET_MAX_COOL_PWR = {'check': {'max': 0, 'min': -100}, 'name': 'OUT_HIL_00', 'type': <class 'int'>}
- SET_MAX_HEAT_PWR = {'check': {'max': 100, 'min': 10}, 'name': 'OUT_HIL_01', 'type': <class 'int'>}
- SET_PROP_CAS = {'check': {'max': 99.9, 'min': 1}, 'name': 'OUT_PAR_10', 'type': <class 'float'>}
- SET_PUMP_SPEED = {'check': {'values': [1, 2, 3, 4]}, 'name': 'OUT_SP_07', 'type': <class 'int'>}
- SET_SELFTUNE_MODE = {'check': {'values': {0: 'SELFTUNE_OFF', 1: 'SELFTUNE_ONCE', 2: 'SELFTUNE_ALWAYS'}}, 'name': 'OUT_MODE_02', 'type': <class 'int'>}
- SET_TEMP_CAS_MAX = {'name': 'OUT_PAR_13', 'type': <class 'float'>}
- SET_TEMP_CAS_MIN = {'name': 'OUT_PAR_14', 'type': <class 'float'>}
- SET_TEMP_LIM_HI = {'check': {'max': 190, 'min': 20}, 'name': 'OUT_SP_03', 'type': <class 'float'>}
- SET_TEMP_LIM_LO = {'check': {'max': 19, 'min': -40}, 'name': 'OUT_SP_04', 'type': <class 'float'>}
- SET_TEMP_REG_MODE = {'check': {'values': {0: 'INTERNAL', 1: 'EXTERNAL'}}, 'name': 'OUT_MODE_04', 'type': <class 'int'>}
- SET_TEMP_SP = {'check': {'values': {0: 'SP1', 1: 'SP2', 2: 'SP3'}}, 'name': 'OUT_MODE_01', 'type': <class 'int'>}
- SET_TEMP_SP1 = {'check': {'max': 110, 'min': -40}, 'name': 'OUT_SP_00', 'type': <class 'float'>}
- SET_TEMP_SP2 = {'check': {'max': 110, 'min': -40}, 'name': 'OUT_SP_01', 'type': <class 'float'>}
- SET_TEMP_SP3 = {'check': {'max': 110, 'min': -40}, 'name': 'OUT_SP_02', 'type': <class 'float'>}
- SET_TN_CAS = {'check': {'max': 9999, 'min': 3}, 'name': 'OUT_PAR_11', 'type': <class 'int'>}
- SET_TN_INT = {'check': {'max': 9999, 'min': 3}, 'name': 'OUT_PAR_07', 'type': <class 'int'>}
- SET_TV_CAS = {'check': {'max': 999, 'min': 0}, 'name': 'OUT_PAR_12', 'type': <class 'int'>}
- SET_TV_INT = {'check': {'max': 999, 'min': 0}, 'name': 'OUT_PAR_08', 'type': <class 'int'>}
- SET_XP_CAS = {'check': {'max': 99.9, 'min': 0.1}, 'name': 'OUT_PAR_09', 'type': <class 'float'>}
- SET_XP_INT = {'check': {'max': 99.9, 'min': 0.1}, 'name': 'OUT_PAR_06', 'type': <class 'float'>}
- START_CHILLER = {'name': 'OUT_MODE_05 1'}
- STATUSES = {'00': 'STOPPED', '01': 'STARTED', '02': 'STOPPED', '03': 'STARTED'}
- STOP_CHILLER = {'name': 'OUT_MODE_05 0'}
- WARNINGS = {'-10': 'Entered value too small!', '-11': 'Entered value too large!', '-15': 'External control selected, but Pt100 sensor not connected.', '-20': 'Check air cooled condenser.', '-21': 'Compressor stage 1 does not work.', '-26': 'Stand-by plug is missing.', '-33': 'Safety temperature sensor short-circuited or open!', '-38': 'External Pt100 sensor error!', '-40': 'Coolant level low'}