Jeff, Kiwamu, Stefan
We had trouble engaging the ISS 2nd loop at 40W. The core issue is that the digitized signal (H1:PSL-ISS_SECONDLOOP_SIGNAL_OUTPUT) swings rail to rail without the loop, making it difficult to properly pre-set the offset adjuster (H1:PSL-ISS_SECONDLOOP_REF_SIGNAL_ANA).
As a result, when engaged, the ISS 1st loop tended to swing into saturation.
I patched the Guardian as follows:
- Instead of trying to rely on a calculation for the offset adjuster (H1:PSL-ISS_SECONDLOOP_REF_SIGNAL_ANA), I hard-coded it to 0.987 V, which is where it likes to sit at 40W. (THis is obviously not a long-term solution.)
- As soon as the servo comes on, I ramp H1:PSL-ISS_SECONDLOOP_REF_SIGNAL_SERVO_GAIN to zero, clear the history, and re-engage it on the diffreation power.
This seemed to engage the 2nd loop without excessive transient - back to full locking.
PS: I might have already mentioned this: but the ISS SHOULD BE AC COUPLED!
Code:
In PREPARE_ISS:
# read current servo signal value. If it is too far from the operating point, correct the offset.
#second_loop_out = cdu.avg(1, 'PSL-ISS_SECONDLOOP_SIGNAL_OUT16')
#if abs(second_loop_out) > 1.0:
# # measure current input PD value
# # Sets the ref. signal value to bring it to close to the operating point
# pd_avg = cdu.avg(1, 'PSL-ISS_SECONDLOOP_PD_14_SUM_INMON')
# ezca['PSL-ISS_SECONDLOOP_REF_SIGNAL_ANA'] = round(0.5*((pd_avg*2.29*.0006103515625)+0.101), 6)
# time.sleep(5)
# above section commented out - instead command the value that worked (Stefan Ballmer 20160629 for 40W)
ezca['PSL-ISS_SECONDLOOP_REF_SIGNAL_ANA']=-0.9826934814453125
In CLOSE_ISS, once the loop is closed:
# the loop is successfully locked, ramp off the loop (Stefan Ballmer 20160629 for 40W)
ezca['PSL-ISS_SECONDLOOP_REF_SIGNAL_SERVO_GAIN'] = 0
and a little later:
# clear and ramp on the loop (Stefan Ballmer 20160629 for 40W)
ezca['PSL-ISS_SECONDLOOP_REF_SIGNAL_SERVO_RSET'] = 2
time.sleep(0.1)
ezca['PSL-ISS_SECONDLOOP_REF_SIGNAL_SERVO_GAIN'] = 1
When people were engaging the offset adjuster servo with 40W into IMC, eventually H1:PSL-ISS_SECONDLOOP_REF_SIGNAL_MON_OUTPUT settled down to -0.98V and H1:PSL-ISS_SECONDLOOP_SUM14_DC_OUT16 to 39.6.
This PSL-ISS_SECONDLOOP_SUM14_DC_OUTPUT thing is a digital sum of four digital outputs, each with dewhite, so it's well behaved even with high power, unlike PSL-ISS_SECONDLOOP_PD_14_SUM which is just a readback of the second board input without dewhite.
pd_avg = cdu.avg(2, 'PSL-ISS_SECONDLOOP_SUM14_DC_OUT16')
ezca['PSL-ISS_SECONDLOOP_REF_SIGNAL_ANA'] = round(-pd_avg*0.98/39.6, 6)
instead of
ezca['PSL-ISS_SECONDLOOP_REF_SIGNAL_ANA']=-0.9826934814453125
But you might have to fine tune the above to account for some offset in the board. I haven't changed the guardian.