Skip to main content
CNC.wiki

G41 Cutter and Tool Nose Radius Compensation Left Guide

Learn how G41 tool nose and cutter radius compensation left is programmed on Fanuc, Siemens, and Mitsubishi CNC controls to prevent path overcutting.

Hakan Gündoğdu
Hakan Gündoğdu

CNC CARE Co-founder

Introduction to G41 Cutter and Tool Nose Radius Compensation Left

When a CNC setup operator inputs a tool radius as a diameter value instead of a radius value under modal G41 cutter compensation, the machine controller calculates incorrect offset vectors. As the toolpath approaches table-mounted clamps, a workpiece fixture vise jaw, or the rotating spindle chuck, the axis executes a rapid, unprogrammed shift. This deviation results in a catastrophic hard collision that shatters the carbide insert, bends the spindle assembly, halts motion with a severe axis-overload alarm code, and immediately turns raw stock into a ruined scrap part. Safely managing tool nose and cutter radius compensation left requires a precise understanding of plane selection, startup block prerequisites, look-ahead limits, and brand-specific parameter behaviors.

Technical Summary of G41 Compensation

Technical SpecificationValue / Requirement
Command CodeG41
Modal Group / StatusGroup 07 / Modal
Supported BrandsFanuc, Siemens, Mitsubishi
Critical ParametersFanuc Parameter No. 19625 (buffer size), Siemens MD 20250 (consecutive motionless blocks), Mitsubishi Parameter No. 8157 (compensation type B)
Main ConstraintPlane changes and coordinate system presets are strictly prohibited during active compensation mode. Startup and cancel blocks must only use G00 or G01.

Quick Read: G41 Programming Highlights

  • Select Plane First: Select the active plane (G17, G18, or G19) before executing G41, as switching planes during compensation triggers alarm codes like Fanuc PS0037.
  • Linear Startup Required: Activate G41 only in linear motion blocks (G00 or G01) with a non-zero travel distance in the selected working plane.
  • Verify Offset Mode: Inspect offset registers to ensure tool values are configured correctly in radius or diameter mode (Mitsubishi Parameter No. 8117) to prevent path deviation.
  • Avoid Buffer Interruption: Limit consecutive non-motion blocks (such as dwells G04, M-codes, or comments) to avoid look-ahead buffer overruns that drop compensation vectors.
  • Safe Deactivation Path: Cancel compensation via G40 using a linear block and ensure the tool is clear of workpiece boundaries before deactivation.
  • Specify All Axis Presets: Program coordinate system presets like G92.1, G52, or G50 by specifying all active axes in the preset block to prevent Program Error P29.

Basic Concepts of Tool Radius Left Compensation

Activating G41 tool radius compensation left establishes an automated, mathematically recalculated tool path where the CNC motion kernel continuously maintains an equidistant offset to the left of the programmed contour. This allows the programmer to write G-code coordinate movements using the exact dimensions of the workpiece blueprint. By reading the actual tool radius or wear values from the active offset registers, the control computes the offset vectors perpendicular to the movement direction. This means any wear on the tool can be compensated directly at the control panel by adjusting the D offset value, avoiding the need to regenerate the part program.

The transition block from cancel mode (G40) to offset mode is the startup block. During startup, the tool center point shifts from the uncompensated position to the offset position. Programmers must ensure that G41 startup blocks have a sufficient clearance envelope and lead-in travel. If the startup or retraction move has a clearance envelope smaller than twice the tool radius, or if the parameter diameter designation is set incorrectly, the toolpath will deviate, leading to potential collisions with fixtures or clamps.

G41 Command Structure and Parameters

The command structure of G41 requires selecting the active working plane, the startup motion command, and the offset register. The working plane must be selected prior to the startup block because the control needs to know which axes are corrected. For machining centers, G17 selects the XY plane, G18 selects the ZX plane, and G19 selects the YZ plane. On turning centers, G18 ZX plane selection is standard for tool nose radius compensation.

