Implement limit switches and the SC and TS commands on fake Galil motors

This commit is contained in:
Douglas Clowes
2013-06-14 13:31:28 +10:00
parent d6f72482b3
commit bff8cc2c16
2 changed files with 20 additions and 4 deletions

View File

@@ -112,7 +112,7 @@ class GalilController(object):
def doCommand(self, cmd, arg): def doCommand(self, cmd, arg):
action = cmd[0:2] action = cmd[0:2]
#print "Command %s(%s) = %s" % (action, cmd[2:], arg) #print "Command %s(%s) = %s" % (action, cmd[2:], arg)
if action in ["BG", "ST", "TP", "TD", "SH", "MO"]: if action in ["BG", "ST", "TP", "TD", "SH", "MO", "SC", "TS"]:
self.doMotorCommand(cmd, arg) self.doMotorCommand(cmd, arg)
if action == "LV": if action == "LV":
self.doCommandLV(cmd, arg) self.doCommandLV(cmd, arg)

View File

@@ -1,5 +1,5 @@
#!/usr//bin/env python #!/usr//bin/env python
# vim: ts=8 sts=4 sw=4 expandtab # vim: ts=8 sts=4 sw=4 ft=python expandtab
# Author: Douglas Clowes (dcl@ansto.gov.au) 2012-06-29 # Author: Douglas Clowes (dcl@ansto.gov.au) 2012-06-29
import inspect import inspect
import time import time
@@ -169,8 +169,18 @@ class GalilMotor(object):
currentPosition = self.getPosition() currentPosition = self.getPosition()
if not self.moveCallback == None: if not self.moveCallback == None:
self.moveCallback(self) self.moveCallback(self)
# TODO Forward Limit if self.targetSteps > self.motorStartSteps and currentPosition >= self.upperLim:
# TODO Reverse Limit # Forward Limit
self.motorState = "STOPPED"
self.stopcode = 2 # stopped by forward limit
self.switches = 44 - 8 # stopped, reverse limit clear
pass
if self.targetSteps < self.motorStartSteps and currentPosition <= self.lowerLim:
# Reverse Limit
self.motorState = "STOPPED"
self.stopcode = 3 # stopped by reverse limit
self.switches = 44 - 4 # stopped, forward limit clear
pass
if self.motorState == "STOPPED": if self.motorState == "STOPPED":
print "Axis %s stopped at:" % self.axis, currentPosition print "Axis %s stopped at:" % self.axis, currentPosition
self.currentSteps = self.targetSteps self.currentSteps = self.targetSteps
@@ -243,6 +253,12 @@ class GalilMotor(object):
def doCommandTP(self, arg): def doCommandTP(self, arg):
return self.doQuery("TP") return self.doQuery("TP")
def doCommandSC(self, arg):
return self.doQuery("SC")
def doCommandTS(self, arg):
return self.doQuery("TS")
def doCommandST(self, arg): def doCommandST(self, arg):
if self.motorState in ["MOVING"]: if self.motorState in ["MOVING"]:
self.motorState = "STOPPED" self.motorState = "STOPPED"