Tag Archives: cnc programming handbook

Letter Codes List For CNC Machine Programming

If you’ve already learned all of the Preparatory and Miscellaneous function codes, it’s time to move on to the Letter codes for CNC programming. Most of the letters of the alphabet are used on milling machines.

Just like the G and M codes, not every machine uses the same Letter codes. Also, there are several letters that are used in more than one function, but that depends on the input units.

Below is a list of the most commonly used letter codes when programming on a milling center. However, I recommend reading through your machine’s manual to confirm that they have the same function, or if your machine uses different letters/codes.

  • A – Rotary or indexing axis around the X-axis (unit in degrees)
  • B – Rotary or indexing axis around the Y-axis (unit in degrees)
  • D – Cutter radius compensation offset number
  • F – Feedrate function (may vary)
  • G – Preparatory command (G-code)
  • H – Tool length offset number
  • I – Arc center modifier for X-axis (radius)
  • J – Arc center modifier for Y-axis (radius)
  • K – Arc center modifier for Z-axis
  • L – Repetition count for subprogram/fixed cycle
  • M – Miscellaneous function (M-code)
  • N – Block or sequence number
  • O – Program number
  • P – Subprogram number call; Work offset number (used with G10); Dwell time in milliseconds; Block number in main program when used with M99
  • Q – Depth of peck in fixed cycles G73 & G83; Shift amount in fixed cycle G76 & G87
  • R – Retract point in fixed cycles
  • S – Spindle speed in Rotations per minute (RPM)
  • T – Tool function
  • X – X-axis coordinate value designation
  • Y – Y-axis coordinate value designation
  • Z – Z-axis coordinate value designation

Letter Codes List For CNC Machine ProgrammingMost of these letters you will be using over and over again in your programs. A and B are used if you have a four or five axis machine, otherwise you won’t need to use them.

Some letters have multiple uses that you may have to incorporate in your program. “P”, for example, can call out the time that you want to dwell (pause) with a tool, or it can call up a subprogram number.

It’s up to you to learn these if you want to know how to create and edit programs. A lot of the letters are easy to remember, so if you already memorized all of most of the G/M codes then this is a piece of cake.

M-Codes List For CNC Machine Programming

Miscellaneous Functions is another name for M-Codes. How are they different from the G-codes in my previous post? The G-code is a preparatory command for CNC programming, which presets, or prepares, the machine to use a certain cycle or mode. An M-code is an actual machine function.

A machine function is something that the actual machine does, whether it’s turning on the spindle or ending your program. Not every machine is the same because there are many different CNC machine manufacturers, as well as different controllers, so I recommend reading through your machine’s manual to see what M-codes you can use.

  • M00 – Compulsory program stop
  • M01 – Optional stop
  • M02 – End of program (no rewind, usually with reset)
  • M03 – Spindle on (rotate CW for R/H tools)
  • M04 – Spindle on reverse (CCW for R/H tools)
  • M05 – Spindle stop
  • M06 – Automatic tool change (ATC)
  • M07 – Coolant mist ON (optional)
  • M08 – Coolant ON
  • M09 – Coolant OFF
  • M19 – Spindle orientation
  • M30 – Program end (always resets & rewinds)
  • M48 – Feedrate override cancel OFF (deactivated)
  • M49 – Feedrate override cancel ON (activated)
  • M60 – Automatic pallet change (APC)
  • M78 – B axis clamp (nonstandard)
  • M79 – B axis unclamp (nonstandard)
  • M98 – Subprogram call
  • M99 – Subprogram end

M-Codes List For CNC Machine ProgrammingUnlike a G-code, you can only use one M-code per line/block of code. Using an M03 and M04 is not possible because they do two opposite functions.

The more M-codes you try out, the more efficient you can become. M98 can significantly decrease programming and possibly cycle time because it calls up a sub-program that can be repeated over and over any given number of times.

There are more Miscellaneous functions than listed above, which are referred to as ‘machine specific codes’. You will have to learn the codes used by your individual machine and controller to get the most out of your CNC machine, whether it’s a milling or turning center.

CNC Programming Training

CNC Programmer Training Requirements

In order to become a CNC programmer, you must have extensive knowledge and experience as a machinist and troubleshooter. Programs are written in G-codes and M-codes, but modern CAM/CAD software has made it easier to perform complex and precise operations. Depending on how quickly you catch on, it can take years to learn how to program parts from start to finish. You must know the ins-and-outs of machining; how machines work, how materials react, what kind of cuts to make, what tools to use and how to use them, how to order the operations, and the list goes on.

Machinists use to mill, cut, drill, and form parts on a manual machine. This resulted in much slower and less-than-consistent parts, depending on who was running the machine. However, being able to machine parts on a manual mill and lathe will greatly help you understand on how to program parts in the future. I also strongly recommend that you learn how to hand write your programs before delving into CAM/CAD software. It will take longer to learn, but being able to edit/fix your program after it is written on software is priceless.

The time of programming training you need depends on the machine shop you’re working in and how complex the parts are. A shop that makes fairly simple parts on 3-axis CNC mills will require much less training than a shop that does 4 or 5+ axis milling.

Most machinists learn on the job over the years from more experienced people and work their way up the ladder.

What Are the Benefits of Becoming a CNC Programmer?CNC Programming Training (2)

