# G-Code and M-Code Command List for CNC Mills: Usefull Examples and Tutorials

#### ByMike Hepburn

Jul 12, 2023

Computer Numerical Control (CNC) milling has revolutionized the manufacturing industry, enabling precise and efficient machining of complex parts. At the heart of CNC milling lies a language called G-Code, which controls the movements and actions of the milling machine. Additionally, M-Code commands provide additional functionality and control. In this comprehensive guide, we will explore an extensive list of G-Code and M-Code commands commonly used in CNC milling, along with useful examples and tutorials.

## Understanding G-Code and M-Code

G-Code, short for Geometric Code, is a programming language used to instruct CNC machines on how to move and operate. It consists of a series of alphanumeric codes that define specific actions, such as positioning the tool, setting feed rates, controlling coolant, and executing other operations. Each G-Code command is followed by one or more numerical values that determine parameters like speed, position, or distance.

M-Code, on the other hand, stands for Miscellaneous Code and provides additional functionality beyond basic machine motion. M-Codes control actions such as tool changes, spindle control, coolant control, and other auxiliary operations. These codes are typically used in conjunction with G-Codes to achieve the desired milling operation.

## G-Code and M-Code Command List

1. G00: Rapid Positioning
• Description: Moves the tool rapidly to a specific position.
• Example: G00 X100 Y50 Z10
2. G01: Linear Interpolation
• Description: Moves the tool in a straight line at a specified feed rate.
• Example: G01 X50 Y75 Z20 F100
3. G02: Circular Interpolation (Clockwise)
• Description: Moves the tool in a circular arc in a clockwise direction.
• Example: G02 X80 Y60 I-10 J20
4. G03: Circular Interpolation (Counterclockwise)
• Description: Moves the tool in a circular arc in a counterclockwise direction.
• Example: G03 X120 Y90 I10 J-15
5. G04: Dwell
• Description: Pauses the machine for a specified time.
• Example: G04 P500 (Pause for 500 milliseconds)
6. G20: Inch Units
• Description: Sets the machine to use inches for all subsequent movements.
• Example: G20
7. G21: Millimeter Units
• Description: Sets the machine to use millimeters for all subsequent movements.
• Example: G21
• Description: Moves the tool to the home position specified in the machine setup.
• Example: G28
9. G40: Cutter Compensation Cancel
• Description: Cancels cutter radius compensation.
• Example: G40
10. G41: Cutter Compensation Left
• Description: Activates cutter radius compensation to the left of the tool path.
• Example: G41 D01
11. G42: Cutter Compensation Right
• Description: Activates cutter radius compensation to the right of the tool path.
• Example: G42 D02
12. G54-G59: Work Coordinate System (WCS) Selection
• Description: Selects one of six available work coordinate systems.
• Example: G54 (Selects work coordinate system 1)
13. G80: Cancel Canned Cycle
• Description: Cancels the active canned cycle.
• Example: G80
14. G90: Absolute Programming
• Description: Specifies that subsequent coordinates are absolute positions.
• Example: G90
15. G91: Incremental Programming
• Description: Specifies that subsequent coordinates are incremental offsets.
• Example: G91
16. M00: Program Stop
• Description: Stops the program temporarily, requiring operator intervention.
• Example: M00
17. M02: Program End
• Description: Stops the program and resets the machine to its initial state.
• Example: M02
18. M03: Spindle On (Clockwise)
• Description: Turns the spindle on in the clockwise direction.
• Example: M03 S2000
19. M04: Spindle On (Counterclockwise)
• Description: Turns the spindle on in the counterclockwise direction.
• Example: M04 S3000
20. M05: Spindle Off
• Description: Stops the spindle.
• Example: M05
21. M06: Tool Change
• Description: Initiates an automatic tool change.
• Example: M06 T02
22. M08: Coolant On
• Description: Turns the coolant on.
• Example: M08
23. M09: Coolant Off
• Description: Turns the coolant off.
• Example: M09
24. M30: Program End and Reset
• Description: Stops the program and resets the machine to its initial state.
• Example: M30
25. M98: Call Subprogram
• Description: Calls a subprogram or subroutine within the main program.
• Example: M98 P100 (Calls subprogram number 100)
Read  The Importance of Ergonomics in CNC Workstations

Utilizing G-Code and M-Code Commands: Tutorials

To fully grasp the practical application of G-Code and M-Code commands, it is crucial to understand their usage in real-world scenarios. Here are a few tutorials to help you get started:

