The Basics of Computer Numerical Control


Today, computer numerical control (CNC) machines are found almost everywhere, from small job shops in rural communities to Fortune 500 companies in large urban areas. Truly, there is hardly a facet of manufacturing that is not in some way touched by what these innovative machine tools can do.

Everyone involved in the manufacturing environment should be well aware of what is possible with these sophisticated machine tools. The design engineer, for example, must possess enough knowledge of CNC to perfect dimensioning and tolerancing techniques for workpieces to be machined on CNC machines. The tool engineer must understand CNC in order to design fixtures and cutting tools for use with CNC machines. Quality control people should understand the CNC machine tools used within their company in order to plan quality control and statistical process control accordingly. Production control personnel should be abreast of their company's CNC technology in order to make realistic production schedules. Managers, foremen, and team leaders should understand CNC well enough to communicate intelligently with fellow workers. And, it goes without saying that CNC programmers, setup people, operators, and others working directly with the CNC equipment must have an extremely good understanding of CNC.

In this presentation, we will explore the basics of CNC, showing you much of what is involved with using these sophisticated machine tools. Our primary goal will be to teach you how to learn about CNC. For readers who will eventually be working directly with CNC machine tools, we will show you the basics of each major CNC function. Additionally, we will make suggestions as to how you can learn more about each CNC function as it applies to your particular CNC machine/s. At the completion of this presentation, you should have a good understanding of how and why CNC functions as it does and know those things you must learn more about in order to work with any style of CNC machine tool.

For readers who are not going to be working directly with CNC equipment in the near future, our secondary goal will be to give you a good working knowledge of CNC technology. At the completion of this presentation, you should be quite comfortable with the fundamentals of CNC and be able to communicate intelligently with others in your company about your CNC machine tools.

