The Optional Stop newsletter
Home | More Issues | Contact Us
From our website:
On-Line Classes
CD-Rom Courses
CNC Books
CNC Jobs
CNC Schools
CNC Tips
Educator's Page
Tech Talk Forum

September 25, 2009

Dear Subscribers,

Welcome to the Fall 2009 issue of The Optional Stop newsletter. Back in July, we conducted a seminar at the Sandvik Productivity Center in Schaumburg, IL. While the number of attendees was a little lower than we’d like (11), the responses were very good.

This, combined with the fact that several people said it was simply a bad time to get away (week after Fourth of July), has inspired us to run the session again. We’re actually running it back-to-back it with another two-day seminar, Fundamentals of CNC. See the product corner for more information.

Enjoy this issue of The Optional Stop!

Mike Lynch

Product Corner: Two up-coming two-day seminars
Instructor Note: Are you sure you answered that question?
Manager's Insight:  Inspiring workers’ pride in their work
G Code Primer: The importance of safety commands
Macro Maven: Getting data into custom macros
Parameter Preference: Which measurement system is initialized at power-up?
Safety First: Do you still use air hoses for cleaning parts?

Product Corner: Two up-coming two-day seminars!

Two two-day seminars aimed at helping you learn more about CNC!

2-day Seminar: Fundamentals of CNC

Who should attend?

This program is directed toward entry-level and intermediate CNC professionals. Managers will find this course beneficial in obtaining a good working knowledge of CNC. Design engineers, quality control people, manufacturing engineers, tooling engineers, managers, and foremen will also benefit by learning the practical basics of CNC in order to facilitate tasks for their CNC operators.

This 2-day seminar is broken into four sections – all jam-packed with ideas to make your CNC machines more productive.


This two-day session presents the basics of both machining centers and turning centers using our proven key-concepts approach.

The Ten Key Concepts:


  1. Know your machine from a programmer's viewpoint

  2. Prepare to write programs

  3. Understand the motion types

  4. Know the compensation types

  5. Know how to format CNC programs

  6. The special features of programming


  1. Know your machine from a operator's viewpoint

  2. Know the three basic modes of operation

  3. Know the key operation procedures

  4. Know how to safely verify programs

Practice make perfect

Throughout this seminar, attendees will be asked to do short exercises to confirm their understanding of presented materials.

Want to know more?

You can find much more information about this seminar on-line, including a comprehensive outline and a brochure.

If you register on or before October 29, 2009, you’ll pay only $315.00. After that, the price goes up to $350.00. We offer an additional discount if you register two or more people ($280.00 per person on or before October 29).

2-day Seminar: Getting More from Your CNC Machines!

Who should attend?

  • CNC programmers

  • CNC setup people

  • NC operators

  • Managers and fore-persons

  • Manufacturing engineers

  • Trainers

  • Quality control people

  • Anyone interested in improving the productivity of your CNC machines!

This 2-day seminar is broken into four sections – all jam-packed with ideas to make your CNC machines more productive.

1: Go beyond the basics – learn tricks and shortcuts you don’t learn in basic CNC classes.

2: Reduce the time between production runs – learn the principles and techniques of setup reduction.

3: Reduce the time needed to complete production runs – learn the principles and techniques of cycle time reduction.

4: Get introduced to parametric programming – learn its applications and see countless examples of how it can help you.

You can find much more information about this seminar on-line, including a comprehensive outline and a brochure.

If you register on or before October 29, 2009, you’ll pay only $315.00. After that, the price goes up to $350.00. We offer an additional discount if you register two or more people ($280.00 per person on or before October 29).


Top of page

Instructor Note: Are you sure you answered that question?

The more you teach the more questions you get. And if you teach long enough you’ll start noticing patterns to the questions that get asked during each class. It seems that students will consistently have problems with certain topics – and out come the questions.

One such area for me is related to axis travel directions on machining centers. In almost every class I teach, students struggle with which way is plus and which way is minus with axes with which the tool does not move along with the axis (like the X and Y axes for a C-frame style machining center – the table moves to form these axes, not the tool).

I’ve always tried to understand these patterns, because I felt it exposed weaknesses in the way I’m explaining things. Knowing that you have a weakness, of course, is the first step to improving it. Sometimes it takes coming up with two or more ways to explain the troublesome topic to get students to understand.

