Reports until 16:30, Saturday 08 December 2018
H1 ISC
stefan.ballmer@LIGO.ORG - posted 16:30, Saturday 08 December 2018 - last comment - 17:32, Tuesday 18 December 2018(45777)
IMC_power_adjust_func() updated to enable ramping down input sliders

Hang, TVo, Stefan,

Worrying abut high frequency saturation in the CARM servo (https://alog.ligo-wa.caltech.edu/aLOG/index.php?callRep=45768), we updated the IMC_power_adjust_func() in ISC_library.py to start scaling down the input sliders instead of the output sliders.

Specifically, if IMC-REFL_SERVO_FASTGAIN drops below a certain threshold (FG_THRESH), instead of adjusting IMC-REFL_SERVO_FASTGAIN and LSC-MCL_GAIN, we switch to adjusting IMC-REFL_SERVO_IN1GAIN and LSC-REFL_SUM_A_IN2GAIN.

Since we start off with IMC-REFL_SERVO_FASTGAIN = 0 dB at 2W, FG_THRESH=-20 corresponds to 20W, and would leave everything the same up to 20W.

 

For now we left FG_THRESH at -10dB (6.3W) to give us an extre factor of 3 saturation headroom.

Below is the source code (in ISC_library.py), which is checked into SVN.

 

We tested the script for functionality and went to 28W for 15min (92Mpc), but then still lost lock. More work to be done.

 

 

#################################################
# check input power
#################################################
def IMC_power_adjust_func():
    # at 2.0 Watts input power the nominal gain on IMC Fast Gain should be 0 dB
    calc_gain = 20.0*math.log10(2.0/ezca['IMC-PWR_IN_OUTMON']) 
    calc_gain = min(calc_gain, 31)

    # it only changes the power if there is a difference of 1 dB.  
    # This is intended to prevent repeated 1 dB gain changes
    #  if we are on the edge between two gain settings with the input power. 
    FG_THRESH=-10    # was -20
    IMC_NOM  = 28
    CMB_NOM  =  8
    PWR_MIN  =  4.0

    if ezca['IMC-PWR_IN_OUTMON'] < PWR_MIN:
        # use old logic - ignore the input sliders
        # this is to avoid interfering with the common mode engage sequence
        diff_gain = calc_gain - ezca['IMC-REFL_SERVO_FASTGAIN']

        if abs(diff_gain) >= 1:
            R_diff_gain=round(diff_gain)
            log('power_adjust is changing IMC Common Mode Board IN1 gain by a bit...' )
            ezca['IMC-REFL_SERVO_FASTGAIN'] += R_diff_gain

            time.sleep(0.2)
            if abs(ezca['LSC-MCL_GAIN']) > 1e-9:
                ezca['LSC-MCL_GAIN'] *= 10**(R_diff_gain/20.0)

            elif abs(ezca['IMC-MCL_GAIN']) > 1e-9:
                ezca['IMC-MCL_GAIN'] *= 10**(R_diff_gain/20.0)
    else:
        # use new logic - incorporate input sliders, start lowering input sliders once IMC-REFL_SERVO_FASTGAIN falls below FG_THRESH
        diff_gain_old = calc_gain - ezca['IMC-REFL_SERVO_FASTGAIN']
        diff_gain = calc_gain - ezca['IMC-REFL_SERVO_FASTGAIN'] + CMB_NOM - ezca['LSC-REFL_SUM_A_IN2GAIN']

        if abs(diff_gain) >= 1:
            R_diff_gain_old=round(diff_gain_old)
            
            if ezca['IMC-REFL_SERVO_FASTGAIN'] + R_diff_gain_old >= FG_THRESH:            
                log('power_adjust is changing IMC Common Mode Board IN1 gain by a bit...' )
                ezca['IMC-REFL_SERVO_FASTGAIN'] += R_diff_gain_old
                if abs(ezca['LSC-MCL_GAIN']) > 1e-9:
                    ezca['LSC-MCL_GAIN'] *= 10**(R_diff_gain_old/20.0)
                elif abs(ezca['IMC-MCL_GAIN']) > 1e-9:
                    ezca['IMC-MCL_GAIN'] *= 10**(R_diff_gain_old/20.0)
                # and set back the input gains where they need to be
                ezca['IMC-REFL_SERVO_IN1GAIN'] = IMC_NOM
                ezca['LSC-REFL_SUM_A_IN2GAIN'] = CMB_NOM
            else:
                # set the output gains where they need to be
                R_diff_gain = FG_THRESH - ezca['IMC-REFL_SERVO_FASTGAIN']
                if abs(ezca['LSC-MCL_GAIN']) > 1e-9:
                    ezca['LSC-MCL_GAIN'] *= 10**(R_diff_gain/20.0)
                elif abs(ezca['IMC-MCL_GAIN']) > 1e-9:
                    ezca['IMC-MCL_GAIN'] *= 10**(R_diff_gain/20.0)            
                ezca['IMC-REFL_SERVO_FASTGAIN'] =FG_THRESH
                # set the output gains
                diff_gain_new = calc_gain - (FG_THRESH) +CMB_NOM - ezca['LSC-REFL_SUM_A_IN2GAIN']
                R_diff_gain_new = round(diff_gain_new)
                ezca['IMC-REFL_SERVO_IN1GAIN'] += R_diff_gain_new
                ezca['LSC-REFL_SUM_A_IN2GAIN'] += R_diff_gain_new
 

Comments related to this report
sheila.dwyer@LIGO.ORG - 17:32, Tuesday 18 December 2018 (46053)

Craig, Sheila

We have reverted this change, because in the past we had locklosses caused during power up by glitches on the input sliders.  We fixed those locklosses when we changed to instead adjusting the output slider during the power up.  See 44422

We can lower the input gain by changing the gain used in ANALOG_CARM