trinamic and persistent

- remove methods from Modules existing in secop.persistent
- do reset on start when encoder matched and motor was power cycled
This commit is contained in:
2021-06-08 15:08:54 +02:00
parent d06cb0414d
commit 071f933982
2 changed files with 11 additions and 62 deletions

View File

@ -127,9 +127,7 @@ class Motor(PersistentMixin, HasIodev, Drivable):
fast_pollfactor = 0.001 # poll as fast as possible when busy
_started = 0
_calcTimeout = True
_need_reset = False
_save_filename = None
# _try_count = 0
_need_reset = None
def comm(self, cmd, adr, value=0, bank=0):
"""set or get a parameter
@ -229,13 +227,18 @@ class Motor(PersistentMixin, HasIodev, Drivable):
writeDict = self.loadParameters()
self.log.info('set to previous saved values %r', writeDict)
# self.encoder now contains the last known (persistent) value
self.fix_encoder(encoder)
if self._need_reset is None:
if self.status[0] == self.Status.IDLE:
# server started, power cycled and encoder value matches last one
self.reset()
else:
self.fix_encoder(encoder)
self._need_reset = True
self.status = self.Status.ERROR, 'power loss'
# or should we just fix instead of error status?
# self.set('steppos', self.steppos - self.zero, check=False)
self.comm(SET_GLOB_PAR, 255, 1, bank=2) # set initialized flag
self._started = 0
self._need_reset = True
self.status = self.Status.ERROR, 'power loss'
# or should we just fix instead of error status?
# self.set('steppos', self.steppos - self.zero, check=False)
return encoder if abs(encoder - steppos) > self.tolerance else steppos