106 lines
3.5 KiB
Python
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')
|