The startup block must be commanded with positioning (G00) or linear interpolation (G01) and must contain a non-zero travel distance in the active plane. The D address defines the cutter radius offset register for milling, while the T address represents the tool select and offset code for turning. When G41 is active, the control remains in compensation mode until it is explicitly deactivated by a G40 cancellation command.

Syntax Structure

Fanuc and Mitsubishi Milling: G17 G00 (or G01) G41 X... Y... D... F... ;

Fanuc and Mitsubishi Turning: G18 G00 (or G01) G41 X(U)... Z(W)... T... ;

Siemens Native Mode (G290): G17 G41 [NORM/KONT/KONTC/KONTT] [G0/G1] X... Y... [D...] [T...] [OFFN=...]

Address / ModifierDescriptionNote
G17 / G18 / G19Active plane selectionDetermines the coordinate axes to be offset.
X, Y, ZEnd point coordinatesTarget positions of the startup movement.
DOffset register numberUsed in milling to load cutter compensation radius.
TTool offset register / turret indexUsed in turning to select tool and nose radius.
NORM / KONT / KONTC / KONTTSiemens Group 17 modifiersDefine the approach and retraction vector types.
OFFNSiemens contour offset allowancePrograms a normal offset allowance on the contour.

Brand-Specific G41 Applications

Fanuc

Fanuc controls calculate the toolpath using Parameter No. 19625 for look-ahead buffer size. If the program contains more than N − 2 consecutive blocks without motion, the control fails to compute intersection vectors.

The startup G-code is written as G17 G01 G41 X50.0 Y50.0 D01 F500 to activate tool radius compensation.

CategoryReference IDDetail / Specification
ParameterParameter No. 19625Maximum look-ahead buffer size (3 to 8 blocks) parsed in offset mode for intersection and vector calculation.
ParameterParameter No. 5003 Bit 0 (SUP)Controls startup and cancel movement types (0 = Type A perpendicular vector, 1 = Type B intersection calculation).
ParameterParameter No. 5000 Bit 3 (GNI)Controls vector deletion on G40 cancel block with vector coordinates but no motion.
ParameterParameter No. 19607 Bit 2 (CCC)Connects compensation vectors at convex outer corners (0 = Linear, 1 = Circular).
ParameterParameter No. 3402 Bit 6 (CLR)Modal G-code behavior upon NC reset (0 = Retain G41 modal, 1 = Reset Group 07 to cancel mode G40).
ParameterParameter No. 5008 Bit 4 (MCR)Prohibits or allows G41/G42 in MDI mode (0 = Allow, 1 = Prohibit, triggers Alarm PS5257).
ParameterParameter No. 5106 Bit 2 (NT1)Ignore shape-program G40/G41/G42 inside repetitive roughing cycle blocks (P to Q) (0 = Active, 1 = Ignore).
ParameterParameter No. 5042Tool offset value setting range up to 9999.999 mm.
AlarmAlarm PS0325G41 specified inside the finishing shape block definition (P to Q) of G71/G72/G73 cycles.
AlarmAlarm PS0041Programmed contour is smaller than the tool diameter/radius, forcing the tool path to travel in the opposite direction.
AlarmAlarm PS0037Attempting to execute plane selection (G17/G18/G19) while active in G41/G42 mode.
AlarmAlarm PS0034Programming circular (G02/G03) or involute interpolation in startup block or cancel block.
AlarmAlarm PS5257G41/G42 commanded in MDI mode while Parameter No. 5008 Bit 4 (MCR) is set to 1.
Version DifferenceSeries 30i vs LegacyTool tip radius center path is calculated differently on Series 30i/31i/32i-B Plus compared to Legacy 16i/18i/21i.
Version DifferenceGNI Parameter BehaviorIf Parameter No. 5000 Bit 3 (GNI) is 0 (default), G40 cancellation with vector coordinates but no motion is treated as no tool movement. Set GNI to 1 on Series 30i to avoid overcutting legacy programs.
Version DifferenceOption FCVSetting bit 1 (FCV) of Parameter No. 0001 to 1 disables several parameters like STP.

