Files
motorDriverTests/setup/sinqMotor/speed.py
Stefan Mathis 7ab4486748 Restructured the test setup
General test configurations are now separated from specific axis test
definitions.
2025-08-11 12:01:37 +02:00

57 lines
1.7 KiB
Python

def speed_fields_valid(motor):
"""
Check if the motor speed fields are valid:
VMAX >= VELO >= VBAS
"""
vbas = motor.get_pv('basespeed')
velo = motor.get_pv('speed')
vmax = motor.get_pv('maxspeed')
assert vmax >= velo >= vbas
assert vbas >= 0
assert velo >= 0
assert vmax >= 0
# If the motor is not a speed variable drive, VMAX == VELO == VBAS should hold true
if motor.get_pv('can_set_speed') == 0:
assert vmax == velo == vbas
def set_speed(motor, new_speed):
old_speed = motor.get_pv('speed')
try:
motor.put_pv('speed', new_speed)
if motor.get_pv('can_set_speed') != 0:
if new_speed > motor.get_pv('maxspeed'):
assert motor.get_pv('speed') == motor.get_pv('maxspeed')
elif new_speed < motor.get_pv('basespeed'):
assert motor.get_pv('speed') == motor.get_pv('basespeed')
else:
assert motor.get_pv('speed') == new_speed
else:
assert motor.get_pv('speed') == old_speed
finally:
motor.put_pv('speed', old_speed)
def set_minspeed_maxspeed_meanspeed(motor):
set_speed(motor, motor.get_pv('maxspeed'))
set_speed(motor, motor.get_pv('basespeed'))
set_speed(motor, 0.5 * (motor.get_pv('basespeed') + motor.get_pv('maxspeed')))
def set_invalid_speed_above_min_below_max(motor):
set_speed(motor, motor.get_pv('maxspeed') + 1)
set_speed(motor, motor.get_pv('basespeed') - 1)
def set_speed_and_move(motor, new_speed, target):
old_speed = motor.get_pv('speed')
try:
motor.put_pv('speed', new_speed)
motor.move_and_wait(target)
assert motor.at_target(target)
finally:
motor.put_pv('speed', old_speed)