98 lines
2.7 KiB
Python
98 lines
2.7 KiB
Python
|
|
POL_IDS={ "Circ_Plus": 1, "Circ_Minus": 2, "Lin_Hor":3, "Lin_Ver": 4, "Lin": 5}
|
|
|
|
|
|
|
|
def get_id_status(id):
|
|
# 0 = ok
|
|
# 1 = Warning
|
|
# 2 = Error
|
|
# 3 = Not available
|
|
if id<1 or id>2: raise Exception("Invalid id")
|
|
return caget("X11MA-ID1-USER:STATUS" if (id==1) else "X11MA-ID2-USER:STATUS")
|
|
|
|
def get_id_error(id):
|
|
# B0 (1) = PLC (Taper, Motor controller, Limitswitch....)
|
|
# B1 (2) = Encoders (cabel, not referenced)
|
|
# B2 (4) = FeedForward (PS off, PS defect, FF ausgeschaltet)
|
|
# B3 (8) = Operator COntrol
|
|
# B4 (16)= Moving Timeout (moving longer then 120 sec)
|
|
# B5 (32)= Interlock (Orbit, Temperature...)\
|
|
if id<1 or id>2:
|
|
raise Exception("Invalid id")
|
|
return caget("X11MA-ID1-USER:ERROR-SOURCE" if (id==1) else "X11MA-ID2-USER:ERROR-SOURCE")
|
|
|
|
|
|
|
|
def get_id_pol(id, as_string=False):
|
|
# 1: Circ+
|
|
# 2: Circ-
|
|
# 3: Lin H
|
|
# 4: Lin V
|
|
# 5: LIn
|
|
if id<1 or id>2: raise Exception("Invalid id")
|
|
#ret = caget ("X11MA-ID1:MODE" if id==1 else "X11MA-ID2:MODE", 's' if as_string else 'i')
|
|
ret = caget ("X11MA-ID1:MODE" if id==1 else "X11MA-ID2:MODE", 'i')
|
|
if ret==0:
|
|
#linear mode
|
|
alpha = get_alpha_id(id)
|
|
if alpha==0 :
|
|
ret = 3
|
|
elif alpha==90:
|
|
ret = 4
|
|
else:
|
|
ret = 5
|
|
if as_string:
|
|
for (k,v) in POL_IDS.items():
|
|
if v==ret:
|
|
return k
|
|
return "Unknown"
|
|
return ret
|
|
|
|
def get_alpha_id(id):
|
|
if id<1 or id>2: raise Exception("Invalid id")
|
|
return caget ("X11MA-ID1:ALPHA" if id==1 else "X11MA-ID2:ALPHA")
|
|
|
|
|
|
def put_id_offset(id, v):
|
|
if id<1 or id>2:
|
|
raise Exception("Invalid id")
|
|
caput("X11MA-ID1:ENERGY-OFFS" if (id==1) else "X11MA-ID2:ENERGY-OFFS",v)
|
|
|
|
def get_id_offset(id):
|
|
if id<1 or id>2:
|
|
raise Exception("Invalid id")
|
|
return caget("X11MA-ID1:ENERGY-OFFS" if (id==1) else "X11MA-ID2:ENERGY-OFFS")
|
|
|
|
|
|
def put_id_pol(id, pol, alpha=None):
|
|
#pol = 1 : Mode =1, alpha = 0 circ +
|
|
#pol = 2 : Mode =2, alpha = 0 circ -
|
|
#pol = 3 : Mode =0, alpha = 0 lin hor
|
|
#pol = 4 : Mode =0, alpha = 90 lin vert
|
|
#pol = 5 : Mode =0, alpha = ? lin rot
|
|
if id<1 or id>2:
|
|
raise Exception("Invalid id")
|
|
|
|
pv1="X11MA-ID1:MODE" if (id==1) else "X11MA-ID2:MODE"
|
|
pv2="X11MA-ID1:ALPHA" if (id==1) else "X11MA-ID2:ALPHA"
|
|
|
|
|
|
if is_string(pol):
|
|
pol=POL_IDS[v]
|
|
|
|
if pol == 1:
|
|
caput(pv1,1)
|
|
elif pol == 2:
|
|
caput(pv1,2)
|
|
elif pol == 3:
|
|
caput(pv1,0)
|
|
caput(pv2,0)
|
|
elif pol == 4:
|
|
caput(pv1,0)
|
|
caput(pv2,0)
|
|
elif pol == 5:
|
|
caput(pv1,0)
|
|
time.sleep(1.0)
|
|
caput(pv2,alpha)
|