#!/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