G55 G-Code Guide: Workpiece Coordinate System 2 Secrets
Learn how to configure G55 Workpiece Coordinate System 2 on Fanuc, Siemens, and Mitsubishi CNC systems. Avoid crashes, manage offsets, and optimize programs.
Introduction
An improperly configured G55 workpiece coordinate offset on a CNC machining center or lathe triggers a devastating chain of physical events in a matter of milliseconds. When an operator registers incorrect offsets or modifies a G55 coordinate register during a single-block stop, the CNC control system executes subsequent absolute commands along a physically shifted trajectory. The cutting tool, driven by high-torque axis servomotors, bypasses established chuck barriers and safety envelopes, slamming the tool tip or rotating spindle directly into table-mounted workpiece clamps, a heavy fixture vise jaw, or the rotating jaws of a spindle chuck. This sudden physical impact results in a violent hard collision, shattering carbide cutting tools, damaging turret indexing gears, bending axis ball screws, and instantly converting expensive raw stock into a ruined scrap part while triggering high-current axis overload alarm codes.
Technical Summary
| Property | Technical Specification |
|---|---|
| Command Code | G55 (Workpiece Coordinate System 2 Selection / Settable Zero Offset 2) |
| Modal Group | Group 14 (Fanuc Milling), Group 12 (Fanuc Turning / Mitsubishi Lathe), Group 8 (Siemens Native), Group 14 (Siemens ISO Dialect) |
| Supported Brands | Fanuc, Siemens, Mitsubishi |
| Critical Parameters | Fanuc Parameter 5040 Bit 3 (TCT), Siemens MD 28080 $MC_MM_NUM_USER_FRAMES, Mitsubishi Parameter #1151 rstint |
| Primary Constraints | Cannot combine with inclined surface/TCP control (Mitsubishi); parameters hard-locked on Siemens 802D sl; parameter changes blocked while offsets are active (Fanuc) |
Quick Read
- Coordinate Selection: Command G55 to activate the secondary workpiece coordinate system, shifting the coordinate origin relative to the machine reference zero without canceling active tool length or nose R compensations.
- Subprogram Reusability: Clamp two identical workpieces (one under G54 and the other under G55) to machine matching geometries by calling the same subprogram with shifted zeroes.
- G10 Programmable Writing: Use
G10 L2 P2in absolute (G90) or incremental (G91) mode to programmatically update G55 offset values from within the NC program. - Single-Block Modification Risk: Never resume machining immediately after altering G55 offsets during a single-block stop, as the change only takes effect from the subsequent block.
- Active Offset Safety Lock: Always cancel active offsets using
G49before attempting to modify Fanuc parameter 5040 Bit 3 (TCT), or system alarms will trigger. - Bilingual Compiler Toggle: Remember to switch the Siemens control to ISO mode via
G291before executing standard G10 coordinate writing commands. - Motion Control Interlocks: Ensure that simple inclined surface control (
G176) and tool center point control (G174) are deactivated on Mitsubishi machines before selecting G55.
Basic Concepts
Implementing the G55 workpiece coordinate system on a CNC control shifts the active absolute coordinate registers relative to the basic machine coordinate system. This preparatory command establishes a localized program zero point directly on the raw stock, allowing programmers to define toolpaths relative to the physical part geometry rather than the machine reference datum.
Symmetrical contours or multiple workpiece setups can be machined dynamically across the machine bed by establishing independent coordinate origins. For example, an operator can secure one workpiece in a primary vise jaw registered under G54 and a second identical workpiece in a secondary vise jaw registered under G55. By simply switching coordinate systems and calling the same machining subprogram, the CNC executes the same program block sequence at the secondary location, reducing program length and minimizing programming errors.
When a coordinate transition to G55 is commanded, the CNC motion kernel does not cancel active tool length compensations or tool nose radius offsets. Instead, the control dynamically recalculates the active offset vectors and applies them directly relative to the newly selected G55 workpiece zero, ensuring a continuous contour transition without path interruption or axis dwell.
Command Structure
The G55 command acts as a modal switch that redirects all subsequent coordinate commands to the secondary workpiece coordinate register. The CNC controller references the coordinate offset values stored in the G55 register, which represent the absolute distance from the physical machine zero point to the workpiece zero point. Once G55 is executed, the control applies these offset values to all absolute coordinate moves until another workpiece coordinate system command, such as G54 or G56, is specified.
In addition to manual offset entry on the control panel, G55 offsets can be modified programmatically during program execution. This is achieved using the programmable data input command G10, where address L2 designates standard workpiece coordinate writing, and address P2 selects the G55 register. This allows for dynamic adjustments, such as updating zero offsets to compensate for raw stock variation or chuck tightening width.
; Fanuc Milling Syntax G90 G55 G00 X[x_coord] Y[y_coord] Z[z_coord] ;; Fanuc Turning System A Syntax G55 X[x_coord] Z[z_coord] ; G55 U[x_incremental] W[z_incremental] ;
; Siemens Native SINUMERIK Mode Syntax G55 ;
; Mitsubishi and general ISO G10 Programmable Offset Syntax G90 G10 L2 P2 X[x_offset] Y[y_offset] Z[z_offset] ;
| Address / Parameter | System Role | Value / Range |
|---|---|---|
L2 | Specifies standard workpiece coordinate system offset data input | Constant |
P2 | Designates the target workpiece coordinate system (maps directly to G55) | Constant |
X, Y, Z | Absolute axis coordinate values or zero offsets | Machine travel range |
U, W | Incremental axis coordinates (lathe System A turning) | Machine travel range |
Brand Applications
Fanuc
On Fanuc controls, the G55 workpiece coordinate system shifts the absolute origin relative to the machine home. System configuration relies on Parameter 5040 Bit 3 to enable tool length compensation, and Parameter 0001 Bit 1 to manage legacy series program emulation.
The programming syntax for milling centers uses the G90 G55 G00 X__ Y__ Z__ command to rapid traverse to absolute coordinates. On lathes using G-code System A, absolute movements are commanded as G55 X__ Z__, while incremental adjustments are executed via G55 U__ W__. To programmatically modify the G55 offset register, the command G90 G10 L2 P2 X__ Y__ Z__ is executed.
| Category | Item / Code | Description / Condition |
|---|---|---|
| Parameters | Parameter No. 5040 Bit 3 (TCT) | Tool Change Type: Set to 1 to enable positive/negative tool length compensations (G43/G44) and cancel (G49). |
| Parameters | Parameter No. 0001 Bit 1 (FCV) | Series 15 program format activation: If set to 1, control uses legacy program formats, modifying canned and repetitive cycle interpretation. |
| Parameters | Parameter No. 5431 Bit 0 (MDL) | Group assignment of unidirectional positioning (G60). If 0, Group 00 (unmodal); if 1, Group 01 (modal). |
| Parameters | Parameter No. 3405 Bit 3 (G36) | Determines whether G36 represents circular threading CCW (1) or automatic tool offset X-axis (0). |
| Alarms | Alarm PS1144 | Specified tool change T code inside active programmable parameter input (G10) block. Fix: Remove T code from the G10 block. |
| Alarms | Alarm PS0368 | Attempted to modify tool length compensation parameter TCT (Parameter No. 5040 Bit 3) while tool position or length offset is active. Fix: Deactivate offsets via G49 before modifying the parameter. |
| Alarms | Alarm PS0082 | Tool change T code specified in the same block as a G36 or G37 command. Fix: Separate T code and measurement block. |
| Alarms | Alarm PS0508 | Coordinate system rotation (G68) specified on parallel axes without program coordinate system alignment (G90 absolute move) in the preceding block. Fix: Program an absolute move command G90 for all parallel axes in the preceding block. |
| Versions | Series 15 Format vs Modern | Legacy Fanuc formats are emulated on modern controls using Parameter No. 0001 Bit 1 (FCV). Setting FCV to 1 changes cycle pocket and toolpath evaluations; running them with FCV set to 0 causes profile failures. |
Operators must ensure that all active tool length offsets are cancelled using the G49 command before changing parameter values. Attempting to change compensation parameters while offsets are active will trigger system alarms and cause path deviations.
Siemens
On Siemens SINUMERIK controls, the G55 settable zero offset is managed under Group 8. System variables and memory allocations are configured via machine data parameters such as MD 28080 and MD 18800 to allocate user frames and enable bilingual compilation.
In native Siemens mode, switching to G55 is commanded with a bare G55 block. Under ISO Dial mode activated by G291, G55 is set programmably via G10 L2 P2 X__ Y__ Z__. Native frame manipulations are cleared or stacked using TRANS or ATRANS commands relative to the G55 frame.
| Category | Item / Code | Description / Condition |
|---|---|---|
| Parameters | MD 28080 $MC_MM_NUM_USER_FRAMES | Number of work offsets: Defines the total user frames allocated in memory (G54-G59, G505-G599). |
| Parameters | MD 18800 $MN_MM_EXTERN_LANGUAGE | Activation of external NC languages: Must be set to 1 to activate the external ISO Dialect compiler (required for G291/G10). |
| Parameters | MD 20734 $MC_EXTERN_FUNCTION_MASK (Bit 13) | Forces internal preprocessor stop (STPPRE) during G10 write commands for immediate synchronization in the main run block. |
| Parameters | MD 20150 $MC_GCODE_RESET_VALUES[n] | Determines default active G-codes for G groups upon reset or Power-On (e.g., Group 8 default: G500 or G54). |
| Parameters | MD 24004 $MC_CHBFRAME_POWERON_MASK | Controls whether channel-specific basic frame is reset after Power-On. |
| Alarms | Alarm 61800 | Toggled G291 or executed G10 offset modification while external language machine data MD 18800 is disabled. Fix: Enable MD 18800 $MN_MM_EXTERN_LANGUAGE or option bit 19800. |
| Alarms | Alarm 14800 | Movement commanded in G55 block but programmed path feedrate F evaluates to F0 and "Fixed feedrates" function is inactive. Fix: Specify a non-zero feedrate. |
| Alarms | Alarm 12080 | Compiler parsed unrecognized commands or experienced formatting conflicts (e.g., native Siemens commands in ISO dialect mode). Fix: Ensure compiler mode matches G-code syntax (e.g., use G290 for native). |
| Alarms | Alarm 14060 | Programmed block skip level evaluates to < 1 or > 9. Fix: Correct the skip level in comment/code. |
| Versions | SINUMERIK 840D sl vs 802D sl | Compact SINUMERIK 802D sl has hard-locked parameters (MD 10604, MD 10706, MD 20154) that cannot be adjusted, and lacks collision avoidance options. Global parameters are fully adjustable on 840D sl and 828D. |
| Versions | Multi-Edge Turning | Advanced turning preparatory functions G51.2 (ON) and G50.2 (OFF) are supported on 840D sl but omitted on 802D sl. |
| Versions | Block Skip levels | Siemens treats / and /1 as separate skip levels which must be activated independently, unlike original ISO controls. Configured via MD 10706 SLASH_MASK. |
Operators must program working area limitations (G25/G26 or WALIMON/WALIMOF) to define active protected zones around sensitive equipment like the spindle or turret to prevent collisions during coordinate shifts.
Mitsubishi
On Mitsubishi controls, G55 belongs to G-code Group 12 modal commands. Modal retention during NC resets is configured using Parameter #1151, and coordinate resolution is defined using Parameter #1003.
To select the G55 coordinate system, the command G90 G55 G00 X__ Y__ Z__ is executed. Programmable zero offset input is achieved via G90 G10 L2 P2 X__ Y__ Z__, where P2 corresponds to G55. Alternatively, offset values can be written directly to system variable #5241 for the X-axis.
| Category | Item / Code | Description / Condition |
|---|---|---|
| Parameters | Parameter #1151 rstint | Reset Initial: If 0, active workpiece coordinate modals are preserved in background during NC reset (Reset 1). |
| Parameters | Parameter #1210 RstGmd/bitF | Modal G-code Reset Setting: Configures if modal coordinate system selections are initialized or retained upon reset. |
| Parameters | Parameter #1003 iunit | Input Setting Unit: Defines coordinate input resolution (B to E) and setting boundaries. |
| Alarms | Program Error (P951) | Executed workpiece coordinate system selection (G54 to G59) while Simple Inclined Surface Control (G176) is active. Fix: Deactivate simple inclined surface control before coordinate shift. |
| Alarms | Program Error (P942) | Executed coordinate system selection while Simple Tool Center Point Control (G174) is active. Fix: Deactivate tool center point control before coordinate shift. |
| Alarms | Program Error (P953) | Executed workpiece coordinate system selection while Tool Axis Direction Control (G53.1 or G53.6) is active. Fix: Cancel tool axis direction control first. |
| Alarms | Program Error (P35) | G10 L2 Pn command is specified with a parameter value range exceeding the maximum limit (e.g., P7 or higher, or out-of-range offset). Fix: Limit P address from P1 to P6 for standard offsets. |
| Versions | M80V Type B Series constraints | Executing extended workpiece coordinate setups during active high-speed machining or high-accuracy control modes is blocked and triggers Program Error (P39) or (P34). |
Operators must be aware that if coordinate offset values are modified during a single-block stop, the new settings will only apply starting from the next block. Resuming machining immediately will execute coordinates using the old offset, risking a serious collision.
Brand Comparison
| Comparison Topic | Fanuc | Siemens | Mitsubishi |
|---|---|---|---|
| G-code Group Assignment | Group 14 (Milling), Group 12 (Turning) | Group 8 (Native SINUMERIK Mode), Group 14 (ISO Dialect Mode) | Group 12 (Lathe System) |
| Incremental Command Syntax | Combined address characters U and W (Turning System A) | Modally managed via G91 or specific active frame offsets | Modally managed via G91 |
| Bilingual Compiler Requirement | Not required; continuous parsing | Bilingual compiler toggling via G290 (Native) and G291 (ISO Dialect) | Not required; modal format switch via G188/G189 |
| Active Offset Parameter Interlock | Rigorous software lock; tool parameter changes block and trigger Alarm PS0368 under active offsets | Flexible cutting edge registers (D codes); parameter suppressions are configurable | Software-locked interlock during active G52 local shift on older firmware versions (Program Error P438) |
| Programmable Shift Methods | Standard G10 offset inputs | Frame structures (TRANS/ATRANS) with coordinate stacking and suppression | G52 local coordinate offset commands and direct system variable writing |
| Manual Reverse Run Support | Not supported for active coordinate tracking | Deselects G55 modals during native frame rollback | G127 manual arbitrary reverse run tracks and maintains active G55 coordinates |
Technical Analysis
The architectural handling of absolute and incremental coordinate transitions during a G55 active state varies significantly across the three controllers. Fanuc lathe programming (G-code System A) allows absolute axis coordinates (X, Z) and incremental axis coordinates (U, W) to be combined in the same program block without executing a modal G90/G91 switch. In contrast, Siemens and Mitsubishi systems rely on Group 3 modal tables or axis-specific modifiers to dictate coordinate translation. This makes Fanuc's dual-address system highly efficient for lathe work but requires programmers to be cautious of axis address conventions.
Bilingual compilation and frame stacking further differentiate Siemens from its Japanese counterparts. Siemens SINUMERIK controls require the programmer to execute a G291 command to switch the compiler to ISO Dialect mode to parse standard G10 or G55 blocks, and a G290 command to return to native Siemens mode. Siemens also manages zero offsets within a multi-level frame stack, allowing baseline G55 offsets to be dynamically layered with absolute (TRANS) or additive (ATRANS) frames. However, because native absolute frames are substituting commands, executing a bare TRANS block to cancel a temporary translation automatically wipes out active rotations (ROT) or mirroring (MIRROR) layered on top of G55, whereas Fanuc and Mitsubishi handle coordinate rotations and mirroring through independent, individually cancelable modal groups.
Tool compensation interlocks and manual intervention capabilities introduce distinct safety and operational behaviors. Fanuc controls enforce a strict software-locked interlock that blocks any modification to tool length compensation parameters, such as Parameter 5040 Bit 3, while active tool offsets are applied, triggering Alarm PS0368 if violated. Siemens and Mitsubishi handle length offsets via active cutting edge registers (D codes), offering greater program flexibility. However, Mitsubishi implements a specialized manual arbitrary reverse run (G127) function that allows operators to manually wind the handwheel backward during a run; the Mitsubishi motion kernel tracks and recovers active G55 offsets during this reverse trace. Fanuc lacks this reverse tracing capability, and Siemens automatically deselects zero offset modals during native frame rollback.
Program Examples
Fanuc Example
O1001 ;
N10 G90 G21 G40 G49 G80 ;
N20 G10 L2 P2 X-250.5 Y-150.0 Z-400.2 ;
N30 G00 G90 G55 X0 Y0 ;
N40 G43 H01 Z50.0 M03 S1500 ;
N50 G01 Z-5.0 F150.0 ;
N60 X50.0 Y50.0 ;
N70 G00 Z100.0 M05 ;
N80 G49 G53 G00 X0 Y0 Z0 ;
N90 M30 ;Dry Run
- N10: Initializes the control state, setting absolute programming mode (
G90), metric input unit (G21), canceling tool radius compensation (G40), deactivating tool length compensation (G49), and canceling canned cycles (G80). - N20: Uses the programmable data setting command
G10with offset typeL2(workpiece coordinate offset) and targetP2(corresponding to G55) to load the absolute coordinate offset valuesX-250.5,Y-150.0, andZ-400.2into the G55 register. - N30: Selects workpiece coordinate system 2 (
G55) and rapid traverses the X and Y axes to the localized coordinate origin (X0,Y0). - N40: Activates positive tool length compensation (
G43) using tool offset indexH01, rapid moves the Z-axis to a safety height ofZ50.0relative to the G55 workpiece zero, and starts the spindle CW at1500 rpm. - N50: Performs a linear feed plunge (
G01) along the Z-axis to a depth ofZ-5.0at a feedrate of150.0 mm/min. - N60: Interpolates linearly to coordinates
X50.0,Y50.0relative to the G55 program zero, machining the workpiece. - N70: Retracts the tool to a safety plane of
Z100.0at rapid traverse speed and stops the spindle (M05). - N80: Cancels tool length compensation (
G49) and rapid traverses the axes directly to the machine coordinate system zero (G53 X0 Y0 Z0) for safe part loading. - N90: Ends the program and rewinds memory (
M30).
Siemens Example
N10 G90 G710 G40 ;
N20 G291 ;
N30 G10 L2 P2 X-250.5 Y-150.0 Z-400.2 ;
N40 G290 ;
N50 G55 G00 X0 Y0 ;
N60 T1 D1 M3 S1500 ;
N70 G00 Z50.0 ;
N80 G01 Z-5.0 F150.0 ;
N90 TRANS X20.0 Y20.0 ;
N100 G01 X30.0 Y30.0 ;
N110 TRANS ;
N120 G00 Z100.0 M5 ;
N130 G500 G00 X0 Y0 Z0 ;
N140 M30 ;Dry Run
- N10: Sets native Siemens mode absolute coordinates (
G90), metric units (G710), and cancels tool radius compensation (G40). - N20: Switches the compiler to ISO Dialect mode (
G291) to interpret standard ISO G-codes. - N30: Writes workpiece offset coordinates
X-250.5,Y-150.0, andZ-400.2directly into the G55 offset registers usingG10 L2 P2. - N40: Switches the compiler back to native Siemens SINUMERIK mode (
G290). - N50: Activates the G55 settable zero offset user frame and rapid positions the X and Y axes to the program zero point (
X0,Y0). - N60: Loads tool
T1, activates active tool edge offsetD1, and starts the spindle CW at1500 rpm. - N70: Rapid moves the Z-axis to a safety clearance plane of
Z50.0relative to the G55 zero frame. - N80: Feeds the tool linearly to a depth of
Z-5.0at a path feedrate of150.0 mm/min. - N90: Commands an absolute programmable zero offset
TRANS X20.0 Y20.0, shifting the program origin by 20 mm in both X and Y axes relative to the active G55 coordinate system. - N100: Executes a linear interpolation command to
X30.0,Y30.0evaluated from the newly shifted local coordinate origin. - N110: Executes a bare
TRANScommand, which cancels the active local frame transformation, returning the program origin directly to the baseline G55 zero point. - N120: Retracts the tool to safety height
Z100.0and stops the spindle. - N130: Deactivates all active settable frames using
G500and rapid traverses the axes to machine zero. - N140: Ends program execution and rewinds memory (
M30).
Mitsubishi Example
N10 G90 G21 G40 G49 G80 ;
N20 G90 G10 L2 P2 X-250.5 Y-150.0 Z-400.2 ;
N30 G90 G55 G00 X0 Y0 ;
N40 M06 T01 ;
N50 G43 H01 Z50.0 M03 S1500 ;
N60 G01 Z-5.0 F150.0 ;
N70 #5241 = -252.0 ;
N80 G01 X50.0 Y50.0 ;
N90 G00 Z100.0 M05 ;
N100 G49 G53 G00 X0 Y0 Z0 ;
N110 M02 ;Dry Run
- N10: Initializes the control parameters by setting absolute mode (
G90), metric input unit (G21), and canceling active compensations and cycles. - N20: Programmably sets the workpiece coordinate offset values for G55 (
P2) toX-250.5,Y-150.0, andZ-400.2using theG10 L2 P2structure. - N30: Selects the G55 coordinate system and rapid traverses the X and Y axes to local program coordinates
X0,Y0. - N40: Executes a tool change command (
M06) to load toolT01. - N50: Activates tool length compensation (
G43) using tool offset registerH01, rapid positions the Z-axis toZ50.0, and starts the spindle CW at1500 rpm. - N60: Linear feeds the tool into the workpiece to a depth of
Z-5.0at a feedrate of150.0 mm/min. - N70: Writes a value of
-252.0directly to system variable#5241, modifying the active X-axis G55 offset. Note that because this write occurs mid-program, the new offset only becomes active from the subsequent block. - N80: Performs a linear move to
X50.0,Y50.0evaluated from the newly updated X-axis offset value, machining the stock. - N90: Rapid retracts the Z-axis to
Z100.0and commands spindle stop (M05). - N100: Cancels tool length compensation (
G49) and rapid traverses the axes to machine zero (G53 X0 Y0 Z0). - N110: Ends the program run (
M02).
Error Analysis
| Brand | Alarm Code | Trigger Condition | Operator Symptom | Root Cause / Fix |
|---|---|---|---|---|
| Fanuc | Alarm PS1144 | Specified tool change T code inside active programmable parameter input (G10) block. | Program execution halts instantly; control panel displays "G10 FORMAT ERROR". | Root Cause: Invalid command combination. Fix: Move the tool change T code to a separate block. |
| Fanuc | Alarm PS0368 | Attempted to modify tool length compensation parameter TCT (Parameter No. 5040 Bit 3) while tool position or length offset is active. | Execution halts; control panel displays "OFFSET REMAIN AT OFFSET COMMAND". | Root Cause: Parameter change blocked while active offsets exist. Fix: Command G49 to cancel active offsets before changing parameter. |
| Fanuc | Alarm PS0082 | Tool change T code specified in the same block as a G36 or G37 command. | Execution halts; screen displays "G37 SPECIFIED WITH T CODE". | Root Cause: Tool offset measurement block conflict. Fix: Move the T code to a separate block prior to measurement. |
| Fanuc | Alarm PS0508 | Coordinate system rotation (G68) specified on parallel axes without program coordinate system alignment (G90 absolute move) in the preceding block. | Execution halts; screen displays "G CODE TO NEED G90(PAC)". | Root Cause: Parallel axes are not aligned. Fix: Program an absolute move command G90 for all parallel axes in the preceding block. |
| Siemens | Alarm 61800 | Toggled G291 or executed G10 offset modification while external language machine data MD 18800 is disabled. | Execution halts; control displays "External CNC system missing". | Root Cause: External language compiler option is inactive. Fix: Set MD 18800 $MN_MM_EXTERN_LANGUAGE to 1 or enable option bit 19800. |
| Siemens | Alarm 14800 | Movement commanded in G55 block but programmed path feedrate F evaluates to F0 and "Fixed feedrates" function is inactive. | Execution halts; control displays "Channel %1 Set %2 programmed path velocity is less than or equal to zero". | Root Cause: Axis movement commanded with zero feedrate. Fix: Specify a non-zero feedrate in the block or active modals. |
| Siemens | Alarm 12080 | Compiler parsed unrecognized commands or experienced formatting conflicts (e.g., native Siemens commands in ISO dialect mode). | Execution halts; control displays "Syntax error". | Root Cause: Native commands compiled under ISO mode. Fix: Switch compiler to native mode via G290 before commanding native instructions. |
| Siemens | Alarm 14060 | Programmed block skip level evaluates to < 1 or > 9. | Execution halts; control displays "Impermissible skip level for differential block skip". | Root Cause: Out-of-bounds skip level input. Fix: Correct block skip number to be between 1 and 9 in comment or code. |
| Mitsubishi | Program Error (P951) | Executed workpiece coordinate system selection (G54 to G59) while Simple Inclined Surface Control (G176) is active. | Program execution halts; control panel displays "Program Error (P951)". | Root Cause: Coordinate shift commanded during inclined machining mode. Fix: Command inclined surface cancel before coordinate selection. |
| Mitsubishi | Program Error (P942) | Executed coordinate system selection while Simple Tool Center Point Control (G174) is active. | Program execution halts; control panel displays "Program Error (P942)". | Root Cause: Coordinate shift commanded during tool center point control. Fix: Deactivate tool center point control before selecting coordinate systems. |
| Mitsubishi | Program Error (P953) | Executed coordinate system selection while Tool Axis Direction Control (G53.1 or G53.6) is active. | Program execution halts; control panel displays "Program Error (P953)". | Root Cause: Coordinate shift commanded during tool axis direction control. Fix: Cancel tool axis direction control first. |
| Mitsubishi | Program Error (P35) | G10 L2 Pn command is specified with a parameter value range exceeding the maximum limit (e.g., P7 or higher, or out-of-range offset). | Program execution halts; control panel displays "Program Error (P35)". | Root Cause: Workpiece offset system number is out of range. Fix: Limit the P address range from P1 to P6 for standard workpiece coordinate systems. |
Application Note
A catastrophic mechanical crash shatters the carbide tool tip, damages the axis ball screws, and destroys the raw stock when G55 offset variables are modified during a single-block stop or program interruption. On the shop floor, if an operator pauses execution at a single-block stop to update the G55 coordinate registers (for example, by entering a new offset value via G10 or modifying system variable #5241 on a Mitsubishi machining center), the motion kernel does not apply this update to the currently buffered movement block. The new setting only takes effect from the subsequent block. Consequently, when the operator presses cycle start, the machine resumes travel along a trajectory evaluated from the old, uncompensated offset values. The axis will drive the spindle or turret directly into table-mounted clamps, a fixture vise jaw, or the rotating jaws of a spindle chuck, causing a high-current axis overload alarm and turning the workpiece into scrap.
Related Command Network
- G54 (Workpiece Coordinate System 1): Selects the primary workpiece coordinate system, serving as the default zero offset that is typically compared with or transitioned to G55 during multi-fixture setups. Link: G54 Workpiece Coordinate System
- G53 (Machine Coordinate System Selection): Temporarily suppresses the active G55 workpiece coordinate system offset to allow non-modal movement commands relative to the machine's absolute reference zero for tool changes or safe axis retraction. Link: G53 Machine Coordinate Selection
- G52 (Local Coordinate System): Establishes a temporary local shift relative to the active G55 workpiece coordinate system, shifting the coordinate origin without altering the baseline offset values stored in the G55 register. Link: G52 Local Coordinate System
- G10 (Programmable Data Input): Updates coordinate system offset registers, such as G55, programmatically during execution using absolute or incremental inputs.
Conclusion
Executing G55 shifts absolute toolpaths relative to raw stock zero points, enabling multi-setup machining on a single table. Maximizing safety during coordinate shifts requires programmers to always retract the spindle to machine reference coordinates using G53 before calling G55, and operators must verify offset inputs using a dry run after any single-block intervention.
FAQ
Why does G55 cause a collision after modifying offsets during a single-block stop?
Modifying G55 coordinate offsets on the register screen or via G10 during a single-block pause does not affect the currently buffered motion block. The CNC control reads and processes the updated offset only from the next block. Operators must reset the control or rewind the program to force the interpreter to recalculate and apply the updated G55 coordinates before resuming movement.
How does G55 behave during a Siemens SINUMERIK native frame rollback?
When executing a manual arbitrary reverse run or native frame rollback on a Siemens control, the controller automatically deselects active G55 zero offsets to prioritize machine coordinate safety. Programmers must ensure that working area limitations (G25/G26) are programmed to define protected envelopes around fixtures when manually backing up axes.
What causes Alarm PS0368 to trigger when working with G55 on Fanuc controls?
Fanuc controls incorporate a software-locked safety interlock that prevents modifying tool length compensation parameters, such as Parameter 5040 Bit 3, while active tool offsets are applied. Programmers must execute a G49 command in the NC program to cancel all active tool length compensations before executing any parameter modifications.
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 - 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
G71 Metric Dimensioning Guide for Siemens SINUMERIK Controls
Learn how to program G71 and G710 metric dimensioning on Siemens SINUMERIK controls, including parameter MD 10240, alarm codes, and G-code syntax errors.
G69 Balance Cut Cancel: Coordinate Recovery & Crash Prevention
Learn how to program the G69 balance cut cancel command for Fanuc, Siemens, and Mitsubishi turning centers. Cancel dual slide synchronization and prevent crashes.
G70 CNC Finishing Cycle Guide for Fanuc, Siemens, and Mitsubishi
Learn the G70 finishing cycle for CNC turning. Master syntax, parameters, and alarm codes for Fanuc, Siemens CYCLE95, and Mitsubishi controls to avoid crashes.
G69 Coordinate System Rotation Cancel: Modals, Alarms, and Setup
Learn to cancel G68 facing turret mirrors and coordinate rotations using G69 on Fanuc, Siemens, and Mitsubishi CNCs to prevent turret crashes.