But I’ve discovered yet another problem with the patterns of student questions. Because there are so many patterns, I find it too easy to jump to the wrong conclusion about the question they’ve asked. Again, if the same question gets asked in ten classes, it’s even difficult to wait until the student completes their question before you start answering. From experience, I know this can be a terrible mistake. Not only is it rude (cutting the student off mid-sentence), it’s frustrating for everyone in the class (and embarrassing to the instructor) when it’s discovered that the provided answer does not match the student’s question.

About the only way I’ve found to minimize this mistake is to force yourself to ask a follow-up question – no matter how simple. This, of course, will require you to listen to the entire question before you speak. And the follow up question will force the student to think a bit more about the question – if you word the follow-up question correctly, it can often be part of the answer.

Here is a simple example – It often comes during the discussion of motion commands.

  • Student: Do you have to include a G01 in every straight line motion command?

  • Instructor: You mean even when two or more consecutive commands will be linear motions?

  • Student: Yes

  • Instructor, finally: No, you only need a G01 in the first of the consecutive linear motions.

Admittedly, it’s a pretty simple example. But it should show the kind of interaction I’m talking about.



Top of page

Manager's Insight: Inspiring workers’ pride in their work

To a point, I think pride in one’s work is an inherent quality. Either a person has it or they don’t, and some people just seem to take more pride in their work than others. I feel this trait is most obvious with simple or undesirable tasks. When a person must do something they might consider beneath them, or something they really don’t want to do, it is most difficult to show any pride in what their doing.

Admittedly, this is a topic that has more to do with Human nature than it does with CNC machine tool usage. And I’m no expert in Human nature. But it’s pretty easy to tell the difference between a person that takes pride in their work and one that doesn’t.

In my experience, people that take pride in their work have certain standards about when they consider a job to be finished or acceptable. These people tend to be meticulous and detail oriented. Without guidance, they may actually do things a bit too well, completing a task in a much better fashion than is necessary or acceptable. For these people, their standards are higher than the employer’s. So while pride in one’s work is a desirable quality, it must be tempered with well defined qualities of what is acceptable for a completed task.

Again, I’m not sure pride in one’s work can be taught. But it can definitely be discouraged in poor working environments where people don’t take pride in their work. Frankly speaking – and again, in my experience – people that truly take pride in their work will not accept poor working environments. When faced with working for a company that is filled with people that don’t take pride in their work, most will quickly move on. Or, you might see a person beat his or her head against the wall in this kind of company for a while, but eventually they will either leave – or their spirit will be broken and they’ll start behaving like everyone else.

 In my opinion, the best way to inspire pride in one’s work is through example. In your CNC environment, consider first the lead people, managers, foremen, and anyone else that assigns the work in your company. These are the people that your company’s CNC setup people and operators see and relate to on the most regular basis. Also consider people that your setup people and operators must depend upon most regularly, like tool crib attendants, programmers, and quality control people. These people must show pride in what they’re doing – or you must replace them with people that do.

It should almost go without saying: A worker’s natural tendency will always respond in like fashion to the environment around them. With management and support personnel that show the traits of taking pride in their work (having high expectations of themselves), so will the worker. Indeed, they’ll feel inadequate if they don’t. It’s simple peer pressure – especially if the majority of workers in your company have already bought in to the system.

Sincere and tangible positive reinforcement must be provided for workers that show desirable traits. In too many companies, people are treated the same regardless of how well (or poorly) they do. I’m not talking about rah-rah meetings that sum up some kind of vague company achievement. I’m talking about having one-on-one meetings with you workers to show appreciation of a specific and recent job they’ve done well. It’s amazing how well people respond when they truly feel appreciated.

And here’s an important suggestion for your one-on-one meetings. Keep it all positive. If there is anything negative you want to say, save it for another time. Nobody likes the compliment, compliment, slam approach. You know what I mean: “Great job Tom. You got that job out on time when we thought we were going to have a late delivery. But, when you finished, you didn’t clean the machine.” The worker leaves this kind of meeting wondering what you really wanted to talk about. She’ll only remember the negative things you said. And the next time you sit down with her – no matter how many good things you say – she’ll be waiting for the “But…”.



