continued rt ophyd. requires testing now. rt client will contain interferometer mirror tweaking
This commit is contained in:
@@ -20,3 +20,538 @@ class OMNYTools:
|
||||
raise ValueError(f"Device {device} has no user parameter definition for {var}.")
|
||||
return param.get(var)
|
||||
|
||||
|
||||
|
||||
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)
|
||||
|
||||
}
|
||||
}'
|
||||
|
||||
|
||||
|
||||
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
|
||||
}
|
||||
}'
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ import threading
|
||||
import time
|
||||
from typing import List
|
||||
import builtins
|
||||
import socket
|
||||
|
||||
import numpy as np
|
||||
from bec_lib import bec_logger, messages
|
||||
@@ -33,8 +34,10 @@ from csaxs_bec.devices.omny.rt.rt_ophyd import (
|
||||
|
||||
logger = bec_logger.logger
|
||||
|
||||
class RtOMNY_mirror_switchbox_Error(Exception):
|
||||
pass
|
||||
|
||||
class RtFlomniController(Controller):
|
||||
class RtOMNYController(Controller):
|
||||
_axes_per_controller = 3
|
||||
USER_ACCESS = [
|
||||
"socket_put_and_receive",
|
||||
@@ -59,7 +62,7 @@ class RtFlomniController(Controller):
|
||||
def __init__(
|
||||
self,
|
||||
*,
|
||||
name="RtFlomniController",
|
||||
name="RtOMNYController",
|
||||
socket_cls=None,
|
||||
socket_host=None,
|
||||
socket_port=None,
|
||||
@@ -81,6 +84,7 @@ class RtFlomniController(Controller):
|
||||
self.tracker_info = {}
|
||||
self.ssi = {}
|
||||
self._min_scan_buffer_reached = False
|
||||
self.switchbox_socket = socket.socket()
|
||||
|
||||
def is_axis_moving(self, axis_Id) -> bool:
|
||||
# this checks that axis is on target
|
||||
@@ -188,7 +192,7 @@ class RtFlomniController(Controller):
|
||||
@threadlocked
|
||||
def clear_trajectory_generator(self):
|
||||
self.socket_put("sc")
|
||||
logger.info("flomni scan stopped and deleted, moving to start position")
|
||||
logger.info("omny scan stopped and deleted, moving to start position")
|
||||
|
||||
def feedback_disable(self):
|
||||
self.clear_trajectory_generator()
|
||||
@@ -372,724 +376,104 @@ class RtFlomniController(Controller):
|
||||
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_switch_open_socket(self):
|
||||
# open a socket connection to the laser interferometer server
|
||||
host = "mpc2844.psi.ch" # as both code is running on same pc
|
||||
port = 3335 # socket server port number
|
||||
|
||||
self.switchbox_socket.connect((host, port)) # connect to the server
|
||||
|
||||
self._omny_interferometer_switch_put_and_receive("?000")
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
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
|
||||
}
|
||||
def _omny_interferometer_switch_channel(self, channel):
|
||||
self._omny_interferometer_switch_alloff()
|
||||
time.sleep(0.1)
|
||||
if channel == 1: #Relais 1 and 2
|
||||
if "|0003\r" != self._omny_interferometer_switch_put_and_receive("\!0020003"):
|
||||
raise RtOMNY_mirror_switchbox_Error("Channel switching failed.")
|
||||
elif channel == 2: #Relais 3 and 4
|
||||
if "|000C\r" != self._omny_interferometer_switch_put_and_receive("\!002000C"):
|
||||
raise RtOMNY_mirror_switchbox_Error("Channel switching failed.")
|
||||
elif channel == 3: #Relais 5 and 6
|
||||
if "|0030\r" != self._omny_interferometer_switch_put_and_receive("\!0020030"):
|
||||
raise RtOMNY_mirror_switchbox_Error("Channel switching failed.")
|
||||
elif channel == 4: #Relais 7 and 8
|
||||
if "|00C0\r" != self._omny_interferometer_switch_put_and_receive("\!00200C0"):
|
||||
raise RtOMNY_mirror_switchbox_Error("Channel switching failed.")
|
||||
elif channel == 5: #Relais 9 and 10
|
||||
if "|0300\r" != self._omny_interferometer_switch_put_and_receive("\!0020300"):
|
||||
raise RtOMNY_mirror_switchbox_Error("Channel switching failed.")
|
||||
elif channel == 6: #Relais 11 and 12
|
||||
if "|0C00\r" != self._omny_interferometer_switch_put_and_receive("\!0020C00"):
|
||||
raise RtOMNY_mirror_switchbox_Error("Channel switching failed.")
|
||||
elif channel == 7: #Relais 13 and 14
|
||||
if "|3000\r" != self._omny_interferometer_switch_put_and_receive("\!0023000"):
|
||||
raise RtOMNY_mirror_switchbox_Error("Channel switching failed.")
|
||||
elif channel == 8: #Relais 7 and 8 SPECIAL CASE use osafzp y signal to align osa y
|
||||
if "|00C0\r" != self._omny_interferometer_switch_put_and_receive("\!00200C0"):
|
||||
raise RtOMNY_mirror_switchbox_Error("Channel switching failed.")
|
||||
elif channel == 9: #Relais 15 and 16
|
||||
if "|C000\r" != self._omny_interferometer_switch_put_and_receive("\!002C000"):
|
||||
raise RtOMNY_mirror_switchbox_Error("Channel switching failed.")
|
||||
|
||||
|
||||
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 _omny_interferometer_switch_put_and_receive(self, command_str: str) -> str:
|
||||
self.switchbox_socket.send(command_str.encode())
|
||||
recv = self.switchbox_socket.recv(1024).decode()
|
||||
print(f"Sent {command_str} to switchbox and received {recv}")
|
||||
return recv
|
||||
|
||||
def _omny_interferometer_switch_LED_on(self):
|
||||
self._omny_interferometer_switch_put_and_receive("\!00S01")
|
||||
|
||||
def _omny_interferometer_switch_alloff(self):
|
||||
#switch all off
|
||||
self._omny_interferometer_switch_put_and_receive("\!0020000")
|
||||
#LED OFF
|
||||
self._omny_interferometer_switch_put_and_receive("\!00S00")
|
||||
#check all off
|
||||
if "_0000\r" != self._omny_interferometer_switch_put_and_receive("?002"):
|
||||
raise RtOMNY_mirror_switchbox_Error("Not all channels switched off.")
|
||||
|
||||
def _rt_start_averaging_SSI(self):
|
||||
self.socket_put("J3")
|
||||
|
||||
def _omny_interferometer_get_signalsample(self, channel, averaging_duration):
|
||||
#channel is string, eg ssi_1
|
||||
#ensure no averaging running currently
|
||||
self.feedback_is_running()
|
||||
|
||||
#measure first sample
|
||||
self._rt_start_averaging_SSI()
|
||||
time.sleep(averaging_duration)
|
||||
self.feedback_is_running()
|
||||
return self.ssi[channel]
|
||||
|
||||
|
||||
def _get_signals_from_table(self, return_table) -> dict:
|
||||
self.average_stdeviations_x_st_fzp += float(return_table[4])
|
||||
self.average_stdeviations_y_st_fzp += float(return_table[7])
|
||||
self.average_stdeviations_x_st_fzp += float(return_table[16])
|
||||
self.average_stdeviations_y_st_fzp += float(return_table[18])
|
||||
signals = {
|
||||
"target_x": {"value": float(return_table[2])},
|
||||
"average_x_st_fzp": {"value": float(return_table[3])},
|
||||
"stdev_x_st_fzp": {"value": float(return_table[4])},
|
||||
"target_y": {"value": float(return_table[5])},
|
||||
"average_y_st_fzp": {"value": float(return_table[6])},
|
||||
"stdev_y_st_fzp": {"value": float(return_table[7])},
|
||||
"average_rotz": {"value": float(return_table[8])},
|
||||
"stdev_rotz": {"value": float(return_table[9])},
|
||||
"target_x": {"value": float(return_table[3])},
|
||||
"average_x_st_osa": {"value": float(return_table[4])},
|
||||
"stdev_x_st_osa": {"value": float(return_table[5])},
|
||||
"target_y": {"value": float(return_table[6])},
|
||||
"average_y_st_osa": {"value": float(return_table[7])},
|
||||
"stdev_y_st_osa": {"value": float(return_table[8])},
|
||||
"average_x_osa_fzp": {"value": float(return_table[9])},
|
||||
"stdev_x_osa_fzp": {"value": float(return_table[10])},
|
||||
"average_y_osa_fzp": {"value": float(return_table[11])},
|
||||
"stdev_y_osa_fzp": {"value": float(return_table[12])},
|
||||
"average_rotz_st": {"value": float(return_table[13])},
|
||||
"stdev_rotz_st": {"value": float(return_table[14])},
|
||||
"average_x_st_fzp": {"value": float(return_table[15])},
|
||||
"stdev_x_st_fzp": {"value": float(return_table[16])},
|
||||
"average_y_st_fzp": {"value": float(return_table[17])},
|
||||
"stdev_y_st_fzp": {"value": float(return_table[18])},
|
||||
|
||||
"average_stdeviations_x_st_fzp": {
|
||||
"value": self.average_stdeviations_x_st_fzp / (int(return_table[0]) + 1)
|
||||
},
|
||||
@@ -1098,7 +482,7 @@ def _omny_interferometer_align_tracking '{
|
||||
},
|
||||
}
|
||||
return signals
|
||||
|
||||
|
||||
@threadlocked
|
||||
def start_scan(self):
|
||||
if not self.feedback_is_running():
|
||||
@@ -1120,6 +504,7 @@ def _omny_interferometer_align_tracking '{
|
||||
# start a point-by-point scan (for cont scan in flomni it would be "sa")
|
||||
self.socket_put_and_receive("sd")
|
||||
|
||||
|
||||
@retry_once
|
||||
@threadlocked
|
||||
def get_scan_status(self):
|
||||
@@ -1138,6 +523,7 @@ def _omny_interferometer_align_tracking '{
|
||||
current_position_in_scan = int(float(return_table[2]))
|
||||
return (mode, number_of_positions_planned, current_position_in_scan)
|
||||
|
||||
|
||||
def get_device_manager(self):
|
||||
for axis in self._axis:
|
||||
if hasattr(axis, "device_manager") and axis.device_manager:
|
||||
@@ -1152,7 +538,6 @@ def _omny_interferometer_align_tracking '{
|
||||
|
||||
self.average_stdeviations_x_st_fzp = 0
|
||||
self.average_stdeviations_y_st_fzp = 0
|
||||
self.average_lamni_angle = 0
|
||||
|
||||
mode, number_of_positions_planned, current_position_in_scan = self.get_scan_status()
|
||||
|
||||
@@ -1201,14 +586,14 @@ def _omny_interferometer_align_tracking '{
|
||||
)
|
||||
|
||||
logger.info(
|
||||
"Flomni statistics: Average of all standard deviations: x"
|
||||
"OMNY statistics: Average of all standard deviations: x"
|
||||
f" {self.average_stdeviations_x_st_fzp/number_of_samples_to_read}, y"
|
||||
f" {self.average_stdeviations_y_st_fzp/number_of_samples_to_read}."
|
||||
)
|
||||
|
||||
def publish_device_data(self, signals, point_id):
|
||||
self.get_device_manager().connector.set_and_publish(
|
||||
MessageEndpoints.device_read("rt_flomni"),
|
||||
MessageEndpoints.device_read("rt_omny"),
|
||||
messages.DeviceMessage(
|
||||
signals=signals, metadata={"point_id": point_id, **self.readout_metadata}
|
||||
),
|
||||
@@ -1227,7 +612,7 @@ def _omny_interferometer_align_tracking '{
|
||||
self.start_readout()
|
||||
|
||||
|
||||
class RtFlomniReadbackSignal(RtReadbackSignal):
|
||||
class RtOMNYReadbackSignal(RtReadbackSignal):
|
||||
@retry_once
|
||||
@threadlocked
|
||||
def _socket_get(self) -> float:
|
||||
@@ -1246,7 +631,7 @@ class RtFlomniReadbackSignal(RtReadbackSignal):
|
||||
return current_pos
|
||||
|
||||
|
||||
class RtFlomniSetpointSignal(RtSetpointSignal):
|
||||
class RtOMNYSetpointSignal(RtSetpointSignal):
|
||||
setpoint = 0
|
||||
|
||||
@retry_once
|
||||
@@ -1279,16 +664,16 @@ class RtFlomniSetpointSignal(RtSetpointSignal):
|
||||
self.controller.socket_put(f"pa{self.parent.axis_Id_numeric},{target_val:.4f}")
|
||||
|
||||
|
||||
class RtFlomniFeedbackRunning(RtSignalRO):
|
||||
class RtOMNYFeedbackRunning(RtSignalRO):
|
||||
@threadlocked
|
||||
def _socket_get(self):
|
||||
return int(self.parent.controller.feedback_is_running())
|
||||
|
||||
|
||||
class RtFlomniMotor(Device, PositionerBase):
|
||||
class RtOMNYMotor(Device, PositionerBase):
|
||||
USER_ACCESS = ["controller"]
|
||||
readback = Cpt(RtFlomniReadbackSignal, signal_name="readback", kind="hinted")
|
||||
user_setpoint = Cpt(RtFlomniSetpointSignal, signal_name="setpoint")
|
||||
readback = Cpt(RtOMNYReadbackSignal, signal_name="readback", kind="hinted")
|
||||
user_setpoint = Cpt(RtOMNYSetpointSignal, signal_name="setpoint")
|
||||
|
||||
high_limit_travel = Cpt(Signal, value=0, kind="omitted")
|
||||
low_limit_travel = Cpt(Signal, value=0, kind="omitted")
|
||||
@@ -1307,7 +692,7 @@ class RtFlomniMotor(Device, PositionerBase):
|
||||
read_attrs=None,
|
||||
configuration_attrs=None,
|
||||
parent=None,
|
||||
host="mpc2844.psi.ch",
|
||||
host="mpc3217.psi.ch",
|
||||
port=2222,
|
||||
sign=1,
|
||||
socket_cls=SocketIO,
|
||||
@@ -1317,7 +702,7 @@ class RtFlomniMotor(Device, PositionerBase):
|
||||
):
|
||||
self.axis_Id = axis_Id
|
||||
self.sign = sign
|
||||
self.controller = RtFlomniController(
|
||||
self.controller = RtOMNYController(
|
||||
socket_cls=socket_cls, socket_host=host, socket_port=port
|
||||
)
|
||||
self.controller.set_axis(axis=self, axis_nr=self.axis_Id_numeric)
|
||||
@@ -1410,7 +795,7 @@ class RtFlomniMotor(Device, PositionerBase):
|
||||
self.user_setpoint.put(position, wait=False)
|
||||
|
||||
def move_and_finish():
|
||||
while not self.controller.slew_rate_limiters_on_target() and not self._stopped:
|
||||
while not self._stopped:
|
||||
print("motor is moving")
|
||||
val = self.readback.read()
|
||||
self._run_subs(sub_type=self.SUB_READBACK, value=val, timestamp=time.time())
|
||||
@@ -1472,7 +857,7 @@ class RtFlomniMotor(Device, PositionerBase):
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
rtcontroller = RtFlomniController(
|
||||
rtcontroller = RtOMNYController(
|
||||
socket_cls=SocketIO, socket_host="mpc2844.psi.ch", socket_port=2222
|
||||
)
|
||||
rtcontroller.on()
|
||||
|
||||
Reference in New Issue
Block a user