Warning: Programming G41 inside canned roughing cycles (G71/G72/G73) finishing path (P to Q) triggers Alarm PS0325 unless Parameter No. 5106 Bit 2 (NT1) is set to 1. Operators must verify tool offset values before program execution.

Siemens

Siemens SINUMERIK controls run compensation with modifiers like NORM or KONT. The consecutive motionless block limit is governed by machine data MD 20250.

The startup G-code is written as G17 G54 G64 T="END_MILL_10" D1 M6 followed by G41 KONT G450 X20.0 Y20.0 DISC=50 F1000.

CategoryReference IDDetail / Specification
ParameterDISCTransition circle overshoot parameter at convex corners in G450 mode (0 to 100).
ParameterOFFNPrograms a normal offset allowance on the contour (linear coordinates).
ParameterMD 20250Pre-read look-ahead buffer consecutive motionless block limit (default max of 3 blocks).
ParameterSD 42496Channel setting data for closed contour intersection calculation (TRUE/FALSE).
AlarmAlarm 10751No physical intersection is possible between the last compensated block and the preceding block.
AlarmAlarm 61105Cutter radius exceeds the programmed pocket/spigot radius or contour dimensions in cycles (POCKET3, CYCLE77).
AlarmAlarm 61815G40 was not active before entering standard turning or milling cycles.
AlarmAlarm 14800Travel motion G1/G2/G3 is called while path feedrate is zero (F0 active) without fixed feedrate.
Version Difference840D sl vs 802D slSINUMERIK 840D sl supports Advanced Group 20 parameters G51.2 and G50.2 (multi-edge turning ON/OFF), which are omitted on 802D sl.
Version DifferenceAdvanced Safety IntegrationSINUMERIK 840D sl features high-level "Collision avoidance" software options, which are not available on lower-end compact controls.

Warning: Stacking more than 3 consecutive non-motion blocks in Siemens SINUMERIK violates the limit set by MD 20250, resulting in a preprocessor halt and tool path deviations.

Mitsubishi

Mitsubishi controls utilize Parameter No. 8157 to control startup/cancel calculation behavior and Parameter No. 8117 to set radius or diameter offset value interpretation.

The startup G-code is written as G17 G90 G01 G41 X100.0 Y100.0 D01 F500 to activate tool radius compensation.

CategoryReference IDDetail / Specification
ParameterParameter No. 8157Controls startup/cancel calculation behavior (0 = Type A perpendicular vector, 1 = Type B intersection calculation).
ParameterParameter No. 8117Offset value interpretation on machining centers (0 = Radius mode, 1 = Diameter mode).
ParameterParameter No. 1241 set13/bit1Activates interference check calculations on startup blocks (0 = Disable, 1 = Enable).
ParameterParameter No. 1289 ext25/bit0Specifies outer rounding criteria for tool nose radius compensation at small corners.
ParameterParameter No. 1381Triggers program alarm if a register with a value of 0 is selected (0 = Allow, 1 = Alarm ON).
ParameterParameter No. 1046Configures tool offset display type (Type III shows basic axes I, J, K and virtual tool tip point P).
ParameterParameter No. 1037Selects the active G-code system list (values 3 to 8 map to G-code Lists 2 to 7).
AlarmProgram Error (P151)G02 or G03 circular command specified in G41/G42 startup or cancellation block.
AlarmProgram Error (P128)Executing machining condition selection cycles (G120.1 or G121) while in G41/G42 modal.
AlarmProgram Error (P608)A skip command (G31) is commanded while in tool radius/nose radius compensation mode.
AlarmProgram Error (P29)Switching G-code formats (G188/G189) or cancelling high-speed control (G05.1 Q0) while G41 is active.
AlarmProgram Error (P152)Preprocessor fails to compute path intersection points during single-block skip in interference processing.
AlarmProgram Error (P155)Canned hole drilling cycles (G81 to G89) commanded during active tool radius compensation on machining centers.
Version DifferenceM800V/M80V & M800/M80Toggling format from Lathe (G189) to Machining Center (G188) dynamically initializes modal registers. If executed before G41 cancel is complete, triggers Program Error (P29).
Version DifferenceM800V/M80V SeriesIn High-Speed High-Accuracy Control III (G05 P20000), G41 tool compensation is not supported. Control automatically drops to High-Speed High-Accuracy II (G05 P10000) if G41 is active.

