From 2ea0e042eed42f4b85b563fc84548b15159cc774 Mon Sep 17 00:00:00 2001 From: Ferdi Franceschini Date: Tue, 23 Apr 2013 10:29:41 +1000 Subject: [PATCH] Implements run and drive wrappers which set allowed target values when driving the fermi motors. --- .../pelican/pelican_configuration.tcl | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/site_ansto/instrument/pelican/pelican_configuration.tcl b/site_ansto/instrument/pelican/pelican_configuration.tcl index 7b97c07a..68630464 100644 --- a/site_ansto/instrument/pelican/pelican_configuration.tcl +++ b/site_ansto/instrument/pelican/pelican_configuration.tcl @@ -1,5 +1,9 @@ # Author: Jing Chen (jgn@ansto.gov.au) +# Ferdi Franceschini: April 2013 +# Added run and drive wrappers which set the target speed to an allowed speed +# for fermi motors. + # Required by server_config.tcl VarMake Instrument Text Internal Instrument pelican @@ -35,6 +39,38 @@ fileeval $cfPath(anticollider)/anticollider.tcl fileeval $cfPath(chopper)/sct_fermichopper.tcl fileeval $cfPath(chopper)/fermimot.tcl +proc mkrunargs {args} { + foreach {mot speed} $args { + lappend runargs $mot + if {$mot == "mchs" || $mot == "schs"} { + set refspeed [SplitReply [$mot refspeed]] + set sprat [expr {abs($speed)/$refspeed}] + set mult [::chopper::findSpeedMult $sprat] + set target [expr $mult * $refspeed] + if {$speed < 0} { + set target -$target + } + lappend runargs [expr round($target)] + } else { + lappend runargs $speed + } + } + return "$runargs" +} + +proc run {args} { + set runargs [eval "mkrunargs $args"] + eval "sicsrun $runargs" +} + +proc drive {args} { + set runargs [eval "mkrunargs $args"] + eval "sicsdrive $runargs" +} + +publish run user +publish drive user + source gumxml.tcl ::utility::mkVar ::anticollider::protect_detector text manager protect_detector false detector true false