Files
motorDriverTests/tests/sinqMotor/home.py

42 lines
1.1 KiB
Python

import time
def home(motor, forward):
encoder = motor.read_field('encoder_type')
if encoder == 'absolute':
is_absolute = True
elif encoder == 'incremental':
is_absolute = False
else:
raise ValueError(f'Unknown encoder type {encoder}')
# Start a homing run and observe the motor behaviour depending on the
# encoder type
if forward:
motor.write_field('homeforward')
else:
motor.write_field('homereverse')
# Give the record some time to react
time.sleep(0.5)
if is_absolute:
# Motor should not move at all
assert motor.read_field('moving') == 0
assert motor.read_field('donemoving') == 1
assert not motor.has_error()
else:
# Motor should start movement
assert motor.read_field('moving') == 1
assert motor.read_field('donemoving') == 0
assert not motor.has_error()
assert not motor.is_homed()
motor.wait_for_done()
assert motor.read_field('moving') == 0
assert motor.read_field('donemoving') == 1
assert not motor.has_error()
assert motor.is_homed()