Implements run and drive wrappers which set allowed target values when

driving the fermi motors.
This commit is contained in:
Ferdi Franceschini
2013-04-23 10:29:41 +10:00
parent b15014bfd5
commit 2ea0e042ee

View File

@@ -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