CNC | G09 and G61 Codes | Exact Stop

G09 and G61 Codes Introduction

During a typical contouring operation, the direction of cutting motion is changed quite often. There is nothing unusual about it, with all the intersections, tangency points and clearances. In contouring, it means that in order to program a sharp corner on a part, the tool motion along X-axis in one block will have to change into a motion along Y-axis in the next block. To make the change from one cutting motion to another, control must stop the X- motion first, then start the Y-motion. Since it is impossible to start at a full feedrate instantly, without acceleration, and equally impossible to stop feedrate without deceleration, a possible cutting error may occur. This error may cause sharp corners on the part contour to be cut with an undesirable overshoot, particularly during very high feedrates or extremely narrow angles. It only occurs during a cutting motion in G01 mode, as well as in G02 and G03 modes, but not in rapid motion mode G00. During rapid motion, motion deceleration is automatic - and away from the part.

In routine CNC machining, there is a small chance of ever encountering such an error. Even if the error is present, it will likely be well within tolerances.

If the error does need correction, Fanuc controls provide two commands that can be used to correct the problem:

G09 and G61 Codes Format

G09 : Exact stop (one block only)
G61 : Exact stop mode (modal)

Exact stops increase the cycle time. For programs used on older machines, they may be required in some cases.

Exact Stop Command (G09) and Examples

The first of two commands that control the feedrate when machining around corners is G09 command - Exact Stop. This is an unmodal command and has to be repeated in every block, whenever it is required.

In program example O1301, there is no provision for acceleration and deceleration. That may cause uneven corners, due to the rather high feedrate of F90.0 (in/min):

O1301 (Normal cutting)
N13 G00 X15.0 Y12.0 ;
N14 G01 X19.0 F90.0 ;
N15 Y16.0 ;
N16 X15.0 ;
N17 Y12.0 ;

By adding G09 exact stop command in the program, the motion in that block will be fully completed before the motion in the other axis will start - O1302:

O1302 (G09 Cutting)
N13 G00 X15.0 Y12.0
N14 G09 G01 X19.0 F90.0
N15 G09 Y16.0
N16 G09 X15.0
N17 Y12.0

Example O1302 guarantees a sharp corner at all three positions of the part. If only one corner is critical for sharpness, program the G09 command in the block that terminates at that corner - O1303:

O1303 (G09 Cutting) ;
N13 G00 X15.0 Y12.0 ;
N14 G01 X19.0 F90.0 ;
N15 G09 Y16.0 ;
N16 X15.0 ;
N17 Y12.0 ;

G09 command is useful only if a handful of blocks require deceleration for a sharp corner. For a program where all corners must be precise, constant repetition of G09 is not very efficient.

Exact Stop Mode Command (G61) and Example

The second command that corrects an error at sharp corners is G61 - Exact Stop Mode. It is much more efficient than G09 and functions identically. The major difference is that G61 is a modal command that remains in effect until it is canceled by G64 cutting mode command. G61 shortens programming time, but not the cycle time. It is most useful when G09 would be repeated too many times in the same program, making it unnecessarily too long - O1304.

O1304 (G61 Cutting) ;
N13 G00 X15.0 Y12.0 ;
N14 G61 G01 X19.0 F90.0 ;
N15 Y16.0 ;
N16 X15.0 ;
N17 Y12.0 ;
N18 G64 ;

Note that program example O1304 is identical in results to program O1301. In both cases, exact stop check applies to all cutting motions - unmodally in program O1301, modally in program O1304. Also note an additional block - N18. It uses G64 command - normal cutting mode. Normal cutting mode is the default setting when machine power is turned on and is not usually programmed. Figure 13-1 illustrates tool motion with and without G09/G61 command. The large overshoot amount shown is exaggerated only for the illustration, in reality it is very small.

Figure 13-1
Feedrate control around corner - Exact Stop commands
The overshoot is exaggerated for clarity

Usage Details in Other Modes

Automatic Corner Override

While a cutter radius offset is in effect for milling cutters, feedrate at the contour change points is normally not overridden. In a case like this, the preparatory command G62 can be used to automatically override cutting feedrate at the corners of a part. This command is active until G61 command (exact stop check mode), G63 command (tapping mode), or G64 command (cutting mode) is programmed.

Tapping Mode

Programming in tapping mode G63 will cause the control system to ignore any settings of feedrate override switch, except the 100% setting. It will also cancel function of the feedhold key, located on control panel. Tapping mode will be canceled by programming G61 command (exact stop check), or G62 command (automatic corner override mode selection), or G64 command (cutting mode selection).

Cutting Mode

When cutting mode G64 is programmed or is active by the system default, it represents normal cutting mode. When this command is active, exact stop check G61 will not be performed, neither will automatic corner override G62 or tapping mode G63. That means motion acceleration and deceleration will be done normally (as per control system) and feedrate overrides will be effective. This is the most common default mode for a typical control system.

Cutting mode can be canceled by programming the following commands: G61 (exact stop mode), G62 (automatic corner override mode) or G63 (tapping mode).

G64 command is not usually programmed, unless one or more of other feedrate modes are used in the same program. To better understand G62 and G64 modes, compare illustrations in Figure 13-2.

Figure 13-2
Corner override mode G62 and default G64 cutting mode