Files
mayo-mill-probasic/subroutines/probe_back_right_inside_corner.ngc

123 lines
3.6 KiB
Plaintext

(author: Chris P)
(version: 0.2)
(date: 06/27/24)
(Probe back right inside corner for x,y,z 0,0,0 position)
(Start probe position is over back right inside corner of stock)
(inside the step off width square and within max z distance)
(ensure all settings have been set properly according to help diagrams)
o<probe_back_right_inside_corner> sub
(uses NGCGUI style arg spec)
(number after "=" in comment is default value)
#<probe_tool_number> = #3014 (=99)
#<probe_slow_fr> = #3015 (=0)
#<probe_fast_fr> = #3016 (=10.0)
#<probe_traverse_fr> = #3017 (=50)
#<max_xy_distance> = #3018 (=0.5000)
#<xy_clearance> = #3019 (=0.1000)
#<max_z_distance> = #3020 (=0.5000)
#<z_clearance> = #3021 (=0.1000)
#<extra_probe_depth> = #3022 (=0.0000)
#<step_off_width> = #3023 (=0.5000)
#<probe_mode> = #3030 (=0)
#<calibration_offset> = #3032 (=0)
(Cancel G92 offsets)
G92.1
(Cancel Feedrate Override)
M50 P0
#<workspace_x> = #[5201 + [20 * #5220]]
#<workspace_y> = #[5202 + [20 * #5220]]
(Probe Tool Safety Check)
o100 if [#5400 NE #<probe_tool_number>]
(DEBUG, Specified probe tool %d#<probe_tool_number> not in spindle, aborting)
M50 P1
o<probe_back_right_inside_corner> return
o100 endif
(Probe Diameter)
#<probe_diameter> = #5410
(Probing depth from the z probed clearance height, used for z moves)
#<z_probe_stack> = [#<z_clearance> + #<probe_diameter> + #<extra_probe_depth>]
(Call sub "probe_z_minus_sub" to Probe top of Workpiece)
o<probe_z_minus_sub> call [#3014][#3015][#3016][#3017][#3020][#3021][#3030]
(Probe X Positioning Move, Step Off Width X and Y)
G91
F[#<probe_traverse_fr>]
G38.3 X-[#<step_off_width>] Y-[#<step_off_width>]
(Probe X Positioning Move, to Probing Depth)
F[#<probe_fast_fr>]
G38.3 Z-[#<z_probe_stack>]
G90
(Current X Position including offsets in current program units)
#<x_start> = #5420
(Call sub "probe_x_plus" to Probe x+ side of Workpiece)
o<probe_x_plus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
#<x_plus_zero_edge> = #<_value>
(value returned safety check, aborts if no value returned)
o110 if [#<probe_mode> EQ 1 AND #<_value_returned> NE 1]
(DEBUG, Missing X Sub returned edge parameter, aborting)
M50 P1
o<probe_back_right_inside_corner> return
o110 endif
(move to X start Position)
G90
F[#<probe_traverse_fr>]
G38.3 X[#<x_start>]
(Current Y Position including offsets in current program units)
#<y_start> = #5421
(Call sub "probe_y_plus" to Probe y+ side of Workpiece)
o<probe_y_plus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
#<y_plus_zero_edge> = #<_value>
(value returned safety check, aborts if no value returned)
o120 if [#<probe_mode> EQ 1 AND #<_value_returned> NE 1]
(DEBUG, Missing Y Sub returned edge parameter, aborting)
M50 P1
o<probe_back_right_inside_corner> return
o120 endif
(move to Y start Position)
G90
F[#<probe_traverse_fr>]
G38.3 Y[#<y_start>]
(Probe Completion Move to Z Clearance Plane, and X Zero, Y Zero)
G91
F[#<probe_traverse_fr>]
G38.3 Z[#<z_probe_stack>]
G90
F[#<probe_traverse_fr>]
G38.3 X[#<x_plus_zero_edge>] Y[#<y_plus_zero_edge>]
(probe mode rules for WCO or probe position measuring only)
o130 if [#<probe_mode> EQ 0]
(Record Zero in selected axes and WCO)
G10 L2 P#5220 X[#<x_plus_zero_edge> + #<workspace_x>]
G10 L2 P#5220 Y[#<y_plus_zero_edge> + #<workspace_y>]
o130 endif
(Reinstate Feedrate Override)
M50 P1
o<probe_back_right_inside_corner> endsub
M2 (end program)