Resolving Sinumerik Error 10776: Tool Radius Compensation Setup

David Krause15 min read
Motion ControlSiemensTroubleshooting
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Overview

Siemens Sinumerik alarm 10776 is raised in the NC channel when cutter radius compensation (CRC) is activated — typically by programming G41 (left compensation) or G42 (right compensation), or by the corresponding modal activation flags at part program start — and the active traversing axis in the affected block is not defined as a geometry axis in the channel's axis configuration. The alarm is a NC-side configuration check, not a PLC alarm, but it can be triggered by inconsistent machine data after a backup-restore, controller replacement, or option-bit change. Resolving the fault requires identifying whether the trigger is an axis-classification mismatch (most common on 5-axis machines, kinematics transformations, and post-processors that emit non-standard axis names) or a tool-radius-to-contour mismatch, then correcting the appropriate machine data or NC program block.

The Siemens official description for the alarm per the SINUMERIK 840D sl / ONE diagnostics manual is:

[Channel %1: ] Block %2 axis %3 must be geometry axis if tool radius compensation is active.

The placeholders %1, %2, and %3 are populated by the NC kernel with the channel number, the block number in which compensation activation was attempted, and the axis name that failed the geometry-axis check.

Error Code Definition and Channel/Block Parameters

Alarm 10776 belongs to the SINUMERIK alarm class compensation / tool radius compensation (alarm range 1077x). It is reported as an NC alarm with display attribute "NC programming error" and the alarm reaction is interpreter stop (the NC interprets further blocks after correction, but does not execute them until Reset is pressed and the alarm cleared). The alarm is not self-clearing on Reset because the underlying configuration problem persists until corrected.

Field Meaning Example value
%1 Channel number 1 (for first NC channel in the project)
%2 Block number / sequence number N47, N120, etc.
%3 Axis name that is not a geometry axis A, B, C, Q1, QS, MAGN, etc.

A typical display in the SINUMERIK Operate alarm line reads: 10776 Channel 1 Block N47 axis B must be geometry axis if tool radius compensation is active. The presence of a name like QS (a settable frame axis on milling kinematics), MAGN (5-axis vector), or a manufacturer-defined spindle-coupled axis name in %3 is a strong indicator that the trigger is a missing geometry-axis assignment rather than a tool-size problem.

Root Cause Analysis — Two Failure Modes

Field experience with Sinumerik 840D sl / ONE shows that alarm 10776 has two distinct root-cause families, and the diagnostic path depends on which one applies.

Cause A — Geometry-Axis Mapping Missing or Misconfigured

Cutter radius compensation is only permitted to operate on geometry axes. Geometry axes are the Cartesian linear axes named in the channel's AXCONF_GEOAX_NAME_TAB (machine data MD20050[0..2] in the channel). If the axis appearing in the active compensation block is not in that table — for example because it is a machine axis, a special axis (rotary C axis of a swivel head treated as a channel axis), or a transformation auxiliary axis — the NC rejects the activation.

This cause is most common after:

  • NCK (Numerical Control Kernel) data backup/restore where axis assignments were not preserved.
  • Replacement of the NCU/PCU with an image where the geometry-axis naming table is empty.
  • Post-processor output that emits axis names not declared as geometry axes (e.g., a CAM post writing B for a tool-tilt axis on a 3+2 setup).
  • Loading of a manufacturer cycle that internally switches axis configuration without restoring it.
  • Option-bit changes that drop a kinematic option (e.g., ORIRESET), causing the geometry-axis table to be re-initialized shorter than expected.

Cause B — Tool Radius Larger Than Programmed Contour Radius

The related alarm 10762 ("Block %2 tool radius compensation — contour radius too small") is triggered when the tool radius is geometrically too large for the inside corner being machined, but alarm 10776 itself can also surface if the NCK has an internal inconsistency between the programmed compensation activation and the geometry it is asked to compensate. In practice this presents as a 10776 immediately followed by a 10762 on the same block, or as a 10776 after the compensation has been active and the next block violates the geometry assumption.

Root conditions for Cause B:

  • Tool offset D-number selected does not have a valid radius in $TC_DP6 (radius) or $TC_DP15 (wear radius). The compensation calculation reverts to a default and may exceed the contour.
  • Tool table loaded from backup with offset number n but the active program selects Dn+1, pulling a zero radius into CRC. On the next motion block the NC detects the discontinuity and raises 10776 before 10762.
  • Programmed radius in CAM-generated G-code exceeds the physical tool, especially on manual finishing passes where the operator hand-edits a radius value.
  • Compensation type CUT3DC or CUT3DF (3D circumferential / face milling) is active but the tool type is not flagged accordingly; the kernel may treat the geometry as inconsistent.

