Files
x11ma/script/devices/diag.py
gac-x11ma d6803e82ba
2022-10-05 09:33:25 +02:00

168 lines
5.5 KiB
Python

from collections import OrderedDict
diag_channels_names = { \
#"photon energy": "X11MA-PGM:rbkenergy", \
#"grating number": "X11MA-PGM:grating", \
#"cff value": "X11MA-PGM:rbkcff", \
"diffraction order": "X11MA-PGM:difforder0", \
#"exit slit size":"X11MA-OP2-SL:TRY.VAL", \
"front end size":"X11MA-FE-DSAPER", \
"status fast shutter":"X11MA-VME-ES1:FAST-SHTR", \
"girder x": "X11MA-HG:X1", \
"girder y": "X11MA-HG:Y1", \
"girder z": "X11MA-HG:Z1", \
"girder pitch": "X11MA-HG:PITCH1", \
"girder yaw": "X11MA-HG:YAW1", \
"girder roll": "X11MA-HG:ROLL1", \
"CMU ox": "X11MA-OP-CM:ox", \
"CMU oy": "X11MA-OP-CM:oy", \
"CMU oz": "X11MA-OP-CM:oz", \
"CMU oRx": "X11MA-OP-CM:oRx", \
"CMU oRy": "X11MA-OP-CM:oRy", \
"CMU oRz": "X11MA-OP-CM:oRz", \
"CMU TRB": "X11MA-OP2-CM:TRB.RBV", \
"RMU ox": "X11MA-OP-RMU:ox", \
"RMU oy": "X11MA-OP-RMU:oy", \
"RMU oz": "X11MA-OP-RMU:oz", \
"RMU oRx": "X11MA-OP-RMU:oRx", \
"RMU oRy": "X11MA-OP-RMU:oRy", \
"RMU oRz": "X11MA-OP-RMU:oRz", \
#"mode": "X11PHS-E:OPT", \
#"id1 mode": "X11MA-ID1:MODE", \
#"id1 offset": "X11MA-ID1:ENERGY-OFFS", \
#"id1 alpha": "X11MA-ID1:ALPHA", \
#"id1 harmonic": "X11MA-ID1:HARMONIC", \
#"id1 gap": "X11MA-ID1-GAP:READ", \
#"id1 shift": "X11MA-ID1-SHIFT:READ", \
#"id2 mode": "X11MA-ID2:MODE", \
#"id2 offset": "X11MA-ID2:ENERGY-OFFS", \
#"id2 alpha": "X11MA-ID2:ALPHA", \
#"id2 harmonic": "X11MA-ID2:HARMONIC", \
#"id2 gap": "X11MA-ID2-GAP:READ", \
#"id2 shift": "X11MA-ID2-SHIFT:READ", \
"keithley 10 IO": "X11Keithley1-read", \
#"ring current": "ARIDI-PCT:CURRENT", \
#"PEEM high voltage": "X11MA-ES1-PEEM:UMON", \
"PEEM leakage current": "X11MA-ES1-PEEM:IMON", \
"Pressure in PEEM": "X11MA-ES1-MAIN:PRESSURE", \
"Pressure in Column": "X11MA-ES1-COLU:PRESSURE", \
"SW Pt100 sample temperature": "X11MA-PC-SW:Pt100-K", \
"SW Pt100 resistance": "X11MA-PC-SW:Pt100-R", \
"SW E-field value voltage": "X11MA-PC-SW:E-Field-V", \
"SW E-field value current": "X11MA-PC-SW:E-Field-I", \
"SW Resistence value resistence": "X11MA-PC-SW:Resistance", \
"Cooling He flow meas": "X11MA-PC-BRONKHORST:PEEM-GET-MEASURE", \
"Cooling He flow set": "X11MA-PC-BRONKHORST:PEEM-SET-SETPOINT", \
"Cooling Needle Valve": "X11MA-ES1-AO4:V", \
"FMU Ry": "X11MA-OP2-FM:TRY1.RBV", \
"FMU TrZ": "X11MA-OP2-FM:TRY4.RBV", \
}
eiger_diag_channels_names = { \
"high voltage": "X11MA-ES1-SD1:cam1:HighVoltage_RBV", \
}
diag_channels = {}
eiger_diag_channels = {}
for k in diag_channels_names.keys():
try:
diag_channels[k]=Channel(diag_channels_names[k],'s', monitored=True)
except:
msg = "Error creating diagnostic channel: " + str(k)
log(msg, False)
print msg
for k in eiger_diag_channels_names.keys():
try:
eiger_diag_channels[k]=Channel(eiger_diag_channels_names[k],'s', monitored=True)
except:
msg = "Error creating diagnostic channel: " + str(k)
log(msg, False)
print msg
diag_devices = {
"photon energy": energy_rbk, \
"grating number": Grating, \
"cff value": cff, \
"exit slit size": ES, \
"mode": energy_opt, \
"id1 mode": id1_mode, \
"id1 offset": id1_offset, \
"id1 alpha": id1_alpha, \
"id1 harmonic": id1_harmonic, \
"id1 gap": id1_gap, \
"id1 shift": id1_shift, \
"id2 mode": id2_mode, \
"id2 offset": id2_offset, \
"id2 alpha": id2_alpha, \
"id2 harmonic": id2_harmonic, \
"id2 gap": id2_gap, \
"id2 shift": id2_shift, \
"ring current": machine_cur, \
"PEEM high voltage": microscope.high_voltage, \
"Tilt vertical": tilt_vertical, \
"Tilt horizontal": tilt_horizontal, \
}
def get_microscope_diags():
try:
ret = microscope.get_values()
except:
return {}
try:
ret["Preset Label"] = microscope.get_preset_label()
except:
pass
return ret
def get_diags():
ret = {}
for k,v in diag_devices.items():
try:
if type(v) is Channel:
ret[k]=str(v.get())
else:
ret[k]=str(v.value)
except:
ret[k]="Error: " + str(sys.exc_info()[1])
for k,v in diag_channels.items():
try:
ret[k]=v.get() #caget(v,'s') #v.get()
except:
ret[k]="Error: " + str(sys.exc_info()[1])
if eiger.initialized:
try:
ret["exposure time"] = str(eiger.getExposure())
except:
ret[k]="Error: " + str(sys.exc_info()[1])
for k,v in eiger_diag_channels.items():
try:
ret[k]=v.get() #caget(v,'s')
except:
ret[k]="Error: " + str(sys.exc_info()[1])
if microscope.initialized and microscope.client.isConnected():
for k,v in get_microscope_diags().items():
ret["Microscope " + k] = str(v)
try:
ret["Microscope Manip. X"] = str(manip_x.readback.read())
except:
ret["Microscope Manip. X"] = "Error: " + str(sys.exc_info()[1])
try:
ret["Microscope Manip. Y"] = str(manip_y.readback.read())
except:
ret["Microscope Manip. Y"] = "Error: " + str(sys.exc_info()[1])
return OrderedDict(sorted(ret.items(), key=lambda i: i[0].lower()))
def print_diags():
diags = get_diags()
for k in diags.keys():
print k + ": " + diags[k]