G01 Linear Interpolation Command: Complete CNC Programming Guide
Master G01 Linear Interpolation on Fanuc, Siemens, and Mitsubishi CNCs. Understand parameters, avoid zero feed alarms like PS0011, and write robust cutting code.
Introduction
An incorrectly set workpiece coordinate system (G54) or an inaccurate tool length offset will transform a standard G01 linear plunge into a high-speed collision with a solid steel workpiece. The moment the tool holder crashes into a vise jaw, chuck, or fixture clamp at a coordinated cutting feedrate, the physical consequences are catastrophic: a fractured carbide insert, a bent ballscrew, and severe spindle bearing misalignment that immediately halts production, forcing costly downtime and scrapping high-value components. Understanding how to program, coordinate, and safeguard the linear interpolation command across different CNC controls is the only line of defense against these severe mechanical failures.
Technical Summary
| Technical Attribute | Specification |
|---|---|
| Command Code | G01 (G1 in Siemens) |
| Modal Group / Modality | Group 01 (Modal command) |
| Supported Brands | Fanuc, Siemens, Mitsubishi |
| Critical Parameters | Parameter 1422 (Fanuc Max Cutting Feedrate), $MC_MAX_PATH_FEED (Siemens Max Path Feed), Parameter #1006 / #1009 (Mitsubishi Max Cutting Feedrate) |
| Main Constraint | Cutting velocity is physically restricted by individual axis acceleration capabilities and software clamping limits. |
Quick Read
- Select
G01overG00for all active cutting operations to maintain precise control over the path vector and chip load. - Program a non-zero feedrate (
F) before or directly within the firstG01block to avoid immediate controller lockout and zero-feed alarms. - Implement exact stop checks (
G09orG61/G60/G61.1) at critical corners to prevent the controller from rounding off sharp workpiece profiles. - Verify Z-axis clearance heights during dry runs by keeping one hand on the feedrate override dial set to 0% to prevent spindle crashes.
- Confirm the default unit scaling since omitting a decimal point (e.g.,
F200instead ofF200.0) can slow the feedrate to 0.2 mm/min. - Bound target coordinates within software stroke parameters to avoid triggering soft limit overtravel alarms during high-speed cuts.
Basic Concepts
G01 Linear Interpolation is the fundamental cutting command used in CNC machining. Unlike G00, which moves axes at their maximum rapid velocity to position the tool, G01 controls the feedrate along a straight line vector. The controller coordinates the servo motor speeds for all involved axes so that the tool tip moves at exactly the commanded F feedrate along the vector path. This coordinated motion ensures a uniform chip load on the cutting tool, protecting the cutter from premature wear or sudden breakage, and ensuring high-quality surface finishes on the workpiece.
Programmers and operators must remain highly vigilant during G01 operations, particularly when transitioning from air cutting to material engagement. A common failure cause is a mismatch between the programmed coordinate system and the actual physical setup. If the tool offset or workpiece coordinate system (G54) is incorrectly set, the tool will execute a G01 plunge command into solid metal instead of air. This can lead to a hard collision where the tool holder crashes into the vise jaw, chuck, or clamp, causing catastrophic damage to the spindle, fracturing the carbide insert, and resulting in a scrap part. Operators should always use the single block execution mode and keep one hand on the feedrate override dial during the first run of a new program to manually reduce the feed rate to zero if a collision seems imminent.
Command Structure
The linear interpolation command tells the CNC controller to drive the tool along a straight line path to the programmed target coordinates at a controlled velocity. Because G01 is a modal command belonging to Group 01, once it is programmed, all subsequent coordinate commands are executed as linear cuts until another motion code (such as G00 or G02) overrides it. The path velocity is dictated by the F code, which remains active and governs all linear movements until a new F value is specified.
When programming the command, the coordinates can be specified in absolute values, where targets are referenced from the workpiece zero, or incremental values, where targets represent the distance and direction of travel from the tool's current position. Precision is highly dependent on how the controller interpolates these axes simultaneously, and omitting coordinate axes simply instructs the controller to keep those axes stationary while moving the specified ones.
Fanuc Syntax:
G01 X_ Y_ Z_ F_ ; (or G01 X_ Z_ F_ ;)
Siemens Syntax:
G1 X... Y... Z... F...
Mitsubishi Syntax:
G01 X_ Y_ Z_ F_ ,comma_or_C_R_ ;
| Brand | Parameter | Description | Value Range |
|---|---|---|---|
| Fanuc | Parameter 1422 | Maximum cutting feedrate for each axis. Clamps feedrate without alarm if programmed F exceeds it. | System-dependent |
| Fanuc | Parameter 1826 | Position window / In-position width. Defines target window in microns for block completion. | System-dependent |
| Fanuc | Parameter 1622 | Deceleration time constant. Configures cutting feed acceleration/deceleration curve. | System-dependent |
| Siemens | $MC_MAX_PATH_FEED | Maximum path feedrate limit. Clamps feedrate based on machine physical bounds. | System-dependent |
| Siemens | $MA_MAX_AX_VELO | Maximum velocity of a specific axis. | System-dependent |
| Siemens | MD 36010 $MA_STOP_LIMIT_FINE | Exact stop tolerance fine. In-position checking limit in mm. | System-dependent |
| Siemens | MD 36000 $MA_STOP_LIMIT_COARSE | Exact stop tolerance coarse. In-position checking limit in mm. | System-dependent |
| Mitsubishi | Parameter #1006 / #1009 | Maximum cutting feedrate clamping per axis. Clamps commanded feedrate. | System-dependent |
| Mitsubishi | Parameter #1026 | In-Position Width. Determines the target error window for block transition. | System-dependent |
| Mitsubishi | Parameter #1206 | Acceleration/deceleration time constant. Configures exponential curve on cutting feed. | System-dependent |
Brand Applications
Fanuc
On Fanuc systems, the linear interpolation command operates within a strictly defined parameter structure. The controller coordinates axis movement, but enforces maximum cutting feedrates per axis to protect system mechanics, and verifies block completion using the configured in-position window.
Standard programming utilizes absolute G90 or incremental G91 positioning modes. In lathe applications, U and W represent incremental coordinates along the X and Z axes respectively, while the modal feedrate F controls physical movement.
| Category | Detail / Identifier | Description / Behavior |
|---|---|---|
| Parameter | Parameter 1422 | Maximum cutting feedrate per axis. Silently clamps F value to parameter limit. |
| Parameter | Parameter 1826 | Position window (in microns). Determines block completion when axis distance falls within this range. |
| Parameter | Parameter 1622 | Deceleration time constant for cutting feeds. |
| Alarm | PS0011 | FEEDRATE ZERO: Executing a G01 cutting motion without an active feedrate or if the feedrate is zero. |
| Alarm | PS0010 | IMPROPER G-CODE: Invalid address or conflicting modal codes defined in the same block. |
| Alarm | OT0500 | OVERTRAVEL: Programmed coordinate exceeds software stroke limit parameter limits (1320/1321). |
| Version / Option | Series 30i/31i-B vs 0i-F | Series 30i/31i-B supports advanced high-speed look-ahead AI Contour Control II (G05.1 Q1). Series 0i-F is limited to standard AI Contour Control I or requires software options. |
| Version / Option | Polar Interpolation | Polar coordinate interpolation uses G112 on older Series 16i/18i controllers, but modern Series use standard G12.1. |
Operators must remain vigilant: if feedrate override scaling causes the commanded feedrate to exceed the limit in Parameter 1422, the controller clamps the speed without displaying any alarm, which can mask potential path timing differences.
Siemens
Siemens Sinumerik controls utilize a dynamic look-ahead trajectory planner. The control system applies limits based on path feed rates and axis-specific machine data to ensure that paths remain smooth and stable.
Programming in Siemens supports flexible coordinate overrides like non-modal absolute =AC(...) and incremental =IC(...) commands. Feedrate behavior is enhanced by the FGROUP command, which defines which axes govern the combined path velocity.
| Category | Detail / Identifier | Description / Behavior |
|---|---|---|
| Parameter | $MC_MAX_PATH_FEED | Maximum path feedrate limit. Clamps path velocity within safe physical boundaries. |
| Parameter | $MA_MAX_AX_VELO | Maximum velocity of a specific axis. |
| Parameter | MD 36010 | $MA_STOP_LIMIT_FINE exact stop tolerance check limit in mm. |
| Parameter | MD 36000 | $MA_STOP_LIMIT_COARSE exact stop tolerance check limit in mm. |
| Alarm | Alarm 14800 | Program-controlled feedrate is not programmed: G1 executed without an active, non-zero F command. |
| Alarm | Alarm 10720 | Software limit switch reached: Programmed coordinate exceeds active software limit switches. |
| Alarm | Alarm 10910 | Irregular path velocity: Velocity discontinuity during high-speed mold contouring paths. |
| Version / Option | 840D sl vs 828D | CYCLE832 (High Speed Settings) for look-ahead, blending, and acceleration tuning is standard on 840D sl but restricted or licensed separately on 828D. |
| Version / Option | COMPCAD vs COMPON | 840D sl supports high-speed spline compressor COMPCAD. Older 810D/840D models utilized standard COMPON or polynomials. |
When moving rotary axes under a G1 command, always define FGROUP to include the rotary axes; otherwise, the controller assumes rotary degrees are linear millimeters, resulting in extremely slow tool motions.
Mitsubishi
Mitsubishi controllers manage linear interpolation motions through precise servo loops. The axis cutting velocity is capped, while exact position deviations are verified against the configured in-position window.
The G01 syntax allows for direct corner rounding via ,R and direct chamfering via ,C appended directly to the block. Coordinates are defined using standard G90/G91 or lathe incremental U/W axes.
| Category | Detail / Identifier | Description / Behavior |
|---|---|---|
| Parameter | Parameter #1006 / #1009 | Maximum cutting feedrate clamping per axis. |
| Parameter | Parameter #1026 | In-Position Width. Determines the target error window for block transition. |
| Parameter | Parameter #1206 | Acceleration/deceleration time constant. Configures exponential curve on cutting feed. |
| Alarm | Alarm M01 0005 | FEEDRATE ZERO: G01 executed without feedrate programmed or if feedrate override dial is set to 0%. |
| Alarm | Alarm M01 0007 | ILLEGAL G-CODE: Commanded G01 with unsupported address or conflicting modal groups. |
| Alarm | Alarm Y02 0050 | OVERTRAVEL: Programmed coordinate exceeds software stroke limit boundaries. |
| Version / Option | M800 vs M80 Series | M800 series CPU supports high-speed high-accuracy SSS Control II (G05 P10000) with a larger look-ahead buffer. M80 uses standard SSS Control (G05 P20000) with a smaller buffer. |
| Version / Option | M80/M800 vs older Meldas | Modern M80/M800 use interactive GUI screens for parameter entry, while older Meldas 50/60 series required hexadecimal addresses. |
Care must be taken when using automatic corner chamfering or rounding (,C / ,R); if the subsequent block is non-linear or in a different plane, a path interpolation alarm is immediately triggered.
Brand Comparison
| Feature | Fanuc | Siemens | Mitsubishi |
|---|---|---|---|
| Corners & Blending | Blends using G64, rounds corners by default. Requires G09 or G61 for exact stop check. | Blends with G641/G642 using spatial tolerances (ADIS/ADISPOS). Advanced spline compression (COMPCAD). | Blends using G61.1 or SSS Control II (G05 P10000) to adjust feed rate smoothly at corners. |
| In-Position Width | Set via Parameter 1826 in microns. | Checked based on stop tolerances MD 36010 and MD 36000 in mm. | Checked based on Parameter #1026. |
| Special Syntax | Standard G90/G91 and incremental turning U/W. | Non-modal AC/IC overrides within a block (e.g. X=AC(...)). | Automatic corner rounding/chamfering syntax directly inside G01 block via ,R or ,C. |
Technical Analysis
Analyzing the mechanical and software behaviors of these three control systems reveals distinct approaches to linear interpolation. Fanuc systems prioritize deterministic parameter limits, quietly enforcing axis restrictions through Parameter 1422 without stopping execution. This design choice prevents unexpected program interruptions but requires operators to verify path timings before execution. Fanuc's G64 mode blends blocks continuously, prioritizing throughput over sharp corner geometry unless overridden by G09 or G61, which verify that positions settle within Parameter 1826 limits.
In contrast, Siemens systems adopt an advanced, trajectory-centric model that calculates continuous path blending dynamically. Through G641 and G642 modes, programmers can establish spatial tolerances using ADIS or ADISPOS. Instead of simple rounding, the controller parses several blocks ahead, fitting a smooth spline transition within these active bounds. This ensures maximum path velocity and uniform chip loading, avoiding sudden deceleration on complex contours, while exact stop thresholds are managed directly in machine data MD 36010.
Mitsubishi controllers leverage a highly robust axis-coordination method that emphasizes smooth motion control on 3D surfaces. By implementing Super Smooth Surface (SSS Control II via G05 P10000), Mitsubishi controllers analyze consecutive G01 paths to minimize acceleration discontinuities at block boundaries, reducing mechanical vibrations. This is complemented by a simplified syntax for automatic chamfering and rounding (,C and ,R) embedded directly into G01 commands, saving block space and eliminating complex trigonometric math.
Program Examples
Fanuc Example
; Fanuc Program Example (Linear Mill / Lathe Profile)
G90 G01 X100.0 Y50.0 F150.0 ; (Absolute linear motion to X100, Y50 at 150 mm/min)
G91 G01 Z-25.0 F100.0 ; (Incremental motion 25mm in negative Z at 100 mm/min)
G01 X80.0 Y80.0 ; (Modal G01 linear motion to X80, Y80 reusing previous F100.0 feedrate)
Dry Run Analysis (Fanuc): Set the feedrate override dial to 0% and execute the program in single block mode. Verify on the coordinates screen that the Z-axis is positioned safely above the workpiece before permitting G01 to execute. During incremental steps, confirm that G91 is correctly evaluated and that modal G01 commands carry the expected F100.0 feedrate from the previous block.
Siemens Example
; Siemens Program Example (Advanced Path Blending)
G90 G1 X150 Y75 F200 ; (Absolute positioning to X150, Y75 at 200 mm/min)
G1 Z=IC(-10) F120 ; (Incremental motion in Z by -10mm at 120 mm/min using AC/IC style syntax)
G1 X100 Y50 F=FGROUP(X,Y) ; (Performs linear interpolation specifying X and Y as the main feed group)
Dry Run Analysis (Siemens): Before machining the physical block, run a dry run with Z-axis offset elevated. Verify the coordinate display shows absolute positions for the first and third blocks, and that the second block translates Z=IC(-10) to exactly 10mm down from the previous height. Confirm that FGROUP(X,Y) maintains path speed based purely on the X and Y coordinate vectors.
Mitsubishi Example
; Mitsubishi Program Example (Corner Rounding)
G90 G01 X200.0 Y100.0 F250.0 ; (Absolute linear motion to X200, Y100 at 250 mm/min)
G01 X300.0 ,R10.0 F150.0 ; (Modal linear move to X300 with a 10mm corner radius blended to the next block)
G91 G01 Z-50.0 F100.0 ; (Incremental linear move in Z of -50mm at 100 mm/min feedrate)
Dry Run Analysis (Mitsubishi): Ensure the program is executed with high-accuracy mode inactive first. Observe that the transition to X300.0 generates a smooth 10mm radius at the corner before transitioning to the incremental move in Z. Verify the controller does not generate a path calculation alarm due to any non-linear command immediately following the corner rounded block.
Error Analysis
| Brand | Alarm Code | Trigger Condition | Operator Symptom | Root Cause / Fix |
|---|---|---|---|---|
| Fanuc | PS0011 | Executing a G01 cutting motion without an active feedrate or if the feedrate is zero. | System halts immediately, axes lock up, and alarm light activates. | Add a valid non-zero F feedrate command before or within the first G01 block. |
| Fanuc | PS0010 | Invalid address or conflicting modal codes defined in the same block as G01. | Program execution stops on the conflicting block. | Inspect the block syntax, check for overlapping coordinates or modal codes, and separate commands. |
| Fanuc | OT0500 | Programmed coordinate exceeds software stroke limit parameters (1320/1321). | Emergency stop is triggered, axes freeze, and limit alarm appears. | Modify coordinate targets to lie within safe physical boundaries or adjust parameter limit coordinates. |
| Siemens | Alarm 14800 | G1 command executed without an active, non-zero F feedrate active. | Execution halts instantly with alarm code displayed on screens. | Program a feedrate (F...) before or inside the G1 block. |
| Siemens | Alarm 10720 | Programmed coordinate exceeds active software limit switch boundaries. | Axis motion decelerates to a stop and execution is locked. | Modify the target coordinate within software bounds or verify G54 coordinate offsets. |
| Siemens | Alarm 10910 | Velocity discontinuity occurs during high-speed mold contouring paths. | Axis movement jerks slightly or controller halts execution. | Smooth the CAD/CAM path geometry or activate COMPCAD compressor commands. |
| Mitsubishi | Alarm M01 0005 | G01 executed without feedrate programmed or if feedrate override dial is set to 0%. | Machine remains stationary, feed hold light may activate, and movement stops. | Program a valid non-zero feedrate or turn up the operator panel feedrate override dial. |
| Mitsubishi | Alarm M01 0007 | Commanded G01 with unsupported address or conflicting modal groups. | Execution halts immediately on the faulty block. | Revise G-code syntax and ensure parameters correspond to supported coordinate addresses. |
| Mitsubishi | Alarm Y02 0050 | Programmed coordinate exceeds software stroke limit boundaries. | System locks axis movement and triggers an overtravel warning. | Modify target coordinates in the program to lie within safe software stroke limits. |
Application Note
Spindle bearing destruction and ball screw deformation occur immediately when a G01 plunge is executed with a negative Z-axis offset value in G54. This specific mechanical failure arises when tool setter measurements are entered with inverted signs on the control panel, causing the CNC to coordinate simultaneous axis travel straight into the fixture clamp instead of the workpiece. To eliminate this risk, operators must run the initial cycle in single block mode with the Z-axis offset elevated 50 millimeters above the material, checking the remaining 'distance-to-go' value on the screen before the cutter engages. Programmers must also verify that decimal points are explicitly written on all feedrate words (e.g., F100.0 instead of F100), because a missing decimal point scales a standard cutting speed down to a microscopic feed rate of 0.1 mm/min, resulting in long dwell times that overheat carbide inserts and ruin tool life.
Related Command Network
- G00 Rapid Traverse Mode: Positions the axes at maximum rapid velocity for non-cutting segments, which must be deactivated before performing a G01 cutting pass.
- G02 / G03 Circular Interpolation: Standard commands that coordinate axis paths along clockwise or counterclockwise arcs, transitioning from modal G01 linear motion.
- G09 Exact Stop: Performs a non-modal check at the end of a G01 block to verify that axes have decelerated to a complete stop before moving to the next command.
- G61 Exact Stop Mode: A modal command that forces the controller to check the in-position width on every subsequent G01 cut to prevent rounded corners on critical workpiece profiles.
- G64 Continuous Cutting Mode: The default path blending command that maintains high speed at block boundaries, allowing smooth transitions at the cost of corner precision.
Conclusion
Applying structured feedrates under G01 linear interpolation forms the foundation of reliable machining profiles. By pairing accurate workpiece setup with proactive exact-stop overrides, operators prevent catastrophic collisions, minimize servo-driven corner rounding, and ensure high-precision contours. Testing toolpaths with elevated dry runs and verifying modal parameters on Fanuc, Siemens, and Mitsubishi controllers provides the ultimate safeguard against structural spindle damage and costly scrap parts.
FAQ
Why does a G01 command trigger a FEEDRATE ZERO alarm?
A G01 command triggers a FEEDRATE ZERO alarm when the controller is instructed to perform a linear interpolation without an active, non-zero feedrate. Because G01 coordinates tool motion at a specific cutting speed, the system cannot calculate axis movement without a programmed F value. To resolve this, ensure an F parameter is defined either within the G01 block itself or in a preceding modal block, and check that the operator's feedrate override dial is not set to 0%.
How does a missing decimal point in G01 coordinate values cause scrap parts?
A missing decimal point causes scrap parts because CNC controllers scale integer coordinate and feedrate inputs to the smallest input increment, which is typically a micron or ten-thousandth of an inch. For example, programming X100 instead of X100.0 will cause the controller to interpret the movement as 0.1 mm rather than 100 mm. To prevent these massive positioning errors and tool damage, programmers must strictly write decimal points for all coordinates and feedrates, or verify that the controller's integer interpretation parameter is configured to standard units.
What is the difference between G61 Exact Stop and G64 Cutting Mode during G01 operations?
The difference lies in how the controller handles axis deceleration at block boundaries. G61 Exact Stop Mode forces the controller to halt axis movement momentarily at the end of each G01 block until the servos settle within the configured in-position width tolerance, ensuring sharp corners and high geometric accuracy. G64 Continuous Cutting Mode allows the controller to blend block transitions without decelerating to a stop, maintaining constant path velocity and high productivity but slightly rounding sharp workpiece profiles.
Still not resolved?
Ask our AI assistant about this topic in natural language. Grounded in verified sources, no hallucinations.

