rework motor tweak

This commit is contained in:
2022-08-19 09:51:21 +02:00
parent 9e72b681a4
commit 3ef576f690
5 changed files with 108 additions and 73 deletions

View File

@@ -43,10 +43,12 @@ class MotorTweak(QWidget, Ui_MotorTweak):
def connect_motor(self, motor_base, short_name=None, **kwargs):
# TODO: DO NOT USE Motor base class, but reduce to the only really needed PV: s.a. class QopticZoom(object)
# TODO: have a own motor Class as class SimMotor:
m = Motor(motor_base)
m.get_position()
self._ignore_limits = m.HLM == m.LLM # if both high/low limits are equal they are meaningless
self.motor = m
self._motor = m
if not short_name:
short_name = m.description
self.short_name = short_name
@@ -73,8 +75,8 @@ class MotorTweak(QWidget, Ui_MotorTweak):
# self.jog_forward.released.connect(lambda: self.jog('forward', False))
# self.jog_reverse.released.connect(lambda: self.jog('reverse', False))
self.tweak_forward.clicked.connect(lambda m: self.motor.tweak('forward'))
self.tweak_reverse.clicked.connect(lambda m: self.motor.tweak('reverse'))
self.tweak_forward.clicked.connect(lambda x: m.tweak('forward'))
self.tweak_reverse.clicked.connect(lambda x: m.tweak('reverse'))
self.bind_wheel()
@@ -101,7 +103,7 @@ class MotorTweak(QWidget, Ui_MotorTweak):
def set_motor_validator(self, **kwargs):
m = self.motor
m = self._motor
lineedit = self._drive_val
min, max = m.PV('LLM').get(), m.PV('HLM').get()
if min == max:
@@ -111,18 +113,35 @@ class MotorTweak(QWidget, Ui_MotorTweak):
def move_relative(self, dist):
self.motor.move(dist, ignore_limits=True, relative=True)
try:
self._val+=dist
except AttributeError:
pass
self._motor.move(dist, ignore_limits=True, relative=True)
def is_done(self):
self.motor.refresh()
return 1 == self.motor.done_moving
m=self._motor
m.refresh()
return 1 == m.done_moving
def get_position(self):
return self.motor.get_position(readback=True)
def get_rbv(self):
#return self._motor.get('RBV')
m=self._motor
return m.get_position(readback=True)
def get_val(self):
#return self._motor.get('VAL')
try:
v=self._val
except AttributeError:
m=self._motor
self._val=v=m.get('VAL')
return v
def is_homed(self):
self.motor.refresh()
status = DeltatauMotorStatus(self.motor.motor_status)
m=self._motor
m.refresh()
status = DeltatauMotorStatus(m.motor_status)
return bool(DeltatauMotorStatus.MOTOR_HAS_BEEN_HOMED & status)
def move_motor_to_position(self, drive=None, wait=False, assert_position=False):
@@ -130,9 +149,14 @@ class MotorTweak(QWidget, Ui_MotorTweak):
drive = float(self._drive_val.text())
if assert_position:
wait=True
self.motor.move(drive, wait=wait, ignore_limits=True, relative=False)
try:
self._val=drive
except AttributeError:
pass
m=self._motor
m.move(drive, wait=wait, ignore_limits=True, relative=False)
if assert_position:
assert_motor_positions([(self.motor, drive, 0.1)], timeout=1)
assert_motor_positions([(m, drive, 0.1)], timeout=1)
def emit_signals(self, **kw):
'''
@@ -191,7 +215,7 @@ class MotorTweak(QWidget, Ui_MotorTweak):
self.event_axis_fault.emit(self._pvname, kw)
def update_label(self, **kwargs):
m = self.motor
m = self._motor
self.label.setText(self._templates[self._label_style].format(rbv=m.readback))
self.jog_forward.setToolTip('jog forward at {:.3f} {}/s'.format(m.jog_speed, m.units))
self.jog_reverse.setToolTip('jog reverse at {:.3f} {}/s'.format(m.jog_speed, m.units))
@@ -199,7 +223,7 @@ class MotorTweak(QWidget, Ui_MotorTweak):
self.tweak_reverse.setToolTip('tweak reverse by {:.3f} {}'.format(m.tweak_val, m.units))
def update_jog_speed(self, event):
m = self.motor
m = self._motor
speed = m.jog_speed
sign = math.copysign(1, event.angleDelta().y())
m.jog_speed = speed + (sign * 0.1 * speed)
@@ -207,7 +231,7 @@ class MotorTweak(QWidget, Ui_MotorTweak):
self.jog_reverse.setToolTip('jog reverse at {:.3f} {}/s'.format(m.jog_speed, m.units))
def tweak_event(self, event):
m = self.motor
m = self._motor
sign = event.angleDelta().y()
if sign < 0:
m.tweak_reverse = 1
@@ -219,14 +243,14 @@ class MotorTweak(QWidget, Ui_MotorTweak):
self.tweak_reverse.wheelEvent = self.tweak_event
def jog(self, direction, enable):
m = self.motor
m = self._motor
if 'forw' in direction:
m.jog_forward = int(enable)
else:
m.jog_reverse = int(enable)
def contextMenuEvent(self, event):
m = self.motor
m = self._motor
menu = QMenu(self)
menu.setTitle(self.short_name)
@@ -267,7 +291,7 @@ class MotorTweak(QWidget, Ui_MotorTweak):
prec, ok = QInputDialog.getInt(self, msg, msg, prec, 0, 10)
_log.debug('prec after (%d) %d', ok, prec)
if ok:
self.motor.put('PREC', prec, wait=True)
m.put('PREC', prec, wait=True)
elif action == changejogspeedAction:
name = m.NAME
@@ -275,7 +299,7 @@ class MotorTweak(QWidget, Ui_MotorTweak):
msg = 'Jog speed for motor {}'.format(name)
speed, ok = QInputDialog.getDouble(self, msg, msg, speed, 0.01, m.slew_speed, m.precision)
if ok:
self.motor.put('JVEL', speed, wait=True)
m.put('JVEL', speed, wait=True)
elif action == changetweakstepAction:
name = m.NAME
@@ -283,13 +307,13 @@ class MotorTweak(QWidget, Ui_MotorTweak):
msg = 'Tweak step for motor {} at {} {}'.format(name, tv, m.units)
tv, ok = QInputDialog.getDouble(self, msg, msg, tv, pow(10, -m.precision), m.slew_speed, m.precision)
if ok:
self.motor.put('TWV', tv, wait=True)
m.put('TWV', tv, wait=True)
elif action == tozeroAction:
m.move(0.0, ignore_limits=True)
elif action == stopmotorAction:
self.motor.stop_go = SPMG_STOP if m.stop_go == SPMG_GO else SPMG_GO
m.stop_go = SPMG_STOP if m.stop_go == SPMG_GO else SPMG_GO
elif action == autolabelsAction:
self._auto_labels = not self._auto_labels
@@ -315,7 +339,7 @@ class MotorTweak(QWidget, Ui_MotorTweak):
self.update_label()
def update_label_template(self):
m = self.motor
m = self._motor
source = self._templates_source
target = self._templates
@@ -340,7 +364,7 @@ class MotorTweak(QWidget, Ui_MotorTweak):
qp.end()
def _draw_limits(self, qp):
m = self.motor
m = self._motor
width, height = self.size().width(), self.size().height()
pad = 5
rounding = 2