06.2026
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
from jeputils import import_py
|
||||
|
||||
import_py("cpython/LinFit", "linfit")
|
||||
|
||||
|
||||
|
||||
x=to_array([0,1,2,3,4,5,6,7,8,9], 'd')
|
||||
y=to_array([1,2,3,6,9,6,3,2,1,0], 'd')
|
||||
(p, x_fit, y_fit, R2) = linfit(x,y)
|
||||
#print "Fit: ", (p, x_fit, y_fit, R2)
|
||||
plot((y,y_fit), name=("data", "fit"),xdata=(x,x_fit))
|
||||
@@ -0,0 +1,26 @@
|
||||
|
||||
|
||||
add_device(ChannelDouble("cx_rbk","X11MA-FE-SL1:CENTERX-PosAct"), True)
|
||||
add_device(ChannelDouble("cy_rbk","X11MA-FE-SL1:CENTERY-PosAct"), True)
|
||||
cx_rbk.monitored=True
|
||||
cy_rbk.monitored=True
|
||||
|
||||
add_device(ChannelDouble("cxm_rbv","X11MA-FE-SL1:CENTERX.RBV"), True)
|
||||
add_device(ChannelDouble("cym_rbv","X11MA-FE-SL1:CENTERY.RBV"), True)
|
||||
cxm_rbv.monitored=True
|
||||
cym_rbv.monitored=True
|
||||
|
||||
add_device(Positioner("cx","X11MA-FE-SL1:CENTERX", "X11MA-FE-SL1:CENTERX-PosAct"), True)
|
||||
add_device(Positioner("cy","X11MA-FE-SL1:CENTERY", "X11MA-FE-SL1:CENTERY-PosAct"), True)
|
||||
cx.monitored=True
|
||||
cy.monitored=True
|
||||
|
||||
|
||||
add_device(DummyPositioner("BML_energy_set"), True)
|
||||
BML_energy_set.monitored=True
|
||||
|
||||
add_device(ChannelInteger("dmov","X11MA-FE-SL1:CENTERX.DMOV"), True)
|
||||
dmov.monitored=True
|
||||
add_device(ChannelInteger("dmovy","X11MA-FE-SL1:CENTERY.DMOV"), True)
|
||||
dmovy.monitored=True
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
PARALLEL=True
|
||||
|
||||
inf = None
|
||||
def on_command_finished(info):
|
||||
if info.script == "test/slit_long.py":
|
||||
print "Setpoint: ", BML_FE_centerX.take()
|
||||
print "Readback: ", BML_FE_centerX.readback.take()
|
||||
print "Error: ", BML_FE_centerX.readback.take() -BML_FE_centerX.take()
|
||||
print "Setpoint Update: ", BML_FE_centerX.read()
|
||||
print "Readback Update: ", BML_FE_centerX.readback.read()
|
||||
print "Error Update: ", BML_FE_centerX.readback.take() -BML_FE_centerX.take()
|
||||
|
||||
# 1 Define detector and scan parameters
|
||||
sensors = [Keithley_2_raw, SR_current] #, CADC2, BML_energy_RBV]
|
||||
Keithley_channel = Keithley_2_raw.getChannelName()
|
||||
Keithley_range = "2 nA"
|
||||
#Keithley range: "AUTO", "20 mA", "2 mA", "200 uA", "20 uA", "2 uA", "200 nA", "20 nA", "2 nA", "200 pA", "20 pA"
|
||||
|
||||
emin = 1650.0
|
||||
emax = 1750.0
|
||||
esteps = 5.0
|
||||
|
||||
#FE_centerX = -0.75
|
||||
#FE_centerY = 1.25
|
||||
FE_centerX = 0.0
|
||||
FE_centerY = 0.0
|
||||
|
||||
FE_size_x = 0.1
|
||||
FE_size_y = 0.1
|
||||
|
||||
x_range = 4.0
|
||||
y_range = 4.0
|
||||
|
||||
x_steps = 0.1
|
||||
y_steps = 0.1
|
||||
|
||||
|
||||
# Set detector and slit parameters for scan>
|
||||
|
||||
range_number = range_to_number(Keithley_range)
|
||||
Keithley_range_cmd = Keithley_channel.replace('READOUT', 'RANGE')
|
||||
caput(Keithley_range_cmd, range_number) # 6 --> 200 nA
|
||||
|
||||
BML_FE_centerX.setSpeed(2.0)
|
||||
BML_FE_centerY.setSpeed(2.0)
|
||||
|
||||
x_range = x_range - FE_size_x
|
||||
y_range = y_range - FE_size_y
|
||||
|
||||
xmin = FE_centerX - x_range/2
|
||||
xmax = FE_centerX + x_range/2
|
||||
|
||||
ymin = FE_centerY - y_range/2
|
||||
ymax = FE_centerY + y_range/2
|
||||
|
||||
xsteps = x_steps
|
||||
ysteps = y_steps
|
||||
|
||||
# 3 Perform scan
|
||||
|
||||
started = time.strftime("%H:%M:%S", time.localtime())
|
||||
add_device(DummyPositioner("BML_energy_set"),True)
|
||||
BML_energy_set.monitored=True
|
||||
ascan([BML_energy_set, BML_FE_centerX, BML_FE_centerY], sensors, [emin, xmin, ymin,], [emax, xmax, ymax], [esteps, xsteps, ysteps], latency=0.1, zigzag=False, parallel_positioning=PARALLEL)
|
||||
|
||||
# 5 Put back to initial settings
|
||||
|
||||
json_path = get_exec_pars().path
|
||||
bml_save_scan_settings_json(json_path)
|
||||
|
||||
stopped = time.strftime("%H:%M:%S", time.localtime())
|
||||
print("started: " + started)
|
||||
print("stopped: " + stopped)
|
||||
|
||||
|
||||
|
||||
|
||||
BML_FE_centerX.setSpeed(0.1)
|
||||
BML_FE_centerY.setSpeed(0.1)
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
|
||||
def FE_scan_prepare():
|
||||
|
||||
FE_centerX_ini = BML_FE_centerX.read()
|
||||
FE_centerY_ini = BML_FE_centerY.read()
|
||||
BML_FE_centerX.setSpeed(1.5)
|
||||
BML_FE_centerY.setSpeed(1.5)
|
||||
|
||||
FE_centerX = 0.0
|
||||
FE_centerY = 0.0
|
||||
|
||||
FE_sizeX = 0.1
|
||||
FE_sizeY = 0.1
|
||||
|
||||
x_range = 4.0
|
||||
y_range = 4.0
|
||||
|
||||
x_steps = 0.2
|
||||
y_steps = 0.2
|
||||
|
||||
xmin = FE_centerX - x_range/2
|
||||
xmax = FE_centerX + x_range/2
|
||||
|
||||
ymin = FE_centerY - y_range/2
|
||||
ymax = FE_centerY + y_range/2
|
||||
|
||||
xsteps = x_steps
|
||||
ysteps = y_steps
|
||||
|
||||
BML_FE_centerX.update()
|
||||
BML_FE_centerY.update()
|
||||
|
||||
#started = time.strftime("%H:%M:%S", time.localtime())
|
||||
|
||||
|
||||
BML_FE_centerX.move(xmin)
|
||||
BML_FE_centerY.move(ymin)
|
||||
|
||||
def FE_scan_move():
|
||||
|
||||
BML_FE_centerY.setSpeed(0.05)
|
||||
BML_FE_centerY.moveAsync(2.0)
|
||||
|
||||
for i in range(0,10):
|
||||
BML_FE_centerX.move(2.0)
|
||||
BML_FE_centerX.move(-2.0)
|
||||
print(i)
|
||||
|
||||
def time_scan_2DFE(samples=850, interval=0.1):
|
||||
try:
|
||||
sensors = [SR_current, "ca://X11MA-FE-SL1:TRXR-VelAct", 'ca://X11MA-FE-SL1:TRXW-VelAct', 'ca://X11MA-FE-SL1:TRXR-PosAct', 'ca://X11MA-FE-SL1:TRXW-PosAct', 'ca://X11MA-FE-SL1:TRYB-VelAct', 'ca://X11MA-FE-SL1:TRYT-VelAct', 'ca://X11MA-FE-SL1:TRYB-PosAct', 'ca://X11MA-FE-SL1:TRYT-PosAct']
|
||||
#85 * PASSES
|
||||
tscan(sensors, samples, interval, auto_range=(samples<0))
|
||||
except ScanAbortedException as ex:
|
||||
print "Stop Scan"
|
||||
|
||||
def run_parallel_scan(fixed=True):
|
||||
FE_scan_prepare()
|
||||
if fixed:
|
||||
parallelize(FE_scan_move, time_scan_2DFE)
|
||||
else:
|
||||
task = fork((time_scan_2DFE,(-1,)))
|
||||
try:
|
||||
FE_scan_move()
|
||||
except:
|
||||
print sys.exc_info()
|
||||
finally:
|
||||
abort()
|
||||
|
||||
run_parallel_scan()
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
BML_FE_centerX.setSpeed(2.0)
|
||||
BML_FE_centerY.setSpeed(2.0)
|
||||
|
||||
add_device(MotorGroupBase("mg", BML_FE_centerX, BML_FE_centerY), True)
|
||||
mg.monitored=True
|
||||
|
||||
mg.move([-2.0 ,-2.0], MoveMode.maximumSpeed, 5000)
|
||||
mg.move([-2.0 ,2.0], MoveMode.maximumSpeed, 5000)
|
||||
mg.move([-1.9,-2.0], MoveMode.maximumSpeed, 5000)
|
||||
|
After Width: | Height: | Size: 300 B |
@@ -0,0 +1,5 @@
|
||||
ascan([cx,cy],SR_current , [-0.1,-0.1], [0.1,0.1], [5,5], 0.0, True, passes=1, zigzag=True)
|
||||
|
||||
ascan([BML_FE_centerX,BML_FE_centerY],SR_current , [-0.1,-0.1], [0.1,0.1], [100,100], 0.0, True, passes=1, zigzag=True)
|
||||
|
||||
ascan([BML_FE_centerX,BML_FE_centerY], (cx_rbk, cy_rbk) , [-0.2,-0.2], [0.2,0.2], [50,50], 0.0, True, passes=1, zigzag=True)
|
||||
Reference in New Issue
Block a user