ShopMill Zero Offset and Marker Setup: Fixing Setup Errors

David Krause9 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 Scope

Two ShopMill features generate most "the part is machined in the wrong place" and "the block runs twice / not at all" complaints when an existing program is being modified rather than written from scratch:

  1. Nullpunktverschiebung (zero point offset / work offset) — the part datum does not land where the drawing says it should, or the program moves after a settable offset is edited.
  2. Marke setzen (setting a marker / label) — a named start and end marker delimit a program section so it can be repeated, translated, rotated, mirrored or scaled. Mis-scoped markers repeat the wrong blocks or silently repeat nothing.

Both faults look identical at the machine: the tool cuts air, cuts in the wrong quadrant, or crashes into a clamp. The diagnosis path is different for each, so separate them before touching the program.

Before any test: reduce rapid override, dry-run above the part, and single-block the first pass. A wrong offset combined with a repeat block multiplies the travel error.

How the Offset Chain Resolves

The programmed coordinate is not the machine coordinate. On a SINUMERIK/ShopMill control the position the axis actually reaches is the sum of several independent offset stages. If the part is in the wrong place, one stage in this chain is wrong — not necessarily the one you edited.

Stage Where it is set Typical cause of error
Machine zero / reference Referencing (homing) after power-up Axis not referenced, or referenced against a stop after a collision
Base offset Set by the machine builder or by fixture/pallet data Left over from a previous fixture; invisible if only the settable offset list is checked
Settable zero offset (work offset) Zero offset list in the parameter/offset menu Program calls one offset, the operator probed a different one
Programmable offset (translation in the program) Transformation/translation block in the program sequence Still active from an earlier block because it was never cancelled
Tool length / radius (tool offset) Tool list, tool wear data Length measured against a different reference surface than the datum

Rule: a Z error of exactly one tool length points at tool data, not at the work offset. A constant X/Y shift on every tool points at the work offset or base offset. An error that appears only in part of the program points at a programmable translation or a marker-delimited transformation.

Diagnosing a Zero Offset Fault

  1. Reference all axes and confirm the machine coordinate display is plausible at a known position (e.g. table centre or a hard reference feature).
  2. Open the zero offset list and record every non-zero value, including the base offset and any offsets not used by the current program. Note which offset the program header actually selects — ShopMill program headers select the work offset explicitly.
  3. Zero out the programmable translation mentally: search the program for translation, rotation, mirroring and scaling entries and check whether each one is cancelled before the next machining block.
  4. Re-probe the datum on the actual clamped part, into the same offset number the program header selects. Use the workpiece measuring cycles (edge, corner, hole/boss centre) rather than an eyeballed handwheel touch-off.
  5. Verify by MDA/manual jog: with the offset active, command X0 Y0 (in the workpiece coordinate system) and confirm the spindle centre sits on the intended datum feature. Then command a known point such as X50 Y50 and measure the actual travel.
  6. Check Z separately: with the tool that was used for the touch-off, drive to Z0 in the workpiece system and confirm it touches the reference face. Repeat with a second tool to prove the tool length data is consistent.
Common trap: probing the datum while a programmable translation or a rotation is still active writes a corrupted value into the offset table. Cancel all programmable transformations, or exit to a clean state, before running a measuring cycle.

Symptom-to-cause table

Symptom Most probable cause Check
Whole part shifted a constant amount in X and Y Wrong offset number selected, or base offset non-zero Compare header offset number with the offset that was probed
Part correct, depths all wrong by the same amount Z datum probed on the wrong face (raw stock vs finished face) Re-probe Z on the face the drawing dimensions from
Only one tool is wrong in Z Tool length or wear value for that tool Tool list length and wear offset
Features mirrored or rotated relative to the drawing Transformation still active from a previous section Search for mirroring/rotation entries and their cancellation
Error appears only after the first repeat Marker-delimited block includes an incremental move or a translation Convert positioning inside the repeat to absolute, or place the translation outside the markers
Position drifts after a collision or E-stop Axis lost reference Re-reference all axes, re-verify datum

Markers (Marke setzen) and Program Repetition

A marker is a named label placed in the program sequence. Two markers — a start marker and an end marker — bracket the section you want to act on. The repeat/transformation entry that follows then references those marker names.

Typical use cases: repeat a pocket sequence at several positions, machine the same contour again at a deeper Z, or apply a translation, rotation, mirroring or scaling to a group of blocks.

Correct structure

Program header      (blank size, work offset, safety plane)
  Tool call + position pattern
MARKER: START1      <- start marker, name it descriptively
  Contour / pocket / drill sequence   (absolute positioning only)
