132 lines
4.0 KiB
Plaintext
132 lines
4.0 KiB
Plaintext
(author: Chris P)
|
|
(version: 0.5)
|
|
(date: 06/27/24)
|
|
|
|
(Probe top front edge angle for y,z 0,0 position and edge angle)
|
|
(Start probe position is over front edge of stock, set edge width,)
|
|
(step off width distance and within max z distance)
|
|
(ensure all settings have been set properly according to help diagrams)
|
|
|
|
o<probe_top_front_edge_angle> 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)
|
|
#<edge_width> = #3024 (=0.5000)
|
|
#<probe_mode> = #3030 (=0)
|
|
#<wco_rotation> = #3031 (=0)
|
|
#<calibration_offset> = #3032 (=0)
|
|
|
|
(Cancel G92 offsets)
|
|
G92.1
|
|
|
|
(Cancel Feedrate Override)
|
|
M50 P0
|
|
|
|
(set rotation offset to zero for new probe cycle)
|
|
G10 L2 P[#5220] R0
|
|
|
|
#<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_top_front_edge_angle> 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>]
|
|
|
|
#<x_start_position> = #5420
|
|
|
|
(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 Y Positioning Move, Step Off Width)
|
|
G91
|
|
F[#<probe_traverse_fr>]
|
|
G38.3 Y-[#<step_off_width>]
|
|
|
|
(Probe Y Positioning Move, to Probing Depth)
|
|
F[#<probe_fast_fr>]
|
|
G38.3 Z-[#<z_probe_stack>]
|
|
|
|
(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_start> = #<_value>
|
|
|
|
(value returned safety check, aborts if no value returned)
|
|
o110 if [#<probe_mode> EQ 1 AND #<_value_returned> NE 1]
|
|
(DEBUG, Missing Y Sub returned edge parameter, aborting)
|
|
M50 P1
|
|
o<probe_top_front_edge_angle> return
|
|
o110 endif
|
|
|
|
(edge width move to edge second probing point)
|
|
G91
|
|
F[#<probe_fast_fr>]
|
|
G38.3 X[#<edge_width>]
|
|
|
|
(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_end> = #<_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_top_front_edge_angle> return
|
|
o120 endif
|
|
|
|
#<edge_delta> = [#<y_plus_zero_edge_end> - #<y_plus_zero_edge_start>]
|
|
|
|
#<edge_angle> = [ATAN [#<edge_delta>] / [#<edge_width>]]
|
|
|
|
#1011 = #<edge_delta>
|
|
(DEBUG, EVAL[vcp.getWidget{"edge_delta"}.setValue{#1011}])
|
|
|
|
#1012 = #<edge_angle>
|
|
(DEBUG, EVAL[vcp.getWidget{"edge_angle"}.setValue{#1012}])
|
|
|
|
(Probe Completion Move to Z Clearance Plane, and Y Zero)
|
|
G91
|
|
F[#<probe_traverse_fr>]
|
|
G38.3 Z[#<z_probe_stack>]
|
|
G90
|
|
F[#<probe_traverse_fr>]
|
|
G38.3 X[#<x_start_position>] Y[#<y_plus_zero_edge_start>]
|
|
|
|
(probe mode rules for WCO, Rotation and probe position measuring only)
|
|
o130 if [#<probe_mode> EQ 0 AND #<wco_rotation> EQ 0]
|
|
(Record Zero in selected axes and WCO)
|
|
G10 L2 P#5220 X[#<x_start_position>] Y[#<y_plus_zero_edge_start> + #<workspace_y>]
|
|
o130 endif
|
|
|
|
(probe mode rules for WCO, Rotation and probe position measuring only)
|
|
o140 if [#<probe_mode> EQ 0 AND #<wco_rotation> EQ 1]
|
|
(Record Zero in selected axes and WCO)
|
|
G10 L2 P#5220 X[#<x_start_position>] Y[#<y_plus_zero_edge_start> + #<workspace_y>] R[#<edge_angle>]
|
|
o140 endif
|
|
|
|
(Reinstate Feedrate Override)
|
|
M50 P1
|
|
|
|
o<probe_top_front_edge_angle> endsub
|
|
|
|
M2 (end program)
|