Resolving Part Origin Missing Alarm on Siemens 840D sl

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

Resolving the Siemens 840D sl "Part Origin Missing" Alarm on Morara OD/ID Grinders

1. Problem Overview

On Morara OD/ID cylindrical grinding machines controlled by Siemens SINUMERIK 840D sl, the HMI raises a Part Origin Missing alarm at cycle start after the operator completes the dresser and part origin (datum) take-up sequence. The alarm appears immediately on CYCLE START, blocks the grinding cycle, and persists even after repeated attempts to re-take the part origin. Loading a new NC program (the "NC file") clears the alarm without operator intervention, but the condition returns within 20 to 30 days of production.

Field signature: Alarm is not triggered by sensor failure, dressing cycle fault, or axis positioning error. It is a logical state-mismatch between what the grinding cycle expects (a valid, stored part origin) and what the NC/PLC currently holds in memory.

2. Machine and Control Context

Item Value / Reference
Machine type Morara OD/ID cylindrical grinder (multi-axis, dresser + workpiece spindles)
CNC Siemens SINUMERIK 840D sl (NCU 7x0.3 or higher typical)
HMI SinuTrain / Operate / Morara customized HMI
Programming ShopMill / ShopTurn grinding cycles or Morara-specific cycle screenforms
Persistent data Setpoints, origins, dressing data, tool/work offsets stored in NV RAM or backed up to CF card
PLC S7-300 / S7-1500 (via PLC program of 840D sl integrated PLC)

The "part origin" on a grinder is the machine coordinate where the workpiece reference face, diameter, or shoulder is declared as zero. It is conceptually the same as a G54..G599 work offset on a milling CNC, but on Morara grinding HMIs it is stored as a named setpoint (_SET_, dressing table, or part-program coupled datum). See the Siemens SINUMERIK 840D sl Programming Manual for the underlying work-offset mechanics.

3. What "Part Origin Missing" Actually Means on 840D sl

The alarm is generated by the grinding-cycle screenform (typically a custom Morara cycle based on CYCLE410, CYCLE411, dressing cycles, or shopmill grinding cycles). The cycle evaluates one of the following flags before allowing CYCLE START:

  • SETPartOriginValid / equivalent global NCK bit (cycle-private GUD)
  • An HMI-side marker set when the operator presses Take Part Origin
  • A non-zero entry in the active work-offset ($AA_IM[X] or $P_UIFR frame) at the part-coordinate axis
  • A non-empty entry in the part-program-coupled setpoint table (_N_SETP)

If any of those flags is cleared, zeroed, or uninitialized when the cycle executes its pre-check, the alarm fires. The cycle does not distinguish between "operator never took an origin" and "origin was taken but is now invalid"; it only checks the validity latch.

4. Root Cause Analysis

4.1 Why Loading an NC File Clears the Alarm

Selecting a new NC program in the 840D sl HMI triggers PROGRAM_RESET and a sequence of initialization steps defined in the Morara PLC program and any NC initialization files (_N_INITIAL_INI, _N_USER_DATA_INI, _N_SGUD_DEF). Several of these steps reinitialize cycle-private GUDs and re-validate origin flags. This is why the operator sees the alarm disappear without re-taking the part origin: the alarm-latching bit is in a GUD/UDT that is re-armed by program load, but the underlying part origin coordinate is still present in the persistent frame. The alarm returns later because the underlying root cause was never corrected.

4.2 Why the Alarm Returns Every 20-30 Days

