from collections import OrderedDict PREFIX_MICROSCOPE = "Microscope " 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", \ "front end size x":"X11MA-FE-SL1:SIZEX", \ #CHECK "front end size y":"X11MA-FE-SL1:SIZEY", \ #CHECK "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-RM2:ox", \ "RMU oy": "X11MA-OP-RM2:oy", \ "RMU oz": "X11MA-OP-RM2:oz", \ "RMU oRx": "X11MA-OP-RM2:oRx", \ "RMU oRy": "X11MA-OP-RM2:oRy", \ "RMU oRz": "X11MA-OP-RM2: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": "X11MA-KEI10:READ", \ #X11Keithley1-read", CHECK! #"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-CPCL-BRONKHORST:PEEM-GET-MEASURE", \ "Cooling He flow set": "X11MA-CPCL-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-EIGER: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": BML_energy_RBV, \ "grating number": Grating, \ "cff value": cff, \ "exit slit size": ES, \ "mode": BML_energy_mode, \ #"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": SR_current, \ "PEEM high voltage": microscope.high_voltage, \ "Tilt vertical": tilt_vertical, \ "Tilt horizontal": tilt_horizontal, \ # "ai1 current": ai1, \ } 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[PREFIX_MICROSCOPE + k] = str(v) try: ret[PREFIX_MICROSCOPE + "Manip. X"] = str(manip_x.readback.read()) except: ret[PREFIX_MICROSCOPE + "Manip. X"] = "Error: " + str(sys.exc_info()[1]) try: ret[PREFIX_MICROSCOPE + "Manip. Y"] = str(manip_y.readback.read()) except: ret[PREFIX_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]