frappy_psi.electromagnet: further improvements
This commit is contained in:
@@ -19,6 +19,7 @@ Mod('mot',
|
||||
value=Param(unit='mm'),
|
||||
check_limit_switches=True,
|
||||
encoder_mode='CHECK',
|
||||
encoder_type='absolute',
|
||||
target_min = 10,
|
||||
target_max = 210,
|
||||
)
|
||||
|
||||
@@ -261,8 +261,9 @@ class SampleHolder(Drivable):
|
||||
|
||||
motor = Attached()
|
||||
|
||||
target = Parameter('target sample holder position', datatype=IntRange(0,6), readonly=False)
|
||||
value = Parameter('sample holder position', datatype=IntRange(0,6))
|
||||
target = Parameter('target sample holder position', datatype=IntRange(0,9), readonly=False)
|
||||
value = Parameter('sample holder position', datatype=IntRange(0,9))
|
||||
target_max = Parameter('highest sample holder number', datatype=IntRange(0,9), default=6, readonly=False)
|
||||
pos_offset = Parameter('position of first sample holder [mm]', datatype=FloatRange(unit='mm'), default=43)
|
||||
pos_diff = Parameter('distance between two sample positions [mm]', datatype=FloatRange(unit='mm'), default=50)
|
||||
tolerance = Parameter('position tolerance', datatype=FloatRange(unit='mm'), default=1)
|
||||
@@ -271,7 +272,7 @@ class SampleHolder(Drivable):
|
||||
|
||||
def read_value(self):
|
||||
if not self.motor.isBusy():
|
||||
val = self.motor.read_value()
|
||||
val = self.motor.value
|
||||
self._pos = (val - self.pos_offset) / self.pos_diff # convert mm to sample position
|
||||
return round(self._pos)
|
||||
return self.value
|
||||
@@ -281,10 +282,12 @@ class SampleHolder(Drivable):
|
||||
val = self.pos_offset + target * self.pos_diff
|
||||
self.motor.write_target(val)
|
||||
self.read_status()
|
||||
self.setFastPoll(True)
|
||||
|
||||
def read_status(self):
|
||||
if self.motor.isBusy():
|
||||
return BUSY, ('stopping motor' if self._stopflag else 'motor is running')
|
||||
self.setFastPoll(False)
|
||||
if abs(self._pos - self.value) > abs(self.tolerance / self.pos_diff):
|
||||
if self._stopflag:
|
||||
return ERROR, 'stopped at intermediate position'
|
||||
@@ -294,4 +297,4 @@ class SampleHolder(Drivable):
|
||||
def stop(self):
|
||||
self.motor.stop()
|
||||
self._stopflag = True
|
||||
self.status = BUSY, 'stopping'
|
||||
self.status = BUSY, 'stopping motor'
|
||||
|
||||
Reference in New Issue
Block a user