1. Tutorial 1: Basic Linear Interpolation (G01)
• Objective: Create a simple rectangular pocket.
• Steps: Set up workpiece dimensions, establish tool offsets, and generate the G-Code program utilizing the G01 command.
2. Tutorial 2: Circular Interpolation (G02/G03)
• Objective: Machine a circular bore.
• Steps: Define bore diameter, set tool radius offset, and generate G-Code program utilizing the G02/G03 commands.
3. Tutorial 3: Tool Change (M06)
• Objective: Implement an automatic tool change.
• Steps: Set up tool library, specify tool numbers, and create a program that incorporates the M06 command.
4. Tutorial 4: Coolant Control (M08/M09)
• Objective: Activate and deactivate coolant flow during machining.
• Steps: Configure coolant system, program coolant ON and OFF using the M08/M09 commands.

## G Code Commands: Frequently asked questions

G Code commands are an essential aspect of Computer Numerical Control (CNC) programming. These commands serve as instructions for CNC machines to carry out specific actions, such as moving the tool, controlling spindle speed, and executing various machining operations. Whether you’re a CNC novice or a seasoned professional, this FAQ blog will provide you with answers to common questions about G Code commands and help you enhance your understanding of CNC programming.

1. What is G Code? G Code, short for “Geometric Code,” is a programming language used to control CNC machines. It consists of a series of commands that direct the machine’s movements and operations. Each G Code command has a specific function, such as moving the machine to a particular location, controlling feed rates, or activating tool changes.
2. How are G Code commands structured? G Code commands typically follow a specific format. They begin with the letter “G” followed by a number that indicates the type of motion or operation to be performed. For example, G00 represents rapid positioning, while G01 denotes linear interpolation or straight line cutting. Additionally, G Code commands may be accompanied by parameters that provide additional instructions, such as coordinates, feed rates, and tool selections.
3. What are some commonly used G Code commands? Several commonly used G Code commands are essential to CNC programming. Here are a few examples:
• G00: Rapid positioning
• G01: Linear interpolation (straight line cutting)
• G02/G03: Circular interpolation (clockwise/counterclockwise)
• G04: Dwell (pause)
• G20/G21: Units of measurement (inches/millimeters)
• G40/G41/G42: Cutter radius compensation (off/left/right)
• G54-G59: Work coordinate system selection
• G90/G91: Distance mode (absolute/incremental)
1. How do I specify coordinates in G Code commands? Coordinates in G Code commands specify the position or movement of the machine’s tool. These coordinates are typically defined using the X, Y, and Z axes to represent three-dimensional movements. For example, X10 Y20 Z5 represents a move to the point (10, 20, 5) in the machine’s coordinate system. Depending on the machine’s configuration, additional axes, such as A, B, or C, may be used for rotational movements or multi-axis machining.
2. Can I use variables in G Code commands? Some CNC controllers support variables within G Code commands. Variables allow you to define and reuse values throughout your program, providing flexibility and reducing redundancy. By assigning values to variables, you can easily adjust parameters like feed rates or tool offsets without manually modifying each occurrence. However, the availability of variables depends on the specific CNC controller and software you are using.
3. What is the difference between absolute and incremental positioning? Absolute positioning (G90) and incremental positioning (G91) refer to different distance modes in G Code commands. In absolute positioning, coordinates are specified with respect to the machine’s reference point or the workpiece origin. Each move is based on the absolute position from the reference point. In incremental positioning, the coordinates are defined relative to the current tool position. Each move is based on the increment from the current position rather than an absolute value.
4. How do I control spindle speed in G Code commands? Controlling spindle speed is crucial in machining operations. The command M03 is used to start the spindle in the clockwise direction, while M04 is used for counterclockwise rotation. The spindle speed can be specified using the S parameter, followed by the desired RPM (revolutions per minute). For example, M03 S2000 would start the spindle in the clockwise direction at 2000 RPM.
5. Can I use conditional statements or loops in G Code? G Code is primarily focused on motion control and machine operations and does not typically support complex programming constructs like conditional statements or loops. However, some CNC controllers offer additional functionality through custom macro programming, allowing you to incorporate conditional logic or repetitive tasks into your G Code programs.
6. How can I check if my G Code program is error-free? To ensure your G Code program is error-free, you can use simulation software or a CNC controller with a built-in program verification feature. These tools allow you to visualize the tool path, simulate the machining operation, and identify any potential issues, such as collisions or invalid commands, before running the program on an actual machine.
7. Are there standardized G Code commands across different machines? G Code commands are standardized to a certain extent, but variations exist among different CNC machines and manufacturers. The basic commands and functions tend to be consistent, but specific machine capabilities, features, or extensions may introduce variations. It’s important to consult the machine’s documentation and understand the supported G Code commands and parameters for accurate programming.
Read  How to weld with electrodes?

Mastering G-Code and M-Code commands is essential for effectively programming and operating CNC milling machines. With the comprehensive command list and practical tutorials provided in this blog, you now have the knowledge to create precise and intricate milling programs. Remember to consult your machine’s manual and experiment with different commands to explore the full potential of CNC milling.