To proceed in an organized manner, we will be using a key concepts approach to all presentations. All important functions of CNC are organized into ten key concepts (We'll show five of the ten key concepts in this presentation. All five are related to programming). Think of it this way. If you can understand ten basic principles, you are well on your way to becoming proficient with CNC. While our main focus will be for the two most popular forms of CNC machine tools (machining centers and turning centers), these ten key concepts can be applied to virtually any kind of CNC machine, making it easy to adapt to any form of CNC equipment. With so many types of CNC machine tools in existence, it is next to impossible for this presentation to be extremely specific about any one particular type. The key concepts allow us to view the main features of CNC in more general terms, stressing why things are handled the way they are even more than the specific techniques used with any one particular CNC machine tool.

With the broad background we give, you should be able to easily zero in on any kind of CNC machine tool you will be working with. As yet a third goal, this presentation should help instructors of CNC. The key concepts approach we show has been proven time and time again during live presentations in CNC courses. This method of presentation will help instructors organize CNC into extremely logical and easy to understand lessons.

Key concept number one: Fundamentals Of CNC

While the specific intention and application for CNC machines vary from one machine type to another, all forms of CNC have common benefits. Though the thrust of this presentation is to teach you CNC usage, it helps to understand why these sophisticated machines have become so popular. Here are but a few of the more important benefits offered by CNC equipment.

The first benefit offered by all forms of CNC machine tools is improved automation. The operator intervention related to producing workpieces can be reduced or eliminated. Many CNC machines can run unattended during their entire machining cycle, freeing the operator to do other tasks. This gives the CNC user several side benefits including reduced operator fatigue, fewer mistakes caused by human error, and consistent and predictable machining time for each workpiece. Since the machine will be running under program control, the skill level required of the CNC operator (related to basic machining practice) is also reduced as compared to a machinist producing workpieces with conventional machine tools.

The second major benefit of CNC technology is consistent and accurate workpieces. Today's CNC machines boast almost unbelievable accuracy and repeatability specifications. This means that once a program is verified, two, ten, or one thousand identical workpieces can be easily produced with precision and consistency.

A third benefit offered by most forms of CNC machine tools is flexibility. Since these machines are run from programs, running a different workpiece is almost as easy as loading a different program. Once a program has been verified and executed for one production run, it can be easily recalled the next time the workpiece is to be run. This leads to yet another benefit, fast change-overs. Since these machines are very easy to setup and run, and since programs can be easily loaded, they allow very short setup time. This is imperative with today's Just-In-Time product requirements.

Motion control - the heart of CNC

The most basic function of any CNC machine is automatic, precise, and consistent motion control. Rather than applying completely mechanical devices to cause motion as is required on most conventional machine tools, CNC machines allow motion control in a revolutionary manner. All forms of CNC equipment have two or more directions of motion, called axes. These axes can be precisely and automatically positioned along their lengths of travel. The two most common axis types are linear (driven along a straight path) and rotary (driven along a circular path).

Instead of causing motion by turning cranks and handwheels as is required on conventional machine tools, CNC machines allow motions to be commanded through programmed commands. Generally speaking, the motion type (rapid, linear, and circular), the axes to move, the amount of motion and the motion rate (feedrate) are programmable with almost all CNC machine tools.

Accurate positioning is accomplished by the operator counting the number of revolutions made on the handwheel plus the graduations on the dial. The drive motor is rotated a corresponding amount, which in turn drives the ball screw, causing linear motion of the axis. A feedback device confirms that the proper amount of ball screw revolutions have occurred.

A CNC command executed within the control (commonly through a program) tells the drive motor to rotate a precise number of times. The rotation of the drive motor in turn rotates the ball screw. And the ball screw causes drives the linear axis. A feedback device at the opposite end of the ball screw allows the control to confirm that the commanded number of rotations has taken place.

Though a rather crude analogy, the same basic linear motion can be found on a common table vise. As you rotate the vise crank, you rotate a lead screw that, in turn, drives the movable jaw on the vise. By comparison, a linear axis on a CNC machine tool is extremely precise. The number of revolutions of the axis drive motor precisely controls the amount of linear motion along the axis.

How axis motion is commanded - understanding coordinate systems It would be infeasible for the CNC user to cause axis motion by trying to tell each axis drive motor how many times to rotate in order to command a given linear motion amount. (This would be like having to figure out how many turns of the handle on a table vise will cause the movable jaw to move exactly one inch!) Instead, all CNC controls allow axis motion to be commanded in a much simpler and more logical way by utilizing some form of coordinate system. The two most popular coordinate systems used with CNC machines are the rectangular coordinate system and the polar coordinate system. By far, the most popular of these two is the rectangular coordinate system, and we'll use it for all discussions made during this presentation.

One very common application for the rectangular coordinate system is graphing. Almost everyone has had to make or interpret a graph. Since the need to utilize graphs is so commonplace, and since it closely resembles what is required to cause axis motion on a CNC machine, let's review the basics of graphing.

As with any two dimensional graph, this graph has two base lines. Each base line is used to represent something. What the base line represents is broken into increments. Also, each base line has limits. In our productivity example, the horizontal base line is being used to represent time. For this base line, the time increment is in months. Remember this base line has limits - it starts at January and end with December. The vertical base line is representing productivity. Productivity is broken into ten percent increments and starts at zero percent productivity and ends with one hundred percent productivity.

The person making the graph would look up the company's productivity for January of last year and at the productivity position on the graph for January, a point is plotted. This would then be repeated for February, March, and each month of the year. Once all points are plotted, a line or curve can be drawn through each of the points to make it more clear as to how the company did last year.

Let's take what we now know about graphs and relate it to CNC axis motion. Instead of plotting theoretical points to represent conceptual ideas, the CNC programmer is going to be plotting physical end points for axis motions. Each linear axis of the machine tool can be thought of as like a base line of the graph. Like graph base lines, axes are broken into increments. But instead of being broken into increments of conceptual ideas like time and productivity, each linear axis of a CNC machine's rectangular coordinate system is broken into increments of measurement. In the inch mode, the smallest increment is usually 0.0001 inch. In the metric mode, the smallest increment is 0.001 millimeter. (By the way, for rotary axes the increment is 0.001 degrees.)

Just like the graph, each axis within the CNC machine's coordinate system must start somewhere. With the graph, the horizontal baseline started at January and the vertical base line started at zero percent productivity. This place where the vertical and horizontal base lines come together is called the origin point of the graph. For CNC purposes, this origin point is commonly called the program zero point (also called work zero, part zero, and program origin).

For this example, the two axes we happen to be showing are labeled as X and Y but keep in mine that program zero can be applied to any axis. Though the names of each axes will change from one CNC machine type to another (other common names include Z, A, B, C, U, V, and W), this example should work nicely to show you how axis motion can be commanded.

The program zero point establishes the point of reference for motion commands in a CNC program. This allows the programmer to specify movements from a common location. If program zero is chosen wisely, usually coordinates needed for the program can be taken directly from the print.

With this technique, if the programmer wishes the tool to be sent to a position one inch to the right of the program zero point, X1.0 is commanded. If the programmer wishes the tool to move to a position one inch above the program zero point, Y1.0 is commanded. The control will automatically determine how many times to rotate each axis drive motor and ball screw to make the axis reach the commanded destination point. This lets the programmer command axis motion in a very logical manner.

With the examples given so far, all points happened to be up and to the right of the program zero point. This area up and to the right of the program zero point is called a quadrant (in this case, quadrant number one). It is not uncommon on CNC machines that end points needed within the program fall in other quadrants. When this happens, at least one of the coordinates must be specified as minus.

Understanding absolute versus incremental motion

All discussions to this point assume that the absolute mode of programming is used. The most common CNC word used to designate the absolute mode is G90. In the absolute mode, the end points for all motions will be specified from the program zero point. For beginners, this is usually the best and easiest method of specifying end points for motion commands. However, there is another way of specifying end points for axis motion.

In the incremental mode (commonly specified by G91), end points for motions are specified from the tool's current position, not from program zero. With this method of commanding motion, the programmer must always be asking "How far should I move the tool?" While there are times when the incremental mode can be very helpful, generally speaking, this is the more cumbersome and difficult method of specifying motion and beginners should concentrate on using the absolute mode.

Be careful when making motion commands. Beginners have the tendency to think incrementally. If working in the absolute mode (as beginners should), the programmer should always be asking "To what position should the tool be moved?" This position is relative to program zero, NOT from the tools current position.

Aside from making it very easy to determine the current position for any command, another benefit of working in the absolute mode has to do with mistakes made during motion commands. In the absolute mode, if a motion mistake is made in one command of the program, only one movement will be incorrect. On the other hand, if a mistake is made during incremental movements, all motions from the point of the mistake will also be incorrect.

Assigning program zero

Keep in mind that the CNC control must be told the location of the program zero point by one means or another. How this is done varies dramatically from one CNC machine and control to another. One (older) method is to assign program zero in the program. With this method, the programmer tells the control how far it is from the program zero point to the starting position of the machine. This is commonly done with a G92 (or G50) command at least at the beginning of the program and possibly at the beginning of each tool.

Another, newer and better way to assign program zero is through some form of offset. Commonly machining center control manufacturers call offsets used to assign program zero fixture offsets. Turning center manufacturers commonly call offsets used to assign program zero for each tool geometry offsets. More on how program zero can be assigned will be presented during key concept number four.

Other points about axis motion

To this point, our primary concern has been to show you how to determine the end point of each motion command. As you have seen, doing this requires an understanding of the rectangular coordinate system. However, there are other concerns about how a motion will take place. Fore example, the type of motion (rapid, straight line, circular, etc.), and motion rate (feedrate), will also be of concern to the programmer. We'll discuss these other considerations during key concept number three.

Telling the machine what to do - the CNC program

Almost all current CNC controls use a word address format for programming. (The only exceptions to this are certain conversational controls.) By word address format, we mean that the CNC program is made up of sentence-like commands. Each command is made up of CNC words. Each CNC word has a letter address and a numerical value. The letter address (X, Y, Z, etc.) tells the control the kind of word and the numerical value tells the control the value of the word. Used like words and sentences in the English language, words in a CNC command tell the CNC machine what it is we wish to do at the present time.

One very good analogy to what happens in a CNC program is found in any set of step by step instructions. Say for example, you have some visitors coming in from out of town to visit your company. You need to write down instructions to get from the local airport to your company. To do so, you must first be able to visualize the path from the airport to your company. You will then, in sequential order, write down one instruction at a time. The person following your instructions will perform the first step and then go on to the next until he or she reaches your facility.

In similar manner, a manual CNC programmer must be able to visualize the machining operations that are to be performed during the execution of the program. Then, in step by step order, the programmer will give a set of commands that makes the machine behave accordingly.

Though slightly off the subject at hand, we wish to make a strong point about visualization. Just as the person developing travel directions MUST be able to visualize the path taken, so MUST the CNC programmer be able to visualize the movements the CNC machine will be making BEFORE a program can be successfully developed. Without this visualization ability, the programmer will not be able to develop the movements in the program correctly. This is one reason why machinists make the best CNC users. An experienced machinist should be able to easily visualize any machining operation taking place.

Just as each concise travel instruction will be made up of one sentence, so will each instruction given within a CNC program be made up of one command. Just as the travel instruction sentence is made up of words (in English), so is the CNC command made up of CNC words (in CNC language).

The person following your set of travel instructions will execute them explicitly. If you make a mistake with your set of instructions, the person will get lost on the way to your company. In similar fashion, the CNC machine will execute a CNC program explicitly. If there is a mistake in the program, the CNC machine will not behave correctly.


  • O0001 (Program number)

  • N005 G54 G90 S400 M03 (Select coordinate system, absolute mode, and turn spindle on CW at 400 RPM)

  • N010 G00 X1. Y1. (Rapid to XY location of first hole)

  • N015 G43 H01 Z.1 M08 (Instate tool length compensation, rapid in Z to clearance position above surface to drill, turn on coolant)

  • N020 G01 Z-1.25 F3.5 (Feed into first hole at 3.5 inches per minute)

  • N025 G00 Z.1 (Rapid back out of hole)

  • N030 X2. (Rapid to second hole)

  • N035 G01 Z-1.25 (Feed into second hole)

  • N040 G00 Z.1 M09 (Rapid out of second hole, turn off coolant)

  • N045 G91 G28 Z0 (Return to reference position in Z)

  • N050 M30 (End of program command)

While the words and commands in this program probably do not make much sense to you (yet), remember that we are stressing the sequential order by which the CNC program will be executed. The control will first read, interpret and execute the very first command in the program. Only then will it go on to the next command. Read, interpret, execute. Then on to the next command. The control will continue to execute the program in sequential order for the balance of the program. Again, notice the similarity to giving any set of step by step instructions.

Other notes about program makeup

As stated programs are made up of commands and commands are made up of word. Each word has a letter address and a numerical value. The letter address tells the control the word type. CNC control manufacturers do vary with regard to how they determine word names (letter addresses) and their meanings. The beginning CNC programmer must reference the control manufacturer's programming manual to determine the word names and meanings. Here is a brief list of some of the word types and their common letter address specifications.

  • O - Program number (Used for program identification)

  • N - Sequence number (Used for line identification)

  • G - Preparatory function

  • X - X axis designationY -

  • Y axis designation

  • Z - Z axis designation

  • R - Radius designation

  • F - Feedrate designation

  • S - Spindle speed designation

  • H - Tool length offset designation

  • D - Tool radius offset designation

  • T - Tool Designation

  • M - Miscellaneous function (See below)

As you can see, many of the letter addresses are chosen in a rather logical manner (T for tool, S for spindle, F for feedrate, etc.). A few require memorizing.

There are two letter addresses (G and M) which allow special functions to be designated. The preparatory function (G) specifies is commonly used to set modes. We already introduced absolute mode, specified by G90 and incremental mode, specified by G91. These are but two of the preparatory functions used. You must reference your control manufacturer's manual to find the list of preparatory functions for your particular machine.

Like preparatory functions, miscellaneous functions (M words) allow a variety of special functions. Miscellaneous functions are typically used as programmable switches (like spindle on/off, coolant on/off, and so on). They are also used to allow programming of many other programmable functions of the CNC machine tool.

To a beginner, all of this may seem like CNC programming requires a great deal of memorization. But rest assured that there are only about 30-40 different words used with CNC programming. If you can think of learning CNC manual programming as like learning a foreign language that has only 40 words, it shouldn't seem too difficult.

Decimal point programming

Certain letter addresses (CNC words) allow the specification of real numbers (numbers that require portions of a whole number). Examples include X axis designator (X), Y axis designator (Y), and radius designator (R). Almost all current model CNC controls allow a decimal point to be used within the specification of each letter address requiring real numbers. For example, X3.0625 can be used to specify a position along the X axis.

On the other hand, some letter addresses are used to specify integer numbers. Examples include the spindle speed designator (S), the tool station designator (T), sequence numbers (N), preparatory functions (G), and miscellaneous functions (M). For these word types, most controls do NOT allow a decimal point to be used. The beginning programmer must reference the CNC control manufacturer's programming manual to find out which words allow the use of a decimal point.

Other programmable functions

All but the very simplest CNC machines have programmable functions other than just axis motion. With today's full blown CNC equipment, almost everything about the machine is programmable. CNC machining centers, for example, allow the spindle speed and direction, coolant, tool changing, and many other functions of the machine to be programmed. In similar fashion, CNC turning centers allow spindle speed and direction, coolant, turret index, and tailstock to be programmed. And all forms of CNC equipment will have their own set of programmable functions. Additionally, certain accessories like probing systems, tool length measuring systems, pallet changers, and adaptive control systems may also be available that require programming considerations.

The list of programmable functions will vary dramatically from one machine to the next, and the user must learn these programmable functions for each CNC machine to be used. In key concept number two, we will take a closer look at what is typically programmable on different forms of CNC machine tools.

Key concept number two: Know your machine

A CNC user MUST understand the makeup of the CNC machine tool being utilized. While this may sound like a basic statement, a CNC user must be able to view the machine from two distinctly different perspectives. Here in key concept number two, we will be viewing the machine from a programmer's perspective. Much later, in key concept number seven, we will look at the machine from an operator's viewpoint.

Basic machining practice - the key to success with any CNC machine

Many forms of CNC machines are designed to enhance or replace what is currently being done with more conventional machines. The first goal of any CNC beginner should be to understand the basic machining practice that goes into using the CNC machine tool. The more the beginning CNC user knows about basic machining practice, the easier it will be to adapt to CNC.

Think of it this way. If you already know basic machining practice as it relates to the CNC machine you will be working with, you already know what it is you want the machine to do. It will be a relatively simple matter of learning how to tell the CNC machine what it is you want it to do (learning to program). This is why machinists make the best CNC programmers, operators, and setup personnel. Machinists already know what it is the machine will be doing. It will be a relatively simple matter of adapting what they already know to the CNC machine.

For example, a beginner to CNC turning centers should understand the basic machining practice related to turning operations like rough and finish turning, rough and finish boring, grooving, threading, and necking. Since this form of CNC machine can perform multiple operations in a single program (as many CNC machines can), the beginner should also know the basics of how to process workpieces machined by turning so a sequence of machining operations can be developed for workpieces to be machined.

This point cannot be overstressed. Trying to learn about a particular CNC machine without understanding the basic machining practice related to the machine would be like trying to learn how to fly an airplane without understanding the basics of aerodynamics and flight. Just as a beginning pilot will be in for a great number of problems without understanding aerodynamics, so is the beginning CNC user have difficulty learning how to utilize CNC equipment without an understanding of basic machining practice.

Learning about a new CNC machine - the key points

From a programmer's standpoint, as you begin to learn about any new CNC machine, you should concentrate on four basic areas. First, you should understand the machine's most basic components. Second, you should become comfortable with your machine's directions of motion (axes). Third, you should become familiar with any accessories equipped with the machine. And fourth, you should find out what programmable functions are included with the machine and learn how they are programmed.

Machine components

While you do not have to be a machine designer to work with CNC equipment, it is important to know how your CNC machine is constructed. Understanding your machine's construction will help you to gauge the limits of what is possible with your machine. Just as the race car driver should understand the basics of suspension systems, breaking systems, and the workings of internal combustion engines (among other things) in order to get the most out of a given car, so must the CNC programmer understand the basic workings of the CNC machine in order to get the most from the CNC machine tool.

For a universal style slant bed turning center, for example, the programmer should know the most basic machine components, including bed, way system, headstock & spindle, turret construction, tailstock, and work holding device. Information regarding the machine's construction including assembly drawings is usually published right in the machine tool builder's manual. As you read the machine tool builder's manual, here are some of the machine capacity and construction questions to which you should find answers.

What is the machine's maximum RPM?How many spindle ranges does the machine have (and what are the cut-off points for each range?What is the spindle and axis drive motor horsepower?What is the maximum travel distance in each axis?How many tools can the machine hold?What way construction does the machine incorporate (usually square ways, dovetail, and/or linear bearing ways)?What is the machine's rapid rate (fastest traverse rate)?What is the machine's fastest cutting feedrate?

These are but a few of the questions you should be asking yourself as you begin working with any new CNC machine. Truly, the more you know about your machine's capacity and construction, the easier it will be to get comfortable with the machine.

Directions of motion (axes)

The CNC programmer MUST know the programmable motion directions (axes) available for the CNC machine tool. The axes names will vary from one machine tool type to the next. They are always referred to with a letter address. Common axis names are X, Y, Z, U, V, and W for linear axes and A, C, and C for rotary axes. However, the beginning programmer should confirm these axis designations and directions (plus and minus) in the machine tool builder's manual since not all machine tool builders conform to the axis names we show.

As discussed in key concept number one, whenever a programmer wishes to command movement in one or more axes, the letter address corresponding to the moving axes as well as the destination in each axis are specified. X3.5, for example tells the machine to move the X axis to a position of 3.5 inches from the program zero point in X (assuming the absolute mode of programming is used.

The reference point for each axis

Most CNC machines utilize a very accurate position along each axis as a starting point or reference point for the axis. Some control manufacturers call this position the zero return position. Others call it the grid zero position. Yet others call it the home position. Regardless of what it is called, the reference position is required by many controls to give the control an accurate point of reference. CNC controls that utilize a reference point for each axis require that the machine be manually sent to its reference point in each axis as part of the power up procedure. Once this is completed, the control will be in sync with the machine's position.

Accessories to the machine

The third area a beginning CNC user should address is related to other possible additions to the basic machine tool itself. Many CNC machine tools are equipped with accessories designed to enhance what the basic machine tool can do. Some of these accessories may be made and supported by the machine tool builder. These accessories should be well documented in the machine tool builder's manual. Other accessories may be made by an after-market manufacturer, in which case a separate manual may be involved.

Examples of CNC accessories include probing systems, tool length measuring devices, post process gauging systems, automatic pallet changers, adaptive control systems, bar feeders for turning centers, live tooling and C axis for turning centers, and automation systems. Truly, the list of potential accessory devices goes on and on.

Programmable functions

The programmer must also know what functions of the CNC machine are programmable (as well as the commands related to programmable functions). With low cost CNC equipment, often times many machine functions must be manually activated. With some CNC milling machines, for example, about the only programmable function is axis motion. Just about everything else may have to be activated by the operator. With this type of machine, the spindle speed and direction, coolant and tool changes may have to be activated manually by the operator.

With full blown CNC equipment, on the other hand, almost everything is programmable and the operator may only be required to load and remove workpieces. Once the cycle is activated, the operator may be freed to do other company functions.

Reference the machine tool builder's manual to find out what functions of your machine are programmable. To give you some examples of how many programmable functions are handled, here is a list a few of the most common programmable functions along with their related programming words.

Spindle control

An "S" word is used to specify the spindle speed (in RPM for machining centers). An M03 is used to turn the spindle on in a clockwise (forward) manner. M04 turns the spindle on in a counter clockwise manner. M05 turns the spindle off. Note that turning centers also have a feature called constant surface speed which allows spindle speed to also be specified in surface feet per minute (or meters per minute)

Automatic tool changer (machining center)

A "T" word is used to tell the machine which tool station is to be placed in the spindle. On most machines, an M06 tells the machine to actually make the tool change. Tool change (on turning centers) A four digit "T" word is used to command tool changes on most turning centers. The first two digits of the T word specify the turret station number and the second two digits specify the offset number to be used with the tool. T0101, for example specifies tool station number one with offset number one.

Coolant control

M08 is used to turn on flood coolant. If available M07 is used to turn on mist coolant. M09 turns off the coolant.

Automatic pallet changer