The 20-30 day recurrence is the most diagnostic clue. Common root causes ordered by likelihood:

  1. NV-RAM / SRAM battery degradation. The NCU 7x0.3 uses a lithium backup cell for persistent SRAM (battery type: e.g., 6FC5247-0AA03-0AA0 or successor). When the cell voltage drops below ~2.7 V, persistent GUDs, settable frames, and cycle-private markers lose state on NCK stop/restart or warm restart. See the NCU 7x0 backup battery service note.
  2. CF card / commissioning archive not being written back. If the operator runs an NCK reset or the system performs an automatic boot with NCK startup with default data instead of with saved data, persistent GUDs revert to defaults.
  3. PLC-side marker cleared by a Morara cycle transition. The Morara PLC program uses retentive flags (Merker M areas) for cycle-phase tracking. If the PLC logic inadvertently clears the "part-origin-taken" bit on a specific transition (e.g., end-of-program reset, M30 handler, dressing cycle completion), the next part origin becomes "missing" until something else reinitializes it.
  4. Work-offset G54..G599 number mismatch. Operator takes origin in G54, but the active part program calls G55; G55 has never been initialized, and the cycle validates the currently active offset.
  5. GUD definition mismatch after an HMI software update. After a SinuOperate or Morara HMI update, GUD definitions in _N_SGUD_DEF, _N_MGUD_DEF, _N_UGUD_DEF can be overwritten, changing the structure of cycle-private variables and zeroing them.
  6. Power-loss during SAVE. If the machine was powered down during a SAVE operation to compact NV-RAM, the persistent area can become inconsistent; subsequent boots show a "Reset part origin" prompt that the operator may dismiss.

4.3 Symptom-to-Cause Mapping

Symptom observed Likely root cause
Alarm clears on NC file load, returns in 20-30 days SRAM cell near end of life, or weekly/monthly power cycle clears uncommitted GUDs
Alarm clears on NC file load only after NCK reset Persistent area marked invalid; PLC clears cycle-ready bit on reset
Alarm returns after specific cycle event (e.g., dressing) PLC bit cleared by Morara dressing cycle transition logic
Alarm returns immediately after HMI/NCK software upgrade GUD structure change; definition file overwrite
Origin coordinates lost on every power-down Battery dead, or NV-RAM disabled in commissioning

5. Diagnostic Procedure

Run the following checks in order. Each step confirms or eliminates one root cause.

5.1 Battery / SRAM Health

  1. On the HMI navigate to Diagnostics > Service > NCK Battery / Voltage. Compare against the threshold shown in the Siemens service plan.
  2. Via service access, read:
    $AC_BATTERY_STATE      ; NCU backup battery state
    $NC_USER_DATA_RAM_SIZE_STATUS
    $ON_BLOCK_SEARCH_RUN_MODE
  3. Power down the NCU for 60 seconds, then power back up. Re-check whether the part origin and dressing data are still present.
If persistent data is lost after every controlled power-down, the backup cell has failed. Replace it with the Siemens-approved equivalent (refer to the NCU service document) and reload the commissioning archive.

5.2 GUD / Cycle-Private Variable State

  1. Open the Define GUD screen (MENU SELECT > Parameters > User Variables).
  2. Inspect the cycle-private variables used by the grinding cycle. On Morara machines these are typically prefixed _MOR_, _DRS_, or _PRT_.
  3. Look for variables such as:
    DEF NCK INT _MOR_PART_ORIG_VALID = 0
    DEF NCK REAL _MOR_PART_ORIG_X = 0.0
    DEF NCK REAL _MOR_PART_ORIG_Z = 0.0
    DEF NCK INT _MOR_DRESSER_VALID = 0
  4. Confirm _MOR_PART_ORIG_VALID is reset to 0 after NC file load + PLC reset, then check whether it is set again by the part-origin take-up routine.

5.3 PLC Marker Audit

  1. Connect to the integrated PLC via TIA Portal or the classic Step 7 (whichever the Morara commissioning uses).
  2. Cross-reference search for the flag name used by the alarm message (e.g., DBxxx.DBXy.z "PartOriginTaken").
  3. Watch the flag in online mode. Trigger each phase transition in order: part origin → dressing → cycle start → cycle end (M30). Identify which transition clears the bit.
  4. Cross-check whether the flag is declared in a retentive area. Morara PLC code often uses MB100..MB199 or named DBs marked retentive. If the bit is non-retentive, it will not survive a warm restart and the alarm will reappear.

