From 54b383647a771c4df56c67b9a52be31973a36156 Mon Sep 17 00:00:00 2001 From: Ferdi Franceschini Date: Mon, 10 Feb 2014 16:37:07 +1100 Subject: [PATCH] Use fwd_enc_lim for SICS motor lower-limit when positive steps drive an axis in the negative direction for our standard coordinate system. --- site_ansto/instrument/util/genmotconf.tcl | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/site_ansto/instrument/util/genmotconf.tcl b/site_ansto/instrument/util/genmotconf.tcl index 6dad4fa9..97f73af2 100755 --- a/site_ansto/instrument/util/genmotconf.tcl +++ b/site_ansto/instrument/util/genmotconf.tcl @@ -93,7 +93,11 @@ proc gen_attval {mot att} { if [info exists ::${mot}_attarr(absenchome)] { set enc_home_val [expr double([set ::${mot}_attarr(absenchome)])] } else { - set enc_home_val [expr double([set ::${mot}_encatts(rev_enc_lim)])] + if {$sign < 0} { + set enc_home_val [expr double([set ::${mot}_encatts(fwd_enc_lim)])] + } else { + set enc_home_val [expr double([set ::${mot}_encatts(rev_enc_lim)])] + } } if [info exists ::${mot}_attarr(home)] { set home_val [expr double([set ::${mot}_attarr(home)])] @@ -103,7 +107,7 @@ proc gen_attval {mot att} { switch $att { "absenchome" { if [info exists ::${mot}_encatts(rev_enc_lim)] { - return [set ::${mot}_encatts(rev_enc_lim)] + return $enc_home_val } else { return "NOATT" } @@ -113,7 +117,11 @@ proc gen_attval {mot att} { "maxdecel" {return 1} "rev_lim" { if { [info exists ::${mot}_encatts(rev_enc_lim)] && [info exists ::${mot}_encatts(cnts_per_x)] } { - return [expr {$sign * ($rev_enc_lim_val - $enc_home_val) / $cnts_per_x_val + $home_val}] + if {$sign < 0} { + return [expr {($fwd_enc_lim_val - $enc_home_val) / $cnts_per_x_val + $home_val}] + } else { + return [expr {($rev_enc_lim_val - $enc_home_val) / $cnts_per_x_val + $home_val}] + } } else { return 0 } @@ -121,7 +129,11 @@ proc gen_attval {mot att} { "home" {return 0} "fwd_lim" { if { [info exists ::${mot}_encatts(fwd_enc_lim)] && [info exists ::${mot}_encatts(cnts_per_x)] } { - return [expr {$sign * ($fwd_enc_lim_val - $enc_home_val) / $cnts_per_x_val + $home_val}] + if {$sign < 0} { + return [expr {($rev_enc_lim_val - $enc_home_val) / $cnts_per_x_val + $home_val}] + } else { + return [expr {($fwd_enc_lim_val - $enc_home_val) / $cnts_per_x_val + $home_val}] + } } else { return 1 }