From f15c5bb13878d5bcc9fa3cd1de346f9e10e2a1b3 Mon Sep 17 00:00:00 2001 From: Kevin Peterson <kmpeters@anl.gov> Date: Thu, 11 Oct 2012 19:41:14 +0000 Subject: [PATCH] Added enable PV to allow the lab transform to be disabled. git-svn-id: https://subversion.xray.aps.anl.gov/kmp/transform/trunk@351 f095f811-4e88-6c84-d33e-e382bdb4531c --- launch_medm | 11 ++++---- myLabTransform.py | 12 +++++---- transform.db | 8 ++++++ transform.py | 66 ++++++++++++++++++++++++++++++----------------- 4 files changed, 63 insertions(+), 34 deletions(-) diff --git a/launch_medm b/launch_medm index 3d90452..8c7ca18 100644 --- a/launch_medm +++ b/launch_medm @@ -1,7 +1,8 @@ #setenv EPICS_DISPLAY_PATH /APSshare/epics/synApps_5_5/support/all_adl -medm -x -attach -macro "P=kmp2:,M1=m1,M2=m2,M3=m3" motor3x.adl & +medm -x -attach -macro "P=kmp3:,M1=m1,M2=m2,M3=m3" motor3x.adl & sleep 4.0 -medm -x -attach -macro "P=kmp2:,M1=m4,M2=m5,M3=m6" motor3x.adl & -medm -x -attach -macro "P=kmp2:,M1=lab:m1,M2=lab:m2,M3=lab:m3" motor3x.adl & -medm -x -attach -macro "P=kmp2:,M=m1" ~/epics/synAppsSVN/support/motor/motorApp/op/adl/motorx_all.adl & -medm -x -attach -macro "P=kmp2:lab:,M=m1" ~/epics/synAppsSVN/support/motor/motorApp/op/adl/motorx_all.adl & +medm -x -attach -macro "P=kmp3:,M1=m4,M2=m5,M3=m6" motor3x.adl & +medm -x -attach -macro "P=kmp3:,M1=lab:m1,M2=lab:m2,M3=lab:m3" motor3x.adl & +medm -x -attach -macro "P=kmp3:,M=m1" ~/epics/synAppsSVN/support/motor/motorApp/op/adl/motorx_all.adl & +medm -x -attach -macro "P=kmp3:lab:,M=m1" ~/epics/synAppsSVN/support/motor/motorApp/op/adl/motorx_all.adl & + diff --git a/myLabTransform.py b/myLabTransform.py index bdd1705..746752f 100644 --- a/myLabTransform.py +++ b/myLabTransform.py @@ -51,11 +51,13 @@ class myTransform(transform.transform): return retval.tolist()[0] if __name__ == "__main__": - prefix = 'kmp2:' - #!prefix = 'kmp3:' + #!prefix = 'kmp2:' + prefix = 'kmp3:' + labStr = 'lab' realMotors = ["%s%s" % (prefix, x) for x in ('m1', 'm2', 'm3') ] transformMotors = ["%s%s" % (prefix, x) for x in ('m4', 'm5', 'm6') ] - softMotors = ["%s%s" % (prefix, x) for x in ('lab:m1', 'lab:m2', 'lab:m3') ] - print realMotors, transformMotors, softMotors - MyTrans = myTransform(realMotors, transformMotors, softMotors) + softMotors = ["%s%s:%s" % (prefix, labStr, x) for x in ('m1', 'm2', 'm3') ] + enablePv = "%s%s:enable" % (prefix, labStr) + print realMotors, transformMotors, softMotors, enablePv + MyTrans = myTransform(realMotors, transformMotors, softMotors, enablePv) MyTrans.main() diff --git a/transform.db b/transform.db index 3242c0f..d8c4fb7 100644 --- a/transform.db +++ b/transform.db @@ -1,3 +1,11 @@ +record(bo,"$(P)$(S):enable") +{ + field(DESC,"Enable/disable transform") + field(ZNAM,"Disabled") + field(ONAM,"Enabled") + field(VAL, "1") +} + record(motor,"$(P)$(S):m1") { field(DTYP,"Soft Channel") diff --git a/transform.py b/transform.py index 5d5b3e7..58ac932 100644 --- a/transform.py +++ b/transform.py @@ -4,7 +4,7 @@ import epics from time import sleep class transform: - def __init__(self, (m1, m2, m3), (t1, t2, t3), (tm1, tm2, tm3)): + def __init__(self, (m1, m2, m3), (t1, t2, t3), (tm1, tm2, tm3), enable): """ real motors (to be transformed): m1, m2, m3 transform motors: t1, t2, t3 @@ -26,6 +26,7 @@ class transform: self.abortFlag = False self.initCompleteFlag = False self.syncInProgress = False + ### PVs to set @@ -73,6 +74,9 @@ class transform: ### PVs to monitor + # Calculation enable PV + self.enablePv = epics.PV(enable, callback=self.enableCallback) + # real motor RBV (for calculating transformed position) self.m_rbv = [] for m in (m1, m2, m3): @@ -131,6 +135,14 @@ class transform: ### Callback functions (to be called when PV values change--only set flags that are watched in main loop) + def enableCallback(self, **kw): + if kw['value'] == 1: + self.enableFlag = True + print "Transform is enabled." + else: + self.enableFlag = False + print "Transform is diabled." + def driveCallback(self, **kw): #!print "driveCallback:\n", " ", kw['pvname'], kw['value'] if self.initCompleteFlag == True and self.syncInProgress == False: @@ -321,33 +333,39 @@ class transform: if self.abortFlag == True: break - # The order of these if statements is important. The ones that appear first take precendence. - if self.reinitFlag == True: - #!print "idle: resyncing after reconnect" - #!print " self.reinitFlag = ", self.reinitFlag - self.resyncAfterReconnect() - if self.stopMotorsFlag == True: - #!print "idle: stop motors" - self.stopMotors() - if self.moveSoftMotorFlag == True: - #!print "idle: move motors" - self.moveMotors() - if self.dmovChangeFlag == True: - #!print "idle: update dmov" - self.updateDmov() - if self.updateReadbackFlag == True: - #!print "idle: update readback" - self.updateReadbacks() - if self.syncSoftTargetFlag == True: - #!print "idle: sync soft targets" - self.syncSoftTargets() + + if self.enableFlag == True: + # The order of these if statements is important. The ones that appear first take precendence. + if self.reinitFlag == True: + #!print "idle: resyncing after reconnect" + #!print " self.reinitFlag = ", self.reinitFlag + self.resyncAfterReconnect() + if self.stopMotorsFlag == True: + #!print "idle: stop motors" + self.stopMotors() + if self.moveSoftMotorFlag == True: + #!print "idle: move motors" + self.moveMotors() + if self.dmovChangeFlag == True: + #!print "idle: update dmov" + self.updateDmov() + if self.updateReadbackFlag == True: + #!print "idle: update readback" + self.updateReadbacks() + if self.syncSoftTargetFlag == True: + #!print "idle: sync soft targets" + self.syncSoftTargets() + else: + pass if __name__ == "__main__": prefix = 'kmp2:' + labStr = 'lab' realMotors = ["%s%s" % (prefix, x) for x in ('m1', 'm2', 'm3') ] transformMotors = ["%s%s" % (prefix, x) for x in ('m4', 'm5', 'm6') ] - softMotors = ["%s%s" % (prefix, x) for x in ('lab:m1', 'lab:m2', 'lab:m3') ] - print realMotors, transformMotors, softMotors - MyTrans = transform(realMotors, transformMotors, softMotors) + softMotors = ["%s%s:%s" % (prefix, labStr, x) for x in ('m1', 'm2', 'm3') ] + enablePv = "%s%s:enable" % (prefix, labStr) + print realMotors, transformMotors, softMotors, enablePv + MyTrans = transform(realMotors, transformMotors, softMotors, enablePv) MyTrans.main() -- GitLab