Source code for apstools.devices.eurotherm_2216e
"""
Eurotherm 2216e Temperature Controller
++++++++++++++++++++++++++++++++++++++
The 2216e is a temperature controller from Eurotherm.
.. autosummary::
~Eurotherm2216e
According to their website, the Eurotherm 2216e Temperature Controller [#]_ is
obsolete. Please see [its] replacement EPC3016 [#]_ in our EPC3000 Series. [#]_
.. [#] https://www.eurothermcontrollers.com/eurotherm-2216e-series-controller-now-obsolete/
.. [#] https://www.eurothermcontrollers.com/eurotherm-epc3016-1-16-din-process-and-temperature-controller/
.. [#] https://www.eurothermcontrollers.com/epc3000-series
New in apstools 1.6.0.
"""
import logging
from ophyd import Component
from ophyd import EpicsSignal
from ophyd import EpicsSignalRO
from ophyd import Signal
from .positioner_soft_done import PVPositionerSoftDoneWithStop
logger = logging.getLogger(__name__)
[docs]class Eurotherm2216e(PVPositionerSoftDoneWithStop):
"""
Eurotherm 2216e Temperature Controller
"""
# temperature value in dC, needs conversion: readback = 0.1 * sensor
sensor = Component(EpicsSignalRO, "SetPointSensor", kind="omitted")
readback = Component(Signal, value=0, kind="hinted")
setpoint = Component(
EpicsSignal,
"SetPointTemp",
kind="hinted",
write_pv="SetPointTempWrite",
put_complete=True,
)
# temp1 & temp2 PVs have no useful values : ignore here
# temp1 = Component(EpicsSignalRO, "Temp1", kind="hinted")
# temp2 = Component(EpicsSignalRO, "Temp2", kind="hinted")
power = Component(
EpicsSignal,
"SetPointPower",
kind="config",
write_pv="SetPointPowerWrite",
put_complete=True,
)
mode = Component(
EpicsSignal,
"SetPointSensor",
kind="config",
write_pv="ModeWrite",
string=True,
)
program_number = Component(EpicsSignalRO, "ProgramNumber", kind="config")
# program_status = Component(
# EpicsSignalRO,
# "ProgramStatus",
# kind="config",
# string=True
# )
target = None # remove from PVPositionerSoftDoneWithStop
[docs] def cb_sensor(self, *args, **kwargs):
"units: Convert dC from sensor to C"
self.readback.put(0.1 * self.sensor.get())
def __init__(self, prefix="", *, tolerance=1, **kwargs):
super().__init__(
prefix=prefix,
readback_pv="ignoreRBV",
setpoint_pv="ignore",
tolerance=tolerance,
use_target=False,
**kwargs,
)
self.sensor.subscribe(self.cb_sensor)
# -----------------------------------------------------------------------------
# :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.
# -----------------------------------------------------------------------------