76 lines
2.2 KiB
Python
Executable File
76 lines
2.2 KiB
Python
Executable File
import ch.psi.pshell.epics.ControlledVariable as ControlledVariable
|
|
import ch.psi.pshell.epics.ChannelSettlingCondition as ChannelSettlingCondition
|
|
import ch.psi.pshell.device.SettlingCondition as SettlingCondition
|
|
|
|
#cam_server.start("SAROP21-PSRD103_sp1", True)
|
|
pip.start("simulation_sp")
|
|
pip.stream.waitCacheChange(-1)
|
|
i = pip.stream.getChild("intensity")
|
|
iavg = create_averager(i, 2, interval = -1)
|
|
|
|
x=0
|
|
|
|
|
|
"""
|
|
class DCM(RegisterBase):
|
|
def doWrite(self, value):
|
|
print "Putting " , value
|
|
caput ("TESTIOC:TESTCALCOUT:Output", value)
|
|
print "Waiting " , value
|
|
cawait('TESTIOC:TESTCALCOUT:Output', value, timeout = 3600.0)
|
|
print "Done "
|
|
#if abs(value - self.read()) > IN_POSITION_BAND :
|
|
# raise Exception("Cannot set mono")
|
|
def doRead(self):
|
|
global x
|
|
x=x+1
|
|
return caget ("TESTIOC:TESTCALCOUT:Input") + x
|
|
|
|
#return caget("SARUN03-UIND030:FELPHOTENE.VAL")
|
|
|
|
undulator = DCM()
|
|
undulator.initialize()
|
|
"""
|
|
|
|
"""
|
|
class DCM(Readable, Writable):
|
|
def write(self, value):
|
|
print "Putting " , value
|
|
caput ("TESTIOC:TESTCALCOUT:Output", value)
|
|
print "Waiting " , value
|
|
cawait('TESTIOC:TESTCALCOUT:Output', value, timeout = 3600.0)
|
|
print "Done "
|
|
#if abs(value - self.read()) > IN_POSITION_BAND :
|
|
# raise Exception("Cannot set mono")
|
|
def read(self):
|
|
global x
|
|
x=x+1
|
|
return caget ("TESTIOC:TESTCALCOUT:Input") + x
|
|
|
|
#return caget("SARUN03-UIND030:FELPHOTENE.VAL")
|
|
|
|
undulator = DCM()
|
|
"""
|
|
|
|
|
|
class MySettlingCondition(SettlingCondition):
|
|
def waitSettled(self):
|
|
time.sleep(100)
|
|
cawait('TESTIOC:TESTCALCOUT:Input', value, timeout = 3600.0)
|
|
|
|
|
|
|
|
#return caget("SARUN03-UIND030:FELPHOTENE.VAL")
|
|
|
|
undulator = ControlledVariable("undulator", "TESTIOC:TESTCALCOUT:Output", "TESTIOC:TESTSINUS:SinCalc")
|
|
undulator.config.resolution = float('inf')
|
|
undulator.initialize()
|
|
undulator.setSettlingCondition(ChannelSettlingCondition("TESTIOC:TESTCALCOUT:Input", 0, None, 'i', None))
|
|
|
|
undulator.settlingCondition.latency = 100
|
|
|
|
|
|
lscan(undulator, [iavg], 1.0100, 1.18, 0.005 , latency= 0.2, range="auto")
|
|
|
|
|