#!/usr/bin/env python
”'
demo for variable velocity contouring feature
”'
import sys, argparse, time
import PyTango
import HasyUtils
import Spectra
MOTOR_NAME = "p99/motor/d1.65"
proxy = None
def pos( dest):
”'
move to a unit position
”'
print "--- pos to", dest, "slew", proxy.slewRate
proxy.position = float(dest)
while proxy.state() is PyTango.DevState.MOVING:
print "pos", proxy.state(), proxy.position
time.sleep(0.5)
if HasyUtils.inkey() == 32:
proxy.command_inout( "StopMove")
return False
print "pos", proxy.state(), proxy.position
return True
def demo():
”'
move through 3 regions with different speeds
”'
#
# start the test at 0
#
if not pos( 0): return
Spectra.gra_command( "reset/nocon")
posGQE = Spectra.SCAN( name = "Pos", start = 0, stop = 1, np = 500, at = "(1,1,1)",
colour = 2,
comment = "Position %s as function of time" % proxy.name(),
xlabel = 'time', ylabel='Pos', date = True)
lst = [ "slew: 10000, position: 0.1",
"slew: 20000, position: 0.5",
"slew: 40000, position: 0.9"]
proxy.command_inout( "movevvc", lst)
i = 0
startTime = time.time()
while proxy.state() is PyTango.DevState.MOVING:
print proxy.state(), proxy.position
time.sleep(0.1)
if HasyUtils.inkey() == 32: # space bar interrupts move
proxy.command_inout( "StopMove")
posGQE.setX( i, time.time() - startTime)
posGQE.setY( i, proxy.position)
i += 1
Spectra.gra_command( "autoscale")
Spectra.gra_display()
print "DONE", proxy.state(), proxy.position
#
# go back to 0
#
pos( 0)
return
def main():
global proxy
parser = argparse.ArgumentParser(
formatter_class = argparse.RawDescriptionHelpFormatter,
description="Variable Velocity Contouring Demo")
parser.add_argument('-x', dest="tst", action="store_true", help='execute a test')
args = parser.parse_args()
try:
proxy = PyTango.DeviceProxy( MOTOR_NAME)
except PyTango.DevFailed, e:
PyTango.Except.print_exception(e)
sys.exit()
proxy.FlagClosedLoop = 0
if args.tst:
return demo()
parser.print_help()
if __name__ == "__main__":
main()