|
#=============================================================. c3 r' N' |" K9 P9 w4 c) |2 C
proc PB_CMD_Zmax_Zmin_start_of_program { } { p3 w/ Y9 m1 S
#=============================================================
3 z6 I/ V4 J0 F$ |) D- z6 c) T. L. x #5 \) e& d- C. z
# This custom command may be used to check for the maximum* b* \0 g! Z/ h
# travel for each axis. A warning will be output for each) k6 ` c) K. Z6 l1 U. {
# GOTO that exceeds the limits. It does not check for
- V! h& _/ I( p# u" d$ Q3 B # parallel axis such as Z and W. It does not account for
- |$ i& m! C! w # any modifications done by the user to mom_pos before the
9 h7 Q' i, |- v" X # coordinates are output.. l- p) `) q# T' F
#
! Q, P3 _' }8 |0 W ## T3 h3 s* L+ E- B2 O6 U. m* ?
# Import and call this command in PB_CMD_before_motion.
' u3 x$ ]* N( D #' ~- K6 x7 m. S. A
#+ y! T" g0 s4 w7 b
global mom_sys_max_travel9 i3 ?5 ?3 t8 u6 o! j0 L
global mom_sys_min_travel
7 a& t+ a: I% W' m9 W+ ` global mom_kin_x_axis_limit
9 `% R4 T3 t( D$ i p4 e global mom_kin_y_axis_limit
0 D+ k( y3 B7 D* W/ r: Z4 Z* h global mom_kin_z_axis_limit: f* s1 d# K0 _8 u, {+ p
global mom_pos
0 {5 L' O# I: [3 |. g7 B9 r global mom_cycle_rapid_to_pos. S* F3 z& M7 j! Q% F
global mom_cycle_feed_to_pos
/ F/ f8 E: S; _2 L global mom_cycle_retract_to_pos0 C" U( d6 a0 T; L* x+ K. t
global mom_motion_type) I7 k8 d% H, }% _% r4 \
global mom_warning_info
1 A! J, J" r5 Y: R/ o" Z
# N0 L) n4 h) g+ F, \2 y3 S1 |4 G9 I5 r if {![info exists mom_sys_max_travel]} {
6 R( K* b' a) W/ ~# ~9 Q2 e1 f8 ]+ s3 r
for {set i 0} {$i < 3} {incr i} {3 K6 |; w' b; g- f* I+ I0 J8 F
' J* O. E& c8 S
set mom_sys_max_travel($i) $mom_pos($i)' `0 G4 [5 c" F: J: Z2 Z0 Z! A
set mom_sys_min_travel($i) $mom_pos($i), x" _& `" T# |/ c" V. w$ K
}# f+ i# t! N$ ^4 S6 X
, o' u; O/ ]- ~% D5 e; w
} elseif { ![string compare "CYCLE" $mom_motion_type] } {) t+ c! {$ P9 o- }' g
0 y) J' ~0 S% ^7 t0 N( P for {set i 0} {$i < 3} {incr i} {) Y8 |. ~$ M2 i/ a- M: ?5 a" [
3 e9 Q. q8 G3 J- M7 ~
if {$mom_cycle_rapid_to_pos($i) < $mom_sys_min_travel($i)} {
W6 G* y X6 g9 J/ b- r8 J# \) y set mom_sys_min_travel($i) $mom_cycle_rapid_to_pos($i)
# z* s6 i& p" `. z+ \& y% N }
/ J9 b) O) ^, l- X/ q/ n if {$mom_cycle_rapid_to_pos($i) > $mom_sys_max_travel($i)} {
0 Y1 h' h" J4 i& u% i set mom_sys_max_travel($i) $mom_cycle_rapid_to_pos($i)
( u5 }: Q/ X0 h/ o/ p }2 ]# ?- v9 u5 y7 h1 k/ K$ e
if {$mom_cycle_feed_to_pos($i) < $mom_sys_min_travel($i)} {6 I3 e0 o, a) H) W% W0 i
set mom_sys_min_travel($i) $mom_cycle_feed_to_pos($i)
. P3 U$ e! D! _6 k/ ` }7 c8 T. a1 w5 o5 D2 z
if {$mom_cycle_feed_to_pos($i) > $mom_sys_max_travel($i)} {6 r# m) h% N# A# \8 P
set mom_sys_max_travel($i) $mom_cycle_feed_to_pos($i)
7 m. d1 D( l" _ G: a' \ T }( D& o% z. S5 x6 h4 [ e {& | \
if {$mom_cycle_retract_to_pos($i) < $mom_sys_min_travel($i)} {
. n+ x: Q" x2 i set mom_sys_min_travel($i) $mom_cycle_retract_to_pos($i). M+ k [# S5 l
}
2 d W$ Z5 n& ^$ M6 @ if {$mom_cycle_retract_to_pos($i) > $mom_sys_max_travel($i)} {
, _, @' ?- {+ U- X3 D/ y set mom_sys_max_travel($i) $mom_cycle_retract_to_pos($i)% J4 ]/ W% ^0 [; M$ b' N& t
}
7 `; _' L! t4 M0 ?+ f) Y; @. A }
- w8 F; Z7 I" g; S8 U2 B# E# O. L% C5 l2 Q/ k
} else {
8 w2 \% E) b% h5 l* w# x; N; }0 ?
for {set i 0} {$i < 3} {incr i} {/ c& _& G5 s/ T
if {$mom_pos($i) < $mom_sys_min_travel($i)} {
5 g# W" ]2 H: {/ O3 g/ M! N3 { set mom_sys_min_travel($i) $mom_pos($i)
. D$ D, m8 Q6 L9 ~ }
; y' ~8 X9 _0 k1 D2 B( {) B if {$mom_pos($i) > $mom_sys_max_travel($i)} {, U8 x3 _+ W) p) M0 O; f, p
set mom_sys_max_travel($i) $mom_pos($i)
1 s( W. P6 {% A }9 p* W4 \) Y0 L' P& k
}* P9 B8 N; d' g0 h& D1 ]( s! T2 F5 K
}, j! y1 V' A/ n$ B+ [9 c
# Q8 O1 `* U0 o, \: _* e2 `: w
if {[expr $mom_sys_max_travel(0) - $mom_sys_min_travel(0)] > $mom_kin_x_axis_limit} {8 r& R1 f$ _& B: I) V
set mom_warning_info "Maximum X axis travel exceeded, did not alter output"$ t, G! Z: K0 h2 c& ~
MOM_catch_warning# C, ]& S1 E f. [
}
) h; O2 \& D9 u6 Z4 j6 S: c0 J. `1 g% `$ U
if {[expr $mom_sys_max_travel(1) - $mom_sys_min_travel(1)] > $mom_kin_y_axis_limit} {
. T+ J; f" z5 N7 Z3 \ set mom_warning_info "Maximum Y axis travel exceeded, did not alter output"6 h' O$ T) ]1 ^& D
MOM_catch_warning" p2 F* j, ^0 { c7 c: h) y. I, J1 E8 m
}
7 a; T6 @! r$ f, L4 V) F1 r( ^& l6 H9 k7 f. u; u. V2 S) n
if {[expr $mom_sys_max_travel(2) - $mom_sys_min_travel(2)] > $mom_kin_z_axis_limit} {& C& |% @% p' w
set mom_warning_info "Maximum Z axis travel exceeded, did not alter output"9 {6 E: Y0 Z/ @; [
MOM_catch_warning- H! v4 j0 Q i, F
}
9 X' s8 M7 a+ h1 ?" S2 Q% y. Y }5 t: }: W3 p4 V! n0 w
0 {( y. o2 v" G9 G5 O
; V- V9 B, Z) ~' E& P |
|