import ch.psi.pshell.epics.ControlledVariable as ControlledVariable if get_exec_pars().source == CommandSource.ui: start = 50.0 stop = 230.0 step = 5.0 nb = 1 lat = 0.100 else: start = args[0] stop = args[1] step = args[2] nb = int(args[3]) lat = args[4] phase = ControlledVariable("Phase", "SINEG01-RSYS:SET-VSUM-PHASE-SIM", "SINEG01-RSYS:GET-VSUM-PHASE-SIM") phase.config.minValue =-45.0 phase.config.maxValue = 360.0 phase.config.resolution = 0.5 phase.initialize() #st = Stream("ICTstream", dispatcher) #q = st.addScalar("Charge", "SINEG01-DICT215:B1_CHARGE-SIM", 1, 0) #st.initialize() #st.start(True) q = Channel("SINEG01-DICT215:B1_CHARGE-SIM", type = 'd', alias='ICT-Q') try: qb = create_averager(q, nb, 0.100) r = lscan(phase, (qb), start, stop, step, latency=lat) rf_phase = r.getPositions(0) charge = [val.mean for val in r.getReadable(0)] chargerms = [val.stdev for val in r.getReadable(0)] finally: phase.close() q.close() #st.close() #Setting the return value #set_return(50.0) y = charge x = rf_phase index_max = y.index(max(y)) phase_ref = x[index_max] - 80 phase_offset = - phase_ref caput("SINEG01-RSYS:CALC-VSUM-PHASE-OFFSET", phase_offset) set_return(phase_ref)