feat: add readout_encoder_position to sgalil controller

This commit is contained in:
e21206 2023-08-04 08:26:05 +02:00
parent f3866a29e9
commit a94c12ac12

View File

@ -268,14 +268,16 @@ class GalilController(Controller):
check_values = [start_y, end_y, start_x, end_x] check_values = [start_y, end_y, start_x, end_x]
for val in check_values: for val in check_values:
self.check_value(val) self.check_value(val)
speed = np.abs(end_y - start_y) / (interval_y * exp_time + (interval_y - 1) * readtime) speed = np.abs(end_y - start_y) / (
(interval_y - 1) * exp_time + ((interval_y - 1) - 1) * readtime
)
if speed > 2.00 or speed < 0.02: if speed > 2.00 or speed < 0.02:
raise LimitError( raise LimitError(
f"Speed of {speed:.03f}mm/s is outside of acceptable range of 0.02 to 2 mm/s" f"Speed of {speed:.03f}mm/s is outside of acceptable range of 0.02 to 2 mm/s"
) )
gridmax = int(interval_x - 1) gridmax = int(interval_x - 1)
step_grid = (end_x - start_x) / interval_x step_grid = (end_x - start_x) / interval_x
n_samples = int(interval_y * (interval_x - 1)) n_samples = int(interval_y * interval_x)
# TODO check sign of stage for proper socket command. # TODO check sign of stage for proper socket command.
self.socket_put_and_receive(f"a_start={start_y:.04f};a_end={end_y:.04f};speed={speed:.04f}") self.socket_put_and_receive(f"a_start={start_y:.04f};a_end={end_y:.04f};speed={speed:.04f}")
self.socket_put_and_receive( self.socket_put_and_receive(
@ -287,6 +289,18 @@ class GalilController(Controller):
time.sleep(0.1) time.sleep(0.1)
self.socket_put_and_receive("XQ#SCANG") self.socket_put_and_receive("XQ#SCANG")
def read_encoder_position(fromval: int = 0, toval: int = None) -> tuple:
val_axis2 = [] # y axis
val_axis4 = [] # x axis
if toval is None:
toval = 1999
for ii in range(fromval, toval + 1):
print(ii)
ret = self.socket_put_and_receive(f"MGaposavg[{ii}]*10,cposavg[{ii}]*10")
val_axis4.append(float(ret.strip().split(" ")[0]) / 100000)
val_axis2.append(float(ret.strip().split(" ")[1]) / 100000)
return val_axis4, val_axis2
class GalilSignalBase(SocketSignal): class GalilSignalBase(SocketSignal):
def __init__(self, signal_name, **kwargs): def __init__(self, signal_name, **kwargs):
@ -357,7 +371,7 @@ class GalilSetpointSignal(GalilSignalBase):
""" """
target_val = val * self.parent.sign target_val = val * self.parent.sign
self.setpoint = target_val self.setpoint = target_val
axes_referenced = self.axis_is_referenced() axes_referenced = self.controller.axis_is_referenced()
if not axes_referenced: if not axes_referenced:
raise GalilError( raise GalilError(
"Not all axes are referenced. Please use controller.sgalil_reference(). BE AWARE that axes start moving, potentially beyond limits, make sure full range of motion is safe" "Not all axes are referenced. Please use controller.sgalil_reference(). BE AWARE that axes start moving, potentially beyond limits, make sure full range of motion is safe"