SINUMERIK Tool Offset Writes Not Active: Reselect D1

David Krause7 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

Problem Details

A part program (or an operator/HMI routine) reads tool data out of the tool offset memory, modifies it — typically length or radius — and writes the corrected value back. The write itself succeeds: the new value is visible in the tool offset list on the HMI. But the machine keeps cutting with the old geometry. Axis positions, tool tip position and radius compensation behave exactly as before the write.

Typical symptoms:

  • Measured part dimension does not change after a length correction is written from the program.
  • Radius compensation (G41/G42) still uses the previous radius even though the offset table shows the new value.
  • Manually re-selecting the tool on the HMI, or restarting the program, suddenly makes the correction appear — which masks the fault during commissioning and makes it look intermittent.
  • A subsequent read-back of the offset returns the new value, so the program logic looks correct and the operator blames the drive or the mechanics.
Key distinction: the tool offset memory and the active compensation are two different things. Writing memory does not touch the active compensation until the control re-evaluates the tool/edge selection.

Root Cause

On Siemens SINUMERIK controls, tool length and radius compensation values are latched into the active compensation frame at the moment a tool (T) and cutting edge (D) are selected. Everything the interpolator does afterwards uses that latched copy.

Changing the underlying offset data — whether by writing the system variable from the part program, by an HMI edit, or by a PLC/HMI script — only updates the stored table. The change becomes effective when the tool or the cutting edge is selected again. Without a new selection, the control has no trigger to recompute the length/radius vector, so the block preparation continues with the stale values.

This is not a bug and there is no alarm. It is the deterministic behaviour of the offset activation logic: the control must know exactly at which block boundary a geometry change takes effect, so it ties activation to the D-selection instead of to the data write.

Why it looks intermittent

Scenario Result Reason
Write offset, continue machining Old value used No new D selection
Write offset, program a tool change (T/D) New value used Selection re-latches offset
Write offset, operator reselects tool on HMI New value used Selection re-latches offset
Write offset, reset + program restart New value used First T/D in program re-latches offset

Solution

Force a re-selection of the cutting edge immediately after the write. In the common case — a single-edge tool where the program works with the first cutting edge — programming D1 after the offset write is sufficient.

  1. Read the current tool data into R-parameters or local variables using the tool-offset system variables for the relevant T number and D number.
  2. Compute the correction (measured deviation, wear increment, probe result, etc.).
  3. Write the value back into the same offset field.
  4. Re-select the cutting edge with D1 (or the D number actually in use) in the block immediately after the write.
  5. Insert a preprocessing stop before or around the write if the block preparation may have already buffered downstream motion blocks with the old geometry.
; --- generic structure -------------------------------
STOPRE                 ; flush look-ahead before touching offset data
; read  -> modify -> write the tool offset field here
D1                     ; re-select edge 1: new length/radius become active
G01 X100 F500          ; first motion using the corrected geometry
Multi-edge tools: if the operation runs on edge 2 or higher, re-select that edge (D2, D3, …), not D1. Selecting the wrong D loads a different geometry set and produces a visible, and usually expensive, position jump.

Alternative re-selection methods

Method When to use Caution
D1 in the next block Same tool stays in the spindle; single-edge tool Confirm the edge number matches the active one
Re-program T then D Offset written for a tool that is about to be called May trigger a tool-change macro / PLC handshake
Re-select on HMI Manual/setup mode only Not repeatable in automatic; do not rely on it in production

Length vs. wear fields

Decide deliberately which field the program writes:

  • Geometry fields hold the nominal tool dimension from presetting. Overwriting them from a measuring cycle destroys the traceable original value.
  • Wear fields are the correct target for cyclic, in-process corrections. The control adds geometry + wear (plus any base/adapter component the machine uses) to form the effective length/radius.

Whichever field you write, the activation rule is the same: the new sum only becomes effective on the next D selection.

Verify variable names against your control: the exact system-variable identifiers for tool geometry, wear and radius (for example the $TC_DP family) and the available fields depend on the control generation, the tool-management option and the software version installed. Confirm the identifiers and their field indices in the programming manual for your specific SINUMERIK version before releasing the program.

Preprocessing and Look-Ahead

The interpreter prepares blocks ahead of the interpolator. If the offset write happens in a block that the interpreter has already passed while preparing downstream motion, the corrected geometry can be applied later than the programmer expects — typically one or more blocks too late.

  1. Place a preprocessing stop (STOPRE) before the read/modify/write sequence so the read returns the value that is actually active at that point in the machining sequence.
  2. Keep the re-selection block (D1) adjacent to the write, with no motion in between.
  3. Do not place the write inside a block that also commands motion — separate data handling from motion so the activation point is unambiguous.
  4. Be aware that each preprocessing stop empties look-ahead and can produce a short dwell and a surface mark if it lands inside a finishing contour. Put the sequence at a safe retract position, not mid-cut.

Verification

  1. Table check: after the write, open the tool offset list on the HMI and confirm the stored field holds the new value. If it does not, the fault is in the write (wrong T/D index, wrong field, write protection, access level), not in the activation.
  2. Active-value check: read back the active compensation after the D1 block and compare it with the stored value. Equal values confirm activation; a difference confirms the offset is still stale.
  3. Position check: log the tool tip position (workpiece coordinate system) before and after the D1 block with no motion programmed between them. A length correction of ΔL must show up as a ΔL shift in the displayed tool tip position on the affected axis.
  4. Cut test: write a deliberate, safe offset change (for example a few hundredths on a length), run a facing pass, and measure. The measured dimension must move by exactly the written amount, in the expected direction.
  5. Repeat test: run the cycle twice in a row without operator intervention. If the correction only applies on the second run, the re-selection is missing or is placed after the motion it should affect.

Design Notes for Automatic Correction Cycles

  • Always write the offset for an explicit T and D number derived from variables, never from a hard-coded number that can drift out of sync with the tool actually in the spindle.
  • Clamp the computed correction: reject or alarm on any correction larger than a defined limit (for example a wear step that exceeds the expected per-part wear). A probe misfire or a chip on the probe stylus otherwise writes a large error straight into the offset table.
  • Accumulate wear rather than overwriting it, if the process expects incremental compensation — read the current wear, add the increment, write the sum.
  • Document in the program header that the D block following the write is functionally required, not cosmetic. It is the first line a later editor deletes while “cleaning up” the cycle.
  • Mirror the same rule in any HMI or PLC-driven write path: the operator interface can update the table, but the machining program still has to re-select the edge before the change acts.

FAQ

Why does my SINUMERIK tool offset not take effect after writing it from the part program?

The write only updates the stored offset table. The control latches length and radius into the active compensation at tool/edge selection, so the value stays inactive until the cutting edge is selected again. Program D1 (or the D number in use) directly after the write.

Is programming D1 enough, or do I have to re-program the T number as well?

If the same tool is still in the spindle and the operation runs on the first cutting edge, D1 alone is sufficient and avoids triggering the tool-change macro. Re-programming T is only needed when the tool itself must change.

Do I need STOPRE around the offset write?

Yes, when look-ahead may have already prepared motion blocks with the old geometry. A preprocessing stop before the read/modify/write sequence keeps the read and the activation point deterministic — place it at a safe retract position, since it empties look-ahead.

Should the correction go into the geometry field or the wear field?

Write cyclic in-process corrections to the wear field so the presetting value in the geometry field stays traceable. The control sums geometry and wear, and either way the new sum only becomes active on the next D selection.

How do I prove the new offset is actually active?

Read back the active compensation after the D block and compare it with the stored table value, then check that the displayed tool tip position shifts by exactly the written correction with no motion programmed in between.

Back to blog