Issue 68
Summer 2006
Copyright 2006

In this issue:
  1. On-line courses update: How far can you go?
  2. Product corner: Another basic machining practice eBook - Shop math for CNC
  3. Instructor note: Teaching CNC with the key concepts approach - part ten
  4. 3D machining: Shortening CNC programs and speeding-up program execution time
  5. G-code primer: Getting an unlimited number of fixture offsets
  6. Parameter preference: Programming parameter changes with G10

The Optional Stop is published quarterly by CNC Concepts, Inc. and is distributed free of charge to people subscribing to our (email) distribution list and to those downloading it from our website ( Information is aimed at CNC users and instructors teaching live CNC classes. All techniques given in this newsletter are intended to help CNC people. However, CNC Concepts, Inc. can accept no responsibility for the use or misuse of the techniques given.

To subscribe: Simply email us ( and let us know you'd like to be added to our distribution list.

To unsubscribe: Respond to this email, typing REMOVE in the subject. Please accept our apologies if we have disturbed you.

Quick links to our website:

Of special interest on our website:
ME Consultant Pro
{short description of image}
Ad for machine shop calculator
{short description of image}
eBooks ad Click to get more information about this ebook Click to get more information about this ebook
Ad for CNC manuals Link to CNC turing center programming and operation manual Link to CNC machining center programming and operation manual
Machining center programming and operation CD-rom course

On-Line Courses Update: How far can you go?

I received this email from John Romero - a student who has recently completed one of my on-line classes. It's nice to hear success stories - and it's great to know that I'm a part of them. Thank you for your kind words John.

Good morning Mike, I just wanted to say a very sincere thank-you, to you and your company. Over the years I have purchased and studied a number of your publications, Computer Numerical Control for Machining, Computer Numerical Control Advanced Techniques, Parametric Programming For Computer Numerical Control Machine Tools and Touch Probes, Managing Computer Numerical Control Operations, and Maximizing CNC Utilization. I have taken your on line Parametric Programming For CNC Machining And Turning Centers class and have even been mentioned in your Optional Stop publication for a tech tip.

All of the above CNC training, my previous experience plus my pursuit of an Industrial Engineering Degree, has landed me a new position with a major corporation, as a CNC Manufacturing Engineer, This new job is full of challenges and rewards, This is what I really enjoy and is truly the position I was seeking, and I just wanted to say thank you to CNC Concepts Inc. for providing the educational tools that definitely helped me in my goal. Once again, thank-you. John Romero West Covina Ca.

End of article (M01)

Top of page

Product corner: Another basic machining practice eBook now available: Shop math for CNC

We're now introducing the third in our series of basic machining practice eBooks (the first two are Machining Operations Performed On Machining Centers and Machining Operations Performed On Turning Centers). This newest eBook, entitled Shop Math For CNC, covers another important topic-of-interest to aspiring CNC people.

This eBook is application-based, meaning we stress the CNC-related applications for the math functions shown. Indeed, you'll learn as much about the CNC-related applications as about the math involved. For example, when discussing the basic arithmetic operators (add, subtract, multiply, and divide), we stress the use of these functions as they are used for interpreting tolerances and making offset adjustments on CNC machines.

Like our other affordable eBooks, the price for Shop Math For CNC is $29.00 - and once your order is processed, you can download it to save shipping charges and get quick delivery.

End of article (M01)

Top of page

Instructor note: Teaching CNC with the Key Concepts approach - part ten

Part ten - Key concept number Nine: You must know the key operation procedures

Here are some links that allow you to review other parts of this article:

  • Part one: Introduction to the key concepts approach
  • Part two: Key concept number one - know your machine
  • Part three: Key concept number two - preparation for programming
  • Part four: Key concept number three - Understanding the motion types
  • Part five: Key concept number four - You must understand the compensation types
  • Part six: Key concept number five - You must provide structure to your programs
  • Part seven: Key concept number six - Special programming features
  • Part eight: Key concept number seven - Buttons and switches
  • Part Nine: Key concept number Eight - You must understand the three modes of operation

At this point in the class, students should have a good understanding of what they want the CNC machine to do. However, they're probably still pretty intimidated when they look at the operation panels of the machine. In this Key Concept, the goal will be to provide them with the operation procedures they need to run a machine.

Point out that running a CNC machine requires little more than following a series of procedures. As long as you know what you want to do, a procedure can be followed to help you achieve what it is that you want. The trick is having procedures available for help.

Don't have them try to memorize each procedure - it doesn't work. Students quickly become confused and frustrated. Admittedly, there are some procedures that are so often used that students will soon have them memorized. But don't assume they can remember how to perform even the simplest procedures for very long.

We recommend providing an operation handbook for each machine in your lab or shop. This handbook will include step-by-step procedures for the most common things a person must do with the machine. We offer a series of procedures in the student manual that is included with our CNC curriculums. These procedures fall into five categories:

  • Manual procedures
  • Setup procedures
  • Manual Data Input procedures
  • Program editing procedures
  • Program running procedures

Again, each procedure should include step-by-step instructions to accomplish the task at hand. Here are the specific procedures we recommend that you include in each category:

Manual procedures:

  • To power up the machine
  • To do a manual zero return
  • To manually start the spindle
  • To manually jog the axes
  • To use the handwheel
  • To manually load and remove cutting tools in the spindle

Setup procedures

  • To load tools into the automatic tool changer magazine
  • To set or reset the relative position display
  • To measure program zero assignment values
  • To measure tool length compensation values
  • To enter and modify tool offsets
  • To enter and modify fixture offsets

MDI procedures:

  • To use MDI to change tools
  • To use MDI to start the spindle
  • To use MDI to do a zero return

Program editing procedures:

  • To enter a program through the keyboard
  • To load a program from a DNC system
  • To save a program to a DNC system
  • To see a directory of programs
  • To delete a program
  • To call up a program (make it the active program)
  • To search within a program
  • To alter a word in a program
  • To delete a word in a program
  • To insert a word in a program

Program running procedures:

  • To run a verified program
  • To cancel the cycle
  • To re-run a tool

These procedures can be used as a crutch until they are memorized - yet some seldom-used procedures will probably never be memorized, meaning students will always have a way to find out how to perform a needed procedure.

Point out that most companies do not provide the kind of operation handbook that you let them use in class. They'll probably be on their own to develop there own operation handbook for each machine they'll be running. Make sure they understand what's involved with developing an operation handbook. You may want to give them some practice assignments to confirm that they can do it.

Documenting each procedure, of course, simply involves writing down the step-by-step procedure - and keeping the procedures organized in a notebook. So as long as someone in their company knows how to run the machine, this person can show them how each procedure is done so that it can be documented.

In our CNC curriculums, Key Concept number nine contains one topic (lesson):

  • The key operation procedures

You can see more specific recommendations for this topic in our Lesson Plans manuals. We won't duplicate the suggestions here. Here are two links to the Lesson Plans Manuals.

Here are two links that bring you to our CNC curriculum page and our CNC educators page. Use these two links to learn more about how you can use our key concepts approach in your own classes.

End of article (M01)

Top of page

3D Machining: Shortening CNC programs and speeding-up program execution time

by Dan Fritz of Suburban Machinery Software, Inc., Willoughby, Ohio

I've always enjoyed your CNC Tech Talk column Mike. I don't recall if you've ever addressed this issue or not, but here are some tricks that some of your readers might appreciate. When cutting a 3D surface with a ball-nose endmill, the programs can get very large, and frequently no longer fit in the CNCs memory. This requires drip feeding with a DNC link. The speed of program execution is often restricted by the speed (baudrate) of the DNC link. Here are some hints for minimizing the number of characters in the program, which speeds up the delivery of data through the DNC link - and it may compress a program enough so that it does fit into memory. This, of course, will eliminate the need for drip-feeding altogether.

  • 1) Post your program in incremental (G91) and simultaneously use trailing-zero numbers instead of decimal format numbers. You can still leave some absolute "safe start" blocks in the program, but let the short point-to-point blocks be in G91. This drastically reduces the number of characters in the program, sometimes by up to 50-60%
  • 2) Eliminate N-numbers, comments, and space characters
  • 3) Use 1 stop-bit for your RS232 configuration instead of 2 (this speeds up data flow by 9%
  • 4) In absolute, you may notice redundant X, Y, or Z values (values that are the same in two or more blocks). When converted to incremental, this number either disappears or becomes an "X0" or "Y0". You can eliminate those values.
  • 5) Make sure your DNC software only sends a Line-Feed (LF) at the end of each block. Carriage Returns are just ignored by most CNCs anyway. This eliminates one character per block.