Geometry Axis Configuration Fundamentals

Three axis-configuration tables per channel control how NC axes are exposed to the part program. They are independent and must all be consistent.

Machine data Name Purpose
MD20000-$MC_AXCONF_CHANAX_NAME_TAB[n] Channel axis name Maps an NC address (X, Y, Z, A, B, C, ...) to a channel axis number (n = 0..MAX_AXES_PER_CHAN-1).
MD20050-$MC_AXCONF_GEOAX_NAME_TAB[n] Geometry axis name The name of the geometry axis at slot n (n = 0, 1, 2 = 1st, 2nd, 3rd geometry axis, traditionally X, Y, Z).
MD20070-$MC_AXCONF_MACHAX_NAME_TAB[n] Machine axis name The name of the machine axis at slot n. The machine axis is the physical axis assigned to a channel axis.
MD20150-$MC_GCODE_DEFAULT_SETTINGS[n].code G-code default for n-th G group Determines modal G codes active at NC start and after Reset, including the CRC G-group defaults.
MD20140-$MC_PATH_CONFIG Path configuration Bit field that specifies whether path-related axes are interpreted as geometry axes (must be set for milling).

For a standard 3-axis milling channel, MD20050 typically contains "X", "Y", "Z". The slot order defines the 1st, 2nd, and 3rd geometry axis and is significant because G17/G18/G19 select the plane, and CRC activation implicitly uses the geometry-axis set for its look-ahead calculation. If Z is missing from MD20050, programming G17 with G41 against an X/Y motion in the active plane raises 10776 even though X and Y are valid geometry axes, because the kernel cannot determine the third geometry axis to maintain the CRC plane definition.

Critical configuration rule: Every axis referenced in the same block with G41 or G42 must appear in MD20050. An axis defined only in MD20000 (channel axis) but absent from MD20050 (geometry axis) is treated as a machine or special axis, and CRC activation against it triggers alarm 10776.

Machine Data Inspection Procedure

Use the SINUMERIK Operate user interface or HMI Advanced to display the configuration before editing any file. Direct file edits to N_MD_COMPLETE.MPF or TEA files require an NCK restart and a clean reset of the channel.

  1. From the main menu, navigate to Startup → Machine Data → Control Unit → MD Display (or via SETUP → MD depending on HMI version).
  2. Filter for the channel in which 10776 occurred (if multiple channels are configured, alarm %1 indicates which one).
  3. Inspect MD20050[$MC_AXCONF_GEOAX_NAME_TAB]. Compare with MD20000 entries. Every geometry-axis slot must contain a name present in MD20000 of the same channel.
  4. Inspect MD20140 $MC_PATH_CONFIG. Bit 0 = 1 (path axes are geometry axes) is mandatory for any configuration that programs CRC.
  5. Inspect MD20150[$MC_GCODE_DEFAULT_SETTINGS]. Locate G-group 22 (CRC type — CUT2D/CUT3D) and G-group 7 (cutter compensation on/off). Verify that the defaults do not imply an unsupported compensation mode for the configured axes.
  6. Read the alarm display again. Note the value of %3 (the axis name the alarm rejected). Confirm whether that name exists in MD20050.

If the alarm rejects an axis name that does exist in MD20050 of the channel, escalate to Cause B diagnostics — tool table integrity, program geometry, and the CRC type in use.

Tool Radius Compensation Types and Their Geometry Requirements

CRC is selected via the CUT2D / CUT2DF / CUT3DC / CUT3DF / CUT3DCC / CUT3DCCD keywords, either modal or per-block. Each type carries a different geometry-axis requirement.

CUT type Description Required geometry axes Common 10776 trigger
CUT2D 2D compensation in active plane Two geometry axes (active plane) Plane (G17/G18/G19) references a missing 3rd geometry axis
CUT2DF 2D with frame compensation Two geometry axes, frame active Rotary axis with setable frame not in geometry-axis table
CUT3DC 3D circumferential, tool perpendicular to surface Three geometry axes + tool orientation Tool-orientation block lacks geometry-axis slot 3
CUT3DF 3D face milling Three geometry axes + tool direction Same as CUT3DC; orientation must be a geometry axis
CUT3DCC 3D circumferential, constant curvature Three geometry axes + orientation Same; common in 5-axis post-processors
CUT3DCCD 3D circumferential, differential Three geometry axes + orientation Same; typically multi-blade milling

For 5-axis machines running CUT3D-family compensation, the tool-orientation vector must be representable as geometry-axis motion. If the post-processor outputs orientation as a machine axis (e.g., A and C only as machine axes) but MD20050 lists them as geometry axes of slots 4 and 5, the alarm may still appear if the chain (machine axis → channel axis → geometry axis) has a break. This is the most frequent origin of 10776 on 5-axis mill-turn or HSC post-output.

