Compare commits
12 Commits
fa0b6415a3
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 3b8e11d127 | |||
| 715f8d082b | |||
| 6e67025fd5 | |||
| c8d0784db4 | |||
| b2c9917b97 | |||
| e4246909ec | |||
| f70b1c201f | |||
| e1105783eb | |||
| e7dacf19bb | |||
| 734f633676 | |||
| c4e3fa445d | |||
| 2a69c932d2 |
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
__pycache__
|
||||||
|
*.pickle
|
||||||
|
*.pyc
|
||||||
|
*.log
|
||||||
|
*.preferences
|
||||||
@@ -2,10 +2,3 @@
|
|||||||
# This file will not be overwritten when you run stepconf again
|
# This file will not be overwritten when you run stepconf again
|
||||||
|
|
||||||
net spindle-on <= spindle.0.on
|
net spindle-on <= spindle.0.on
|
||||||
|
|
||||||
loadrt debounce cfg=1
|
|
||||||
addf debounce.0 base-thread
|
|
||||||
setp debounce.0.delay 100
|
|
||||||
unlinkp motion.probe-input
|
|
||||||
net probe-in debounce.0.0.in
|
|
||||||
net probe-filt debounce.0.0.out => motion.probe-input
|
|
||||||
|
|||||||
83
custom_config.yml
Normal file
83
custom_config.yml
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
# example of a machine specific settings
|
||||||
|
windows:
|
||||||
|
mainwindow:
|
||||||
|
kwargs:
|
||||||
|
confirm_exit: false
|
||||||
|
|
||||||
|
data_plugins:
|
||||||
|
tooltable:
|
||||||
|
provider: qtpyvcp.plugins.tool_table:ToolTable
|
||||||
|
kwargs:
|
||||||
|
columns: TZDR
|
||||||
|
|
||||||
|
offsettable:
|
||||||
|
provider: qtpyvcp.plugins.offset_table:OffsetTable
|
||||||
|
kwargs:
|
||||||
|
columns: "XYZR"
|
||||||
|
|
||||||
|
settings:
|
||||||
|
|
||||||
|
# VTK backplot view settings
|
||||||
|
|
||||||
|
backplot.show-grid:
|
||||||
|
default_value: false
|
||||||
|
|
||||||
|
backplot.show-program-bounds:
|
||||||
|
default_value: false
|
||||||
|
|
||||||
|
backplot.show-program-labels:
|
||||||
|
default_value: false
|
||||||
|
|
||||||
|
backplot.show-program-ticks:
|
||||||
|
default_value: false
|
||||||
|
|
||||||
|
backplot.show-machine-bounds:
|
||||||
|
default_value: false
|
||||||
|
|
||||||
|
backplot.show-machine-labels:
|
||||||
|
default_value: false
|
||||||
|
|
||||||
|
backplot.show-machine-ticks:
|
||||||
|
default_value: false
|
||||||
|
|
||||||
|
backplot.perspective-view:
|
||||||
|
default_value: false
|
||||||
|
|
||||||
|
backplot.multitool-colors:
|
||||||
|
default_value: True
|
||||||
|
|
||||||
|
rack-atc-setup.user-param-1:
|
||||||
|
description: user param label name
|
||||||
|
default_value: user param 1
|
||||||
|
persistent: true
|
||||||
|
|
||||||
|
rack-atc-setup.user-param-2:
|
||||||
|
description: user param label name
|
||||||
|
default_value: user param 2
|
||||||
|
persistent: true
|
||||||
|
|
||||||
|
rack-atc-setup.user-param-3:
|
||||||
|
description: user param label name
|
||||||
|
default_value: user param 3
|
||||||
|
persistent: true
|
||||||
|
|
||||||
|
rack-atc-setup.user-param-4:
|
||||||
|
description: user param label name
|
||||||
|
default_value: user param 4
|
||||||
|
persistent: true
|
||||||
|
|
||||||
|
rack-atc-setup.user-param-5:
|
||||||
|
description: user param label name
|
||||||
|
default_value: user param 5
|
||||||
|
persistent: true
|
||||||
|
|
||||||
|
tool-setter-probe.user-param-name-1:
|
||||||
|
description: tool setter user param 1
|
||||||
|
default_value: user param 1
|
||||||
|
persistent: true
|
||||||
|
|
||||||
|
tool-setter-probe.user-param-name-2:
|
||||||
|
description: tool setter user param 2
|
||||||
|
default_value: user param 2
|
||||||
|
persistent: true
|
||||||
|
|
||||||
119
linuxcnc.var
Normal file
119
linuxcnc.var
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
5161 0.000000
|
||||||
|
5162 0.000000
|
||||||
|
5163 0.000000
|
||||||
|
5164 0.000000
|
||||||
|
5165 0.000000
|
||||||
|
5166 0.000000
|
||||||
|
5167 0.000000
|
||||||
|
5168 0.000000
|
||||||
|
5169 0.000000
|
||||||
|
5181 35.000000
|
||||||
|
5182 459.000000
|
||||||
|
5183 -0.000000
|
||||||
|
5184 0.000000
|
||||||
|
5185 0.000000
|
||||||
|
5186 0.000000
|
||||||
|
5187 0.000000
|
||||||
|
5188 0.000000
|
||||||
|
5189 0.000000
|
||||||
|
5210 0.000000
|
||||||
|
5211 0.000000
|
||||||
|
5212 0.000000
|
||||||
|
5213 0.000000
|
||||||
|
5214 0.000000
|
||||||
|
5215 0.000000
|
||||||
|
5216 0.000000
|
||||||
|
5217 0.000000
|
||||||
|
5218 0.000000
|
||||||
|
5219 0.000000
|
||||||
|
5220 1.000000
|
||||||
|
5221 300.000000
|
||||||
|
5222 150.000000
|
||||||
|
5223 -10.000000
|
||||||
|
5224 0.000000
|
||||||
|
5225 0.000000
|
||||||
|
5226 0.000000
|
||||||
|
5227 0.000000
|
||||||
|
5228 0.000000
|
||||||
|
5229 0.000000
|
||||||
|
5230 0.000000
|
||||||
|
5241 0.000000
|
||||||
|
5242 0.000000
|
||||||
|
5243 0.000000
|
||||||
|
5244 0.000000
|
||||||
|
5245 0.000000
|
||||||
|
5246 0.000000
|
||||||
|
5247 0.000000
|
||||||
|
5248 0.000000
|
||||||
|
5249 0.000000
|
||||||
|
5250 0.000000
|
||||||
|
5261 199.563000
|
||||||
|
5262 97.159000
|
||||||
|
5263 -30.157000
|
||||||
|
5264 0.000000
|
||||||
|
5265 0.000000
|
||||||
|
5266 0.000000
|
||||||
|
5267 0.000000
|
||||||
|
5268 0.000000
|
||||||
|
5269 0.000000
|
||||||
|
5270 0.000000
|
||||||
|
5281 0.000000
|
||||||
|
5282 0.000000
|
||||||
|
5283 0.000000
|
||||||
|
5284 0.000000
|
||||||
|
5285 0.000000
|
||||||
|
5286 0.000000
|
||||||
|
5287 0.000000
|
||||||
|
5288 0.000000
|
||||||
|
5289 0.000000
|
||||||
|
5290 0.000000
|
||||||
|
5301 0.000000
|
||||||
|
5302 0.000000
|
||||||
|
5303 0.000000
|
||||||
|
5304 0.000000
|
||||||
|
5305 0.000000
|
||||||
|
5306 0.000000
|
||||||
|
5307 0.000000
|
||||||
|
5308 0.000000
|
||||||
|
5309 0.000000
|
||||||
|
5310 0.000000
|
||||||
|
5321 0.000000
|
||||||
|
5322 0.000000
|
||||||
|
5323 0.000000
|
||||||
|
5324 0.000000
|
||||||
|
5325 0.000000
|
||||||
|
5326 0.000000
|
||||||
|
5327 0.000000
|
||||||
|
5328 0.000000
|
||||||
|
5329 0.000000
|
||||||
|
5330 0.000000
|
||||||
|
5341 0.000000
|
||||||
|
5342 0.000000
|
||||||
|
5343 0.000000
|
||||||
|
5344 0.000000
|
||||||
|
5345 0.000000
|
||||||
|
5346 0.000000
|
||||||
|
5347 0.000000
|
||||||
|
5348 0.000000
|
||||||
|
5349 0.000000
|
||||||
|
5350 0.000000
|
||||||
|
5361 0.000000
|
||||||
|
5362 0.000000
|
||||||
|
5363 0.000000
|
||||||
|
5364 0.000000
|
||||||
|
5365 0.000000
|
||||||
|
5366 0.000000
|
||||||
|
5367 0.000000
|
||||||
|
5368 0.000000
|
||||||
|
5369 0.000000
|
||||||
|
5370 0.000000
|
||||||
|
5381 0.000000
|
||||||
|
5382 0.000000
|
||||||
|
5383 0.000000
|
||||||
|
5384 0.000000
|
||||||
|
5385 0.000000
|
||||||
|
5386 0.000000
|
||||||
|
5387 0.000000
|
||||||
|
5388 0.000000
|
||||||
|
5389 0.000000
|
||||||
|
5390 0.000000
|
||||||
119
linuxcnc.var.bak
Normal file
119
linuxcnc.var.bak
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
5161 0.000000
|
||||||
|
5162 0.000000
|
||||||
|
5163 0.000000
|
||||||
|
5164 0.000000
|
||||||
|
5165 0.000000
|
||||||
|
5166 0.000000
|
||||||
|
5167 0.000000
|
||||||
|
5168 0.000000
|
||||||
|
5169 0.000000
|
||||||
|
5181 35.000000
|
||||||
|
5182 459.000000
|
||||||
|
5183 -0.000000
|
||||||
|
5184 0.000000
|
||||||
|
5185 0.000000
|
||||||
|
5186 0.000000
|
||||||
|
5187 0.000000
|
||||||
|
5188 0.000000
|
||||||
|
5189 0.000000
|
||||||
|
5210 0.000000
|
||||||
|
5211 0.000000
|
||||||
|
5212 0.000000
|
||||||
|
5213 0.000000
|
||||||
|
5214 0.000000
|
||||||
|
5215 0.000000
|
||||||
|
5216 0.000000
|
||||||
|
5217 0.000000
|
||||||
|
5218 0.000000
|
||||||
|
5219 0.000000
|
||||||
|
5220 1.000000
|
||||||
|
5221 300.000000
|
||||||
|
5222 150.000000
|
||||||
|
5223 -10.000000
|
||||||
|
5224 0.000000
|
||||||
|
5225 0.000000
|
||||||
|
5226 0.000000
|
||||||
|
5227 0.000000
|
||||||
|
5228 0.000000
|
||||||
|
5229 0.000000
|
||||||
|
5230 0.000000
|
||||||
|
5241 0.000000
|
||||||
|
5242 0.000000
|
||||||
|
5243 0.000000
|
||||||
|
5244 0.000000
|
||||||
|
5245 0.000000
|
||||||
|
5246 0.000000
|
||||||
|
5247 0.000000
|
||||||
|
5248 0.000000
|
||||||
|
5249 0.000000
|
||||||
|
5250 0.000000
|
||||||
|
5261 199.563000
|
||||||
|
5262 97.159000
|
||||||
|
5263 -30.157000
|
||||||
|
5264 0.000000
|
||||||
|
5265 0.000000
|
||||||
|
5266 0.000000
|
||||||
|
5267 0.000000
|
||||||
|
5268 0.000000
|
||||||
|
5269 0.000000
|
||||||
|
5270 0.000000
|
||||||
|
5281 0.000000
|
||||||
|
5282 0.000000
|
||||||
|
5283 0.000000
|
||||||
|
5284 0.000000
|
||||||
|
5285 0.000000
|
||||||
|
5286 0.000000
|
||||||
|
5287 0.000000
|
||||||
|
5288 0.000000
|
||||||
|
5289 0.000000
|
||||||
|
5290 0.000000
|
||||||
|
5301 0.000000
|
||||||
|
5302 0.000000
|
||||||
|
5303 0.000000
|
||||||
|
5304 0.000000
|
||||||
|
5305 0.000000
|
||||||
|
5306 0.000000
|
||||||
|
5307 0.000000
|
||||||
|
5308 0.000000
|
||||||
|
5309 0.000000
|
||||||
|
5310 0.000000
|
||||||
|
5321 0.000000
|
||||||
|
5322 0.000000
|
||||||
|
5323 0.000000
|
||||||
|
5324 0.000000
|
||||||
|
5325 0.000000
|
||||||
|
5326 0.000000
|
||||||
|
5327 0.000000
|
||||||
|
5328 0.000000
|
||||||
|
5329 0.000000
|
||||||
|
5330 0.000000
|
||||||
|
5341 0.000000
|
||||||
|
5342 0.000000
|
||||||
|
5343 0.000000
|
||||||
|
5344 0.000000
|
||||||
|
5345 0.000000
|
||||||
|
5346 0.000000
|
||||||
|
5347 0.000000
|
||||||
|
5348 0.000000
|
||||||
|
5349 0.000000
|
||||||
|
5350 0.000000
|
||||||
|
5361 0.000000
|
||||||
|
5362 0.000000
|
||||||
|
5363 0.000000
|
||||||
|
5364 0.000000
|
||||||
|
5365 0.000000
|
||||||
|
5366 0.000000
|
||||||
|
5367 0.000000
|
||||||
|
5368 0.000000
|
||||||
|
5369 0.000000
|
||||||
|
5370 0.000000
|
||||||
|
5381 0.000000
|
||||||
|
5382 0.000000
|
||||||
|
5383 0.000000
|
||||||
|
5384 0.000000
|
||||||
|
5385 0.000000
|
||||||
|
5386 0.000000
|
||||||
|
5387 0.000000
|
||||||
|
5388 0.000000
|
||||||
|
5389 0.000000
|
||||||
|
5390 0.000000
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
# If you make changes to this file, they will be
|
# If you make changes to this file, they will be
|
||||||
# overwritten when you run stepconf again
|
# overwritten when you run stepconf again
|
||||||
loadrt [KINS]KINEMATICS
|
loadrt [KINS]KINEMATICS
|
||||||
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
|
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS num_dio=6 num_aio=3
|
||||||
loadrt hal_parport cfg="0 out"
|
loadrt hal_parport cfg="0 out"
|
||||||
setp parport.0.reset-time 5000
|
setp parport.0.reset-time 5000
|
||||||
loadrt stepgen step_type=0,0,0
|
loadrt stepgen step_type=0,0,0
|
||||||
@@ -78,7 +78,7 @@ net home-z => joint.2.home-sw-in
|
|||||||
net estop-out <= iocontrol.0.user-enable-out
|
net estop-out <= iocontrol.0.user-enable-out
|
||||||
net estop-ext => iocontrol.0.emc-enable-in
|
net estop-ext => iocontrol.0.emc-enable-in
|
||||||
|
|
||||||
net tool-change <= iocontrol.0.tool-change
|
net tool-change-request <= iocontrol.0.tool-change
|
||||||
net tool-changed => iocontrol.0.tool-changed
|
net tool-change-confirmed => iocontrol.0.tool-changed
|
||||||
net tool-number <= iocontrol.0.tool-prep-number
|
net tool-number <= iocontrol.0.tool-prep-number
|
||||||
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
|
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
|
||||||
@@ -3,33 +3,48 @@
|
|||||||
# overwritten when you run stepconf again
|
# overwritten when you run stepconf again
|
||||||
|
|
||||||
[EMC]
|
[EMC]
|
||||||
MACHINE = mayo-mill
|
MACHINE = mayo-mill-probebasic
|
||||||
DEBUG = 0
|
DEBUG = 0
|
||||||
VERSION = 1.1
|
VERSION = 1.1
|
||||||
|
|
||||||
[DISPLAY]
|
[DISPLAY]
|
||||||
DISPLAY = qtvcp qtdragon
|
DISPLAY = probe_basic
|
||||||
PREFERENCE_FILE_PATH = WORKINGFOLDER/qtdragon.pref
|
OPEN_FILE = ~/linuxcnc/nc_files/pb_examples/blank.ngc
|
||||||
EDITOR = gedit
|
CONFIG_FILE = custom_config.yml
|
||||||
|
LOG_FILE = mayo-mill-probebasic.log
|
||||||
|
LOG_LEVEL = DEBUG
|
||||||
|
#PROGRAM_PREFIX = /home/cnc/linuxcnc/nc_files
|
||||||
|
INTRO_GRAPHIC = pbsplash.png
|
||||||
|
INTRO_TIME = 5
|
||||||
|
|
||||||
|
#ARCDIVISION = 64
|
||||||
|
#GRIDS = 10mm 20mm 50mm 100mm
|
||||||
|
|
||||||
|
GEOMETRY = xyz
|
||||||
|
INCREMENTS = JOG 10mm 1mm .1mm .01mm
|
||||||
POSITION_OFFSET = RELATIVE
|
POSITION_OFFSET = RELATIVE
|
||||||
POSITION_FEEDBACK = ACTUAL
|
POSITION_FEEDBACK = ACTUAL
|
||||||
ARCDIVISION = 64
|
|
||||||
GRIDS = 10mm 20mm 50mm 100mm 1in 2in 5in 10in
|
|
||||||
MAX_FEED_OVERRIDE = 1.2
|
MAX_FEED_OVERRIDE = 1.2
|
||||||
MIN_SPINDLE_OVERRIDE = 0.5
|
|
||||||
MAX_SPINDLE_OVERRIDE = 1.2
|
MAX_SPINDLE_OVERRIDE = 1.2
|
||||||
DEFAULT_LINEAR_VELOCITY = 5.00
|
MIN_SPINDLE_OVERRIDE = 0.5
|
||||||
MIN_LINEAR_VELOCITY = 0
|
MIN_LINEAR_VELOCITY = 0
|
||||||
MAX_LINEAR_VELOCITY = 50.00
|
MAX_LINEAR_VELOCITY = 50.00
|
||||||
CYCLE_TIME = 0.100
|
DEFAULT_LINEAR_VELOCITY = 5.00
|
||||||
INTRO_GRAPHIC = linuxcnc.gif
|
|
||||||
INTRO_TIME = 5
|
|
||||||
PROGRAM_PREFIX = /home/cnc/linuxcnc/nc_files
|
|
||||||
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm
|
|
||||||
|
|
||||||
[KINS]
|
USER_TABS_PATH = user_tabs/
|
||||||
JOINTS = 3
|
USER_BUTTONS_PATH = user_buttons/
|
||||||
KINEMATICS = trivkins coordinates=XYZ
|
USER_DROS_PATH = user_dro_display/
|
||||||
|
DRO_DISPLAY = xyz
|
||||||
|
# ATC tab display options, 0 = no atc tab displayed, 1 = Carousel atc display, 2 = rack atc display
|
||||||
|
ATC_TAB_DISPLAY = 0
|
||||||
|
#USER_ATC_BUTTONS_PATH = user_atc_buttons/
|
||||||
|
CYCLE_TIME = 0.100
|
||||||
|
|
||||||
|
KEYBOARD_JOG = true
|
||||||
|
KEYBOARD_JOG_SAFETY_OFF = true
|
||||||
|
|
||||||
|
|
||||||
|
TOOL_TABLE_COLUMNS = TZDR
|
||||||
|
|
||||||
[FILTER]
|
[FILTER]
|
||||||
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
|
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
|
||||||
@@ -40,40 +55,31 @@ gif = image-to-gcode
|
|||||||
jpg = image-to-gcode
|
jpg = image-to-gcode
|
||||||
py = python
|
py = python
|
||||||
|
|
||||||
|
[PYTHON]
|
||||||
|
TOPLEVEL = ./python/toplevel.py
|
||||||
|
PATH_APPEND = ./python/
|
||||||
|
|
||||||
[TASK]
|
[TASK]
|
||||||
TASK = milltask
|
TASK = milltask
|
||||||
CYCLE_TIME = 0.010
|
CYCLE_TIME = 0.010
|
||||||
|
|
||||||
[RS274NGC]
|
[RS274NGC]
|
||||||
PARAMETER_FILE = linuxcnc.var
|
|
||||||
|
|
||||||
# start up G/M codes when first loaded
|
|
||||||
RS274NGC_STARTUP_CODE = G17 G21 G40 G43H0 G54 G64P0.0127 G80 G90 G94 G97 M5 M9
|
RS274NGC_STARTUP_CODE = G17 G21 G40 G43H0 G54 G64P0.0127 G80 G90 G94 G97 M5 M9
|
||||||
|
#RS274NGC_STARTUP_CODE = F10 S300 G20 G17 G40 G49 G54 G64 P.001 G80 G90 G91.1 G92.1 G94 G97 G98
|
||||||
# subroutine/remap path list
|
PARAMETER_FILE = linuxcnc.var
|
||||||
SUBROUTINE_PATH =\
|
OWORD_NARGS = 1
|
||||||
~/linuxcnc/nc_files/examples/ngcgui_lib:\
|
NO_DOWNCASE_OWORD = 1
|
||||||
~/linuxcnc/nc_files/examples/ngcgui_lib/utilitysubs:\
|
SUBROUTINE_PATH = subroutines
|
||||||
~/linuxcnc/nc_files/examples/remap-subroutines:\
|
|
||||||
~/linuxcnc/nc_files/examples/remap_lib
|
|
||||||
|
|
||||||
# is the sub, with is called when a error during tool change happens.
|
|
||||||
ON_ABORT_COMMAND=O <on_abort> call
|
|
||||||
|
|
||||||
# The remap code for QtVCP's versaprobe's automatic tool probe of Z
|
# The remap code for QtVCP's versaprobe's automatic tool probe of Z
|
||||||
REMAP=M6 modalgroup=6 prolog=change_prolog ngc=qt_auto_probe_tool epilog=change_epilog
|
REMAP=M6 modalgroup=6 prolog=change_prolog ngc=aaa epilog=change_epilog
|
||||||
|
|
||||||
# required for python remaps
|
[HAL]
|
||||||
[PYTHON]
|
HALUI = halui
|
||||||
# The path to start a search for user modules. ie python's sys.path.insert(0,PATH)
|
HALFILE = mayo-mill-probebasic.hal
|
||||||
#PATH_PREPEND = ~/linuxcnc/nc_files/examples/remap_lib/python-stdglue/python
|
HALFILE = custom.hal
|
||||||
|
POSTGUI_HALFILE = probe_basic_postgui.hal
|
||||||
# The path start point for all remap searches ie. python's sys.path.append()
|
TWOPASS = one
|
||||||
PATH_APPEND = ~/linuxcnc/nc_files/examples/remap_lib/python-stdglue/python
|
|
||||||
# path to the tremap's 'oplevel file
|
|
||||||
TOPLEVEL = ~/linuxcnc/nc_files/examples/remap_lib/python-stdglue/python/toplevel.py
|
|
||||||
# set remap debug level
|
|
||||||
#LOG_LEVEL = 1000
|
|
||||||
|
|
||||||
[EMCMOT]
|
[EMCMOT]
|
||||||
EMCMOT = motmod
|
EMCMOT = motmod
|
||||||
@@ -81,43 +87,28 @@ COMM_TIMEOUT = 1.0
|
|||||||
BASE_PERIOD = 100000
|
BASE_PERIOD = 100000
|
||||||
SERVO_PERIOD = 1000000
|
SERVO_PERIOD = 1000000
|
||||||
|
|
||||||
[HAL]
|
|
||||||
HALFILE = mayo-mill.hal
|
|
||||||
HALFILE = custom.hal
|
|
||||||
POSTGUI_HALFILE = postgui_call_list.hal
|
|
||||||
|
|
||||||
[TRAJ]
|
|
||||||
COORDINATES = X Y Z
|
|
||||||
LINEAR_UNITS = mm
|
|
||||||
ANGULAR_UNITS = degree
|
|
||||||
DEFAULT_LINEAR_VELOCITY = 5.00
|
|
||||||
MAX_LINEAR_VELOCITY = 50.00
|
|
||||||
|
|
||||||
[EMCIO]
|
[EMCIO]
|
||||||
EMCIO = io
|
EMCIO = io
|
||||||
CYCLE_TIME = 0.100
|
CYCLE_TIME = 0.100
|
||||||
TOOL_TABLE = tool.tbl
|
TOOL_TABLE = tool.tbl
|
||||||
[PROBE]
|
|
||||||
# pick basic probe or versa probe or remove for none
|
|
||||||
USE_PROBE = versaprobe
|
|
||||||
#USE_PROBE = basicprobe
|
|
||||||
|
|
||||||
[VERSA_TOOLSETTER]
|
|
||||||
X = 32.5
|
|
||||||
Y = 458.5
|
|
||||||
Z = -30
|
|
||||||
Z_MAX_CLEAR = -2
|
|
||||||
MAXPROBE = 40
|
|
||||||
|
|
||||||
[CHANGE_POSITION]
|
[CHANGE_POSITION]
|
||||||
X = 10
|
X = 10
|
||||||
Y = 10
|
Y = 10
|
||||||
Z = -2
|
Z = -2
|
||||||
|
|
||||||
[MDI_COMMAND_LIST]
|
[KINS]
|
||||||
# for macro buttons on main oage up to 10 possible
|
JOINTS = 3
|
||||||
MDI_COMMAND = G0 Z25;X0 Y0;Z0, Goto\nUser\nZero
|
KINEMATICS = trivkins coordinates=XYZ
|
||||||
MDI_COMMAND = G53 G0 Z0;G53 G0 X0 Y0,Goto\nMachn\nZero
|
|
||||||
|
[TRAJ]
|
||||||
|
AXES = 3
|
||||||
|
COORDINATES = X Y Z
|
||||||
|
LINEAR_UNITS = mm
|
||||||
|
ANGULAR_UNITS = degree
|
||||||
|
DEFAULT_LINEAR_VELOCITY = 5.00
|
||||||
|
MAX_LINEAR_VELOCITY = 50.00
|
||||||
|
|
||||||
#*** AXIS_X *******************************
|
#*** AXIS_X *******************************
|
||||||
[AXIS_X]
|
[AXIS_X]
|
||||||
MAX_VELOCITY = 50.0
|
MAX_VELOCITY = 50.0
|
||||||
|
|||||||
245
mayo-mill.stepconf
Normal file
245
mayo-mill.stepconf
Normal file
@@ -0,0 +1,245 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<stepconf>
|
||||||
|
<property type="int" name="ahomepos" value="0"/>
|
||||||
|
<property type="int" name="ahomesw" value="0"/>
|
||||||
|
<property type="float" name="ahomevel" value="0.05"/>
|
||||||
|
<property type="int" name="alatchdir" value="0"/>
|
||||||
|
<property type="int" name="aleadscrew" value="360"/>
|
||||||
|
<property type="int" name="amaxacc" value="1200"/>
|
||||||
|
<property type="int" name="amaxlim" value="9999"/>
|
||||||
|
<property type="int" name="amaxvel" value="360"/>
|
||||||
|
<property type="int" name="amicrostep" value="2"/>
|
||||||
|
<property type="int" name="aminlim" value="-9999"/>
|
||||||
|
<property type="int" name="apulleyden" value="1"/>
|
||||||
|
<property type="int" name="apulleynum" value="1"/>
|
||||||
|
<property type="int" name="ascale" value="0"/>
|
||||||
|
<property type="int" name="asteprev" value="200"/>
|
||||||
|
<property type="int" name="axes" value="0"/>
|
||||||
|
<property type="eval" name="axislist" value="[]"/>
|
||||||
|
<property type="bool" name="classicladder" value="False"/>
|
||||||
|
<property type="bool" name="createshortcut" value="True"/>
|
||||||
|
<property type="bool" name="createsymlink" value="True"/>
|
||||||
|
<property type="int" name="customhal" value="1"/>
|
||||||
|
<property type="float" name="digitsin" value="15.0"/>
|
||||||
|
<property type="float" name="digitsout" value="15.0"/>
|
||||||
|
<property type="float" name="dirhold" value="20000.0"/>
|
||||||
|
<property type="float" name="dirsetup" value="20000.0"/>
|
||||||
|
<property type="string" name="drivertype" value="other"/>
|
||||||
|
<property type="float" name="floatsin" value="10.0"/>
|
||||||
|
<property type="float" name="floatsout" value="10.0"/>
|
||||||
|
<property type="bool" name="halui" value="False"/>
|
||||||
|
<property type="eval" name="halui_list" value="[]"/>
|
||||||
|
<property type="string" name="ioaddr" value="0"/>
|
||||||
|
<property type="string" name="ioaddr2" value="0"/>
|
||||||
|
<property type="string" name="ioaddr3" value="2"/>
|
||||||
|
<property type="bool" name="ladderconnect" value="True"/>
|
||||||
|
<property type="int" name="ladderhaltype" value="0"/>
|
||||||
|
<property type="string" name="laddername" value="custom.clp"/>
|
||||||
|
<property type="float" name="latency" value="50000.0"/>
|
||||||
|
<property type="eval" name="lparport" value="['0']"/>
|
||||||
|
<property type="string" name="machinename" value="mayo-mill"/>
|
||||||
|
<property type="bool" name="manualtoolchange" value="True"/>
|
||||||
|
<property type="eval" name="md5sums" value="[]"/>
|
||||||
|
<property type="bool" name="modbus" value="False"/>
|
||||||
|
<property type="int" name="number_pports" value="1"/>
|
||||||
|
<property type="int" name="ohmiccontact" value="0"/>
|
||||||
|
<property type="int" name="period" value="25000"/>
|
||||||
|
<property type="string" name="pin1" value="spindle-on"/>
|
||||||
|
<property type="string" name="pin10" value="home-x"/>
|
||||||
|
<property type="bool" name="pin10inv" value="False"/>
|
||||||
|
<property type="string" name="pin11" value="home-y"/>
|
||||||
|
<property type="bool" name="pin11inv" value="False"/>
|
||||||
|
<property type="string" name="pin12" value="home-z"/>
|
||||||
|
<property type="bool" name="pin12inv" value="False"/>
|
||||||
|
<property type="string" name="pin13" value="estop-ext"/>
|
||||||
|
<property type="bool" name="pin13inv" value="True"/>
|
||||||
|
<property type="string" name="pin14" value="unused-output"/>
|
||||||
|
<property type="bool" name="pin14inv" value="False"/>
|
||||||
|
<property type="string" name="pin15" value="probe-in"/>
|
||||||
|
<property type="bool" name="pin15inv" value="False"/>
|
||||||
|
<property type="string" name="pin16" value="unused-output"/>
|
||||||
|
<property type="bool" name="pin16inv" value="False"/>
|
||||||
|
<property type="string" name="pin17" value="unused-output"/>
|
||||||
|
<property type="bool" name="pin17inv" value="False"/>
|
||||||
|
<property type="bool" name="pin1inv" value="True"/>
|
||||||
|
<property type="string" name="pin2" value="xdir"/>
|
||||||
|
<property type="bool" name="pin2inv" value="False"/>
|
||||||
|
<property type="string" name="pin3" value="xstep"/>
|
||||||
|
<property type="bool" name="pin3inv" value="False"/>
|
||||||
|
<property type="string" name="pin4" value="ydir"/>
|
||||||
|
<property type="bool" name="pin4inv" value="False"/>
|
||||||
|
<property type="string" name="pin5" value="ystep"/>
|
||||||
|
<property type="bool" name="pin5inv" value="False"/>
|
||||||
|
<property type="string" name="pin6" value="zdir"/>
|
||||||
|
<property type="bool" name="pin6inv" value="False"/>
|
||||||
|
<property type="string" name="pin7" value="zstep"/>
|
||||||
|
<property type="bool" name="pin7inv" value="False"/>
|
||||||
|
<property type="string" name="pin8" value="unused-output"/>
|
||||||
|
<property type="bool" name="pin8inv" value="False"/>
|
||||||
|
<property type="string" name="pin9" value="unused-output"/>
|
||||||
|
<property type="bool" name="pin9inv" value="False"/>
|
||||||
|
<property type="int" name="pp2_direction" value="0"/>
|
||||||
|
<property type="string" name="pp2_pin1" value="unused-output"/>
|
||||||
|
<property type="string" name="pp2_pin10_in" value="unused-input"/>
|
||||||
|
<property type="int" name="pp2_pin10_in_inv" value="0"/>
|
||||||
|
<property type="string" name="pp2_pin11_in" value="unused-input"/>
|
||||||
|
<property type="int" name="pp2_pin11_in_inv" value="0"/>
|
||||||
|
<property type="string" name="pp2_pin12_in" value="unused-input"/>
|
||||||
|
<property type="int" name="pp2_pin12_in_inv" value="0"/>
|
||||||
|
<property type="string" name="pp2_pin13_in" value="unused-input"/>
|
||||||
|
<property type="int" name="pp2_pin13_in_inv" value="0"/>
|
||||||
|
<property type="string" name="pp2_pin14" value="unused-output"/>
|
||||||
|
<property type="int" name="pp2_pin14inv" value="0"/>
|
||||||
|
<property type="string" name="pp2_pin15_in" value="unused-input"/>
|
||||||
|
<property type="int" name="pp2_pin15_in_inv" value="0"/>
|
||||||
|
<property type="string" name="pp2_pin16" value="unused-output"/>
|
||||||
|
<property type="int" name="pp2_pin16inv" value="0"/>
|
||||||
|
<property type="string" name="pp2_pin17" value="unused-output"/>
|
||||||
|
<property type="int" name="pp2_pin17inv" value="0"/>
|
||||||
|
<property type="int" name="pp2_pin1inv" value="0"/>
|
||||||
|
<property type="string" name="pp2_pin2" value="unused-output"/>
|
||||||
|
<property type="string" name="pp2_pin2_in" value="unused-input"/>
|
||||||
|
<property type="int" name="pp2_pin2_in_inv" value="0"/>
|
||||||
|
<property type="int" name="pp2_pin2inv" value="0"/>
|
||||||
|
<property type="string" name="pp2_pin3" value="unused-output"/>
|
||||||
|
<property type="string" name="pp2_pin3_in" value="unused-input"/>
|
||||||
|
<property type="int" name="pp2_pin3_in_inv" value="0"/>
|
||||||
|
<property type="int" name="pp2_pin3inv" value="0"/>
|
||||||
|
<property type="string" name="pp2_pin4" value="unused-output"/>
|
||||||
|
<property type="string" name="pp2_pin4_in" value="unused-input"/>
|
||||||
|
<property type="int" name="pp2_pin4_in_inv" value="0"/>
|
||||||
|
<property type="int" name="pp2_pin4inv" value="0"/>
|
||||||
|
<property type="string" name="pp2_pin5" value="unused-output"/>
|
||||||
|
<property type="string" name="pp2_pin5_in" value="unused-input"/>
|
||||||
|
<property type="int" name="pp2_pin5_in_inv" value="0"/>
|
||||||
|
<property type="int" name="pp2_pin5inv" value="0"/>
|
||||||
|
<property type="string" name="pp2_pin6" value="unused-output"/>
|
||||||
|
<property type="string" name="pp2_pin6_in" value="unused-input"/>
|
||||||
|
<property type="int" name="pp2_pin6_in_inv" value="0"/>
|
||||||
|
<property type="int" name="pp2_pin6inv" value="0"/>
|
||||||
|
<property type="string" name="pp2_pin7" value="unused-output"/>
|
||||||
|
<property type="string" name="pp2_pin7_in" value="unused-input"/>
|
||||||
|
<property type="int" name="pp2_pin7_in_inv" value="0"/>
|
||||||
|
<property type="int" name="pp2_pin7inv" value="0"/>
|
||||||
|
<property type="string" name="pp2_pin8" value="unused-output"/>
|
||||||
|
<property type="string" name="pp2_pin8_in" value="unused-input"/>
|
||||||
|
<property type="int" name="pp2_pin8_in_inv" value="0"/>
|
||||||
|
<property type="int" name="pp2_pin8inv" value="0"/>
|
||||||
|
<property type="string" name="pp2_pin9" value="unused-output"/>
|
||||||
|
<property type="string" name="pp2_pin9_in" value="unused-input"/>
|
||||||
|
<property type="int" name="pp2_pin9_in_inv" value="0"/>
|
||||||
|
<property type="int" name="pp2_pin9inv" value="0"/>
|
||||||
|
<property type="int" name="pp3_direction" value="0"/>
|
||||||
|
<property type="bool" name="pyvcp" value="False"/>
|
||||||
|
<property type="bool" name="pyvcpconnect" value="True"/>
|
||||||
|
<property type="int" name="pyvcphaltype" value="0"/>
|
||||||
|
<property type="string" name="pyvcpname" value="custom.xml"/>
|
||||||
|
<property type="eval" name="qtplasmac_bcodes" value="['ohmic-test', 'probe-test 10', 'single-cut', 'cut-type', 'torch-pulse 0.5', 'framing', 'user-manual', '', '', '', '', '', '', '', '', '', '', '', '', '']"/>
|
||||||
|
<property type="eval" name="qtplasmac_bnames" value="['OHMIC\\TEST', 'PROBE\\TEST', 'SINGLE\\CUT', 'NORMAL\\CUT', 'TORCH\\PULSE', 'FRAMING', 'USER\\MANUAL', '', '', '', '', '', '', '', '', '', '', '', '', '']"/>
|
||||||
|
<property type="int" name="qtplasmacdro" value="0"/>
|
||||||
|
<property type="int" name="qtplasmacerror" value="0"/>
|
||||||
|
<property type="int" name="qtplasmacestop" value="0"/>
|
||||||
|
<property type="int" name="qtplasmacmode" value="0"/>
|
||||||
|
<property type="int" name="qtplasmacpause" value="0"/>
|
||||||
|
<property type="string" name="qtplasmacpmx" value=""/>
|
||||||
|
<property type="int" name="qtplasmacscreen" value="0"/>
|
||||||
|
<property type="int" name="qtplasmacstart" value="0"/>
|
||||||
|
<property type="int" name="qtplasmacstop" value="0"/>
|
||||||
|
<property type="float" name="s32in" value="10.0"/>
|
||||||
|
<property type="float" name="s32out" value="10.0"/>
|
||||||
|
<property type="bool" name="select_axis" value="False"/>
|
||||||
|
<property type="bool" name="select_gmoccapy" value="False"/>
|
||||||
|
<property type="bool" name="select_qtdragon" value="True"/>
|
||||||
|
<property type="bool" name="select_qtplasmac" value="False"/>
|
||||||
|
<property type="bool" name="sim_hardware" value="False"/>
|
||||||
|
<property type="int" name="spindlecarrier" value="100"/>
|
||||||
|
<property type="int" name="spindlecpr" value="100"/>
|
||||||
|
<property type="float" name="spindlefiltergain" value="0.01"/>
|
||||||
|
<property type="float" name="spindlenearscale" value="1.5"/>
|
||||||
|
<property type="float" name="spindlepwm1" value="0.2"/>
|
||||||
|
<property type="float" name="spindlepwm2" value="0.8"/>
|
||||||
|
<property type="int" name="spindlespeed1" value="100"/>
|
||||||
|
<property type="int" name="spindlespeed2" value="800"/>
|
||||||
|
<property type="float" name="stepspace" value="5000.0"/>
|
||||||
|
<property type="float" name="steptime" value="5000.0"/>
|
||||||
|
<property type="eval" name="tandemjoints" value="[]"/>
|
||||||
|
<property type="int" name="tempexists" value="0"/>
|
||||||
|
<property type="int" name="thcadenc" value="0"/>
|
||||||
|
<property type="int" name="uhomepos" value="0"/>
|
||||||
|
<property type="int" name="uhomesw" value="0"/>
|
||||||
|
<property type="float" name="uhomevel" value="1.5"/>
|
||||||
|
<property type="int" name="ulatchdir" value="0"/>
|
||||||
|
<property type="int" name="uleadscrew" value="5"/>
|
||||||
|
<property type="int" name="umaxacc" value="750"/>
|
||||||
|
<property type="int" name="umaxlim" value="200"/>
|
||||||
|
<property type="int" name="umaxvel" value="25"/>
|
||||||
|
<property type="int" name="umicrostep" value="2"/>
|
||||||
|
<property type="int" name="uminlim" value="0"/>
|
||||||
|
<property type="int" name="units" value="1"/>
|
||||||
|
<property type="int" name="upulleyden" value="1"/>
|
||||||
|
<property type="int" name="upulleynum" value="1"/>
|
||||||
|
<property type="int" name="uscale" value="0"/>
|
||||||
|
<property type="bool" name="usespindleatspeed" value="False"/>
|
||||||
|
<property type="int" name="usteprev" value="200"/>
|
||||||
|
<property type="int" name="vhomepos" value="0"/>
|
||||||
|
<property type="int" name="vhomesw" value="0"/>
|
||||||
|
<property type="float" name="vhomevel" value="1.5"/>
|
||||||
|
<property type="int" name="vlatchdir" value="0"/>
|
||||||
|
<property type="int" name="vleadscrew" value="5"/>
|
||||||
|
<property type="int" name="vmaxacc" value="750"/>
|
||||||
|
<property type="int" name="vmaxlim" value="200"/>
|
||||||
|
<property type="int" name="vmaxvel" value="25"/>
|
||||||
|
<property type="int" name="vmicrostep" value="2"/>
|
||||||
|
<property type="int" name="vminlim" value="0"/>
|
||||||
|
<property type="string" name="voltsfjumper" value="64"/>
|
||||||
|
<property type="float" name="voltsfullf" value="999.0"/>
|
||||||
|
<property type="string" name="voltsmodel" value="10"/>
|
||||||
|
<property type="int" name="voltsrdiv" value="20"/>
|
||||||
|
<property type="float" name="voltszerof" value="100.0"/>
|
||||||
|
<property type="int" name="vpulleyden" value="1"/>
|
||||||
|
<property type="int" name="vpulleynum" value="1"/>
|
||||||
|
<property type="int" name="vscale" value="0"/>
|
||||||
|
<property type="int" name="vsteprev" value="200"/>
|
||||||
|
<property type="float" name="xhomepos" value="0.0"/>
|
||||||
|
<property type="float" name="xhomesw" value="0.0"/>
|
||||||
|
<property type="float" name="xhomevel" value="-20.0"/>
|
||||||
|
<property type="int" name="xlatchdir" value="0"/>
|
||||||
|
<property type="float" name="xleadscrew" value="5.0"/>
|
||||||
|
<property type="float" name="xmaxacc" value="500.0"/>
|
||||||
|
<property type="float" name="xmaxlim" value="780.0"/>
|
||||||
|
<property type="float" name="xmaxvel" value="50.0"/>
|
||||||
|
<property type="float" name="xmicrostep" value="2.0"/>
|
||||||
|
<property type="float" name="xminlim" value="0.0"/>
|
||||||
|
<property type="float" name="xpulleyden" value="1.0"/>
|
||||||
|
<property type="float" name="xpulleynum" value="1.0"/>
|
||||||
|
<property type="float" name="xscale" value="80.0"/>
|
||||||
|
<property type="float" name="xsteprev" value="200.0"/>
|
||||||
|
<property type="float" name="yhomepos" value="0.0"/>
|
||||||
|
<property type="float" name="yhomesw" value="0.0"/>
|
||||||
|
<property type="float" name="yhomevel" value="-20.0"/>
|
||||||
|
<property type="int" name="ylatchdir" value="0"/>
|
||||||
|
<property type="float" name="yleadscrew" value="5.0"/>
|
||||||
|
<property type="float" name="ymaxacc" value="500.0"/>
|
||||||
|
<property type="float" name="ymaxlim" value="485.0"/>
|
||||||
|
<property type="float" name="ymaxvel" value="50.0"/>
|
||||||
|
<property type="float" name="ymicrostep" value="2.0"/>
|
||||||
|
<property type="float" name="yminlim" value="0.0"/>
|
||||||
|
<property type="float" name="ypulleyden" value="1.0"/>
|
||||||
|
<property type="float" name="ypulleynum" value="1.0"/>
|
||||||
|
<property type="float" name="yscale" value="80.0"/>
|
||||||
|
<property type="float" name="ysteprev" value="200.0"/>
|
||||||
|
<property type="float" name="zhomepos" value="0.0"/>
|
||||||
|
<property type="float" name="zhomesw" value="0.0"/>
|
||||||
|
<property type="float" name="zhomevel" value="10.0"/>
|
||||||
|
<property type="int" name="zlatchdir" value="0"/>
|
||||||
|
<property type="float" name="zleadscrew" value="5.0"/>
|
||||||
|
<property type="float" name="zmaxacc" value="500.0"/>
|
||||||
|
<property type="float" name="zmaxlim" value="0.0"/>
|
||||||
|
<property type="float" name="zmaxvel" value="25.0"/>
|
||||||
|
<property type="float" name="zmicrostep" value="2.0"/>
|
||||||
|
<property type="float" name="zminlim" value="-100.0"/>
|
||||||
|
<property type="float" name="zpulleyden" value="1.0"/>
|
||||||
|
<property type="float" name="zpulleynum" value="1.0"/>
|
||||||
|
<property type="float" name="zscale" value="80.0"/>
|
||||||
|
<property type="float" name="zsteprev" value="200.0"/>
|
||||||
|
</stepconf>
|
||||||
BIN
pbsplash.png
Normal file
BIN
pbsplash.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 133 KiB |
210
probe_basic.var
Normal file
210
probe_basic.var
Normal file
@@ -0,0 +1,210 @@
|
|||||||
|
3000 0.000000
|
||||||
|
3001 0.000000
|
||||||
|
3002 0.000000
|
||||||
|
3003 0.000000
|
||||||
|
3004 0.000000
|
||||||
|
3005 0.000000
|
||||||
|
3006 0.000000
|
||||||
|
3007 0.000000
|
||||||
|
3008 0.000000
|
||||||
|
3009 0.000000
|
||||||
|
3010 0.000000
|
||||||
|
3011 0.000000
|
||||||
|
3012 0.000000
|
||||||
|
3013 0.000000
|
||||||
|
3014 0.000000
|
||||||
|
3015 0.000000
|
||||||
|
3016 0.000000
|
||||||
|
3017 0.000000
|
||||||
|
3018 0.000000
|
||||||
|
3019 0.000000
|
||||||
|
3020 0.000000
|
||||||
|
3021 0.000000
|
||||||
|
3022 0.000000
|
||||||
|
3023 0.000000
|
||||||
|
3024 0.000000
|
||||||
|
3025 0.000000
|
||||||
|
3026 0.000000
|
||||||
|
3027 0.000000
|
||||||
|
3028 0.000000
|
||||||
|
3029 0.000000
|
||||||
|
3030 0.000000
|
||||||
|
3031 0.000000
|
||||||
|
3032 0.000000
|
||||||
|
3033 0.000000
|
||||||
|
3034 0.000000
|
||||||
|
3035 0.000000
|
||||||
|
3036 0.000000
|
||||||
|
3037 0.000000
|
||||||
|
3038 0.000000
|
||||||
|
3039 0.000000
|
||||||
|
3050 0.000000
|
||||||
|
3051 0.000000
|
||||||
|
3052 0.000000
|
||||||
|
3053 0.000000
|
||||||
|
3054 0.000000
|
||||||
|
3979 0.000000
|
||||||
|
3980 6.000000
|
||||||
|
3981 0.000000
|
||||||
|
3982 0.000000
|
||||||
|
3983 0.000000
|
||||||
|
3984 0.000000
|
||||||
|
3985 0.000000
|
||||||
|
3986 0.000000
|
||||||
|
3987 0.000000
|
||||||
|
3988 0.000000
|
||||||
|
3989 0.000000
|
||||||
|
3990 0.000000
|
||||||
|
3991 0.000000
|
||||||
|
3992 0.000000
|
||||||
|
3993 0.000000
|
||||||
|
3994 0.000000
|
||||||
|
3995 0.000000
|
||||||
|
3996 0.000000
|
||||||
|
3997 0.000000
|
||||||
|
3998 0.000000
|
||||||
|
3999 0.000000
|
||||||
|
4000 0.000000
|
||||||
|
4001 0.000000
|
||||||
|
4002 0.000000
|
||||||
|
4003 0.000000
|
||||||
|
4004 0.000000
|
||||||
|
4005 0.000000
|
||||||
|
4006 0.000000
|
||||||
|
4007 0.000000
|
||||||
|
4008 0.000000
|
||||||
|
4009 0.000000
|
||||||
|
4010 0.000000
|
||||||
|
4011 0.000000
|
||||||
|
4012 0.000000
|
||||||
|
4013 0.000000
|
||||||
|
4014 0.000000
|
||||||
|
4015 0.000000
|
||||||
|
4016 0.000000
|
||||||
|
4017 0.000000
|
||||||
|
4018 0.000000
|
||||||
|
4019 0.000000
|
||||||
|
4020 0.000000
|
||||||
|
4021 0.000000
|
||||||
|
4022 0.000000
|
||||||
|
4023 0.000000
|
||||||
|
4024 0.000000
|
||||||
|
5161 0.000000
|
||||||
|
5162 0.000000
|
||||||
|
5163 0.000000
|
||||||
|
5164 0.000000
|
||||||
|
5165 0.000000
|
||||||
|
5166 0.000000
|
||||||
|
5167 0.000000
|
||||||
|
5168 0.000000
|
||||||
|
5169 0.000000
|
||||||
|
5181 0.000000
|
||||||
|
5182 0.000000
|
||||||
|
5183 0.000000
|
||||||
|
5184 0.000000
|
||||||
|
5185 0.000000
|
||||||
|
5186 0.000000
|
||||||
|
5187 0.000000
|
||||||
|
5188 0.000000
|
||||||
|
5189 0.000000
|
||||||
|
5210 0.000000
|
||||||
|
5211 0.000000
|
||||||
|
5212 0.000000
|
||||||
|
5213 0.000000
|
||||||
|
5214 0.000000
|
||||||
|
5215 0.000000
|
||||||
|
5216 0.000000
|
||||||
|
5217 0.000000
|
||||||
|
5218 0.000000
|
||||||
|
5219 0.000000
|
||||||
|
5220 1.000000
|
||||||
|
5221 0.000000
|
||||||
|
5222 0.000000
|
||||||
|
5223 0.000000
|
||||||
|
5224 0.000000
|
||||||
|
5225 0.000000
|
||||||
|
5226 0.000000
|
||||||
|
5227 0.000000
|
||||||
|
5228 0.000000
|
||||||
|
5229 0.000000
|
||||||
|
5230 0.000000
|
||||||
|
5241 0.000000
|
||||||
|
5242 0.000000
|
||||||
|
5243 0.000000
|
||||||
|
5244 0.000000
|
||||||
|
5245 0.000000
|
||||||
|
5246 0.000000
|
||||||
|
5247 0.000000
|
||||||
|
5248 0.000000
|
||||||
|
5249 0.000000
|
||||||
|
5250 0.000000
|
||||||
|
5261 0.000000
|
||||||
|
5262 0.000000
|
||||||
|
5263 0.000000
|
||||||
|
5264 0.000000
|
||||||
|
5265 0.000000
|
||||||
|
5266 0.000000
|
||||||
|
5267 0.000000
|
||||||
|
5268 0.000000
|
||||||
|
5269 0.000000
|
||||||
|
5270 0.000000
|
||||||
|
5281 0.000000
|
||||||
|
5282 0.000000
|
||||||
|
5283 0.000000
|
||||||
|
5284 0.000000
|
||||||
|
5285 0.000000
|
||||||
|
5286 0.000000
|
||||||
|
5287 0.000000
|
||||||
|
5288 0.000000
|
||||||
|
5289 0.000000
|
||||||
|
5290 0.000000
|
||||||
|
5301 0.000000
|
||||||
|
5302 0.000000
|
||||||
|
5303 0.000000
|
||||||
|
5304 0.000000
|
||||||
|
5305 0.000000
|
||||||
|
5306 0.000000
|
||||||
|
5307 0.000000
|
||||||
|
5308 0.000000
|
||||||
|
5309 0.000000
|
||||||
|
5310 0.000000
|
||||||
|
5321 0.000000
|
||||||
|
5322 0.000000
|
||||||
|
5323 0.000000
|
||||||
|
5324 0.000000
|
||||||
|
5325 0.000000
|
||||||
|
5326 0.000000
|
||||||
|
5327 0.000000
|
||||||
|
5328 0.000000
|
||||||
|
5329 0.000000
|
||||||
|
5330 0.000000
|
||||||
|
5341 0.000000
|
||||||
|
5342 0.000000
|
||||||
|
5343 0.000000
|
||||||
|
5344 0.000000
|
||||||
|
5345 0.000000
|
||||||
|
5346 0.000000
|
||||||
|
5347 0.000000
|
||||||
|
5348 0.000000
|
||||||
|
5349 0.000000
|
||||||
|
5350 0.000000
|
||||||
|
5361 0.000000
|
||||||
|
5362 0.000000
|
||||||
|
5363 0.000000
|
||||||
|
5364 0.000000
|
||||||
|
5365 0.000000
|
||||||
|
5366 0.000000
|
||||||
|
5367 0.000000
|
||||||
|
5368 0.000000
|
||||||
|
5369 0.000000
|
||||||
|
5370 0.000000
|
||||||
|
5381 0.000000
|
||||||
|
5382 0.000000
|
||||||
|
5383 0.000000
|
||||||
|
5384 0.000000
|
||||||
|
5385 0.000000
|
||||||
|
5386 0.000000
|
||||||
|
5387 0.000000
|
||||||
|
5388 0.000000
|
||||||
|
5389 0.000000
|
||||||
|
5390 0.000000
|
||||||
25
probe_basic_postgui.hal
Normal file
25
probe_basic_postgui.hal
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
loadrt time
|
||||||
|
loadrt not
|
||||||
|
|
||||||
|
addf time.0 servo-thread
|
||||||
|
addf not.0 servo-thread
|
||||||
|
|
||||||
|
net prog-running not.0.in <= halui.program.is-idle
|
||||||
|
net prog-paused halui.program.is-paused => time.0.pause
|
||||||
|
net cycle-timer time.0.start <= not.0.out
|
||||||
|
net cycle-seconds qtpyvcp.timerseconds.in <= time.0.seconds
|
||||||
|
net cycle-minutes qtpyvcp.timerminutes.in <= time.0.minutes
|
||||||
|
net cycle-hours qtpyvcp.timerhours.in <= time.0.hours
|
||||||
|
# *** Time items required for Probe Basic to run ***
|
||||||
|
|
||||||
|
# ---manual tool change signals---
|
||||||
|
net tool-change-request => qtpyvcp_manualtoolchange.change
|
||||||
|
net tool-change-confirmed <= qtpyvcp_manualtoolchange.changed
|
||||||
|
net tool-number => qtpyvcp_manualtoolchange.number
|
||||||
|
|
||||||
|
# *** Probe graphic simulation trigger push probe tip ***
|
||||||
|
# net probe-in => qtpyvcp.probe-in.out
|
||||||
|
net probe-in <= qtpyvcp.probe-led.on
|
||||||
|
|
||||||
|
# *** Set line below for actual spindle readout from your hal file ***
|
||||||
|
# net spindle-rpm-filtered scale_to_rpm.out => qtpyvcp.spindle-encoder-rpm.in
|
||||||
38
probe_basic_required_ini_items.ini
Normal file
38
probe_basic_required_ini_items.ini
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
# These ini configuration items are required for probe basic.
|
||||||
|
# please compare contrast to your machine ini configuration
|
||||||
|
# and edit any matching existing items and/or add any items
|
||||||
|
# that are not under the corresponding ini sections.
|
||||||
|
|
||||||
|
[DISPLAY]
|
||||||
|
DISPLAY = probe_basic
|
||||||
|
OPEN_FILE = ~/linuxcnc/nc_files/pb_examples/blank.ngc
|
||||||
|
CONFIG_FILE = custom_config.yml
|
||||||
|
MAX_FEED_OVERRIDE = 2.000000 # Recommended Setting for Probe Basic
|
||||||
|
MAX_SPINDLE_OVERRIDE = 2.000000 # Recommended Setting for Probe Basic
|
||||||
|
MIN_SPINDLE_OVERRIDE = 0.500000 # Recommended Setting for Probe Basic
|
||||||
|
INTRO_GRAPHIC = pbsplash.png # Recommended Setting for Probe Basic
|
||||||
|
INTRO_TIME = 5 # Recommended Setting for Probe Basic
|
||||||
|
INCREMENTS = JOG .01in .001in .0001in # REQUIRED Setting for Probe Basic
|
||||||
|
GEOMETRY = xyz # REQUIRED Setting for Probe Basic
|
||||||
|
USER_TABS_PATH = user_tabs/ # REQUIRED Setting for Probe Basic
|
||||||
|
USER_BUTTONS_PATH = user_buttons/ # REQUIRED Setting for Probe Basic
|
||||||
|
USER_DROS_PATH = user_dro_display/ # REQUIRED Setting for Probe Basic
|
||||||
|
DRO_DISPLAY = xyz # REQUIRED Setting for Probe Basic, Options: xyz, xyza, xyzab, xyzac, xyzbc, user
|
||||||
|
# ATC tab display options, 0 = no atc tab displayed, 1 = Carousel atc display, 2 = rack atc display
|
||||||
|
ATC_TAB_DISPLAY = 0
|
||||||
|
#USER_ATC_BUTTONS_PATH = user_atc_buttons/
|
||||||
|
|
||||||
|
[RS274NGC]
|
||||||
|
RS274NGC_STARTUP_CODE = F10 S300 G20 G17 G40 G49 G54 G64 P.001 G80 G90 G91.1 G92.1 G94 G97 G98
|
||||||
|
PARAMETER_FILE = linuxcnc.var
|
||||||
|
OWORD_NARGS = 1
|
||||||
|
NO_DOWNCASE_OWORD = 1
|
||||||
|
SUBROUTINE_PATH = subroutines
|
||||||
|
|
||||||
|
[HAL]
|
||||||
|
HALUI = halui
|
||||||
|
POSTGUI_HALFILE = probe_basic_postgui.hal
|
||||||
|
TWOPASS = one
|
||||||
|
|
||||||
|
[TRAJ]
|
||||||
|
AXES = 3 # or number of axes of your machine
|
||||||
19
python/remap.py
Normal file
19
python/remap.py
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# This is a component of LinuxCNC
|
||||||
|
# Copyright 2011, 2012, 2013, 2014 Dewey Garrett <dgarrett@panix.com>,
|
||||||
|
# Michael Haberler <git@mah.priv.at>, Norbert Schechner <nieson@web.de>
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
#
|
||||||
|
from stdglue import *
|
||||||
165
python/stdglue.py
Normal file
165
python/stdglue.py
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
|
||||||
|
#NOTE:
|
||||||
|
# The legacy names *selected_pocket* and *current_pocket* actually reference
|
||||||
|
# a sequential tooldata index for tool items loaded from a tool
|
||||||
|
# table ([EMCIO]TOOL_TABLE) or via a tooldata database ([EMCIO]DB_PROGRAM)
|
||||||
|
|
||||||
|
# stdglue - canned prolog and epilog functions for the remappable builtin codes (T,M6,M61,S,F)
|
||||||
|
#
|
||||||
|
# we dont use argspec to avoid the generic error message of the argspec prolog and give more
|
||||||
|
# concise ones here
|
||||||
|
|
||||||
|
|
||||||
|
import emccanon
|
||||||
|
|
||||||
|
from linuxcnc import version
|
||||||
|
from interpreter import *
|
||||||
|
from emccanon import MESSAGE
|
||||||
|
|
||||||
|
throw_exceptions = 1
|
||||||
|
|
||||||
|
VERSION = version
|
||||||
|
|
||||||
|
# used so screens can get info.
|
||||||
|
# add this to toplevel to call it:
|
||||||
|
|
||||||
|
# import remap
|
||||||
|
# def __init__(self):
|
||||||
|
# if self.task:
|
||||||
|
# remap.build_hal(self)
|
||||||
|
|
||||||
|
def build_hal(self):
|
||||||
|
import hal
|
||||||
|
try:
|
||||||
|
h=hal.component('remapStat')
|
||||||
|
h.newpin("tool", hal.HAL_S32, hal.HAL_OUT)
|
||||||
|
h.newpin("wear", hal.HAL_S32, hal.HAL_OUT)
|
||||||
|
h.ready()
|
||||||
|
self.hal_tool_comp = h
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
# REMAP=T prolog=prepare_prolog ngc=prepare epilog=prepare_epilog
|
||||||
|
# exposed parameters: #<tool> #<pocket>
|
||||||
|
|
||||||
|
def prepare_prolog(self,**words):
|
||||||
|
try:
|
||||||
|
cblock = self.blocks[self.remap_level]
|
||||||
|
if not cblock.t_flag:
|
||||||
|
self.set_errormsg("T requires a tool number")
|
||||||
|
return INTERP_ERROR
|
||||||
|
tool = cblock.t_number
|
||||||
|
if tool:
|
||||||
|
(status, pocket) = self.find_tool_pocket(tool)
|
||||||
|
if status != INTERP_OK:
|
||||||
|
self.set_errormsg("T%d: pocket not found" % (tool))
|
||||||
|
return status
|
||||||
|
else:
|
||||||
|
pocket = -1 # this is a T0 - tool unload
|
||||||
|
self.params["tool"] = tool
|
||||||
|
self.params["pocket"] = pocket
|
||||||
|
return INTERP_OK
|
||||||
|
except Exception as e:
|
||||||
|
self.set_errormsg("T%d/prepare_prolog: %s" % (int(words['t']), e))
|
||||||
|
return INTERP_ERROR
|
||||||
|
|
||||||
|
def prepare_epilog(self, **words):
|
||||||
|
try:
|
||||||
|
if not self.value_returned:
|
||||||
|
r = self.blocks[self.remap_level].executing_remap
|
||||||
|
self.set_errormsg("the %s remap procedure %s did not return a value"
|
||||||
|
% (r.name,r.remap_ngc if r.remap_ngc else r.remap_py))
|
||||||
|
return INTERP_ERROR
|
||||||
|
if self.blocks[self.remap_level].builtin_used:
|
||||||
|
#print "---------- T builtin recursion, nothing to do"
|
||||||
|
return INTERP_OK
|
||||||
|
else:
|
||||||
|
if self.return_value > 0:
|
||||||
|
self.selected_tool = int(self.params["tool"])
|
||||||
|
self.selected_pocket = int(self.params["pocket"])
|
||||||
|
emccanon.SELECT_TOOL(self.selected_tool)
|
||||||
|
return INTERP_OK
|
||||||
|
else:
|
||||||
|
self.set_errormsg("T%d: aborted (return code %.1f)" % (int(self.params["tool"]),self.return_value))
|
||||||
|
return INTERP_ERROR
|
||||||
|
except Exception as e:
|
||||||
|
self.set_errormsg("T%d/prepare_epilog: %s" % (tool,e))
|
||||||
|
return INTERP_ERROR
|
||||||
|
|
||||||
|
# REMAP=M6 modalgroup=6 prolog=change_prolog ngc=change epilog=change_epilog
|
||||||
|
# exposed parameters:
|
||||||
|
# #<tool_in_spindle>
|
||||||
|
# #<selected_tool>
|
||||||
|
# #<current_pocket>
|
||||||
|
# #<selected_pocket>
|
||||||
|
|
||||||
|
def change_prolog(self, **words):
|
||||||
|
try:
|
||||||
|
# this is relevant only when using iocontrol-v2.
|
||||||
|
if self.params[5600] > 0.0:
|
||||||
|
if self.params[5601] < 0.0:
|
||||||
|
self.set_errormsg("Toolchanger hard fault %d" % (int(self.params[5601])))
|
||||||
|
return INTERP_ERROR
|
||||||
|
print("change_prolog: Toolchanger soft fault %d" % int(self.params[5601]))
|
||||||
|
|
||||||
|
if self.selected_pocket < 0:
|
||||||
|
self.set_errormsg("M6: no tool prepared")
|
||||||
|
return INTERP_ERROR
|
||||||
|
if self.cutter_comp_side:
|
||||||
|
self.set_errormsg("Cannot change tools with cutter radius compensation on")
|
||||||
|
return INTERP_ERROR
|
||||||
|
self.params["tool_in_spindle"] = self.current_tool
|
||||||
|
self.params["selected_tool"] = self.selected_tool
|
||||||
|
self.params["current_pocket"] = self.current_pocket
|
||||||
|
self.params["selected_pocket"] = self.selected_pocket
|
||||||
|
return INTERP_OK
|
||||||
|
except Exception as e:
|
||||||
|
self.set_errormsg("M6/change_prolog: %s" % (e))
|
||||||
|
return INTERP_ERROR
|
||||||
|
|
||||||
|
def change_epilog(self, **words):
|
||||||
|
try:
|
||||||
|
if not self.value_returned:
|
||||||
|
r = self.blocks[self.remap_level].executing_remap
|
||||||
|
self.set_errormsg("the %s remap procedure %s did not return a value"
|
||||||
|
% (r.name,r.remap_ngc if r.remap_ngc else r.remap_py))
|
||||||
|
yield INTERP_ERROR
|
||||||
|
# this is relevant only when using iocontrol-v2.
|
||||||
|
if self.params[5600] > 0.0:
|
||||||
|
if self.params[5601] < 0.0:
|
||||||
|
self.set_errormsg("Toolchanger hard fault %d" % (int(self.params[5601])))
|
||||||
|
yield INTERP_ERROR
|
||||||
|
print("change_epilog: Toolchanger soft fault %d" % int(self.params[5601]))
|
||||||
|
|
||||||
|
if self.blocks[self.remap_level].builtin_used:
|
||||||
|
#print "---------- M6 builtin recursion, nothing to do"
|
||||||
|
yield INTERP_OK
|
||||||
|
else:
|
||||||
|
if self.return_value > 0.0:
|
||||||
|
|
||||||
|
# commit change
|
||||||
|
|
||||||
|
self.selected_pocket = int(self.params["selected_pocket"])
|
||||||
|
|
||||||
|
if "2.9" in VERSION:
|
||||||
|
emccanon.CHANGE_TOOL(self.selected_pocket)
|
||||||
|
elif "2.10" in VERSION:
|
||||||
|
emccanon.SELECT_TOOL(self.selected_tool)
|
||||||
|
emccanon.CHANGE_TOOL()
|
||||||
|
|
||||||
|
self.current_pocket = self.selected_pocket
|
||||||
|
self.selected_pocket = -1
|
||||||
|
self.selected_tool = -1
|
||||||
|
# cause a sync()
|
||||||
|
self.set_tool_parameters()
|
||||||
|
self.toolchange_flag = True
|
||||||
|
yield INTERP_EXECUTE_FINISH
|
||||||
|
else:
|
||||||
|
# yield to print any messages from the NGC program
|
||||||
|
yield INTERP_EXECUTE_FINISH
|
||||||
|
self.set_errormsg("M6 aborted (return code %.1f)" % (self.return_value))
|
||||||
|
yield INTERP_ERROR
|
||||||
|
except Exception as e:
|
||||||
|
self.set_errormsg("M6/change_epilog: %s" % (e))
|
||||||
|
yield INTERP_ERROR
|
||||||
|
|
||||||
19
python/toplevel.py
Normal file
19
python/toplevel.py
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# This is a component of LinuxCNC
|
||||||
|
# Copyright 2011, 2013, 2014 Dewey Garrett <dgarrett@panix.com>,
|
||||||
|
# Michael Haberler <git@mah.priv.at>, Norbert Schechner <nieson@web.de>
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
#
|
||||||
|
import remap
|
||||||
10
subroutines/a.ngc
Normal file
10
subroutines/a.ngc
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
o<a> sub
|
||||||
|
#<debug_1> = 0
|
||||||
|
|
||||||
|
M6
|
||||||
|
|
||||||
|
o100 if [#<debug_1> EQ 1]
|
||||||
|
(DEBUG, testowy napis)
|
||||||
|
o<a> endsub [1]
|
||||||
|
|
||||||
|
M2
|
||||||
188
subroutines/aaa.ngc
Normal file
188
subroutines/aaa.ngc
Normal file
@@ -0,0 +1,188 @@
|
|||||||
|
o<aaa> sub
|
||||||
|
#<print_debug> = 0
|
||||||
|
o10 if [#<print_debug> EQ 1]
|
||||||
|
(DEBUG, from tool_in_spindle=#<tool_in_spindle> to selected_tool=#<selected_tool>)
|
||||||
|
o10 endif
|
||||||
|
; -------------------------------------
|
||||||
|
; --- Begin Initial data gathering ----
|
||||||
|
; -------------------------------------
|
||||||
|
|
||||||
|
#<fast_probe_fr> = #3004 (set from probe screen fast probe feed rate)
|
||||||
|
#<slow_probe_fr> = #3005 (set from probe screen slow probe feedrate)
|
||||||
|
#<traverse_fr> = #3006 (set from probe screen traverse probe feedrate)
|
||||||
|
#<z_max_travel> = #3007 (max z distance the tool travels before erroring out if not contact is made)
|
||||||
|
#<xy_max_travel> = #3008 (max xy distance the tool travels before erroring out if not contact is made)
|
||||||
|
#<retract_distance> = #3009 (distance the tool retracts after making contact during fast feed mode)
|
||||||
|
#<spindle_zero_height> = #3010 (G53 distance from home to spindle nose triggering point on touch plate)
|
||||||
|
#<tool_diameter_probe_mode> = #3011 (activates the tool diameter probe subroutine section)
|
||||||
|
#<tool_diameter_offset_mode> = #3012 (activates the tool diameter offset position for probe subroutine section)
|
||||||
|
#<tool_setter_offset_direction> = #3013 (sets tool setter offset direction to move tool)
|
||||||
|
#<tool_diameter> = #5410 (current tool's diameter used for offseting probe position in x axis)
|
||||||
|
|
||||||
|
G92.1 (Cancel G92 offset)
|
||||||
|
M50 P0
|
||||||
|
|
||||||
|
#<tool_touch_x_coords> = #5181
|
||||||
|
#<tool_touch_y_coords> = #5182
|
||||||
|
#<tool_touch_z_coords> = #5183
|
||||||
|
|
||||||
|
#<tool_change_x_coords> = 10
|
||||||
|
#<tool_change_y_coords> = 10
|
||||||
|
#<tool_change_z_coords> = -10
|
||||||
|
|
||||||
|
|
||||||
|
#<tool_radius_offset> = [#<tool_diameter> / 2]
|
||||||
|
#<left_offset_probing_position> = [#<tool_touch_x_coords> - #<tool_radius_offset>]
|
||||||
|
#<right_offset_probing_position> = [#<tool_touch_x_coords> + #<tool_radius_offset>]
|
||||||
|
#<front_offset_probing_position> = [#<tool_touch_y_coords> - #<tool_radius_offset>]
|
||||||
|
#<back_offset_probing_position> = [#<tool_touch_y_coords> + #<tool_radius_offset>]
|
||||||
|
|
||||||
|
#<tool> = #<selected_tool>
|
||||||
|
#<pocket> = #<selected_pocket>
|
||||||
|
#<local_start_x> = #<_x>
|
||||||
|
#<local_start_y> = #<_y>
|
||||||
|
#<local_start_z> = #<_z>
|
||||||
|
|
||||||
|
#<zworkoffset> = [#[5203 + #5220 * 20] + #5213 * #5210]
|
||||||
|
;#<offset_z> = #5422 ;Stores the offset of the current Z coordinate.
|
||||||
|
|
||||||
|
o100 if [#<tool_diameter_offset_mode> EQ 1]
|
||||||
|
o101 if [#<tool_setter_offset_direction> EQ 0]
|
||||||
|
#<tool_touch_x_coords> = #<left_offset_probing_position>
|
||||||
|
o101 else if [#<tool_setter_offset_direction> EQ 1]
|
||||||
|
#<tool_touch_x_coords> = #<right_offset_probing_position>
|
||||||
|
o101 else if [#<tool_setter_offset_direction> EQ 2]
|
||||||
|
#<tool_touch_y_coords> = #<front_offset_probing_position>
|
||||||
|
o101 else if [#<tool_setter_offset_direction> EQ 3]
|
||||||
|
#<tool_touch_y_coords> = #<back_offset_probing_position>
|
||||||
|
o101 endif
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
; -------------------------------------
|
||||||
|
; --- End Initial Data Gathering ----
|
||||||
|
; -------------------------------------
|
||||||
|
|
||||||
|
; -------------------------------------
|
||||||
|
; --- Begin Initial Safety Checks ----
|
||||||
|
; -------------------------------------
|
||||||
|
|
||||||
|
; we must execute this only in the milltask interpreter
|
||||||
|
; or preview will break, so test for '#<_task>' which is 1 for
|
||||||
|
; the milltask interpreter and 0 in the UI's
|
||||||
|
o110 if [#<_task> EQ 0]
|
||||||
|
(debug, Task is Null)
|
||||||
|
o110 return [999]
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
; check we are in right mode
|
||||||
|
o120 if [#<_metric_machine>]
|
||||||
|
o125 if [#<_imperial>]
|
||||||
|
(MSG, Auto Tool probe error: not in G21 mode )
|
||||||
|
o125 return [-3] ; indicate probe contact failure to epilog
|
||||||
|
o125 endif
|
||||||
|
o120 else
|
||||||
|
o125 if [#<_imperial> EQ 0]
|
||||||
|
(MSG, Auto Tool probe error: not in G20 mode )
|
||||||
|
o125 return [-3] ; indicate probe contact failure to epilog
|
||||||
|
o125 endif
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
; -------------------------------------
|
||||||
|
; --- End Initial Safety Checks ----
|
||||||
|
; -------------------------------------
|
||||||
|
|
||||||
|
; -------------------------------------
|
||||||
|
; --- Begin Physical Tool Change ----
|
||||||
|
; -------------------------------------
|
||||||
|
|
||||||
|
G90 (set absolute coordinates)
|
||||||
|
G53 G0 F[#<traverse_fr>] Z0 (move to z0 home position)
|
||||||
|
|
||||||
|
o200 if [#<_current_tool> NE #<tool>]
|
||||||
|
; then move to change position
|
||||||
|
G53 G0 F[#<traverse_fr>] X#<tool_change_x_coords> Y#<tool_change_y_coords>
|
||||||
|
G53 G0 F[#<traverse_fr>] Z#<tool_change_z_coords>
|
||||||
|
o200 endif
|
||||||
|
|
||||||
|
;cancel tool offset mode
|
||||||
|
G49
|
||||||
|
|
||||||
|
; using the code being remapped here means 'use builtin behaviour'
|
||||||
|
; ie, this is not a recursive call to this program, but calls the
|
||||||
|
; un-remapped M6 processing
|
||||||
|
; That processing includes actually sending the window to the user
|
||||||
|
; to press OK when they have completed the tool change.
|
||||||
|
M6
|
||||||
|
|
||||||
|
; -------------------------------------
|
||||||
|
; ------ End Physical Tool Change ----
|
||||||
|
; -------------------------------------
|
||||||
|
|
||||||
|
; -------------------------------------
|
||||||
|
; ------ Begin Safety Checks for Tool Offset Measurement ----
|
||||||
|
; -------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
; -------------------------------------
|
||||||
|
; ------ Begin Tool Offset Measurement ----
|
||||||
|
; -------------------------------------
|
||||||
|
|
||||||
|
G90 (set absolute coordinates)
|
||||||
|
G53 G1 F[#<traverse_fr>] Z0 (move to z0 home position)
|
||||||
|
G53 G1 F[#<traverse_fr>] X#<tool_touch_x_coords> Y#<tool_touch_y_coords>
|
||||||
|
G53 G1 F[#<traverse_fr>] Z#<tool_touch_z_coords>
|
||||||
|
|
||||||
|
#<offset_z> = #5422 ;Stores the offset of the current Z coordinate.
|
||||||
|
|
||||||
|
;switch to relative distance mode for probe moves
|
||||||
|
G91
|
||||||
|
|
||||||
|
F #<fast_probe_fr>
|
||||||
|
G38.2 Z-[#<z_max_travel>] (fast tool probe)
|
||||||
|
#<z_fast_probe> = #5063 (save probe result of fast probe to parameters)
|
||||||
|
G1 F[#<traverse_fr>] Z[#<retract_distance>] (retract tool retract distance amount)
|
||||||
|
|
||||||
|
o400 if [#5070 EQ 0]
|
||||||
|
G90
|
||||||
|
o400 return [-3] ; indicate probe contact failure to epilog
|
||||||
|
o400 endif
|
||||||
|
|
||||||
|
(Slow Probe Rule, if Slow Probe FR is set to 0, Slow Probe is Bypassed)
|
||||||
|
o410 if [#<slow_probe_fr> GT 0]
|
||||||
|
(Initiate Slow Z- Probe)
|
||||||
|
G91
|
||||||
|
F[#<slow_probe_fr>] (set probe slow feedrate)
|
||||||
|
G38.2 Z-[#<retract_distance> * 2] (slow tool probe)
|
||||||
|
#<z_slow_probe> = #5063
|
||||||
|
o410 endif
|
||||||
|
|
||||||
|
o420 if [#5070 EQ 0]
|
||||||
|
G90
|
||||||
|
o420 return [-3] ; indicate probe contact failure to epilog
|
||||||
|
o420 endif
|
||||||
|
|
||||||
|
(Tool Diameter Probe Mode Section, User must define this section as needed)
|
||||||
|
o430 if [#<tool_diameter_probe_mode> EQ 1]
|
||||||
|
(DEBUG, Tool Diameter Probing is Not Defined in Subroutine)
|
||||||
|
o430 endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
G90 (set absolute coordinates)
|
||||||
|
G53 G1 F[#<traverse_fr>] Z0 (Send Spindle to home zero position)
|
||||||
|
|
||||||
|
(define new tool length offset parameters)
|
||||||
|
#<new_tool_length_offset> = [ABS[#<spindle_zero_height> + #5063 - #<offset_z>]]
|
||||||
|
|
||||||
|
G10 L1 P #<tool> Z [#<new_tool_length_offset>]
|
||||||
|
|
||||||
|
T #<tool> G43 H #<tool> (enable tool length offset)
|
||||||
|
|
||||||
|
M50 P1 (reinstate feedrate override)
|
||||||
|
o<print_debug> if [#<print_debug> EQ 1]
|
||||||
|
(DEBUG, new tool lenght offset: #<new_tool_length_offset>)
|
||||||
|
(DEBUG, offset_z: #<offset_z>, spindle zero offset: #<spindle_zero_height>, fast probe: #<z_fast_probe>, slow probe: #<z_slow_probe>)
|
||||||
|
o<print_debug> endif
|
||||||
|
|
||||||
|
o<aaa> endsub [1]
|
||||||
|
M2
|
||||||
12
subroutines/clamptool.ngc
Normal file
12
subroutines/clamptool.ngc
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
o<clamptool> sub
|
||||||
|
|
||||||
|
M65 P2 ; clamp the tool
|
||||||
|
|
||||||
|
M66 P5 L3 Q2 ; check the clamped tool sensor
|
||||||
|
o100 if [#5399 LT 0]
|
||||||
|
(abort, Failed to release tool) ; abort if the sensor does not activate in 2 seconds
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
o<clamptool> endsub [1]
|
||||||
|
|
||||||
|
M2
|
||||||
27
subroutines/extendatc.ngc
Normal file
27
subroutines/extendatc.ngc
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
o<extendatc> sub
|
||||||
|
|
||||||
|
; #<atc_z_tool_change_height> is the height you spindle needs to be at to clamp/unclamp a tool form the ATC (Set via INI [ATC]Z_TOOL_CHANGE_HEIGHT)
|
||||||
|
; #<atc_z_tool_clearance_height> is the clearance height you spindle needs to be at to safely clear the ATC (Set via INI [ATC]Z_TOOL_CLEARANCE_HEIGHT)
|
||||||
|
|
||||||
|
#<atc_z_tool_change_height> = -3.9000
|
||||||
|
o100 if [EXISTS[#<_ini[atc]z_tool_change_height>]]
|
||||||
|
#<atc_z_tool_change_height> = #<_ini[atc]z_tool_change_height>
|
||||||
|
o100 endif
|
||||||
|
#<atc_z_tool_clearance_height> = [#<_ini[AXIS_Z]MAX_LIMIT>-0.01]
|
||||||
|
o110 if [EXISTS[#<_ini[atc]z_tool_clearance_height>]]
|
||||||
|
#<atc_z_tool_clearance_height> = #<_ini[atc]z_tool_clearance_height>
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
G0 G53 Z#<atc_z_tool_clearance_height> ; move z to clear height
|
||||||
|
|
||||||
|
M65 P1 ; Turn off carousel home solenoid
|
||||||
|
M64 P0 ; Move Carousel OUT
|
||||||
|
M66 P1 L3 Q5 ; check for carousel out position sensor
|
||||||
|
o120 if [#5399 LT 0]
|
||||||
|
M65 P0 ; switch off atc out solenoid
|
||||||
|
(abort, ATC not in position)
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
o<extendatc> endsub [1]
|
||||||
|
|
||||||
|
M2
|
||||||
10
subroutines/go_to_g30.ngc
Normal file
10
subroutines/go_to_g30.ngc
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
o<go_to_g30> sub
|
||||||
|
|
||||||
|
M73
|
||||||
|
G90
|
||||||
|
G53 G0 Z0
|
||||||
|
G30
|
||||||
|
|
||||||
|
o<go_to_g30> endsub
|
||||||
|
|
||||||
|
M2
|
||||||
20
subroutines/go_to_home.ngc
Normal file
20
subroutines/go_to_home.ngc
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
o<go_to_home> sub
|
||||||
|
|
||||||
|
M73
|
||||||
|
G90
|
||||||
|
G53 G0 Z0
|
||||||
|
G53 G0 X0 Y0
|
||||||
|
|
||||||
|
o100 if [EXISTS[#<_ini[traj]axes>]]
|
||||||
|
#<geometry> = #<_ini[traj]axes>
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
o110 if [#<geometry> EQ 4]
|
||||||
|
G53 G0 A0
|
||||||
|
o110 else if [#<geometry> EQ 5]
|
||||||
|
G53 G0 A0 C0
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
o<go_to_home> endsub
|
||||||
|
|
||||||
|
M2
|
||||||
20
subroutines/go_to_zero.ngc
Normal file
20
subroutines/go_to_zero.ngc
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
o<go_to_zero> sub
|
||||||
|
|
||||||
|
M73
|
||||||
|
G90
|
||||||
|
G53 G0 Z0
|
||||||
|
G0 X0 Y0
|
||||||
|
|
||||||
|
o100 if [EXISTS[#<_ini[traj]axes>]]
|
||||||
|
#<geometry> = #<_ini[traj]axes>
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
o110 if [#<geometry> EQ 4]
|
||||||
|
G0 A0
|
||||||
|
o110 else if [#<geometry> EQ 5]
|
||||||
|
G0 A0 C0
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
o<go_to_zero> endsub
|
||||||
|
|
||||||
|
M2
|
||||||
48
subroutines/load_spindle_safety.ngc
Normal file
48
subroutines/load_spindle_safety.ngc
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.5)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(load tool in spindle safety macro)
|
||||||
|
; This is called form the ATC page
|
||||||
|
; Parameter #3991 is used to track the current tool loaded it in the spindle (persistently)
|
||||||
|
; Parameters #4001 to #4024 are used to track which tool is in which pocket (persistently)
|
||||||
|
; Parameter #4000 is not populated just used in the maths to calculate the above numbers
|
||||||
|
; #<number_of_pockets>: The number of pockets the ATC platter has, This is user set in the INI file via #<_ini[atc]pockets>
|
||||||
|
|
||||||
|
o<load_spindle_safety> sub
|
||||||
|
(PRINT, o<load_spindle_safety>)
|
||||||
|
|
||||||
|
#<load_spindle_tool_number> = #1 ; this is the value form the ATC tab
|
||||||
|
#<probe_tool_number> = #3014
|
||||||
|
|
||||||
|
; default to a 12 pocket ATC (matching DynATC Widget behaviour), then update based on INI settings
|
||||||
|
#<number_of_pockets> = 12
|
||||||
|
o101 if [EXISTS[#<_ini[atc]pockets>]]
|
||||||
|
#<number_of_pockets> = #<_ini[atc]pockets>
|
||||||
|
o101 endif
|
||||||
|
|
||||||
|
#10 = 0
|
||||||
|
#11 = 0 ; 1 if tool is already stored in carousel
|
||||||
|
|
||||||
|
o110 while [#10 LT #<number_of_pockets>]
|
||||||
|
#10 = [#10+1]
|
||||||
|
o120 if [#<load_spindle_tool_number> EQ #[4000 + #10]]
|
||||||
|
(DEBUG, the tool you are trying to load is already stored in carousel pocket %d#10)
|
||||||
|
#11 = 1
|
||||||
|
o120 endif
|
||||||
|
o110 endwhile
|
||||||
|
|
||||||
|
o130 if [#11 EQ 0]
|
||||||
|
M61 Q#<load_spindle_tool_number> G43 H#<load_spindle_tool_number>
|
||||||
|
#3991 = #<load_spindle_tool_number>
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
o140 if [#<load_spindle_tool_number> EQ #<probe_tool_number>]
|
||||||
|
S0 M5
|
||||||
|
o140 endif
|
||||||
|
|
||||||
|
o<program_coolant> call
|
||||||
|
|
||||||
|
o<load_spindle_safety> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
48
subroutines/load_spindle_safety_2.ngc
Normal file
48
subroutines/load_spindle_safety_2.ngc
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(load tool in spindle safety macro)
|
||||||
|
; This is called form the Tool page
|
||||||
|
; Parameter #3991 is used to track the current tool loaded it in the spindle (persistently)
|
||||||
|
; Parameters #4001 to #4024 are used to track which tool is in which pocket (persistently)
|
||||||
|
; Parameter #4000 is not populated just used in the maths to calculate the above numbers
|
||||||
|
; #<number_of_pockets>: The number of pockets the ATC platter has, This is user set in the INI file via #<_ini[atc]pockets>
|
||||||
|
|
||||||
|
o<load_spindle_safety_2> sub
|
||||||
|
(PRINT, o<load_spindle_safety_2>)
|
||||||
|
|
||||||
|
#<load_spindle_tool_number_2> = #1 ; this is the value form the TOOL tab
|
||||||
|
#<probe_tool_number> = #3014
|
||||||
|
|
||||||
|
; default to a 12 pocket ATC (matching DynATC Widget behaviour), then update based on INI settings
|
||||||
|
#<number_of_pockets> = 12
|
||||||
|
o101 if [EXISTS[#<_ini[atc]pockets>]]
|
||||||
|
#<number_of_pockets> = #<_ini[atc]pockets>
|
||||||
|
o101 endif
|
||||||
|
|
||||||
|
#10 = 0
|
||||||
|
#11 = 0 ; 1 if tool is already stored in carousel
|
||||||
|
|
||||||
|
o110 while [#10 LT #<number_of_pockets>]
|
||||||
|
#10 = [#10+1]
|
||||||
|
o120 if [#<load_spindle_tool_number_2> EQ #[4000 + #10]]
|
||||||
|
(DEBUG, the tool you are trying to load is already stored in carousel pocket %d#10)
|
||||||
|
#11 = 1
|
||||||
|
o120 endif
|
||||||
|
o110 endwhile
|
||||||
|
|
||||||
|
o130 if [#11 EQ 0]
|
||||||
|
M61 Q#<load_spindle_tool_number_2> G43 H#<load_spindle_tool_number_2>
|
||||||
|
#3991 = #<load_spindle_tool_number_2>
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
o140 if [#<load_spindle_tool_number_2> EQ #<probe_tool_number>]
|
||||||
|
S0 M5
|
||||||
|
o140 endif
|
||||||
|
|
||||||
|
o<program_coolant> call
|
||||||
|
|
||||||
|
o<load_spindle_safety_2> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
39
subroutines/m10.ngc
Normal file
39
subroutines/m10.ngc
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
o<m10> sub
|
||||||
|
|
||||||
|
; Move tool carousel best direction to pocket P
|
||||||
|
; Parameter #3989 is used to track if the carousel is homed (M13) (volatile)
|
||||||
|
; Parameter #3990 is used to track the current tool pocket (persistently)
|
||||||
|
; #<number_of_pockets>: The number of pockets in the ATC is automaticity pulled from the INI via #<_ini[atc]pockets>
|
||||||
|
(PRINT, o<m10> P#<p>)
|
||||||
|
|
||||||
|
o100 if [#3989 NE 1]
|
||||||
|
M13
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
; default to a 12 pocket ATC (matching DynATC Widget behaviour), then update based on INI settings
|
||||||
|
#<number_of_pockets> = 12
|
||||||
|
o110 if [EXISTS[#<_ini[atc]pockets>]]
|
||||||
|
#<number_of_pockets> = #<_ini[atc]pockets>
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
#<steps> = [#3990 - #<p>]
|
||||||
|
(PRINT, o<m10> P#<p>, steps=#<steps>)
|
||||||
|
o120 if [#<steps> GT [#<number_of_pockets> / 2]]
|
||||||
|
#<steps>=[#<steps> - #<number_of_pockets>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
o130 if [#<steps> LT -[#<number_of_pockets> / 2]]
|
||||||
|
#<steps>=[#<steps> + #<number_of_pockets>]
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
o140 if [#<steps> GT 0]
|
||||||
|
M12 P[#<steps>]
|
||||||
|
o140 elseif [#<steps> LT 0]
|
||||||
|
#<steps>=[#<steps> * -1]
|
||||||
|
M11 P[#<steps>]
|
||||||
|
o140 endif
|
||||||
|
|
||||||
|
(PRINT, o<m10> endsub)
|
||||||
|
o<m10> endsub [1]
|
||||||
|
|
||||||
|
M2
|
||||||
50
subroutines/m11.ngc
Normal file
50
subroutines/m11.ngc
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
o<m11> sub
|
||||||
|
|
||||||
|
; Move tool carousel CW Parameter P number of steps
|
||||||
|
; Without parameter one step CW.
|
||||||
|
; Parameter #3989 is used to track if the carousel is homed (M13) (volatile)
|
||||||
|
; Parameter #3990 is used to track the current tool pocket (persistently)
|
||||||
|
; #<number_of_pockets>: The number of pockets in the ATC is automaticity pulled from the INI via #<_ini[atc]pockets>
|
||||||
|
(PRINT, o<m11> P#<p>)
|
||||||
|
|
||||||
|
o100 if [#3989 NE 1]
|
||||||
|
(PRINT, atc not homed, homing)
|
||||||
|
M13
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
; default to a 12 pocket ATC (matching DynATC Widget behaviour), then update based on INI settings
|
||||||
|
#<number_of_pockets> = 12
|
||||||
|
o110 if [EXISTS[#<_ini[atc]pockets>]]
|
||||||
|
#<number_of_pockets> = #<_ini[atc]pockets>
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
o120 if [EXISTS[#<p>]]
|
||||||
|
#<steps_to_move> = #<p>
|
||||||
|
o120 else
|
||||||
|
#<steps_to_move> = 1
|
||||||
|
(tells the atc widget move 1 step forward)
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
(tells the atc widget how many steps to move and start moving forward)
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"dynatc"}.rotate{#<steps_to_move>, "cw"}])
|
||||||
|
|
||||||
|
M64 P4 ; Move atc motor FWD
|
||||||
|
|
||||||
|
o130 do
|
||||||
|
M66 P4 L1 Q3 ; wait for rising edge on rotation index
|
||||||
|
o131 if [#5399 LT 0]
|
||||||
|
M65 P4 ; Stop atc motor
|
||||||
|
(abort, Failed to get rotation index)
|
||||||
|
o131 endif
|
||||||
|
#3990 = [[[#3990+2] MOD #<number_of_pockets>]-1] ; Pocket is no.1-#<number_of_pockets>
|
||||||
|
#<steps_to_move> = [#<steps_to_move>-1]
|
||||||
|
o130 while [#<steps_to_move> GT 0]
|
||||||
|
|
||||||
|
M65 P4 ; Stop motor
|
||||||
|
|
||||||
|
#<_my_current_pocket> = #3990
|
||||||
|
|
||||||
|
(PRINT, o<m11> endsub)
|
||||||
|
o<m11> endsub [1]
|
||||||
|
|
||||||
|
M2
|
||||||
50
subroutines/m12.ngc
Normal file
50
subroutines/m12.ngc
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
o<m12> sub
|
||||||
|
|
||||||
|
; Move tool carousel CCW Parameter P number of steps
|
||||||
|
; Without parameter one step CCW.
|
||||||
|
; Parameter #3989 is used to track if the carousel is homed (M13) (volatile)
|
||||||
|
; Parameter #3990 is used to track the current tool pocket (persistently)
|
||||||
|
; #<number_of_pockets>: The number of pockets in the ATC is automaticity pulled from the INI via #<_ini[atc]pockets>
|
||||||
|
(PRINT, o<m12> P#<p>)
|
||||||
|
|
||||||
|
o100 if [#3989 NE 1]
|
||||||
|
(PRINT, atc not homed, homing)
|
||||||
|
M13
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
; default to a 12 pocket ATC (matching DynATC Widget behaviour), then update based on INI settings
|
||||||
|
#<number_of_pockets> = 12
|
||||||
|
o110 if [EXISTS[#<_ini[atc]pockets>]]
|
||||||
|
#<number_of_pockets> = #<_ini[atc]pockets>
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
o120 if [EXISTS[#<p>]]
|
||||||
|
#<steps_to_move> = #<p>
|
||||||
|
o120 else
|
||||||
|
#<steps_to_move>=1
|
||||||
|
(tells the atc widget move 1 step reverse)
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
(tells the atc widget how many steps to move and start moving reverse)
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"dynatc"}.rotate{#<steps_to_move>, "ccw"}])
|
||||||
|
|
||||||
|
M64 P3 ; Move atc motor REV
|
||||||
|
|
||||||
|
o130 do
|
||||||
|
M66 P4 L1 Q3 ; wait for rising edge on rotation index
|
||||||
|
o131 if [#5399 LT 0]
|
||||||
|
M65 P3 ; Stop atc motor
|
||||||
|
(abort, Failed to get rotation index)
|
||||||
|
o131 endif
|
||||||
|
#3990 = [[[#3990-2] MOD #<number_of_pockets>]+1] ; Pocket is no.1-#<number_of_pockets>
|
||||||
|
#<steps_to_move> = [#<steps_to_move>-1]
|
||||||
|
o130 while [#<steps_to_move> GT 0]
|
||||||
|
|
||||||
|
M65 P3 ; Stop motor
|
||||||
|
|
||||||
|
#<_my_current_pocket> = #3990
|
||||||
|
|
||||||
|
(PRINT, o<m12> endsub)
|
||||||
|
o<m12> endsub [1]
|
||||||
|
|
||||||
|
M2
|
||||||
42
subroutines/m13.ngc
Normal file
42
subroutines/m13.ngc
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
o<m13> sub
|
||||||
|
|
||||||
|
; Move tool carousel CW until ATC zero
|
||||||
|
; Parameter #3989 is used to track if the carousel is homed (M13) (volatile)
|
||||||
|
; Parameter #3990 is used to track the current tool pocket (persistently)
|
||||||
|
; #<number_of_pockets>: The number of pockets in the ATC is automaticity pulled from the INI via #<_ini[atc]pockets>
|
||||||
|
(PRINT, o<m13>)
|
||||||
|
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"dynatc"}.atc_message{"REFERENCING"}])
|
||||||
|
|
||||||
|
M64 P4 ; Move Motor FWD
|
||||||
|
M66 P4 L1 Q20 ; wait for rising edge on home index
|
||||||
|
o100 if [#5399 LT 0]
|
||||||
|
M65 P4 ; stop motor
|
||||||
|
(abort, Failed to home carousel)
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
#3990 = 1
|
||||||
|
M65 P4 ; Stop motor
|
||||||
|
#3989 = 1
|
||||||
|
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"dynatc"}.atc_message{}])
|
||||||
|
|
||||||
|
#<number_of_pockets> = 12
|
||||||
|
o110 if [EXISTS[#<_ini[atc]pockets>]]
|
||||||
|
#<number_of_pockets> = #<_ini[atc]pockets>
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
#1 = 0
|
||||||
|
|
||||||
|
o120 while [#1 LT #<number_of_pockets>]
|
||||||
|
#1 = [#1+1]
|
||||||
|
#2 = #[4000+#1]
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"dynatc"}.store_tool{#1, #2}])
|
||||||
|
o120 endwhile
|
||||||
|
|
||||||
|
M61 Q#3991 G43 H#3991
|
||||||
|
|
||||||
|
(PRINT, o<m13> endsub)
|
||||||
|
o<m13> endsub [1]
|
||||||
|
|
||||||
|
M2
|
||||||
45
subroutines/m21.ngc
Normal file
45
subroutines/m21.ngc
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
o<m21> sub
|
||||||
|
|
||||||
|
; Move Carousel to the tool change position - OUT
|
||||||
|
; then unload any tool in the spindle into the current pocket
|
||||||
|
; Parameter #3991 is used to track the current tool loaded it in the spindle (persistently)
|
||||||
|
; #<atc_z_tool_change_height> is the height you spindle needs to be at to clamp/unclamp a tool form the ATC (Set via INI [ATC]Z_TOOL_CHANGE_HEIGHT)
|
||||||
|
; #<atc_z_tool_clearance_height> is the clearance height you spindle needs to be at to safely clear the ATC (Set via INI [ATC]Z_TOOL_CLEARANCE_HEIGHT)
|
||||||
|
(PRINT, o<m21>)
|
||||||
|
|
||||||
|
#<atc_z_tool_change_height> = -3.9000
|
||||||
|
o100 if [EXISTS[#<_ini[atc]z_tool_change_height>]]
|
||||||
|
#<atc_z_tool_change_height> = #<_ini[atc]z_tool_change_height>
|
||||||
|
o100 endif
|
||||||
|
#<atc_z_tool_clearance_height> = [#<_ini[AXIS_Z]MAX_LIMIT>-0.01]
|
||||||
|
o110 if [EXISTS[#<_ini[atc]z_tool_clearance_height>]]
|
||||||
|
#<atc_z_tool_clearance_height> = #<_ini[atc]z_tool_clearance_height>
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
M65 P1 ; switch off carousel in solenoid
|
||||||
|
M66 P1 L3 Q1
|
||||||
|
|
||||||
|
M5 M9
|
||||||
|
G90
|
||||||
|
G0 G53 Z#<atc_z_tool_change_height> ; rapid move to above the tool change height
|
||||||
|
|
||||||
|
;M19 R0 Q3 ; orient spindle
|
||||||
|
|
||||||
|
M64 P0 ; Move Carousel out
|
||||||
|
M66 P1 L3 Q5 ; check for carousel out sensor
|
||||||
|
o120 if [#5399 LT 0]
|
||||||
|
M65 P0 ; switch off atc out solenoid
|
||||||
|
(abort, ATC not in position)
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
M24 ; activate drawbar, release the tool
|
||||||
|
M5 ; turn off spindle lock
|
||||||
|
|
||||||
|
G0 G53 Z#<atc_z_tool_clearance_height> ; move z to clear height
|
||||||
|
|
||||||
|
#3991 = 0; save fact there is now no tool in the spindle
|
||||||
|
|
||||||
|
(PRINT, o<m21> endsub)
|
||||||
|
o<m21> endsub [1]
|
||||||
|
|
||||||
|
M2
|
||||||
42
subroutines/m22.ngc
Normal file
42
subroutines/m22.ngc
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
o<m22> sub
|
||||||
|
|
||||||
|
; Move Carousel to the home position - IN
|
||||||
|
; after loading any tool in the current pocket to the spindle
|
||||||
|
; #<atc_z_tool_change_height> is the height you spindle needs to be at to clamp/unclamp a tool form the ATC (Set via INI [ATC]Z_TOOL_CHANGE_HEIGHT)
|
||||||
|
; #<atc_z_tool_clearance_height> is the clearance height you spindle needs to be at to safely clear the ATC (Set via INI [ATC]Z_TOOL_CLEARANCE_HEIGHT)
|
||||||
|
(PRINT, o<m22>)
|
||||||
|
|
||||||
|
#<atc_z_tool_change_height> = -3.9000
|
||||||
|
o100 if [EXISTS[#<_ini[atc]z_tool_change_height>]]
|
||||||
|
#<atc_z_tool_change_height> = #<_ini[atc]z_tool_change_height>
|
||||||
|
o100 endif
|
||||||
|
#<atc_z_tool_clearance_height> = [#<_ini[AXIS_Z]MAX_LIMIT>-0.01]
|
||||||
|
o110 if [EXISTS[#<_ini[atc]z_tool_clearance_height>]]
|
||||||
|
#<atc_z_tool_clearance_height> = #<_ini[atc]z_tool_clearance_height>
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
;M19 R0 Q2
|
||||||
|
M24
|
||||||
|
;M19 R0 Q1
|
||||||
|
;G90
|
||||||
|
G0 G53 Z#<atc_z_tool_change_height> ; rapid move to above the tool change height
|
||||||
|
M65 P2 ; release the drawbar to clamp the tool
|
||||||
|
M5
|
||||||
|
M66 P5 L3 Q1 ; check the tool clamped sensor
|
||||||
|
o120 if [#5399 LT 0]
|
||||||
|
(abort, Failed to reclamp tool)
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
M65 P0 ; Move Carousel home
|
||||||
|
M66 P0 L3 Q4 ; check carousel in position sensor
|
||||||
|
o130 if [#5399 LT 0]
|
||||||
|
M65 P1 ; turn off the solenoid to send atc home
|
||||||
|
(abort, Failed to send carousel home) ; abort if the sensor does not activate in 5 seconds
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
;M65 P1 ; Turn off carousel home position solenoid
|
||||||
|
|
||||||
|
(PRINT, o<m22> endsub)
|
||||||
|
o<m22> endsub [1]
|
||||||
|
|
||||||
|
M2
|
||||||
0
subroutines/m23.ngc
Normal file
0
subroutines/m23.ngc
Normal file
14
subroutines/m24.ngc
Normal file
14
subroutines/m24.ngc
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
o<m24> sub
|
||||||
|
(PRINT, o<m24>)
|
||||||
|
|
||||||
|
M64 P2 ; unclamp the tool
|
||||||
|
M66 P2 L3 Q2 ; check the unclamped tool sensor
|
||||||
|
o100 if [#5399 LT 0]
|
||||||
|
M65 P2 ; turn off the drawbar
|
||||||
|
(abort, failed to release tool) ; abort if the sensor does not activate in 3 seconds
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(PRINT, o<m24> endsub)
|
||||||
|
o<m24> endsub [1]
|
||||||
|
|
||||||
|
M2
|
||||||
15
subroutines/m25.ngc
Normal file
15
subroutines/m25.ngc
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
o<m25> sub
|
||||||
|
(PRINT, o<m25>)
|
||||||
|
|
||||||
|
M64 P0 ; Move Carousel out
|
||||||
|
|
||||||
|
M66 P1 L3 Q5 ; check for carousel out sensor
|
||||||
|
o100 if [#5399 LT 0]
|
||||||
|
M65 P0 ; switch off atc out solenoid
|
||||||
|
(abort, ATC not in position)
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(PRINT, o<m25> endsub)
|
||||||
|
o<m25> endsub [1]
|
||||||
|
|
||||||
|
M2
|
||||||
0
subroutines/m26.ngc
Normal file
0
subroutines/m26.ngc
Normal file
25
subroutines/m6_tool_call_atc_page.ngc
Normal file
25
subroutines/m6_tool_call_atc_page.ngc
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.3)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(m6 tool call with g43 offset applied)
|
||||||
|
|
||||||
|
o<m6_tool_call_atc_page> sub
|
||||||
|
|
||||||
|
#<tool_number_entry_atc_page> = #1
|
||||||
|
#<probe_tool_number> = #3014
|
||||||
|
|
||||||
|
T#<tool_number_entry_atc_page> M6
|
||||||
|
o100 if [1 EQ 1]
|
||||||
|
G43 H#<tool_number_entry_atc_page>
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
o110 if [#<tool_number_entry_atc_page> EQ #<probe_tool_number>]
|
||||||
|
S0 M5
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
o<program_coolant> call
|
||||||
|
|
||||||
|
o<m6_tool_call_atc_page> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
26
subroutines/m6_tool_call_main_panel.ngc
Normal file
26
subroutines/m6_tool_call_main_panel.ngc
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.4)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(m6 tool call with g43 offset applied)
|
||||||
|
|
||||||
|
o<m6_tool_call_main_panel> sub
|
||||||
|
|
||||||
|
#<tool_number_entry_main_panel> = #1
|
||||||
|
#<probe_tool_number> = #3014
|
||||||
|
|
||||||
|
T#<tool_number_entry_main_panel> M6
|
||||||
|
|
||||||
|
o100 if [1 EQ 1]
|
||||||
|
G43 H#<tool_number_entry_main_panel>
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
o110 if [#<tool_number_entry_main_panel> EQ #<probe_tool_number>]
|
||||||
|
S0 M5
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
o<program_coolant> call
|
||||||
|
|
||||||
|
o<m6_tool_call_main_panel> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
26
subroutines/m6_tool_call_tool_page.ngc
Normal file
26
subroutines/m6_tool_call_tool_page.ngc
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.4)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(m6 tool call with g43 offset applied)
|
||||||
|
|
||||||
|
o<m6_tool_call_tool_page> sub
|
||||||
|
|
||||||
|
#<tool_number_entry_tool_page> = #1
|
||||||
|
#<probe_tool_number> = #3014
|
||||||
|
|
||||||
|
T#<tool_number_entry_tool_page> M6
|
||||||
|
|
||||||
|
o100 if [1 EQ 1]
|
||||||
|
G43 H#<tool_number_entry_tool_page>
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
o110 if [#<tool_number_entry_tool_page> EQ #<probe_tool_number>]
|
||||||
|
S0 M5
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
o<program_coolant> call
|
||||||
|
|
||||||
|
o<m6_tool_call_tool_page> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
19
subroutines/move_head_above_carousel.ngc
Normal file
19
subroutines/move_head_above_carousel.ngc
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
o<move_head_above_carousel> sub
|
||||||
|
|
||||||
|
; #<atc_z_tool_change_height> is the height you spindle needs to be at to clamp/unclamp a tool form the ATC (Set via INI [ATC]Z_TOOL_CHANGE_HEIGHT)
|
||||||
|
; #<atc_z_tool_clearance_height> is the clearance height you spindle needs to be at to safely clear the ATC (Set via INI [ATC]Z_TOOL_CLEARANCE_HEIGHT)
|
||||||
|
|
||||||
|
#<atc_z_tool_change_height> = -3.9000
|
||||||
|
o100 if [EXISTS[#<_ini[atc]z_tool_change_height>]]
|
||||||
|
#<atc_z_tool_change_height> = #<_ini[atc]z_tool_change_height>
|
||||||
|
o100 endif
|
||||||
|
#<atc_z_tool_clearance_height> = [#<_ini[AXIS_Z]MAX_LIMIT>-0.01]
|
||||||
|
o110 if [EXISTS[#<_ini[atc]z_tool_clearance_height>]]
|
||||||
|
#<atc_z_tool_clearance_height> = #<_ini[atc]z_tool_clearance_height>
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
G0 G53 Z#<atc_z_tool_clearance_height> ; move z to clear height
|
||||||
|
|
||||||
|
o<move_head_above_carousel> endsub [1]
|
||||||
|
|
||||||
|
M2
|
||||||
18
subroutines/move_tool_to_carousel_height.ngc
Normal file
18
subroutines/move_tool_to_carousel_height.ngc
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
o<move_tool_to_carousel_height> sub
|
||||||
|
; #<atc_z_tool_change_height> is the height you spindle needs to be at to clamp/unclamp a tool form the ATC (Set via INI [ATC]Z_TOOL_CHANGE_HEIGHT)
|
||||||
|
; #<atc_z_tool_clearance_height> is the clearance height you spindle needs to be at to safely clear the ATC (Set via INI [ATC]Z_TOOL_CLEARANCE_HEIGHT)
|
||||||
|
|
||||||
|
#<atc_z_tool_change_height> = -3.9000
|
||||||
|
o100 if [EXISTS[#<_ini[atc]z_tool_change_height>]]
|
||||||
|
#<atc_z_tool_change_height> = #<_ini[atc]z_tool_change_height>
|
||||||
|
o100 endif
|
||||||
|
#<atc_z_tool_clearance_height> = [#<_ini[AXIS_Z]MAX_LIMIT>-0.01]
|
||||||
|
o110 if [EXISTS[#<_ini[atc]z_tool_clearance_height>]]
|
||||||
|
#<atc_z_tool_clearance_height> = #<_ini[atc]z_tool_clearance_height>
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
G0 G53 Z#<atc_z_tool_change_height> ; rapid move to above the tool change height
|
||||||
|
|
||||||
|
o<move_tool_to_carousel_height> endsub [1]
|
||||||
|
|
||||||
|
M2
|
||||||
9
subroutines/on_abort.ngc
Normal file
9
subroutines/on_abort.ngc
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
%
|
||||||
|
o<on_abort> sub
|
||||||
|
|
||||||
|
G90
|
||||||
|
G40
|
||||||
|
G49
|
||||||
|
|
||||||
|
o<on_abort> endsub
|
||||||
|
%
|
||||||
11
subroutines/orientspindle.ngc
Normal file
11
subroutines/orientspindle.ngc
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
o<orientspindle> sub
|
||||||
|
; Orient the spindle with platter
|
||||||
|
(PRINT, o<orientspindle>)
|
||||||
|
|
||||||
|
M5 M9 ; stop all spindle motion and coolant
|
||||||
|
M19 R0 Q4 ; orient spindle
|
||||||
|
M5 ; turn off spindle lock
|
||||||
|
|
||||||
|
o<orientspindle> endsub [1]
|
||||||
|
|
||||||
|
M2
|
||||||
122
subroutines/probe_back_left_inside_corner.ngc
Normal file
122
subroutines/probe_back_left_inside_corner.ngc
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe back left inside corner for x,y,z 0,0,0 position)
|
||||||
|
(Start probe position is over back left 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_left_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_left_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, Traverse Workpiece Top at Z Clearance Height plane)
|
||||||
|
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_minus_sub" to Probe x- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_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_left_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_left_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_minus_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_minus_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_left_inside_corner> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
118
subroutines/probe_back_left_top_corner.ngc
Normal file
118
subroutines/probe_back_left_top_corner.ngc
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe back left top corner for x,y,z 0,0,0 position)
|
||||||
|
(Start probe position is over back left 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_left_top_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_left_top_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)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X-[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(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_left_top_corner> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, up to Z clearance plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, Traverse Workpiece at Z Clearance plane)
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<step_off_width>] 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_minus" to Probe y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_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_left_top_corner> return
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
(Probe Completion Move to Z Clearance Plane, and XY 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_minus_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_minus_zero_edge> + #<workspace_y>]
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_back_left_top_corner> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
122
subroutines/probe_back_right_inside_corner.ngc
Normal file
122
subroutines/probe_back_right_inside_corner.ngc
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
(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)
|
||||||
117
subroutines/probe_back_right_top_corner.ngc
Normal file
117
subroutines/probe_back_right_top_corner.ngc
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe back right top corner for x,y,z 0,0,0 position)
|
||||||
|
(Start probe position is over back right 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_top_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_top_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)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_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_top_corner> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, up to Z clearance plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
(Probe Y Positioning Move)
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X-[#<step_off_width>] 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_minus" to Probe y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_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_top_corner> return
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
(Probe Completion Move to Z Clearance Plane, and XY Zero)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_minus_zero_edge>] Y[#<y_minus_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_minus_zero_edge> + #<workspace_x>]
|
||||||
|
G10 L2 P#5220 Y[#<y_minus_zero_edge> + #<workspace_y>]
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_back_right_top_corner> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
91
subroutines/probe_back_top_side.ngc
Normal file
91
subroutines/probe_back_top_side.ngc
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.4)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe back top side for y,z 0,0 position)
|
||||||
|
(Start probe position is over back edge of stock)
|
||||||
|
(inside the step off width distance and within max z distance)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<Probe_back_top_side> 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_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_top_side> 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 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_minus" to Probe y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_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 Y Sub returned edge parameter, aborting)
|
||||||
|
M50 P1
|
||||||
|
o<probe_back_top_side> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(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 Y[#<y_minus_zero_edge>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO or probe position measuring only)
|
||||||
|
o120 if [#<probe_mode> EQ 0]
|
||||||
|
(Record Zero in selected axes and WCO)
|
||||||
|
G10 L2 P#5220 Y[#<y_minus_zero_edge> + #<workspace_y>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<Probe_back_top_side> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
8
subroutines/probe_cal_reset.ngc
Normal file
8
subroutines/probe_cal_reset.ngc
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
o<probe_cal_reset> sub
|
||||||
|
|
||||||
|
#3032 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"calibration_offset_3032"}.setValue{#3032}])
|
||||||
|
|
||||||
|
o<probe_cal_reset> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
329
subroutines/probe_cal_round_boss.ngc
Normal file
329
subroutines/probe_cal_round_boss.ngc
Normal file
@@ -0,0 +1,329 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe calibration offset using defined diam round boss)
|
||||||
|
(Start probe position is over center of stock in X and Y axis)
|
||||||
|
(within max z distance, ensure all settings have been)
|
||||||
|
(set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_cal_round_boss> 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)
|
||||||
|
#<cal_diameter> = #3033 (=0)
|
||||||
|
#<sq_cal_axis> = #3036 (=0)
|
||||||
|
|
||||||
|
(Cancel G92 offsets)
|
||||||
|
G92.1
|
||||||
|
|
||||||
|
(Cancel Feedrate Override)
|
||||||
|
M50 P0
|
||||||
|
|
||||||
|
#<workspace_x> = #[5201 + [20 * #5220]]
|
||||||
|
#<workspace_y> = #[5202 + [20 * #5220]]
|
||||||
|
#<workspace_z> = #[5203 + [20 * #5220]]
|
||||||
|
|
||||||
|
(clear current probe calibration offset)
|
||||||
|
#3032 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"calibration_offset_3032"}.setValue{#3032}])
|
||||||
|
|
||||||
|
(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_cal_round_boss> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(Probe Radius)
|
||||||
|
#<probe_radius> = [#<probe_diameter> / 2]
|
||||||
|
|
||||||
|
(Probe Centerline Offset)
|
||||||
|
#<probe_center_offset> = [#<probe_radius>]
|
||||||
|
|
||||||
|
(remove probe tip diam and cal offset from probed width calculations)
|
||||||
|
#<probe_diameter_offset> = [#<probe_diameter>]
|
||||||
|
|
||||||
|
#<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][#3032]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, X hint/2 + Step Off Width)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X-[#<cal_diameter>/2 + #<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(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_probed> = #5061
|
||||||
|
|
||||||
|
(first side Probe Completion Move to Z Clearance Plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Positioning move in X, X Hint + Step Off Width at Rapid Speed)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<cal_diameter> + #<step_off_width> + #<xy_clearance>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
|
||||||
|
(probed center calulation)
|
||||||
|
#<x_center_probed> = [[#<x_minus_probed> + #<x_plus_probed>] / 2]
|
||||||
|
|
||||||
|
#1002 = #<x_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1002}])
|
||||||
|
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, Y hint/2 + Step Off Width)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y-[#<cal_diameter>/2 + #<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_probed> = #5062
|
||||||
|
|
||||||
|
(first side Probe Completion Move to Z Clearance Plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Positioning move in Y, Y Hint + Step Off Width at Rapid Speed)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<cal_diameter> + #<step_off_width> + #<xy_clearance>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus" to Probe y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
|
||||||
|
(probed center calulation)
|
||||||
|
#<y_center_probed> = [[#<y_minus_probed> + #<y_plus_probed>] / 2]
|
||||||
|
|
||||||
|
#1004 = #<y_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1004}])
|
||||||
|
|
||||||
|
(Move to z clearance plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Move to Y Center)
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<y_center_probed>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, X hint/2 + Step Off Width)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X-[#<cal_diameter>/2 + #<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(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_probed> = #5061
|
||||||
|
|
||||||
|
(first side Probe Completion Move to Z Clearance Plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Positioning move in X, X Hint + Step Off Width at Rapid Speed)
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<cal_diameter> + #<step_off_width> + #<xy_clearance>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
|
||||||
|
(probed center calulation)
|
||||||
|
#<x_center_probed> = [[#<x_minus_probed> + #<x_plus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate X Width Probed)
|
||||||
|
o110 if [#<x_minus_probed> GT #<x_plus_probed>]
|
||||||
|
#<x_raw_width> = [#<x_minus_probed> - #<x_plus_probed>]
|
||||||
|
o110 else
|
||||||
|
#<x_raw_width> = [#<x_plus_probed> - #<x_minus_probed>]
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<x_probed_width> = [#<x_raw_width> - #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1001 = #<x_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_probed_width"}.setValue{#1001}])
|
||||||
|
|
||||||
|
#1002 = #<x_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1002}])
|
||||||
|
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, Y hint/2 + Step Off Width)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y-[#<cal_diameter>/2 + #<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_probed> = #5062
|
||||||
|
|
||||||
|
(first side Probe Completion Move to Z Clearance Plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Positioning move in Y, Y Hint + Step Off Width at Rapid Speed)
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<cal_diameter> + #<step_off_width> + #<xy_clearance>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus" to Probe y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
|
||||||
|
(probed center calulation)
|
||||||
|
#<y_center_probed> = [[#<y_minus_probed> + #<y_plus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate Y Width Probed)
|
||||||
|
o120 if [#<y_minus_probed> GT #<y_plus_probed>]
|
||||||
|
#<y_raw_width> = [#<y_minus_probed> - #<y_plus_probed>]
|
||||||
|
o120 else
|
||||||
|
#<y_raw_width> = [#<y_plus_probed> - #<y_minus_probed>]
|
||||||
|
o<probe_round_boss> return
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<y_probed_width> = [#<y_raw_width> - #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1003 = #<y_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_probed_width"}.setValue{#1003}])
|
||||||
|
|
||||||
|
#1004 = #<y_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1004}])
|
||||||
|
|
||||||
|
#<averaged_diam> = [[#<x_probed_width> + #<y_probed_width>] / 2]
|
||||||
|
|
||||||
|
#1010 = #<averaged_diam>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"averaged_diam"}.setValue{#1010}])
|
||||||
|
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>] Y[#<y_center_probed>]
|
||||||
|
|
||||||
|
o130 if [#<cal_diameter> GT #<x_probed_width>]
|
||||||
|
(calculate calibration error and adjust calibration offset)
|
||||||
|
#<x_cal_error> = [[#<cal_diameter> - #<x_probed_width>] / 2]
|
||||||
|
#<new_x_cal_offset> = [#<x_cal_error>]
|
||||||
|
o130 else
|
||||||
|
#<x_cal_error> = [[#<x_probed_width> - #<cal_diameter>] / 2]
|
||||||
|
#<new_x_cal_offset> = [#<x_cal_error>]
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
o140 if [#<cal_diameter> GT #<y_probed_width>]
|
||||||
|
(calculate calibration error and adjust calibration offset)
|
||||||
|
#<y_cal_error> = [[#<cal_diameter> - #<y_probed_width>] / 2]
|
||||||
|
#<new_y_cal_offset> = [#<y_cal_error>]
|
||||||
|
o140 else
|
||||||
|
#<y_cal_error> = [[#<y_probed_width> - #<cal_diameter>] / 2]
|
||||||
|
#<new_y_cal_offset> = [#<y_cal_error>]
|
||||||
|
o140 endif
|
||||||
|
|
||||||
|
#<new_avg_cal_offset> = [[#<new_x_cal_offset> + #<new_y_cal_offset>] / 2]
|
||||||
|
|
||||||
|
o150 if [#<sq_cal_axis> EQ 0]
|
||||||
|
#3032 = [ABS[#<new_avg_cal_offset>]]
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"calibration_offset_3032"}.setValue{#3032}])
|
||||||
|
o150 else if [#<sq_cal_axis> EQ 1]
|
||||||
|
#3032 = [ABS[#<new_x_cal_offset>]]
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"calibration_offset_3032"}.setValue{#3032}])
|
||||||
|
o150 else
|
||||||
|
#3032 = [ABS[#<new_y_cal_offset>]]
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"calibration_offset_3032"}.setValue{#3032}])
|
||||||
|
o150 endif
|
||||||
|
|
||||||
|
#<x_zero> = [#<x_center_probed> + #<workspace_x>]
|
||||||
|
|
||||||
|
#<y_zero> = [#<y_center_probed> + #<workspace_y>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO or probe position measuring only)
|
||||||
|
o160 if [#<probe_mode> EQ 0]
|
||||||
|
(Record XY Zero in selected WCO)
|
||||||
|
G10 L2 P#5220 X[#<x_zero>] Y[#<y_zero>]
|
||||||
|
o160 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_cal_round_boss> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
223
subroutines/probe_cal_round_pocket.ngc
Normal file
223
subroutines/probe_cal_round_pocket.ngc
Normal file
@@ -0,0 +1,223 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe calibration offset using defined diam round pocket)
|
||||||
|
(Start probe position is over left side edge of pocket wall)
|
||||||
|
(inside the step off width distance and within max z distance)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_cal_round_pocket> 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)
|
||||||
|
#<cal_diameter> = #3033 (=0)
|
||||||
|
#<sq_cal_axis> = #3036 (=0)
|
||||||
|
|
||||||
|
(Cancel G92 offsets)
|
||||||
|
G92.1
|
||||||
|
|
||||||
|
(Cancel Feedrate Override)
|
||||||
|
M50 P0
|
||||||
|
|
||||||
|
#<workspace_x> = #[5201 + [20 * #5220]]
|
||||||
|
#<workspace_y> = #[5202 + [20 * #5220]]
|
||||||
|
|
||||||
|
(clear current probe calibration offset)
|
||||||
|
#3032 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"calibration_offset_3032"}.setValue{#3032}])
|
||||||
|
|
||||||
|
(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_cal_round_pocket> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(remove probe tip diam and cal offset from probed width calculations)
|
||||||
|
#<probe_diameter_offset> = [#<probe_diameter>]
|
||||||
|
|
||||||
|
#<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][#3032]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, Step Off Width)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x-)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
|
||||||
|
(Call sub "probe_x_plus" to Probe x+)
|
||||||
|
o<probe_x_plus> call [#3014][#3015][#3016][3017][#3018 + #3033][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_plus_probed> = #5061
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<x_center_probed> = [[#<x_plus_probed> + #<x_minus_probed>] / 2]
|
||||||
|
|
||||||
|
#1002 = #<x_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1002}])
|
||||||
|
|
||||||
|
(Probe Completion Move to Z Clearance Plane, and X Zero)
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>]
|
||||||
|
|
||||||
|
(Call sub "probe_y_plus" to Probe Y+)
|
||||||
|
o<probe_y_plus> call [#3014][#3015][#3016][3017][#3018 + #3033 / 2][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_plus_probed> = #5062
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus" to Probe Y-)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][3017][#3018 + #3033][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<y_center_probed> = [[#<y_plus_probed> + #<y_minus_probed>] / 2]
|
||||||
|
|
||||||
|
#1004 = #<y_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1004}])
|
||||||
|
|
||||||
|
(Probe Completion Move to Z Clearance Plane, Y Zero)
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<y_center_probed>]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x-)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][3017][#3018 + #3033 / 2][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
|
||||||
|
(Call sub "probe_x_plus" to Probe x+)
|
||||||
|
o<probe_x_plus> call [#3014][#3015][#3016][3017][#3018 + #3033][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_plus_probed> = #5061
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<x_center_probed> = [[#<x_plus_probed> + #<x_minus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate X Width Probed)
|
||||||
|
#<raw_width> = [#<x_plus_probed> - #<x_minus_probed>]
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<x_probed_width> = [#<raw_width> + #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1001 = #<x_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_probed_width"}.setValue{#1001}])
|
||||||
|
|
||||||
|
#1002 = #<x_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1002}])
|
||||||
|
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>]
|
||||||
|
|
||||||
|
(Call sub "probe_y_plus" to Probe Y+)
|
||||||
|
o<probe_y_plus> call [#3014][#3015][#3016][3017][#3018 + #3033 / 2][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_plus_probed> = #5062
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus" to Probe Y-)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][3017][#3018 + #3033][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<y_center_probed> = [[#<y_plus_probed> + #<y_minus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate Y Width Probed)
|
||||||
|
#<raw_width> = [#<y_plus_probed> - #<y_minus_probed>]
|
||||||
|
|
||||||
|
(Completed probed diameter calculations)
|
||||||
|
#<y_probed_width> = [#<raw_width> + #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1003 = #<y_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_probed_width"}.setValue{#1003}])
|
||||||
|
|
||||||
|
#1004 = #<y_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1004}])
|
||||||
|
|
||||||
|
#<averaged_diam> = [[#<x_probed_width> + #<y_probed_width>] / 2]
|
||||||
|
|
||||||
|
#1010 = #<averaged_diam>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"averaged_diam"}.setValue{#1010}])
|
||||||
|
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<y_center_probed>]
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
o110 if [#<cal_diameter> GT #<x_probed_width>]
|
||||||
|
(calculate calibration error and adjust calibration offset)
|
||||||
|
#<x_cal_error> = [[#<cal_diameter> - #<x_probed_width>] / 2]
|
||||||
|
#<new_x_cal_offset> = [#<x_cal_error>]
|
||||||
|
o110 else
|
||||||
|
#<x_cal_error> = [[#<x_probed_width> - #<cal_diameter>] / 2]
|
||||||
|
#<new_x_cal_offset> = [#<x_cal_error>]
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
o120 if [#<cal_diameter> GT #<y_probed_width>]
|
||||||
|
(calculate calibration error and adjust calibration offset)
|
||||||
|
#<y_cal_error> = [[#<cal_diameter> - #<y_probed_width>] / 2]
|
||||||
|
#<new_y_cal_offset> = [#<y_cal_error>]
|
||||||
|
o120 else
|
||||||
|
#<y_cal_error> = [[#<y_probed_width> - #<cal_diameter>] / 2]
|
||||||
|
#<new_y_cal_offset> = [#<y_cal_error>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
#<new_avg_cal_offset> = [[#<new_x_cal_offset> + #<new_y_cal_offset>] / 2]
|
||||||
|
|
||||||
|
o130 if [#<sq_cal_axis> EQ 0]
|
||||||
|
#3032 = [ABS[#<new_avg_cal_offset>]]
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"calibration_offset_3032"}.setValue{#3032}])
|
||||||
|
o130 else if [#<sq_cal_axis> EQ 1]
|
||||||
|
#3032 = [ABS[#<new_x_cal_offset>]]
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"calibration_offset_3032"}.setValue{#3032}])
|
||||||
|
o130 else
|
||||||
|
#3032 = [ABS[#<new_y_cal_offset>]]
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"calibration_offset_3032"}.setValue{#3032}])
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
#<x_zero> = [#<x_center_probed> + #<workspace_x>]
|
||||||
|
|
||||||
|
#<y_zero> = [#<y_center_probed> + #<workspace_y>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO or probe position measuring only)
|
||||||
|
o140 if [#<probe_mode> EQ 0]
|
||||||
|
(Record Y Zero in selected WCO)
|
||||||
|
G10 L2 P#5220 X[#<x_zero>] Y[#<y_zero>]
|
||||||
|
(Probe Completion Move to Z Clearance Plane, and X Zero, Y Zero)
|
||||||
|
o140 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_cal_round_pocket> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
224
subroutines/probe_cal_square_boss.ngc
Normal file
224
subroutines/probe_cal_square_boss.ngc
Normal file
@@ -0,0 +1,224 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe calibration offset using defined width square boss)
|
||||||
|
(Start probe position is over center of stock in X and Y axis)
|
||||||
|
(within max z distance, ensure all settings have been)
|
||||||
|
(set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_cal_square_boss> 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)
|
||||||
|
#<x_cal_width> = #3034 (=0)
|
||||||
|
#<y_cal_width> = #3035 (=0)
|
||||||
|
#<sq_cal_axis> = #3036 (=0)
|
||||||
|
|
||||||
|
(Cancel G92 offsets)
|
||||||
|
G92.1
|
||||||
|
|
||||||
|
(Cancel Feedrate Override)
|
||||||
|
M50 P0
|
||||||
|
|
||||||
|
#<workspace_x> = #[5201 + [20 * #5220]]
|
||||||
|
#<workspace_y> = #[5202 + [20 * #5220]]
|
||||||
|
#<workspace_z> = #[5203 + [20 * #5220]]
|
||||||
|
|
||||||
|
(clear current probe calibration offset)
|
||||||
|
#3032 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"calibration_offset_3032"}.setValue{#3032}])
|
||||||
|
|
||||||
|
(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_cal_square_boss> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(Probe Radius)
|
||||||
|
#<probe_radius> = [#<probe_diameter> / 2]
|
||||||
|
|
||||||
|
(Probe Centerline Offset)
|
||||||
|
#<probe_center_offset> = [#<probe_radius>]
|
||||||
|
|
||||||
|
(remove probe tip diam and cal offset from probed width calculations)
|
||||||
|
#<probe_diameter_offset> = [#<probe_diameter>]
|
||||||
|
|
||||||
|
#<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][#3032]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, X hint/2 + Step Off Width)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X-[#<x_cal_width>/2 + #<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(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_probed> = #5061
|
||||||
|
|
||||||
|
(first side Probe Completion Move to Z Clearance Plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Positioning move in X, X Hint + Step Off Width at Traverse Speed)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_cal_width> + #<step_off_width> + #<xy_clearance>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
|
||||||
|
(probed center calulation)
|
||||||
|
#<x_center_probed> = [[#<x_minus_probed> + #<x_plus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate X Width Probed)
|
||||||
|
#<raw_width> = [#<x_minus_probed> - #<x_plus_probed>]
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<x_probed_width> = [#<raw_width> - #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1001 = #<x_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_probed_width"}.setValue{#1001}])
|
||||||
|
|
||||||
|
#1002 = #<x_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1002}])
|
||||||
|
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, Y hint/2 + Step Off Width)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y-[#<y_cal_width>/2 + #<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_probed> = #5062
|
||||||
|
|
||||||
|
(first side Probe Completion Move to Z Clearance Plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Positioning move in Y, Y Hint + Step Off Width at traverse Speed)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<y_cal_width> + #<step_off_width> + #<xy_clearance>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus" to Probe y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
|
||||||
|
(probed center calulation)
|
||||||
|
#<y_center_probed> = [[#<y_minus_probed> + #<y_plus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate Y Width Probed)
|
||||||
|
#<raw_width> = [#<y_minus_probed> - #<y_plus_probed>]
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<y_probed_width> = [#<raw_width> - #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1003 = #<y_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_probed_width"}.setValue{#1003}])
|
||||||
|
|
||||||
|
#1004 = #<y_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1004}])
|
||||||
|
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>] Y[#<y_center_probed>]
|
||||||
|
|
||||||
|
o110 if [#<x_cal_width> GT #<x_probed_width>]
|
||||||
|
(calculate calibration error and adjust calibration offset)
|
||||||
|
#<x_cal_error> = [[#<x_cal_width> - #<x_probed_width>] / 2]
|
||||||
|
#<new_x_cal_offset> = [#<x_cal_error>]
|
||||||
|
o110 else
|
||||||
|
#<x_cal_error> = [[#<x_probed_width> - #<x_cal_width>] / 2]
|
||||||
|
#<new_x_cal_offset> = [#<x_cal_error>]
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
o120 if [#<y_cal_width> GT #<y_probed_width>]
|
||||||
|
(calculate calibration error and adjust calibration offset)
|
||||||
|
#<y_cal_error> = [[#<y_cal_width> - #<y_probed_width>] / 2]
|
||||||
|
#<new_y_cal_offset> = [#<y_cal_error>]
|
||||||
|
o120 else
|
||||||
|
#<y_cal_error> = [[#<y_probed_width> - #<y_cal_width>] / 2]
|
||||||
|
#<new_y_cal_offset> = [#<y_cal_error>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
#<new_avg_cal_offset> = [[#<new_x_cal_offset> + #<new_y_cal_offset>] / 2]
|
||||||
|
|
||||||
|
o130 if [#<sq_cal_axis> EQ 0]
|
||||||
|
#3032 = [ABS[#<new_avg_cal_offset>]]
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"calibration_offset_3032"}.setValue{#3032}])
|
||||||
|
o130 else if [#<sq_cal_axis> EQ 1]
|
||||||
|
#3032 = [ABS[#<new_x_cal_offset>]]
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"calibration_offset_3032"}.setValue{#3032}])
|
||||||
|
o130 else
|
||||||
|
#3032 = [ABS[#<new_y_cal_offset>]]
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"calibration_offset_3032"}.setValue{#3032}])
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
#<x_zero> = [#<x_center_probed> + #<workspace_x>]
|
||||||
|
|
||||||
|
#<y_zero> = [#<y_center_probed> + #<workspace_y>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO or probe position measuring only)
|
||||||
|
o140 if [#<probe_mode> EQ 0]
|
||||||
|
(Record XY Zero in selected WCO)
|
||||||
|
G10 L2 P#5220 X[#<x_zero>] Y[#<y_zero>]
|
||||||
|
(Probe Completion Move to Z Clearance Plane, and X Zero, Y Zero)
|
||||||
|
o140 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_cal_square_boss> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
178
subroutines/probe_cal_square_pocket.ngc
Normal file
178
subroutines/probe_cal_square_pocket.ngc
Normal file
@@ -0,0 +1,178 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe calibration offset using defined width square pocket)
|
||||||
|
(Start probe position is over left side edge of pocket wall)
|
||||||
|
(inside the step off width distance and within max z distance)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_cal_square_pocket> 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)
|
||||||
|
#<x_cal_width> = #3034 (=0)
|
||||||
|
#<y_cal_width> = #3035 (=0)
|
||||||
|
#<sq_cal_axis> = #3036 (=0)
|
||||||
|
|
||||||
|
(Cancel G92 offsets)
|
||||||
|
G92.1
|
||||||
|
|
||||||
|
(Cancel Feedrate Override)
|
||||||
|
M50 P0
|
||||||
|
|
||||||
|
#<workspace_x> = #[5201 + [20 * #5220]]
|
||||||
|
#<workspace_y> = #[5202 + [20 * #5220]]
|
||||||
|
|
||||||
|
(clear current probe calibration offset)
|
||||||
|
#3032 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"calibration_offset_3032"}.setValue{#3032}])
|
||||||
|
|
||||||
|
(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_cal_square_pocket> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(remove probe tip diam and cal offset from probed width calculations)
|
||||||
|
#<probe_diameter_offset> = [#<probe_diameter>]
|
||||||
|
|
||||||
|
#<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][#3032]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, Step Off Width)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
|
||||||
|
(Call sub "probe_x_plus" to Probe x+ side of Workpiece)
|
||||||
|
o<probe_x_plus> call [#3014][#3015][#3016][3017][#3018 + #3034][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_plus_probed> = #5061
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<x_center_probed> = [[#<x_plus_probed> + #<x_minus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate X Width Probed)
|
||||||
|
#<raw_width> = [#<x_plus_probed> - #<x_minus_probed>]
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<x_probed_width> = [#<raw_width> + #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1001 = #<x_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_probed_width"}.setValue{#1001}])
|
||||||
|
|
||||||
|
#1002 = #<x_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1002}])
|
||||||
|
|
||||||
|
(Probe Completion Move to Z Clearance Plane, and X Zero, Y Zero)
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>]
|
||||||
|
|
||||||
|
(Call sub "probe_y_plus" to Probe Y+ side of Workpiece)
|
||||||
|
o<probe_y_plus> call [#3014][#3015][#3016][3017][#3018 + #3035 / 2][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_plus_probed> = #5062
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus" to Probe Y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][3017][#3018 + #3035][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<y_center_probed> = [[#<y_plus_probed> + #<y_minus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate Y Width Probed)
|
||||||
|
#<raw_width> = [#<y_plus_probed> - #<y_minus_probed>]
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<y_probed_width> = [#<raw_width> + #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1003 = #<y_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_probed_width"}.setValue{#1003}])
|
||||||
|
|
||||||
|
#1004 = #<y_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1004}])
|
||||||
|
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<y_center_probed>]
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
o110 if [#<x_cal_width> GT #<x_probed_width>]
|
||||||
|
(calculate calibration error and adjust calibration offset)
|
||||||
|
#<x_cal_error> = [[#<x_cal_width> - #<x_probed_width>] / 2]
|
||||||
|
#<new_x_cal_offset> = [#<x_cal_error>]
|
||||||
|
o110 else
|
||||||
|
#<x_cal_error> = [[#<x_probed_width> - #<x_cal_width>] / 2]
|
||||||
|
#<new_x_cal_offset> = [#<x_cal_error>]
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
o120 if [#<y_cal_width> GT #<y_probed_width>]
|
||||||
|
(calculate calibration error and adjust calibration offset)
|
||||||
|
#<y_cal_error> = [[#<y_cal_width> - #<y_probed_width>] / 2]
|
||||||
|
#<new_y_cal_offset> = [#<y_cal_error>]
|
||||||
|
o120 else
|
||||||
|
#<y_cal_error> = [[#<y_probed_width> - #<y_cal_width>] / 2]
|
||||||
|
#<new_y_cal_offset> = [#<y_cal_error>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
#<new_avg_cal_offset> = [[#<new_x_cal_offset> + #<new_y_cal_offset>] / 2]
|
||||||
|
|
||||||
|
o130 if [#<sq_cal_axis> EQ 0]
|
||||||
|
#3032 = [ABS[#<new_avg_cal_offset>]]
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"calibration_offset_3032"}.setValue{#3032}])
|
||||||
|
o130 else if [#<sq_cal_axis> EQ 1]
|
||||||
|
#3032 = [ABS[#<new_x_cal_offset>]]
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"calibration_offset_3032"}.setValue{#3032}])
|
||||||
|
o130 else
|
||||||
|
#3032 = [ABS[#<new_y_cal_offset>]]
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"calibration_offset_3032"}.setValue{#3032}])
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
#<x_zero> = [#<x_center_probed> + #<workspace_x>]
|
||||||
|
|
||||||
|
#<y_zero> = [#<y_center_probed> + #<workspace_y>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO or probe position measuring only)
|
||||||
|
o140 if [#<probe_mode> EQ 0]
|
||||||
|
(Record X Zero in selected WCO)
|
||||||
|
G10 L2 P#5220 X[#<x_zero>] Y[#<y_zero>]
|
||||||
|
o140 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_cal_square_pocket> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
173
subroutines/probe_corner_x_minus_edge_angle.ngc
Normal file
173
subroutines/probe_corner_x_minus_edge_angle.ngc
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe Corner X minus Edge Angle for x,y,z 0,0,0 position)
|
||||||
|
(Start probe position is over front right 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_corner_x_minus_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_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_corner_x_minus_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>]
|
||||||
|
|
||||||
|
#<z1x> = #5420
|
||||||
|
|
||||||
|
#<z1y> = #5421
|
||||||
|
|
||||||
|
(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)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 y-[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
#<p1x> = #5420
|
||||||
|
|
||||||
|
(Call sub "probe_y_plus" to Probe y+ side of Workpiece)
|
||||||
|
o<probe_y_plus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<p1y> = #<_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_corner_x_minus_edge_angle> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, up to Z clearance plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, Traverse Workpiece at Z Clearance plane)
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<step_off_width>] Y[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move,to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
#<p2y> = #5421
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe X- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<p2x> = #<_value>
|
||||||
|
|
||||||
|
(value returned safety check, aborts if no value returned)
|
||||||
|
o120 if [#<probe_mode> EQ 1 AND #<_value_returned> NE 1]
|
||||||
|
(DEBUG, Missing X Sub returned edge parameter, aborting)
|
||||||
|
M50 P1
|
||||||
|
o<probe_corner_x_minus_edge_angle> return
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
(edge width move to edge second probing point)
|
||||||
|
G91
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Y[#<edge_width>]
|
||||||
|
|
||||||
|
#<p3y> = #5421
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe X- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<p3x> = #<_value>
|
||||||
|
|
||||||
|
(value returned safety check, aborts if no value returned)
|
||||||
|
o130 if [#<probe_mode> EQ 1 AND #<_value_returned> NE 1]
|
||||||
|
(DEBUG, Missing X Sub returned edge parameter, aborting)
|
||||||
|
M50 P1
|
||||||
|
o<probe_corner_x_minus_edge_angle> return
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
#<edge_delta> = [#<p2x> - #<p3x>]
|
||||||
|
|
||||||
|
#<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}])
|
||||||
|
|
||||||
|
#<c1xr> = [#<z1x> + [#<p2x> - #<z1x>] * COS[-#<edge_angle>] - [#<p2y> - #<z1y>] * SIN[-#<edge_angle>]]
|
||||||
|
|
||||||
|
#<c1yr> = [#<z1y> + [#<p1x> - #<z1x>] * SIN[-#<edge_angle>] + [#<p1y> - #<z1y>] * COS[-#<edge_angle>]]
|
||||||
|
|
||||||
|
#<c1x> = [#<z1x> + [#<c1xr> - #<z1x>] * COS[#<edge_angle>] - [#<c1yr> - #<z1y>] * SIN[#<edge_angle>]]
|
||||||
|
|
||||||
|
#<c1y> = [#<z1y> + [#<c1xr> - #<z1x>] * SIN[#<edge_angle>] + [#<c1yr> - #<z1y>] * COS[#<edge_angle>]]
|
||||||
|
|
||||||
|
(Probe Completion Move to Z Clearance Plane, and XY Zero)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<c1x>] Y[#<c1y>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO,Rotation and probe position measuring only)
|
||||||
|
o140 if [#<probe_mode> EQ 0 AND #<wco_rotation> EQ 0]
|
||||||
|
(Record Zero in selected axes and WCO)
|
||||||
|
G10 L2 P#5220 X[#<c1x> + #<workspace_x>] Y[#<c1y> + #<workspace_y>]
|
||||||
|
o140 endif
|
||||||
|
|
||||||
|
(probe mode rules for WCO,Rotation and probe position measuring only)
|
||||||
|
o150 if [#<probe_mode> EQ 0 AND #<wco_rotation> EQ 1]
|
||||||
|
(Record Zero in selected axes and WCO)
|
||||||
|
G10 L2 P#5220 X[#<c1x> + #<workspace_x>] Y[#<c1y> + #<workspace_y>] R[#<edge_angle>]
|
||||||
|
o150 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_corner_x_minus_edge_angle> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
173
subroutines/probe_corner_x_plus_edge_angle.ngc
Normal file
173
subroutines/probe_corner_x_plus_edge_angle.ngc
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe Corner X plus Edge Angle for x,y,z 0,0,0 position)
|
||||||
|
(Start probe position is over back left 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_corner_x_plus_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_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_corner_x_plus_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>]
|
||||||
|
|
||||||
|
#<z1x> = #5420
|
||||||
|
|
||||||
|
#<z1y> = #5421
|
||||||
|
|
||||||
|
(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)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 y[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
#<p1x> = #5420
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus" to Probe y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<p1y> = #<_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_corner_x_plus_edge_angle> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, up to Z clearance plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, Traverse Workpiece at Z Clearance plane)
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X-[#<step_off_width>] Y-[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move,to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
#<p2y> = #5421
|
||||||
|
|
||||||
|
(Call sub "probe_x_plus" to Probe X+ side of Workpiece)
|
||||||
|
o<probe_x_plus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<p2x> = #<_value>
|
||||||
|
|
||||||
|
(value returned safety check, aborts if no value returned)
|
||||||
|
o120 if [#<probe_mode> EQ 1 AND #<_value_returned> NE 1]
|
||||||
|
(DEBUG, Missing X Sub returned edge parameter, aborting)
|
||||||
|
M50 P1
|
||||||
|
o<probe_corner_x_plus_edge_angle> return
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
(edge width move to edge second probing point)
|
||||||
|
G91
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Y-[#<edge_width>]
|
||||||
|
|
||||||
|
#<p3y> = #5421
|
||||||
|
|
||||||
|
(Call sub "probe_x_plus" to Probe X+ side of Workpiece)
|
||||||
|
o<probe_x_plus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<p3x> = #<_value>
|
||||||
|
|
||||||
|
(value returned safety check, aborts if no value returned)
|
||||||
|
o130 if [#<probe_mode> EQ 1 AND #<_value_returned> NE 1]
|
||||||
|
(DEBUG, Missing X Sub returned edge parameter, aborting)
|
||||||
|
M50 P1
|
||||||
|
o<probe_corner_x_plus_edge_angle> return
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
#<edge_delta> = [#<p3x> - #<p2x>]
|
||||||
|
|
||||||
|
#<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}])
|
||||||
|
|
||||||
|
#<c1xr> = [#<z1x> + [#<p2x> - #<z1x>] * COS[-#<edge_angle>] - [#<p2y> - #<z1y>] * SIN[-#<edge_angle>]]
|
||||||
|
|
||||||
|
#<c1yr> = [#<z1y> + [#<p1x> - #<z1x>] * SIN[-#<edge_angle>] + [#<p1y> - #<z1y>] * COS[-#<edge_angle>]]
|
||||||
|
|
||||||
|
#<c1x> = [#<z1x> + [#<c1xr> - #<z1x>] * COS[#<edge_angle>] - [#<c1yr> - #<z1y>] * SIN[#<edge_angle>]]
|
||||||
|
|
||||||
|
#<c1y> = [#<z1y> + [#<c1xr> - #<z1x>] * SIN[#<edge_angle>] + [#<c1yr> - #<z1y>] * COS[#<edge_angle>]]
|
||||||
|
|
||||||
|
(Probe Completion Move to Z Clearance Plane, and XY Zero)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<c1x>] Y[#<c1y>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO,Rotation and probe position measuring only)
|
||||||
|
o140 if [#<probe_mode> EQ 0 AND #<wco_rotation> EQ 0]
|
||||||
|
(Record Zero in selected axes and WCO)
|
||||||
|
G10 L2 P#5220 X[#<c1x> + #<workspace_x>] Y[#<c1y> + #<workspace_y>]
|
||||||
|
o140 endif
|
||||||
|
|
||||||
|
(probe mode rules for WCO,Rotation and probe position measuring only)
|
||||||
|
o150 if [#<probe_mode> EQ 0 AND #<wco_rotation> EQ 1]
|
||||||
|
(Record Zero in selected axes and WCO)
|
||||||
|
G10 L2 P#5220 X[#<c1x> + #<workspace_x>] Y[#<c1y> + #<workspace_y>] R[#<edge_angle>]
|
||||||
|
o150 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_corner_x_plus_edge_angle> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
173
subroutines/probe_corner_y_minus_edge_angle.ngc
Normal file
173
subroutines/probe_corner_y_minus_edge_angle.ngc
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe Corner Y minus Edge Angle for x,y,z 0,0,0 position)
|
||||||
|
(Start probe position is over back right 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_corner_y_minus_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_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_corner_y_minus_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>]
|
||||||
|
|
||||||
|
#<z1x> = #5420
|
||||||
|
|
||||||
|
#<z1y> = #5421
|
||||||
|
|
||||||
|
(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)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
#<p1y> = #5421
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<p1x> = #<_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_corner_y_minus_edge_angle> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, up to Z clearance plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, Traverse Workpiece at Z Clearance plane)
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X-[#<step_off_width>] Y[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move,to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
#<p2x> = #5420
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus" to Probe y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<p2y> = #<_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_corner_y_minus_edge_angle> return
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
(edge width move to edge second probing point)
|
||||||
|
G91
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 X-[#<edge_width>]
|
||||||
|
|
||||||
|
#<p3x> = #5420
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus" to Probe y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<p3y> = #<_value>
|
||||||
|
|
||||||
|
(value returned safety check, aborts if no value returned)
|
||||||
|
o130 if [#<probe_mode> EQ 1 AND #<_value_returned> NE 1]
|
||||||
|
(DEBUG, Missing Y Sub returned edge parameter, aborting)
|
||||||
|
M50 P1
|
||||||
|
o<probe_corner_y_minus_edge_angle> return
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
#<edge_delta> = [#<p2y> - #<p3y>]
|
||||||
|
|
||||||
|
#<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}])
|
||||||
|
|
||||||
|
#<c1xr> = [#<z1x> + [#<p1x> - #<z1x>] * COS[-#<edge_angle>] - [#<p1y> - #<z1y>] * SIN[-#<edge_angle>]]
|
||||||
|
|
||||||
|
#<c1yr> = [#<z1y> + [#<p2x> - #<z1x>] * SIN[-#<edge_angle>] + [#<p2y> - #<z1y>] * COS[-#<edge_angle>]]
|
||||||
|
|
||||||
|
#<c1x> = [#<z1x> + [#<c1xr> - #<z1x>] * COS[#<edge_angle>] - [#<c1yr> - #<z1y>] * SIN[#<edge_angle>]]
|
||||||
|
|
||||||
|
#<c1y> = [#<z1y> + [#<c1xr> - #<z1x>] * SIN[#<edge_angle>] + [#<c1yr> - #<z1y>] * COS[#<edge_angle>]]
|
||||||
|
|
||||||
|
(Probe Completion Move to Z Clearance Plane, and XY Zero)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<c1x>] Y[#<c1y>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO,Rotation and probe position measuring only)
|
||||||
|
o140 if [#<probe_mode> EQ 0 AND #<wco_rotation> EQ 0]
|
||||||
|
(Record Zero in selected axes and WCO)
|
||||||
|
G10 L2 P#5220 X[#<c1x> + #<workspace_x>] Y[#<c1y> + #<workspace_y>]
|
||||||
|
o140 endif
|
||||||
|
|
||||||
|
(probe mode rules for WCO,Rotation and probe position measuring only)
|
||||||
|
o150 if [#<probe_mode> EQ 0 AND #<wco_rotation> EQ 1]
|
||||||
|
(Record Zero in selected axes and WCO)
|
||||||
|
G10 L2 P#5220 X[#<c1x> + #<workspace_x>] Y[#<c1y> + #<workspace_y>] R[#<edge_angle>]
|
||||||
|
o150 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_corner_y_minus_edge_angle> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
173
subroutines/probe_corner_y_plus_edge_angle.ngc
Normal file
173
subroutines/probe_corner_y_plus_edge_angle.ngc
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe Corner Y Plus Edge Angle for x,y,z 0,0,0 position)
|
||||||
|
(Start probe position is over front left 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_corner_y_plus_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_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_corner_y_plus_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>]
|
||||||
|
|
||||||
|
#<z1x> = #5420
|
||||||
|
|
||||||
|
#<z1y> = #5421
|
||||||
|
|
||||||
|
(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)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X-[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
#<p1y> = #5421
|
||||||
|
|
||||||
|
(Call sub "probe_x_plus" to Probe x+ side of Workpiece)
|
||||||
|
o<probe_x_plus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<p1x> = #<_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_corner_y_plus_edge_angle> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, up to Z clearance plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, Traverse Workpiece at Z Clearance plane)
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<step_off_width>] Y-[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move,to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
#<p2x> = #5420
|
||||||
|
|
||||||
|
(Call sub "probe_y_plus" to Probe y+ side of Workpiece)
|
||||||
|
o<probe_y_plus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<p2y> = #<_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_corner_y_plus_edge_angle> return
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
(edge width move to edge second probing point)
|
||||||
|
G91
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 X[#<edge_width>]
|
||||||
|
|
||||||
|
#<p3x> = #5420
|
||||||
|
|
||||||
|
(Call sub "probe_y_plus" to Probe y+ side of Workpiece)
|
||||||
|
o<probe_y_plus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<p3y> = #<_value>
|
||||||
|
|
||||||
|
(value returned safety check, aborts if no value returned)
|
||||||
|
o130 if [#<probe_mode> EQ 1 AND #<_value_returned> NE 1]
|
||||||
|
(DEBUG, Missing Y Sub returned edge parameter, aborting)
|
||||||
|
M50 P1
|
||||||
|
o<probe_corner_y_plus_edge_angle> return
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
#<edge_delta> = [#<p3y> - #<p2y>]
|
||||||
|
|
||||||
|
#<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}])
|
||||||
|
|
||||||
|
#<c1xr> = [#<z1x> + [#<p1x> - #<z1x>] * COS[-#<edge_angle>] - [#<p1y> - #<z1y>] * SIN[-#<edge_angle>]]
|
||||||
|
|
||||||
|
#<c1yr> = [#<z1y> + [#<p2x> - #<z1x>] * SIN[-#<edge_angle>] + [#<p2y> - #<z1y>] * COS[-#<edge_angle>]]
|
||||||
|
|
||||||
|
#<c1x> = [#<z1x> + [#<c1xr> - #<z1x>] * COS[#<edge_angle>] - [#<c1yr> - #<z1y>] * SIN[#<edge_angle>]]
|
||||||
|
|
||||||
|
#<c1y> = [#<z1y> + [#<c1xr> - #<z1x>] * SIN[#<edge_angle>] + [#<c1yr> - #<z1y>] * COS[#<edge_angle>]]
|
||||||
|
|
||||||
|
(Probe Completion Move to Z Clearance Plane, and XY Zero)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<c1x>] Y[#<c1y>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO,Rotation and probe position measuring only)
|
||||||
|
o140 if [#<probe_mode> EQ 0 AND #<wco_rotation> EQ 0]
|
||||||
|
(Record Zero in selected axes and WCO)
|
||||||
|
G10 L2 P#5220 X[#<c1x> + #<workspace_x>] Y[#<c1y> + #<workspace_y>]
|
||||||
|
o140 endif
|
||||||
|
|
||||||
|
(probe mode rules for WCO,Rotation and probe position measuring only)
|
||||||
|
o150 if [#<probe_mode> EQ 0 AND #<wco_rotation> EQ 1]
|
||||||
|
(Record Zero in selected axes and WCO)
|
||||||
|
G10 L2 P#5220 X[#<c1x> + #<workspace_x>] Y[#<c1y> + #<workspace_y>] R[#<edge_angle>]
|
||||||
|
o150 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_corner_y_plus_edge_angle> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
123
subroutines/probe_front_left_inside_corner.ngc
Normal file
123
subroutines/probe_front_left_inside_corner.ngc
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe front left inside corner for x,y,z 0,0,0 position)
|
||||||
|
(Start probe position is over front left 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_front_left_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)
|
||||||
|
#<edge_width> = #3024 (=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_front_left_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, Traverse Workpiece Top at Z Clearance Height plane)
|
||||||
|
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_minus" to Probe x- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_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_front_left_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_minus" to Probe y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_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_front_left_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_minus_zero_edge>] Y[#<y_minus_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_minus_zero_edge> + #<workspace_x>]
|
||||||
|
G10 L2 P#5220 Y[#<y_minus_zero_edge> + #<workspace_y>]
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_front_left_inside_corner> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
119
subroutines/probe_front_left_top_corner.ngc
Normal file
119
subroutines/probe_front_left_top_corner.ngc
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.5)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe front left top corner for x,y,z 0,0,0 position)
|
||||||
|
(Start probe position is over front left 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_front_left_top_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)
|
||||||
|
#<edge_width> = #3024 (=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_front_left_top_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)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X-[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(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_front_left_top_corner> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, up to Z clearance plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, Traverse Workpiece at Z Clearance plane)
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<step_off_width>] 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> = #<_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_front_left_top_corner> return
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
(Probe Completion Move to Z Clearance Plane, and XY 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_front_left_top_corner> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
123
subroutines/probe_front_right_inside_corner.ngc
Normal file
123
subroutines/probe_front_right_inside_corner.ngc
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe front right inside corner for x,y,z 0,0,0 position)
|
||||||
|
(Start probe position is over front 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_front_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)
|
||||||
|
#<edge_width> = #3024 (=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_front_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_front_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_minus" to Probe y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_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_front_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_minus_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_minus_zero_edge> + #<workspace_y>]
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_front_right_inside_corner> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
120
subroutines/probe_front_right_top_corner.ngc
Normal file
120
subroutines/probe_front_right_top_corner.ngc
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe front right top corner for x,y,z 0,0,0 position)
|
||||||
|
(Start probe position is over front right 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_front_right_top_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)
|
||||||
|
#<edge_width> = #3024 (=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_front_right_top_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)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_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_front_right_top_corner> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, up to Z clearance plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, Traverse Workpiece Top at Z Clearance Height plane)
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X-[#<step_off_width>] 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> = #<_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_front_right_top_corner> return
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
(Probe Completion Move to Z Clearance Plane, and XY Zero)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_minus_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_minus_zero_edge> + #<workspace_x>]
|
||||||
|
G10 L2 P#5220 Y[#<y_plus_zero_edge> + #<workspace_y>]
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_front_right_top_corner> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
92
subroutines/probe_front_top_side.ngc
Normal file
92
subroutines/probe_front_top_side.ngc
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.5)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe front top side for y,z 0,0 position)
|
||||||
|
(Start probe position is over front edge of stock)
|
||||||
|
(inside the step off width distance and within max z distance)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<Probe_front_top_side> 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)
|
||||||
|
#<calibration_offset> = #3032 (=0)
|
||||||
|
|
||||||
|
(Cancel G92 offsets)
|
||||||
|
G92.1
|
||||||
|
|
||||||
|
(Cancel Feedrate Override)
|
||||||
|
M50 P0
|
||||||
|
|
||||||
|
#<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_front_top_side> 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 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> = #<_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_front_top_side> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(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 Y[#<y_plus_zero_edge>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO or probe position measuring only)
|
||||||
|
o120 if [#<probe_mode> EQ 0]
|
||||||
|
(Record Zero in selected axes and WCO)
|
||||||
|
G10 L2 P#5220 Y[#<y_plus_zero_edge> + #<workspace_y>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<Probe_front_top_side> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
92
subroutines/probe_left_top_side.ngc
Normal file
92
subroutines/probe_left_top_side.ngc
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.4)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe left top side for x,z 0,0 position)
|
||||||
|
(Start probe position is over left side edge of stock)
|
||||||
|
(inside the step off width distance and within max z distance)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<Probe_left_top_side> 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)
|
||||||
|
#<calibration_offset> = #3032 (=0)
|
||||||
|
|
||||||
|
(Cancel G92 offsets)
|
||||||
|
G92.1
|
||||||
|
|
||||||
|
(Cancel Feedrate Override)
|
||||||
|
M50 P0
|
||||||
|
|
||||||
|
#<workspace_x> = #[5201 + [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_left_top_side> 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)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X-[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(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_left_top_side> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(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_plus_zero_edge>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO or probe position measuring only)
|
||||||
|
o120 if [#<probe_mode> EQ 0]
|
||||||
|
(Record Zero in selected axes and WCO)
|
||||||
|
G10 L2 P#5220 X[#<x_plus_zero_edge> + #<workspace_x>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<Probe_left_top_side> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
185
subroutines/probe_rect_boss.ngc
Normal file
185
subroutines/probe_rect_boss.ngc
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe Boss in X and Y Axes, find center and z 0 position)
|
||||||
|
(Start probe position is over center of stock in X and Y axis)
|
||||||
|
(within max z distance, ensure all settings have been)
|
||||||
|
(set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_rect_boss> 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)
|
||||||
|
#<x_hint_boss_pocket> = #3026 (=0)
|
||||||
|
#<y_hint_boss_pocket> = #3027 (=0)
|
||||||
|
#<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]]
|
||||||
|
#<workspace_z> = #[5203 + [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_rect_boss> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(Probe Radius)
|
||||||
|
#<probe_radius> = [#<probe_diameter> / 2]
|
||||||
|
|
||||||
|
(Probe Centerline Offset)
|
||||||
|
#<probe_center_offset> = [#<probe_radius> - #<calibration_offset>]
|
||||||
|
|
||||||
|
(remove probe tip diam and cal offset from probed width calculations)
|
||||||
|
#<probe_diameter_offset> = [#<probe_diameter> - [#<calibration_offset> * 2]]
|
||||||
|
|
||||||
|
#<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, X hint/2 + Step Off Width)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X-[[#<x_hint_boss_pocket>/2] + #<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(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_probed> = #5061
|
||||||
|
|
||||||
|
(first side Probe Completion Move to Z Clearance Plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Positioning move in X, X Hint + Step Off Width at Rapid Speed)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_hint_boss_pocket> + #<step_off_width> + #<xy_clearance>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
|
||||||
|
(probed center calulation)
|
||||||
|
#<x_center_probed> = [[#<x_minus_probed> + #<x_plus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate X Width Probed)
|
||||||
|
#<raw_width> = [#<x_minus_probed> - #<x_plus_probed>]
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<x_probed_width> = [#<raw_width> - #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1001 = #<x_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_probed_width"}.setValue{#1001}])
|
||||||
|
|
||||||
|
#1002 = #<x_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1002}])
|
||||||
|
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, Y hint/2 + Step Off Width)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y-[[#<y_hint_boss_pocket>/2] + #<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_probed> = #5062
|
||||||
|
|
||||||
|
(first side Probe Completion Move to Z Clearance Plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Positioning move in Y, Y Hint + Step Off Width at Rapid Speed)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<y_hint_boss_pocket> + #<step_off_width> + #<xy_clearance>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus" to Probe y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
|
||||||
|
(probed center calulation)
|
||||||
|
#<y_center_probed> = [[#<y_minus_probed> + #<y_plus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate Y Width Probed)
|
||||||
|
#<raw_width> = [#<y_minus_probed> - #<y_plus_probed>]
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<y_probed_width> = [#<raw_width> - #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1003 = #<y_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_probed_width"}.setValue{#1003}])
|
||||||
|
|
||||||
|
#1004 = #<y_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1004}])
|
||||||
|
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>] Y[#<y_center_probed>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO or probe position measuring only)
|
||||||
|
o110 if [#<probe_mode> EQ 0]
|
||||||
|
(Record XY Zero in selected WCO)
|
||||||
|
G10 L2 P#5220 X[#<x_center_probed> + #<workspace_x>] Y[#<y_center_probed> + #<workspace_y>]
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_rect_boss> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
139
subroutines/probe_rect_pocket.ngc
Normal file
139
subroutines/probe_rect_pocket.ngc
Normal file
@@ -0,0 +1,139 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe rect pocket center measure x and widths, find xy center position)
|
||||||
|
(Start probe position is over left side edge of pocket wall)
|
||||||
|
(inside the step off width distance and within max z distance)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_rect_pocket> 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)
|
||||||
|
#<x_hint_boss_pocket> = #3026 (=0)
|
||||||
|
#<y_hint_boss_pocket> = #3027 (=0)
|
||||||
|
#<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_rect_pocket> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(remove probe tip diam and cal offset from probed width calculations)
|
||||||
|
#<probe_diameter_offset> = [#<probe_diameter> - [#<calibration_offset> * 2]]
|
||||||
|
|
||||||
|
#<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)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
|
||||||
|
(Call sub "probe_x_plus" to Probe x+ side of Workpiece)
|
||||||
|
o<probe_x_plus> call [#3014][#3015][#3016][3017][#3018 + #3026][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_plus_probed> = #5061
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<x_center_probed> = [[#<x_plus_probed> + #<x_minus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate X Width Probed)
|
||||||
|
#<raw_width> = [#<x_plus_probed> - #<x_minus_probed>]
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<x_probed_width> = [#<raw_width> + #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1001 = #<x_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_probed_width"}.setValue{#1001}])
|
||||||
|
|
||||||
|
#1002 = #<x_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1002}])
|
||||||
|
|
||||||
|
(Probe Completion Move to Z Clearance Plane, and X Zero, Y Zero)
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>]
|
||||||
|
|
||||||
|
(Call sub "probe_y_plus" to Probe Y+ side of Workpiece)
|
||||||
|
o<probe_y_plus> call [#3014][#3015][#3016][3017][#3018 + #3027 / 2][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_plus_probed> = #5062
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus" to Probe Y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][3017][#3018 + #3027][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<y_center_probed> = [[#<y_plus_probed> + #<y_minus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate Y Width Probed)
|
||||||
|
#<raw_width> = [#<y_plus_probed> - #<y_minus_probed>]
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<y_probed_width> = [#<raw_width> + #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1003 = #<y_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_probed_width"}.setValue{#1003}])
|
||||||
|
|
||||||
|
#1004 = #<y_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1004}])
|
||||||
|
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<y_center_probed>]
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO or probe position measuring only)
|
||||||
|
o110 if [#<probe_mode> EQ 0]
|
||||||
|
(Record X Zero in selected WCO)
|
||||||
|
G10 L2 P#5220 X[#<x_center_probed> + #<workspace_x>] Y[#<y_center_probed> + #<workspace_y>]
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_rect_pocket> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
121
subroutines/probe_rect_pocket_center_start.ngc
Normal file
121
subroutines/probe_rect_pocket_center_start.ngc
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe rect pocket center measure x and y widths, find xy center position)
|
||||||
|
(Start probe position is rough center of pocket probe tip below top edge)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_rect_pocket_center_start> 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)
|
||||||
|
#<x_hint_boss_pocket> = #3026 (=0)
|
||||||
|
#<y_hint_boss_pocket> = #3027 (=0)
|
||||||
|
#<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_rect_pocket_center_start> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(remove probe tip diam and cal offset from probed width calculations)
|
||||||
|
#<probe_diameter_offset> = [#<probe_diameter> - [#<calibration_offset> * 2]]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][3017][#3018 + #3026 / 2][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
|
||||||
|
(Call sub "probe_x_plus" to Probe x+ side of Workpiece)
|
||||||
|
o<probe_x_plus> call [#3014][#3015][#3016][3017][#3018 + #3026][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_plus_probed> = #5061
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<x_center_probed> = [[#<x_plus_probed> + #<x_minus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate X Width Probed)
|
||||||
|
#<raw_width> = [#<x_plus_probed> - #<x_minus_probed>]
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<x_probed_width> = [#<raw_width> + #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1001 = #<x_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_probed_width"}.setValue{#1001}])
|
||||||
|
|
||||||
|
#1002 = #<x_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1002}])
|
||||||
|
|
||||||
|
(Probe Completion Move to X Zero, Y Zero)
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>]
|
||||||
|
|
||||||
|
(Call sub "probe_y_plus" to Probe Y+ side of Workpiece)
|
||||||
|
o<probe_y_plus> call [#3014][#3015][#3016][3017][#3018 + #3027 / 2][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_plus_probed> = #5062
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus" to Probe Y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][3017][#3018 + #3027][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<y_center_probed> = [[#<y_plus_probed> + #<y_minus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate Y Width Probed)
|
||||||
|
#<raw_width> = [#<y_plus_probed> - #<y_minus_probed>]
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<y_probed_width> = [#<raw_width> + #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1003 = #<y_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_probed_width"}.setValue{#1003}])
|
||||||
|
|
||||||
|
#1004 = #<y_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1004}])
|
||||||
|
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<y_center_probed>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO or probe position measuring only)
|
||||||
|
o110 if [#<probe_mode> EQ 0]
|
||||||
|
(Record X and Y Zero in selected WCO)
|
||||||
|
G10 L2 P#5220 X[#<x_center_probed> + #<workspace_x>] Y[#<y_center_probed> + #<workspace_y>]
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_rect_pocket_center_start> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
129
subroutines/probe_ridge_x.ngc
Normal file
129
subroutines/probe_ridge_x.ngc
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe Ridge in X Axis to find center and z 0 position)
|
||||||
|
(Start probe position is over center of stock in the X axis)
|
||||||
|
(within max z distance, ensure all settings have been)
|
||||||
|
(set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_ridge_x> 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)
|
||||||
|
#<x_hint_ridge_valley> = #3028 (=0)
|
||||||
|
#<y_hint_ridge_valley> = #3029 (=0)
|
||||||
|
#<probe_mode> = #3030 (=0)
|
||||||
|
#<calibration_offset> = #3032 (=0)
|
||||||
|
|
||||||
|
(Cancel G92 offsets)
|
||||||
|
G92.1
|
||||||
|
|
||||||
|
(Cancel Feedrate Override)
|
||||||
|
M50 P0
|
||||||
|
|
||||||
|
#<workspace_x> = #[5201 + [20 * #5220]]
|
||||||
|
#<workspace_z> = #[5203 + [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_ridge_x> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(Probe Radius)
|
||||||
|
#<probe_radius> = [#<probe_diameter> / 2]
|
||||||
|
|
||||||
|
(Probe Centerline Offset)
|
||||||
|
#<probe_center_offset> = [#<probe_radius> - #<calibration_offset>]
|
||||||
|
|
||||||
|
(remove probe tip diam and cal offset from probed width calculations)
|
||||||
|
#<probe_diameter_offset> = [#<probe_diameter> - [#<calibration_offset> * 2]]
|
||||||
|
|
||||||
|
#<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, X hint/2 + Step Off Width)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X-[[#<x_hint_ridge_valley>/2] + #<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(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_probed> = #5061
|
||||||
|
|
||||||
|
(first side Probe Completion Move to Z Clearance Plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Positioning move in X, X Hint + Step Off Width at Rapid Speed)
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_hint_ridge_valley> + #<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
|
||||||
|
(probed center calulation)
|
||||||
|
#<x_center_probed> = [[#<x_plus_probed> + #<x_minus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate X Width Probed)
|
||||||
|
#<raw_width> = [#<x_minus_probed> - #<x_plus_probed>]
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<x_probed_width> = [#<raw_width> - #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1001 = #<x_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_probed_width"}.setValue{#1001}])
|
||||||
|
|
||||||
|
#1002 = #<x_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1002}])
|
||||||
|
|
||||||
|
(Probe Completion Move to Z Clearance Plane, and X Zero)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO or probe position measuring only)
|
||||||
|
o110 if [#<probe_mode> EQ 0]
|
||||||
|
(Record X Zero in selected WCO)
|
||||||
|
G10 L2 P#5220 X[#<x_center_probed> + #<workspace_x>]
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_ridge_x> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
129
subroutines/probe_ridge_y.ngc
Normal file
129
subroutines/probe_ridge_y.ngc
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe Ridge in Y Axis to find center and z 0 position)
|
||||||
|
(Start probe position is over center of stock in the Y axis)
|
||||||
|
(within max z distance, ensure all settings have been)
|
||||||
|
(set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_ridge_y> sub
|
||||||
|
|
||||||
|
(uses NGCGUI style arg spec)
|
||||||
|
#<probe_tool_number> = #3014
|
||||||
|
#<probe_slow_fr> = #3015
|
||||||
|
#<probe_fast_fr> = #3016
|
||||||
|
#<probe_traverse_fr> = #3017
|
||||||
|
#<max_xy_distance> = #3018
|
||||||
|
#<xy_clearance> = #3019
|
||||||
|
#<max_z_distance> = #3020
|
||||||
|
#<z_clearance> = #3021
|
||||||
|
#<extra_probe_depth> = #3022
|
||||||
|
#<step_off_width> = #3023
|
||||||
|
#<edge_width> = #3024
|
||||||
|
#<x_hint_ridge_valley> = #3028
|
||||||
|
#<y_hint_ridge_valley> = #3029
|
||||||
|
#<probe_mode> = #3030
|
||||||
|
#<calibration_offset> = #3032
|
||||||
|
|
||||||
|
(Cancel G92 offsets)
|
||||||
|
G92.1
|
||||||
|
|
||||||
|
(Cancel Feedrate Override)
|
||||||
|
M50 P0
|
||||||
|
|
||||||
|
#<workspace_y> = #[5202 + [20 * #5220]]
|
||||||
|
#<workspace_z> = #[5203 + [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_ridge_y> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(Probe Radius)
|
||||||
|
#<probe_radius> = [#<probe_diameter> / 2]
|
||||||
|
|
||||||
|
(Probe Centerline Offset)
|
||||||
|
#<probe_center_offset> = [#<probe_radius> - #<calibration_offset>]
|
||||||
|
|
||||||
|
(remove probe tip diam and cal offset from probed width calculations)
|
||||||
|
#<probe_diameter_offset> = [#<probe_diameter> - [#<calibration_offset> * 2]]
|
||||||
|
|
||||||
|
#<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 Y Positioning Move, Y hint/2 + Step Off Width)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y-[[#<y_hint_ridge_valley>/2] + #<step_off_width>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
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_probed> = #5062
|
||||||
|
|
||||||
|
(first side Probe Completion Move to Z Clearance Plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Positioning move in Y, Y Hint + Step Off Width at Rapid Speed)
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<y_hint_ridge_valley> + #<step_off_width>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus" to Probe y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
|
||||||
|
(probed center calulation)
|
||||||
|
#<y_center_probed> = [[#<y_plus_probed> + #<y_minus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate Y Width Probed)
|
||||||
|
#<raw_width> = [#<y_minus_probed> - #<y_plus_probed>]
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<y_probed_width> = [#<raw_width> - #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1003 = #<y_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_probed_width"}.setValue{#1003}])
|
||||||
|
|
||||||
|
#1004 = #<y_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1004}])
|
||||||
|
|
||||||
|
(Probe Completion Move to Z Clearance Plane, and X Zero)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<y_center_probed>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO or probe position measuring only)
|
||||||
|
o110 if [#<probe_mode> EQ 0]
|
||||||
|
(Record Y Zero in selected WCO)
|
||||||
|
G10 L2 P#5220 Y[#<y_center_probed> + #<workspace_y>]
|
||||||
|
(Probe Completion Move to Z Clearance Plane, and X Zero, Y Zero)
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_ridge_y> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
91
subroutines/probe_right_top_side.ngc
Normal file
91
subroutines/probe_right_top_side.ngc
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.4)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe right top side for x,z 0,0 position)
|
||||||
|
(Start probe position is over right side edge of stock)
|
||||||
|
(inside the step off width distance and within max z distance)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<Probe_right_top_side> 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]]
|
||||||
|
|
||||||
|
(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_right_top_side> 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)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_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_right_top_side> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(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_minus_zero_edge>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO or probe position measuring only)
|
||||||
|
o120 if [#<probe_mode> EQ 0]
|
||||||
|
(Record Zero in selected axes and WCO)
|
||||||
|
G10 L2 P#5220 X[#<x_minus_zero_edge> + #<workspace_x>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<Probe_right_top_side> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
293
subroutines/probe_round_boss.ngc
Normal file
293
subroutines/probe_round_boss.ngc
Normal file
@@ -0,0 +1,293 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe Boss in X and Y Axes, find center, Diam and z 0 position)
|
||||||
|
(Start probe position is over center of stock in X and Y axis)
|
||||||
|
(within max z distance, ensure all settings have been)
|
||||||
|
(set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_round_boss> 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)
|
||||||
|
#<diameter_hint> = #3025 (=0)
|
||||||
|
#<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]]
|
||||||
|
#<workspace_z> = #[5203 + [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_round_boss> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(Probe Radius)
|
||||||
|
#<probe_radius> = [#<probe_diameter> / 2]
|
||||||
|
|
||||||
|
(Probe Centerline Offset)
|
||||||
|
#<probe_center_offset> = [#<probe_radius> - #<calibration_offset>]
|
||||||
|
|
||||||
|
(remove probe tip diam and cal offset from probed width calculations)
|
||||||
|
#<probe_diameter_offset> = [#<probe_diameter> - [#<calibration_offset> * 2]]
|
||||||
|
|
||||||
|
#<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, X hint/2 + Step Off Width)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X-[[#<diameter_hint> / 2] + [#<step_off_width>]]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(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_probed> = #5061
|
||||||
|
|
||||||
|
(first side Probe Completion Move to Z Clearance Plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Positioning move in X, X Hint + Step Off Width at Rapid Speed)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<diameter_hint> + #<step_off_width> + #<xy_clearance>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
|
||||||
|
(probed center calulation)
|
||||||
|
#<x_center_probed> = [[#<x_minus_probed> + #<x_plus_probed>] / 2]
|
||||||
|
|
||||||
|
#1002 = #<x_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1002}])
|
||||||
|
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, Y hint/2 + Step Off Width)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y-[[#<diameter_hint> / 2] + [#<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_probed> = #5062
|
||||||
|
|
||||||
|
(first side Probe Completion Move to Z Clearance Plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Positioning move in Y, Y Hint + Step Off Width at Rapid Speed)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<diameter_hint> + #<step_off_width> + #<xy_clearance>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus" to Probe y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
|
||||||
|
(probed center calulation)
|
||||||
|
#<y_center_probed> = [[#<y_minus_probed> + #<y_plus_probed>] / 2]
|
||||||
|
|
||||||
|
#1004 = #<y_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1004}])
|
||||||
|
|
||||||
|
(Move to z clearance plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Move to Y Center)
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<y_center_probed>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, X hint/2 + Step Off Width)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X-[[#<diameter_hint> / 2] + [#<step_off_width>]]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(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_probed> = #5061
|
||||||
|
|
||||||
|
(first side Probe Completion Move to Z Clearance Plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Positioning move in X, X Hint + Step Off Width at Rapid Speed)
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<diameter_hint> + #<step_off_width> + #<xy_clearance>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
|
||||||
|
(probed center calulation)
|
||||||
|
#<x_center_probed> = [[#<x_minus_probed> + #<x_plus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate X Width Probed)
|
||||||
|
o110 if [#<x_minus_probed> GT #<x_plus_probed>]
|
||||||
|
#<x_raw_width> = [#<x_minus_probed> - #<x_plus_probed>]
|
||||||
|
o110 else
|
||||||
|
#<x_raw_width> = [#<x_plus_probed> - #<x_minus_probed>]
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<x_probed_width> = [#<x_raw_width> - #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1001 = #<x_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_probed_width"}.setValue{#1001}])
|
||||||
|
|
||||||
|
#1002 = #<x_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1002}])
|
||||||
|
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, Y hint/2 + Step Off Width)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y-[[#<diameter_hint> / 2] + [#<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_probed> = #5062
|
||||||
|
|
||||||
|
(first side Probe Completion Move to Z Clearance Plane)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Positioning move in Y, Y Hint + Step Off Width at Rapid Speed)
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<diameter_hint> + #<step_off_width> + #<xy_clearance>]
|
||||||
|
|
||||||
|
(Probe Y Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus" to Probe y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
|
||||||
|
(probed center calulation)
|
||||||
|
#<y_center_probed> = [[#<y_minus_probed> + #<y_plus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate Y Width Probed)
|
||||||
|
o120 if [#<y_minus_probed> GT #<y_plus_probed>]
|
||||||
|
#<y_raw_width> = [#<y_minus_probed> - #<y_plus_probed>]
|
||||||
|
o120 else
|
||||||
|
#<y_raw_width> = [#<y_plus_probed> - #<y_minus_probed>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<y_probed_width> = [#<y_raw_width> - #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1003 = #<y_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_probed_width"}.setValue{#1003}])
|
||||||
|
|
||||||
|
#1004 = #<y_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1004}])
|
||||||
|
|
||||||
|
#<averaged_diam> = [[#<x_probed_width> + #<y_probed_width>] / 2]
|
||||||
|
|
||||||
|
#1010 = #<averaged_diam>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"averaged_diam"}.setValue{#1010}])
|
||||||
|
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>] Y[#<y_center_probed>]
|
||||||
|
|
||||||
|
#<x_zero> = [#<x_center_probed> + #<workspace_x>]
|
||||||
|
|
||||||
|
#<y_zero> = [#<y_center_probed> + #<workspace_y>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO or probe position measuring only)
|
||||||
|
o130 if [#<probe_mode> EQ 0]
|
||||||
|
(Record XY Zero in selected WCO)
|
||||||
|
G10 L2 P#5220 X[#<x_zero>] Y[#<y_zero>]
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_round_boss> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
184
subroutines/probe_round_pocket.ngc
Normal file
184
subroutines/probe_round_pocket.ngc
Normal file
@@ -0,0 +1,184 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe round pocket center measure x and y Diam, find xy center position)
|
||||||
|
(Start probe position is over left side edge of pocket wall)
|
||||||
|
(inside the step off width distance and within max z distance)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_round_pocket> 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)
|
||||||
|
#<diameter_hint> = #3025 (=0)
|
||||||
|
#<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_round_pocket> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(remove probe tip diam and cal offset from probed width calculations)
|
||||||
|
#<probe_diameter_offset> = [#<probe_diameter> - [#<calibration_offset> * 2]]
|
||||||
|
|
||||||
|
#<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)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x-)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
|
||||||
|
(Call sub "probe_x_plus" to Probe x+)
|
||||||
|
o<probe_x_plus> call [#3014][#3015][#3016][3017][#3018 + #3025][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_plus_probed> = #5061
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<x_center_probed> = [[#<x_plus_probed> + #<x_minus_probed>] / 2]
|
||||||
|
|
||||||
|
#1002 = #<x_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1002}])
|
||||||
|
|
||||||
|
(Probe Completion Move to Z Clearance Plane, and X Zero)
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>]
|
||||||
|
|
||||||
|
(Call sub "probe_y_plus" to Probe Y+)
|
||||||
|
o<probe_y_plus> call [#3014][#3015][#3016][3017][#3018 + #3025 / 2][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_plus_probed> = #5062
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus" to Probe Y-)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][3017][#3018 + #3025][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<y_center_probed> = [[#<y_plus_probed> + #<y_minus_probed>] / 2]
|
||||||
|
|
||||||
|
#1004 = #<y_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1004}])
|
||||||
|
|
||||||
|
(Probe Completion Move to Z Clearance Plane, Y Zero)
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<y_center_probed>]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x-)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][3017][#3018 + #3025 / 2][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
|
||||||
|
(Call sub "probe_x_plus" to Probe x+)
|
||||||
|
o<probe_x_plus> call [#3014][#3015][#3016][3017][#3018 + #3025][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_plus_probed> = #5061
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<x_center_probed> = [[#<x_plus_probed> + #<x_minus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate X Width Probed)
|
||||||
|
#<raw_width> = [#<x_plus_probed> - #<x_minus_probed>]
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<x_probed_width> = [#<raw_width> + #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1001 = #<x_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_probed_width"}.setValue{#1001}])
|
||||||
|
|
||||||
|
#1002 = #<x_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1002}])
|
||||||
|
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>]
|
||||||
|
|
||||||
|
(Call sub "probe_y_plus" to Probe Y+)
|
||||||
|
o<probe_y_plus> call [#3014][#3015][#3016][3017][#3018 + #3025 / 2][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_plus_probed> = #5062
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus" to Probe Y-)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][3017][#3018 + #3025][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<y_center_probed> = [[#<y_plus_probed> + #<y_minus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate Y Width Probed)
|
||||||
|
#<raw_width> = [#<y_plus_probed> - #<y_minus_probed>]
|
||||||
|
|
||||||
|
(Completed probed diameter calculations)
|
||||||
|
#<y_probed_width> = [#<raw_width> + #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1003 = #<y_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_probed_width"}.setValue{#1003}])
|
||||||
|
|
||||||
|
#1004 = #<y_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1004}])
|
||||||
|
|
||||||
|
#<averaged_diam> = [[#<x_probed_width> + #<y_probed_width>] / 2]
|
||||||
|
|
||||||
|
#1010 = #<averaged_diam>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"averaged_diam"}.setValue{#1010}])
|
||||||
|
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<y_center_probed>]
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO or probe position measuring only)
|
||||||
|
o110 if [#<probe_mode> EQ 0]
|
||||||
|
(Record Y Zero in selected WCO)
|
||||||
|
G10 L2 P#5220 X[#<x_center_probed> + #<workspace_x>]
|
||||||
|
G10 L2 P#5220 Y[#<y_center_probed> + #<workspace_y>]
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_round_pocket> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
167
subroutines/probe_round_pocket_center_start.ngc
Normal file
167
subroutines/probe_round_pocket_center_start.ngc
Normal file
@@ -0,0 +1,167 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe round pocket center start measure x and y Diam, find xy center position)
|
||||||
|
(Start probe position is rough center of pocket a safe distance below top edge)
|
||||||
|
(no z move will be initiated in this routine. end position is hole center)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_round_pocket_center_start> 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)
|
||||||
|
#<diameter_hint> = #3025 (=0)
|
||||||
|
#<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_round_pocket_center_start> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(remove probe tip diam and cal offset from probed width calculations)
|
||||||
|
#<probe_diameter_offset> = [#<probe_diameter> - [#<calibration_offset> * 2]]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x-)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][3017][#3018 + #3025 / 2][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
|
||||||
|
(Call sub "probe_x_plus" to Probe x+)
|
||||||
|
o<probe_x_plus> call [#3014][#3015][#3016][3017][#3018 + #3025][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_plus_probed> = #5061
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<x_center_probed> = [[#<x_plus_probed> + #<x_minus_probed>] / 2]
|
||||||
|
|
||||||
|
#1002 = #<x_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1002}])
|
||||||
|
|
||||||
|
(Probe Completion Move to X Zero)
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>]
|
||||||
|
|
||||||
|
(Call sub "probe_y_plus" to Probe Y+)
|
||||||
|
o<probe_y_plus> call [#3014][#3015][#3016][3017][#3018 + #3025 / 2][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_plus_probed> = #5062
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus" to Probe Y-)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][3017][#3018 + #3025][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<y_center_probed> = [[#<y_plus_probed> + #<y_minus_probed>] / 2]
|
||||||
|
|
||||||
|
#1004 = #<y_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1004}])
|
||||||
|
|
||||||
|
(Probe Completion Move to Y Zero)
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<y_center_probed>]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x-)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][3017][#3018 + #3025 / 2][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
|
||||||
|
(Call sub "probe_x_plus" to Probe x+)
|
||||||
|
o<probe_x_plus> call [#3014][#3015][#3016][3017][#3018 + #3025][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_plus_probed> = #5061
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<x_center_probed> = [[#<x_plus_probed> + #<x_minus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate X Width Probed)
|
||||||
|
#<raw_width> = [#<x_plus_probed> - #<x_minus_probed>]
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<x_probed_width> = [#<raw_width> + #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1001 = #<x_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_probed_width"}.setValue{#1001}])
|
||||||
|
|
||||||
|
#1002 = #<x_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1002}])
|
||||||
|
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>]
|
||||||
|
|
||||||
|
(Call sub "probe_y_plus" to Probe Y+)
|
||||||
|
o<probe_y_plus> call [#3014][#3015][#3016][3017][#3018 + #3025 / 2][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_plus_probed> = #5062
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus" to Probe Y-)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][3017][#3018 + #3025][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<y_center_probed> = [[#<y_plus_probed> + #<y_minus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate Y Width Probed)
|
||||||
|
#<raw_width> = [#<y_plus_probed> - #<y_minus_probed>]
|
||||||
|
|
||||||
|
(Completed probed diameter calculations)
|
||||||
|
#<y_probed_width> = [#<raw_width> + #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1003 = #<y_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_probed_width"}.setValue{#1003}])
|
||||||
|
|
||||||
|
#1004 = #<y_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1004}])
|
||||||
|
|
||||||
|
#<averaged_diam> = [[#<x_probed_width> + #<y_probed_width>] / 2]
|
||||||
|
|
||||||
|
#1010 = #<averaged_diam>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"averaged_diam"}.setValue{#1010}])
|
||||||
|
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<y_center_probed>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO or probe position measuring only)
|
||||||
|
o110 if [#<probe_mode> EQ 0]
|
||||||
|
(Record Y Zero in selected WCO)
|
||||||
|
G10 L2 P#5220 X[#<x_center_probed> + #<workspace_x>]
|
||||||
|
G10 L2 P#5220 Y[#<y_center_probed> + #<workspace_y>]
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_round_pocket_center_start> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
77
subroutines/probe_spindle_nose.ngc
Normal file
77
subroutines/probe_spindle_nose.ngc
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.0)
|
||||||
|
(date: 12/26/24)
|
||||||
|
|
||||||
|
(Probe Spindle Nose in Z Minus direction over tool setter and set Spindle Zero Distance)
|
||||||
|
(Start probe position is over toolsetter platter within max z distance)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_spindle_nose> sub
|
||||||
|
|
||||||
|
(uses NGCGUI style arg spec)
|
||||||
|
(number after "=" in comment is default value)
|
||||||
|
|
||||||
|
#<probe_fast_fr> = #3004 (=10.0)
|
||||||
|
#<probe_slow_fr> = #3005 (=0)
|
||||||
|
#<probe_traverse_fr> = #3006 (=50)
|
||||||
|
#<max_z_distance> = #3007 (=12.5)
|
||||||
|
#<retract_distance> = #3009 (=0.1000)
|
||||||
|
|
||||||
|
(Cancel G92 offsets)
|
||||||
|
G92.1
|
||||||
|
|
||||||
|
o100 if [2 EQ 2]
|
||||||
|
G49
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
#<offset_z> = #5422
|
||||||
|
|
||||||
|
(Initial Fast Z- Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.2 Z-[#<max_z_distance>]
|
||||||
|
#<z_minus_probed> = #5063
|
||||||
|
|
||||||
|
(Probe Error check, #5070 will be 0 if failed)
|
||||||
|
o110 if [#5070 EQ 0]
|
||||||
|
(back to start point and feed)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Z#<z>
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
(return from sub)
|
||||||
|
o<probe_spindle_nose> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Move up retract_distance height for slow probe)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Z[#<z_minus_probed> + #<retract_distance>]
|
||||||
|
|
||||||
|
(Slow Probe Rule, if Slow Probe FR is set to 0, Slow Probe is Bypassed)
|
||||||
|
o120 if [#<probe_slow_fr> GT 0]
|
||||||
|
(Initiate Slow Z- Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_slow_fr>]
|
||||||
|
G38.2 Z-[#<retract_distance> * 2]
|
||||||
|
#<z_minus_probed> = #5063
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Z[#<z_minus_probed> + #<retract_distance>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
(defines the edge as z_probed_position for DRO reporting)
|
||||||
|
#<z_minus_probed_position> = #<z_minus_probed>
|
||||||
|
|
||||||
|
(output to gui DRO "Z PROBED POSITION")
|
||||||
|
#1009 = #<z_minus_probed_position>
|
||||||
|
#3010 = [ABS[#<z_minus_probed_position> - #<offset_z>]]
|
||||||
|
#<max_z_travel_default> = [#3010 * 1.001]
|
||||||
|
#3007 = #<max_z_travel_default>
|
||||||
|
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"z_minus_probed_position"}.setValue{#1009}])
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"spindle_zero_height_3010"}.setValue{#3010}])
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"z_max_travel_3007"}.setValue{#3007}])
|
||||||
|
|
||||||
|
G53 G0 Z0.0
|
||||||
|
|
||||||
|
o<probe_spindle_nose> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
131
subroutines/probe_top_back_edge_angle.ngc
Normal file
131
subroutines/probe_top_back_edge_angle.ngc
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.4)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe back top edge angle for y,z 0,0 position and edge angle)
|
||||||
|
(Start probe position is over back 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_back_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_back_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_minus" to Probe y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_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_back_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_minus" to Probe y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_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_back_edge_angle> return
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
#<edge_delta> = [#<y_minus_zero_edge_start> - #<y_minus_zero_edge_end>]
|
||||||
|
|
||||||
|
#<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_minus_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_minus_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_minus_zero_edge_start> + #<workspace_y>] R[#<edge_angle>]
|
||||||
|
o140 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_top_back_edge_angle> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
131
subroutines/probe_top_front_edge_angle.ngc
Normal file
131
subroutines/probe_top_front_edge_angle.ngc
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
(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)
|
||||||
131
subroutines/probe_top_left_edge_angle.ngc
Normal file
131
subroutines/probe_top_left_edge_angle.ngc
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.4)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe top left edge angle for y,z 0,0 position and edge angle)
|
||||||
|
(Start probe position is over left 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_left_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_x> = #[5201 + [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_left_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>]
|
||||||
|
|
||||||
|
#<y_start_position> = #5421
|
||||||
|
|
||||||
|
(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)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X-[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(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_start> = #<_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_top_left_edge_angle> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(edge width move to edge second probing point)
|
||||||
|
G91
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Y-[#<edge_width>]
|
||||||
|
|
||||||
|
(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_end> = #<_value>
|
||||||
|
|
||||||
|
(value returned safety check, aborts if no value returned)
|
||||||
|
o120 if [#<probe_mode> EQ 1 AND #<_value_returned> NE 1]
|
||||||
|
(DEBUG, Missing X Sub returned edge parameter, aborting)
|
||||||
|
M50 P1
|
||||||
|
o<probe_top_left_edge_angle> return
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
#<edge_delta> = [#<x_plus_zero_edge_end> - #<x_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_plus_zero_edge_start>] Y[#<y_start_position>]
|
||||||
|
|
||||||
|
(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_plus_zero_edge_start> + #<workspace_x>] Y[#<y_start_position>]
|
||||||
|
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_plus_zero_edge_start> + #<workspace_x>] Y[#<y_start_position>] R[#<edge_angle>]
|
||||||
|
o140 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_top_left_edge_angle> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
131
subroutines/probe_top_right_edge_angle.ngc
Normal file
131
subroutines/probe_top_right_edge_angle.ngc
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.4)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe top right edge angle for y,z 0,0 position and edge angle)
|
||||||
|
(Start probe position is over right 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_right_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_x> = #[5201 + [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_right_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>]
|
||||||
|
|
||||||
|
#<y_start_position> = #5421
|
||||||
|
|
||||||
|
(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)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_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 X Sub returned edge parameter, aborting)
|
||||||
|
M50 P1
|
||||||
|
o<probe_top_right_edge_angle> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(edge width move to edge second probing point)
|
||||||
|
G91
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Y[#<edge_width>]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_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 X Sub returned edge parameter, aborting)
|
||||||
|
M50 P1
|
||||||
|
o<probe_top_right_edge_angle> return
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
#<edge_delta> = [#<x_minus_zero_edge_start> - #<x_minus_zero_edge_end>]
|
||||||
|
|
||||||
|
#<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_minus_zero_edge_start>] Y[#<y_start_position>]
|
||||||
|
|
||||||
|
(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_minus_zero_edge_start> + #<workspace_x>] Y[#<y_start_position>]
|
||||||
|
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_minus_zero_edge_start> + #<workspace_x>] Y[#<y_start_position>] R[#<edge_angle>]
|
||||||
|
o140 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_top_right_edge_angle> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
109
subroutines/probe_valley_x.ngc
Normal file
109
subroutines/probe_valley_x.ngc
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe valley in x, find Z0, X0 valley center position)
|
||||||
|
(Start probe position is over left side edge of valley wall)
|
||||||
|
(inside the step off width distance and within max z distance)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_valley_x> 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)
|
||||||
|
#<x_hint_ridge_valley> = #3028 (=0)
|
||||||
|
#<y_hint_ridge_valley> = #3029 (=0)
|
||||||
|
#<probe_mode> = #3030 (=0)
|
||||||
|
#<calibration_offset> = #3032 (=0)
|
||||||
|
|
||||||
|
(Cancel G92 offsets)
|
||||||
|
G92.1
|
||||||
|
|
||||||
|
(Cancel Feedrate Override)
|
||||||
|
M50 P0
|
||||||
|
|
||||||
|
#<workspace_x> = #[5201 + [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_valley_x> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(remove probe tip diam and cal offset from probed width calculations)
|
||||||
|
#<probe_diameter_offset> = [#<probe_diameter> - [#<calibration_offset> * 2]]
|
||||||
|
|
||||||
|
#<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)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<step_off_width>]
|
||||||
|
|
||||||
|
(Probe X Positioning Move, to Probing Depth)
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.3 Z-[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][#3017][#3018][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
|
||||||
|
(Call sub "probe_x_plus" to Probe x+ side of Workpiece)
|
||||||
|
o<probe_x_plus> call [#3014][#3015][#3016][3017][#3018 + #3028][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_plus_probed> = #5061
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<x_center_probed> = [[#<x_plus_probed> + #<x_minus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate X Width Probed)
|
||||||
|
#<raw_width> = [#<x_plus_probed> - #<x_minus_probed>]
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<x_probed_width> = [#<raw_width> + #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1001 = #<x_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_probed_width"}.setValue{#1001}])
|
||||||
|
|
||||||
|
#1002 = #<x_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1002}])
|
||||||
|
|
||||||
|
(Probe Completion Move to Z Clearance Plane, and X Zero)
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>]
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO or probe position measuring only)
|
||||||
|
o110 if [#<probe_mode> EQ 0]
|
||||||
|
(Record X Zero in selected WCO)
|
||||||
|
G10 L2 P#5220 X[#<x_center_probed> + #<workspace_x>]
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_valley_x> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
91
subroutines/probe_valley_x_center_start.ngc
Normal file
91
subroutines/probe_valley_x_center_start.ngc
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe valley in x, find X zero valley center position)
|
||||||
|
(Start probe position is centered between valley walls)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_valley_x_center_start> 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)
|
||||||
|
#<x_hint_ridge_valley> = #3028 (=0)
|
||||||
|
#<y_hint_ridge_valley> = #3029 (=0)
|
||||||
|
#<probe_mode> = #3030 (=0)
|
||||||
|
#<calibration_offset> = #3032 (=0)
|
||||||
|
|
||||||
|
(Cancel G92 offsets)
|
||||||
|
G92.1
|
||||||
|
|
||||||
|
(Cancel Feedrate Override)
|
||||||
|
M50 P0
|
||||||
|
|
||||||
|
#<workspace_x> = #[5201 + [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_valley_x_center_start> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(remove probe tip diam and cal offset from probed width calculations)
|
||||||
|
#<probe_diameter_offset> = [#<probe_diameter> - [#<calibration_offset> * 2]]
|
||||||
|
|
||||||
|
(Call sub "probe_x_minus" to Probe x- side of Workpiece)
|
||||||
|
o<probe_x_minus> call [#3014][#3015][#3016][3017][#3018 + #3028 / 2][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
|
||||||
|
(Call sub "probe_x_plus" to Probe x+ side of Workpiece)
|
||||||
|
o<probe_x_plus> call [#3014][#3015][#3016][3017][#3018 + #3028][#3019][#3032]
|
||||||
|
|
||||||
|
#<x_plus_probed> = #5061
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<x_center_probed> = [[#<x_plus_probed> + #<x_minus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate X Width Probed)
|
||||||
|
#<raw_width> = [#<x_plus_probed> - #<x_minus_probed>]
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<x_probed_width> = [#<raw_width> + #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1001 = #<x_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_probed_width"}.setValue{#1001}])
|
||||||
|
|
||||||
|
#1002 = #<x_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1002}])
|
||||||
|
|
||||||
|
(Probe Completion Move to X Zero)
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 X[#<x_center_probed>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO or probe position measuring only)
|
||||||
|
o110 if [#<probe_mode> EQ 0]
|
||||||
|
(Record X Zero in selected WCO)
|
||||||
|
G10 L2 P#5220 X[#<x_center_probed> + #<workspace_x>]
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_valley_x_center_start> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
107
subroutines/probe_valley_y.ngc
Normal file
107
subroutines/probe_valley_y.ngc
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe valley in Y, find Z0, Y0 valley center position)
|
||||||
|
(Start probe position is over back side edge of valley wall)
|
||||||
|
(inside the step off width distance and within max z distance)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_valley_y> 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)
|
||||||
|
#<x_hint_ridge_valley> = #3028 (=0)
|
||||||
|
#<y_hint_ridge_valley> = #3029 (=0)
|
||||||
|
#<probe_mode> = #3030 (=0)
|
||||||
|
#<calibration_offset> = #3032 (=0)
|
||||||
|
|
||||||
|
(Cancel G92 offsets)
|
||||||
|
G92.1
|
||||||
|
|
||||||
|
(Cancel Feedrate Override)
|
||||||
|
M50 P0
|
||||||
|
|
||||||
|
#<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_valley_y> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(remove probe tip diam and cal offset from probed width calculations)
|
||||||
|
#<probe_diameter_offset> = [#<probe_diameter> - [#<calibration_offset> * 2]]
|
||||||
|
|
||||||
|
#<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 Y Positioning Move, Step Off Width)
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y-[#<step_off_width>]
|
||||||
|
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_probed> = #5062
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus_sub" to Probe Y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][3017][#3018 + #3029][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<y_center_probed> = [[#<y_plus_probed> + #<y_minus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate Y Width Probed)
|
||||||
|
#<raw_width> = [#<y_plus_probed> - #<y_minus_probed>]
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<y_probed_width> = [#<raw_width> + #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1003 = #<y_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_probed_width"}.setValue{#1003}])
|
||||||
|
|
||||||
|
#1004 = #<y_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1004}])
|
||||||
|
|
||||||
|
(Probe Completion Move to Z Clearance Plane, and X Zero)
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<y_center_probed>]
|
||||||
|
G91
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Z[#<z_probe_stack>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO or probe position measuring only)
|
||||||
|
o110 if [#<probe_mode> EQ 0]
|
||||||
|
(Record X Zero in selected WCO)
|
||||||
|
G10 L2 P#5220 Y[#<y_center_probed> + #<workspace_y>]
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_valley_y> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
91
subroutines/probe_valley_y_center_start.ngc
Normal file
91
subroutines/probe_valley_y_center_start.ngc
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe valley in Y find Y0 valley center position)
|
||||||
|
(Start probe position is rough center between valley walls)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_valley_y_center_start> 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)
|
||||||
|
#<x_hint_ridge_valley> = #3028 (=0)
|
||||||
|
#<y_hint_ridge_valley> = #3029 (=0)
|
||||||
|
#<probe_mode> = #3030 (=0)
|
||||||
|
#<calibration_offset> = #3032 (=0)
|
||||||
|
|
||||||
|
(Cancel G92 offsets)
|
||||||
|
G92.1
|
||||||
|
|
||||||
|
(Cancel Feedrate Override)
|
||||||
|
M50 P0
|
||||||
|
|
||||||
|
#<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_valley_y_center_start> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(remove probe tip diam and cal offset from probed width calculations)
|
||||||
|
#<probe_diameter_offset> = [#<probe_diameter> - [#<calibration_offset> * 2]]
|
||||||
|
|
||||||
|
(Call sub "probe_y_plus" to Probe Y+ side of Workpiece)
|
||||||
|
o<probe_y_plus> call [#3014][#3015][#3016][3017][#3018 + #3029 / 2][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_plus_probed> = #5062
|
||||||
|
|
||||||
|
(Call sub "probe_y_minus_sub" to Probe Y- side of Workpiece)
|
||||||
|
o<probe_y_minus> call [#3014][#3015][#3016][3017][#3018 + #3029][#3019][#3032]
|
||||||
|
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
|
||||||
|
(probed center calculation)
|
||||||
|
#<y_center_probed> = [[#<y_plus_probed> + #<y_minus_probed>] / 2]
|
||||||
|
|
||||||
|
(calculate Y Width Probed)
|
||||||
|
#<raw_width> = [#<y_plus_probed> - #<y_minus_probed>]
|
||||||
|
|
||||||
|
(Completed probed width calculations)
|
||||||
|
#<y_probed_width> = [#<raw_width> + #<probe_diameter_offset>]
|
||||||
|
|
||||||
|
#1003 = #<y_probed_width>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_probed_width"}.setValue{#1003}])
|
||||||
|
|
||||||
|
#1004 = #<y_center_probed>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1004}])
|
||||||
|
|
||||||
|
(Probe Completion Move to Z Clearance Plane, and X Zero)
|
||||||
|
G90
|
||||||
|
F[#<probe_traverse_fr>]
|
||||||
|
G38.3 Y[#<y_center_probed>]
|
||||||
|
|
||||||
|
(probe mode rules for WCO or probe position measuring only)
|
||||||
|
o110 if [#<probe_mode> EQ 0]
|
||||||
|
(Record X Zero in selected WCO)
|
||||||
|
G10 L2 P#5220 Y[#<y_center_probed> + #<workspace_y>]
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_valley_y_center_start> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
85
subroutines/probe_x_minus.ngc
Normal file
85
subroutines/probe_x_minus.ngc
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe X Minus direction and set X 0 in current WCO)
|
||||||
|
(Start probe position to the right side edge of stock)
|
||||||
|
(inside the max xy distance with the probe tip below the stock top edge)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_x_minus> sub
|
||||||
|
|
||||||
|
(uses NGCGUI style arg spec)
|
||||||
|
(number after "=" in comment is default value)
|
||||||
|
#<probe_tool_number> = #1
|
||||||
|
#<probe_slow_fr> = #2
|
||||||
|
#<probe_fast_fr> = #3
|
||||||
|
#<probe_traverse_fr> = #4
|
||||||
|
#<max_xy_distance> = #5
|
||||||
|
#<xy_clearance> = #6
|
||||||
|
#<calibration_offset> = #7
|
||||||
|
|
||||||
|
(Cancel G92 offsets)
|
||||||
|
G92.1
|
||||||
|
|
||||||
|
(Probe Tool Safety Check)
|
||||||
|
o100 if [#5400 NE #<probe_tool_number>]
|
||||||
|
(DEBUG, Specified probe tool %d#<probe_tool_number> not in spindle, aborting)
|
||||||
|
o<probe_x_minus> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(Probe Radius)
|
||||||
|
#<probe_radius> = [#<probe_diameter> / 2]
|
||||||
|
|
||||||
|
(Probe Centerline Offset)
|
||||||
|
#<probe_center_offset> = [#<probe_radius> - #<calibration_offset>]
|
||||||
|
|
||||||
|
(Current X Position including offsets in current program units)
|
||||||
|
#<x> = #5420
|
||||||
|
|
||||||
|
(Initiate Fast X- Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.2 X-[#<max_xy_distance>]
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
|
||||||
|
(Probe Error check, #5070 will be 0 if failed)
|
||||||
|
o110 if [#5070 EQ 0]
|
||||||
|
(back to start point and feed)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] X#<x>
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
(return from sub)
|
||||||
|
o<probe_x_minus> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Move to xy_clearance distance for slow probe)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] X[#<x_minus_probed> + #<xy_clearance>]
|
||||||
|
|
||||||
|
(Slow Probe Rule, if Slow Probe FR is set to 0, Slow Probe is Bypassed)
|
||||||
|
o120 if [#<probe_slow_fr> GT 0]
|
||||||
|
(Initiate Slow X- Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_slow_fr>]
|
||||||
|
G38.2 X-[#<xy_clearance> * 2]
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] X[#<x_minus_probed> + #<xy_clearance>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
#<x_minus_zero_edge> = [#<x_minus_probed> - #<probe_center_offset>]
|
||||||
|
|
||||||
|
(defines the edge as x_probed_position for DRO reporting)
|
||||||
|
#<x_minus_probed_position> = #<x_minus_zero_edge>
|
||||||
|
|
||||||
|
(output to gui DRO "X PROBED POSITION")
|
||||||
|
#1005 = #<x_minus_probed_position>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_minus_probed_position"}.setValue{#1005}])
|
||||||
|
|
||||||
|
o<probe_x_minus> endsub [#<x_minus_zero_edge>]
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
105
subroutines/probe_x_minus_wco.ngc
Normal file
105
subroutines/probe_x_minus_wco.ngc
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe X Minus direction and set X 0 in current WCO)
|
||||||
|
(Start probe position to the right side edge of stock)
|
||||||
|
(inside the max xy distance with the probe tip below the stock top edge)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_x_minus_wco> 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]]
|
||||||
|
|
||||||
|
(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_x_minus_wco> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(Probe Radius)
|
||||||
|
#<probe_radius> = [#<probe_diameter> / 2]
|
||||||
|
|
||||||
|
(Probe Centerline Offset)
|
||||||
|
#<probe_center_offset> = [#<probe_radius> - #<calibration_offset>]
|
||||||
|
|
||||||
|
(Current X Position including offsets in current program units)
|
||||||
|
#<x> = #5420
|
||||||
|
|
||||||
|
(Initiate Fast X- Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.2 X-[#<max_xy_distance>]
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
|
||||||
|
(Probe Error check, #5070 will be 0 if failed)
|
||||||
|
o110 if [#5070 EQ 0]
|
||||||
|
(back to start point and feed)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] X#<x>
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
M50 P1
|
||||||
|
o<probe_x_minus_wco> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Move to xy_clearance distance for slow probe)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] X[#<x_minus_probed> + #<xy_clearance>]
|
||||||
|
|
||||||
|
(Slow Probe Rule, if Slow Probe FR is set to 0, Slow Probe is Bypassed)
|
||||||
|
o120 if [#<probe_slow_fr> GT 0]
|
||||||
|
(Initiate Slow X- Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_slow_fr>]
|
||||||
|
G38.2 X-[#<xy_clearance> * 2]
|
||||||
|
#<x_minus_probed> = #5061
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] X[#<x_minus_probed> + #<xy_clearance>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
#<x_minus_zero_edge> = [#<x_minus_probed> - #<probe_center_offset>]
|
||||||
|
|
||||||
|
(defines the edge as x_probed_position for DRO reporting)
|
||||||
|
#<x_minus_probed_position> = #<x_minus_zero_edge>
|
||||||
|
|
||||||
|
(output to gui DRO "X PROBED POSITION")
|
||||||
|
#1005 = #<x_minus_probed_position>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_minus_probed_position"}.setValue{#1005}])
|
||||||
|
|
||||||
|
(probe mode rule for WCO or probe position measuring only)
|
||||||
|
o130 if [#<probe_mode> EQ 0]
|
||||||
|
(Record X Zero in selected WCO)
|
||||||
|
G10 L2 P#5220 X[#<x_minus_zero_edge> + #<workspace_x>]
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_x_minus_wco> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
85
subroutines/probe_x_plus.ngc
Normal file
85
subroutines/probe_x_plus.ngc
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe X plus direction and set X 0 in current WCO)
|
||||||
|
(Start probe position to the left side edge of stock)
|
||||||
|
(inside the max xy distance with the probe tip below the stock top edge)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_x_plus> sub
|
||||||
|
|
||||||
|
(uses NGCGUI style arg spec)
|
||||||
|
(number after "=" in comment is default value)
|
||||||
|
#<probe_tool_number> = #1
|
||||||
|
#<probe_slow_fr> = #2
|
||||||
|
#<probe_fast_fr> = #3
|
||||||
|
#<probe_traverse_fr> = #4
|
||||||
|
#<max_xy_distance> = #5
|
||||||
|
#<xy_clearance> = #6
|
||||||
|
#<calibration_offset> = #7
|
||||||
|
|
||||||
|
(Cancel G92 offsets)
|
||||||
|
G92.1
|
||||||
|
|
||||||
|
(Probe Tool Safety Check)
|
||||||
|
o100 if [#5400 NE #<probe_tool_number>]
|
||||||
|
(DEBUG, Specified probe tool %d#<probe_tool_number> not in spindle, aborting)
|
||||||
|
o<probe_x_plus> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(Probe Radius)
|
||||||
|
#<probe_radius> = [#<probe_diameter> / 2]
|
||||||
|
|
||||||
|
(Probe Centerline Offset)
|
||||||
|
#<probe_center_offset> = [#<probe_radius> - #<calibration_offset>]
|
||||||
|
|
||||||
|
(Current X Position including offsets in current program units)
|
||||||
|
#<x> = #5420
|
||||||
|
|
||||||
|
(Initiate Fast X+ Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.2 X[#<max_xy_distance>]
|
||||||
|
#<x_plus_probed> = #5061
|
||||||
|
|
||||||
|
(Probe Error check, #5070 will be 0 if failed)
|
||||||
|
o110 if [#5070 EQ 0]
|
||||||
|
(back to start point and feed)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] X#<x>
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
(return from sub)
|
||||||
|
o<probe_x_plus> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Move to xy_clearance distance for slow probe)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] X[#<x_plus_probed> - #<xy_clearance>]
|
||||||
|
|
||||||
|
(Slow Probe Rule, if Slow Probe FR is set to 0, Slow Probe is Bypassed)
|
||||||
|
o120 if [#<probe_slow_fr> GT 0]
|
||||||
|
(Initiate Slow X+ Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_slow_fr>]
|
||||||
|
G38.2 X[#<xy_clearance> * 2]
|
||||||
|
#<x_plus_probed> = #5061
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] X[#<x_plus_probed> - #<xy_clearance>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
#<x_plus_zero_edge> = [#<x_plus_probed> + #<probe_center_offset>]
|
||||||
|
|
||||||
|
(defines the edge as x_probed_position for DRO reporting)
|
||||||
|
#<x_plus_probed_position> = #<x_plus_zero_edge>
|
||||||
|
|
||||||
|
(output to gui DRO "X PROBED POSITION")
|
||||||
|
#1006 = #<x_plus_probed_position>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_plus_probed_position"}.setValue{#1006}])
|
||||||
|
|
||||||
|
o<probe_x_plus> endsub [#<x_plus_zero_edge>]
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
105
subroutines/probe_x_plus_wco.ngc
Normal file
105
subroutines/probe_x_plus_wco.ngc
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe X plus direction and set X 0 in current WCO)
|
||||||
|
(Start probe position to the left side edge of stock)
|
||||||
|
(inside the max xy distance with the probe tip below the stock top edge)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_x_plus_wco> 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]]
|
||||||
|
|
||||||
|
(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_x_plus_wco> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(Probe Radius)
|
||||||
|
#<probe_radius> = [#<probe_diameter> / 2]
|
||||||
|
|
||||||
|
(Probe Centerline Offset)
|
||||||
|
#<probe_center_offset> = [#<probe_radius> - #<calibration_offset>]
|
||||||
|
|
||||||
|
(Current X Position including offsets in current program units)
|
||||||
|
#<x> = #5420
|
||||||
|
|
||||||
|
(Initiate Fast X+ Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.2 X[#<max_xy_distance>]
|
||||||
|
#<x_plus_probed> = #5061
|
||||||
|
|
||||||
|
(Probe Error check, #5070 will be 0 if failed)
|
||||||
|
o110 if [#5070 EQ 0]
|
||||||
|
(back to start point and feed)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] X#<x>
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
M50 P1
|
||||||
|
o<probe_x_plus_wco> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Move to xy_clearance distance for slow probe)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] X[#<x_plus_probed> - #<xy_clearance>]
|
||||||
|
|
||||||
|
(Slow Probe Rule, if Slow Probe FR is set to 0, Slow Probe is Bypassed)
|
||||||
|
o120 if [#<probe_slow_fr> GT 0]
|
||||||
|
(Initiate Slow X+ Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_slow_fr>]
|
||||||
|
G38.2 X[#<xy_clearance> * 2]
|
||||||
|
#<x_plus_probed> = #5061
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] X[#<x_plus_probed> - #<xy_clearance>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
#<x_plus_zero_edge> = [#<x_plus_probed> + #<probe_center_offset>]
|
||||||
|
|
||||||
|
(defines the edge as x_probed_position for DRO reporting)
|
||||||
|
#<x_plus_probed_position> = #<x_plus_zero_edge>
|
||||||
|
|
||||||
|
(output to gui DRO "X PROBED POSITION")
|
||||||
|
#1006 = #<x_plus_probed_position>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_plus_probed_position"}.setValue{#1006}])
|
||||||
|
|
||||||
|
(probe mode rule for WCO or probe position measuring only)
|
||||||
|
o130 if [#<probe_mode> EQ 0]
|
||||||
|
(Record X Zero in selected WCO)
|
||||||
|
G10 L2 P#5220 X[#<x_plus_zero_edge> + #<workspace_x>]
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_x_plus_wco> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
85
subroutines/probe_y_minus.ngc
Normal file
85
subroutines/probe_y_minus.ngc
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe Y Minus direction to locate edge, end at clearance distance)
|
||||||
|
(Start probe position to the back side edge of stock)
|
||||||
|
(inside the max xy distance with the probe tip below the stock top edge)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_y_minus> sub
|
||||||
|
|
||||||
|
(uses NGCGUI style arg spec)
|
||||||
|
(number after "=" in comment is default value)
|
||||||
|
#<probe_tool_number> = #1
|
||||||
|
#<probe_slow_fr> = #2
|
||||||
|
#<probe_fast_fr> = #3
|
||||||
|
#<probe_traverse_fr> = #4
|
||||||
|
#<max_xy_distance> = #5
|
||||||
|
#<xy_clearance> = #6
|
||||||
|
#<calibration_offset> = #7
|
||||||
|
|
||||||
|
(Cancel G92 offsets)
|
||||||
|
G92.1
|
||||||
|
|
||||||
|
(Probe Tool Safety Check)
|
||||||
|
o100 if [#5400 NE #<probe_tool_number>]
|
||||||
|
(DEBUG, Specified probe tool %d#<probe_tool_number> not in spindle, aborting)
|
||||||
|
o<probe_y_minus> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(Probe Radius)
|
||||||
|
#<probe_radius> = [#<probe_diameter> / 2]
|
||||||
|
|
||||||
|
(Probe Centerline Offset)
|
||||||
|
#<probe_center_offset> = [#<probe_radius> - #<calibration_offset>]
|
||||||
|
|
||||||
|
(Current Y Position including offsets in current program units)
|
||||||
|
#<y> = #5421
|
||||||
|
|
||||||
|
(Initiate Fast Y- Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.2 y-[#<max_xy_distance>]
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
|
||||||
|
(Probe Error check, #5070 will be 0 if failed)
|
||||||
|
o110 if [#5070 EQ 0]
|
||||||
|
(back to start point and feed)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Y#<y>
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
(return from sub)
|
||||||
|
o<probe_y_minus> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Move to xy_clearance distance for slow probe)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Y[#<y_minus_probed> + #<xy_clearance>]
|
||||||
|
|
||||||
|
(Slow Probe Rule, if Slow Probe FR is set to 0, Slow Probe is Bypassed)
|
||||||
|
o120 if [#<probe_slow_fr> GT 0]
|
||||||
|
(Initiate Slow Y- Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_slow_fr>]
|
||||||
|
G38.2 Y-[#<xy_clearance> * 2]
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Y[#<y_minus_probed> + #<xy_clearance>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
#<y_minus_zero_edge> = [#5062 - #<probe_center_offset>]
|
||||||
|
|
||||||
|
(defines the edge as y_probed_position for DRO reporting)
|
||||||
|
#<y_minus_probed_position> = #<y_minus_zero_edge>
|
||||||
|
|
||||||
|
(output to gui DRO "Y PROBED POSITION")
|
||||||
|
#1007 = #<y_minus_probed_position>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_minus_probed_position"}.setValue{#1007}])
|
||||||
|
|
||||||
|
o<probe_y_minus> endsub [#<y_minus_zero_edge>]
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
105
subroutines/probe_y_minus_wco.ngc
Normal file
105
subroutines/probe_y_minus_wco.ngc
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe Y Minus direction and set Y 0 in current WCO)
|
||||||
|
(Start probe position to the back side edge of stock)
|
||||||
|
(inside the max xy distance with the probe tip below the stock top edge)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_y_minus_wco> 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_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_y_minus_wco> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(Probe Radius)
|
||||||
|
#<probe_radius> = [#<probe_diameter> / 2]
|
||||||
|
|
||||||
|
(Probe Centerline Offset)
|
||||||
|
#<probe_center_offset> = [#<probe_radius> - #<calibration_offset>]
|
||||||
|
|
||||||
|
(Current Y Position including offsets in current program units)
|
||||||
|
#<y> = #5421
|
||||||
|
|
||||||
|
(Initiate Fast Y- Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.2 y-[#<max_xy_distance>]
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
|
||||||
|
(Probe Error check, #5070 will be 0 if failed)
|
||||||
|
o110 if [#5070 EQ 0]
|
||||||
|
(back to start point and feed)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Y#<y>
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
M50 P1
|
||||||
|
o<probe_y_minus_wco> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Move to xy_clearance distance for slow probe)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Y[#<y_minus_probed> + #<xy_clearance>]
|
||||||
|
|
||||||
|
(Slow Probe Rule, if Slow Probe FR is set to 0, Slow Probe is Bypassed)
|
||||||
|
o120 if [#<probe_slow_fr> GT 0]
|
||||||
|
(Initiate Slow Y- Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_slow_fr>]
|
||||||
|
G38.2 Y-[#<xy_clearance> * 2]
|
||||||
|
#<y_minus_probed> = #5062
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Y[#<y_minus_probed> + #<xy_clearance>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
#<y_minus_zero_edge> = [#5062 - #<probe_center_offset>]
|
||||||
|
|
||||||
|
(defines the edge as y_probed_position for DRO reporting)
|
||||||
|
#<y_minus_probed_position> = #<y_minus_zero_edge>
|
||||||
|
|
||||||
|
(output to gui DRO "Y PROBED POSITION")
|
||||||
|
#1007 = #<y_minus_probed_position>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_minus_probed_position"}.setValue{#1007}])
|
||||||
|
|
||||||
|
(probe mode rule for WCO or probe position measuring only)
|
||||||
|
o130 if [#<probe_mode> EQ 0]
|
||||||
|
(Record Y Zero in selected WCO)
|
||||||
|
G10 L2 P#5220 Y[#<y_minus_zero_edge> + #<workspace_y>]
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_y_minus_wco> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
85
subroutines/probe_y_plus.ngc
Normal file
85
subroutines/probe_y_plus.ngc
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe Y plus direction to locate edge, end at clearance distance)
|
||||||
|
(Start probe position to the front side edge of stock)
|
||||||
|
(inside the max xy distance with the probe tip below the stock top edge)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_y_plus> sub
|
||||||
|
|
||||||
|
(uses NGCGUI style arg spec)
|
||||||
|
(number after "=" in comment is default value)
|
||||||
|
#<probe_tool_number> = #1
|
||||||
|
#<probe_slow_fr> = #2
|
||||||
|
#<probe_fast_fr> = #3
|
||||||
|
#<probe_traverse_fr> = #4
|
||||||
|
#<max_xy_distance> = #5
|
||||||
|
#<xy_clearance> = #6
|
||||||
|
#<calibration_offset> = #7
|
||||||
|
|
||||||
|
(Cancel G92 offsets)
|
||||||
|
G92.1
|
||||||
|
|
||||||
|
(Probe Tool Safety Check)
|
||||||
|
o100 if [#5400 NE #<probe_tool_number>]
|
||||||
|
(DEBUG, Specified probe tool %d#<probe_tool_number> not in spindle, aborting)
|
||||||
|
o<probe_y_plus> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(Probe Radius)
|
||||||
|
#<probe_radius> = [#<probe_diameter> / 2]
|
||||||
|
|
||||||
|
(Probe Centerline Offset)
|
||||||
|
#<probe_center_offset> = [#<probe_radius> - #<calibration_offset>]
|
||||||
|
|
||||||
|
(Current Y Position including offsets in current program units)
|
||||||
|
#<y> = #5421
|
||||||
|
|
||||||
|
(Initiate Fast y+ Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.2 Y[#<max_xy_distance>]
|
||||||
|
#<y_plus_probed> = #5062
|
||||||
|
|
||||||
|
(Probe Error check, #5070 will be 0 if failed)
|
||||||
|
o110 if [#5070 EQ 0]
|
||||||
|
(back to start point and feed)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Y#<y>
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
(return from sub)
|
||||||
|
o<probe_y_plus> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Move to xy_clearance distance for slow probe)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Y[#<y_plus_probed> - #<xy_clearance>]
|
||||||
|
|
||||||
|
(Slow Probe Rule, if Slow Probe FR is set to 0, Slow Probe is Bypassed)
|
||||||
|
o120 if [#<probe_slow_fr> GT 0]
|
||||||
|
(Initiate Slow Y+ Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_slow_fr>]
|
||||||
|
G38.2 Y[#<xy_clearance> * 2]
|
||||||
|
#<y_plus_probed> = #5062
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Y[#<y_plus_probed> - #<xy_clearance>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
#<y_plus_zero_edge> = [#5062 + #<probe_center_offset>]
|
||||||
|
|
||||||
|
(defines the edge as y_probed_position for DRO reporting)
|
||||||
|
#<y_plus_probed_position> = #<y_plus_zero_edge>
|
||||||
|
|
||||||
|
(output to gui DRO "Y PROBED POSITION")
|
||||||
|
#1008 = #<y_plus_probed_position>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_plus_probed_position"}.setValue{#1008}])
|
||||||
|
|
||||||
|
o<probe_y_plus> endsub [#<y_plus_zero_edge>]
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
105
subroutines/probe_y_plus_wco.ngc
Normal file
105
subroutines/probe_y_plus_wco.ngc
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe Y plus direction and set Y 0 in current WCO)
|
||||||
|
(Start probe position to the front side edge of stock)
|
||||||
|
(inside the max xy distance with the probe tip below the stock top edge)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_y_plus_wco> 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_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_y_plus_wco> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Probe Diameter)
|
||||||
|
#<probe_diameter> = #5410
|
||||||
|
|
||||||
|
(Probe Radius)
|
||||||
|
#<probe_radius> = [#<probe_diameter> / 2]
|
||||||
|
|
||||||
|
(Probe Centerline Offset)
|
||||||
|
#<probe_center_offset> = [#<probe_radius> - #<calibration_offset>]
|
||||||
|
|
||||||
|
(Current Y Position including offsets in current program units)
|
||||||
|
#<y> = #5421
|
||||||
|
|
||||||
|
(Initiate Fast y+ Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.2 Y[#<max_xy_distance>]
|
||||||
|
#<y_plus_probed> = #5062
|
||||||
|
|
||||||
|
(Probe Error check, #5070 will be 0 if failed)
|
||||||
|
o110 if [#5070 EQ 0]
|
||||||
|
(back to start point and feed)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Y#<y>
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
M50 P1
|
||||||
|
o<probe_y_plus_wco> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Move to xy_clearance distance for slow probe)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Y[#<y_plus_probed> - #<xy_clearance>]
|
||||||
|
|
||||||
|
(Slow Probe Rule, if Slow Probe FR is set to 0, Slow Probe is Bypassed)
|
||||||
|
o120 if [#<probe_slow_fr> GT 0]
|
||||||
|
(Initiate Slow Y+ Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_slow_fr>]
|
||||||
|
G38.2 Y[#<xy_clearance> * 2]
|
||||||
|
#<y_plus_probed> = #5062
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Y[#<y_plus_probed> - #<xy_clearance>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
#<y_plus_zero_edge> = [#5062 + #<probe_center_offset>]
|
||||||
|
|
||||||
|
(defines the edge as y_probed_position for DRO reporting)
|
||||||
|
#<y_plus_probed_position> = #<y_plus_zero_edge>
|
||||||
|
|
||||||
|
(output to gui DRO "Y PROBED POSITION")
|
||||||
|
#1008 = #<y_plus_probed_position>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_plus_probed_position"}.setValue{#1008}])
|
||||||
|
|
||||||
|
(probe mode rule for WCO or probe position measuring only)
|
||||||
|
o130 if [#<probe_mode> EQ 0]
|
||||||
|
(Record Y Zero in selected WCO)
|
||||||
|
G10 L2 P#5220 Y[#<y_plus_zero_edge> + #<workspace_y>]
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_y_plus_wco> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
84
subroutines/probe_z_minus_sub.ngc
Normal file
84
subroutines/probe_z_minus_sub.ngc
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe Z Minus direction and set Z 0 in current WCO)
|
||||||
|
(Start probe position is over stock within max z distance)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_z_minus_sub> sub
|
||||||
|
|
||||||
|
(uses NGCGUI style arg spec)
|
||||||
|
(number after "=" in comment is default value)
|
||||||
|
#<probe_tool_number> = #1
|
||||||
|
#<probe_slow_fr> = #2
|
||||||
|
#<probe_fast_fr> = #3
|
||||||
|
#<probe_traverse_fr> = #4
|
||||||
|
#<max_z_distance> = #5
|
||||||
|
#<z_clearance> = #6
|
||||||
|
#<probe_mode> = #7
|
||||||
|
|
||||||
|
(Cancel G92 offsets)
|
||||||
|
G92.1
|
||||||
|
|
||||||
|
#<workspace_z> = #[5203 + [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)
|
||||||
|
o<probe_z_minus_sub> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Current Z Position including offsets in current program units)
|
||||||
|
#<z> = #5422
|
||||||
|
|
||||||
|
(Initial Fast Z- Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.2 Z-[#<max_z_distance>]
|
||||||
|
#<z_minus_probed> = #5063
|
||||||
|
|
||||||
|
(Probe Error check, #5070 will be 0 if failed)
|
||||||
|
o110 if [#5070 EQ 0]
|
||||||
|
(back to start point and feed)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Z#<z>
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
(return from sub)
|
||||||
|
o<probe_z_minus_sub> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Move to z_clearance height for slow probe)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Z[#<z_minus_probed> + #<z_clearance>]
|
||||||
|
|
||||||
|
(Slow Probe Rule, if Slow Probe FR is set to 0, Slow Probe is Bypassed)
|
||||||
|
o120 if [#<probe_slow_fr> GT 0]
|
||||||
|
(Initiate Slow Z- Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_slow_fr>]
|
||||||
|
G38.2 Z-[#<z_clearance> * 2]
|
||||||
|
#<z_minus_probed> = #5063
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Z[#<z_minus_probed> + #<z_clearance>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
(defines the edge as z_probed_position for DRO reporting)
|
||||||
|
#<z_minus_probed_position> = #<z_minus_probed>
|
||||||
|
|
||||||
|
(output to gui DRO "Z PROBED POSITION")
|
||||||
|
#1009 = #<z_minus_probed_position>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"z_minus_probed_position"}.setValue{#1009}])
|
||||||
|
|
||||||
|
#<z_finish_height> = [#<z_minus_probed> + #<z_clearance>]
|
||||||
|
|
||||||
|
(probe mode rule for WCO or probe position measuring only)
|
||||||
|
o130 if [#<probe_mode> EQ 0]
|
||||||
|
(Record Z zero in selected WCO)
|
||||||
|
G10 L2 P#5220 Z[#<z_minus_probed> + #<workspace_z>]
|
||||||
|
o<probe_z_minus_sub> return
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
o<probe_z_minus_sub> endsub [#<z_finish_height>]
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
91
subroutines/probe_z_minus_wco.ngc
Normal file
91
subroutines/probe_z_minus_wco.ngc
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(Probe Z Minus direction and set Z 0 in current WCO)
|
||||||
|
(Start probe position is over stock within max z distance)
|
||||||
|
(ensure all settings have been set properly according to help diagrams)
|
||||||
|
|
||||||
|
o<probe_z_minus_wco> 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_z_distance> = #3020 (=0.5000)
|
||||||
|
#<z_clearance> = #3021 (=0.1000)
|
||||||
|
#<probe_mode> = #3030 (=0)
|
||||||
|
|
||||||
|
(Cancel G92 offsets)
|
||||||
|
G92.1
|
||||||
|
|
||||||
|
(Cancel Feedrate Override)
|
||||||
|
M50 P0
|
||||||
|
|
||||||
|
#<workspace_z> = #[5203 + [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_z_minus_wco> return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Current Z Position including offsets in current program units)
|
||||||
|
#<z> = #5422
|
||||||
|
|
||||||
|
(Initial Fast Z- Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
G38.2 Z-[#<max_z_distance>]
|
||||||
|
#<z_minus_probed> = #5063
|
||||||
|
|
||||||
|
(Probe Error check, #5070 will be 0 if failed)
|
||||||
|
o110 if [#5070 EQ 0]
|
||||||
|
(back to start point and feed)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Z#<z>
|
||||||
|
F[#<probe_fast_fr>]
|
||||||
|
(return from sub)
|
||||||
|
M50 P1
|
||||||
|
o<probe_z_minus_wco> return
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Move to z_clearance height for slow probe)
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Z[#<z_minus_probed> + #<z_clearance>]
|
||||||
|
|
||||||
|
(Slow Probe Rule, if Slow Probe FR is set to 0, Slow Probe is Bypassed)
|
||||||
|
o120 if [#<probe_slow_fr> GT 0]
|
||||||
|
(Initiate Slow Z- Probe)
|
||||||
|
G91
|
||||||
|
F[#<probe_slow_fr>]
|
||||||
|
G38.2 Z-[#<z_clearance> * 2]
|
||||||
|
#<z_minus_probed> = #5063
|
||||||
|
G90
|
||||||
|
G1 F[#<probe_traverse_fr>] Z[#<z_minus_probed> + #<z_clearance>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
(defines the edge as z_probed_position for DRO reporting)
|
||||||
|
#<z_minus_probed_position> = #<z_minus_probed>
|
||||||
|
|
||||||
|
(output to gui DRO "Z PROBED POSITION")
|
||||||
|
#1009 = #<z_minus_probed_position>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"z_minus_probed_position"}.setValue{#1009}])
|
||||||
|
|
||||||
|
#<z_finish_height> = [#<z_minus_probed> + #<z_clearance>]
|
||||||
|
|
||||||
|
(probe mode rule for WCO or probe position measuring only)
|
||||||
|
o130 if [#<probe_mode> EQ 0]
|
||||||
|
(Record Z zero in selected WCO)
|
||||||
|
G10 L2 P#5220 Z[#<z_minus_probed> + #<workspace_z>]
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
(Reinstate Feedrate Override)
|
||||||
|
M50 P1
|
||||||
|
|
||||||
|
o<probe_z_minus_wco> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
45
subroutines/program_coolant.ngc
Normal file
45
subroutines/program_coolant.ngc
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.3)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(programmable coolant subroutine for aiming the coolant nozzle)
|
||||||
|
(settings for setup are displayed on probe basic setting page)
|
||||||
|
(in the programmable coolant constants container.)
|
||||||
|
(calculations assume coolant nozzle is located on the right side of the spindle)
|
||||||
|
|
||||||
|
|
||||||
|
o<program_coolant> sub
|
||||||
|
(PRINT, o<program_coolant>)
|
||||||
|
|
||||||
|
#<activate_programmable_coolant> = #3000
|
||||||
|
#<horizontal_spindle_nozzle_dist> = #3001
|
||||||
|
#<vertical_spindle_nozzle_dist> = #3002
|
||||||
|
#<pc_angle_offset> = #3003
|
||||||
|
|
||||||
|
o100 if [#<activate_programmable_coolant> EQ 0]
|
||||||
|
o100 return
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
#<pc_tool_length> = #5403
|
||||||
|
|
||||||
|
#<tool_diameter> = #5410
|
||||||
|
|
||||||
|
#<tool_radius_offset_dist> = [#<tool_diameter> / 2]
|
||||||
|
|
||||||
|
#<tool_diameter_offset_dist> = [#<horizontal_spindle_nozzle_dist> - #<tool_radius_offset_dist>]
|
||||||
|
|
||||||
|
#<tool_tip_position> = [[#<vertical_spindle_nozzle_dist>] + [#<pc_tool_length>]]
|
||||||
|
|
||||||
|
#<coolant_abs_angle> = [ATAN[#<tool_tip_position>] / [#<tool_diameter_offset_dist>]]
|
||||||
|
|
||||||
|
#<coolant_final_angle> = [[#<coolant_abs_angle>] + [#<pc_angle_offset>]]
|
||||||
|
|
||||||
|
#1000 = #<coolant_final_angle>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"coolant_final_angle"}.setValue{#1000}])
|
||||||
|
|
||||||
|
M68 E0 Q[#<coolant_final_angle>]
|
||||||
|
|
||||||
|
(PRINT, o<program_coolant> endsub)
|
||||||
|
o<program_coolant> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
139
subroutines/rack_id_calc.ngc
Normal file
139
subroutines/rack_id_calc.ngc
Normal file
@@ -0,0 +1,139 @@
|
|||||||
|
(author: Chris P, Lcvette)
|
||||||
|
(version: 0.1)
|
||||||
|
(date: 02/8/25)
|
||||||
|
|
||||||
|
(This sub will write user parameters to the var file and ui widgets)
|
||||||
|
(Determine ATC Rack Position, Pocket Order, and Clearance Direction)
|
||||||
|
(Requires Pockets to be aligned parallel with X or Y Axis Travels)
|
||||||
|
|
||||||
|
o<rack_id_calc> sub
|
||||||
|
|
||||||
|
#<rack_traverse_speed_3980> = #1 (0)
|
||||||
|
#<rack_z_load_height_3981> = #2 (0)
|
||||||
|
#<rack_safe_z_height_3982> = #3 (0)
|
||||||
|
#<rack_pocket_1_x_3983> = #4 (0)
|
||||||
|
#<rack_pocket_1_y_3984> = #5 (0)
|
||||||
|
#<rack_pocket_2_x_3985> = #6 (0)
|
||||||
|
#<rack_pocket_2_y_3986> = #7 (0)
|
||||||
|
#<pocket_1_x_clearance_3987> = #8 (0)
|
||||||
|
#<pocket_1_y_clearance_3988> = #9 (0)
|
||||||
|
#<rack_atc_user_1_3974> = #10 (0)
|
||||||
|
#<rack_atc_user_2_3975> = #11 (0)
|
||||||
|
#<rack_atc_user_3_3976> = #12 (0)
|
||||||
|
#<rack_atc_user_4_3977> = #13 (0)
|
||||||
|
#<rack_atc_user_5_3978> = #14 (0)
|
||||||
|
|
||||||
|
#3974 = #<rack_atc_user_1_3974>
|
||||||
|
#3975 = #<rack_atc_user_2_3975>
|
||||||
|
#3976 = #<rack_atc_user_3_3976>
|
||||||
|
#3977 = #<rack_atc_user_4_3977>
|
||||||
|
#3978 = #<rack_atc_user_5_3978>
|
||||||
|
#3980 = #<rack_traverse_speed_3980>
|
||||||
|
#3981 = #<rack_z_load_height_3981>
|
||||||
|
#3982 = #<rack_safe_z_height_3982>
|
||||||
|
#3983 = #<rack_pocket_1_x_3983>
|
||||||
|
#3984 = #<rack_pocket_1_y_3984>
|
||||||
|
#3985 = #<rack_pocket_2_x_3985>
|
||||||
|
#3986 = #<rack_pocket_2_y_3986>
|
||||||
|
#3987 = #<pocket_1_x_clearance_3987>
|
||||||
|
#3988 = #<pocket_1_y_clearance_3988>
|
||||||
|
|
||||||
|
(Initialize ALL variables first)
|
||||||
|
#3979 = 0
|
||||||
|
#<pocket_order> = 0
|
||||||
|
#<clearance_direction> = 0
|
||||||
|
#<rack_id> = 0
|
||||||
|
#<temp> = 0
|
||||||
|
|
||||||
|
(Pull ini pocket count and write to ui)
|
||||||
|
o100 if [EXISTS[#<_ini[atc]pockets>]]
|
||||||
|
#<number_of_pockets> = #<_ini[atc]pockets>
|
||||||
|
#3973 = #<number_of_pockets>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"rack_pocket_count"}.setValue{#3973}])
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
(Check for duplicate pocket positions)
|
||||||
|
o110 if [#<rack_pocket_1_x_3983> EQ #<rack_pocket_2_x_3985>]
|
||||||
|
o111 if [#<rack_pocket_1_y_3984> EQ #<rack_pocket_2_y_3986>]
|
||||||
|
(PRINT, "Error: Duplicate pocket positions detected!")
|
||||||
|
#3979 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"atc_rack_id"}.setValue{#3979}])
|
||||||
|
o<rack_id_calc> return
|
||||||
|
o111 endif
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
(Check if row is parallel to the Y-axis)
|
||||||
|
o120 if [#<rack_pocket_1_x_3983> EQ #<rack_pocket_2_x_3985>]
|
||||||
|
(PRINT, "Row is parallel to Y-axis")
|
||||||
|
|
||||||
|
(Determine pocket order)
|
||||||
|
o121 if [#<rack_pocket_2_y_3986> GT #<rack_pocket_1_y_3984>]
|
||||||
|
#<pocket_order> = 1 (-Y to +Y)
|
||||||
|
o121 else
|
||||||
|
#<pocket_order> = 2 (+Y to -Y)
|
||||||
|
o121 endif
|
||||||
|
|
||||||
|
(Determine clearance direction - MUST be in X)
|
||||||
|
o122 if [#<pocket_1_x_clearance_3987> GT #<rack_pocket_1_x_3983>]
|
||||||
|
#<clearance_direction> = 1 (+X)
|
||||||
|
o122 elseif [#<pocket_1_x_clearance_3987> LT #<rack_pocket_1_x_3983>]
|
||||||
|
#<clearance_direction> = 2 (-X)
|
||||||
|
o122 else
|
||||||
|
(PRINT, "Error: Clearance direction must be perpendicular to pocket row!")
|
||||||
|
#3979 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"atc_rack_id"}.setValue{#3979}])
|
||||||
|
o<rack_id_calc> return
|
||||||
|
o122 endif
|
||||||
|
|
||||||
|
(Assign rack_id - break down calculation steps)
|
||||||
|
#<temp> = [#<pocket_order> - 1]
|
||||||
|
#<temp> = [#<temp> * 2]
|
||||||
|
#<temp> = [#<temp> + #<clearance_direction>]
|
||||||
|
#<rack_id> = #<temp>
|
||||||
|
#3979 = #<rack_id>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"atc_rack_id"}.setValue{#3979}])
|
||||||
|
o<rack_id_calc> return
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
(Check if row is parallel to the X-axis)
|
||||||
|
o130 if [#<rack_pocket_1_y_3984> EQ #<rack_pocket_2_y_3986>]
|
||||||
|
(PRINT, "Row is parallel to X-axis")
|
||||||
|
|
||||||
|
(Determine pocket order)
|
||||||
|
o131 if [#<rack_pocket_2_x_3985> GT #<rack_pocket_1_x_3983>]
|
||||||
|
#<pocket_order> = 1 (-X to +X)
|
||||||
|
o131 else
|
||||||
|
#<pocket_order> = 2 (+X to -X)
|
||||||
|
o131 endif
|
||||||
|
|
||||||
|
(Determine clearance direction - MUST be in Y)
|
||||||
|
o132 if [#<pocket_1_y_clearance_3988> GT #<rack_pocket_1_y_3984>]
|
||||||
|
#<clearance_direction> = 1 (+Y)
|
||||||
|
o132 elseif [#<pocket_1_y_clearance_3988> LT #<rack_pocket_1_y_3984>]
|
||||||
|
#<clearance_direction> = 2 (-Y)
|
||||||
|
o132 else
|
||||||
|
(PRINT, "Error: Clearance direction must be perpendicular to pocket row!")
|
||||||
|
#3979 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"atc_rack_id"}.setValue{#3979}])
|
||||||
|
o<rack_id_calc> return
|
||||||
|
o132 endif
|
||||||
|
|
||||||
|
(Assign rack_id - break down calculation steps)
|
||||||
|
#<temp> = [#<pocket_order> - 1]
|
||||||
|
#<temp> = [#<temp> * 2]
|
||||||
|
#<temp> = [#<temp> + #<clearance_direction>]
|
||||||
|
#<temp> = [#<temp> + 4]
|
||||||
|
#<rack_id> = #<temp>
|
||||||
|
#3979 = #<rack_id>
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"atc_rack_id"}.setValue{#3979}])
|
||||||
|
o<rack_id_calc> return
|
||||||
|
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
(MSG, "Error: No Conditions Met, Rack ID Not Set")
|
||||||
|
#3979 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"atc_rack_id"}.setValue{#3979}])
|
||||||
|
|
||||||
|
o<rack_id_calc> endsub
|
||||||
|
|
||||||
|
M2
|
||||||
41
subroutines/reset_all_data.ngc
Normal file
41
subroutines/reset_all_data.ngc
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
o<reset_all_data> sub
|
||||||
|
|
||||||
|
#1001 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1001}])
|
||||||
|
|
||||||
|
#1002 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_probed_width"}.setValue{#1002}])
|
||||||
|
|
||||||
|
#1003 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1003}])
|
||||||
|
|
||||||
|
#1004 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_probed_width"}.setValue{#1004}])
|
||||||
|
|
||||||
|
#1005 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_minus_probed_position"}.setValue{#1005}])
|
||||||
|
|
||||||
|
#1006 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_plus_probed_position"}.setValue{#1006}])
|
||||||
|
|
||||||
|
#1007 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_minus_probed_position"}.setValue{#1007}])
|
||||||
|
|
||||||
|
#1008 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_plus_probed_position"}.setValue{#1008}])
|
||||||
|
|
||||||
|
#1009 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"z_minus_probed_position"}.setValue{#1009}])
|
||||||
|
|
||||||
|
#1010 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"averaged_diam"}.setValue{#1010}])
|
||||||
|
|
||||||
|
#1011 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"edge_delta"}.setValue{#1011}])
|
||||||
|
|
||||||
|
#1012 = 0
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"edge_angle"}.setValue{#1012}])
|
||||||
|
|
||||||
|
o<reset_all_data> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
15
subroutines/retractatc.ngc
Normal file
15
subroutines/retractatc.ngc
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
o<retractatc> sub
|
||||||
|
|
||||||
|
M65 P0 ; Turn off carousel out solenoid
|
||||||
|
M64 P1 ; Move Carousel IN
|
||||||
|
|
||||||
|
M66 P0 L3 Q5 ; check carousel in position sensor
|
||||||
|
o100 if [#5399 LT 0]
|
||||||
|
M65 P1 ; turn off the solenoid to send atc home
|
||||||
|
(abort, Failed to send carousel home) ; abort if the sensor does not activate in 5 seconds
|
||||||
|
o100 endif
|
||||||
|
M65 P1
|
||||||
|
|
||||||
|
o<retractatc> endsub [1]
|
||||||
|
|
||||||
|
M2
|
||||||
19
subroutines/set_g30_position.ngc
Normal file
19
subroutines/set_g30_position.ngc
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
o<set_g30_position> sub
|
||||||
|
|
||||||
|
o100 if [1 EQ 1]
|
||||||
|
(G30.1 records the tool touch off position in the var file)
|
||||||
|
G30.1
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
#1000 = #5181
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"x_tool_change_position"}.setValue{#1000}])
|
||||||
|
|
||||||
|
#1001 = #5182
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"y_tool_change_position"}.setValue{#1001}])
|
||||||
|
|
||||||
|
#1002 = #5183
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"z_tool_change_position"}.setValue{#1002}])
|
||||||
|
|
||||||
|
o<set_g30_position> endsub
|
||||||
|
|
||||||
|
M2
|
||||||
16
subroutines/store_tool_in_carousel.ngc
Normal file
16
subroutines/store_tool_in_carousel.ngc
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
(store spindle tool in carousel macro)
|
||||||
|
|
||||||
|
o<store_tool_in_carousel> sub
|
||||||
|
(PRINT, o<store_tool_in_carousel>)
|
||||||
|
|
||||||
|
G49
|
||||||
|
|
||||||
|
T0 M6
|
||||||
|
|
||||||
|
o<store_tool_in_carousel> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
21
subroutines/surface_scan_param_update.ngc
Normal file
21
subroutines/surface_scan_param_update.ngc
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
o<surface_scan_param_update> sub
|
||||||
|
|
||||||
|
#<surface_scan_x0_3050> = #1
|
||||||
|
#<surface_scan_y0_3051> = #2
|
||||||
|
#<surface_scan_height_3052> = #3
|
||||||
|
#<surface_scan_width_3053> = #4
|
||||||
|
#<surface_scan_step_3054> = #5
|
||||||
|
|
||||||
|
#3050 = #<surface_scan_x0_3050>
|
||||||
|
|
||||||
|
#3051 = #<surface_scan_y0_3051>
|
||||||
|
|
||||||
|
#3052 = #<surface_scan_height_3052>
|
||||||
|
|
||||||
|
#3053 = #<surface_scan_width_3053>
|
||||||
|
|
||||||
|
#3054 = #<surface_scan_step_3054>
|
||||||
|
|
||||||
|
o<surface_scan_param_update> endsub [1]
|
||||||
|
|
||||||
|
M2
|
||||||
44
subroutines/surface_test.ngc
Normal file
44
subroutines/surface_test.ngc
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
o<surface_test> sub
|
||||||
|
;(MSG, SURFACE_TEST.NGC)
|
||||||
|
M64 P0 (turn off compensation)
|
||||||
|
;T1 M6 (Install probe)
|
||||||
|
#<x0> = #3050 ;(debug, x0: [#<x0>])
|
||||||
|
#<y0> = #3051 ;(debug, y0: [#<y0>])
|
||||||
|
#<height> = #3052 ;(debug, height: [#<height>])
|
||||||
|
#<width> = #3053 ;(debug, width: [#<width>])
|
||||||
|
#<step> = #3054 ;(debug, step: [#<step>])
|
||||||
|
#<search_feed> = #3055 ;(debug, search_feed: [#<search_feed>])
|
||||||
|
#<latch_feed> = #3056 ;(debug, latch_feed: [#<latch_feed>])
|
||||||
|
#<safe_z> = #3057 ;(debug, safe_z: [#<safe_z>])
|
||||||
|
#<search_z> = #3058 ;(debug, search_z: [#<search_z>])
|
||||||
|
|
||||||
|
;(PROBEOPEN filename.txt)
|
||||||
|
|
||||||
|
G0 Z#<safe_z>
|
||||||
|
#<y> = #<y0>
|
||||||
|
o101 while [#<y> LT #<height>+#<y0>]
|
||||||
|
#<x> = #<x0>
|
||||||
|
o102 while [#<x> LE #<width>+#<x0>]
|
||||||
|
G0 X#<x> Y#<y>
|
||||||
|
G38.2 Z#<search_z> F#<search_feed>
|
||||||
|
G0 Z#<safe_z>
|
||||||
|
#<x> = [#<x>+#<step>]
|
||||||
|
o102 endwhile
|
||||||
|
|
||||||
|
#<y> = [#<y>+#<step>]
|
||||||
|
#<x> = [#<x0>+#<width>]
|
||||||
|
|
||||||
|
o103 while [#<x> GE #<x0>]
|
||||||
|
G0 X#<x> Y#<y>
|
||||||
|
G38.2 Z#<search_z> F#<search_feed>
|
||||||
|
G0 Z#<safe_z>
|
||||||
|
#<x> = [#<x>-#<step>]
|
||||||
|
o103 endwhile
|
||||||
|
|
||||||
|
#<y> = [#<y>+#<step>]
|
||||||
|
o101 endwhile
|
||||||
|
|
||||||
|
;(PROBECLOSE)
|
||||||
|
o<surface_test> endsub
|
||||||
|
|
||||||
|
M2
|
||||||
45
subroutines/tool_setter_param_update.ngc
Normal file
45
subroutines/tool_setter_param_update.ngc
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
o<tool_setter_param_update> sub
|
||||||
|
|
||||||
|
#<fast_probe_fr_3004> = #1
|
||||||
|
#<slow_probe_fr_3005> = #2
|
||||||
|
#<traverse_fr_3006> = #3
|
||||||
|
#<z_max_travel_3007> = #4
|
||||||
|
#<xy_max_travel_3008> = #5
|
||||||
|
#<retract_distance_3009> = #6
|
||||||
|
#<spindle_zero_height_3010> = #7
|
||||||
|
#<tool_diameter_probe_mode_3011> = #8
|
||||||
|
#<tool_diameter_offset_mode_3012> = #9
|
||||||
|
#<tool_setter_offset_direction_3013> = #10
|
||||||
|
#<breakage_tolerance_3037> = #11
|
||||||
|
#<user_setter_1_3038> = #12
|
||||||
|
#<user_setter_2_3039> = #13
|
||||||
|
|
||||||
|
#3004 = #<fast_probe_fr_3004>
|
||||||
|
|
||||||
|
#3005 = #<slow_probe_fr_3005>
|
||||||
|
|
||||||
|
#3006 = #<traverse_fr_3006>
|
||||||
|
|
||||||
|
#3007 = #<z_max_travel_3007>
|
||||||
|
|
||||||
|
#3008 = #<xy_max_travel_3008>
|
||||||
|
|
||||||
|
#3009 = #<retract_distance_3009>
|
||||||
|
|
||||||
|
#3010 = #<spindle_zero_height_3010>
|
||||||
|
|
||||||
|
#3011 = #<tool_diameter_probe_mode_3011>
|
||||||
|
|
||||||
|
#3012 = #<tool_diameter_offset_mode_3012>
|
||||||
|
|
||||||
|
#3013 = #<tool_setter_offset_direction_3013>
|
||||||
|
|
||||||
|
#3037 = #<breakage_tolerance_3037>
|
||||||
|
|
||||||
|
#3038 = #<user_setter_1_3038>
|
||||||
|
|
||||||
|
#3039 = #<user_setter_2_3039>
|
||||||
|
|
||||||
|
o<tool_setter_param_update> endsub [1]
|
||||||
|
|
||||||
|
M2
|
||||||
101
subroutines/tool_touch_off.ngc
Normal file
101
subroutines/tool_touch_off.ngc
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
(author: Chris P, TooTall18)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
o<tool_touch_off> sub
|
||||||
|
|
||||||
|
#<fast_probe_fr> = #3004 (set from probe screen fast probe feed rate)
|
||||||
|
#<slow_probe_fr> = #3005 (set from probe screen slow probe feedrate)
|
||||||
|
#<traverse_fr> = #3006 (set from probe screen traverse probe feedrate)
|
||||||
|
#<z_max_travel> = #3007 (max z distance the tool travels before erroring out if not contact is made)
|
||||||
|
#<xy_max_travel> = #3008 (max xy distance the tool travels before erroring out if not contact is made)
|
||||||
|
#<retract_distance> = #3009 (distance the tool retracts after making contact during fast feed mode)
|
||||||
|
#<spindle_zero_height> = #3010 (G53 distance from home to spindle nose triggering point on touch plate)
|
||||||
|
#<tool_diameter_probe_mode> = #3011 (activates the tool diameter probe subroutine section)
|
||||||
|
#<tool_diameter_offset_mode> = #3012 (activates the tool diameter offset position for probe subroutine section)
|
||||||
|
#<tool_setter_offset_direction> = #3013 (sets tool setter offset direction to move tool)
|
||||||
|
#<tool_diameter> = #5410 (current tool's diameter used for offseting probe position in x axis)
|
||||||
|
|
||||||
|
G92.1 (Cancel G92 offset)
|
||||||
|
M50 P0
|
||||||
|
|
||||||
|
#<tool_touch_x_coords> = #5181
|
||||||
|
#<tool_touch_y_coords> = #5182
|
||||||
|
#<tool_touch_z_coords> = #5183
|
||||||
|
|
||||||
|
#<tool_radius_offset> = [#<tool_diameter> / 2]
|
||||||
|
#<left_offset_probing_position> = [#<tool_touch_x_coords> - #<tool_radius_offset>]
|
||||||
|
#<right_offset_probing_position> = [#<tool_touch_x_coords> + #<tool_radius_offset>]
|
||||||
|
#<front_offset_probing_position> = [#<tool_touch_y_coords> - #<tool_radius_offset>]
|
||||||
|
#<back_offset_probing_position> = [#<tool_touch_y_coords> + #<tool_radius_offset>]
|
||||||
|
|
||||||
|
o100 if [#<tool_diameter_offset_mode> EQ 1]
|
||||||
|
o101 if [#<tool_setter_offset_direction> EQ 0]
|
||||||
|
#<tool_touch_x_coords> = #<left_offset_probing_position>
|
||||||
|
o101 else if [#<tool_setter_offset_direction> EQ 1]
|
||||||
|
#<tool_touch_x_coords> = #<right_offset_probing_position>
|
||||||
|
o101 else if [#<tool_setter_offset_direction> EQ 2]
|
||||||
|
#<tool_touch_y_coords> = #<front_offset_probing_position>
|
||||||
|
o101 else if [#<tool_setter_offset_direction> EQ 3]
|
||||||
|
#<tool_touch_y_coords> = #<back_offset_probing_position>
|
||||||
|
o101 endif
|
||||||
|
o100 endif
|
||||||
|
|
||||||
|
o110 if [2 EQ 2]
|
||||||
|
G49
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
G90 (set absolute coordinates)
|
||||||
|
G53 G1 F[#<traverse_fr>] Z0 (move to z0 home position)
|
||||||
|
G53 G1 F[#<traverse_fr>] X#<tool_touch_x_coords> Y#<tool_touch_y_coords>
|
||||||
|
G53 G1 F[#<traverse_fr>] Z#<tool_touch_z_coords>
|
||||||
|
|
||||||
|
#<offset_z> = #5422 ;Stores the offset of the current Z coordinate.
|
||||||
|
|
||||||
|
G91
|
||||||
|
F #<fast_probe_fr>
|
||||||
|
G38.2 Z-[#<z_max_travel>] (fast tool probe)
|
||||||
|
#<z_fast_probe> = #5063 (save probe result of fast probe to parameters)
|
||||||
|
G1 F[#<traverse_fr>] Z[#<retract_distance>] (retract tool retract distance amount)
|
||||||
|
|
||||||
|
(Slow Probe Rule, if Slow Probe FR is set to 0, Slow Probe is Bypassed)
|
||||||
|
o120 if [#<slow_probe_fr> GT 0]
|
||||||
|
(Initiate Slow Z- Probe)
|
||||||
|
G91
|
||||||
|
F[#<slow_probe_fr>] (set probe slow feedrate)
|
||||||
|
G38.2 Z-[#<retract_distance> * 2] (slow tool probe)
|
||||||
|
#<z_slow_probe> = #5063
|
||||||
|
G90
|
||||||
|
G1 F[#<traverse_fr>] Z[#<z_slow_probe> + #<retract_distance>]
|
||||||
|
o120 endif
|
||||||
|
|
||||||
|
o130 if [#5070 EQ 1] (verify probe event was succesful)
|
||||||
|
#<z_slow_probe> = #5063 (save slow probe result to parameters)
|
||||||
|
o130 else
|
||||||
|
(DEBUG,Tool Length Offset Probe Failed)
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
(Tool Diameter Probe Mode Section, User must define this section as needed)
|
||||||
|
o140 if [#<tool_diameter_probe_mode> EQ 1]
|
||||||
|
(DEBUG, Tool Diameter Probing is Not Defined in Subroutine)
|
||||||
|
o140 endif
|
||||||
|
|
||||||
|
o150 if [3 EQ 3]
|
||||||
|
G49
|
||||||
|
o150 endif
|
||||||
|
|
||||||
|
G90 (set absolute coordinates)
|
||||||
|
G53 G1 F[#<traverse_fr>] Z0 (Send Spindle to home zero position)
|
||||||
|
|
||||||
|
(define new tool length offset parameters)
|
||||||
|
#<new_tool_length_offset> = [ABS[#<spindle_zero_height> + #5063 - #<offset_z>]]
|
||||||
|
|
||||||
|
G10 L1 P #5400 Z [#<new_tool_length_offset>] (5400 = tool number)
|
||||||
|
|
||||||
|
T #5400 G43 H #5400 (enable tool length offset)
|
||||||
|
|
||||||
|
M50 P1 (reinstate feedrate override)
|
||||||
|
|
||||||
|
o<tool_touch_off> endsub
|
||||||
|
|
||||||
|
M2 (end program)
|
||||||
137
subroutines/toolchange.ngc
Normal file
137
subroutines/toolchange.ngc
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
(author: Chris P)
|
||||||
|
(version: 0.2)
|
||||||
|
(date: 06/27/24)
|
||||||
|
|
||||||
|
o<toolchange> sub
|
||||||
|
|
||||||
|
; Parameter #3989 is used to track if the carousel is homed (M13) (volatile)
|
||||||
|
; Parameter #3990 is used to track the current tool pocket (persistently)
|
||||||
|
; Parameter #3991 is used to track the current tool loaded it in the spindle (persistently)
|
||||||
|
; Parameters #4001 to #4024 are used to track which tool is in which pocket (persistently)
|
||||||
|
; Parameter #4000 is not populated just used in the maths to calculate the above numbers
|
||||||
|
; #<number_of_pockets>: The number of pockets the ATC platter has, This is user set in the INI file via #<_ini[atc]pockets>
|
||||||
|
; #<atc_z_tool_change_height> The Z height your spindle needs to be at to clamp/unclamp a tool from the ATC platter (Set via INI [ATC]Z_TOOL_CHANGE_HEIGHT)
|
||||||
|
; #<atc_z_tool_clearance_height> The Z clearance height in machine coordinates that your spindle needs to be at to clear the tools during carousel rotation (Set via INI [ATC]Z_TOOL_CLEARANCE_HEIGHT)
|
||||||
|
|
||||||
|
(PRINT, o<toolchange> selected_tool: #<selected_tool>, tool_in_spindle: #<tool_in_spindle>, selected_pocket: #<selected_pocket>, current_pocket: #<current_pocket>, task: #<_task>)
|
||||||
|
|
||||||
|
o100 if [#<_task> EQ 0]
|
||||||
|
(DEBUG, Task is null)
|
||||||
|
o<toolchange> return [999]
|
||||||
|
o100 endif (this code eliminates tool missing error on load for multiple use tools)
|
||||||
|
|
||||||
|
; default to a 12 pocket ATC (matching DynATC Widget behaviour), then update based on INI settings
|
||||||
|
#<number_of_pockets> = 12
|
||||||
|
o110 if [EXISTS[#<_ini[atc]pockets>]]
|
||||||
|
#<number_of_pockets> = #<_ini[atc]pockets>
|
||||||
|
o110 endif
|
||||||
|
|
||||||
|
#<atc_z_tool_change_height> = -3.9000
|
||||||
|
o120 if [EXISTS[#<_ini[atc]z_tool_change_height>]]
|
||||||
|
#<atc_z_tool_change_height> = #<_ini[atc]z_tool_change_height>
|
||||||
|
o120 endif
|
||||||
|
#<atc_z_tool_clearance_height> = [#<_ini[AXIS_Z]MAX_LIMIT>-0.01]
|
||||||
|
o130 if [EXISTS[#<_ini[atc]z_tool_clearance_height>]]
|
||||||
|
#<atc_z_tool_clearance_height> = #<_ini[atc]z_tool_clearance_height>
|
||||||
|
o130 endif
|
||||||
|
|
||||||
|
; assign the variables passed by M6 change_prolog to some parameters
|
||||||
|
#100 = #<selected_tool>
|
||||||
|
#110 = #<tool_in_spindle>
|
||||||
|
#120 = #<selected_pocket>
|
||||||
|
#121 = #<current_pocket>
|
||||||
|
; NOTE:
|
||||||
|
; The legacy names *selected_pocket* and *current_pocket* actually reference
|
||||||
|
; a sequential tooldata index for tool items loaded from a tool
|
||||||
|
; table ([EMCIO]TOOL_TABLE) or via a tooldata database ([EMCIO]DB_PROGRAM)
|
||||||
|
; see Linuxcnc docs for further information on how these are used
|
||||||
|
|
||||||
|
o140 if [#<selected_tool> EQ #<tool_in_spindle>] ; checks if tool in the spindle is same as requested
|
||||||
|
(PRINT, Requested tool already in spindle)
|
||||||
|
(PRINT, o<toolchange> endsub)
|
||||||
|
o<toolchange> endsub [1]
|
||||||
|
M2
|
||||||
|
o140 endif
|
||||||
|
|
||||||
|
o150 if [#3991 NE #<tool_in_spindle>]
|
||||||
|
(PRINT, o<toolchange> tool_in_spindle does not match 3991)
|
||||||
|
o150 endif
|
||||||
|
|
||||||
|
#<next_pocket> = 0 ; assigns 0 to the next pocket for a later check if the tool is found in the carousel
|
||||||
|
#<open_pocket> = 0
|
||||||
|
#130 = #<number_of_pockets> ; assign test parameter the number of pockets in the carousel
|
||||||
|
|
||||||
|
o160 do
|
||||||
|
o161 if [#[4000 + #130] EQ #<selected_tool>] ; checks all pockets to see if it contains tool number requested as the new tool
|
||||||
|
#<next_pocket> = #130 ; if tool is found in pocket, assigns the next pocket
|
||||||
|
o161 endif
|
||||||
|
o162 if [#[4000 + #130] EQ 0] ; checks if the pocket is empty, last pocket checked will be the lowest empty pocket number, for putting tool in spindle away.
|
||||||
|
#<open_pocket> = #130
|
||||||
|
o162 endif
|
||||||
|
#130 = [#130 - 1]
|
||||||
|
o160 while [#130 GT 0]
|
||||||
|
o170 if [#<next_pocket> EQ 0] ; if tool is not found, aborts and sends a message
|
||||||
|
(abort, Tool T%d#<selected_tool> not found in carousel)
|
||||||
|
o170 endif
|
||||||
|
|
||||||
|
; now we know which pocket the next tool is sitting in
|
||||||
|
; we need to know if we need to put a tool away
|
||||||
|
; or if there is not tool in the spindle
|
||||||
|
|
||||||
|
o180 if [#<tool_in_spindle> GT 0] ; checks if there is a valid tool in the spindle
|
||||||
|
o181 if [#<open_pocket> EQ 0] ; If there is a tool in the spindle, checks if there is an open pocket
|
||||||
|
(abort, Carousel is full, cant put away tool T#<tool_in_spindle> in into carousel)
|
||||||
|
o181 endif
|
||||||
|
M10 P[#<open_pocket>] ; move carousel to an open pocket
|
||||||
|
M21 ; puts the tool in spindle away into the open pocket
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"dynatc"}.store_tool{#<open_pocket>, #<tool_in_spindle>}])
|
||||||
|
#140 = #<open_pocket>
|
||||||
|
#[4000 + #140] = #<tool_in_spindle> ; save tool number in pocket
|
||||||
|
#3991 = 0 ; empty tool in the spindle
|
||||||
|
M61 Q0
|
||||||
|
G49
|
||||||
|
o180 endif
|
||||||
|
|
||||||
|
G90
|
||||||
|
G0 G53 Z#<atc_z_tool_clearance_height> ; move z to clear height
|
||||||
|
|
||||||
|
o190 if [#<selected_tool> GT 0] ; selected tool is not tool0
|
||||||
|
M10 P#<next_pocket> ; set the carousel to move to the right pocket for the selected tool
|
||||||
|
M65 P1
|
||||||
|
M64 P0
|
||||||
|
M66 P1 L3 Q5 ; check carousel out position sensor
|
||||||
|
o191 if [#5399 LT 0]
|
||||||
|
M65 P0 ; turn off the solenoid to send atc to tool change
|
||||||
|
(abort, Failed to send carousel home) ; abort if the sensor does not activate in 5 seconds
|
||||||
|
o191 endif
|
||||||
|
M65 P0
|
||||||
|
|
||||||
|
(DEBUG, EVAL[vcp.getWidget{"dynatc"}.store_tool{#<next_pocket>, 0}])
|
||||||
|
M22 ; Carousel out
|
||||||
|
#150 = #<next_pocket>
|
||||||
|
#[4000 + #150] = 0 ; empty the pocket
|
||||||
|
#3991 = #<selected_tool> ; Set persistent variable to remember tool in spindle after power cycle
|
||||||
|
o190 else
|
||||||
|
M65 P2 ; deactive drawbar
|
||||||
|
M65 P0 ; make sure ATC out solenoid is off
|
||||||
|
M64 P1 ; move carousel home
|
||||||
|
M66 P0 L3 Q4 ; check carousel in position sensor
|
||||||
|
o192 if [#5399 LT 0]
|
||||||
|
M65 P1 ; turn off the solenoid to send atc home
|
||||||
|
(abort, Failed to send carousel home) ; abort if the sensor does not activate in 5 seconds
|
||||||
|
o192 endif
|
||||||
|
M65 P1
|
||||||
|
o190 endif
|
||||||
|
|
||||||
|
M61 Q#<selected_tool>
|
||||||
|
|
||||||
|
o200 if [1 EQ 1]
|
||||||
|
G43 H#<selected_tool>
|
||||||
|
o200 endif
|
||||||
|
|
||||||
|
o<program_coolant> call
|
||||||
|
|
||||||
|
(PRINT, o<toolchange> endsub)
|
||||||
|
o<toolchange> endsub [1]
|
||||||
|
|
||||||
|
M2
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user