To illustrate the absolute/incremental point (number 4 above), here's what a typical bit of 3D surface data might look like in absolute:

  • N1000 X1.2345 Y2.3456 Z3.4567
  • N1010 X1.2350 Y2.3459 Z3.4568
  • N1020 X1.2355 Y2.3462 Z3.4570
  • N1030 X1.2360 Y2.3470 Z3.4575

Now here's what it looks like with the suggestions above:

  • X5Y3Z1
  • X5Y7Z2
  • X5Y8Z5
  • etc.

What a difference! If you can't get your post to output data like this, then you could use a good G-code editor to convert the file to this format.

Here is another benefit of shortening programs: every CNC has a "block processing" speed limit, so compressing data like this often helps if the CNC is being held back by the speed of the DNC link. Once the maximum number of "blocks per second" are achieved, further file compression or faster DNC delivery won't help.

Two things that will help speed up the CNC's block processing time are:

  • 1) When your machine has metric ball screws, post your file in metric. This saves the CNC the need for converting every dimension.
  • 2) Increase the CNC's "In-Position" parameter for each axis. This is the amount of servo error that the CNC permits before moving to the next block of the program. In G01, a too-small in-position bandwidth can cause short delays at the end of each block.

Thanks for all your many columns.

Editor's note: Thanks to Dan Fritz for this excellent information. If you have ideas that you would like to see published, be sure to email them to us at
End of article (M01)