Step-by-Step Resolution for Cause A (Geometry-Axis Missing)

  1. Read the alarm and capture %3. Write down the exact axis name the NC rejected. If the name is an unusual vendor-specific string, look up the equivalent channel axis in MD20000.
  2. Display MD20050. Confirm whether the name from %3 is present in any of the three slots. If not, that is the alarm source.
  3. Decide on the correct geometry-axis slot. For a 3-axis mill the slot must be 1, 2, or 3. Adding a 4th or 5th geometry axis requires the controller to support it and the option bit MD10715 $MN_M_NO_FCT_CYCLE related geometry-axis expansion, depending on controller generation. On 840D sl, up to 5 geometry axes are configurable; on 840D line, typically 3.
  4. Edit MD20050 with the correct slot entry. For an axis B that should be a geometry axis, enter "B" into the appropriate index. Always edit at the operator permission level granted by the machine builder.
  5. Verify MD20000 consistency. The same axis name must appear in MD20000 so the channel knows to route the address B to a channel axis.
  6. MD restart. From the HMI: Startup → NC → Reset (NCK). Geometry-axis changes generally require an NCK restart (PO-RESET or full NCK reboot), not a channel reset.
  7. Clear the alarm and re-run the program. Press RESET, then CANCEL on the alarm, then run a test program in dry-run mode (DRY) and single block (SBL) to verify the geometry-axis path is now valid.
Safety: Geometry-axis changes can change how every NC program in the machine interprets its block addresses. Validate with a complete dry-run on a known-good program before resuming production. If the machine has a manufacturer-locked configuration, coordinate the change with the OEM's commissioning engineer.

Step-by-Step Resolution for Cause B (Tool Radius / Contour Mismatch)

  1. Open the active tool offset list. In SINUMERIK Operate: Parameters → Tool List → Magazine, or via the program header T="TOOL_NAME" D<offset> identify the D-number actually loaded.
  2. Inspect the offset values. Verify $TC_DP6 (radius) is non-zero, positive, and matches the physical tool within ±0.01 mm. Inspect $TC_DP15 (wear radius) — large wear values can effectively make the working radius too large for tight inside corners.
  3. Inspect the part program geometry. In the failing block (alarm %2) check the minimum inside-corner radius against the tool radius. A 6 mm tool (radius 3 mm) cannot cut a 4 mm inside corner with CRC active without gouging, and although 10762 is the typical alarm, some post-processors combine it with 10776 if the NCK detects a tool-radius violation while CRC is in transition.
  4. Re-measure the tool and update the offset. Use a calibrated tool presetter, not a hand-held micrometer, and re-write the radius in the tool list. Confirm with the New button — Sinumerik tool lists require explicit confirmation for the change to be active for the running program.
  5. Reload the part program. Some controllers cache the tool radius used at compensation activation. Reset → Re-Activate forces re-read of the offset.
  6. If the contour is intentionally tighter than the tool radius, insert a lead-in/lead-out segment, drop CRC temporarily, or change the tool. Do not bypass the alarm with a suppression routine — alarm 10776 indicates a real geometric impossibility.

Tool Table Verification

The tool table stores radius, length, wear, and adapter values in fixed offsets. The relevant system variables for CRC verification are:

System variable Meaning Typical range
$TC_DP1 Tool type (mill, drill, tap, etc.) 1xx for mills
$TC_DP6 Radius 0.0 to tool_max_radius (machine-dependent)
$TC_DP7 Length 1 (Z, in 3-axis mill) ±99999.999 mm
$TC_DP15 Wear radius ±99.999 mm
$TC_DP16 Wear length 1 ±99.999 mm
$TC_TP1 Tool identifier (duplo) alphanumeric
$TC_DP21 Adapter length 1 ±99999.999 mm

To dump the active D-offset from the part program for diagnostics, use:

DEF REAL _R = 0
DEF INT _DNO = $TC_DPNT ; current D number
_R = $TC_DP6[_DNO, 0]
MSG("Active radius = " << _R)
M00

This pauses the program and prints the active radius. If the value is zero despite a non-zero D-number, the tool list reference is broken (corrupt magazine assignment, lost tool data after a backup-restore, or wrong magazine loaded into the channel).

Verification and Commissioning Tests

After the corrective action, validate the system with a structured test sequence before returning to production. Use a non-critical workpiece or a graphite/aluminum test block.

