frappy_psi.electromagnet: further improvements

This commit is contained in:
2026-05-21 10:00:50 +02:00
parent 95cf793178
commit 701759393c
2 changed files with 8 additions and 4 deletions
+1
View File
@@ -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,
)
+7 -4
View File
@@ -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'