(DIR) ~steelexodus
Useful FANUC G & M Codes
Published on 2026-08-26
FANUC G-Codes and M-Codes I use from time to time
Introduction
Below you will find a list of M-Codes and G-Codes I use from time to time
inside my programs on the CNC machines.
M-Codes
M99 - Restart Program
This will reset the program and start running from the top again. Useful for
something that needs to keep executing, such as a machine warm-up program.
For example:
``
G28 U0. W0;
G97 S1000 M3 T0101;
M8;
G1 X10.;
M99;
`
This will home the turrent, start the spindle, turn on the coolant pump, cut to
diameter 10, and restart from the top.
I know, stupid example, but you get the idea :)
NOTE: Make sure your panel supports this, as this is usually reserved for
sub-program return.
M19 - Lock Chuck
Milling machines uses this to align the spindle for tool changes, but it can
also be used on turning machines to lock the chuck in place. I use this in the
case where I need to tighten the jaws with the long side of an alankey.
M01 - Optional Stop
After each tool block, I put a M01. This helps when the machine is being
set-up.
I simply switch on the Optional Stop switch on the panel, and the tool will cut
up until the point it reaches a M01, then it will stop and wait for me to
press cycle start again.
This is useful because if you know a tool is correct, you can let it run till
completion and wait for you to be there again in the case you are busy with
more than one thing.
G-Codes
G04 - Dwell
The one machine I work on requires that the tool does not start cutting 500ms
after indexing, due to interlocks. I use this after each tool change to ensure
that the program does not continue before that.
The code accepts the time to wait via the X value. For example, to wait
500ms, use:
`
G04 X0.5;
`
To make the machine wait for 1.25 seconds, use:
`
G04 X1.25;
`
You get the idea.
G28 - Zero Axis
Before the turrent is indexed on the turning machine, I like to return to the
home position so there is ample space to rotate the turret. I use it like this:
`
N0303; <- Block number to get to tool quickly
G28 U0. W0.; <- Zero both axis at the same time
...
M5 M9; <- Stop the chuck and coolant pump
G28 U0. W0.; <- Ditto
M01;
`
Using U0. W0. in the same line causes the machine to return home on both
axis. For the case where you need to return a single axis only, use only one of
the values, for example U0. returns the X to home, while W0.` returns the Z
to home.
Want to chat? Send me a mail!
(HTM) hello@steelexodus.com
Other sites:
(HTM) jarnsaet.com - Clan Járnsæt - Iron & Sweet
(HTM) steelexodus.com - The Iron
(HTM) marshmallowqi.com - The Sweet
(HTM) sr.ht/~steelexodus - My profile on the hackers forge
(HTM) graphsling.co.za - Helping small businesses earn their place on the internet
(HTM) 69483572d48b1124bbd62e0078c1df16d669bd72