Source code for contrast.motors.E727

"""
Provides a Motor subclass for the PI E727 piezo driver.
"""

import PyTango
from . import Motor


[docs]class E727Motor(Motor): """ Single axis on the E727. """ def __init__(self, device, axis, **kwargs): """ :param device: Path to the Tango device :type device: str :param axis: Axis number of the E727 controller :type axis: int :param ``**kwargs``: Passed to the ``Motor`` base class """ super(E727Motor, self).__init__(**kwargs) assert axis in (1, 2, 3) self.proxy = PyTango.DeviceProxy(device) self.proxy.set_source(PyTango.DevSource.DEV) self.axis = axis if axis == 1: self._mvrelfunc = self.proxy.move_relative1 elif axis == 2: self._mvrelfunc = self.proxy.move_relative2 elif axis == 3: self._mvrelfunc = self.proxy.move_relative3 def _server_position(self): if self.axis == 1: return self.proxy.position1 elif self.axis == 2: return self.proxy.position2 elif self.axis == 3: return self.proxy.position3 @property def dial_position(self): return self._server_position() @dial_position.setter def dial_position(self, pos): current = self._server_position() self._mvrelfunc(pos - current) def busy(self): state = self.proxy.State() if state in (PyTango.DevState.STANDBY, PyTango.DevState.ON): return False return True def stop(self): self.proxy.stop()