Files
x03da/script/ManipulatorFlyScan.py
2019-08-12 14:30:32 +02:00

75 lines
1.7 KiB
Python

"""
Continuous 1D Manipulator scan
set manipulator scan parameters below.
set analyser parameters in the scienta window. recommended: fixed mode, dwell time between 0.2 and 1.0 s
the motor speed is determined from the STEP parameter and the scienta busy time (dwell time + dead time).
note that the motors have a limited speed range!
"""
import math
MOTORS = (ManipulatorX)
RANGE = (-3.45-0.5, -3.45+0.5)
STEP = 0.01
#MOTORS = (ManipulatorY)
#RANGE = (-5., +5.)
#STEP = 0.2
# Z axis cannot be used in fly scan. minimum speed is too high.
#MOTORS = (ManipulatorZ)
#RANGE = (110., 120.)
#STEP = 0.5
#MOTORS = (ManipulatorTheta)
#RANGE = (-9., 81.)
## minimum speed 0.001, maximum speed 0.5 deg/s
#SPEED = 0.1
#MOTORS = (ManipulatorTilt)
#RANGE = (-20., +20.)
## minimum speed 0.1, maximum speed 1.4 mm/s
#SPEED = 1.0
#MOTORS = (ManipulatorPhi)
#RANGE = (-179., +180.)
## minimum speed 0.6, maximum speed 6.0 mm/s
#SPEED = 1.0
SENSORS = (Counts, Scienta.dataMatrix, SampleCurrent, RefCurrent, MachineCurrent, EnergyDistribution, AngleDistribution)
# --- do not edit below ---
RELATIVE = False
LATENCY = 0.0
ZIGZAG = False
ENDSCAN = False
adjust_sensors()
set_adc_averaging()
# time per scienta acquisition in seconds
time1 = time.time()
trig_scienta()
time2 = time.time()
scienta_time = (time2 - time1)
print "scienta time: ", scienta_time
# time for one scan in seconds
SPEED = STEP / scienta_time
print "speed: ", SPEED
fly_time = (RANGE[1] - RANGE[0]) / SPEED
STEPS = int(fly_time / scienta_time) + 1
print "scan time: ", fly_time
try:
cscan(MOTORS, SENSORS, RANGE[0], RANGE[1], STEPS, time=fly_time, before_read=before_readout, after_read = after_readout, check_positions = False)
finally:
if ENDSCAN:
after_scan()