Files
x11ma/script/beamline_init/init/InitAU.py
gac-x11ma 1d75bc4535
2023-07-18 11:00:54 +02:00

103 lines
2.6 KiB
Python

import subprocess
import time
import traceback
running = False
counts = {}
def countHLS(motor):
global counts
try:
time.sleep(1.0)
counts[motor]=0
def on_change(value):
global counts
print "LimitSW changed on" , motor, "to", value
if int(value) == 1:
counts[motor]=counts[motor]+1
with Channel(motor+".HLS", callback=on_change, monitored=True, name="test") as ch:
if int(ch.read()) == 1:
counts[motor]=1
while(running==True):
time.sleep(0.1)
print "High Limit Switch motor "+motor +" reached "+ str(counts[motor]) + " times\n"
return counts[motor]
except:
print "Exception counting "+str(motor)
traceback.print_exc()
raise
def countLLS(motor):
global counts
try:
time.sleep(1.0)
counts[motor]=0
def on_change(value):
global counts
print "LimitSW changed on" , motor, "to", value
if int(value) == 1:
counts[motor]=counts[motor]+1
with Channel(motor+".LLS", callback=on_change, monitored=True, name="test") as ch:
if int(ch.read()) == 1:
counts[motor]=1
while(running==True):
time.sleep(0.1)
print "Low Limit Switch motor "+motor +" reached "+ str(counts[motor]) + " times\n"
return counts[motor]
except:
print "Exception counting "+str(motor)
traceback.print_exc()
raise
def init():
try:
global running
running = True
subprocess.call("X_X11MA_init-AU.sh", shell=True)
# Positions at limit switches are not checked
time.sleep(1.0)
caput('X11MA-OP2-AVsize',20)
caput('X11MA-OP2-AHsize',20)
running = False
return 0
except:
print "Exception in init"
traceback.print_exc()
raise
#Fork and join
try:
futures = fork(init,(countHLS,("X11MA-OP2-AU:TRY1",)), \
(countLLS,("X11MA-OP2-AU:TRY4",)), \
(countHLS,("X11MA-OP2-AU:TRZ1",)), \
(countLLS,("X11MA-OP2-AU:TRZ4",)), \
(countHLS,("X11MA-OP2-BP1:TRY",)), \
(countHLS,("X11MA-OP2-BP1:TRZ",)) )
ret = join(futures)
#check limit switch status after init
limitsw=True
for i in range(1,6):
if(ret[i]!=1):
limitsw=False
print "Limit switch status for all motors: %s" %("OK" if limitsw == True else "Not OK")
#final status report
if(limitsw==True):
print "init-AU: ==> done. OK!"
set_return("OK")
else:
print "init-AU: ==> not done. NOT OK!"
set_return("Not OK")
except:
set_return("Error")