From a07a56822f2e02bb77c4a3c66635fb0b1a78a1f4 Mon Sep 17 00:00:00 2001 From: Holler Mirko Date: Fri, 13 Sep 2024 11:49:35 +0200 Subject: [PATCH] continued with auto alignment and laser tracker --- .../plugins/omny/omny_rt.py | 25 ++++++++++- csaxs_bec/devices/omny/rt/rt_omny_ophyd.py | 43 +++---------------- 2 files changed, 28 insertions(+), 40 deletions(-) diff --git a/csaxs_bec/bec_ipython_client/plugins/omny/omny_rt.py b/csaxs_bec/bec_ipython_client/plugins/omny/omny_rt.py index cb53a30..bcfbaeb 100644 --- a/csaxs_bec/bec_ipython_client/plugins/omny/omny_rt.py +++ b/csaxs_bec/bec_ipython_client/plugins/omny/omny_rt.py @@ -200,10 +200,10 @@ class OMNY_rt_client: min_begin = self.mirror_parameters[mirror_channel]["opt_signal_min_begin"] if previous_signal < min_begin: #raise OMNY_rt_clientError("error1") #(f"Minimum signal of axis {self.mirror_parameters[mirror_channel]["opt_mirrorname"]} to start alignment not present.") - print(f"Minimum signal for auto alignment {min_begin} not reached.") + print(f"\rMinimum signal for auto alignment {min_begin} not reached.") return elif previous_signal > self.mirror_parameters[mirror_channel]["opt_signal_stop"]: - print(f"Interferometer signal of axis is good") # {self.mirror_parameters[mirror_channel]["opt_mirrorname"]} is good.") + print(f"\rInterferometer signal of axis is good") # {self.mirror_parameters[mirror_channel]["opt_mirrorname"]} is good.") return else: direction = 1 @@ -409,3 +409,24 @@ class OMNY_rt_client: self.mirror_channel=-1 + def laser_tracker_check_and_wait_for_signalstrength(self): + #first check on target + dev.rtx.controller.laser_tracker_wait_on_target() + signal = dev.rtx.controller._omny_interferometer_get_signalsample("ssi_4",0.1) + min_signal = self.OMNYTools._get_user_param_safe("rtx","min_signal") + low_signal = self.OMNYTools._get_user_param_safe("rtx","low_signal") + wait_counter = 0 + while signal < min_signal and wait_counter<10: + print( + f"The signal of the tracker {signal} is below the minimum required signal of {min_signal}. Waiting..." + ) + wait_counter+=1 + time.sleep(0.4) + self.feedback_get_status_and_ssi() + signal = dev.rtx.controller._omny_interferometer_get_signalsample("ssi_4",0.1) + + if signal < low_signal: + print( + f"\x1b[91mThe signal of the tracker {signal} is below the low limit of {low_signal}. Auto readjustment...\x1b[0m" + ) + self.omny_interferometer_align_tracking() \ No newline at end of file diff --git a/csaxs_bec/devices/omny/rt/rt_omny_ophyd.py b/csaxs_bec/devices/omny/rt/rt_omny_ophyd.py index 7632d84..7151514 100644 --- a/csaxs_bec/devices/omny/rt/rt_omny_ophyd.py +++ b/csaxs_bec/devices/omny/rt/rt_omny_ophyd.py @@ -68,6 +68,8 @@ class RtOMNYController(Controller): "laser_tracker_galil_enable", "laser_tracker_galil_disable", "laser_tracker_print_intensity_for_otrack_tweaking", + "laser_tracker_check_on_target", + "laser_tracker_wait_on_target", ] def __init__( @@ -315,30 +317,7 @@ class RtOMNYController(Controller): raise RtError("Failed to reach laser target position.") - def laser_tracker_check_and_wait_for_signalstrength(self): - #first check on target - self.laser_tracker_wait_on_target(self) - self.feedback_get_status_and_ssi() - signal = self.ssi["ssi_3"] - rtx = self.get_device_manager().devices.rtx - min_signal = rtx.user_parameter.get("min_signal") - low_signal = rtx.user_parameter.get("low_signal") - wait_counter = 0 - while signal < min_signal and wait_counter<10: - print( - f"The signal of the tracker {signal} is below the minimum required signal of {min_signal}. Waiting..." - ) - wait_counter+=1 - time.sleep(1) - self.feedback_get_status_and_ssi() - signal = self.ssi["ssi_3"] - if signal < low_signal: - print( - f"\x1b[91mThe signal of the tracker {signal} is below the low limit of {low_signal}. Auto readjustment...\x1b[0m" - ) - #todo - self.interferometer_align_tracking() def laser_tracker_print_intensity_for_otrack_tweaking(self): @@ -348,19 +327,6 @@ class RtOMNYController(Controller): def laser_tracker_show_all(self): self.laser_update_tracker_info() - # self.tracker_info = { - # "beampos_y": tracker_values[5], - # "beampos_z": tracker_values[0], - # "tracker_intensity": tracker_values[2], - # "target_y": tracker_values[6], - # "threshold_intensity_y": tracker_values[8], - # "piezo_voltage_y": tracker_values[9], - # "enabled_y": tracker_values[10], - # "target_z": tracker_values[1], - # "threshold_intensity_z": tracker_values[3], - # "piezo_voltage_z": tracker_values[4], - # "enabled_z": bool(tracker_values[10]), - # } enabled_y = self.tracker_info["enabled_y"] print(f"Tracker enabled: {bool(enabled_y)}") if self.tracker_info["tracker_intensity"] < self.tracker_info["threshold_intensity_y"]: @@ -414,13 +380,14 @@ class RtOMNYController(Controller): print(f"Galil Trackcounters y={trackyct}, z={trackzct}") def show_signal_strength_interferometer(self): + channelnames={1:"OSA FZP Y",2:"ST OSA Y",3:"OSA FZP X",4:"ST OSA X",5:"Angle"} self.feedback_get_status_and_ssi() t = PrettyTable() t.title = f"Interferometer signal strength" - t.field_names = ["Axis", "Value"] + t.field_names = ["Channel", "Name", "Value"] for i in range(1,6): ssi = self.ssi[f"ssi_{i}"] - t.add_row([i, ssi]) + t.add_row([i,channelnames[i], ssi]) print(t) def _omny_interferometer_switch_open_socket(self):