Skip to content
4 changes: 2 additions & 2 deletions docs/src/config/ini-config.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -558,9 +558,9 @@ The maximum number of `USER_M_PATH` directories is defined at compile time (typ:
Allow to clear the G92 offset automatically when config start-up.
* `DISABLE_FANUC_STYLE_SUB = 0` (Default: 0)
If there is reason to disable Fanuc subroutines set it to 1.
* 'PARAMETER_G73_PECK_CLEARANCE = .020' (default: Metric machine: 1mm, imperial machine: .050 inches)
* 'G73_PECK_CLEARANCE = .020' (default: Metric machine: 1mm, imperial machine: .050 inches)
Chip breaking back-off distance in machine units
* 'PARAMETER_G83_PECK_CLEARANCE = .020' (default: Metric machine: 1mm, imperial machine: .050 inches)
* 'G83_PECK_CLEARANCE = .020' (default: Metric machine: 1mm, imperial machine: .050 inches)
Clearance distance from last feed depth when machine rapids back to bottom of hole, in machine units.

[NOTE]
Expand Down
18 changes: 10 additions & 8 deletions docs/src/gcode/g-code.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -1811,7 +1811,7 @@ It is an error if:

[source,{ngc}]
----
G73 X- Y- Z- R- Q- P- <L->
G73 X- Y- Z- R- Q- D- <L->
----

* 'R' - retract position along the Z axis.
Expand All @@ -1820,15 +1820,16 @@ G73 X- Y- Z- R- Q- P- <L->

The 'G73' cycle is drilling or milling with chip breaking.
This cycle takes a Q number which represents a 'delta' increment along
the Z axis. Peck clearance can be specified by optional P number.
the Z axis. Peck clearance can be specified by optional D number.

* Preliminary motion.
** If the current Z position is below the R position, The Z axis does
a <<gcode:g0,rapid move>> to the R position.
** Move to the X Y coordinates
* Move the Z-axis only at the current <<sec:set-feed-rate,feed rate>>
downward by delta or to the Z position, whichever is less deep.
* Rapid up .010 of an inch or 0.254 mm.
* Rapid up either the D value, the G73_PECK_CLEARANCE specified in the
INI file or the default of .010" / 0.254 mm.
* Repeat steps 2 and 3 until the Z position is reached at step 2.
* The Z axis does a rapid move to the R position.

Expand Down Expand Up @@ -2408,25 +2409,26 @@ seconds at the bottom of the hole.

[source,{ngc}]
----
G83 (X- Y- Z-) or (U- V- W-) R- L- Q- P-
G83 (X- Y- Z-) or (U- V- W-) R- L- Q- D-
----

The 'G83' cycle (often called peck drilling) is intended for deep
drilling ormilling with chip breaking. The retracts in this cycle clear
drilling or milling with chip breaking. The retracts in this cycle clear
the hole of chips and cut off any long stringers (which are common when
drilling in aluminum). This cycle takes a Q number which represents a
'delta' increment along the Z-axis. The retract before final depth will
always be to the 'retract' plane even if G98 is in effect. The final
retract will honor the G98/99 in effect. G83 functions the same as G81
with the addition of retracts during the drilling operation. Peck clearance
can be specified by optional P number.
with the addition of retracts during the drilling operation. Peck
clearance can be specified by optional D number.

* Preliminary motion, as described in the
<<gcode:preliminary-motion,Preliminary and In-Between Motion>> section.
* Move the Z-axis at the current <<sec:set-feed-rate,feed rate>>
downward by delta or to the Z position, whichever is less deep.
* Rapid move back out to the retract plane specified by the R word.
* Rapid move back down to the current hole bottom, less .010 of an inch or 0.254 mm.
* Rapid up either the D value, the G83_PECK_CLEARANCE specified in the
INI file or the default of .010" / 0.254 mm.
* Repeat steps 2, 3, and 4 until the Z position is reached at step 2.
* The Z-axis does a <<gcode:g0,rapid move>> to clear Z.

Expand Down
14 changes: 7 additions & 7 deletions src/emc/rs274ngc/interp_check.cc
Original file line number Diff line number Diff line change
Expand Up @@ -252,13 +252,13 @@ int Interp::check_other_codes(block_pointer block) //!< pointer to a block
CHKS(is_a_cycle(motion), NCE_CANNOT_PUT_A_C_IN_CANNED_CYCLE);
}
if (block->d_flag) {
CHKS(((block->g_modes[GM_CUTTER_COMP] != G_41) && (block->g_modes[GM_CUTTER_COMP] != G_42) &&
(block->g_modes[GM_CUTTER_COMP] != G_41_1) && (block->g_modes[GM_CUTTER_COMP] != G_42_1) &&
(motion != G_70) &&
(motion != G_71) && (motion != G_71_1) && (motion != G_71_2) &&
(motion != G_72) && (motion != G_72_1) && (motion != G_72_2) &&
(block->g_modes[GM_SPINDLE_MODE] != G_96)),
_("D word with no G41, G41.1, G42, G42.1, G71, G71.1, G71.2 or G96 to use it"));
CHKS(((block->g_modes[7] != G_41) && (block->g_modes[7] != G_42) &&
(block->g_modes[7] != G_41_1) && (block->g_modes[7] != G_42_1) &&
(motion != G_70) && (motion != G_71) && (motion != G_71_1) &&
(motion != G_71_2) && (motion != G_72) && (motion != G_72_1) &&
(motion != G_72_2) && (motion != G_73) && (motion != G_83) &&
(block->g_modes[14] != G_96)),
_("D word with no G41, G41.1, G42, G42.1, G71, G71.1, G71.2 G73, G83 or G96 to use it"));
}

