split SlitUnit into two SlitBlades; simplified interface
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
from slic.devices.general.motor import Motor
|
||||
|
||||
|
||||
class SlitBlades:
|
||||
|
||||
def __init__(self, ID, mot1, mot2):
|
||||
self.ID = ID
|
||||
self.mot1 = Motor(mot1)
|
||||
self.mot2 = Motor(mot2)
|
||||
|
||||
@classmethod
|
||||
def from_motor_name(cls, ID, motor_name="MOTOR_X"):
|
||||
mot1 = ID + ":" + motor_name + "1"
|
||||
mot2 = ID + ":" + motor_name + "2"
|
||||
return cls(ID, mot1, mot2)
|
||||
|
||||
def get_gap(self):
|
||||
return self.mot2.get_current_value() - self.mot1.get_current_value()
|
||||
|
||||
def get_pos(self):
|
||||
return (self.mot1.get_current_value() + self.mot2.get_current_value()) / 2
|
||||
|
||||
def set_gap(self, value, pos=None):
|
||||
if pos is None:
|
||||
pos = self.get_pos()
|
||||
t1 = self.mot1.set_target_value(pos - value / 2)
|
||||
t2 = self.mot2.set_target_value(pos + value / 2)
|
||||
return t1, t2
|
||||
|
||||
def set_pos(self, value, gap=None):
|
||||
if gap is None:
|
||||
gap = self.get_gap()
|
||||
t1 = self.mot1.set_target_value(value - gap / 2)
|
||||
t2 = self.mot2.set_target_value(value + gap / 2)
|
||||
return t1, t2
|
||||
|
||||
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
from slic.devices.general.motor import Motor
|
||||
|
||||
from slitbase import SlitBase
|
||||
from slitblades import SlitBlades
|
||||
|
||||
|
||||
class SlitUnit(SlitBase):
|
||||
|
||||
def __init__(self, ID, x1="MOTOR_X1", x2="MOTOR_X2", y1="MOTOR_Y1", y2="MOTOR_Y2"):
|
||||
def __init__(self, ID, x1, x2, y1, y2):
|
||||
self.ID = ID
|
||||
self.x1 = Motor(x1)
|
||||
self.x2 = Motor(x2)
|
||||
self.y1 = Motor(y1)
|
||||
self.y2 = Motor(y2)
|
||||
self.x = SlitBlades(ID + "-X", x1, x2)
|
||||
self.y = SlitBlades(ID + "-Y", y1, y2)
|
||||
|
||||
@classmethod
|
||||
def from_motor_name(cls, ID, motor_name="MOTOR_"):
|
||||
@@ -18,47 +15,31 @@ class SlitUnit(SlitBase):
|
||||
x2 = ID + ":" + motor_name + "X2"
|
||||
y1 = ID + ":" + motor_name + "Y1"
|
||||
y2 = ID + ":" + motor_name + "Y2"
|
||||
return cls(ID, x1=x1, x2=x2, y1=y1, y2=y2)
|
||||
return cls(ID, x1, x2, y1, y2)
|
||||
|
||||
def get_hg(self):
|
||||
return self.x2.get_current_value() - self.x1.get_current_value()
|
||||
return self.x.get_gap()
|
||||
|
||||
def get_vg(self):
|
||||
return self.y2.get_current_value() - self.y1.get_current_value()
|
||||
return self.y.get_gap
|
||||
|
||||
def get_ho(self):
|
||||
return (self.x1.get_current_value() + self.x2.get_current_value()) / 2
|
||||
return self.x.get_pos()
|
||||
|
||||
def get_vo(self):
|
||||
return (self.y1.get_current_value() + self.y2.get_current_value()) / 2
|
||||
return self.y.get_pos()
|
||||
|
||||
def set_hg(self, value, ho=None):
|
||||
if ho is None:
|
||||
ho = self.get_ho()
|
||||
c1 = self.x1.set_target_value(ho - value / 2)
|
||||
c2 = self.x2.set_target_value(ho + value / 2)
|
||||
return c1, c2
|
||||
def set_hg(self, *args, **kwargs):
|
||||
return self.x.set_gap(*args, **kwargs)
|
||||
|
||||
def set_vg(self, value, vo=None):
|
||||
if vo is None:
|
||||
vo = self.get_vo()
|
||||
c1 = self.y1.set_target_value(vo - value / 2)
|
||||
c2 = self.y2.set_target_value(vo + value / 2)
|
||||
return c1, c2
|
||||
def set_vg(self, *args, **kwargs):
|
||||
return self.y.set_gap(*args, **kwargs)
|
||||
|
||||
def set_ho(self, value, hg=None):
|
||||
if hg is None:
|
||||
hg = self.get_hg()
|
||||
c1 = self.x1.set_target_value(value - hg / 2)
|
||||
c2 = self.x2.set_target_value(value + hg / 2)
|
||||
return c1, c2
|
||||
def set_ho(self, *args, **kwargs):
|
||||
return self.x.set_pos(*args, **kwargs)
|
||||
|
||||
def set_vo(self, value, vg=None):
|
||||
if vg is None:
|
||||
vg = self.get_vg()
|
||||
c1 = self.y1.set_target_value(value - vg / 2)
|
||||
c2 = self.y2.set_target_value(value + vg / 2)
|
||||
return c1, c2
|
||||
def set_vo(self, *args, **kwargs):
|
||||
return self.y.set_pos(*args, **kwargs)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,11 @@ from slitunit import SlitUnit
|
||||
class SlitUnitJJ(SlitUnit):
|
||||
|
||||
def __init__(self, ID):
|
||||
super().__init__(ID, x1="MOT3", x2="MOT2", y1="MOT5", y2="MOT4")
|
||||
x1 = ID + ":MOT3"
|
||||
x2 = ID + ":MOT2"
|
||||
y1 = ID + ":MOT5"
|
||||
y2 = ID + ":MOT4"
|
||||
super().__init__(ID, x1, x2, y1, y2)
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user