From 3687ed85e536c739084c8555db75d49072bd3445 Mon Sep 17 00:00:00 2001 From: Markus Zolliker Date: Fri, 30 Apr 2021 17:28:05 +0200 Subject: [PATCH] first tries with uniax stick Change-Id: I70da38aff091f7fc64f409485db335cde07163c9 --- cfg/trinamic.cfg | 1 - secop_psi/trinamic.py | 19 +++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/cfg/trinamic.cfg b/cfg/trinamic.cfg index 4d38eb8..3fa8fb4 100644 --- a/cfg/trinamic.cfg +++ b/cfg/trinamic.cfg @@ -23,4 +23,3 @@ speed=40 encoder_tolerance=3.6 free_wheeling=0.1 power_down_delay=0.1 -# pull_up=1 diff --git a/secop_psi/trinamic.py b/secop_psi/trinamic.py index f4ad309..a0ad2ef 100644 --- a/secop_psi/trinamic.py +++ b/secop_psi/trinamic.py @@ -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