An important concept that pops up from time to time is a CNC machine’s ability to accelerate. Acceleration is often the real limiting factor to the machine’s motion, more so than absolute rapids speeds, for example. In many real world g-code programs, the cutter may never get up to the commanded speed in some of the blocks. This will cause the program to run more slowly than expected, so understanding what’s at work can either help us make the program faster or make our estimate of its running time more accurate.

Why does inadequate acceleration lead to the cutter never reaching the commanded speed?

Simply put, if the move is too short, there is not enough distance to accelerate to full speed. This can be true for both rapids and feed motion for g-codes like G01 (straight lines) and G02/G03 (arcs). The shorter the distance moved, the less likely the cutter will get to full speed by the end of the move. Clearly, very short moves may suffer more than longer moves. If your CADCAM software is simulating a curve with very short line segments, your g-code program is almost certainly suffering from this problem.

Here is a table that shows the minimum distance needed to accelerate to 100 IPM with various machine acceleration capabilities:

So, for example, to accelerate from a dead stop to 100 IPM takes 1.157 inches if the machine is limited to 0.1g of acceleration. Even at higher accelerations, the distances are surprisingly large by machining tolerances standards. You can begin to see that a machine that has very high rapids, say 1200 IPM, but not enough acceleration, will hardly ever be able to take advantage of those rapids. Note how short the times get at higher accelerations. It takes 1.5 thousandths of a second to go from 0 to 100 IPM on a machine with 1.5g’s of acceleration. A machine like that is going to need a pretty fast computer indeed inside its controller to stay on top of everything that’s going on. If you think about how fast the controller has to work to stay ahead of the machine’s motion, you can also get some idea of the importance of lookahead. Lookahead is the ability of the control to look a number of g-code blocks beyond the current one executing to see what will happen in the future. If the blocks are moving very short distances, even more lookahead will be needed to stay in control of the situation. Hopefully you’re beginning to get a notion of how much more difficult the controller’s job is the faster the machine is going and the more and shorter the g-code blocks are that it is interpreting.

**What are Your CNC Milling Machine’s Acceleration Limits?**

Before we get into looking at the effects of acceleration on cycle times, it would be good to know what the acceleration limits of your CNC milling machine are. This information may be quoted in your manuals or available from the manufacturer, but often it’s hard to come by. Fortunately, determining your machine’s maximum acceleration is a pretty straightforward exercise. Probably the easiest way to do it is using interpolated holes. Given an interpolated hole of radius r, and an acceleration of a, the feedrate that achieves that acceleration is given by:

Feedrate = SQRT( a * r )

Note that the three values must be in compatible units. So, for a feedrate of IPM (inches per minute), you want an acceleration expressed as IPM squared, and a radius in inches. I prefer to keep up with acceleration in g’s, so to convert 1 G of acceleration to inches per minute squared, multiply by 43,200. It’s easy to use a spreadsheet to prepare a table of the values:

Feedrate versus Acceleration…

What you want to do is interpolate holes using until you find the highest acceleration where your machine can maintain the feedrate and still interpolate an accurate hole. You can use G-Wizard Editor’s Conversational CNC Wizards to generate the g-code for those holes, or any other means you like. Use a soft material so that the feedrate isn’t going to be a problem for your cutter. It won’t change the acceleration and it’ll be much easier on the cutter. MDF or any kind of plastic is cheap and cheerful for the exercise. I’d start with the middle value and go up or down accordingly.

The acceleration will be a function of how powerful your machine’s servos (or steppers) are, how light the axis is to move, and how much force multiplication is available from the leadscrew pitch and any timing pulley ratios. We’ve talked in the past about how to calculate all of that in the machine design stage, but if you have a working CNC machine, it’s very easy just to measure the available acceleration using the technique described above.

Okay, hopefully you’ve taken some time to figure out your machine’s acceleration performance. Now let’s see how to use that number with G-Wizard Editor to get a truer estimate of the cycle time for particular g-code programs.

**Estimating Cycle Times With Machine Acceleration Using G-Wizard Editor**

It’s one thing to know that acceleration is at work, and quite another thing to be able to tell what effect it’s having on your part program. Very few tools are available that can analyze acceleration effects, except at the very high end of g-code simulation and verification software. I’m pleased to report that the latest update of G-Wizard Editor now has the ability to simulate the effects of acceleration on it’s run time estimates for part programs. You can download it from the GW Editor installation page. If you don’t have GW Editor, take a moment to sign up with the free 30-day trial so you can play with this new feature.

The first thing is to make sure you’ve set the acceleration for your machine on the Machine Profile:

Enter your machine’s acceleration in the Machine Profile…

Now load up a g-code program and you’re ready to play. We’ll use our usual demo, HomeSwitchRearPanelEngrave.nc for this article. After loading your file, click the Info tab to see the effect of acceleration:

Click the Info tab to see the Acceleration Adjusted Time for the g-code program…

In this case, instead of taking 18 minutes and 51 seconds, GWE predicts 20 minutes and 25.9 seconds. That’s a fairly significant difference.

You can also see where the time is being lost on a block-by-block basis. For example, here is the Hint associated with the first motion command in the program:

Note the “Adj Time”, which is the acceleration adjusted time to get to this point in the program, and the “V End”, which is the speed the axis reached by the end of the block…

Two new pieces of information are available in the Hint for the block:

– “Adj Time” gives the acceleration adjusted time to get to this point in the program.

– “V End” is the speed the axis reached by the end of the block, based on the acceleration.

The V End value is particularly interesting. The g-code was “G00 X0.375 Y0.375 Z0.1”, which commands the axis to move to the XYZ coordinates at maximum rapids speeds. In this case, the machine profile is configured to indicate that the machine’s rapids are 400 inches per minute. Yet, V End was 68.3 inches per minute. The distance travelled did not allow enough time for the machine to reach full rapids before it got to the destination. Hence it took longer than the more simple minded calculation of just assuming it went full speed from the beginning of the move (implying infinite acceleration). You can use this information to track through programs and understand where the real limits based on acceleration are.

**Next Steps for GWE Acceleration Adjustments**

The current version only adjusts for straight line acceleration, but there is also *lateral acceleration* to be considered. Straight line in a car happens when you press the gas pedal or the brake. Lateral acceleration happens as you’re going around a corner. It pushes you towards the outside radius of the corner. The same is true for cutting tools. Any time direction is changed from a straight line, whether due to an arc or due to another G01 or G00 line that simply heads out in a new direction, there is lateral acceleration. This comes right out of the total acceleration budget. So for example, if you have a machine capable of 1.0 g (a very high performance machine indeed!), and it needs 0.5 g to negotiate an arc, there is only 0.5 g left to speed up or slow down the feedrate within that arc. I’m sure you can already see that adding an adjustment for lateral acceleration is going to make the slowdown after acceleration adjustments even greater.

Stay tuned for more!

## Like what you read on CNCCookbook?

**Join 100,000+ CNC'ers!** Get our latest blog posts delivered straight to your email inbox once a week for free. Plus, we’ll give you access to some great CNC reference materials including:

- Our Big List of over 200 CNC Tips and Techniques
- Our Free GCode Programming Basics Course
- And more!

Just enter your name and email address below:

*100% Privacy: We will never Spam you!*

Bob is responsible for the development and implementation of the popular G-Wizard CNC Software. Bob is also the founder of CNCCookbook, the largest CNC-related blog on the Internet.

Finally! Something I’ve said over and over! I even got banned from cnczone for this once! Thanks Bob!

This is a nice advancement as CAM programs “lie” about the cycle time and so forth.