|
#=============================================================+ C0 S7 Y3 d; |; }- H n. _5 ]
proc PB_CMD_Zmax_Zmin_start_of_program { } {
: l% y2 ~; k+ O- { #=============================================================
3 K" |2 Y- l: r4 P3 c# ^ #
# n9 ^9 d4 [6 y$ J& N, d, f # This custom command may be used to check for the maximum
+ r' g# c3 c7 j* K+ Y/ J # travel for each axis. A warning will be output for each* d2 r6 H, S9 n! C4 t4 l
# GOTO that exceeds the limits. It does not check for# J% {& u: y6 E! X; S6 G
# parallel axis such as Z and W. It does not account for
& `9 _7 a; t+ l2 r. P7 t # any modifications done by the user to mom_pos before the" S2 m$ E" e" {
# coordinates are output.1 J$ ]$ g. c7 B2 d2 {0 f
#
- z* S6 G+ ^* {7 a3 v #: ?- V( q% s* Y* n1 u2 l5 [' S* G
# Import and call this command in PB_CMD_before_motion.. k( p4 a8 R3 H# v2 L, s J5 K( i2 M: e
#, ^9 I. k+ ^: `, c2 |
#
+ H: Q0 n' F$ i7 ?( c/ f+ M global mom_sys_max_travel
% c1 G# Z" V, U0 x" @ global mom_sys_min_travel
0 P- C! A( c, M) ?0 I/ d global mom_kin_x_axis_limit
/ g l7 z+ u: o* ~- o; l global mom_kin_y_axis_limit
# W7 }' |7 O8 P9 h1 B+ o global mom_kin_z_axis_limit) B% o( |9 h# N& m
global mom_pos
) Q7 x$ J$ ~2 G1 T, Q6 l0 L global mom_cycle_rapid_to_pos$ j9 k2 c0 w7 }$ D3 o2 T z
global mom_cycle_feed_to_pos% K3 @' G3 C' Z0 Z
global mom_cycle_retract_to_pos$ Z+ e2 Q, a; G& ^- g M5 \
global mom_motion_type! o3 b3 T8 X) V, y- {; j
global mom_warning_info
; |% h/ S1 d& M: m8 h4 c0 v5 M1 h9 ^4 L/ }3 M/ U: `2 ^3 l2 W
if {![info exists mom_sys_max_travel]} {; e# o( E* c! [$ h
0 s( U: T; N, M6 z+ p
for {set i 0} {$i < 3} {incr i} {
; y8 C% C& g4 h8 A6 S# i9 ]! ]4 U/ p3 ^; ^! m1 b8 w. t2 e; }* N
set mom_sys_max_travel($i) $mom_pos($i)
+ t5 }# X O4 } set mom_sys_min_travel($i) $mom_pos($i)! @ h4 ^* [; L: ~
} A6 R/ S4 D7 @! s
8 L2 ~% `/ i- A7 ^9 j* n7 f) j } elseif { ![string compare "CYCLE" $mom_motion_type] } {
. |, p5 s; ?9 U3 `# @# n! D! }* [* J& L( d1 ` V/ h- O2 Z3 G
for {set i 0} {$i < 3} {incr i} {3 y/ D" p+ Y$ R+ q' g0 a4 L
- V1 I0 m" w( g, B; T3 S: F+ g& F if {$mom_cycle_rapid_to_pos($i) < $mom_sys_min_travel($i)} {
( ^, ^; N, K$ q& K0 B$ y set mom_sys_min_travel($i) $mom_cycle_rapid_to_pos($i)
9 V3 i: P) }/ G- \: L }. i6 U4 n# j* C
if {$mom_cycle_rapid_to_pos($i) > $mom_sys_max_travel($i)} {
4 o. ^0 ?! F9 p$ G6 m5 z set mom_sys_max_travel($i) $mom_cycle_rapid_to_pos($i)
" x, \$ u8 Z; J" w% x( H }) r' ]) F; r& F! x, P& j% _/ S& Z
if {$mom_cycle_feed_to_pos($i) < $mom_sys_min_travel($i)} {
% e5 |/ l$ z& Z8 k+ F; Z set mom_sys_min_travel($i) $mom_cycle_feed_to_pos($i)
. z2 R& w, @4 ^7 V, z5 Q5 K }
1 o4 x+ k1 y. h- l: L& P4 Q: _ if {$mom_cycle_feed_to_pos($i) > $mom_sys_max_travel($i)} {6 r Y1 r& g: e3 |
set mom_sys_max_travel($i) $mom_cycle_feed_to_pos($i)
# g! j8 s& r+ D0 v( ^" T* E }
* q& N" b9 Y$ g4 L if {$mom_cycle_retract_to_pos($i) < $mom_sys_min_travel($i)} {7 M) k! U! o7 X
set mom_sys_min_travel($i) $mom_cycle_retract_to_pos($i)
& D) v7 k5 k% W! {* L0 E1 s$ M' N+ O2 }2 s }
7 b1 O t: e7 t) v* B) e0 R, ] if {$mom_cycle_retract_to_pos($i) > $mom_sys_max_travel($i)} {
& l6 Z' K' P7 u6 d6 V( \ set mom_sys_max_travel($i) $mom_cycle_retract_to_pos($i)
- n( A$ S6 T) a! ~ }! e) _% }4 ` m* z" b
}5 P+ V7 ^9 C. u
9 C( v* A3 o& i# }* I. S
} else {
: L2 ]8 [9 O A3 n0 m0 T5 p3 y- f1 m0 w% i/ p: D9 g( r+ B5 N
for {set i 0} {$i < 3} {incr i} {' {0 Z# j3 o' ^
if {$mom_pos($i) < $mom_sys_min_travel($i)} {9 n' A: ^6 e; e. t# _, W4 \$ k
set mom_sys_min_travel($i) $mom_pos($i)
7 |, H* f1 L F }
+ s* R* B' R2 _* M4 T Z7 B if {$mom_pos($i) > $mom_sys_max_travel($i)} {
6 ? x. x! i! A6 S. A set mom_sys_max_travel($i) $mom_pos($i)
% [9 z: n6 C# h% b T }8 H8 X& a, u' y& Q) k4 i
}0 h9 q! c% {2 ]& u
}
7 }2 b$ G. i/ L. C0 i {
: J1 U+ l0 n6 e- w if {[expr $mom_sys_max_travel(0) - $mom_sys_min_travel(0)] > $mom_kin_x_axis_limit} {% z0 E' y' S9 v3 s4 Y
set mom_warning_info "Maximum X axis travel exceeded, did not alter output"
. H* [. V' u0 n# u6 M7 @2 V! @6 r( | MOM_catch_warning3 B0 D# H) }. L- [0 O
}
. s0 n3 h( K* R
/ e" U6 W5 ^5 m0 {+ _2 z, S if {[expr $mom_sys_max_travel(1) - $mom_sys_min_travel(1)] > $mom_kin_y_axis_limit} {
; z! J0 m7 }" [. J set mom_warning_info "Maximum Y axis travel exceeded, did not alter output"
8 B! c! G- y* i( J MOM_catch_warning1 M. i3 a2 f- w1 ~& ?4 G, k0 t, n
}
L+ k0 ?7 [3 g% T
. ]- F5 _* }4 M if {[expr $mom_sys_max_travel(2) - $mom_sys_min_travel(2)] > $mom_kin_z_axis_limit} {7 k- t) b0 l' u
set mom_warning_info "Maximum Z axis travel exceeded, did not alter output"# t7 t, ]; W- \; `
MOM_catch_warning
- K& {. |2 _' t. @ }8 N8 D! o2 P7 a4 c5 h W& w% Z
} q( ?& A% j/ B
; P$ F0 ]+ Z0 [4 F! F& @, ?; v4 ^$ Q
$ O9 X+ o. J8 u9 n* {: k |
|