|
#=============================================================
4 ]; [2 f5 N" p2 u proc PB_CMD_Zmax_Zmin_start_of_program { } {
/ x) @* ~; r: h: A. Q #=============================================================
2 B; I% r* K: J0 Y #4 H+ H6 u' s$ _2 |
# This custom command may be used to check for the maximum& @3 f) ~% A# k( i5 Y) K0 U7 R, ?) m" u9 }
# travel for each axis. A warning will be output for each( Y% {9 ~" |; f
# GOTO that exceeds the limits. It does not check for
( I- b6 z4 K6 z* |2 A. _ # parallel axis such as Z and W. It does not account for0 o% x$ ~. \' z
# any modifications done by the user to mom_pos before the# V1 A$ T) E1 J
# coordinates are output.
5 B7 y1 `5 p, b' ]0 i9 a3 T #8 a" H! V; _, \+ r
#% ], Z j0 u' u, s S1 H
# Import and call this command in PB_CMD_before_motion.
/ m1 g& f8 h: { #( x) `' G8 x9 V5 A) W- ~
#& O! |& c) A4 ]2 R; J K
global mom_sys_max_travel$ l& x1 m$ _/ s0 A3 D
global mom_sys_min_travel0 f) a; d" W# x( {1 g8 E! b
global mom_kin_x_axis_limit
' @5 ]% L5 ~, Y7 N2 r% ? global mom_kin_y_axis_limit
. d8 ~* P) V: ] global mom_kin_z_axis_limit! e2 Q. {- M, [$ X& y( q. l
global mom_pos# y& ~' \8 D# S( v' A
global mom_cycle_rapid_to_pos
$ O X$ c+ F; N global mom_cycle_feed_to_pos5 j8 p! L) O4 E' J7 ]
global mom_cycle_retract_to_pos
. S0 a# q% J5 @6 Z/ B. a$ L global mom_motion_type0 m2 i! ?$ n. t1 [" O+ K7 b
global mom_warning_info
1 e2 a* ^' T& A* e- e2 a
9 V5 L0 b( \/ M4 q- h2 Q" ~ if {![info exists mom_sys_max_travel]} {
. X+ b" R6 f- K: U- _( m1 ]/ o* \
for {set i 0} {$i < 3} {incr i} {- d5 e& Z. e7 M/ t& C" W4 w: {1 d* z
+ P; o) `9 N+ q. F, I* ^. B% j( |) Z }) V set mom_sys_max_travel($i) $mom_pos($i)$ k |( J4 V7 z1 {9 U8 q8 [/ i
set mom_sys_min_travel($i) $mom_pos($i)
' [7 D0 |! M$ G3 } }
q3 i. M7 B3 V% X' L' q. R( |8 I3 U2 L( U% {4 x) ^# c8 [" [( w# s+ x& \
} elseif { ![string compare "CYCLE" $mom_motion_type] } {
$ W/ Z# A, F5 U
: D& p9 a( F9 l. p, H( B for {set i 0} {$i < 3} {incr i} {( ~; m$ t$ S6 {9 Z; \6 u
1 O. M U7 I" [$ W# g
if {$mom_cycle_rapid_to_pos($i) < $mom_sys_min_travel($i)} {
1 m. K3 U* U' p. i5 A! ^; Y! K4 Q set mom_sys_min_travel($i) $mom_cycle_rapid_to_pos($i)
) j. r5 p+ O- L! c }% j$ L8 y1 c7 R) ]' _
if {$mom_cycle_rapid_to_pos($i) > $mom_sys_max_travel($i)} {' P" m. u7 A, G) I3 ?2 M4 L& I
set mom_sys_max_travel($i) $mom_cycle_rapid_to_pos($i)+ {. i; Q: a" V# H8 G0 m4 A# b
}4 G; }6 m" S. P6 {) i
if {$mom_cycle_feed_to_pos($i) < $mom_sys_min_travel($i)} {
; V3 G$ ]- w% G set mom_sys_min_travel($i) $mom_cycle_feed_to_pos($i); | c- i( P4 f% h
}
( i' _( S* ~" H) t2 ? if {$mom_cycle_feed_to_pos($i) > $mom_sys_max_travel($i)} {
7 H9 Q3 x) w1 u/ E set mom_sys_max_travel($i) $mom_cycle_feed_to_pos($i)
Q7 D9 R. [8 T# @ }
" T4 Q! l/ ^: o6 ? if {$mom_cycle_retract_to_pos($i) < $mom_sys_min_travel($i)} {
: v# v% c0 ^$ F1 F% Z+ [$ s set mom_sys_min_travel($i) $mom_cycle_retract_to_pos($i), j8 `! P5 ?2 U: l! J
}
, v3 H' N1 q8 [$ A. {6 g; T. r* E if {$mom_cycle_retract_to_pos($i) > $mom_sys_max_travel($i)} {/ N/ Z1 J% |7 Z; ^ D9 X+ w- H( w
set mom_sys_max_travel($i) $mom_cycle_retract_to_pos($i)
x' ^* O/ f$ M& E: K& u# Y f }
& |2 M+ n' Y" o' O; D }) C$ L& E+ f$ J! k
' @* @# N4 m1 k4 w2 N( M: R
} else {, y# O; k7 J- p& b
* K* n9 I+ l# {: {
for {set i 0} {$i < 3} {incr i} {5 G* F. _! t4 W9 D' P+ F0 K& F
if {$mom_pos($i) < $mom_sys_min_travel($i)} {
5 |# u5 ^9 s# T. j( ~9 R set mom_sys_min_travel($i) $mom_pos($i)7 A8 M J- Q- @2 Q7 ]
}# ]3 [; z9 R, @/ ?% g
if {$mom_pos($i) > $mom_sys_max_travel($i)} {
- r' b M, ]1 [4 C' r set mom_sys_max_travel($i) $mom_pos($i)
+ t" s. ~& t8 c7 M2 b( e }
9 ^& {$ ?" E' X5 Z( ^3 u. L }
$ ?0 |% C( j) Y2 z9 `+ k- S }
5 v. L, I# K$ \3 D: W# U6 \' d; g, C% e5 p' I
if {[expr $mom_sys_max_travel(0) - $mom_sys_min_travel(0)] > $mom_kin_x_axis_limit} {
. d' e. c3 B% }, w/ m3 Q set mom_warning_info "Maximum X axis travel exceeded, did not alter output"# ^; h, i! s7 @4 }. h) j: g( j
MOM_catch_warning
, ]* \) o# }: H6 E }
, s" e1 o7 h: T; D% o
* c. {2 ?+ C( U if {[expr $mom_sys_max_travel(1) - $mom_sys_min_travel(1)] > $mom_kin_y_axis_limit} {
# ]( Q/ l+ H# V f set mom_warning_info "Maximum Y axis travel exceeded, did not alter output"
" Q* Q" _' O% N5 T MOM_catch_warning
5 S. e: ]8 j0 V' A4 M6 ~! [ }
% B* @; U& l' }; |. F' R# Z4 L& V% t( Z. }; }3 \0 C
if {[expr $mom_sys_max_travel(2) - $mom_sys_min_travel(2)] > $mom_kin_z_axis_limit} {4 I$ @3 @ O! D# R3 p! k, S
set mom_warning_info "Maximum Z axis travel exceeded, did not alter output"0 Z, ^, |3 E! W' w1 U. a+ ?
MOM_catch_warning" n: s% e0 Y( s9 @6 b2 m# i. z
}
e9 P6 Q$ _2 q7 V) } q" p) Q }
+ j: S& F& O5 }9 R7 c% t0 F6 u/ i6 h
( c9 {* c- a0 L$ N8 L1 R9 ]
. w! d- q+ G" i" E$ }/ m |
|