G43, G44, and G49 Tool Length Compensation: A Practical CNC Guide
Master CNC tool length compensation using G43, G44, and G49. Compare parameters and alarm configurations on Fanuc, Siemens, and Mitsubishi to prevent spindle crashes.
Tool Length Compensation Production Risks
Failing to follow a standalone G43 tool length compensation block with an absolute coordinate move when the machine is configured for coordinate shifts shifts the internal grid coordinate registers but leaves the physical spindle axis completely unsynchronized. If the next command is an incremental movement or a complex canned machining cycle, the tool tip travels along an uncompensated, unpredictable trajectory. This timing oversight guarantees a catastrophic hard collision, driving the high-rpm spindle and tool assembly directly into a hardened vise jaw, a fixture clamp, or the rotating chuck. The impact shatters expensive solid carbide tooling, bends the spindle bearings, and forces indexable turrets out of alignment, instantly creating a scrapped workpiece and triggering high-decibel axis overloads. Standardizing the usage of G43 (positive compensation), G44 (negative compensation), and G49 (offset cancellation) serves as the primary line of defense against these devastating mechanical crashes.
Technical Summary
| Specification | Details |
|---|---|
| G-Code Commands | G43 (Positive Tool Length Compensation), G44 (Negative Tool Length Compensation), G49 (Tool Length Compensation Cancel) |
| Modality Group | Group 08 Modal G-codes |
| Compatible Brands | Fanuc, Siemens, Mitsubishi |
| Critical Parameters | Fanuc: 5001 (TLC/TLB Type A/B/C), 5006#6 (TOS physical vs mathematical), 5003#6 (LVK reset retention); Siemens: MD20380 $MC_TOOL_CORR_MODE_G43G44 (Modes A/B/C), MD20382 $MC_TOOL_CORR_MOVE_MODE (retract mode); Mitsubishi: #1268 (ext04/bit6 axis movement vs coordinate shift), #1247 (set19/bit0 non-movement travel behavior), #1274 (ext10/bit3 standalone H activation), #8122 (Keep G43 MDL M-REF). |
| Main Kinematic Constraint | Tool length compensation start commands (G43/G44) must never be commanded in circular interpolation blocks (G02/G03) or combined with G04 (Dwell), G53 (Machine coordinate selection), or G28 (Reference return) on a single block. |
Quick Read
- Program G43 tool length compensation strictly on linear movement blocks (G00 or G01) with an absolute target coordinate to ensure correct vector calculation and avoid P70 arc errors.
- Coordinate your physical H-register index with the loaded tool; calling a mismatched offset or omitting G49 before a tool change can drive the spindle directly into the table.
- Configure Fanuc parameter 5001 TLC/TLB or Siemens MD20380 to dictate whether offsets apply statically to the Z-axis (Type A), dynamically perpendicularly to the working plane (Type B), or to the commanded arbitrary axis (Type C).
- Retain active compensation vectors through CNC resets by setting Fanuc parameter 5003 bit 6 (LVK) to 1, preventing unexpected coordinate jumps when restarting cycles.
- Enable standalone H-code updates on Mitsubishi systems via parameter #1274 bit 3 to swap tool wear offsets mid-cycle without restating G43 or spindle Z-positions.
- Prevent combination faults (P45 alarms) on Mitsubishi systems by isolating G43, G44, and G49 from dwells (G04), machine coordinate selections (G53), or homing routines (G28).
Core Tool Length Compensation Concepts
The practical programming effect of the G43 and G44 commands is mathematically adjusting the tool tip's programmed path to account for the physical gauge length of the specific cutter loaded in the spindle. This dynamic shifting allows programmers to write universal G-code entirely based on the workpiece's blueprint zero point without hardcoding individual tool lengths into the actual coordinate vectors.
Programmers and operators must meticulously ensure they call the correct H offset number that corresponds to the physical tool; calling an incorrect offset or forgetting to execute a G49 cancellation command before a tool change can drive the spindle directly into the workpiece or table. To maintain complete safety, returning to the machine reference point using the g28-g29-g30-reference-point-return command automatically cancels tool length compensation for the returning axis.
When utilizing advanced 3D coordinate system rotation (G68/G69), programmers must watch their command nesting structure carefully. A major common failure cause is commanding a coordinate rotation while tool length compensation is active and subsequently attempting to apply a different tool length offset (e.g., G43 H2) without first canceling the rotation, which violently confuses the coordinate matrix. Additionally, tool length offsets are distinct from cutter radius compensations governed by g40-g41-g42-tool-nose-cutter-radius-compensation, and the two systems must be programmed in logical sequence to prevent overlapping contour errors.
Command Structure and Syntax
Tool length offsets are modal G-codes belonging to group 08 that govern tool length compensation. The basic syntax requires the G-code, the axis to be compensated, and an H-address (or D-address depending on parameters) to specify the offset register number. The axis address (e.g., Z, X, or Y) designates the target compensation axis, and the H-address designates the tool compensation number.
G43 applies tool length compensation in the positive direction, meaning the registered offset value is added to the programmed coordinate. G44 applies tool length compensation in the negative direction, meaning the registered offset value is subtracted from the programmed coordinate. G49 cancels the active tool length compensation, returning the machine to a direct uncompensated coordinate movement state. Compensation can also be canceled by commanding an offset register value of zero (H0 or H00).
Syntax structures across brand environments:
- Fanuc:
G43 Z_ H_;orG44 Z_ H_; - Siemens ISO Mode:
G43 [Axis]... H...;orG44 [Axis]... H...; - Mitsubishi:
G43 Z_ H_ ;orG44 Z_ H_ ; - Universal Cancel:
G49;orH0;
Brand-Specific Application Configurations
Fanuc
On Fanuc systems, tool length compensation is deeply tied to controller parameters 5001 and 5006. The behavior varies between machining centers and lathes. Fanuc's handling of tool length compensation is distinctly defined by deep mathematical customization within its own ecosystem.
A standard positive tool length compensation call is programmed as `G43 Z100.0 H01;` to apply positive tool length compensation on the Z-axis. G44 applies the offset in the negative direction, and G49 cancels the offset.
- Parameter 5001 bits 0 (TLC) and 1 (TLB): Determines the mathematical axis behavior for tool length compensation on M-series systems. Type A (0) applies compensation exclusively to the Z-axis at all times. Type B (1) applies compensation to the axis perpendicular to the currently specified active plane (G17, G18, or G19). Type C (2) applies compensation directly to the specific arbitrary axis commanded within the G43/G44 block.
- Parameter 5006 bit 6 (TOS): Dictates how the tool length compensation is physically executed. A value of 0 applies the compensation via an actual physical axis movement, whereas a value of 1 executes it mathematically by shifting the internal coordinate system without moving the tool.
- Parameter 5003 bit 6 (LVK): Determines if the active tool length compensation vector is safely retained (value 1) or cleared (value 0) when the CNC is reset.
- Parameter 5040 bit 4 (TLG): Dictates whether the system uses standard G43 or the specialized lathe-ATC format G43.7 and G44.7 to invoke tool length offsets on lathe systems equipped with an Automatic Tool Changer (ATC).
- Parameter 6000 bit 3 (V15): Enables legacy compatibility, allowing programmers to read and write tool offset values using the archaic Series 15 macro system variables (e.g., #2401) instead of the modern Series 16/18 variable structure.
- Alarm PS0027 (NO AXES COMMANDED IN G43/G44): Triggered on M-series controls if the machine is configured for tool length compensation Type C, but no physical axis address is specified in the G43 or G44 block.
- Alarm PS0030 (ILLEGAL OFFSET NUMBER): Triggered if the offset number specified by the H-code or D-code is too large and exceeds the system's maximum allowable offset memory limits.
- Alarm PS0049 (ILLEGAL OPERATION G68/G69): Triggered when three-dimensional coordinate conversion commands (G68/G69) and tool length compensation commands (G43/G44/G49) are not properly nested, or if a coordinate rotation is specified while tool length compensation is active and the programmer attempts to apply a new tool length offset without canceling the rotation first.
- Alarm PS5452 (IMPROPER G-CODE 5AXIS MODE): Triggered if standard tool length compensation is commanded while advanced tool center point control or tool axis direction tool length compensation is already active.
- Version Differences: A major architectural difference exists between M-series (machining centers) and T-series (lathes). Lathes generally rely on native T-codes for both tool geometry and wear compensation without needing G43. However, if a lathe system is equipped with an Automatic Tool Changer (ATC) rather than a standard turret, parameter 5040 bit 4 (TLG) dictates whether the system uses G43 or G43.7/G44.7. Legacy macro compatibility is enabled via parameter 6000 bit 3 (V15) for Series 15 variables.
Warning: Programmers must establish a strict, standardized nesting order for applying offsets and rotations, explicitly utilizing safe G49 cancellation blocks or reference point returns before changing tools or planes to prevent PS0049 alarms.
Siemens
Siemens controls provide a highly adaptable structure that processes tool length offsets differently depending on the active language mode. Key machine parameters include MD20380 and MD20382, which allow the control to adapt to legacy ISO programs or native DIN operations.
In ISO Dialect Mode, positive length compensation is activated via `G43 Z100.0 H01;`, where the H word specifies the tool offset data register. Deselection is performed by G49 or programming H00.
- MD20380 $MC_TOOL_CORR_MODE_G43G44: A BYTE parameter (value range 0 to 2) that determines how the length compensation programmed with H is processed in ISO mode. Mode A (0) forces the tool length H to always impact the third geometry axis (usually Z). Mode B (1) forces the impacted axis to depend on the active plane (G17 = Z axis, G18 = Y axis, G19 = X axis). Mode C (2) forces the tool length to impact the specific axis that is simultaneously programmed with the H word in the block.
- MD20382 $MC_TOOL_CORR_MOVE_MODE: A BOOLEAN parameter that defines how the tool length compensations are retracted. If set to 0 (FALSE), a tool length component is only retracted if the associated axis is explicitly programmed to move.
- Alarm 14165 (Channel %1: Block %2): Triggered if MD20380 is set to Mode C (value 2), meaning the length acts on the programmed axis, but a G43 or G44 command is executed with an H word without specifying at least one geometry axis in the same block.
- Alarm 10915 / 10916: Triggered if the active tool length compensation values combined with the programmed geometry result in an area where positioning is physically or kinematically impossible (such as violating limits during active transformations). The control intervenes and halts the machine before the faulty block executes.
- Version Differences: Siemens controls handle tool length compensation radically differently depending on the active language mode. When operating in ISO Dialect Mode (G291), programmers must explicitly activate the tool length compensation using G43 or G44 and an H offset word. However, in native Siemens DIN Mode (G290), tool lengths are activated automatically in the background simply by calling the tool and its cutting edge offset number (e.g., T1 D1); the explicit G43/G44 commands are neither required nor natively processed in the same way.
Warning: A very frequent programming error is operating the machine in ISO mode and forgetting to explicitly program G43 or G44 alongside an H code, falsely assuming the tool length is already active because the native Siemens automatic activation behavior is expected.
Mitsubishi
Mitsubishi systems manage tool offsets through parameters #1268 and #1247. The control handles both machining center (M) and lathe (L) formats seamlessly, providing high parameters flexibility for axis movements and coordinate shifts.
A standard milling call is written as `G43 Z50.0 H01 ;` to apply tool length compensation in the positive Z direction. Cancel is done via `G49 Z100.0 ;` or by commanding `H0`.
- Parameter #1268 ext04/bit6 (Tool length offset operation): Determines how the machine physically applies the offset. A setting of 0 (Axis Movement Type) applies the compensation via an immediate physical axis movement. A setting of 1 (Coordinate Shift Type) applies the compensation via a coordinate shift (the coordinate system is shifted internally, and the axis moves to the compensated position upon the next absolute travel command).
- Parameter #1247 set19/bit0 (Movement by tool length compensation command): Determines behavior when G43/G44 is commanded without an axis movement in the same block. A setting of 0 forces the axis to move by the compensation amount immediately. A setting of 1 applies the compensation to the internal position counter without moving the axis.
- Parameter #1274 ext10/bit3 (H stand-alone command): When set to 1, the H modal value can be updated by issuing the H address entirely alone in a block, without needing a G43/G44 prefix.
- Parameter #8122 (Keep G43 MDL M-REF): If set to 1, the tool length offset remains active even after a manual reference position return is executed.
- Alarm P45 (G-code combination error): Triggered if G43, G44, or G49 is commanded in the exact same block as an incompatible command, such as G04 (Dwell), G53 (Machine coordinate selection), or G28 (Reference position return).
- Alarm P70 (Arc error): Occurs if a tool length compensation start command (G43/G44) is issued in the same block as a circular interpolation command (G02/G03).
- Alarm P170 (Offset No. over): Triggered if the commanded H offset number exceeds the machine's maximum specified range (e.g., commanding H300 on a machine licensed for only 200 offset sets).
- Alarm Y51 108 (MCP Alarm): Triggered at automatic start if incompatible parameters are active simultaneously, such as #1247 set19/bit0 = 1 combined with #1268 ext04/bit6 = 1.
- Version Differences: A strict architectural difference exists between Machining Center (M) systems and Lathe (L) systems. In standard M systems, tool length is managed natively by G43/G44 and the H address. In standard L systems, tool length compensation is invoked automatically using the T command modal (e.g., T0101). However, if the Program Format Switch function (G188) is executed on a Lathe system to enter Machining Center compatibility mode, the L system will initialize its modals and begin accepting standard G43/G44 and H address commands.
Warning: Programmers must never command G43/G44/G49 in the same block as incompatible commands (G04, G53, G28) or circular interpolations (G02/G03) to avoid combination faults and P70 alarms.
Controller Brand Comparison
| Topic | Fanuc | Siemens | Mitsubishi |
|---|---|---|---|
| Default Axis Selection | Determined by Parameter 5001 (TLC/TLB): Type A (Z-axis), Type B (Plane perpendicular), Type C (Commanded axis). | Controlled by MD20380: Mode A (Z-axis), Mode B (Plane perpendicular), Mode C (Commanded axis). | Specified by axis commanded in G43/G44 block. |
| Retraction / Offset Execution | Parameter 5006 bit 6 (TOS) dictates physical servo axis move (0) vs. mathematical coordinate shift (1). | MD20382 allows configuring offset retraction only if associated axis is explicitly commanded to move. | Parameter #1268 (ext04/bit6) specifies physical movement (0) vs. internal coordinate shift (1). #1247 set19/bit0 controls behavior when G43/G44 is called without axis travel. |
| Lathe Compatibility | Typically uses T-codes. Lathes with ATC can use G43/G44 or G43.7/G44.7 depending on Parameter 5040 bit 4 (TLG). | DIN mode (G290) automates tool lengths via T_ D_. ISO dialect mode (G291) processes G43/G44 and H words. | L-systems use T-codes natively, but G188 (Program Format Switch) allows full M-system compatibility including G43/G44. |
| Stand-alone H Commands | — (no source) | H00 or G49 cancels; D-code is the native Siemens tool call. | Supported via parameter #1274 (ext10/bit3) allowing standalone H lines (e.g. H02 ;) to update wear offsets mid-cycle. |
| Axis Synchronization | — (no source) | — (no source) | Integrates G43 into Multiple-Axis Synchronization Control, automatically applying respective offsets to slave axes. |
Analytical Comparison of Brand Architectures
Fanuc's handling of tool length compensation is distinctly defined by deep mathematical customization. Within its own ecosystem, Fanuc uniquely offers three selectable geometric behaviors for applying the compensation vector via parameters TLC and TLB: Type A statically forces the offset to the Z-axis, Type B dynamically tracks the active working plane and applies the offset perpendicularly (perfect for right-angle attachments), and Type C isolates the compensation strictly to the arbitrary axis commanded in the G43 block. Finally, Fanuc provides parameter 5006 bit 6 (TOS), which distinctly allows the machine builder to dictate the kinetic behavior of the offset; the tool length compensation can be configured to physically execute via an actual servo axis movement, or execute silently by mathematically shifting the internal coordinate system without initiating any physical tool motion.
Siemens controls distinguish themselves from other major industry control brands regarding tool length compensation with a highly adaptable, multi-layered architecture for handling legacy ISO code. First, Siemens provides the unique ability to seamlessly toggle between native DIN mode—where tool lengths are fully automated via D numbers without any auxiliary G-codes—and ISO Dialect mode, where G43/G44 and H words are strictly enforced to run legacy programs without modification. Second, Siemens offers unparalleled flexibility by giving programmers three distinct interpretation strategies for the G43/G44 block via MD20380: the machine can be locked to standard behavior where the offset always impacts the third geometry axis (Mode A), it can dynamically shift the compensated axis based on the active G17/G18/G19 plane (Mode B), or it can uniquely force the length offset to apply exclusively to whatever specific axis is simultaneously programmed in the block with the H word (Mode C). Finally, Siemens distinguishes itself with customizable retraction behaviors via MD20382; the control can be configured so that a tool length component is only physically retracted during a cancellation block if the associated axis is explicitly commanded to move, preventing unexpected and jerky retractions during complex 3D transitions.
Mitsubishi controls provide a highly customizable layer of operational safety and flexibility that distinctly sets this brand apart from Fanuc or Siemens. One highly distinguishing behavior is Mitsubishi's dual-mode compensation processing, controlled via parameter #1268 ext04/bit6. Programmers can globally dictate whether G43 causes the machine to physically lunge by the offset amount (Axis Movement Type) or seamlessly shift the internal coordinate grid (Coordinate Shift Type) to wait for the next absolute positioning command. Secondly, Mitsubishi distinguishes itself by natively supporting the H Stand-alone command (#1274 ext10/bit3 = 1), allowing an operator to dynamically swap the active tool length wear offset mid-cycle by simply commanding a new H number on a blank line, entirely bypassing the need to restate G43 or a Z-axis vector. Finally, Mitsubishi integrates G43 seamlessly into Multiple-Axis Synchronization Control; when G43 is commanded on a master axis, the control intelligently applies the specific, respective tool offset amounts to the synchronized slave axes, bypassing standard non-interpolation faults.
Practical Program Examples
Fanuc Milling Program Example
O1100 (FANUC G43 TOOL LENGTH COMP) ;
N10 G90 G21 G40 G49 (Safety block: absolute, mm, cancel radius/length comp) ;
N20 T01 M06 (Tool change: load Tool 1) ;
N30 S1200 M03 (Start spindle CW at 1200 rpm) ;
N40 G00 X50.0 Y50.0 (Rapid positioning in XY plane outside part) ;
N50 G43 Z10.0 H01 (Activate positive tool length compensation on Z using register H01) ;
N60 G01 Z-5.0 F200.0 (Feed down to cut depth) ;
N70 X100.0 F300.0 (Execute linear milling cut) ;
N80 G00 Z50.0 (Rapid retract to safe height) ;
N90 G49 M05 (Cancel tool length compensation and stop spindle) ;
N100 G28 X0 Y0 Z0 (Return to machine reference point) ;
N110 M30 ;
Dry Run Analysis:
- Block N10 establishes absolute coordinates in millimeters and ensures tool nose radius compensation (G40) and tool length compensation (G49) are canceled.
- Block N20 executes the tool change, loading Tool 1 into the spindle. Block N30 activates the spindle clockwise at 1200 rpm.
- Block N40 rapid-positions the axes to X50.0 and Y50.0, placing the cutter outside the workpiece envelope.
- Block N50 activates positive tool length compensation (G43) on the Z-axis, targeting a Z height of 10.0 mm, using register H01. The control reads the tool length offset from H01 and physically moves the Z-axis by that compensated distance (assuming Parameter 5006 bit 6 is set to 0).
- Block N60 feeds the Z-axis to depth -5.0 mm at 200 mm/min. Block N70 performs the milling pass to X100.0 at 300 mm/min with the length compensation active.
- Block N80 executes a rapid retract to a safe height of Z50.0. Block N90 cancels the tool length compensation (G49) and stops the spindle (M05).
- Block N100 performs a machine zero return (g28-g29-g30-reference-point-return) to safely clear the workspace.
Siemens ISO Dialect Program Example
; SIEMENS G43 TOOL LENGTH COMP IN ISO DIALECT
N10 G90 G21 G40 G49 (Absolute, metric, cancel compensation)
N20 T02 M06 (Load Tool 2)
N30 G97 S1500 M03 (Spindle active at 1500 rpm)
N40 G00 X40.0 Y40.0 (Rapid positioning)
N50 G43 Z15.0 H02 (Engage length offset using register H02)
N60 G01 Z-10.0 F250.0 (Feed Z to machining depth)
N70 Y80.0 (Execute linear profile cut)
N80 G00 Z100.0 (Rapid retract to clearance plane)
N90 G49 M05 (Deselect tool length compensation and halt spindle)
N100 M30
Dry Run Analysis:
- Block N10 configures absolute coordinate mode in millimeters, canceling tool radius and tool length compensations.
- Block N20 performs tool change, loading Tool 2, and block N30 starts the spindle clockwise at 1500 rpm.
- Block N40 rapid-traverses coordinates to X40.0 and Y40.0 to establish a safe lead-in position.
- Block N50 executes positive tool length compensation (G43) targeting Z15.0 using the tool offset stored in register H02. The control processes the value from H02 using the active MD20380 parameter (assuming Mode A, it applies it to Z).
- Block N60 feeds Z to -10.0 mm at 250 mm/rev. Block N70 performs the milling cut to Y80.0 with the offset active.
- Block N80 rapid-retracts the Z-axis to the safe clearance plane at Z100.0. Block N90 cancels the length compensation (G49) and stops the spindle.
Mitsubishi Milling Program Example
; MITSUBISHI G43 TOOL LENGTH COMP WITH STANDALONE UPDATE
N10 G90 G21 G40 G49 G17 (Absolute, mm, cancel comp, XY plane) ;
N30 T03 M06 (Load Tool 3) ;
N40 S1100 M03 (Spindle CW at 1100 rpm) ;
N50 G00 X0.0 Y-30.0 (Rapid positioning in XY plane) ;
N60 G43 Z20.0 H03 (Engage tool length offset using H03 register) ;
N70 G01 Z-8.0 F150.0 (Linear feed Z to cutting depth) ;
N80 H33 (Update active wear offset register to H33 mid-cycle via standalone command) ;
N90 X100.0 F280.0 (Milling traverse with updated offset vector) ;
N100 G49 Z100.0 M05 (Cancel compensation and rapid retract in Z) ;
N110 M30 ;
Dry Run Analysis:
- Block N10 clears active compensations and establishes standard XY plane (G17) positioning in absolute mode.
- Block N30 and N40 execute the tool change and spindle activation at 1100 rpm. Block N50 rapid-positions to X0.0 and Y-30.0.
- Block N60 activates positive tool length compensation (G43) targeting Z20.0 using register H03. The machine physically applies the offset (assuming Parameter #1268 is set to 0).
- Block N70 feeds the Z-axis to depth -8.0 mm at 150 mm/min.
- Block N80 issues a standalone H33 command. Since parameter #1274 ext10/bit3 is set to 1, the Mitsubishi control dynamically swaps the active tool length offset register to H33 mid-cycle without requiring a G43 prefix or a new Z-axis command.
- Block N90 executes the milling traverse to X100.0 at 280 mm/min using the updated tool offset vector.
- Block N100 cancels the active tool length compensation (G49) while retracting to Z100.0 and stops the spindle.
Tool Length Compensation Error Analysis
| Brand | Alarm Code | Trigger Condition | Operator Symptom | Root Cause / Fix |
|---|---|---|---|---|
| Fanuc | PS0027 | Type C tool length compensation configuration is active, but a G43/G44 block is executed without specifying a target geometry axis. | The machine stops immediately, displaying a flashing "PS0027 NO AXES COMMANDED IN G43/G44" alarm. | Type C is designed to apply compensation strictly to the arbitrary axis named in the block. Fix: Program the target axis coordinate along with the G43/G44 command. |
| Fanuc | PS0030 | The commanded H or D offset index exceeds the system's maximum allowable register capacity. | Automatic cycle is aborted, displaying a flashing "PS0030 ILLEGAL OFFSET NUMBER" alarm on the control panel. | A programming index error where the offset ID is beyond hardware limits. Fix: Verify active offset indexes in memory and specify a valid registry ID. |
| Fanuc | PS0049 | Nesting of coordinate rotation (G68/G69) and tool length compensation is incorrect, or a tool offset is updated while G68 rotation is active without deselection. | The spindle remains running but axis motion freezes under the flashing "PS0049 ILLEGAL OPERATION G68/G69" alarm. | The coordinate rotation matrix becomes mathematically distorted when offsets are changed during active G68. Fix: Symmetrically nest G43/G49 blocks around G68/G69, or cancel rotation before changing H offsets. |
| Siemens | Alarm 14165 | MD20380 is configured for Mode C (impacts commanded axis), but G43/G44 is programmed with H without naming any geometry axis. | Program execution halts and displays "Alarm 14165 Channel %1: Block %2". | Geometry axis is missing in the command block while Mode C is active. Fix: Add the target geometry axis coordinate (e.g. Z or X) to the G43/G44 block. |
| Siemens | Alarm 10915 / 10916 | Active tool length compensation values combined with programmed motion violate physical software limit switches or target kinematically impossible zones. | The control's predictive processing halts the axes before the faulty block executes, displaying Alarm 10915/10916. | Tool length registers contain excessive offset values or active transformations exceed axis travels. Fix: Review the active D/H offset values and verify that the target coordinate is within physical travel limits. |
| Mitsubishi | P70 | Activation of G43/G44 tool length compensation is commanded within a circular interpolation block (G02/G03). | Movement terminates instantly, showing a flashing P70 Arc error. | Offset vectors cannot be mathematically generated along an active curved trajectory. Fix: Relocate the G43/G44 offset call to a linear block (G00 or G01) prior to initiating the circular arc. |
Critical Safety Application Note
Failing to follow a standalone G43 tool length compensation block with an absolute coordinate move when the machine is configured for coordinate shifts shifts the internal grid coordinate registers but leaves the physical spindle axis completely unsynchronized. In Mitsubishi systems configured for Coordinate Shift Type (parameter #1268 ext04/bit6 set to 1) or Fanuc systems with Parameter 5006 bit 6 (TOS) set to 1, calling a standalone H or G43 command only shifts the internal coordinate register without initiating immediate servo axis motion. Failing to command an absolute linear g00-rapid-traverse or G01 positioning block immediately following the compensation call means the tool tip remains unsynchronized with the newly shifted coordinate grid; subsequent incremental moves or canned cycles will execute along an uncompensated, offset trajectory. This timing oversight guarantees a catastrophic hard collision, driving the high-rpm spindle and tool assembly directly into a hardened vise jaw, a fixture clamp, or the rotating chuck. To ensure complete operational safety, setup supervisors must audit parameter settings (such as Parameter 5001 TLC/TLB on Fanuc, $TC_DP6 on Siemens, and Parameter #1247 on Mitsubishi) to align the physical axis movement with the programmed command structure, enforcing a strict rule that every G43 activation must be written alongside a physical, absolute axial coordinate move.
Related Tool Length Compensation Commands
To program tool length compensation effectively, operators must understand the broader network of G-codes and helper routines:
- G00 (Rapid Traverse): Frequently used to rapidly position the axes to a safe height while G43 activates the tool length offset vector.
- G28 (Reference Point Return): Automatically cancels active tool length compensation offsets as the physical axis homes to the machine reference zero point.
- G43.1: Tool length compensation along the tool axis (applies offset 3-dimensionally in the direction of the active tool vector).
- G43.7 / G44.7: Lathe ATC tool length compensation, governed on Fanuc systems by parameter 5040 bit 4 (TLG).
- G43.4 / G43.5: Tool center point control (Type 1 / Type 2) for advanced 5-axis machining center operations.
- G68 / G69: Coordinate System Rotation, which requires strict nesting rules with G43/G49 to prevent rotational coordinate matrix distortion and PS0049 system alarms.
- G10: Programmable data input, used to write tool length offset values directly to the active system register database from within the NC program.
Practical Machining Takeaways
Process reliability in high-speed CNC milling and turning requires absolute control over tool length compensation boundaries and parameters. Programmers must enforce linear approach blocks with sufficient travel displacement, maintain look-ahead buffer capacity by avoiding non-coordinate moves, and confirm controller parameter structures prior to cycling the machine. Implementing these practices keeps the cutting tool safely aligned with programmed geometry, preventing mechanical damage and ensuring high-quality part production.
Frequently Asked Questions
How does Parameter 5006 bit 6 (TOS) on Fanuc affect tool offset execution?
Parameter 5006 bit 6 determines whether the Fanuc controller physically moves the axis by the offset amount (setting 0) or mathematically shifts the coordinate display without moving the tool (setting 1) upon reading a G43 block. If configured for mathematical coordinate shifting (1), you must follow the G43 block with an absolute linear positioning command to physically align the cutter tip. Setting this parameter to 0 provides immediate visual validation of the offset movement, which is highly recommended for beginner operators during machine setup.
What is the functional difference between Siemens DIN mode and ISO dialect mode for tool offsets?
Siemens controls run two separate programming dialects: ISO Dialect mode (activated via G291) which requires explicit G43/G44 commands and H offset registers to execute legacy G-code, and native Siemens DIN mode (G290) where tool geometry and wear offsets are automatically applied in the background whenever a tool cutting edge is called using a T and D code (such as T1 D1). Programmers migrating legacy Fanuc code to Siemens must toggle G291 to process standard G43 calls, or completely strip G43/G44 commands if running the machine in G290 DIN mode to prevent syntax errors.
Why does a G28 homing command drop active tool offsets on Mitsubishi controls?
When a manual or programmed reference position return (G28 or G30) is executed, the Mitsubishi control temporarily suspends active tool length compensations to allow the physical axis to safely home to the machine reference zero point without hitting hardware travel limits. If parameter #8122 (Keep G43 MDL M-REF) is set to 0, this offset is permanently cleared upon homing; if set to 1, the modal G43 state is maintained. Operators must establish a strict practice of command verification, checking the controller status display or commanding a fresh G43 H block before the tool plunges back into the workpiece envelope after a home return.
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.