#!/usr/bin/env python3
#
# Exports
# Commands:
#
# Attributes:
# Position
# r: Temperature
# w: TemperatureSetpoint
# UnitLimitMax
# UnitLimitMin
#
# Property:
# DynamicAttributes:
# Steptime,double,rw
# PTMaxTemperature,double,rw
# PTTemp,double,r
# Imon,double,r
# Vmon,double,r
# Control,int,rw 0: off, 1: on, 2: paused
# Deadband,double,rw
# TemperatureSetpoint,double,rw
#
import PyTango
class VM:
#
# init_device
#
def __init__( self):
self.proxy = PyTango.DeviceProxy( 'p02/pilctempctrl/lakl.01')
self.unitLimitMin = 0
self.unitLimitMax = 1000
self.deadband = 0.5
self.proxy.write_attribute( "Control", 0)
return
#
# dev_state
#
def dev_state( self):
#
# ctrl == 0: off, == 2: paused
#
ctrl = self.proxy.read_attribute( 'Control').value
if ctrl == 0 or ctrl == 2:
argout = PyTango.DevState.ON
else:
setp = self.proxy.read_attribute( 'TemperatureSetpoint').value
act = self.proxy.read_attribute( 'Temperature').value
if abs( setp - act) < self.deadband:
argout = PyTango.DevState.ON
else:
argout = PyTango.DevState.MOVING
return argout
#
# Position
#
def read_Position( self):
return self.proxy.read_attribute( 'Temperature').value
def write_Position( self, argin):
if( argin < self.read_UnitLimitMin() or argin > self.read_UnitLimitMax()):
PyTango.Except.throw_exception(
"PiLCTempCtrl %s" % self.proxy.name(),
"requested position %g outside limits %g %g " % ( argin,
self.read_UnitLimitMin(),
self.read_UnitLimitMax()),
"VmExecutor")
self.proxy.write_attribute( "Control", 1)
return self.proxy.write_attribute( "TemperatureSetpoint", argin)
#
# UnitLimitMax
#
def read_UnitLimitMax( self):
return self.unitLimitMax
def write_UnitLimitMax( self, argin):
self.unitLimitMax = argin
return
#
# UnitLimitMin
#
def read_UnitLimitMin( self):
return self.unitLimitMin
def write_UnitLimitMin( self, argin):
self.unitLimitMin = argin
return
def read_DynamicAttr( self, name):
if name.lower() == "steptime":
argout = self.proxy.Steptime
elif name.lower() == "control":
argout = self.proxy.Control
elif name.lower() == "deadband":
argout = self.deadband
elif name.lower() == "pttemp":
argout = self.proxy.PTTemp
elif name.lower() == "ptmaxtemperature":
argout = self.proxy.PTMaxTemperature
elif name.lower() == "temperaturesetpoint":
argout = self.proxy.TemperatureSetpoint
elif name.lower() == "imon":
argout = self.proxy.Imon
elif name.lower() == "vmon":
argout = self.proxy.Vmon
else:
PyTango.Except.throw_exception(
"PiLCTempCtrl %s" % self.proxy.name(),
"failed to identify attribute %s" % name,
"VmExecutor")
return argout
def write_DynamicAttr( self, name, value):
if name.lower() == "steptime":
self.proxy.Steptime = value
elif name.lower() == "control":
self.proxy.Control = value
elif name.lower() == "deadband":
self.deadband = value
elif name.lower() == "temperaturesetpoint":
self.proxy.TemperatureSetpoint = value
else:
PyTango.Except.throw_exception(
"PiLCTempCtrl %s" % self.proxy.name(),
"failed to identify attribute %s" % name,
"VmExecutor")
return
#
# CwLimit, CcwLimit
#
def read_CwLimit( self):
return 0
def read_CcwLimit( self):
return 0