Warning: Switching formats using G188 or G189 before cutter compensation is fully canceled triggers Program Error P29, immediately halting operation.

G41 Brand Comparison Matrix

TopicFanucSiemensMitsubishi
Look-ahead buffer constraintEnforces a strict N − 2 rule governed by Parameter No. 19625. Exceeding motion-less blocks causes preprocessor halt and perpendicular vectors.Limits non-motion blocks to standard max of 3 (governed by MD 20250). Path distance of zero counts as interruption.Pre-reads up to 2 movement command blocks (or up to 5 non-movement blocks). Exceeding this halts calculations.
Cycle boundaries & canned cyclesMust be programmed modal before roughing cycles (G71/G72/G73), and canceled outside finishing shape definition blocks P to Q (otherwise triggers Alarm PS0325). Can ignore inside cyclically with Parameter No. 5106 bit 2 NT1 set to 1.Integrates with high-level cycle structures (CYCLE95 or pockets) where boundary compensation is handled dynamically by cycle arguments rather than rigid G-code boundary rules.Cannot command standard hole drilling cycles (G81-G89) while G41/G42 is active on machining centers (triggers Program Error P155).
Approach, Retraction, & StartupUses parameter-driven (Type A vs Type B) startup and cancel via Parameter No. 5003 Bit 0 (SUP). No inline approach modifiers.Uses inline G-code modifiers from Group 17 (NORM, KONT, KONTC, KONTT) and Group 48 (G460, G461, G462) to dynamically control transitions.Uses Parameter No. 8157 to switch between Type A and Type B. Lathe mode allows manual vector modifiers (I, K) to guide startup.
Machining Condition SelectionAllows blending of parameters during path compensation.Allows blending of parameters during path compensation.Enforces strict interlock. G120.1/G121 issued in active G41/G42 triggers Program Error (P128).
Automatic Direction ID— (no source)— (no source)Features Group 07 command G46 on lathe systems to automatically determine left/right compensation side.
Corner Override Feed Control— (no source)— (no source)Couples G62 corner override feedrate control directly with active compensation modals.

In-Depth Technical Analysis

Analytically, the differences in tool radius compensation implementation between Fanuc, Siemens, and Mitsubishi center on preprocessor design and integration with cycles. Fanuc enforces a strict look-ahead buffering constraint (N − 2 rule) where more than N − 2 consecutive non-motion blocks halt the preprocessor. This causes the compensation vector to collapse perpendicularly to the last active block, producing overcut parts. Mitsubishi and Siemens have more flexible preprocessor designs. Siemens handles motionless blocks up to a standard maximum of 3 blocks under machine data MD 20250, while Mitsubishi allows up to 5 non-motion blocks. In both Siemens and Mitsubishi, a block with a path distance of zero is treated as a look-ahead interruption, causing calculation failures.

Additionally, canned cycle integration shows distinct design philosophies. Fanuc requires G41 to be active before starting cycles like G71, and G40 must be called strictly outside the sequence block boundaries (P to Q) to avoid Alarm PS0325. Siemens utilizes conversational cycles like CYCLE95 or pockets where boundaries are processed internally via cycle arguments, eliminating G-code boundary errors. Mitsubishi enforces a rigid block on standard drilling cycles, throwing Program Error P155 if G81 through G89 are called while G41 is active. This highlights Mitsubishi's emphasis on safety interlocks over programming flexibility.

Milling and Turning Program Examples

Fanuc Example

G17 G90 G54 G00 X0 Y0 ; Select plane, absolute positioning, workpiece coordinate
T01 M06 ; Tool change to 10mm end mill
S1200 M03 ; Start spindle
G00 Z5.0 ; Position Z to safe height
G01 Z-10.0 F200 ; Feed to depth
G01 G41 X50.0 Y50.0 D01 F500 ; Startup block: activate G41 tool compensation left with register D01
G01 Y100.0 ; Linear contour move with left compensation active
G01 X100.0 ; Machine horizontal profile segment
G40 G00 X0 Y0 ; Cancel block: deactivate cutter compensation and retract to safe coordinates
M05 ; Stop spindle
M30 ; Program end