- CNC CARE Co-Founder (May 2025 - Present)
- Mitsubishi Electric NC Sales & Service Section Manager (2008 - 2025)
- Reis CNC Service Engineer (2003 - 2005)
- Ören Kalıp CNC Mold Line Team Leader (1999 - 2002)
With over 25 years of experience working in all areas of the CNC machine industry, I continue my activities as a co-founder of CNC CARE, where we offer brand-independent consulting, engineering, and original spare parts services.
Related Articles
Other articles on this topic
Siemens CYCLE800 G-Code: Swivel Planes & Tool Alignment
Master Siemens CYCLE800 for 3+2 axis machining. Learn plane swiveling, tool alignment, parameter setup, and how to troubleshoot Alarm 61190 and 61153.
Siemens CYCLE72 Contour Milling: Guide to Sinumerik Path Milling
Master Siemens CYCLE72 for contour milling on Sinumerik CNC controls. Learn parameter setup, avoid simulation alarm 61123, and prevent machine collisions.
Siemens CYCLE952 Contour Turning Cycle Programming Guide
Master Siemens CYCLE952 contour turning on Sinumerik CNC controls. Learn parameter lists, resolve Alarm 61051, and configure balance cutting.
Siemens SLOT1 and SLOT2 Slot Milling Cycles Programming Guide
Master slot milling on Siemens Sinumerik controls using SLOT1 and SLOT2 cycles. Learn parameter configurations, alarm 61000 prevention, and optimal tool paths.