Test Action Expected result
Geometry-axis read-back Run AXISDEF() in the part program or read MD20050 from HMI Axis name from previous alarm %3 now appears in MD20050 slot
CRC activation dry-run Single-block test: G0 X0 Y0; G41 D1; G1 X100 at 10% rapid No alarm; tool-path offset is correct on graphics view
Full contour test Run the originally failing program in dry-run / single block No 10776, no 10762
Tool table integrity Cross-check all D-offsets used in production All non-zero, all match measured values
Power-cycle test Power off / on the NCU MD20050 retained, no alarm at boot

Related Sinumerik Errors

Alarm 10776 is part of a family of CRC and geometry-axis alarms. Cross-reference these when 10776 is intermittent or accompanied by other alarms.

Alarm Description Relation to 10776
10762 Contour radius too small Frequently appears in the same block as 10776 when tool radius exceeds inside-corner radius
10770 Cutter radius compensation, no negative direction programmed Often precedes 10776 in a CRC setup sequence
10774 Tool radius compensation active in wrong modal level Modal-level conflicts may cascade to 10776
10780 Compensation vector jump — non-monotonous contour Sequel to 10776 once compensation is partially active
10860 Axis configuration error (no geometry axis assigned) Related axis-config alarms that can co-occur with 10776
20081 Axis name not assigned to a channel axis Underlying axis-mapping alarm when MD20000 is incomplete

For the full Siemens-published 10776 documentation and related entries, refer to the official SINUMERIK 840D sl diagnostics manual via Siemens Industry Online Support under the diagnostics-list section for alarm range 10770–10799.

Edge Cases and Field-Notes

OEM-locked configurations. Many machine builders lock MD20050 and related geometry-axis machine data behind a manufacturer password. Changing them from a user-level password raises a 8030 "Protection level insufficient" alarm. Coordinate the change with the OEM service group.

5-axis kinematics with rotary head. On a swivel-head 5-axis machine, the orientation axes are usually B and C, and the machine data is configured for these to be geometry axes of slots 4 and 5. The kinematics transformation (MD24120 $MC_TRAFO_AXES_IN_1 etc.) must list them in the same order as MD20050. A mismatch causes the transformation to fail before CRC is ever activated, but at runtime, post-processors that emit TRAORI followed by G41 in the same block can raise 10776 when the orientation axis is not a geometry axis in the active channel.

Channel switch with active CRC. Switching between channels (e.g., in a mill-turn setup) while CRC is active carries the compensation plane into the new channel. If the new channel does not have the same geometry-axis configuration, the first block after the switch raises 10776. Best practice: deactivate CRC with G40 before the channel switch.

Tool list referenced but not in active magazine. Some HMIs allow a D-number to be selected even if the corresponding T-number is not in the active magazine (e.g., a manual D-number entry). The NCK substitutes a zero-radius default and 10776 may follow.

Frame rotation with CRC. Activating ROT, AROT, or a settable frame while CRC is active on a frame-affected geometry axis can produce 10776 if the frame-modified axis position falls outside the geometry-axis definition (rare, but seen on machines with constrained rotary axis ranges).

Frequently Asked Questions

What does Sinumerik alarm 10776 mean exactly?

Alarm 10776 means the NC has tried to activate cutter radius compensation (G41 or G42) on a block whose traversing axis is not declared as a geometry axis in the channel's MD20050 $MC_AXCONF_GEOAX_NAME_TAB. The alarm text is "[Channel %1: ] Block %2 axis %3 must be geometry axis if tool radius compensation is active."

How do I tell if 10776 is caused by axis configuration or by tool radius?

Read the axis name from the alarm's %3 field. If that name does not exist in MD20050 of the failing channel, the cause is geometry-axis configuration. If the name is present in MD20050, check the active D-offset radius ($TC_DP6), the wear radius ($TC_DP15), and the part program's smallest inside-corner radius — the cause is then tool-radius / contour mismatch.

Do I need an NCK restart after changing MD20050?

Yes. Geometry-axis naming changes in MD20050 require an NCK restart (PO-RESET or full controller reboot). A channel reset is not sufficient. After the restart, press RESET on the alarm line and re-run the program to verify.

Why does 10776 appear after I restored an NCK backup?

Some backup images do not include the geometry-axis naming table (MD20050), or include a different channel-axis assignment (MD20000). After restore, the channel may have a geometry-axis slot pointing at a non-existent axis name. Re-enter MD20050 values manually or re-load the machine builder's commissioning archive, not a partial NCK backup.

Can alarm 10776 occur on 3-axis milling machines?

Yes. It occurs whenever the compensation activation references an axis that is not in MD20050. On a 3-axis mill this typically happens if the third geometry axis slot is empty (MD20050[2] blank) and the CRC plane selection (G17/G18/G19) references that slot, or if a post-processor incorrectly addresses a non-geometry axis in the same block as G41/G42.

Back to blog