|
#=============================================================; ^& r N# ^; q& W8 d& Z
proc PB_CMD_Zmax_Zmin_start_of_program { } {3 C) Z7 r- Y( \; P- @
#=============================================================
$ q! I+ l8 k5 Z7 h$ ^2 e2 O$ q+ r #, k0 B" C+ `/ F7 d6 u% C& K* y
# This custom command may be used to check for the maximum
" `, l6 x( y3 C0 F( r # travel for each axis. A warning will be output for each/ j/ C" J" `4 F
# GOTO that exceeds the limits. It does not check for
$ q, L3 I! D+ p$ c3 Y # parallel axis such as Z and W. It does not account for
8 x$ `5 V% _+ A # any modifications done by the user to mom_pos before the, C$ C/ z- c3 Z7 p
# coordinates are output.' _. `" S6 h2 N3 r
#
" x+ B1 v4 {. ?: d _ #
1 A7 Q" k6 e& f- U, ] # Import and call this command in PB_CMD_before_motion." t) _: C* y/ C7 F3 l5 i) x' C& p
#
* a' z% T3 z! u3 j # C6 d- P8 P4 {0 A+ }( q
global mom_sys_max_travel
! j( t: Z( I8 W% N global mom_sys_min_travel
; [5 ~ w( t6 A% \ global mom_kin_x_axis_limit
* i# Y6 K; h0 Y. u& X0 P' M global mom_kin_y_axis_limit
9 Q- i. s8 J M$ ~, s global mom_kin_z_axis_limit" ]5 N6 n. `6 X* U: O; t( A; `
global mom_pos
' k3 C9 O* _( g" f, ] global mom_cycle_rapid_to_pos
, S, q& Z/ t" c* k7 i global mom_cycle_feed_to_pos
+ ` R1 u! d! e1 I8 \/ ~ global mom_cycle_retract_to_pos$ z+ G: L- s+ n3 m$ F1 g. j8 S+ ^
global mom_motion_type y/ W: f1 }& v! t* j2 ~; t% i/ ]9 v
global mom_warning_info z% j F* b1 L4 \/ @4 C
9 H& s+ p6 c; O" S* P1 P if {![info exists mom_sys_max_travel]} {
8 t* c Z1 o* I+ W4 A P$ o" q& }
for {set i 0} {$i < 3} {incr i} {- A3 h* g. f) G6 N
6 K u0 c4 `5 k3 J9 P set mom_sys_max_travel($i) $mom_pos($i)1 H" u" x* K/ f, D. ~
set mom_sys_min_travel($i) $mom_pos($i)
7 D U9 {0 _) @3 L( C/ H }
5 |5 h+ F0 x3 G& I( t5 s: o- k: v! b' j% k1 S0 e
} elseif { ![string compare "CYCLE" $mom_motion_type] } {
* o/ `( H0 z4 K! v3 k( B7 e% X6 I4 n4 Y6 {- X: ~/ x- i
for {set i 0} {$i < 3} {incr i} {) J7 f' x# f, r& M) y; w
; J% Q, Y2 C! V# v- g: s- t3 f7 D+ h
if {$mom_cycle_rapid_to_pos($i) < $mom_sys_min_travel($i)} {- ^, z1 J: T* F+ Y& N
set mom_sys_min_travel($i) $mom_cycle_rapid_to_pos($i)
8 w% R# i9 T( @" C* e9 d$ J Z }* g5 y* j3 I# V3 P3 w
if {$mom_cycle_rapid_to_pos($i) > $mom_sys_max_travel($i)} {
6 c5 x5 ?" u8 k5 Z. ]7 k set mom_sys_max_travel($i) $mom_cycle_rapid_to_pos($i)
* [9 R5 k8 t' ?& A6 f, S- U5 m" | }- q2 y4 A6 _$ |$ M
if {$mom_cycle_feed_to_pos($i) < $mom_sys_min_travel($i)} {* p0 F, H1 n/ u( w, [
set mom_sys_min_travel($i) $mom_cycle_feed_to_pos($i)# M' S6 N# b- q J( `, I7 C& J+ v
}
' S3 b' V8 `" z if {$mom_cycle_feed_to_pos($i) > $mom_sys_max_travel($i)} {
+ ]0 A! }$ d$ C8 m8 l set mom_sys_max_travel($i) $mom_cycle_feed_to_pos($i)
& Z% `8 o& W4 `: ]: [! f8 k) Q }
3 m: @- I' x. S3 } }4 \' ]+ O if {$mom_cycle_retract_to_pos($i) < $mom_sys_min_travel($i)} {
: Y, c0 T; }* k& D) \ set mom_sys_min_travel($i) $mom_cycle_retract_to_pos($i)
, j& `: t6 F0 ?* A8 d/ i } P1 F( v5 M, s) y& J
if {$mom_cycle_retract_to_pos($i) > $mom_sys_max_travel($i)} {
, H. H7 a1 z+ ` set mom_sys_max_travel($i) $mom_cycle_retract_to_pos($i)
: |, B# V9 p- N' ?& X& D) q }
6 d- z2 W8 @/ r6 i2 K b } B! y* e7 z$ g+ d
3 |! _& y" {$ Z) y2 u } else {0 f/ Y/ I2 F- @1 G/ F
( G/ P5 }2 W9 P$ d$ L* ]
for {set i 0} {$i < 3} {incr i} {+ N% a& |; V9 y- u8 _ j. D
if {$mom_pos($i) < $mom_sys_min_travel($i)} {
- Q( g: V; u5 s L, x4 n# G: S, {* |2 X set mom_sys_min_travel($i) $mom_pos($i)6 \, c, k: H6 M6 c9 p7 u* ]
}
' g, f0 |8 l ~* F. D' [ if {$mom_pos($i) > $mom_sys_max_travel($i)} {+ ~: |6 _- V" ^
set mom_sys_max_travel($i) $mom_pos($i)
o% L1 X, Y3 K }
7 l6 A" K2 J/ i0 v }5 {! H9 [6 g9 J* _' l% i4 ]
}
3 \, W4 b3 r# c. I A9 Z9 Z M, ` `/ @9 e: |
if {[expr $mom_sys_max_travel(0) - $mom_sys_min_travel(0)] > $mom_kin_x_axis_limit} {* I d+ K8 }# J4 ^+ T
set mom_warning_info "Maximum X axis travel exceeded, did not alter output"; e5 n- i- T; l' D h" q1 F
MOM_catch_warning
2 |8 q# C9 x& [- H }
- M2 w4 q% Z e4 a- \
2 f% b; c" V# [7 T+ b" x if {[expr $mom_sys_max_travel(1) - $mom_sys_min_travel(1)] > $mom_kin_y_axis_limit} {+ v m7 o1 ~& C1 `" J: [/ x
set mom_warning_info "Maximum Y axis travel exceeded, did not alter output", l6 H; ~+ p* N3 U- b
MOM_catch_warning& i: `/ f0 t9 S3 ~
}
; f) T* F& k& T# W- X) `
% ?( J3 T4 v% L/ a- k2 t if {[expr $mom_sys_max_travel(2) - $mom_sys_min_travel(2)] > $mom_kin_z_axis_limit} {2 B' I6 Q1 J0 ]5 R
set mom_warning_info "Maximum Z axis travel exceeded, did not alter output"
% d) ?& ~) Y! v+ l% O MOM_catch_warning
2 ]5 [: `- E! ^- u$ J }
* h' o& b( n k" H% w6 a }
" T, j! H: m3 Q. V* q# z/ k+ G! M$ G. p/ s! P& b. Y P
6 D9 Y( K9 `, H. V6 q' A0 x9 b |
|