5.4 Work-Offset Mapping

  1. On the HMI open Work Offsets / Frames (G54..G599 list).
  2. Identify which work offset the active grinding cycle uses.
  3. Confirm that the same work offset was used during the original part-origin take-up. If the part program switched offsets (a common cause after an NC program edit), the "active" offset will be empty.

5.5 Archive Comparison

  1. Save the current commissioning archive to CF card (commissioning → create archive).
  2. Compare against the last known-good archive (date when alarm behavior changed).
  3. Diff the _N_INITIAL_INI, GUD definition files, and PLC program blocks. Any structural change in GUDs is a strong suspect.

6. Resolution Procedures

6.1 Procedure A — Restore and Verify Persistent Data (battery/GUD case)

  1. Replace the NCU backup cell if voltage is below threshold (follow ESD procedures and Siemens NCU replacement guide).
  2. Power up, allow NCK to reach Ready.
  3. Load the most recent commissioning archive: Commissioning → Read Archive → NCK + PLC + Drives.
  4. Verify all GUDs initialized, all settable frames populated, dressing data present.
  5. Manually take part origin in G54 for the current OD grinding program.
  6. Run a dry cycle (no spark-in) to confirm the alarm does not appear.
  7. Run a production part, confirm alarm cleared.

6.2 Procedure B — Make the Part-Origin-Taken Bit Retentive (PLC case)

If the PLC marker clearing on phase transition is the cause:

  1. In the PLC program (Step 7 classic or TIA), locate the network that resets PartOriginTaken.
  2. Move the bit to a retentive area, or condition the reset on a specific event (e.g., M30 + "program restart requested") rather than every cycle end.
  3. Example LADDER change (logical intent, edit in the actual network):
      |   M30_flag     PartOriginTaken      (clear)
      |---| |----------|/|------------------( )--|
      |                                        |
      |   Reset_req      PartOriginTaken      (clear)
      |---| |------------|/|------------------( )--|
    
    ; Retentive flag declaration in DB:
    DATA_BLOCK "Morara_PartData"
      STRUCT
        PartOriginTaken : BOOL;   // RETAIN
        PartOriginX     : REAL;   // RETAIN
        PartOriginZ     : REAL;   // RETAIN
      END_STRUCT;
    END_DATA_BLOCK
  4. Re-check the marker after a controlled warm restart.
Retentivity in TIA Portal: mark the data block "Optimized block" or use the Retain column on each tag. In classic Step 7, set the DB to non-volatile and place the bit in a retentive Merker area (e.g., MB200..MB255).

6.3 Procedure C — Re-anchor GUD Definitions (post-update case)

  1. After an HMI/NCK software update, navigate to Commissioning > GUD Definitions.
  2. Reload the Morara-specific GUD definitions from backup.
  3. Reinitialize cycle-private variables with default values.
  4. Take part origin again.
  5. Confirm via HMI: $NC_USER_DATA_RAM_SIZE_STATUS reports OK.

6.4 Procedure D — Work-Offset Correction (operator-side)

  1. Open the active part program.
  2. Confirm the G5x (or Morara equivalent) command matches the offset used during origin take-up.
  3. Edit if necessary, save, and reload the NC file.

7. Verification Checklist

Check Method Pass criterion
Alarm not raised on CYCLE START Dry cycle run Cycle executes, no alarm in HMI alarm bar
Origin survives power-cycle Power-down NCU 60 s, restart Part origin coordinates identical to pre-power-down
Origin survives warm restart NCK reset via HMI Origin retained, alarm does not appear
Origin survives program change Load alternate NC file, return Origin still valid
PLC marker retentive Online watch in Step 7 / TIA Bit retains value across NCK restart
GUDs present after restart Define GUD screen All Morara-prefixed GUDs populated

