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

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