Two fundamental positioning modes govern CNC motion: absolute programming (G90) and incremental programming (G91). Choosing the correct mode — and understanding when to switch — is critical for dimensional accuracy, programming efficiency, and collision avoidance in CNC machining operations.
1What Is Absolute Programming (G90)?
In absolute programming mode, all coordinate values reference a fixed work coordinate origin (typically set by G54-G59). Every position command specifies the exact location relative to this origin point, regardless of where the tool is currently positioned.
- All coordinates are measured from a single fixed origin point (work coordinate zero)
- The command X50.0 Y30.0 always moves the tool to the same absolute position
- Provides high predictability — each position is independently defined
- Reduces cumulative positioning errors since each move references the same origin
- Preferred for most production programming due to its clarity and traceability
2What Is Incremental Programming (G91)?
In incremental programming mode, each movement is calculated relative to the current tool position. The coordinate values specify the distance and direction to move from the present location, not from the work origin.
- Each coordinate value represents the distance to move from the current position
- The command X10.0 moves the tool 10mm in the positive X direction from wherever it currently is
- Highly flexible for repetitive patterns, bolt hole circles, and equally spaced features
- Errors can accumulate across multiple moves if not carefully managed
- Requires strict logical control to avoid unexpected tool positions
3Practical Comparison
Understanding when to use each mode is essential for efficient and safe CNC programming. Here is a practical comparison of the two approaches in common machining scenarios.
Drilling a Row of Equally Spaced Holes
In G90 mode, each hole position must be calculated and specified individually (e.g., X10, X20, X30, X40). While clear, this requires more calculation for evenly spaced patterns.
In G91 mode, only the spacing distance is needed (e.g., X10.0 repeated). This makes the program shorter and easier to modify when spacing changes.
Complex Contour Machining
G90 mode is preferred for contour machining because each point is independently verifiable against the part drawing. If one line contains an error, it does not affect subsequent positions.
G91 mode is risky for complex contours because an error in one move shifts all subsequent positions, potentially causing tool crashes or scrapped parts.
Subroutine and Pattern Repetition
G90 mode requires recalculating all positions for each instance of a repeated pattern, which can make subroutines longer and harder to maintain.
G91 mode excels in subroutines where the same relative movement pattern is applied at different starting positions.
4Best Practices and Common Pitfalls
Professional CNC programming follows strict guidelines regarding positioning mode usage to prevent costly errors and ensure program reliability.
- Use G90 as the default mode for main programs to maintain clarity and reduce error risk
- Reserve G91 for specific applications such as subprograms, canned cycles, and repetitive patterns
- Always explicitly declare the positioning mode at the beginning of the program — never assume
- Avoid unnecessary switching between G90 and G91 within the same program section
- After using G91 in a subroutine, always restore G90 before returning to the main program
- Verify all movements in simulation mode, especially when mixing positioning modes
Conclusion
Both absolute (G90) and incremental (G91) programming modes serve important roles in CNC machining. Absolute mode provides predictability and safety for general machining, while incremental mode offers flexibility for patterns and subroutines. Professional programmers understand the strengths and risks of each mode and apply them strategically to produce efficient, error-free programs.
