111 lines
3.3 KiB
Python
111 lines
3.3 KiB
Python
dum = CAGET('ARIDI-PCT:CURRENT',rc) ; Ring current
|
|
dum = CAGET('X06DA-FE-AB1:OPEN_EPS',ab1) ; FrontEnd absorber shutter state
|
|
dum = CAGET('X06DA-FE-PH1:OPEN_EPS',fes) ; FrontEnd shutter state
|
|
dum = CAGET('X06DA-OP-ST1:OPEN_EPS',ehs) ; ExpHutch shutter state
|
|
dum = CAGET('X06DA-OP-MO:TC1',tc1) ; theta1 thermo couple 1
|
|
dum = CAGET('X06DA-OP-MO:E-GET',energy) ; Mono energy
|
|
dum = CAGET('X06DA-ES-DET:TRZ1',dtz) ; detector Z- position
|
|
|
|
;print, rc, ab1, fes, ehs, tc1, energy, dtz
|
|
|
|
; GOTO,garbage
|
|
|
|
IF rc LT 200 THEN BEGIN
|
|
MESSAGE,/cont,'Ring current too low - program will exit'
|
|
GOTO,garbage
|
|
ENDIF
|
|
|
|
IF NOT ab1 THEN BEGIN
|
|
MESSAGE,/cont,'FrontEndAbsorber closed - program will exit'
|
|
GOTO,garbage
|
|
ENDIF
|
|
|
|
IF NOT fes THEN BEGIN
|
|
MESSAGE,/cont,'FrontEndShutter closed - program will exit'
|
|
GOTO,garbage
|
|
ENDIF
|
|
|
|
IF NOT ehs THEN BEGIN
|
|
MESSAGE,/cont,'ExpHutchShutter closed - program will exit'
|
|
GOTO,garbage
|
|
ENDIF
|
|
|
|
IF energy GT 17.5 THEN BEGIN
|
|
MESSAGE,/cont,'Sorry, no feedback above 17.5 keV for now - program will exit'
|
|
GOTO,garbage
|
|
ENDIF
|
|
|
|
;dum = CAGET('X06DA-ES-BPM1:SUM.LOLO',tc) ; treshold for SUM signal. NOTE: need to be set correctly, say 1e11 (TBC). now it is 0
|
|
tc = 40 ; 2015.09.20 quick fix by MT JW
|
|
dum = CAGET('X06DA-ES-BPM1:SUM',cur)
|
|
dum = CAGET('X06DA-OP-XPM1:CHAN1',op1)
|
|
|
|
IF op1 LT 1.0 THEN BEGIN
|
|
MESSAGE,/cont,'X06DA-OP-XPM1:CHAN1 < 10 - please check monochromator, frontend, primary slits, ring current and undulator - program exits'
|
|
!sete_failed = 1
|
|
GOTO,GARBAGE
|
|
ENDIF
|
|
|
|
; define max deviations
|
|
dmx = 14. ; 2 x distance mirror HR-XBPM
|
|
ymax = 2e-3 ; endwhile criterion for vertical correction
|
|
|
|
|
|
IF cur LT tc THEN BEGIN ; check if beam is on CVD-XBPM
|
|
MESSAGE,/cont,'severe problem - NO BEAM ON HR-DIFFRACTOMETER XBPM - program exits'
|
|
!sete_failed = 1
|
|
GOTO,GARBAGE
|
|
ENDIF
|
|
|
|
; initial mirror TRY3 position
|
|
dum = CAGET('X06DA-OP-MI1:TRY3',y3i)
|
|
print, "initial X06DA-OP-MI1:TRY3", y3i
|
|
|
|
; how much beam is off?
|
|
dum = CAGET('X06DA-ES-BPM1:POSV',by)
|
|
print, "EBOX-POSV before rock", by
|
|
; if beam is not off, do nothing
|
|
;IF ehs AND ABS(by) LE ymax THEN BEGIN
|
|
; MESSAGE,/cont,'Beam aligned, no TRY3 mvt needed - program exits'
|
|
; GOTO,GARBAGE
|
|
;ENDIF
|
|
; can ROCK fixt it?
|
|
IF ABS(by) GT ymax THEN BEGIN
|
|
ROCK,/silent
|
|
ENDIF
|
|
; result of ROCK
|
|
WAIT,2.0
|
|
dum = CAGET('X06DA-ES-BPM1:POSV',by)
|
|
print, "EBOX-POSV after rock", by
|
|
; feedback
|
|
WHILE ABS(by) GE ymax DO BEGIN
|
|
dum = CAGET('X06DA-ES-BPM1:POSV',by)
|
|
print, "current EBOX-POSV", by
|
|
dum = CAGET('X06DA-ES-BPM1:SUM',cur)
|
|
IF cur GT tc THEN BEGIN
|
|
dum = CAGET('X06DA-OP-ST1:OPEN_EPS',ehs) ; make sure that shutter is open
|
|
IF ehs AND ABS(by) GT ymax THEN BEGIN
|
|
IF ABS(by) GT 50*ymax THEN BEGIN
|
|
GOTO,garbage
|
|
ENDIF ELSE BEGIN
|
|
; limit mirror TRY3 movement
|
|
dum = CAGET('X06DA-OP-MI1:TRY3',y3)
|
|
IF ABS(y3i-y3-1e-4*ROUND(by/1e-3)) GT 0.008 THEN BEGIN
|
|
;MV,'X06DA-OP-MI1:TRY3', y3i
|
|
MESSAGE,/cont,'Feedback trying to move mirror Y3 beyond safe limit - program exits'
|
|
GOTO,GARBAGE
|
|
ENDIF
|
|
MVR,'X06DA-OP-MI1:TRY3',-1e-4*ROUND(by/1e-3)
|
|
print, "current X06DA-OP-MI1:TRY3", y3
|
|
;MTHETA,-by/dmx*500
|
|
ENDELSE
|
|
ENDIF
|
|
WAIT,0.25
|
|
|
|
ENDIF
|
|
ENDWHILE
|
|
|
|
;print how much TRY3 moved
|
|
dum = CAGET('X06DA-OP-MI1:TRY3',y3)
|
|
print, "TRY3 net movement", y3i-y3
|