|
#=============================================================
% F( m8 Y2 f0 R& Q: F6 U proc PB_CMD_Zmax_Zmin_start_of_program { } {, b z! R6 q! ^& a: L* h6 R6 c8 Q
#=============================================================' Y) n7 ]( h8 ^/ v4 A9 k0 k3 e
#* V' ~5 R& o/ N2 l7 `
# This custom command may be used to check for the maximum6 a Q5 x/ N1 s* I. B8 ^( @
# travel for each axis. A warning will be output for each7 E, r/ E0 A E/ q* p7 W, L% I; T
# GOTO that exceeds the limits. It does not check for! T! E5 b; M; @' @
# parallel axis such as Z and W. It does not account for
/ k* O3 @2 G6 P # any modifications done by the user to mom_pos before the( w4 G5 z; K- n" A; H" V
# coordinates are output.. |9 j. u" Q9 `# b
#0 f: H' h# H' ` ~! |
#
9 C5 c: y& R' M5 G4 h/ c: { # Import and call this command in PB_CMD_before_motion.1 p) H. v7 M) q) v, P
#
! q$ B7 O9 Z& V x& c+ x #
5 O" ]/ g, v3 v3 @, H3 F8 ]; J global mom_sys_max_travel
3 I5 I( L* R9 z( E% E8 B global mom_sys_min_travel; u% o* {$ b* [/ L4 M& v' z
global mom_kin_x_axis_limit
3 v/ F6 m( V$ Q$ P! s5 I3 t& p global mom_kin_y_axis_limit
! X( p" L( ^) B u global mom_kin_z_axis_limit
& q4 H2 C x/ u, U global mom_pos
7 C/ Q# z) t* e% J" K global mom_cycle_rapid_to_pos
2 Q1 x! `, q" O' n7 G global mom_cycle_feed_to_pos( ^; B2 L/ b8 C! K* q# ?
global mom_cycle_retract_to_pos
: E. j$ Q" X7 n& J0 R3 L global mom_motion_type
6 y1 o; @! x: C/ u. h global mom_warning_info& A& v# S- C9 L9 e
6 K2 a( f W+ E, G* Q
if {![info exists mom_sys_max_travel]} {
5 r( Z6 Z$ }1 w7 T. K4 A
- q) e$ ^' U5 Q U- ~) P+ q for {set i 0} {$i < 3} {incr i} { |6 `: D! T, M7 {
# D1 w% b3 p! L0 P! w/ L8 W set mom_sys_max_travel($i) $mom_pos($i)- J2 O2 d% F. q" ~6 }4 Q
set mom_sys_min_travel($i) $mom_pos($i)" c R: N: ^' }$ ^5 T/ S
}% L) V: V( t% B5 E1 L
* ]' Z* L& c) A3 o
} elseif { ![string compare "CYCLE" $mom_motion_type] } {6 }; U8 f0 g# B& M
5 I. o! T; k0 i( g% f& A
for {set i 0} {$i < 3} {incr i} {! f8 W! Z. t. l1 |- S0 B# g
* t' Z) I; g! }/ M3 T
if {$mom_cycle_rapid_to_pos($i) < $mom_sys_min_travel($i)} {2 p9 x* ]1 f8 O% j3 J
set mom_sys_min_travel($i) $mom_cycle_rapid_to_pos($i)# X- Y) H3 a* Q( U/ G
}# q) k$ \, u! l- Z
if {$mom_cycle_rapid_to_pos($i) > $mom_sys_max_travel($i)} {* J% ]7 m/ u; u; n( l3 F/ z8 @* V$ A
set mom_sys_max_travel($i) $mom_cycle_rapid_to_pos($i)
( O* B2 a) P7 M. V0 x; n }
) o' D; }+ l l9 Q* h if {$mom_cycle_feed_to_pos($i) < $mom_sys_min_travel($i)} {
7 o8 w1 [$ @' k: S9 u1 L& b% x set mom_sys_min_travel($i) $mom_cycle_feed_to_pos($i)
) K1 _& G7 ^! [& Y( P$ ] }
7 ~8 [3 c5 {, S: @ if {$mom_cycle_feed_to_pos($i) > $mom_sys_max_travel($i)} {, u% ]% ^/ k4 ^! K8 m+ l
set mom_sys_max_travel($i) $mom_cycle_feed_to_pos($i)* _8 Q+ F" v0 N8 O) K5 ?4 D! a
}% B8 S; x) v5 k: j; E. S6 g
if {$mom_cycle_retract_to_pos($i) < $mom_sys_min_travel($i)} {
" N! ~3 O3 f+ D9 W9 E. c, J. T set mom_sys_min_travel($i) $mom_cycle_retract_to_pos($i)
" V4 `" L; m) C7 l Y& Q: e9 I }
0 L# H/ S) X8 a6 b4 D$ u if {$mom_cycle_retract_to_pos($i) > $mom_sys_max_travel($i)} {, G) ?" U; t9 @$ n8 f: ]' [) S
set mom_sys_max_travel($i) $mom_cycle_retract_to_pos($i)4 D9 g& d( ~1 Z
}9 F" U2 F4 h/ T$ S' C
}
& G* p9 H+ t3 @1 r5 L& ^) Z: X# g3 V6 o- q$ S I& L
} else {% l6 s& I/ c `/ } W
3 w( C" I# _3 R& c
for {set i 0} {$i < 3} {incr i} {% }- }4 \+ j0 G- y' ~& z& j
if {$mom_pos($i) < $mom_sys_min_travel($i)} {9 m* |0 @0 n# T8 X
set mom_sys_min_travel($i) $mom_pos($i)/ w5 ^: c1 u4 S$ ]( D
}
b0 T- E8 r+ {9 E) R if {$mom_pos($i) > $mom_sys_max_travel($i)} {8 E L& \& N# g$ D" o$ a2 G
set mom_sys_max_travel($i) $mom_pos($i)
. r' b# |6 l3 T" N }
- f0 O# S% |! } }
3 ^* B7 x) u$ j7 N0 n4 T7 y }
" ~2 l: x, x* C! n8 K4 T: `
`( e; M* |/ @! K, |% \0 d `7 }) z- c if {[expr $mom_sys_max_travel(0) - $mom_sys_min_travel(0)] > $mom_kin_x_axis_limit} {' B% O5 {" K. _ {) f; p
set mom_warning_info "Maximum X axis travel exceeded, did not alter output"' h/ h# |+ g7 L6 I. P/ {4 K4 o
MOM_catch_warning h9 ]) \$ u- Y
}
" O) c0 Y# H; c3 B7 c, k( i' i1 y+ e8 h _6 g% U
if {[expr $mom_sys_max_travel(1) - $mom_sys_min_travel(1)] > $mom_kin_y_axis_limit} {8 }, w' a- z) y& a" [4 F
set mom_warning_info "Maximum Y axis travel exceeded, did not alter output"
1 W! E N4 b5 Q5 U5 q MOM_catch_warning
( V- \) L, V6 r. k- z% `( k) U1 R1 Y+ e }
6 m( I; S* x! F$ Y; j$ e5 G8 j6 f2 d+ m* ^- D7 R. I; Z9 l: |
if {[expr $mom_sys_max_travel(2) - $mom_sys_min_travel(2)] > $mom_kin_z_axis_limit} {( o$ H f \( d, F8 [
set mom_warning_info "Maximum Z axis travel exceeded, did not alter output"! g: B0 e* e' ~8 l" [8 l; ]4 h4 V
MOM_catch_warning
' N3 q' d9 m2 f% S# u }
/ _0 D4 ?3 q4 q# G } S) A1 N Y; y m8 v
5 U" K T7 X& }! S- I5 ^- f( f k& O p/ f. W6 ^
|
|