dry run: During a dry run with Z-axis offset or air cutting, verify that the startup block movement is linear and has a travel distance larger than the cutter radius in the XY plane. Confirm that the D01 register contains the actual tool radius (e.g., 5.0 mm for a 10mm tool). Monitor the screen to ensure the tool path offsets to the left of the programmed contour. Upon reaching the G40 cancellation block, confirm that the tool center retracts safely without overcutting the contour corner.

Siemens Example

G17 G54 G64 T="END_MILL_10" D1 M06 ; Select plane, zero offset, continuous-path, tool change
S1500 M03 ; Start spindle
G00 Z5.0 ; Position to safe height
G01 Z-10.0 F200 ; Infeed to cutting depth
G41 KONT G450 X20.0 Y20.0 DISC=50 F1000 ; Activate G41 with KONT approach and G450 transition circle
G01 Y80.0 ; Cut vertical profile segment
G01 X80.0 ; Cut horizontal profile segment
G40 G01 X0 Y0 ; Cancel compensation with NORM/KONT retract
M05 ; Stop spindle
M30 ; Program end

dry run: When verifying the program on a SINUMERIK control, check that the tool edge index D1 is active and loaded with the correct radius value. In G450 mode with DISC=50, ensure that the transition vector wraps smoothly around the convex corner of the workpiece. Confirm that no zero-travel blocks or consecutive motionless blocks exceed the MD 20250 buffer limit, which would trigger Alarm 10751 during deactivation.

Mitsubishi Example

G17 G90 G01 G41 X100.0 Y100.0 D01 F500 ; Activates G41 Left on XY plane with offset D01 in milling mode
G01 Y200.0 ; Linear contour move
G01 X200.0 ; Machine contour segment
G40 G00 X0 Y0 ; Cancel compensation and retract to start position
M30 ; Program end

dry run: Before cutting metal, execute an air cut and check the tool offset display screen. Ensure that the active D01 register value matches the radius (or diameter if Parameter No. 8117 is set to 1). Ensure that no canned cycles (G81-G89) or machining selection cycles (G120.1/G121) are programmed while G41 is active, as these will trigger program errors P155 or P128, halting the machine immediately.

Common Alarm and Error Analysis

BrandAlarm CodeTrigger ConditionOperator SymptomRoot Cause / Fix
FanucAlarm PS0325G41/G42 specified inside the finishing shape block definition (P to Q) of G71/G72/G73 cycles.Machine stops execution and displays the error message "UNAVAILABLE COMMAND IS IN SHAPE PROGRAM".Program the G41 modal before the canned cycle start, and place the G40 cancel command outside the sequence blocks defined by P and Q. Alternatively, set Parameter No. 5106 Bit 2 (NT1) to 1.
FanucAlarm PS0041Programmed contour is smaller than the tool diameter/radius, causing the tool path to travel in the opposite direction.Axis motion halts immediately during offset mode, throwing the "INTERFERENCE IN CUTTER COMPENSATION" alarm.Check the tool radius offset register value and the dimensions of the programmed slot/pocket. Reduce the tool diameter or expand the pocket contours.
SiemensAlarm 10751No physical intersection is possible between the last compensated block and the preceding block during approach/retract.CNC execution aborts with the message "collision danger" before executing the approach or cancel block.Verify contour geometry and ensure approach/retract travel moves are sufficient. Use Group 48 boundary extensions G461/G462 to dynamically insert intersection arcs or lines.
SiemensAlarm 61105Cutter radius exceeds the programmed pocket/spigot radius or contour dimensions in cycles (POCKET3, CYCLE77).Milling pocket cycle halts during preprocessor calculation, throwing the alarm "Cutter radius too large".Verify that the active tool D offset contains a radius smaller than the pocket dimension. Reduce tool size or increase pocket radius.
MitsubishiProgram Error (P151)G02 or G03 circular command specified in G41/G42 startup or cancellation block.Machining center or lathe stops travel in startup/cancel block, displaying "P151 Program Error".Ensure that the startup block (transition from G40 to G41) and cancellation block (G40) are strictly limited to linear travel commands (G00 or G01).
MitsubishiProgram Error (P128)Executing machining condition selection cycles (G120.1 or G121) while in G41/G42 modal.Machine axis travel halts instantly mid-path, displaying the program error on the screen.Cancel the tool radius compensation modal using G40 before executing any machining condition selection parameters.