Top of page

G-code primer: Getting an unlimited number of fixture offsets

Most Fanuc machining center controls come with six fixture offsets - made active by G54 through G59. This is not enough fixture offsets for many applications, especially when rotary devices are involved. There is an option for Fanuc controls that provide 48 fixture offsets, but of course, you must pay extra to get this feature.

If you find yourself needing more fixture offsets, and if you don't want to spend the extra money to get them, there is a relatively simple programming technique that will allow you to use one fixture offset (over and over again) to achieve the same result as having more fixture offsets.

The trick lies in setting up a series of subprograms, each including a G10 command that sets fixture offset number one. When entering program zero assignment values, you'll be modifying these subprograms instead of entering values on the fixture offset page. Here are a few example subprograms:

  • O5001 (Coordinate system number one)
  • G90 G10 L2 P1 X-12.9173 Y-10.2343 Z-12.0238
  • G54
  • M99
  • O5002 (Coordinate system number two)
  • G90 G10 L2 P1 X-13.1468 Y-9.5847 Z-14.1479
  • G54
  • M99
  • O5003 (Coordinate system number three)
  • G90 G10 L2 P1 X-14.5674 Y-10.2978 Z-9.2485
  • G54
  • M99

In your main (machining) program, whenever you want to invoke a new coordinate system (fixture offset), you simply command, with M98, that the appropriate subprogram be executed. Again, each subprogram will reenter the values in fixture offset number one and then immediately invoke fixture offset number one (with the G54). Here is a portion of a main program that does so:

  • O0001 (Main program)
  • N005 T01 M06 (Place tool one in spindle)
  • N010 G90 S2000 M03 T02(Select absolute mode, start spindle, get tool number two ready)
  • N015 M98 P5001 (Invoke coordinate system number one)
  • N020 G00 X4.0 Y2.0 (Move to first XY position of first coordinate system)
  • N025 G43 H01 Z0.1 (Move to first Z position)
  • N030 G01 Z-0.5 F4.0 (Drill hole)
  • N035 G00 Z0.1 (Retract from hole)
  • N040 M98 P5002 (Invoke coordinate system number two)
  • N045 X3.5 Y1.0 (Move to first hole of second coordinate system)
  • N050 G01 Z-0.5 (Drill hole)
  • N055 G00 Z0.1 (Retract from hole)
  • .
  • .
  • .

Notice that lines N015 and N040 invoke the coordinate system needed at the current time.

About the only negative to using this method is that you will be modifying programs instead of fixture offsets in order to enter program zero assignment values.

The title of this article is Getting an unlimited number of fixture offsets. This may be misleading. Actually, there is a limit. It is the number of programs your machine can hold in memory minus the number of programs in use for machining purposes. But even with this limit, you'll surely be able to set up as many coordinate systems as you will need.
End of article (M01)

Top of page

Parameter preference: Programming parameter changes with G10

As you know, many parameters affect the way a program behaves. There are times when it is helpful to actually change parameters right from within a program. And G10 lets you do just that.

Here is an example. Some Fanuc controls do not allow important threading functions to be controlled from within a program. When using G76 with some Fanuc controls, you cannot program the minimum depth of cut, the final pass depth, and the number of spring passes. (Note that some Fanuc controls do let you program these settings within the G76 commands.)

There are times when it may be necessary to change this important threading criteria from within a program. Consider, for example, a program that must machine two threads - one very coarse and deep and the other very fine and shallow.

For controls that do not allow you to program these threading criteria, you can use G10 commands to change the related parameters - as long as you know them.

For a 15T control, for example, parameter number 6218 specifies minimum depth of cut. Parameter number 6219 specifies final pass depth. and parameter number 6220 specifies the number of spring passes. Knowing this, here is a series of commands that sets the minimum depth of cut to 0.003, the final pass depth to 0.0002, and the number of spring passes to 3:

  • G10 L50
  • N6218 R0030
  • N6219 R0002
  • N6220 R3
  • G11

The G10 L50 line tells the control to enter the parameter setting mode. From here, N words specify parameter numbers and R words specify their values. G11 at the end of these commands tells the control to exit the parameter setting mode.

These commands can be given just before the G76 for the first thread to be machined. Then, similar commands can be given before the G76 for the second thread (changing whatever is necessary, of course).

End of article (M01)

Top of page