Bird
Raised Fist0
CNC Programmingscripting~10 mins

G-code program structure in CNC Programming - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - G-code program structure
Start Program
↓
Initialize Settings
↓
Execute Commands
↓
Check for End
↓
Next Command
The G-code program starts, sets up machine parameters, runs commands step-by-step, and ends when the program finishes.
Execution Sample
CNC Programming
N10 G21 (Set units to mm)
N20 G90 (Absolute positioning)
N30 G01 X50 Y25 F100 (Move linearly to X50 Y25 at feed 100)
N40 M30 (End program)
This simple G-code program sets units, positioning mode, moves the tool, then ends the program.
Execution Table
Line NumberCommandActionMachine StateOutput
N10G21Set units to millimetersUnits=mmUnits set to mm
N20G90Set absolute positioning modePositioning=AbsolutePositioning set to absolute
N30G01 X50 Y25 F100Move tool linearly to X=50, Y=25 at feed 100Position=(50,25), Feed=100Tool moved to X50 Y25
N40M30End programProgram EndedProgram stopped
💡 Program ends at line N40 with M30 command
Variable Tracker
VariableStartAfter N10After N20After N30After N40
UnitsDefault (inches)mmmmmmmm
PositioningDefault (Incremental)IncrementalAbsoluteAbsoluteAbsolute
Position(0,0)(0,0)(0,0)(50,25)(50,25)
FeedDefaultDefaultDefault100100
Program StateNot startedRunningRunningRunningEnded
Key Moments - 3 Insights
Why does the tool move to X50 Y25 at line N30?
Because line N30 uses G01 (linear move) with absolute positioning set by G90 at N20, so the tool moves directly to coordinates X=50, Y=25.
What happens if M30 is missing at the end?
The program would not officially end, so the machine might wait or repeat commands depending on controller settings. See exit at N40 in execution_table.
Why is G21 important at the start?
G21 sets units to millimeters; without it, the machine might interpret distances in inches, causing wrong moves. This is shown in variable_tracker Units change after N10.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the machine position after line N30?
A(50, 25)
B(0, 0)
C(100, 50)
D(25, 50)
💡 Hint
Check the Position column in the execution_table row for N30
At which line does the program officially end?
AN10
BN20
CN40
DN30
💡 Hint
Look at the Action and Output columns in execution_table for program end
If G90 at N20 was changed to G91, how would the position after N30 change?
APosition would be (50, 25)
BPosition would be relative to current, so (50, 25) added to previous
CPosition would reset to (0,0)
DPosition would not change
💡 Hint
G91 means incremental positioning, so moves add to current position (see variable_tracker Position changes)
Concept Snapshot
G-code program structure:
- Start with program setup (units, positioning)
- Execute movement and machine commands line by line
- Use N numbers for line labels
- End program with M30
- Commands affect machine state stepwise
Full Transcript
This visual execution shows a simple G-code program structure. The program starts by setting units to millimeters with G21, then sets absolute positioning mode with G90. Next, it moves the tool linearly to coordinates X=50 and Y=25 at feed rate 100 using G01. Finally, the program ends with M30. The execution table traces each line's command, action, and machine state changes. The variable tracker shows how units, positioning mode, tool position, feed rate, and program state change after each command. Key moments clarify why absolute positioning affects moves, the importance of ending the program, and unit settings. The quiz tests understanding of position after moves, program end line, and effect of changing positioning mode. This step-by-step trace helps beginners see how G-code commands control CNC machine behavior in order.

Practice

(1/5)
1. What is the correct way to start a G-code program?
easy
A. Write G90 as the first line
B. Start with the command M30
C. Use G01 to start the program
D. Begin with a program number like O1000

Solution

  1. Step 1: Identify the program start syntax

    G-code programs start with a program number, usually written as O1000 or similar.
  2. Step 2: Understand the role of other commands

    M30 ends the program, G01 and G90 are motion and positioning commands, not start markers.
  3. Final Answer:

    Begin with a program number like O1000 -> Option D
  4. Quick Check:

    Program start = O1000 [OK]
Hint: Program always starts with O-number like O1000 [OK]
Common Mistakes:
  • Confusing M30 as start instead of end
  • Using motion commands as start
  • Skipping program number line
2. Which of the following lines correctly ends a G-code program?
easy
A. G00 X0 Y0
B. O1000
C. M30
D. G90

Solution

  1. Step 1: Identify the program end command

    The command M30 is used to stop and end a G-code program.
  2. Step 2: Differentiate from other commands

    G00 moves the tool, G90 sets positioning mode, and O1000 is a program number, not an end command.
  3. Final Answer:

    M30 -> Option C
  4. Quick Check:

    Program end = M30 [OK]
Hint: Program ends with M30 command [OK]
Common Mistakes:
  • Using motion commands as program end
  • Confusing program number with end command
  • Omitting M30 at program end
3. Given the following G-code snippet, what is the tool's final position?
O1000
G90
G00 X10 Y5
G01 X20 Y15 F100
M30
medium
A. X20 Y15
B. X10 Y5
C. X0 Y0
D. X100 Y100

Solution

  1. Step 1: Trace the tool movements

    G00 X10 Y5 moves the tool rapidly to X=10, Y=5. Then G01 X20 Y15 F100 moves it linearly to X=20, Y=15.
  2. Step 2: Identify final position before program end

    The last position command is G01 X20 Y15, so the tool ends at X=20, Y=15.
  3. Final Answer:

    X20 Y15 -> Option A
  4. Quick Check:

    Last move = X20 Y15 [OK]
Hint: Final position is last coordinate command before M30 [OK]
Common Mistakes:
  • Confusing rapid move (G00) as final position
  • Ignoring linear move (G01)
  • Assuming start position is final
4. Identify the error in this G-code program snippet:
O2000
G01 X10 Y10
G90
M30
medium
A. G90 should come before G01 for positioning mode
B. M30 is used incorrectly
C. Missing program start number
D. No error, program is correct

Solution

  1. Step 1: Check command order for positioning

    G90 sets absolute positioning and should be set before any move commands like G01.
  2. Step 2: Analyze the given order

    The program moves with G01 before setting G90, which can cause unexpected positioning behavior.
  3. Final Answer:

    G90 should come before G01 for positioning mode -> Option A
  4. Quick Check:

    Set positioning mode before moves [OK]
Hint: Set G90 before moves to avoid positioning errors [OK]
Common Mistakes:
  • Placing G90 after move commands
  • Ignoring command order importance
  • Assuming M30 ends program incorrectly
5. You want to write a G-code program that sets absolute positioning, moves the tool to X=50 Y=50 at feed rate 200, then ends the program. Which is the correct structure?
hard
A.
O3000
G01 X50 Y50 F200
G90
M30
B.
O3000
G90
G01 X50 Y50 F200
M30
C.
G90
O3000
G01 X50 Y50 F200
M30
D.
O3000
M30
G90
G01 X50 Y50 F200

Solution

  1. Step 1: Confirm program start and positioning

    The program must start with a program number O3000 and set absolute positioning G90 before moves.
  2. Step 2: Check move command and program end

    G01 X50 Y50 F200 moves the tool at feed rate 200, and M30 ends the program properly.
  3. Final Answer:

    O3000 G90 G01 X50 Y50 F200 M30 -> Option B
  4. Quick Check:

    Start with O-number, set G90, move, then M30 [OK]
Hint: Start with O-number, set G90, move, then M30 to end [OK]
Common Mistakes:
  • Placing M30 before moves
  • Setting G90 after moves
  • Starting without program number
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard