Files
ncs/script/test/Check Linearity LS.py
boccioli_m 45202c5b09 Startup
2015-09-02 10:43:04 +02:00

106 lines
3.5 KiB
Python

#Script imported from: Check Linearity LS.xml
#Pre-actions
#p = subproccess.Popen('/bin/sleep 2' +, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
#p.communicate()
#ret = p.returncode
#if ret <> true:
# raise Exception('Script returned with an exit value not equal to 0')
caput('PO2TC-NCS-LS:MOTOR.VELO', '50')
caput('PO2TC-NCS-LS:DEMAND', '350')
#TODO: Set the diplay names of positioners and detectors
scan = ManualScan(['idCOUNT'], ['idMSTA', 'idRVAL', 'idRRBV', 'idRBV', 'idVAL', 'idATHM', 'idENCODERraw', 'idENCODER', 'idRDY', 'idILK', 'idDiff', 'idResult'] , [0.0], [200.0], [200])
scan.start()
#Creating channels: dimension 1
#PseudoPositioner idCOUNT
#ScalarDetector idMSTA
idMSTA = Channel('PO2TC-NCS-LS:MOTOR.MSTA', type = 'd')
#ScalarDetector idRVAL
idRVAL = Channel('PO2TC-NCS-LS:MOTOR.RVAL', type = 'd')
#ScalarDetector idRRBV
idRRBV = Channel('PO2TC-NCS-LS:MOTOR.RRBV', type = 'd')
#ScalarDetector idRBV
idRBV = Channel('PO2TC-NCS-LS:MOTOR.RBV', type = 'd')
#ScalarDetector idVAL
idVAL = Channel('PO2TC-NCS-LS:MOTOR.VAL', type = 'd')
#ScalarDetector idATHM
idATHM = Channel('PO2TC-NCS-LS:MOTOR.ATHM', type = 'd')
#ScalarDetector idENCODERraw
idENCODERraw = Channel('PO2TC-NCS-LS:ENCODERraw', type = 'd')
#ScalarDetector idENCODER
idENCODER = Channel('PO2TC-NCS-LS:ENCODER', type = 'd')
#ScalarDetector idRDY
idRDY = Channel('PO2TC-NCS-LS:RDY', type = 'd')
#ScalarDetector idILK
idILK = Channel('PO2TC-NCS-LS:ILK', type = 'd')
#Dimension 1
#PseudoPositioner idCOUNT
for setpoint1 in range(0, 200):
readback1 = setpoint1
sleep( 0.02 ) # Settling time
#Detector idMSTA
detector1 = idMSTA.get()
#Detector idRVAL
detector2 = idRVAL.get()
#Detector idRRBV
detector3 = idRRBV.get()
#Detector idRBV
detector4 = idRBV.get()
#Detector idVAL
detector5 = idVAL.get()
#Detector idATHM
detector6 = idATHM.get()
#Detector idENCODERraw
detector7 = idENCODERraw.get()
#Detector idENCODER
detector8 = idENCODER.get()
#Detector idRDY
detector9 = idRDY.get()
#Detector idILK
detector10 = idILK.get()
#Manipulation idResult
#Variable Mappings
diff = idDiff
count = setpoint1
if (count < 160) and (diff < -5):
return( 1, "The motor/encoder position difference signal exceeded the lower limit (-5 deg)" )
if (count < 160) and (diff > 5):
return( 2, "The motor/encoder position difference signal exceeded the upper limit (+5 deg)" )
if (count > 160) and (diff < -0.5):
idResult = ( 3, "Note: The position difference at the end of movement was too great (more than -0.5 deg)" )
if (count > 160) and (diff > 0.5):
idResult = ( 4, "Note: The position difference at the end of movement was too great (more than 0.5 deg)" )
if (count < 160):
idResult = ( 0, "Note: The motor drive linearity check did not yet complete.")
else:
idResult = ( 0, "The motor drive linearity was within the acceptable limits.")
#Manipulation idDiff
#Variable Mappings
a = detector4
b = detector8
count = setpoint1
idDiff = a-b
scan.append ([setpoint1], [readback1], [detector1, detector2, detector3, detector4, detector5, detector6, detector7, detector8, detector9, detector10, idResult, idDiff])
#Closing channels
idMSTA.close()
idRVAL.close()
idRRBV.close()
idRBV.close()
idVAL.close()
idATHM.close()
idENCODERraw.close()
idENCODER.close()
idRDY.close()
idILK.close()
scan.end()
#Post-actions
caput('PO2TC-NCS-LS:MOTOR.VELO', '270')
caput('PO2TC-NCS-LS:DEMAND', '0')