Top of page

G Code Primer: The importance of safety commands

Safety commands – by our definition here – are a series of commands placed at the beginning of all programs that confirm that the machine is in the appropriate states. When you first power up the machine, certain G codes are initialized. And in most cases, the safety commands will ensure that the machine is in its initialized states.

For example, when you turn on the machine it will automatically instate your measurement system of choice. If you work in the Imperial measurement system, G20 will be automatically instated (initialized). If you work in the Metric measurement system, the machine will automatically instate G21.

Even so, it is wise to include the appropriate measurement-system-mode instating G code at the beginning of all programs. Doing so will ensure that the machine is still in this measurement system mode when the program is run.

Consider, for example, not including a G21 at the beginning of a Metric program. The programmer is assuming that the machine is in the Metric mode when the program is run. But maybe someone went into manual data input [MDI] and switched to the inch mode to make some manual movements. And they forgot to reselect the metric mode. Oops.

In this case the machine will interpret the very large Metric values as inch values (a fixture offset setting of -185.234 mm will be taken as -185.234 inches). This will cause the machine to make a much longer approach movement than is intended – and could will cause a crash if the operator doesn’t catch it. This is but one example of when the machine could behave badly if no safety commands are present in the program.

Here is our recommended set of safety commands for machining centers (inch mode). Note that we have included only three G codes per command because many (especially older) controls do not allow more than three per command.

  • O0001 (Safety commands example for machining centers)

  • N001 G17 G20 G23

  • N002 G40 G64 G67

  • N003 G80 G90 G98

  • .

  • .

 Here are the safety commands for turning centers:

  • O0001 (Safety commands example for turning centers)

  • N001 G20 G23 G40

  • N002 G67

  • .

  • .



Top of page

Macro Maven: Getting data into custom macros

One of the major benefits of custom macro B, especially with part family and user created canned cycle applications, is the ability to change the criteria for how the custom macro should run. This is done with input data, called arguments (though some people simply call them variables). This benefit gives a single custom macro the ability to use a bolt circle custom macro to machine three holes – or three hundred – based upon the current value of the number-of-holes argument. It gives a single peck drilling custom macro the ability to peck once or one hundred times, based upon the hole-depth argument and the peck-depth arguments. It gives a grooving custom macro the ability to groove with one pass or ten passes based upon the width-of-the-groove and the width-of-the-grooving-tool arguments.

The manner by which you specify input data to the custom macro is largely determined by the type of application you are developing. For user created canned cycle applications, you commonly want your custom macro to behave like any other canned cycle. For a machining center application, for example, and prior to calling the custom macro, you’ll want to change tools, start the spindle, make some prior positioning movement to get the tool up to the work surface, start the coolant, and instate tool length compensation. Only then will you call the custom macro.

The custom macro command that most resembles a canned cycle calling command (like G81) is the G65 command. With G65, you specify the custom macro program number to be executed along with a series of arguments. The arguments in a G65 command are letter addresses, and can include A, B, C, D, E, F, H, I, J, K, M, N, Q, R S, T, U, V, W, X, Y, and Z. (Note that not all the letters of the alphabet are available.)

