continue rt and laser

This commit is contained in:
Holler Mirko
2024-07-22 14:16:20 +02:00
committed by wakonig_k
parent b28649e6af
commit f359e32610

View File

@@ -79,8 +79,8 @@ class RtFlomniController(Controller):
kind=kind,
)
self.tracker_info = {}
self.ssi = {}
self._min_scan_buffer_reached = False
self.rt_pid_voltage = None
def is_axis_moving(self, axis_Id) -> bool:
# this checks that axis is on target
@@ -115,9 +115,29 @@ class RtFlomniController(Controller):
self.get_axis_by_name("rtz").user_setpoint.setpoint = 0
time.sleep(0.05)
def feedback_get_status_and_ssi(self):
ret = self.socket_put_and_receive("J2")
# remove trailing \n
ret = ret.split("\n")[0]
status_and_ssi_values = [float(val) for val in ret.split(",")]
self.ssi = {
"feedback_error": status_and_ssi_values[0],
"ssi_1": status_and_ssi_values[1],
"ssi_2": status_and_ssi_values[2],
"ssi_3": status_and_ssi_values[3],
"ssi_4": status_and_ssi_values[4],
"ssi_5": status_and_ssi_values[5],
}
def feedback_is_running(self) -> bool:
status = int(float(self.socket_put_and_receive("l2").strip()))
if status == 1:
self.feedback_get_status_and_ssi()
interferometer_feedback_not_running = int(self.tracker_info["feedback_error"])
if interferometer_feedback_not_running == 1:
return False
return True
@@ -285,8 +305,8 @@ class RtFlomniController(Controller):
def laser_tracker_check_and_wait_for_signalstrength(self):
#first check on target
self.laser_tracker_wait_on_target(self)
signal = self.read_ssi_interferometer(3)
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")
@@ -297,75 +317,766 @@ class RtFlomniController(Controller):
)
wait_counter+=1
time.sleep(1)
signal = self.read_ssi_interferometer(3)
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()
########## old code. above is checked for omny
def laser_tracker_show_all(self):
self.laser_update_tracker_info()
self.feedback_get_status_and_ssi()
t = PrettyTable()
t.title = f"Laser Tracker Info"
t.title = f"Laser SSI Info"
t.field_names = ["Name", "Value"]
for key, val in self.tracker_info.items():
for key, val in self.ssi.items():
t.add_row([key, val])
print(t)
def laser_tracker_galil_enable(self):
ftrackz_con = self.get_device_manager().devices.ftrackz.obj.controller
ftrackz_con.socket_put_confirmed("tracken=1")
ftrackz_con.socket_put_confirmed("trackyct=0")
ftrackz_con.socket_put_confirmed("trackzct=0")
ftrackz_con.socket_put_confirmed("XQ#Tracker")
otracky_con = self.get_device_manager().devices.otracky.obj.controller
otracky_con.socket_put_confirmed("tracken=1")
otracky_con.socket_put_confirmed("trackyct=0")
otracky_con.socket_put_confirmed("trackzct=0")
def laser_tracker_galil_disable(self):
otracky_con = self.get_device_manager().devices.otracky.obj.controller
otracky_con.socket_put_confirmed("tracken=0")
def slew_rate_limiters_on_target(self) -> bool:
ret = int(float(self.socket_put_and_receive("y").strip()))
if ret == 3:
return True
return False
def pid_y(self) -> float:
ret = float(self.socket_put_and_receive("G").strip())
return ret
def read_ssi_interferometer(self, axis_number):
val = float(self.socket_put_and_receive(f"j{axis_number}").strip())
return val
def laser_tracker_galil_status(self):
otracky_con = self.get_device_manager().devices.otracky.obj.controller
if bool(float(otracky_con.socket_put_and_receive("MGtracken").strip())) == 0:
print("Tracking in the Galil Controller is disabled.")
print("Use laser_tracker_galil_enable to enable.\n")
return(0)
else:
print("Tracking in the Galil Controller is enabled.")
trackyct=bool(float(otracky_con.socket_put_and_receive("MGtrackyct").strip()))
trackzct=bool(float(otracky_con.socket_put_and_receive("MGtrackzct").strip()))
print(f"Galil Trackcounters y={trackyct}, z={trackzct}")
def show_signal_strength_interferometer(self):
self.feedback_get_status_and_ssi()
t = PrettyTable()
t.title = f"Interferometer signal strength"
t.field_names = ["Axis", "Value"]
for i in range(4):
t.add_row([i, self.read_ssi_interferometer(i)])
print(t)
########## old code. above is checked for omny
def _omny_interferometer_openloop_steps(channel, steps, amplitude) '{
_smar_rt_move_openloop_steps(0,channel,steps,amplitude)
printf("Channel %d, steps %d, Amplitude %d ",channel,steps,amplitude)
sleep(0.01)
while(_smar_rt_is_stepping_open_loop(0,channel)) {
sleep(0.002)
}
}'
def _omny_interferometer_optimize(channel) '{
global _omny_interferometer_opt_signalchannel
global _omny_interferometer_opt_mirrorname
global _omny_interferometer_opt_averaging_time
global _omny_interferometer_opt_steps1_pos
global _omny_interferometer_opt_steps1_neg
global _omny_interferometer_opt_steps2_pos
global _omny_interferometer_opt_steps2_neg
global _omny_interferometer_opt_signal_stop
global _omny_interferometer_opt_signal_min_begin
global _omny_interferometer_opt_step_divider
global _omny_interferometer_opt_amplitude1_pos
global _omny_interferometer_opt_amplitude1_neg
global _omny_interferometer_opt_amplitude2_pos
global _omny_interferometer_opt_amplitude2_neg
if (channel != 3 && channel != 4) {
printf("invalid channel number %d.\n", channel)
exit
}
local previous_signal
local current_sample
local direction
local cycle_counter
local cycle_max
local reversal_counter
local reversal_max
local steps_pos
local steps_neg
local _omny_interferometer_opt_amplitude_pos
local _omny_interferometer_opt_amplitude_neg
if (channel == 3) {
steps_pos = _omny_interferometer_opt_steps1_pos
steps_neg = _omny_interferometer_opt_steps1_neg
_omny_interferometer_opt_amplitude_pos = _omny_interferometer_opt_amplitude1_pos
_omny_interferometer_opt_amplitude_neg = _omny_interferometer_opt_amplitude1_neg
}
if (channel == 4) {
steps_pos = _omny_interferometer_opt_steps2_pos
steps_neg = _omny_interferometer_opt_steps2_neg
_omny_interferometer_opt_amplitude_pos = _omny_interferometer_opt_amplitude2_pos
_omny_interferometer_opt_amplitude_neg = _omny_interferometer_opt_amplitude2_neg
}
previous_signal=_omny_interferometer_get_signalsample()
if (previous_signal<_omny_interferometer_opt_signal_min_begin) {
printf("Minimum signal of axis \"%s\" to start alignment not present. Aborting.\n", _omny_interferometer_opt_mirrorname)
exit
}
if (previous_signal>_omny_interferometer_opt_signal_stop) {
printf("Interferometer signal of axis \"%s\" is good, no alignment needed anymore.\n", _omny_interferometer_opt_mirrorname)
}
else {
direction = 1
cycle_counter=0
cycle_max=20
reversal_counter=0
reversal_max=4
while(_omny_interferometer_ssi[_omny_interferometer_opt_signalchannel]<_omny_interferometer_opt_signal_stop && cycle_counter<cycle_max && reversal_counter<reversal_max) {
if (previous_signal<_omny_interferometer_opt_signal_min_begin) {
printf("Minimum signal of axis \"%s\" to continue alignment not present. Aborting.\n", _omny_interferometer_opt_mirrorname)
exit
}
if(direction>0) {
_omny_interferometer_openloop_steps(channel, steps_pos,_omny_interferometer_opt_amplitude_pos)
printf("Aligning axis \"%s\". target: %d, current %d, step %d.\r", _omny_interferometer_opt_mirrorname, _omny_interferometer_opt_signal_stop, previous_signal, steps_pos)
}
else {
_omny_interferometer_openloop_steps(channel, -steps_neg,_omny_interferometer_opt_amplitude_neg)
printf("Aligning axis \"%s\". target: %d, current %d, step %d.\r", _omny_interferometer_opt_mirrorname, _omny_interferometer_opt_signal_stop, previous_signal, -steps_neg)
}
current_sample = _omny_interferometer_get_signalsample()
if (previous_signal>current_sample) {
# if (direction<0||cycle_counter>1) {
if (direction<0) {
steps_pos=int(steps_pos/2)
steps_neg=int(steps_neg/2)
if(steps_pos<1)
steps_pos=1
if(steps_neg<1)
steps_neg=1
}
direction=direction*(-1)
reversal_counter++
}
previous_signal=current_sample
cycle_counter++
}
printf("Finished aligning axis \"%s\". target: %d, current %d.\n", _omny_interferometer_opt_mirrorname, _omny_interferometer_opt_signal_stop, previous_signal)
}
}'
constant _omny_interferometer_switch_server_and_port_name "mpc1887:3335"
#debug options
constant _omny_interferometer_switch_debug_put_and_receive 0x0001
constant _omny_interferometer_switch_debug_verbose 0x8000
# ----------------------------------------------------------------------
def _omny_interferometer_switch_put(command_str) '{
# send a command to the omnyscan server, exit upon failure, return upon success
if (sock_put(_omny_interferometer_switch_server_and_port_name,sprintf("%s\r",command_str)) < 1) {
printf("_omny_interferometer_switch_put(\"%s\"): could not send the command to %s\n",\
command_str,_omny_interferometer_switch_server_and_port_name)
exit
}
}'
# -------------omicreturnvalue---------------------------------------------------------
def _omny_interferometer_switch_put_and_receive(command_str) '{
local ret_str
# send a command to the omnyscan server, exit upon failure
_omny_interferometer_switch_put(command_str)
# read a reply from the omnyscan server, exit upon failure
ret_str = ""
ret_str = sock_get(_omny_interferometer_switch_server_and_port_name)
if (ret_str == "") {
printf("_omny_interferometer_switch_put_and_receive(\"%s\"): did not receive a return string upon sending the command to %s\n",\
command_str,_omny_interferometer_switch_server_and_port_name)
exit
}
# return the string upon success
return(ret_str)
}'
# ----------------------------------------------------------------------
def _omny_interferometer_switch_open_socket() '{
# open a socket connection to the laser interferometer server
if (!sock_par(_omny_interferometer_switch_server_and_port_name,"connect")) {
printf("$0 : error upon opening a socket connection to %s\n",_omny_interferometer_switch_server_and_port_name)
exit
}
printf("A socket connection to %s has been established.\n",_omny_interferometer_switch_server_and_port_name)
}'
# ----------------------------------------------------------------------
def _omny_interferometer_switch_flush_socket() '{
# flush pending input from the socket connection to the server
sock_par(_omny_interferometer_switch_server_and_port_name,"flush")
}'
# ----------------------------------------------------------------------
def _omny_interferometer_switch_close_socket() '{
sock_par(_omny_interferometer_switch_server_and_port_name,"close")
printf("The socket connection to %s has been closed.\n",_omny_interferometer_switch_server_and_port_name)
}'
# ----------------------------------------------------------------------
def _omny_interferometer_switch_connect '{
global _omny_interferometer_switch_enabled
# open a socket connection
_omny_interferometer_switch_open_socket()
_omny_interferometer_switch_put("?000")
sleep(1)
_omny_interferometer_switch_flush_socket( )
}'
# ----------------------------------------------------------------------
def _omny_interferometer_switch_disconnect '{
global _omny_interferometer_switch_enabled
_omny_interferometer_switch_close_socket()
}'
# ----------------------------------------------------------------------
def _omny_interferometer_switch_LED_on '{
global _omny_interferometer_switch_enabled
_omny_interferometer_switch_put_and_receive("\!00S01")
}'
# ----------------------------------------------------------------------
def _omny_interferometer_switch_alloff '{
global _omny_interferometer_switch_enabled
#switch all off
_omny_interferometer_switch_put_and_receive("\!0020000")
#check all off
if ("_0000\r" != _omny_interferometer_switch_put_and_receive("?002"))
{
printf ("Not all channels switched off. Aborting.\n")
exit
}
#LED OFF
_omny_interferometer_switch_put_and_receive("\!00S00")
}'
# ----------------------------------------------------------------------
def _omny_interferometer_switch_channel(channel) '{
global _omny_interferometer_switch_enabled
_omny_interferometer_switch_alloff
sleep(0.1)
if (channel == 1) #Relais 1 and 2
if("|0003\r" != _omny_interferometer_switch_put_and_receive("\!0020003"))
{printf("Channel switching failed. Aborting.\n"); exit }
if (channel == 2) #Relais 3 and 4
if("|000C\r" != _omny_interferometer_switch_put_and_receive("\!002000C"))
{printf("Channel switching failed. Aborting.\n"); exit }
if (channel == 3) #Relais 5 and 6
if("|0030\r" != _omny_interferometer_switch_put_and_receive("\!0020030"))
{printf("Channel switching failed. Aborting.\n"); exit }
if (channel == 4) #Relais 7 and 8
if("|00C0\r" != _omny_interferometer_switch_put_and_receive("\!00200C0"))
{printf("Channel switching failed. Aborting.\n"); exit }
if (channel == 5) #Relais 9 and 10
if("|0300\r" != _omny_interferometer_switch_put_and_receive("\!0020300"))
{printf("Channel switching failed. Aborting.\n"); exit }
if (channel == 6) #Relais 11 and 12
if("|0C00\r" != _omny_interferometer_switch_put_and_receive("\!0020C00"))
{printf("Channel switching failed. Aborting.\n"); exit }
if (channel == 7) #Relais 13 and 14
if("|3000\r" != _omny_interferometer_switch_put_and_receive("\!0023000"))
{printf("Channel switching failed. Aborting.\n"); exit }
if (channel == 8) #Relais 7 and 8 SPECIAL CASE use osafzp y signal to align osa y
if("|00C0\r" != _omny_interferometer_switch_put_and_receive("\!00200C0"))
{printf("Channel switching failed. Aborting.\n"); exit }
if (channel == 9) #Relais 15 and 16
if("|C000\r" != _omny_interferometer_switch_put_and_receive("\!002C000"))
{printf("Channel switching failed. Aborting.\n"); exit }
}'
def _omny_interferometer_get_signalsample() '{
global _omny_interferometer_opt_signalchannel
global _omny_interferometer_opt_averaging_time
#ensure no averaging running currently
_rt_status_feedback()
#measure first sample
_rt_start_averaging_SSI
sleep(_omny_interferometer_opt_averaging_time)
_rt_status_feedback()
return(_omny_interferometer_ssi[_omny_interferometer_opt_signalchannel])
}'
def _omny_interferometer_setup_channel(mirror_channel) '{
global _omny_interferometer_opt_signalchannel
global _omny_interferometer_opt_mirrorname
global _omny_interferometer_opt_averaging_time
global _omny_interferometer_opt_steps1_pos
global _omny_interferometer_opt_steps1_neg
global _omny_interferometer_opt_steps2_pos
global _omny_interferometer_opt_steps2_neg
global _omny_interferometer_opt_signal_stop
global _omny_interferometer_opt_signal_min_begin
global _omny_interferometer_opt_step_divider
global _omny_interferometer_opt_amplitude1_pos
global _omny_interferometer_opt_amplitude1_neg
global _omny_interferometer_opt_amplitude2_pos
global _omny_interferometer_opt_amplitude2_neg
#default
_omny_interferometer_opt_amplitude1_pos=2500
_omny_interferometer_opt_amplitude1_neg=2500
_omny_interferometer_opt_amplitude2_pos=2500
_omny_interferometer_opt_amplitude2_neg=2500
#####################################
#incoupling of angle interferometer
#####################################
if(mirror_channel==1)
{
_omny_interferometer_opt_signalchannel = 4
_omny_interferometer_opt_mirrorname = "Inc Angle"
_omny_interferometer_opt_averaging_time = 0.1
_omny_interferometer_opt_steps1_pos = 1
_omny_interferometer_opt_steps1_neg = 1
_omny_interferometer_opt_steps2_pos = 10
_omny_interferometer_opt_steps2_neg = 10
_omny_interferometer_opt_signal_stop = 2400
_omny_interferometer_opt_signal_min_begin = 1000
_omny_interferometer_opt_step_divider = 1
_omny_interferometer_opt_amplitude1_pos=2000
_omny_interferometer_opt_amplitude1_neg=2000
_omny_interferometer_opt_amplitude2_pos=2000
_omny_interferometer_opt_amplitude2_neg=2000
}
#####################################
#incoupling of ST OSA Y
#####################################
if(mirror_channel==2)
{
_omny_interferometer_opt_signalchannel = 1
_omny_interferometer_opt_mirrorname = "Inc ST OSA Y"
_omny_interferometer_opt_averaging_time = 0.1
_omny_interferometer_opt_steps1_pos = 1
_omny_interferometer_opt_steps1_neg = 1
_omny_interferometer_opt_steps2_pos = 1
_omny_interferometer_opt_steps2_neg = 1
_omny_interferometer_opt_signal_stop = 5000
_omny_interferometer_opt_signal_min_begin = 2000
_omny_interferometer_opt_step_divider = 1
_omny_interferometer_opt_amplitude1_pos=2000
_omny_interferometer_opt_amplitude1_neg=2000
_omny_interferometer_opt_amplitude2_pos=2000
_omny_interferometer_opt_amplitude2_neg=2000
}
#####################################
#incoupling of OSA FZP Y
#####################################
if(mirror_channel==3)
{
_omny_interferometer_opt_signalchannel = 0
_omny_interferometer_opt_mirrorname = "Inc OSA FZP Y"
_omny_interferometer_opt_averaging_time = 0.25
_omny_interferometer_opt_steps1_pos = 1
_omny_interferometer_opt_steps1_neg = 2
_omny_interferometer_opt_steps2_pos = 1
_omny_interferometer_opt_steps2_neg = 3
_omny_interferometer_opt_signal_stop = 7200
_omny_interferometer_opt_signal_min_begin = 3000
_omny_interferometer_opt_step_divider = 1
_omny_interferometer_opt_amplitude1_pos=2500
_omny_interferometer_opt_amplitude1_neg=2500
_omny_interferometer_opt_amplitude2_pos=2500
_omny_interferometer_opt_amplitude2_neg=2500
}
#####################################
#OSA Y
#####################################
if(mirror_channel==4)
{
_omny_interferometer_opt_signalchannel = 1
_omny_interferometer_opt_mirrorname = "OSA Y"
_omny_interferometer_opt_averaging_time = 0.1
_omny_interferometer_opt_steps1_pos = 1
_omny_interferometer_opt_steps1_neg = 1
_omny_interferometer_opt_steps2_pos = 1
_omny_interferometer_opt_steps2_neg = 1
_omny_interferometer_opt_signal_stop = 5000
_omny_interferometer_opt_signal_min_begin = 2000
_omny_interferometer_opt_step_divider = 1
_omny_interferometer_opt_amplitude1_pos=3000
_omny_interferometer_opt_amplitude1_neg=3000
_omny_interferometer_opt_amplitude2_pos=3000
_omny_interferometer_opt_amplitude2_neg=3000
}
#####################################
#FZP Y
#####################################
if(mirror_channel==5)
{
_omny_interferometer_opt_signalchannel = 0
_omny_interferometer_opt_mirrorname = "FZP Y"
_omny_interferometer_opt_averaging_time = 0.2
_omny_interferometer_opt_steps1_pos = 6
_omny_interferometer_opt_steps1_neg = 6
_omny_interferometer_opt_steps2_pos = 8
_omny_interferometer_opt_steps2_neg = 4
_omny_interferometer_opt_signal_stop = 8000
_omny_interferometer_opt_signal_min_begin = 3000
_omny_interferometer_opt_step_divider = 1
_omny_interferometer_opt_amplitude1_pos=3000
_omny_interferometer_opt_amplitude1_neg=3000
_omny_interferometer_opt_amplitude2_pos=3000
_omny_interferometer_opt_amplitude2_neg=3000
}
#####################################
#OSA X
#####################################
if(mirror_channel==6)
{
if (!_laser_tracker_check_on_target()) {
sleep(5)
}
if (_laser_tracker_check_on_target()) {
_omny_interferometer_opt_signalchannel = 3
_omny_interferometer_opt_mirrorname = "OSA X"
_omny_interferometer_opt_averaging_time = 0.2
_omny_interferometer_opt_steps1_pos = 2
_omny_interferometer_opt_steps1_neg = 1
_omny_interferometer_opt_steps2_pos = 1
_omny_interferometer_opt_steps2_neg = 1
# _omny_interferometer_opt_signal_stop = 9000
_omny_interferometer_opt_signal_stop = 8850
_omny_interferometer_opt_signal_min_begin = 3000
_omny_interferometer_opt_step_divider = 1
_omny_interferometer_opt_amplitude1_pos=3000
_omny_interferometer_opt_amplitude1_neg=3000
_omny_interferometer_opt_amplitude2_pos=3700
_omny_interferometer_opt_amplitude2_neg=2500
}
else {
text_bf
printf("Tracker is not on target! Not aligning!\n")
text_non_bf
_omny_interferometer_opt_signalchannel = -1
_omny_interferometer_opt_steps1_pos = 0
_omny_interferometer_opt_steps1_neg = 0
_omny_interferometer_opt_steps2_pos = 0
_omny_interferometer_opt_steps2_neg = 0
}
}
#####################################
#FZP Y
#####################################
if(mirror_channel==7)
{
_omny_interferometer_opt_signalchannel = 2
_omny_interferometer_opt_mirrorname = "FZP X"
_omny_interferometer_opt_averaging_time = 0.2
_omny_interferometer_opt_steps1_pos = 4
_omny_interferometer_opt_steps1_neg = 4
_omny_interferometer_opt_steps2_pos = 4
_omny_interferometer_opt_steps2_neg = 4
_omny_interferometer_opt_signal_stop = 8000
_omny_interferometer_opt_signal_min_begin = 4000
_omny_interferometer_opt_step_divider = 1
_omny_interferometer_opt_amplitude1_pos=2500
_omny_interferometer_opt_amplitude1_neg=2500
_omny_interferometer_opt_amplitude2_pos=2500
_omny_interferometer_opt_amplitude2_neg=2500
}
#####################################
#OSA Y
#####################################
if(mirror_channel==8)
{
_omny_interferometer_opt_signalchannel = 0
_omny_interferometer_opt_mirrorname = "OSA Y USING SIGNAL OSA FZP"
_omny_interferometer_opt_averaging_time = 0.2
_omny_interferometer_opt_steps1_pos = 1
_omny_interferometer_opt_steps1_neg = 1
_omny_interferometer_opt_steps2_pos = 1
_omny_interferometer_opt_steps2_neg = 1
_omny_interferometer_opt_signal_stop = 5000
_omny_interferometer_opt_signal_min_begin = 2000
_omny_interferometer_opt_step_divider = 1
_omny_interferometer_opt_amplitude1_pos=3000
_omny_interferometer_opt_amplitude1_neg=3000
_omny_interferometer_opt_amplitude2_pos=3000
_omny_interferometer_opt_amplitude2_neg=3000
}
if(mirror_channel<1 || mirror_channel>8)
{
_omny_interferometer_opt_signalchannel = -1
_omny_interferometer_opt_mirrorname = "none"
}
}'
def _omny_interferometer_channel_is_selected(channel) '{
if(channel == -1) {
printf("Sorry, no channel is selected. Use numbers to select.\n")
printf("1: Incoupling angle interferometer\n")
return(-1)
}
else
{
return(1)
}
}'
def _omny_interferometer_tweak '{
global _omny_interferometer_opt_signalchannel
global _omny_interferometer_opt_mirrorname
local _key1
local _mirror_channel
_mirror_channel=-1
global _omny_interferometer_opt_steps1_pos
global _omny_interferometer_opt_steps1_neg
global _omny_interferometer_opt_steps2_pos
global _omny_interferometer_opt_steps2_neg
global _omny_interferometer_opt_amplitude1_pos
global _omny_interferometer_opt_amplitude1_neg
global _omny_interferometer_opt_amplitude2_pos
global _omny_interferometer_opt_amplitude2_neg
printf("This macro allows you to tweak the laser tracker.\n")
#printf("First checking that the tracker is running.\n")
global _rt_enabled
if(!_rt_enabled){
printf("rt is not enabled. please enable rt and try again.\n")
exit
}
# loop until stopped by pressing ESC or CTRL-C
_key1 = 0
printf("Ready to tweak the interferometer. Press q to quit.\n")
printf("The arrows adjust directions.\n")
printf("Numbers select the mirror aligner.\n")
local gotkey
while ((_key1 != 27) && (_key1 != asc("q")) && (_key1 != asc("Q"))) {
gotkey=0
_key1 = asc(input(-1))
if (_key1 == _key_esc) {
_key1 = _get_esc_key()
}
if (_key1 == _key_left) {
if(_omny_interferometer_channel_is_selected(_mirror_channel)==1)
_omny_interferometer_openloop_steps(3, _omny_interferometer_opt_steps1_pos,_omny_interferometer_opt_amplitude1_pos)
gotkey=1
}
if (_key1 == _key_right) {
if(_omny_interferometer_channel_is_selected(_mirror_channel)==1)
_omny_interferometer_openloop_steps(3, -_omny_interferometer_opt_steps1_neg,_omny_interferometer_opt_amplitude1_neg)
gotkey=1
}
if (_key1 == _key_down) {
if(_omny_interferometer_channel_is_selected(_mirror_channel)==1)
_omny_interferometer_openloop_steps(4, _omny_interferometer_opt_steps2_pos,_omny_interferometer_opt_amplitude2_pos)
gotkey=1
}
if (_key1 == _key_up) {
if(_omny_interferometer_channel_is_selected(_mirror_channel)==1)
_omny_interferometer_openloop_steps(4, -_omny_interferometer_opt_steps2_neg,_omny_interferometer_opt_amplitude2_neg)
gotkey=1
}
if (_key1 == asc("1")) {
_mirror_channel=1
gotkey=1
}
if (_key1 == asc("2")) {
_mirror_channel=2
gotkey=1
}
if (_key1 == asc("3")) {
_mirror_channel=3
gotkey=1
}
if (_key1 == asc("4")) {
_mirror_channel=4
gotkey=1
}
if (_key1 == asc("5")) {
_mirror_channel=5
gotkey=1
}
if (_key1 == asc("6")) {
_mirror_channel=6
gotkey=1
}
if (_key1 == asc("7")) {
_mirror_channel=7
gotkey=1
}
if (_key1 == asc("8")) {
_mirror_channel=8
gotkey=1
}
if (_key1 >= asc("1") && _key1 <= asc("8")) {
_omny_interferometer_setup_channel(_mirror_channel)
_omny_interferometer_switch_channel(_mirror_channel)
}
if (_key1 == asc("+")) {
printf("Increasing voltage amplitudes by 100.\n")
_omny_interferometer_opt_amplitude1_pos=_omny_interferometer_opt_amplitude1_pos+100
_omny_interferometer_opt_amplitude1_neg=_omny_interferometer_opt_amplitude1_neg+100
_omny_interferometer_opt_amplitude2_pos=_omny_interferometer_opt_amplitude2_pos+100
_omny_interferometer_opt_amplitude2_neg=_omny_interferometer_opt_amplitude2_neg+100
}
if (_key1 == asc("-")) {
printf("Decreasing voltage amplitudes by 100.\n")
_omny_interferometer_opt_amplitude1_pos=_omny_interferometer_opt_amplitude1_pos-100
_omny_interferometer_opt_amplitude1_neg=_omny_interferometer_opt_amplitude1_neg-100
_omny_interferometer_opt_amplitude2_pos=_omny_interferometer_opt_amplitude2_pos-100
_omny_interferometer_opt_amplitude2_neg=_omny_interferometer_opt_amplitude2_neg-100
}
if (_key1 == asc("a")) {
if(_omny_interferometer_channel_is_selected(_mirror_channel)==1) {
_omny_interferometer_optimize(3)
_omny_interferometer_optimize(4)
_omny_interferometer_optimize(3)
_omny_interferometer_optimize(4)
}
}
if(_omny_interferometer_opt_amplitude1_pos<1)
_omny_interferometer_opt_amplitude1_pos=100
if(_omny_interferometer_opt_amplitude1_neg<1)
_omny_interferometer_opt_amplitude1_neg=100
if(_omny_interferometer_opt_amplitude2_pos<1)
_omny_interferometer_opt_amplitude2_pos=100
if(_omny_interferometer_opt_amplitude2_neg<1)
_omny_interferometer_opt_amplitude2_neg=100
if(_omny_interferometer_opt_amplitude1_pos>4090)
_omny_interferometer_opt_amplitude1_pos=4090
if(_omny_interferometer_opt_amplitude1_neg>4090)
_omny_interferometer_opt_amplitude1_neg=4090
if(_omny_interferometer_opt_amplitude2_pos>4090)
_omny_interferometer_opt_amplitude2_pos=4090
if(_omny_interferometer_opt_amplitude2_neg>4090)
_omny_interferometer_opt_amplitude2_neg=4090
sleep(0.01)
if (gotkey==1)
if(_omny_interferometer_channel_is_selected(_mirror_channel)==1)
printf("Channel %d - %s - Autostop %d - Signal %d\n",_mirror_channel,_omny_interferometer_opt_mirrorname,_omny_interferometer_opt_signal_stop,_omny_interferometer_get_signalsample())
}
_omny_interferometer_switch_alloff
rt_show_signalstrength_interferometer
}'
def _omny_interferometer_align_incoupling_angle '{
local _mirror_channel
_mirror_channel=1
_omny_interferometer_setup_channel(_mirror_channel)
if (_omny_interferometer_get_signalsample()>_omny_interferometer_opt_signal_stop) {
printf("Interferometer signal of axis \"%s\" is good, no alignment needed.\n", _omny_interferometer_opt_mirrorname)
}
else {
_omny_interferometer_switch_channel(_mirror_channel)
_omny_interferometer_optimize(3)
_omny_interferometer_optimize(4)
_omny_interferometer_optimize(3)
_omny_interferometer_optimize(4)
_omny_interferometer_switch_alloff
rt_show_signalstrength_interferometer
}
}'
def _omny_interferometer_align_tracking '{
local _mirror_channel
_mirror_channel=6
_omny_interferometer_setup_channel(_mirror_channel)
if (_omny_interferometer_get_signalsample()>_omny_interferometer_opt_signal_stop) {
printf("Interferometer signal of axis \"%s\" is good, no alignment needed.\n", _omny_interferometer_opt_mirrorname)
}
else {
_omny_interferometer_switch_channel(_mirror_channel)
_omny_interferometer_optimize(4)
_omny_interferometer_optimize(4)
_omny_interferometer_optimize(3)
_omny_interferometer_optimize(4)
_omny_interferometer_optimize(3)
_omny_interferometer_switch_alloff
rt_show_signalstrength_interferometer
}
}'
########## below code from flomni
def _get_signals_from_table(self, return_table) -> dict:
self.average_stdeviations_x_st_fzp += float(return_table[4])