G64 turns on Look Ahead and so does any one of G641 to G645. These preparatory functions are called continuous path control.
Continuous path control is a broadly defined concept that includes Look Ahead and a number of functions that are subordinate to it. However, Continuous Path Control and Look Ahead are the same thing from the point of view of the programmer and operator.
Look Ahead seeks to achieve a smooth, continuous velocity along the interpolated path, trying as much as possible to hold the velocity constant at the programmed feedrate without exceeding the dynamic limits of the axes. When the dynamic limits would exceed the programmed feedrate the axes have to slow down much like a car slows down to take a turn at an unprotected intersection.
To continue with the car analogy, Look Ahead can be compared to driving a winding road in hill country with radar vision. Since you can see ahead you do not have to stop to see if the road is washed out over the next hill.
Look Ahead is turned off with G60. G60 is called the exact stop mode. It is like stopping for stop signs at every intersection.
Continuous path control needs Look Ahead to do its thing. Its thing is to smooth corners while keeping the path velocity as close to the programmed feedrate as possible. In the main, it accomplishes this by inserting rounding blocks at corners and by limiting velocity and acceleration so the axes do not flutter at block transitions.
The rounding blocks that span the corner to "connect" two contour elements smoothly are akin to the wedges used by picture framers to hold the corners together. These wedges are called splines. Thus, spline is my prefered term for the inserted rounding block that connects two contour elements. Coincidently, the contour of the rounding block is a polynomial produced by the 840D's b-spline algorithm. Thus it is more correct to talk about inserting a spline block at corners as opposed to a rounding block since the inserted path is not the arc of a circle. However, Siemens documentaion calls them rounding blocks and so will I.
Back to G64 & G641 - G645 and Overload Factor versus Compressor Tolerance . . .
The Overload Factor is a machine data setting. It is used by the 840D to limit the step change in velocity at a corner. I will discuss the vector diagram later that illustrated how there can be a step change in velocity at a point while the velocity remains constant. For the time being . . .
If the step change at the programmed feedrate exceeds the maximum allowable step change of the Overload Factor equation (discussed later), the 840D decelerates into the corner so that when the tool enters the corner the servos can accomplish the step change and thus, the change in direction, in one period of the interpolation cycle.
The formal Siemens documentation does not say that the corner is actually commanded to be taken in one cycle. To compound the matter, the one cycle change in direction cannot be conclusively inferred from the definition of the Overload Factor because at other places in the documentation Siemens implies that a rounding block is inserted in the corner. My attempts to get clarification on this have not addressed the contradictory nature of the documentation. Thus, when I write that with G64, corner smoothing is a consequence of residual following error I am not 100% confident that this tells the whole story.
Uncertainty with regards to G64's precise behavior is not a burning issue for most programmers. However, for people who seek to be problem solvers, an in-depth understanding of any detail of CNC is often a lever to understand other details that don't have a legacy of practice to give us confidence that it works even if we do not fully understand why.
There is no uncertainty in the documentation with regards to the 3-digit G64x and especially G642, the one must used. Corner smoothing is achieved by inserting a rounding block between two blocks whose intersection is a corner. The block must pass within the Compressor Tolerance of the corner point. Like the Overload Factor, the Compressor Tolerance is a machine data setting that I discuss in my post on Cycle832. I also discuss the Compressor Tolerance in my Directory of Terms. If you have the wherewithal to read my posts you should definitely email me BleierCNCTrainin@gmail.com for an e-copy.
You would typically use G64 for 2 ½ machining and G642 for high speed kellering and 5-axis aerospace contouring. Your machine tool builder may advise you differently since there are slight differences between individuals of the 3-digit group.
Siemens recommends you use G642 with CompCurv and CompCad. This recommendation needs elaboration since CompCurv/CompCad are themselves smoothing functions. So, here we go . . .
CompCurv/CompCad are b-spline algorithms that act on short G01 blocks to produce one polynomial block out of a sequence of G01 blocks (typically 5 to 10 G01 blocks in the sequence). This one block blends tangentially with the the polynomial block produces by the next sequence of G01 blocks and on and on. As a consequence of this tangential blending there are no corners. However, there can be corners when the algorithm temporarily suspends doing its thing at an intersection point where the next block is very long or the next block is not a G01 block. In this case the intersection between the most recently produced polynomial block and the the next block could be a corner and G64/G642 (whichever you use) would do its thing at this corner and any subsequent corners until CompCurv/CompCad resume producing polynomial blocks.
By default, a long G01 block is longer than 20 mm (0.7874 inches).
The best recommendation regarding G64 or G642 (or another member of the 3-digit G-codes) should come from your machine tool builder because he is the one who knows how the servos were optimized.
If your machine tool builder is no longer in the picture, or heavens forbid, he doesn't know, you may be left with trial and error to discover what works best. In this case, you may find my additional discussion below useful.
---------------------
Newtonian mechanics is part of a deeper discussion of continuous path control since CNC moves masses. It moves masses with servos. Servo is about negative feedback to control the position, velocity and acceleration of masses. With regards to servos it is probably sufficient to say that servo optimization consumes some choices. For example, if your axes have been optimized with Feed Forward turned on, whether you machine with FFWON or FFWOF is a choice that has already been made; you must always machine in FFWON.
About G64 . . .
The people who developed the 840D decided that the Overload Factor would be used to limit velocity steps at corners when G64 is active.
To understand velocity steps we need to recall that velocity is a vector with magnitude and direction. With G64, only the direction changes at corners. However, even a directional change results in a change in velocity as illustrated in the vector diagram below where the length of arrows Vin and Vout is the same. The velocity change is the ΔV arrow.