MARKER: END1        <- end marker
TRANSLATION  X.. Y.. Z..              (or ROTATION / MIRROR / SCALE)
REPEAT  START1 .. END1   count = n    (references the marker pair)
TRANSLATION  cancel                   (return to the base datum)
  Next operation
END OF PROGRAM

Rules that prevent the usual failures

  • Unique names. Two markers with the same name make the repeat resolve to the first match. Use names tied to the feature (POCKET1, HOLES_L), not M1, M2.
  • Nesting must be strict. Marker pairs may be nested one inside another, but they must not overlap or cross. A crossing pair is the classic cause of "it repeats the wrong blocks".
  • Absolute positioning inside the repeat. An incremental move inside a repeated section accumulates on every pass, so pass 3 lands three increments away. Convert to absolute, or make the step-over deliberate and documented.
  • Tool changes inside a repeat. Repeating a section that contains a tool call re-runs the change every pass. Move the tool call outside the markers where possible.
  • Cancel transformations. A translation, rotation or mirror that is not cancelled remains active for everything that follows, including the next tool. This is the single most common reason a program that ran correctly last month now cuts in the wrong place after an edit.
  • Repeat count semantics. Confirm on your control whether the count is the number of additional passes or the total number of passes. An off-by-one here is a full extra cut. Verify with a dry run before committing to material.
  • Deleting a marker. Deleting one marker of a pair leaves an orphan reference. Delete the repeat entry first, then both markers.

Editing an Existing Program Safely

When optimising a program that already runs, the risk is not the new code — it is the interaction with state left behind by the old code.

  1. Copy the program under a new name before editing. Keep the known-good original untouched until the new version is proven on the machine.
  2. Map the state first: list every work offset selection, every transformation, and every marker pair with its line range. Do this on paper before changing anything.
  3. Change one thing per verification cycle. Edit the offset, or the markers, or the transformation — not all three, then run.
  4. Graphic simulation is the first filter. It catches marker scope errors and uncancelled transformations quickly, but it uses the offsets stored in the control, so it will not catch a datum probed to the wrong face.
  5. Dry run above the part. Raise the datum in Z by a safe amount (via the offset, then restore it), run at reduced feed, and watch the X/Y path.
  6. First cut in single block with feed override low, hand on feed hold, especially at the entry of each repeated pass.
  7. Restore the Z offset and note in the program header what was changed and when.
Restore step is mandatory. A temporarily raised Z offset left in the table is a guaranteed crash on the next job that uses that offset number.

Verification Checklist

Check Pass criterion
All axes referenced Reference symbols present for every axis after power-up
Offset number match Program header offset = offset that was probed
Base offset Zero, or a known and intended fixture value
Datum X/Y Commanding X0 Y0 puts spindle centre on the datum feature
Datum Z Z0 touches the reference face with the touch-off tool and with a second tool
Marker pairs Every start marker has exactly one matching end marker, names unique, no crossing
Transformations Every translation/rotation/mirror/scale has a cancel before the next unrelated operation
Repeat count Simulated pass count equals the intended number of features
Incremental moves None inside a repeated section unless deliberate
First part Measured against drawing at two datum-referenced features, not just one

Documentation to Pull Before You Start

The ShopMill operating and programming documentation supplied with the machine covers zero offset handling, the workpiece measuring cycles, and the marker/repeat and transformation entries in detail, including the exact softkey paths and the repeat-count convention for your control and software version. The machine builder's supplement takes precedence where it differs — base offsets, fixture data and probe configuration are builder-specific. Confirm your control's software version before applying any procedure from a generic manual, because menu structure and the availability of individual transformation entries vary between versions.

Why does my ShopMill part machine in the wrong X/Y position even though I probed the datum?

The offset you probed is probably not the offset the program header selects, or a non-zero base offset is being added on top. Compare the offset number in the program header with the one you wrote, and check the base offset row in the zero offset list.

What does "Marke setzen" do in ShopMill?

It places a named label in the program sequence. A start and end marker bracket a section so a following repeat or transformation entry (translation, rotation, mirroring, scaling) can act on exactly those blocks.

My repeated block drifts further away with every pass. Why?

There is incremental positioning inside the marker-delimited section, so each pass adds to the previous one. Convert the positioning inside the repeat to absolute, or move the translation outside the marker pair.

All my depths are off by the same amount but X and Y are correct. What is wrong?

The Z datum was probed on a different face than the drawing dimensions from — typically raw stock top instead of the finished face. Re-probe Z on the reference face and re-verify with a second tool to rule out a tool length error.

Features are mirrored or rotated compared to the drawing. What should I check first?

A transformation from an earlier section is still active because it was never cancelled. Search the program for mirroring, rotation and scaling entries and confirm each one is cancelled before the next unrelated operation.

Back to blog