The custom macro programmer will try to choose letter addresses that make sense (like D for depth-of-cut), but there are no rules in this regard. In the custom macro, the values of these letter address arguments are referenced with local variables. The custom macro section of your programming manual will specify the relationships (like #1 for A, #2 for B, #3 for C, #7 for D, and so on).

Again, the G65 command makes the best way to get data into a user created canned cycle custom macro. But it doesn’t work so well for part family applications, since the custom macro will be the main program. That is, only one program will be involved, and all activities – tool changing, spindle starting, approach movements, coolant activation, etc. – will be done in this single program.

The most common way to get data into a part family application custom macro is to use a series of common variables at the beginning of the program (in the #100 series). Each common variable will contain the value of an argument. Since the numbering of common variables doesn’t make much sense, you should include a message in parentheses that tells everyone what the argument represents. Here’s an example:

  • O0001 (Part family custom macro)

  • #100 = 4.0 (WORKPIECE LENGTH)

  • #101 = 2.5 (WORKPIECE WIDTH)

  • #102 = 1.0 (WORKPIECE THICKNESS)

  • .

  • .

  • .

Again, the messages nicely specify the meaning of each variable. Without them, it would be impossible to know what each one is supposed to represent.
This part family method assumes the operator will be manually editing the values of each common variable when they go from job to job. You wouldn’t want to keep a separate program for each part in the family (with all arguments appropriately set) – doing so would defeat the purpose of using custom macro for part family applications. Again, only one main program will be used to machine all the parts in the family.

But in some cases, it doesn’t make sense to have an operator changing the variables every time they go from one job to the next. There may be many to change – or you may be worried that the operator might make a mistake. Another way to handle arguments in part family applications is to create a separate subprogram for each part in the family that only includes the #100 series arguments. Now there will be a separate program for each part in the family, but the (one) custom macro program will constantly remain in the machine. Here is an example:

  • O0001 (Part family custom macro)

  • N005 M98 P1000 (Call subprogram that contains arguments)

  • N010 T01 M06

  • .

  • .

  • .


  • O1000 (Arguments for part number …)

  • #100 = 4.0 (PART LENGTH)

  • #101 = 2.5 (PART WIDTH)

  • #102 = 1.0 (PART THICKNESS)

  • .

  • .

  • M99

The subprograms for this part family can now be created off line – and transferred to the machine with a distributive numerical control (DNC) system. Also, the messages next to each argument may not be so important with this method since it will not be the setup person or operator who sets them.

One last way I’ll mention to get data into custom macros is to use permanent common variables (#500 series). Like offsets, permanent common variables allow entry through the keyboard and display screen. They may not be convenient for all data, but there may be some times when you find them helpful. One reason they may not be convenient is that only some of them can to be labeled (the first ten) – and the label (with most controls) can only be four characters. So again, it will be difficult for people to be sure about what they represent.

I like to use them as system constants for part family applications. They are still arguments, but not among those I would want an operator to have to regularly deal with. For example, say you use a 0.1 inch rapid approach distance. But you’d like to have the ability to reduce this value (globally) once a job is up and running to save time. You could place a value of 0.1 in permanent common variable #500 and reference #500 during all rapid approach motions in your program. If and when you want to change the rapid approach distance, you have but one value to change.

Or maybe your part family custom macro runs on several machines. Any differences in how the machines are programmed may require the need for a different program on each machine. But if the differences can be handled with system constants, the same exact program could be in all machines (you’d have only one program to maintain). Say one machine uses M41 to specify the low range while another uses M23. You can use #501 to specify the range selection number and use M#501 to call up the low range on both machines. You must, of course, place a value of 23 in #501 for one machine and 41 in #501 for the other.



Top of page

Parameter Preference: Which measurement system is initialized at power-up?

Actually, the choice between whether the Imperial measurement system or the Metric measurement system is initialized can be done on the Setting display screen page (though it is also a parameter setting).  When this Setting page value is changed, so is the parameter.  The heading on the Setting pages for most controls is Inch/Metric, and an entry of 1 sets and initializes the inch mode, while an entry of 0 specifies Metric mode.

Again, this Setting page value selects the desired measurement system mode from the instant it is selected – and it controls what happens during power-up.  Regardless of which measurement system is in effect when the machine’s power is turned off, the selected Setting page choice will be instated at power up.

M01Top of page

Safety First: Do you still use air hoses for cleaning parts?

When I first started working in shops (I won’t mention how long ago), it was customary for each machine operator to have an air hose. They’d use it to blow chips and debris from workpieces, workholding devices, and anything else that needed chips cleared.

While they did the job of clearing chips nicely, they eventually became considered one of the more dangerous things in the shop. Hopefully your company has stopped using them.

The chips and debris blown away by an air hose can go anywhere. Even when an operator is wearing safety glasses to protect their eyes, there are other body parts chips can enter (ears, nose, mouth, etc.). And sharp chips can also pierce the skin. Countless operators have been injured.

And it’s not only the person operating the air hose that’s at risk. Anyone that happens by when the air hose is in use is at risk.



Top of page

Sofware ad
Machining center training materials
Parametric programming ad

The Optional Stop newsletter 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.