Use fwd_enc_lim for SICS motor lower-limit when positive steps drive an axis in the negative direction for our standard coordinate system.

This commit is contained in:
Ferdi Franceschini
2014-02-10 16:37:07 +11:00
parent 51afda1185
commit 54b383647a

View File

@ -92,9 +92,13 @@ proc gen_attval {mot att} {
} }
if [info exists ::${mot}_attarr(absenchome)] { if [info exists ::${mot}_attarr(absenchome)] {
set enc_home_val [expr double([set ::${mot}_attarr(absenchome)])] set enc_home_val [expr double([set ::${mot}_attarr(absenchome)])]
} else {
if {$sign < 0} {
set enc_home_val [expr double([set ::${mot}_encatts(fwd_enc_lim)])]
} else { } else {
set enc_home_val [expr double([set ::${mot}_encatts(rev_enc_lim)])] set enc_home_val [expr double([set ::${mot}_encatts(rev_enc_lim)])]
} }
}
if [info exists ::${mot}_attarr(home)] { if [info exists ::${mot}_attarr(home)] {
set home_val [expr double([set ::${mot}_attarr(home)])] set home_val [expr double([set ::${mot}_attarr(home)])]
} else { } else {
@ -103,7 +107,7 @@ proc gen_attval {mot att} {
switch $att { switch $att {
"absenchome" { "absenchome" {
if [info exists ::${mot}_encatts(rev_enc_lim)] { if [info exists ::${mot}_encatts(rev_enc_lim)] {
return [set ::${mot}_encatts(rev_enc_lim)] return $enc_home_val
} else { } else {
return "NOATT" return "NOATT"
} }
@ -113,7 +117,11 @@ proc gen_attval {mot att} {
"maxdecel" {return 1} "maxdecel" {return 1}
"rev_lim" { "rev_lim" {
if { [info exists ::${mot}_encatts(rev_enc_lim)] && [info exists ::${mot}_encatts(cnts_per_x)] } { 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 { } else {
return 0 return 0
} }
@ -121,7 +129,11 @@ proc gen_attval {mot att} {
"home" {return 0} "home" {return 0}
"fwd_lim" { "fwd_lim" {
if { [info exists ::${mot}_encatts(fwd_enc_lim)] && [info exists ::${mot}_encatts(cnts_per_x)] } { 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 { } else {
return 1 return 1
} }