Shop Floor Application Notes

Hard collisions and ruined workpieces result when operators neglect workpiece coordinate presets under active G41 cutter compensation. If a coordinate preset using G54 to G59, G52, or G50 (or G92.1 on Mitsubishi) is executed without commanding all active compensation axes in the same block, the control aborts with a coordinate preset error. This path deviation occurs when the system attempts to calculate new coordinate offsets with incomplete vector data, causing the tool turret or spindle to execute a rapid, unprogrammed shift. The resulting hard collision shatters the carbide insert and bends the spindle assembly when the tool turret slams directly into table-mounted clamps, vise jaws, or the rotating spindle chuck. To prevent this path distortion, operators must ensure that all active axes are specified in any coordinate preset blocks, and verify that the tool offset registers are configured correctly according to radius or diameter parameters.

Related G-Code Command Network

  • G40: Deactivates cutter and tool nose radius compensation mode and returns the tool center to the programmed coordinates.
  • G42: Activates tool radius/nose radius compensation to the right of the contour, used for conventional milling or back-turning.
  • G39: Specifies a circular interpolation vector path at convex outer corners in Fanuc systems to prevent sharp corner overcutting.
  • G37: Automates tool length measurement to update active offset registers, ensuring the controller calculates correct compensation values.
  • G290 / G291: Switches the Siemens SINUMERIK compiler between native Siemens mode (G290) and ISO Dialect mode (G291) to parse standard G41 commands.

Conclusion

Preventing scrap parts and machine downtime requires strict adherence to linear startup blocks, clearance envelopes, and look-ahead rules. Operators should always verify that tool offset registers are properly configured as radius or diameter values, and ensure all active axes are included in coordinate preset commands. Running a dry run with Z-axis offsets remains the best practice to verify path compensation before engaging the tool with raw material.

Frequently Asked Questions

Why does the CNC machine throw an alarm when I program G41 on an arc move?

CNC controls require linear motion (G00 or G01) to construct the initial compensation vector. Programming G41 on an arc (G02 or G03) prevents the preprocessor from establishing the starting vector, causing immediate alarm shutdowns. Always program a linear lead-in block with a length greater than the tool radius to activate the compensation modal before entering the profile contour.

What causes the cutter compensation vector to drop during a series of dwells?

This drop occurs because the preprocessor's look-ahead buffer becomes interrupted by non-motion blocks. If you stack more than three consecutive motionless blocks (such as G04 dwells, comment lines, or M-codes), the control fails to calculate the upcoming corner intersection, causing the tool to plunge perpendicularly to the last path block. Place dwells and M-codes outside the active contour path or increase the pre-read buffer parameter to maintain vector stability.

How does Parameter 8117 affect Mitsubishi milling cutter compensation?

Parameter No. 8117 controls whether the value in the D offset register is read as a radius or diameter. If the parameter is set to diameter mode, the controller automatically halves the programmed value, meaning a tool radius value must be doubled in the offset table. Always verify this parameter setting on the controller panel before running programs to prevent severe undercutting or fixture collisions.

Still not resolved?

Ask our AI assistant about this topic in natural language. Grounded in verified sources, no hallucinations.

Ask AI Assistant
Hakan Gündoğdu
Hakan Gündoğdu
  • CNC CARE Co-Founder (May 2025 - Present)
  • Mitsubishi Electric NC Sales & Service Section Manager (2008 - 2025)
  • Reis CNC Service Engineer (2003 - 2008)
  • Ö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