Source code for apstools.devices.linkam_controllers

"""
Linkam temperature controllers
++++++++++++++++++++++++++++++

.. autosummary::

   ~Linkam_CI94_Device
   ~Linkam_T96_Device
"""

from ophyd import Component
from ophyd import Device
from ophyd import EpicsSignal
from ophyd import EpicsSignalRO
from ophyd import EpicsSignalWithRBV
from ophyd import Signal

from . import PVPositionerSoftDoneWithStop


[docs]class Linkam_CI94_Device(Device): """ Linkam model CI94 temperature controller EXAMPLE:: ci94 = Linkam_CI94_Device("IOC:ci94:", name="ci94") """ controller_name = "Linkam CI94" temperature = Component( PVPositionerSoftDoneWithStop, "", readback_pv="temp", setpoint_pv="setLimit", tolerance=1.0, kind="hinted", ) units = Component(Signal, value="C", kind="config") temperature_in = Component(EpicsSignalRO, "tempIn", kind="omitted") # DO NOT USE: temperature2_in = Component(EpicsSignalRO, "temp2In", kind="omitted") # DO NOT USE: temperature2 = Component(EpicsSignalRO, "temp2") dsc_in = Component(EpicsSignalRO, "dscIn", kind="omitted") end_after_profile = Component(EpicsSignal, "endAfterProfile", kind="omitted") end_on_stop = Component(EpicsSignal, "endOnStop", kind="omitted") error_byte = Component(EpicsSignalRO, "errorByte", kind="omitted") gen_stat = Component(EpicsSignalRO, "genStat", kind="omitted") hold_control = Component(EpicsSignal, "hold", kind="omitted") pump_mode = Component(EpicsSignal, "pumpMode", kind="omitted") pump_speed = Component(EpicsSignalRO, "pumpSpeed", kind="omitted") pump_speed_in = Component(EpicsSignalRO, "pumpSpeedIn", kind="omitted") rate = Component(EpicsSignal, "setRate", kind="omitted") # RPM speed = Component(EpicsSignal, "setSpeed", kind="config") # deg/min, speed 0 = automatic control start_control = Component(EpicsSignal, "start", kind="omitted") status = Component(EpicsSignalRO, "status", kind="omitted") status_in = Component(EpicsSignalRO, "statusIn", kind="omitted") stop_control = Component(EpicsSignal, "stop", kind="omitted") # clear_buffer = Component(EpicsSignal, "clearBuffer", kind="omitted") # bo # scan_dis = Component(EpicsSignal, "scanDis", kind="omitted") # bo # test = Component(EpicsSignal, "test", kind="omitted") # longout # d_cmd = Component(EpicsSignalRO, "DCmd", kind="omitted") # ai # t_cmd = Component(EpicsSignalRO, "TCmd", kind="omitted") # ai # dsc = Component(EpicsSignalRO, "dsc", kind="omitted") # calc def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # temperature component is the main value self.temperature.name = self.name
[docs]class T96Temperature(PVPositionerSoftDoneWithStop): actuate = Component(EpicsSignalWithRBV, "heating", kind="config", string=True) actuate_value = "On"
[docs]class Linkam_T96_Device(Device): """ Linkam model T96 temperature controller EXAMPLE:: tc1 = Linkam_T96("IOC:tc1:", name="tc1") """ controller_name = "Linkam T96" temperature = Component( T96Temperature, "", readback_pv="temperature_RBV", setpoint_pv="rampLimit", tolerance=1.0, kind="hinted", ) ramprate = Component(EpicsSignalWithRBV, "rampRate", kind="config") units = Component(Signal, value="C", kind="config") controller_config = Component(EpicsSignalRO, "controllerConfig_RBV", kind="omitted") controller_error = Component(EpicsSignalRO, "controllerError_RBV", kind="omitted") controller_status = Component(EpicsSignalRO, "controllerStatus_RBV", kind="omitted") heater_power = Component(EpicsSignalRO, "heaterPower_RBV", kind="omitted") lnp_mode = Component(EpicsSignalWithRBV, "lnpMode", kind="omitted") lnp_speed = Component(EpicsSignalWithRBV, "lnpSpeed", kind="omitted") lnp_status = Component(EpicsSignalRO, "lnpStatus_RBV", kind="omitted") pressure = Component(EpicsSignalRO, "pressure_RBV", kind="omitted") ramp_at_limit = Component(EpicsSignalRO, "rampAtLimit_RBV", kind="omitted") stage_config = Component(EpicsSignalRO, "stageConfig_RBV", kind="omitted") status_error = Component(EpicsSignalRO, "statusError_RBV", kind="omitted") vacuum = Component(EpicsSignal, "vacuum", kind="omitted") vacuum_at_limit = Component(EpicsSignalRO, "vacuumAtLimit_RBV", kind="omitted") vacuum_limit_readback = Component(EpicsSignalWithRBV, "vacuumLimit", kind="omitted") vacuum_status = Component(EpicsSignalRO, "vacuumStatus_RBV", kind="omitted") # calc def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # temperature component is the main value self.temperature.name = self.name
# ----------------------------------------------------------------------------- # :author: Pete R. Jemian # :email: jemian@anl.gov # :copyright: (c) 2017-2024, UChicago Argonne, LLC # # Distributed under the terms of the Argonne National Laboratory Open Source License. # # The full license is in the file LICENSE.txt, distributed with this software. # -----------------------------------------------------------------------------