#Parameters: SCAN_RANGE = [-13.5, -13.4] SCAN_TIME = 10.0 STREAM_SCALARS = ['SAROP11-CVME-PBPS1:Lnk9Ch11-DATA-SUM'] STREAM_WAVEFORMS = ['SAROP11-CVME-PBPS1:Lnk9Ch11-DATA-CALIBRATED', 'SAROP11-CVME-PBPS1:Lnk9Ch11-BG-DATA-CALIBRATED'] EPICS_CHANELS = ['SARES11-XSAM125:MOTOR_X1.RBV', 'SARES11-XSAM125:MOTOR_Y1.RBV', 'SARES11-XSAM125:MOTOR_Z1.RBV'] MOTOR = motor_x1 #Create the beam synchronous Stream stream = Stream("PID", dispatcher) modulo, offset = 10,0 for name in STREAM_SCALARS: stream.addScalar(name, name, modulo, offset ) plot_types = {} for name in STREAM_WAVEFORMS: stream.addWaveform(name, name, modulo, offset ) plot_types[name]=1 stream.initialize() stream.start() #Creare channels channels = [] for name in EPICS_CHANELS: channel = Channel(name, 'd') channel.monitored= True channels.append(channel) #Setup motor velocity = abs(float(SCAN_RANGE[1]-SCAN_RANGE[0])) / SCAN_TIME MOTOR.setSpeed(MOTOR.defaultSpeed) MOTOR.move(float(SCAN_RANGE[0])) MOTOR.setSpeed(float(velocity) ) #Wait stream to be active stream.waitCacheChange(10000) #Trigger motor move an start sampling MOTOR.moveAsync(float(SCAN_RANGE[1])) try: mscan(stream, stream.getReadables() + channels, -1, SCAN_TIME, plot_types=plot_types) finally: stream.close() MOTOR.setSpeed(MOTOR.defaultSpeed)