Learning G Code from Scratch can seem like a daunting task, but with the right guidance, you'll be creating custom designs and prints in no time.
G Code is the programming language used to control CNC machines, 3D printers, and other computer-controlled devices. It's a text-based language that consists of a series of commands and instructions that the machine can understand.
To start learning G Code, you'll need to understand the basics of the language, including the use of coordinates, movements, and commands. You can begin by learning the different types of G Code commands, such as G0 (rapid positioning) and G1 (linear interpolation).
In this guide, we'll walk you through the process of learning G Code from scratch, covering the fundamentals and providing practical examples to help you get started.
You might enjoy: Learn How to Code Google's Go Golang Programming Language
G Code Basics
G-code is a machine-based language that tells a CNC machine where and how to move. It's a set of instructions that was first established in the 1960s by the Electronics Industry Association (EIA).
A unique perspective: Statistical vs Machine Learning
You'll often hear G-code referred to as RS-274D, but the name G-code comes from the fact that many of the words or individual pieces of code that make up this language start with the letter G.
Some G codes are used for basic movements, such as rapid movement (G00) and moving in a straight line at a specified feedrate (G01). Others, like G02 and G03, are used for arc or circle movements.
To select the plane of movement, you can use codes like G17 for the X Y plane, G18 for the X Z plane, and G19 for the Y Z plane.
Here's a list of some common G codes:
- G00 = rapid movement
- G01 = move in a straight line at the specified feedrate*
- G02 = clockwise arc or circle movement*
- G03 = counter clockwise arc or circle movement*
- G17 = X Y plane selection
- G18 = X Z plane selection
- G19 = Y Z plane selection
Understanding these basics will give you a solid foundation for working with G-code and programming your CNC machine.
G Code Types
G Code Types are crucial to understanding how to write effective programs for your CNC machine. There are several types of G Codes, each with its own specific function.
G Codes for movement and positioning include G00 for rapid movement, G01 for moving in a straight line at the specified feedrate, and G02 and G03 for clockwise and counter-clockwise arc or circle movements respectively.
For dwell and plane selection, G04 is used for dwell, G17 selects the X Y plane, G18 selects the X Z plane, and G19 selects the Y Z plane.
For coordinates, G20 is used for coordinates in inches and G21 is used for coordinates in MM.
The table below shows a summary of some common G Codes:
Cutter compensation and canned cycles are also important G Code types. G40 cancels cutter compensation, G41 and G42 are used for cutter compensation left and right respectively, and G73, G81, and G83 are used for high speed peck drilling, basic drilling, and peck drilling canned cycles respectively.
G Code Commands
G Code Commands are a fundamental part of CNC programming, and understanding them is crucial for any CNC enthusiast.
G01 is the most commonly used G-code, responsible for moving the cutter in a straight line based on the coordinates you enter. This code is essential for any CNC operation.
You can use G01 to move the cutter to any location on the machine, but be aware that it ignores spaces in the code, so you can write G01 X0 Y0 Z0.5 or G01 X0Y0Z0.5.
To move the cutter at the fastest speed possible, use G00 instead of G01. However, G00 is a rapids move in a straight line, and it's generally safer to use G01, which moves at a feed rate.
Here is a list of some common G-code commands:
Remember, G-code dialect will determine whether you need a leading zero or not, and some machines may require a decimal point in certain commands.
Blocks
Blocks are a fundamental concept in G-code programming, allowing you to group related instructions together for easier reading and execution.
A block is a single line of code that contains multiple instructions, such as G01, X1/Y1, F20, T01, M03, and S500. Each instruction is separated by a space, and the entire block is executed by the CNC machine from left to right and top to bottom, like reading a book.
Blocks can be used to simplify complex programs by breaking them down into smaller, more manageable sections.
A single block can contain up to 20 lines of code, but it's generally recommended to keep blocks concise and focused on a single task.
Multiple blocks are combined to form a complete CNC program, which the machine reads and executes line by line.
Here's an example of a block with multiple instructions:
G01 X1/Y1 F20 T01 M03 S500
This block tells the machine to perform a linear feed move, move to X1/Y1 coordinates, move at a feed rate of 20, use Tool 1, turn the spindle on, and set a spindle speed of 500.
Blocks can be used to create reusable code and reduce programming time.
By using blocks, you can create more efficient and readable programs that are easier to maintain and modify.
Blocks can be used to create multiple repetitive cycles, such as G70, G71, G72, and G73, which enable the programmer to remove a lot of material with just a few lines of code.
You might enjoy: Best Way to Learn to Code Veteran Programs
Here's an example of a block that uses a canned cycle:
G70 S500 F20
This block tells the machine to use the finishing cycle with a spindle speed of 500 and a feed rate of 20.
Blocks can be used to create canned cycles, such as G81, G82, G83, and G84, which enable the programmer to write g-code to drill and bore many holes with minimum lines of code.
Here's an example of a block that uses a canned cycle:
G81 X1/Y1 F20
This block tells the machine to use the simple drill cycle with a feed rate of 20 and drill at X1/Y1 coordinates.
Additional reading: Learning Systems in Machine Learning
Linear Interpolation
Linear interpolation is a fundamental concept in G-code programming. It's used to move the cutter in a straight line between two points.
To use linear interpolation, you need to have a feed rate (F) active before the command will run. This is why you'll often see a G01 command followed by a feed rate, like G01 X-100 F50.0.
You don't need to add the G01 command on every line, just when there's no other movement G-code active. For example, if you're moving from a G02 or G03 command to a new position, you only need to add G01.
A typical block for linear interpolation would look like this: G01 X-100 F50.0. The feed rate (F50) is only needed once until you want to change the speed in which you're cutting.
Here are some key points to keep in mind when using linear interpolation:
- Use G01 for linear interpolation, not G00.
- Make sure to have a feed rate (F) active before running the G01 command.
- Only add the G01 command when there's no other movement G-code active.
Linear interpolation can be used with all axes cutting at the same time, or just one. However, it's not common to cut with the Z axis as well as X and Y, but it's possible if needed.
G90 and G91
G90 and G91 are two G code commands that determine the positioning system of a machine.
G90 selects the absolute positioning system, which means all movements are taken from the datum position. In this mode, if the control reads X100.0, the tool will move 100mm in the plus direction from the datum.
G91 selects the incremental positioning system, which means all movements are taken from the last known position of the tool. For example, if X100.0 is read, the tool will move 100mm in the plus direction of its current position.
In absolute positioning, if X150.0 is read after X100.0, the tool will move another 50mm in the plus direction.
G54-G59 Workshift Datums
G54-G59 Workshift Datums are used to set workshift datums, which can be set within the program using G10 or by setting them in the CNC controls.
These datums can be changed in the parameters or by using a G92 command, but it's generally not recommended unless you have a good reason and know what you're doing.
G53 is the machine datum, a constant that remains unchanged unless altered in the parameters or with a G92 command.
Once a workshift datum is set, all measurements will come from this point, setting the X0, Y0, Z0 position that all dimensions will run from until a new datum is defined.
This means that all subsequent measurements and dimensions will be referenced to this new datum, allowing for precise and accurate machining operations.
Clockwise Spindle: M03
The M03 command is a game-changer for any CNC operation. It's what gets the spindle spinning clockwise at the programmed speed.
You can start the spindle spinning with just M03. As soon as you enter this command, the spindle will begin rotating clockwise at its programmed speed. This is what you need to get your tool moving.
You can stop the spindle with the M05 command if needed. This is a simple but important step to keep in mind.
Here's a quick rundown of the M03 command:
CNC Settings
CNC Settings are essential for a successful CNC program. They identify the start of the program with a percentage sign (%).
The program name, ODRILL, is specified in the header. This name is likely used to identify the program in the machine's memory.
G codes, such as G17, G20, G40, G49, and G80, are used to establish important safety lines. These codes are crucial for the program's execution.
Expand your knowledge: Learn Your Name in Morse Code Day
Tool call and tool change commands are initiated with the T1 M06 line. This command is used to select a specific tool and perform a tool change.
The X and Y pre-position line, G00 G54 X0. Y0., is used to move the machine to a specific location. The S2000 M03 command sets the spindle speed.
The tool length offset command, G43 H1, is used to adjust the tool's length. This command is essential for accurate machining. The Z pre-position line, Z1., is used to set the Z-axis position.
Spindle Speed: S
The S-word is a crucial part of setting spindle RPM, but it doesn't actually make the spindle spin. You type in an S followed by the desired RPM, like "S1000", but that's just telling the CNC what speed to aim for.
This is similar to using the F-word to set feed rates, where you're not actually causing any motion, but rather telling the CNC how fast it should move when motion does happen. The spindle just sits there until you give it a command to start spinning.
To actually get the spindle spinning, you'll need to use a different command, which we'll cover in the next section.
Coolant: M07/M08/M09
Let's talk about coolant settings for your CNC machine. M07 and M08 are two different coolant settings that can be used to turn on various types of coolant.
M07 can turn on an air blast or mist, while M08 can turn on full flood coolant. It's worth trying both out to see what they do.
M09 turns off the coolant, which is a good one to know.
CNC Program Structure
A G-code program typically starts with a series of blocks that ensure the CNC machine is set up for safe and efficient operation.
These blocks usually follow a specific order, which includes starting the CNC program, loading the required tool, turning the spindle on, and turning the coolant on. The program then moves to a position above the part and starts the machining process.
The order of these blocks is crucial, as it determines the flow of the program and ensures that the machine operates safely and efficiently. For example, turning the coolant off is typically done after the machining process is complete.
Here are the typical steps found in a G-code program:
- Start the CNC program
- Load the required tool
- Turn the spindle on
- Turn the coolant on
- Move to a position above a part
- Start the machining process
- Turn the coolant off
- Turn the spindle off
- Move away from the part to a safe location
- End the CNC program
CNC Program
A CNC program is essentially a set of instructions that a computer-controlled machine, like a CNC mill or lathe, follows to produce a part. This program is made up of G-code blocks, which are arranged in a specific order to ensure the part is produced safely and efficiently.
The typical flow of a G-code program starts with loading the required tool, turning the spindle on, and turning the coolant on. This is followed by moving to a position above the part, starting the machining process, and then turning the coolant off and the spindle off. Finally, the program ends with moving away from the part to a safe location.
A CNC program header is a crucial part of the program, and it's usually denoted by the special character code %. This header includes information like the program name, safety line establishing important G codes, tool call and tool change commands, and X and Y pre-position lines.
The safety line in a CNC program header establishes important G codes, which are used to ensure the part is produced safely. These G codes include G17, G20, G40, G49, G80, and G90.
Here are some special character codes that can be added to a G-code program:
- % Begins or ends a CNC program
- () Defines a comment written by a CNC operator
- / Ignores all characters that come after the slash
- ; Determines when a block of code ends
A CNC program header can be seen in the example below:
% (Identifies the start of the program)
ODRILL (program name)
G17 G20 G40 G49 G80 G90 (safety line establishing important G codes)
T1 M06 (Tool call and tool change commands)
G00 G54 X0. Y0. S2000 M03 (X and Y pre-position line)
G43 H1 Z1. (Tool length offset command and Z pre-position line)
CNC Program Footer
The CNC program footer is a crucial part of the program structure, and it's where you'll find the program's end message.
It's usually located at the bottom of the program, and it's a good place to add a comment or a message that will be displayed when the program finishes running.
A typical CNC program footer might include a comment like "Program complete" or "Cycle complete", which lets the operator know that the program has finished running.
This footer can also be used to add a timestamp, so you can keep track of when the program was run.
In some cases, the footer might even include a command to clean the machine or perform other tasks after the program is complete.
Frequently Asked Questions
Is G-code easy to learn?
G-code is relatively easy to learn, especially for those without extensive programming experience, as it uses a simpler syntax compared to languages like JavaScript or HTML. With some practice, you can quickly grasp the basics and start creating your own G-code programs.
What is the most common G-code?
The most common G-code is G01, which is used for linear movement, allowing the machine to move in a straight line from one point to another. This code is a fundamental building block for more complex movements and operations in CNC machining.
What language is the G-code written in?
G-code is written in a programming language specifically designed for CNC machines, known as Geometric Code. This language is used to instruct machines on precise movements and actions.
Sources
- https://www.autodesk.com/products/fusion-360/blog/cnc-programming-fundamentals-g-code/
- https://gcodetutor.com/cnc-machine-training/cnc-g-codes.html
- https://forum.prusa3d.com/forum/english-forum-general-discussion-announcements-and-releases/learning-g-code/
- https://tormach.com/articles/9-easy-g-codes-every-machinist-must-learn
- https://cncphilosophy.com/g-code-programming-for-dummies/
Featured Images: pexels.com