phytron: next fix
Change-Id: I72debb43b02f07cf9ff79286293105f052314a35
This commit is contained in:
parent
84d0d44f38
commit
6697462f15
@ -168,10 +168,9 @@ class Motor(HasOffset, HasStates, PersistentMixin, HasIO, Drivable):
|
||||
def write_target(self, value):
|
||||
self.read_alive_time()
|
||||
if self._reset_needed:
|
||||
self.status = ERROR, 'reset needed after power up (probably position lost)'
|
||||
if not self.status[1].startswith('reset needed'):
|
||||
self.status = ERROR, 'reset needed after ' + self.status[1]
|
||||
raise HardwareError(self.status[1])
|
||||
if self.status[0] == ERROR:
|
||||
raise HardwareError('need reset')
|
||||
self.saveParameters()
|
||||
if self.backlash:
|
||||
# drive first to target + backlash
|
||||
@ -191,6 +190,7 @@ class Motor(HasOffset, HasStates, PersistentMixin, HasIO, Drivable):
|
||||
sysstatus = sysstatus[2:4] if self.axis == 'X' else sysstatus[6:8]
|
||||
status = self.STATUS_MAP.get(sysstatus) or (ERROR, f'unknown error {sysstatus}')
|
||||
if status[0] == ERROR:
|
||||
self._reset_needed = True
|
||||
return status
|
||||
return super().read_status() # status from state machine
|
||||
|
||||
@ -212,6 +212,7 @@ class Motor(HasOffset, HasStates, PersistentMixin, HasIO, Drivable):
|
||||
self.value, e1, e2)
|
||||
self.get('S') # stop
|
||||
self.saveParameters()
|
||||
self._reset_needed = True
|
||||
raise HardwareError('encoder lag error')
|
||||
|
||||
@status_code(BUSY)
|
||||
@ -242,6 +243,7 @@ class Motor(HasOffset, HasStates, PersistentMixin, HasIO, Drivable):
|
||||
if sm.mismatch_count > 2:
|
||||
self.log.error('encoder mismatch: abs(%g - %g) < %g',
|
||||
enc, pos, self.encoder_tolerance)
|
||||
self._reset_needed = True
|
||||
raise HardwareError('encoder does not match pos')
|
||||
sm.mismatch_count += 1
|
||||
return Retry
|
||||
@ -255,7 +257,7 @@ class Motor(HasOffset, HasStates, PersistentMixin, HasIO, Drivable):
|
||||
def reset_error(self):
|
||||
"""Reset error, set position to encoder"""
|
||||
self.read_value()
|
||||
if self.status[0] == ERROR or self._reset_needed:
|
||||
if self._reset_needed:
|
||||
newenc = enc = self.read_encoder()
|
||||
pos = self.value
|
||||
if abs(enc - pos) > self.encoder_tolerance or self.encoder_mode == 'NO':
|
||||
|
Loading…
x
Reference in New Issue
Block a user