There’s several good reasons why you should train and work hard to become a programmer. Yes, it is more demanding with an increase in pressure, but what higher paying jobs aren’t?

The first reason is obvious, as you will be getting paid more than a machine operator. This reason alone is worth the time spent learning and practicing how to program. Learn from the best and you’ll be the best.

Second, it will open up more possibilities in the future if you plan on moving some place else. It’s always good to add things to your resume, and more companies will consider you with programming experience under your belt.

Another reason to train to become a cnc programmer is because you won’t be doing the dirty grunt work. No more cutting stock, deburring parts, or getting filthy from all the oils and dust. Programming is usually done in a separate room or part of the building that is clean with computers.

Where Do I Get CNC Programming Training?

If you are already on the job as a machinist, the best way to learn how to program is by “shadowing” someone that already knows how and is willing to teach you over time. If you have an experienced co-worker that has the ability to do that, take every advantage of that as you can!

That, and taking classes at your local Tech school are going to be the easiest ways to get trained in. If you have the time, it might be worth it to check your local Technical school for CNC Programming courses. There you will get hands-on work, and you will learn new things faster since you will be working on it every day.

Another possible way of learning how to program is with a Programming Training Software. If you are good at learning things on your own, this may be the best route for you, as you can train on your own time. It’s cheaper than going to school, and you can always go back and re-learn things. However, if you are someone that asks a lot of questions and needs a mentor, this may not be for you.

Click Here To Buy My CNC Programming Handbook. I have found this book to be the most resourceful as far as programming goes. Everything you need to know about programming 3-axis parts is in this book.

G-Codes List For CNC Machine Programming

To be able to program CNC code, you must know most, if not all, of the G-codes and what they do. A CNC machinist will know how and when to use each code so that that part will run the most efficient. The program address “G” is a preparatory command. It prepares or presets the control system to use a certain mode or operation. Below is the list of G-codes that are used in most modern CNC Milling machines:

  • G00 – Rapid positioning
  • G01 – Linear interpolation
  • G02 – Circular interpolation clockwise (CW)
  • G03 – Circular interpolation counterclockwise (CCW)
  • G04 – Dwell – as a separate block only
  • G05 – High-speed machining on Fanuc control (Look ahead)
  • G09 – Exact stop check – one block only
  • G10 – Programmable data input – Data Setting
  • G11 – Data Setting mode cancel
  • G15 – Polar Coordinate Command cancel
  • G16 – Polar Coordinate Command
  • G17 – XY-plane designation
  • G18 – ZX-plane designation
  • G19 – YZ-plane designation
  • G20 – Imperial units of input (Inches)
  • G21 – Metric units of unput
  • G22 – Stored stroke check ON
  • G23 – Stored stroke check OFF
  • G25 – Spindle speed fluctuation detection ON
  • G26 – Spindle speed fluctuation detection OFF
  • G27 – Machine zero position check
  • G28 – Machine zero return (reference point 1)
  • G29 – Return from machine zero
  • G30 – Machine zero return (reference point 2)
  • G31 – Skip function
  • G40 – Cutter radius compensation cancel
  • G41 – Cutter radius compensation – left
  • G42 – Cutter radius compensation – right
  • G43 – Tool length compensation – positive
  • G44 – Tool length compensation – negative
  • G45 – Position compensation – single increase
  • G46 – Position compensation – single increase
  • G47 – Position compensation – double increase
  • G48 – Position compensation – double increase
  • G49 – Tool length offset cancel
  • G50 – Scaling function cancel
  • G51 – Scaling function
  • G52 – Local coordinate system setting
  • G53 – Machine coordinate system
  • G54 – Work coordinate offset 1
  • G55 – Work coordinate offset 2
  • G56 – Work coordinate offset 3
  • G57 – Work coordinate offset 4
  • G58 – Work coordinate offset 5
  • G59 – Work coordinate offset 6
  • G60 – Single direction positioning
  • G61 – Exact stop mode
  • G62 – Automatic corner override mode
  • G63 – Tapping mode
  • G64 – Cutting mode
  • G65 – Custom macro call
  • G66 – Custom macro modal call
  • G67 – Custom macro modal call cancel
  • G68 – Coordinate system rotation
  • G69 – Coordinate system rotation cancel
  • G73 – High speed peck drilling cycle (deep hole)
  • G74 – Left hand threading cycle
  • G76 – Fine boring cycle
  • G80 – Fixed cycle cancel
  • G81 – Drilling cycle
  • G82 – Spot-drilling cycle
  • G83 – Peck-drilling cycle (deep hole drilling cycle)
  • G84 – Right hand threading cycle
  • G85 – Boring cycle
  • G86 – Boring cycle
  • G87 – Back boring cycle
  • G88 – Boring cycle
  • G89 – Boring cycle
  • G90 – Absolute dimensioning mode
  • G91 – Incremental dimensioning mode
  • G92 – Tool position register
  • G98 – Return to initial level in a fixed cycle
  • G99 – Return to R-level in a fixed cycle
3rd Edition
3rd Edition

Two G-codes may be used in the same block (line), such as G00 and G90, if you want to Rapid to a position in the Absolute mode.

Not all of the listed G-codes are applicable to every CNC machine, so please refer your machine’s manual for confirmation.

For more info on programming, check out the CNC Programming Handbook. It is the most informative and accurate book that I have come across for for programming.