Files
x12sa/script/local.py
2017-08-18 15:54:58 +02:00

133 lines
8.6 KiB
Python

###################################################################################################
# Deployment specific global definitions - executed after startup.py
###################################################################################################
class PicoAmp(DeviceBase, Stoppable):
def __init__(self, name, prefix):
DeviceBase.__init__(self, name)
self.prefix = prefix
self.array_data = create_channel_device(prefix+"image1:ArrayData", type='[d', size=None, deviceName=name + " ArrayData")
self.ts_total = create_channel_device(prefix+"Current1:TSTotal", type='[d', size=None, deviceName=name + " Cur1 TSTotal")
self.ts_net = create_channel_device(prefix+"Current1:TSNet", type='[d', size=None, deviceName=name + " Cur1 TSNet")
self.ts_min = create_channel_device(prefix+"Current1:TSMinValue", type='[d', size=None, deviceName=name + " Cur1 TSMin")
self.ts_max = create_channel_device(prefix+"Current1:TSMaxValue", type='[d', size=None, deviceName=name + " Cur1 TSMax")
self.ts_minx = create_channel_device(prefix+"Current1:TSMinX", type='[d', size=None, deviceName=name + " Cur1 TSMaxX")
self.ts_maxx = create_channel_device(prefix+"Current1:TSMeanValue", type='[d', size=None, deviceName=name + " Cur1 TSMean")
self.ts_sigma = create_channel_device(prefix+"Current1:TSSigma", type='[d', size=None, deviceName=name + " Cur1 TSSigma")
self.ts_total2 = create_channel_device(prefix+"Current2:TSTotal", type='[d', size=None, deviceName=name + " Cur2 TSTotal")
self.ts_net2 = create_channel_device(prefix+"Current2:TSNet", type='[d', size=None, deviceName=name + " Cur2 TSNet")
self.ts_min2 = create_channel_device(prefix+"Current2:TSMinValue", type='[d', size=None, deviceName=name + " Cur2 TSMin")
self.ts_max2 = create_channel_device(prefix+"Current2:TSMaxValue", type='[d', size=None, deviceName=name + " Cur2 TSMax")
self.ts_minx2 = create_channel_device(prefix+"Current2:TSMinX", type='[d', size=None, deviceName=name + " Cur2 TSMaxX")
self.ts_maxx2 = create_channel_device(prefix+"Current2:TSMeanValue", type='[d', size=None, deviceName=name + " Cur2 TSMean")
self.ts_sigma2 = create_channel_device(prefix+"Current2:TSSigma", type='[d', size=None, deviceName=name + " Cur2 TSSigma")
self.ts_total3 = create_channel_device(prefix+"Current3:TSTotal", type='[d', size=None, deviceName=name + " Cur3 TSTotal")
self.ts_net3 = create_channel_device(prefix+"Current3:TSNet", type='[d', size=None, deviceName=name + " Cur3 TSNet")
self.ts_min3 = create_channel_device(prefix+"Current3:TSMinValue", type='[d', size=None, deviceName=name + " Cur3 TSMin")
self.ts_max3 = create_channel_device(prefix+"Current3:TSMaxValue", type='[d', size=None, deviceName=name + " Cur3 TSMax")
self.ts_minx3 = create_channel_device(prefix+"Current3:TSMinX", type='[d', size=None, deviceName=name + " Cur3 TSMaxX")
self.ts_maxx3 = create_channel_device(prefix+"Current3:TSMeanValue", type='[d', size=None, deviceName=name + " Cur3 TSMean")
self.ts_sigma3 = create_channel_device(prefix+"Current3:TSSigma", type='[d', size=None, deviceName=name + " Cur3 TSSigma")
self.ts_total4 = create_channel_device(prefix+"Current4:TSTotal", type='[d', size=None, deviceName=name + " Cur4 TSTotal")
self.ts_net4 = create_channel_device(prefix+"Current4:TSNet", type='[d', size=None, deviceName=name + " Cur4 TSNet")
self.ts_min4 = create_channel_device(prefix+"Current4:TSMinValue", type='[d', size=None, deviceName=name + " Cur4 TSMin")
self.ts_max4 = create_channel_device(prefix+"Current4:TSMaxValue", type='[d', size=None, deviceName=name + " Cur4 TSMax")
self.ts_minx4 = create_channel_device(prefix+"Current4:TSMinX", type='[d', size=None, deviceName=name + " Cur4 TSMaxX")
self.ts_maxx4 = create_channel_device(prefix+"Current4:TSMeanValue", type='[d', size=None, deviceName=name + " Cur4 TSMean")
self.ts_sigma4 = create_channel_device(prefix+"Current4:TSSigma", type='[d', size=None, deviceName=name + " Cur4 TSSigma")
self.ts_posX_sigma = create_channel_device(prefix+"PosX:TSSigma", type='[d', size=None, deviceName=name + " PosX TSSigma")
self.ts_posY_sigma = create_channel_device(prefix+"PosY:TSSigma", type='[d', size=None, deviceName=name + " PosY TSSigma")
self.ts_posX_total = create_channel_device(prefix+"PosX:TSTotal", type='[d', size=None, deviceName=name + " PosX TSTotal")
self.ts_posY_total = create_channel_device(prefix+"PosY:TSTotal", type='[d', size=None, deviceName=name + " PosY TSTotal")
self.ts_sumAll_sigma = create_channel_device(prefix+"SumAll:TSSigma", type='[d', size=None, deviceName=name + " sumAll TSSigma")
self.ts_sumAll_total = create_channel_device(prefix+"SumAll:TSTotal", type='[d', size=None, deviceName=name + " sumAll TSTotal")
self.posX_Centroid = create_channel_device(prefix+"PosX:CentroidX_RBV", type='[d', size=None, deviceName=name + "posX Centroid")
self.posY_Centroid = create_channel_device(prefix+"PosY:CentroidX_RBV", type='[d', size=None, deviceName=name + "posY Centroid")
self.setChildren([self.array_data, self.ts_total,self.ts_net, self.ts_min, self.ts_max, self.ts_minx, \
self.ts_maxx, self.ts_sigma, \
self.ts_total2,self.ts_net2, self.ts_min2, self.ts_max2, self.ts_minx2, \
self.ts_maxx2, self.ts_sigma2, \
self.ts_total3,self.ts_net3, self.ts_min3, self.ts_max3, self.ts_minx3, \
self.ts_maxx3, self.ts_sigma3, \
self.ts_total4,self.ts_net4, self.ts_min4, self.ts_max4, self.ts_minx4, \
self.ts_maxx4, self.ts_sigma4, self.ts_posX_sigma, self.ts_posY_sigma, \
self.ts_posX_total, self.ts_posY_total, self.ts_sumAll_sigma, self.ts_sumAll_total,\
self.posX_Centroid, self.posY_Centroid
])
def start(self):
stop()
time.sleep(0.2)
caputq(self.prefix + "Acquire", "Acquire")
# caputq(self.prefix + "Current1:TSControl", "Erase/Start")
# caputq(self.prefix + "Current2:TSControl", "Erase/Start")
# caputq(self.prefix + "Current3:TSControl", "Erase/Start")
# caputq(self.prefix + "Current4:TSControl", "Erase/Start")
# caputq(self.prefix + "PosX:TSControl", "Erase/Start")
# caputq(self.prefix + "PosY:TSControl", "Erase/Start")
# caputq(self.prefix + "SumAll:TSControl", "Erase/Start")
caputq(self.prefix + "TS:TSAcquire", 1)
def stop(self):
caput(self.prefix + "Acquire", "Stop")
def isReady(self):
return caget (self.prefix + "Current4:TSAcquiring") == "Done"
###################################################################################################
#Scripted dvice instantiation
###################################################################################################
###################################################################################################
#Scripted dvice instantiation
###################################################################################################
import ch.psi.pshell.epics.ChannelDoubleArray as ChannelDoubleArray
for bpm in [1, 3, 5, 6]:
for cur in range(4):
dev = ChannelDoubleArray("pico_bpm" + str(bpm) + "_ts_cur" + str(cur+1), "X12SA-OP-BPM" + str(bpm) + ":TS:Current" + str(cur+1) + ":TimeSeries", -1, -1, True)
add_device( dev, True)
#dev.monitored = True
#dev.polling = 3000
try:
add_device(PicoAmp("pico_amp_" + str(bpm), "X12SA-OP-BPM" + str(bpm) + ":"), force = True)
except:
print "Cannot create pico amp " + str(bpm)
#add_device(PicoAmp("pico_amp", "X12SA-PC-BPM5:AH501:"), force = True)
#add_device(PicoAmp("pico_amp_2", "X12SA-PC-BPM5:AH501:"), force = True)
#add_device(PicoAmp("pico_amp", "X12SA-OP-BPM5:"), force = True)
###################################################################################################
#Alternative scan data layouts
###################################################################################################
import ch.psi.pshell.data.LayoutDefault
class LayoutParallelScan(ch.psi.pshell.data.LayoutDefault):
def getDefaultGroup(self, scan):
return scan.readables[0].name
def set_parallel_layout():
get_context().dataManager.setLayout(LayoutParallelScan())
def set_default_layout():
get_context().dataManager.setLayout(ch.psi.pshell.data.LayoutDefault())