if (block->dollar_flag) {
Expand Down
4 changes: 2 additions & 2 deletions src/emc/rs274ngc/interp_cycles.cc
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ int Interp::convert_cycle_g83(block_pointer block,
Thanks to Billy Singleton for pointing it out... */
CHKS((delta <= 0.0), NCE_NEGATIVE_OR_ZERO_Q_VALUE_USED);

rapid_delta = block->p_flag?block->p_number:_setup.parameter_g83_peck_clearance;
rapid_delta = block->d_flag?block->d_number_float:_setup.parameter_g83_peck_clearance;

for (current_depth = (r - delta);
current_depth > bottom_z; current_depth = (current_depth - delta)) {
Expand Down Expand Up @@ -215,7 +215,7 @@ int Interp::convert_cycle_g73(block_pointer block,
Thanks to Billy Singleton for pointing it out... */
CHKS((delta <= 0.0), NCE_NEGATIVE_OR_ZERO_Q_VALUE_USED);

rapid_delta = block->p_flag?block->p_number:_setup.parameter_g73_peck_clearance;
rapid_delta = block->d_flag?block->d_number_float:_setup.parameter_g73_peck_clearance;

for (current_depth = (r - delta);
current_depth > bottom_z; current_depth = (current_depth - delta)) {
Expand Down
4 changes: 2 additions & 2 deletions src/emc/rs274ngc/rs274ngc_pre.cc
Original file line number Diff line number Diff line change
Expand Up @@ -930,8 +930,8 @@ int Interp::init()
_setup.c_indexer_jnum = atol(*inistring);
}
inifile.Find(&_setup.orient_offset, "ORIENT_OFFSET", "RS274NGC");
inifile.Find(&_setup.parameter_g73_peck_clearance, "PARAMETER_G73_PECK_CLEARANCE", "RS274NGC");
inifile.Find(&_setup.parameter_g83_peck_clearance, "PARAMETER_G83_PECK_CLEARANCE", "RS274NGC");
inifile.Find(&_setup.parameter_g73_peck_clearance, "G73_PECK_CLEARANCE", "RS274NGC");
inifile.Find(&_setup.parameter_g83_peck_clearance, "G83_PECK_CLEARANCE", "RS274NGC");

inifile.Find(&_setup.debugmask, "DEBUG", "EMC");

Expand Down
Loading