8. Preventive Maintenance

  • Battery replacement schedule: Replace the NCU backup cell every 5 years or per Siemens service plan. Log the date in the maintenance record.
  • Weekly: Export a commissioning archive to the CF card. Use the date-stamped file to roll back after any failure.
  • Monthly: Power-cycle the NCU under controlled conditions and verify the part origin is retained. If it is not, escalate to battery/GUD investigation before the next production shift.
  • After any software update: Re-validate the GUD definitions and PLC retentive areas; document in the change log.
  • Operator training: Document the part-origin take-up sequence as a controlled operation in the standard operating procedure. Require a checklist sign-off before cycle start.

9. Edge Cases and Field Notes

  • Multi-channel machines: If the Morara grinder is configured as a multi-channel 840D sl, the part-origin flag is per-channel. Confirm the operator is starting the cycle on the correct channel ($AC_CHANNEL / HMI channel selector).
  • ID vs OD mode: Some Morara OD/ID machines use different cycle screenforms for internal vs external grinding; the part-origin latch may be mode-specific. Confirm the correct screenform is active.
  • After dressing: If the alarm appears immediately after a dressing cycle, the dressing-cycle PLC logic may be overwriting the part-origin bit. Look for shared Merker areas between the dressing and grinding cycles.
  • Encrypted archives: If the commissioning archive is password-encrypted, a forgotten password will force a default-data startup and the alarm will reappear. Document the password in the controlled maintenance file.
  • NCK cold restart: A cold restart (NCK general reset) wipes all persistent GUDs and frames. Reserve this for commissioning only, not for production troubleshooting.

10. Quick Reference: Alarm Family and Related Signals

Alarm / signal Typical cause First action
Part Origin Missing GUD flag cleared, work offset uninitialized, or PLC marker reset Verify GUD _MOR_PART_ORIG_VALID, active G5x, PLC retentive flag
Dresser Origin Missing Same logic for dresser datum Verify _MOR_DRESSER_VALID and dressing offset
Tool Data Missing Tool list / magazine list reset Reload tool list, verify magazine assignment
NCK Battery Warning Battery voltage low Schedule NCU battery replacement
Persistent data invalid Power loss during SAVE or cold restart Reload commissioning archive

11. Cross-References to Official Documentation

Why does loading a new NC file clear the Part Origin Missing alarm on a Siemens 840D sl grinder?

Program selection triggers NC initialization that re-validates cycle-private GUD flags and resets PLC cycle-phase markers. The alarm-latching bit is re-initialized as a side effect, not because the underlying origin data was restored. The root cause (typically SRAM battery, non-retentive PLC flag, or GUD definition mismatch) remains and the alarm returns.

How do I check the NCU backup battery state on an 840D sl?

Open the HMI Diagnostics screen and inspect $AC_BATTERY_STATE, or use Diagnostics > Service > Battery Voltage. Voltage below ~2.7 V indicates the cell must be replaced. Refer to the NCU 7x0 service note for the approved replacement procedure.

What is the difference between a work offset (G54..G599) and the part origin on a Morara grinder?

On 840D sl the work offset is the standard NC concept for shifting the part coordinate system. The Morara HMI exposes it as a named "part origin" entry. The grinding cycle pre-check reads the active work-offset entry; if it has never been written or has been zeroed, the cycle raises Part Origin Missing even if the operator believes an origin exists in another offset.

How can I make the part-origin-taken PLC bit retentive on 840D sl?

In the integrated PLC program (Step 7 or TIA Portal), declare the flag inside a data block and mark the block or the specific tag as Retain. In classic Step 7, place the bit in a retentive Merker area (for example MB200..MB255) and ensure the DB is configured as non-volatile. Verify by performing a warm restart and confirming the bit value is preserved.

After an HMI software update the alarm reappears every shift. What should I check first?

Compare the GUD definition files (_N_SGUD_DEF, _N_MGUD_DEF, _N_UGUD_DEF) against the pre-update archive. A structural change to cycle-private variables (renamed, retyped, or removed) will zero their values and break the part-origin validity latch. Reload the original GUD definitions and reinitialize the cycle variables.

Back to blog