Source code for py4syn.epics.MotomanClass

"""
FILENAME... MotomanClass.py
USAGE...    Python Class for EPICS Motoman DX100 controller
 
/*
 *      Original Author: Henrique Ferreira Canova
 *      Date: 10/03/2014
 */
"""

from epics import PV
from time import sleep
from py4syn.epics.StandardDevice import StandardDevice

[docs]class Motoman(StandardDevice): def finish(self, value, **kw): if value == "Done": self.motomanfinish = True else: self.motomanfinish = False def __init__ (self,pvPrefix="", mnemonic=""): StandardDevice.__init__(self, mnemonic) self.pvBVAL_RBV = PV(pvPrefix + ":BVAL_RBV") self.pvBVAL = PV(pvPrefix + ":BVAL") self.pvBPOS = PV(pvPrefix+ ":BPOS") self.pvSVON = PV(pvPrefix+":SVON") self.pvRUNNING = PV(pvPrefix+":RUNNING") self.pvRUNNING.add_callback(self.finish) self.pvJOB = PV(pvPrefix+":JOB") self.pvGOJOB = PV(pvPrefix+":GOJOB") self.pvSTA1 = PV(pvPrefix+":STA1") self.pvSTA2 = PV(pvPrefix + ":STA2") self.motomanfinish = False def changeJOB(self,job=""): self.pvJOB.put(job) def goJOB(self): self.pvGOJOB.put(1) self.motomanfinish = False while not self.motomanfinish: sleep(0.1) def waitFinish(self): while not self.motomanfinish: sleep(0.01) def servoON(self,bool): if ((bool != 0) and (bool !=1)): self.pvSVON.put(0) else: self.pvSVON.put(bool) def readBVAL(self): return self.pvBVAL_RBV.get() def setBVAL(self,val): if ((val < 0) or (val > 50)): self.pvBVAL.put(0) self.pvSVON.put(0) else: self.pvBVAL.put(val) def setBPOS(self,pos): if ((pos < 0) or (pos > 2)): self.pvBPOS.put(000) else: self.pvBPOS.put(pos) def readSTA1(self): return self.pvSTA1.get() def readSTA2(self): return self.pvSTA2.get() def setSample(self,val): self.setBPOS(0) self.setBVAL(val) def removeSample(self): self.setBPOS(2) self.setBVAL(1) def run (self): self.changeJOB("CICLO") self.goJOB()