Why do you set a work offset at all?
When you switch the machine on and reference the axes, positions are counted in the machine coordinate system. That is the only thing the machine knows: its own zero. But you do not write the program from the machine’s zero — you write it from a point on the part: a corner, a hole centre, a face.
Setting the work offset tells the control “the part’s zero point sits here in machine coordinates”. The control stores that difference as a zero offset and adds it to every coordinate while the program runs.
Get this wrong and a perfectly good program scraps the part — or drives the tool into a clamp. It is the most critical step of setup.
Three terms, kept apart
Machine zero (M)
The machine’s own fixed zero. You cannot change it. After referencing, all axis positions are counted from it.
Reference point (R)
The point at which the control learns where the axes actually are. Until the axes are referenced after power-on, position data is not trustworthy.
Work zero (W)
The point you write the program from. You choose it — a corner of the part, the centre of a bore, the top face. The setting procedure answers exactly one question: where does the work zero sit relative to machine zero?
Zero offsets on SINUMERIK: G54…G57 and G505…G599
Coming from Fanuc you are used to G54–G59. On SINUMERIK the first four are the same, but there are far more of them and the numbering runs differently.
| Command | Data storage frame | Meaning |
|---|---|---|
G500 | $P_UIFR[0] | Deactivates all settable zero offsets |
G54 | $P_UIFR[1] | 1st zero offset |
G55 | $P_UIFR[2] | 2nd zero offset |
G56 | $P_UIFR[3] | 3rd zero offset |
G57 | $P_UIFR[4] | 4th zero offset |
G505 | $P_UIFR[5] | 5th zero offset |
G506…G599 | $P_UIFR[6]…[99] | 6th…99th zero offsets |
So SINUMERIK allows up to 99 settable zero offsets. How many are actually enabled is set by machine data; not all of them will exist on your machine.
The offset currently active is held in $P_IFRAME. On screen you can see which one is in force from the active G code.
Coarse and fine offsets
On most machines the zero offset table shows two columns per axis: coarse and fine.
| Offset | Command | Behaviour |
|---|---|---|
| Coarse offset | CTRANS | An absolute offset. The value you find when setting goes here. |
| Fine offset | CFINE | An additive offset. It is added on top of the coarse value. |
| Total offset = coarse offset + fine offset | ||
In practice: you set the offset, machine the first part, measure it and find 0.03 mm out in Z. Rather than touching the coarse value you type -0.03 into the fine column. Your original setting value stays intact, your correction sits separately, and undoing it means clearing one cell.
MD18600 $MN_MM_FRAME_FINE_TRANS = 1. If your machine has no fine column, that is why — and machine data requires the right access level, so it is not something to change on a whim.Method 1 — touching off (no probe)
Most shops do not have a probe. The classic method is still valid and, done properly, accurate enough.
Finding the edge in X and Y
- Go to the Machine operating area and select JOG.
- Know the diameter of the tool or edge finder in the spindle. You will need its radius in the calculation.
- Bring the tool up to the X edge of the part. Make the last approach on the handwheel at the smallest increment.
- Catch the moment of contact with the paper method or by the edge finder kicking out.
- Read the machine coordinate at that moment. If the work zero is on the edge: reading − tool radius (the sign follows your approach direction).
- Enter that value into the X cell of the offset you are using (say G54) under Parameter → Zero offsets.
- Repeat for Y.
For Z
In Z you touch off with the tool tip itself, and it has to be considered together with the tool length offset. If your tool lengths are measured and entered, touch the top face and enter the value as the Z zero. If they are not entered, your Z zero will be wrong too — which is why the correct order is tool measuring first, work offset second.
Method 2 — measuring in JOG mode with a probe
If the machine has a probe and the measuring cycle option, the job gets faster and, more importantly, the need to align the part parallel to the table disappears — the control works out the angular deviation and writes it into the offset.
Prerequisites
- The measuring cycle options must be configured on the machine.
- The part must be clamped to the table.
- The probe tip must be calibrated, mounted in the spindle and active, with its tool offset enabled.
Measuring options available in JOG
- Measure edge — to find zero in a single axis
- Measure corner — to find X and Y zero together with the angular deviation
- Measure pocket / hole — when the centre is your zero
- Measure spigot / boss
- Align plane
- Calibrate probe tip
Measuring a corner — step by step
The example in the source document measures a corner of the part in the machining plane on a machine without a rotary table.
- Call “Measure corner”. In the window that opens, the vertical softkeys offer “Right-angled corner” and “Any corner”.
- If the corner is not 90°, choose “Any corner”. That option needs four measuring points: P1, P2, P3, P4.
- Using the help graphic, bring the probe tip by hand close to the first measuring point P1.
- Fill in the input screen: which zero offset to write to (G54, G55, G56, G57…), whether the corner is internal or external, and the target value of the reference corner in both axes.
- Press NC START. From the position you set it at, the probe approaches the measuring point automatically, touches, and returns to its starting position.
- If the measurement succeeded the “P1 Stored” softkey becomes active — P1’s coordinates are saved.
- Move by hand to P2 and press NC Start again. Repeat for P3 and P4.
- Once every “Px Stored” softkey is active, a “Calculating” softkey appears. Press it and the corner coordinate (P0) and the offset are calculated.
What do you get?
Measuring a corner in the G17 plane, the control determines:
- the X and Y zero offset from the intersection of the two straight lines,
- the angular deviation of the workpiece coordinate system about the Z axis,
- and writes the values into the zero offset table you selected (e.g. G54).
If the offset you selected is already the active one (G54 showing, for instance), the values take effect immediately.
When to measure in JOG, when in AUTO
| Situation | Method | Why |
|---|---|---|
| One-off part (die and mould work) | Measuring in JOG | Every part is clamped differently; writing a program for it is not worth it. Semi-automatic, under the operator’s control. |
| Several similar parts in the same fixture | Measuring cycles in AUTO | The measurement is written into the program and runs itself on every part. An approximate zero point must be set beforehand. |
| Tolerance monitoring during production | Measuring in AUTO | The result can correct either the zero offset or the tool offset. |
With measuring cycles in automatic mode you can choose between three outcomes: measure the part dimension only, correct the workpiece zero offset, or correct the tool offset. Which one applies is a parameter of the cycle.
Calling and changing the offset from the program
Calling an offset in the program is simple:
Writing the offset value from the program is possible too. The coarse offset is written with CTRANS, the fine offset with CFINE, and the target is the $P_UIFR[<n>] array. But there is one behaviour you have to know:
$P_UIFR[<n>] goes into the data storage; it does not become effective in the channel immediately. To make it effective it has to be recalled with G500 or one of G54…G57 / G505…G599 (or by a channel reset). Not knowing this produces the classic “I changed the value but the machine is still using the old one” — and if the tool is in the material at that moment, the result is expensive.For that reason, changing zero offsets from inside a program is advanced work. If you are starting out, enter offsets from the panel and leave programmatic writing until after you have learned subprograms and pallet applications.
Common mistakes
Starting to set the offset before referencing
Until the axes are referenced the machine coordinate is not trustworthy. The offset you take will not hold.
Ignoring the tool radius
The most expensive mistake in touching off. You end up half a diameter out.
Taking a Z zero before tool lengths are entered
The Z offset works together with the tool length. The order is tool measuring first, work offset second.
Measuring into one offset and running from another
Write to G55 in the cycle and call G54 in the program and the machine runs on the old value. Compare the offset number on the measuring screen with the one in the program.
Forgetting Z after measuring a corner
Corner measurement gives XY and the angle; Z needs a separate edge measurement.
Measuring with an uncalibrated probe
If the probe tip is not calibrated, every measurement is systematically out. Recalibrate whenever the probe is changed or takes a knock.
Putting the real value into the fine offset
The fine column is for corrections. Put your actual setting value there and the confusion starts with the first correction.
Machining without verifying the offset
After setting, send the tool over the work zero and confirm with your own eyes that the workpiece coordinate reads X0 Y0.
Frequently asked questions
How many zero offsets can I use on SINUMERIK?
As commands, G54–G57 and G505–G599 — so up to 99 settable offsets in theory. How many are configured on your machine depends on machine data; the list on screen tells you.
What is the difference between G54 and G505?
Functionally none; both are settable zero offsets. Only the numbering differs: G54→1, G55→2, G56→3, G57→4, G505→5, G506→6 and so on.
I could not clamp the part square to the table. What now?
If you have a probe, use the corner measurement cycle: the control calculates the angular deviation about Z and writes it into the offset, so you do not have to align the part physically. Without a probe you have to dial it in.
I set the offset but the part came out 5 mm off. Why?
Almost always the tool radius. Touch off with a Ø10 tool without subtracting the radius and you are out by exactly 5 mm.
How do I cancel a zero offset?
G500 deactivates all settable zero offsets. Use it at the end of a program or when going to a safe position.
Can I manage without measuring cycles?
Yes — touching off is still common and valid. Measuring cycles buy you speed, repeatability and the angular deviation calculation; without them you can still take a correct zero, it just takes longer and depends more on the operator.
Sources
- Siemens AG — SINUMERIK 840D sl / 828D Job Planning, Programming Manual, 01/2015, document no. 6FC5398-2BP40-5BA2: Section 6.2 Value assignments to frames (the G500 / G54…G57 / G505…G599 to
$P_UIFRmapping table, pp.271–272), Section 6.3 Coarse and fine offsets — CTRANS, CFINE and MD18600 (p.278) - Siemens AG — SINUMERIK Advanced CNC Operation and Programming, 05/2010: Section 2.1 Setting up and measuring workpieces and tools, 2.2 Setting up and measuring the workpiece in JOG (prerequisites, list of measuring cycles), 2.3 Setting up a part on a machine without a rotary table (corner measurement steps, P1–P4, transferring results to the G54 table), 2.5 Measuring tools in JOG