G61, G64, G60 G-Code: Exact Stop & Anti-Backlash for Precise Position
G09 / G61 G-Code: Exact Stop Check
G61 G-Code Exact stop check is useful for improving the accuracy of your g-code programs. It causes the machine to wait until the cutter is finished and exactly on position before continuing. It often triggers the trajectory planner in the controller to be more careful about ensuring moves are exactly on target. G61 is all about controlling the acceleration of the feedrate, in other words.
Why is such a thing needed, and why doesn’t the control always operate in Exact Stop check Mode?
Consider that tight high speed maneuvers may exceed the acceleration capabilities of the machine, forcing it to fall behind and start trying to play catch-up via the servo feedback loop. Exact stop check simply makes the machine close the error (distance from commanded position to actual position) to zero before continuing. The disadvantage is that it may make the program slower for no good reason. We don’t necessarily need the machine to be exactly on target when roughing, for example. The role of the finish pass is to clean up the inaccuracies of the roughing pass. Think of Exact Stop Check as being something that’s in your tool kit to pull out if you know you have a problem, either because you’re seeing a problem in the parts, or because you know from experience that you’re going to see problems.
Exact stop check is available in two forms. G09 is a one-shot command whereas G60 is a modal command. When you specify G61, it is as though an exact stop check happens at the end of each move the machine makes.
Before we go on to explain Exact Stop mode in detail, it should be noted that not all controls support it. Some give an error, while others will accept but ignore it.
G64 G-Code: Cancel Exact Stop
Use the G64 command to cancel a G61. G09 needs no cancelling as it is automatically cancelled when the program goes to the next block.
G60 G-Code: Single Direction Move (Anti-Backlash)
Speaking of having problem-solving solutions in our toolkit, let’s talk about Single Direction Moves. Every machine has some backlash, the question is, “How much and what do we do about it?” A typical CNC that is operating in good repair has so little backlash that it doesn’t really matter for most operations. Still, there is some backlash there, and there are some operations that need to be extremely accurate, so we want to be able to perform them without the error of the backlash. That’s a time when we pull G60 out of our toolkit and try Single Direction Moves.
Backlash only shows up when we reverse direction. Manual machinists are used to operation on machines that have loads of backlash–so much that climb milling can be dangerous on such machines. Yet they manage to do extremely accurate work. The reason is that they know to approach the cut from only one direction after all the backlash has been taken out. If they must reverse direction, they pull back far enough that they can feed back past any backlash before engaging in the cut. This is basically what G60 does for CNC.
To learn more about Backlash, see our detailed article on Backlash, How to Measure Backlash, and various Anti Backlash Cures.
What sorts of operations require this kind of precision?
Well, consider probing operations using an electronic touch probe. Clearly we want their measurements to be as accurate as possible. Probing is typically done in one direction at a time anyway, so using a Single Direction Move is a natural.
The G60 operates by taking an XYZ coordinate, so moves look something like this:
That little code snippets move to Y0Y0 with rapids, then makes a G60 move to the right 1 inch followed by a return to 0, and finishes with a move upward 1 inch. We have to specify the G60 on each line because G60 is a one-shot g-code rather than a modal g-code.
1. Try writing a program that has a lot of sharp corners and high speed moves and then add a G61 to compare the results.
2. Experiment with some Single Direction Moves to improve accuracy in your programming.