Common CNC Codes

While recently improving our NC Drill and Mill import features I decided to post this simple quick reference to common NC Codes used to Drill and Rout PCB's:

G00 Positioning
G01 Linear interpolation
G02 Circular interpolation CW
G03 Circular interpolation CCW
G04 Dwell
G05 Drill Mode
G07 Overwrite current Drill
G32 Routed Circle Canned Cycle (Clockwise)
G33 Routed Circle Canned Cycle (C-Clockwise)
G40 Cutter compesation cancel
G41 Cutter compensation left side
G42 Cutter compensation right side
G43 Tool length offset (+)
G44 Tool lenght offset (-)
G45 Tool offset increase
G46 Tool offset decrease
G47 Tool offset double increase
G48 Tool offset double decrease
G49 Tool lenght offset cancel
G54 Work coordinate system 1
G55 Work coordingte system 2
G56 Work coordinate system 3
G57 Work coordinate system 4
G58 Work coordinate system 5
G59 Work coordinate system 6
G60 Single direction positioning
G61 Exact stop check mode
G62 Automatic corner override effective
G64 Cutting mode
G65 Custom macro simple call
G66 Custom macro modal call
G67 Custom macro modal call cancel
G73 Peck drilling cycle
G74 Counter tapping cycle
G76 Fine boring cycle
G80 Canned cycle cancel
G81 Drilling cycle
G82 Drilling cycle/counter boring
G83 Peck drilling cycle
G84 Tapping cycle
G85 Boring cycle
G86 Boring cycle
G87 Back boring cycle
G88 Boring cycle
G89 Boring cycle
G90 Absolute programming
G91 Incremental programming
G92 Programming of absolute zero point
G94 Feed per minute
G95 Feed per revolution
G98 Return to initial point level in canned cycle
G99 Return to R point level in canned cycle

M00 Program Stop
M01 Optional (Planned) Stop
M02 End of Program
M03 Spindle CW
M04 Spindle CCW
M05 Spindle OFF
M06 Tool Change
M07 Coolant No. 2 ON
M08 Coolant No. 1 ON
M09 Coolant OFF
M10 Clamp
M11 Unclamp
M12 Unassigned
M13 Spindle CW & Coolant ON
M14 Spindle CCW & Coolant ON
M15 Motion +
M16 Motion -
M17 Unassigned
M18 Unassigned
M19 Oriented Spindle Stop
M20-29 Permanently Unassigned
M30 End of Tape
M31 Interlock Bypass
M32-35 Unassigned
M36-39 Permanently Unassigned
M40-45 Gear Changes if Used, Otherwise Unassigned
M46-47 Unassigned
M48 Cancel M49
M49 Bypass Override
M50-89 Unassigned
M90-99 Reserved for User



M25 --> Start Block of Commands

Note: A single % is the same as M25.

M01 --> End Block

M02 --> Insert Block. Repeat as many times as needed

Note: The M02 command is incremental.

 M08 --> End of Step/Repeat