If the feedrate into and out of an intersectional point at the corner of two linear blocks is 100 in/min, the magnitude of the change in velocity at a 90 degree corner is 141.4 in/min (the square root of the sum of the squares). This is a step change in velocity since it occurs at the point. Keep in mind that the 141.14 is not the velocity at the point but rather, the change in the velocity vector at the point.
ΔV is also called the velocity jump and velocity step.
ΔV is limited according to the following equation:
ΔV <= axis_acceleration * (overload_factor-1) * IPO where
axis_acceleration is the linear acceleration of the least dynamic axis of the axes involved in the path interpolation. The axial linear acceleration is in MD32300 $MN_MAX_AX_ACCEL.
overload_factor is a value set in machine data 32310 $MN_Max_Accel_Ovl_Factor
IPO is the period of the interpolation cycle
The interpolation cycle is called the IPO (pronounced with long ee-PO) and just as often IPO means the period of the cycle. Ball park periods are 2 milliseconds for high speed machines and 4 milliseconds for machines with serious ambitions for high speed. Lets suppose it is 4 milliseconds. Every 4 milliseconds the CNC samples the interpolation function to output an incremental set point to the position control servos.
We get acceleration when we divide both sides of the equation by IPO, and since IPO is a scalar, this acceleration is in the direction of the ΔV vector.
ΔV/IPO <= axis_acceleration * (overload_factor-1)
This acceleration - the consequence of a step increase in thrust impressed on the load through the drive linkages and originating from a rapid increase in torque from the motor - acts for one IPO.
The default setting for the Overload Factor is 1.2. In this case, the acceleration ΔV/IPO is 20% of the linear acceleration of the least dynamic axis.
To be sure, an infinite acceleration would be required for the direction to change at a point. However, the change can occur on a dime because a dime has a radius. The radius of the dime is the travel that can occur in the time of one IPO at the feedrate of the tool when it enters the dime.
[To my international readers, a dime is smaller in size than the U.S. penny. Its value is 1/10 of a dollar. In the U.S. we say that a car cannot stop on a dime.]
To return to the 100 in/min example, if the interpolation period is 4 milliseconds, the ΔV/IPO acceleration is 589.25 in/sec2. This is 1.53G since 1G is 386.0892 inches/sec2. If the corner is actually taken at a feedrate of 100 in/minute, the X and Y servos must be able to accelerate the X and Y axes at 1.08G and the CNC must be told that it can do its calculation on the assumption that the axes can accelerate/decelerate at 1.08G without going unstable.
If the axes cannot accelerate/decelerate simultaneously this quickly, the CNC must decelerate into the corner so that its velocity at the start of the interpolation cycle wherein the change in direction will occur is small enough so that ΔV of the equation is not exceeded.
The Siemens manual says that G64 takes corners at a constant velocity. This means the magnitude of the velocity out of the dime is equal to the magnitude into the dime. Having come out of the dime the axes accelerate back to the programmed feedrate.
To return to the acceleration of the vector diagram – ΔV/IPO – this acceleration is a consequence of the thrust generated by the servos. If linear motors are used, the thrust is generated directly by the interaction of magnetic fields. If rotary motors are used, mechanical linkages convert motor torque into thrust. Typical linkages are ball screw & ball nut and rack & pinion.
[The servo drives must be able to generate changes in linear motor thrust or rotary torque in much shorter time periods than the IPO. The torsion wave must be able to travel smoothly through the drive linkages.]
The acceleration – ΔV/IPO – is lateral acceleration. Lateral acceleration is sideways to the motion.
When you drive a car quickly along a tight radius, your inertia keeps you moving in a straight line. The door collides with you and pushes on you. This push is the force that produces the lateral acceleration that keeps you with the car. Of course, in a real world situation, some of the lateral force is from the contoured seat back, the seat belt and the static friction between your bottom and the seat. Still, if you go fast enough and the car stays on the curve these contributions may not be enough to prevent the door from smashing into you.
Physicists use the term centripetal acceleration for lateral acceleration. Your science teacher may have called it centrifugal acceleration. Your teacher was wrong. The force that keeps a mass on a curve is inward acting and centripetal is the term that names the acceleration that is a consequence of this.
Back to CNC axes . . . , the lateral acceleration is a fraction of the linear acceleration and this fraction is determined by the Overload Factor that has already been mentioned. An Overload Factor of 1.2 means that the limit on lateral acceleration is 20% of the linear acceleration of the least dynamic axis of the axes involved in the path interpolation. Thus, if the least dynamic axis is limited to 0.5G of linear acceleration, the lateral acceleration is limited to 0.1G.
However, ΔV is limited, not ΔV/IPO. The CNC uses the 0.1G to calculate an upper bound for feedrate and if this upper bound exceeds the programmed feedrate the CNC decelerates the axes into the corner so that when the last IPO of the interpolation function is due, the feedrate into the dime is <= the upper bound.
The Overload Factor is a machine data setting that is established when the servos are optimized. The factor is a compromise between cycle time and surface finish. If the factor is too high for the rigidity of the mechanical elements the axes will flutter at corners (same as saying "oscillate at corners") and this will be recorded in the surface finish. The Overload Factor can be higher for roughing if the flutter is not so severe that it degrades the mechanical rigidity of the linkages.
Ideally, the machine tool builder employs Cycle832 to set the Overload Factor for the mode of machining (roughing, semi-finishing, finishing).
The servos may be able to drive the tool into a change of direction that is greater than our example 0.1G. However, the mechanical linkages may not be able to withstand the inertial forces that this produces. In other words, the axes are not rigid enough. They will tend to flutter and degrade the surface finish. Engineers who do servo optimization have software tools that reside in the CNC to observe the behavior of the axes and determine an optimum value for the Overload Factor.
To repeat what has already been said, if the velocity step to take the the next corner exceeds the maximum velocity step derived from the Overload Factor, the CNC must decelerate the tool along the interpolated path as the tool approaches the corner so that when the interpolation cycle comes due to make the change in direction, the magnitude of the feedrate is reduced so that the velocity step stays within bounds.
If the Overload Factor is set to "1" the allowable step change in velocity is "0". In this case, the CNC must bring the path axes to a stop at corners and G64 appears the same as G60.
With regards to G64 at tangential intersections, the intersection between two blocks is not a corner when the geometric elements blend together tangentially such as a line meeting the arc of a circle tangentially. There is no step change in velocity at a tangential intersection so the Overload Factor is not at play here. However, there is a step in lateral acceleration since lateral acceleration is always required to achieve curved motion. Unless there is another scheme to limit this acceleration the servos get on with doing what they do without constraints. The shock of this step can cause flutter that gets recorded in the surface finish.
For the record, G643 employs the Overload Factor to limit lateral steps in acceleration at tangential intersections.
By the way, a linear acceleration of 0.5G is very dynamic. The upper limit on mechanical drive systems for small machine tools is roughly 2G but normally, accelerations of this magnitude require linear motors.
By the way again: A "G" is the acceleration of gravity at the Earth surface. It is 9.8067 meters/second per second. It is 32.1741 feet/second per second.
About G642 . . .
G642 does smoothing by inserting a rounding block (b-spline) at the corner. The path must pass within the so-called Compressor Tolerance of the corner. The easiest way to set the Compressor Tolerance is with Cycle832 discussed in another post.