Skip to content
Contact Get Started

Canned Cycles

A canned cycle turns one line into a whole hole. You state how the hole is made once, and every position after that drills it.

G98 G81 X10. Y20. Z-12. R2. F250. (drill the first hole)
X30. Y20. (and another, same everything)
X50. Y20.
G80 (done)

Everything about how stays modal until G80 cancels it. The lines in between carry coordinates and nothing else.

The code list names every cycle in one line each. This page is the rest: which one to pick, the words they take, and the handful of rules that cause a refused block, a crash or a broken tap.

Not to be confused with Cycle Programming, which is the panel form that writes these cycles for you. This page is the G-code itself.

CodeAt the bottomComes out
G73pecks with a short retract to break the chiprapid
G74left-hand tap, reversing the spindlefeed
G76fine boring: orients the spindle and shifts away from the wallrapid
G81nothingrapid
G82dwellsrapid
G83pecks, retracting fully to clear the chip each timerapid
G84tap, reversing the spindlefeed
G85nothingfeed
G86stops the spindlerapid
G87nothing; see belowrapid
G88nothing; see belowrapid
G89dwellsfeed

G80 cancels whichever is active.

G87 and G88 run as a plain drilling cycle: feed to depth, rapid out. They do not back bore, and G88 does not stop for you to retract by hand. Do not program a part that depends on either behaviour.

The difference between G81 and G85 is the way out: G81 rapids clear, G85 feeds out and cuts on the way. That is what makes G85 a reaming cycle and G81 a drilling one.

WordMeansNotes
Zhole bottommodal: a later position drills to the same depth
Rthe plane the tool feeds frommodal, same as Z
Qpeck depthG73, G83; the shift amount for G76
Pdwell at the bottomwhole milliseconds, no decimal point
Ffeed
Lhow many times to repeat, in this block only

Half a second is P500. Writing P0.5 is refused rather than accepted. Read as milliseconds it would be half of one thousandth of a second, which is not what anyone means by it.

L is not modal. L2 repeats in the block that carries it, and the next block is back to one.

L0 is the useful case: it stores the cycle’s data without drilling. That is how a program sets a cycle up on a line of its own and lets bare coordinates underneath do the drilling:

G98 G83 Z-12. R2. Q3. L0 F250. (set up, drill nothing)
X10. Y20. (now drill)
X30. Y20.

Without L0 that first line would drill a hole wherever the tool happened to be standing, because Z and R already make it a block with axis words.

L0 has to come before F. Words are expected in a fixed order within a block, and a word out of place is refused:

OrderWords
1G
2the axes X Y Z A B C U V W, and R Q P L H D
3I J K
4F
5S
6T
7M

L sits with the axis words, so the setup line ends ... R2. L0 F250. and never ... F250. L0. When a block looks correct and is still rejected, check this first. Every word on the line is legal, so nothing looks wrong.

CodeThe tool returns to
G98the level it was at when the cycle started
G99the R plane

G99 is faster because the tool lifts less. G98 is what you want when there is a clamp, a rib or a fixture between the holes. With G99 the tool traverses at the R plane and will hit it.

G84 and G74 feed in, reverse the spindle at the bottom, and feed back out. The retract is never a rapid, because the tap is still in the thread.

This is the cycle a floating or compensating tap holder needs, and the holder is what takes up the difference between the feed and the thread pitch. Rigid tapping is a separate option; see the Feature List.

A cycle stays modal across blocks that carry no axis words, which includes a tool change. Cancel with G80 before changing tools. Otherwise the tool block’s own retract move becomes another hole.

Cycle Programming fills these in from a form on the panel: you enter the hole and the positions, and it writes the program.