Resolving Siemens SINUMERIK Alarm 10621 Software Limit Switch

David Krause16 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 Siemens SINUMERIK Alarm 10621: Software Limit Switch Plus

Problem Overview

Alarm 10621 is a position-monitoring alarm issued by the SINUMERIK NCK when a real or commanded axis position crosses the configured positive software limit switch. The alarm text reads Channel %1: Axis %2 rests on software limit switch %3%4 and is raised when the NCK detects that the axis is positioned on (or beyond) the configured plus-side software limit before referencing completes, after referencing is invalidated, or when the absolute encoder reference has been lost.

The alarm frequently appears after the following field events:

  • Replacement of a motor or encoder on a linear or rotary axis without re-establishing the absolute encoder reference.
  • Removal and refit of a slave axis motor that shares the same machine coordinate system as the parked axis.
  • Loss of the reference point following power-down with no battery-backed encoder, or following an NCK reset that invalidates referencing state.
  • Incorrect values in machine data MD36100 $MA_POS_LIMIT_MINUS and MD36110 $MA_POS_LIMIT_PLUS.
  • Loss of MD34210 $MA_ENC_REFP_STATE (absolute encoder status) after encoder or motor swap.
Safety notice: Alarm 10621 is a position-monitoring alarm, not a hardware E-stop. The drive remains enabled in JOG only on the side opposite the limit until the referencing state is restored. Never bypass software limit switches by writing arbitrary values without first verifying the actual mechanical position with an external measurement.

Alarm 10621 Definition and Format

The official Siemens alarm description for 10621 is documented in the SINUMERIK 840D sl / SINAMICS alarms documentation:

10621 - Channel %1: Axis %2 rests on software limit switch %3%4
The axis of the software limit switch is only output if different from the traversing axis. Alarm display showing cause of alarm disappears.

Alarm parameters:

Parameter Meaning
%1 Channel number
%2 Axis name (for example Z, X1, SP)
%3 Plus or minus identifier (+ or -)
%4 Number of the software limit switch pair (1 or 2)

Reference: Siemens Industry Online Support - Alarm 10621 documentation.

Root Cause Analysis

Three root causes account for almost every occurrence of 10621 in the field:

  1. Software limit switch value is geometrically wrong. MD36110 $MA_POS_LIMIT_PLUS is set inside the working envelope, or its sign is inverted relative to the actual machine zero. The NCK raises 10621 the moment the axis position enters the forbidden range.
  2. Absolute encoder reference is invalidated. Following a motor swap, encoder replacement, or encoder cable rework, the NCK sees a non-referenced axis. While the axis is in the not referenced state, the actual machine position is not known, and the position controller clamps the axis at the configured software limit. This is the dominant cause when 10621 is raised before any referencing movement.
  3. Mechanical drift past the configured limit. A linear glass scale or rotary encoder has slipped (for example after a collision), so the reported position is offset from the true mechanical position. The reported value is beyond the limit even though the carriage is inside the working envelope.

field reports in the source material combines cause 1 and cause 2: the X axis motor was removed on Siemens advice for a separate drive alarm, the power section was replaced, and on power-up the Z axis triggered 10621 before any referencing movement was performed. The X axis motor swap invalidated the absolute encoder referencing state on the affected axes, and the Z axis reference state was already marginal, so the NCK clamped the axis at MD36110 the moment the drive was enabled.

Software Limit Switch Machine Data

The SINUMERIK NCK uses four machine data words to define the first and second pair of software limit switches per axis. All values are in the configured measuring system (mm or inches for linear axes; degrees for rotary axes).

Machine Data Symbolic name Function Default / Range
MD36100 $MA_POS_LIMIT_MINUS 1st software limit switch, minus direction -1.0E8 to +1.0E8 (machine units)
MD36110 $MA_POS_LIMIT_PLUS 1st software limit switch, plus direction -1.0E8 to +1.0E8 (machine units)
MD36120 $MA_POS_LIMIT_MINUS2 2nd software limit switch, minus direction (set MD36000 $MA_STOP_LIMIT_COARSE to activate) -1.0E8 to +1.0E8
MD36130 $MA_POS_LIMIT_PLUS2 2nd software limit switch, plus direction -1.0E8 to +1.0E8
MD36000 $MA_STOP_LIMIT_COARSE Selection of which limit pair is active 0 = 1st pair, 1 = 2nd pair

The position monitor compares the actual-value (or commanded-value in some configurations) against these limits. The condition that triggers 10621 is:

actual_position > MD36110 → Alarm 10621 (limit +)

actual_position < MD36100 → Alarm 10621 (limit -)

For linear axes, MD36110 must always be greater than MD36100; otherwise the NCK will treat the axis as permanently clamped. For modulo rotary axes, the limit check is wrapped to the configured modulo range.

Referencing Machine Data

Referencing state is governed by the encoder referencing machine data. The fields used by the field recovery procedure are summarised below.

Machine Data Symbolic name Function
MD34100 $MA_REFP_SET_POS[idx] Reference point position for encoder index. With multiple encoders, the index selects encoder 1 or encoder 2.
MD34200 $MA_ENC_REFP_MODE[idx] Referencing mode: 0 = passive, 1 = with zero marker, 2 = with distance-coded reference marks, 3 = with absolute encoder (automatic on power-up), 4 = absolute encoder top-up on power-up, 5 = absolute encoder top-up on next referencing cycle.
MD34210 $MA_ENC_REFP_STATE[idx] Absolute encoder referencing state. 0 = not referenced / unknown, 1 = referenced, 2 = referenced and parked (lost after encoder removal).
MD34090 $MA_REFP_MOVE_DIST[idx] Traversing distance for the reference point approach.
MD34080 $MA_REFP_MOVE_DIST_CORR[idx] Reference point offset / correction distance.
MD34310 $MA_ENC_MARKER_DIST[idx] Distance between two zero markers (for distance-coded scales).
MD34220 $MA_ENC_ABS_TURNS_MODULO[idx] Number of absolute encoder turns within one mechanical revolution (rotary absolute encoders).

The encoder index is appended as [0] for the first encoder and [1] for the second encoder on the axis. On a single-encoder axis, only [0] is used.

Pre-Diagnostic Checklist

Before changing any value, verify the following on the SINUMERIK operator panel (HMI) or in the MMC / HMI Advanced parameter screen:

  1. Manufacturer password active. Switch to manufacturer access level. On SINUMERIK Operate this is the password for the manufacturer level, set under Commissioning > Password. The standard passwords are service-level on most machines; manufacturer level is required to write MD36110, MD36100, and MD34210.
  2. All axis groups are visible. With manufacturer access, scroll the parameter tree to the relevant axis (for example /Nck/MachineData/Axes/Z). Older HMI Advanced builds hide MD34210 and MD34100[1] when access level is too low.
  3. Encoder type confirmation. From the axis display or Commissioning > Axes screen, identify whether each axis has an incremental or absolute encoder. For absolute encoders, MD34200 $MA_ENC_REFP_MODE[0] = 3 or 4.
  4. Mechanical position confirmation. Visually verify the carriage position with a dial gauge or magnetic scale and write the value down. This is the ground truth against which the NCK value will be compared.

Diagnostic Procedure

Follow the steps in order. Each step produces a documented observation that can be used later as evidence in the machine log.

  1. Record the alarm channel and axis. From the alarm line on the HMI: 10621 Channel 1 Axis Z rests on software limit switch +. Confirm that the suffix is + (plus side) and not -; this determines which of MD36100 or MD36110 is the suspect value.
  2. Read the configured limits. Display MD36100 $MA_POS_LIMIT_MINUS[Z] and MD36110 $MA_POS_LIMIT_PLUS[Z]. Compare them with the machine drawings. For the field case, the typical value is something like MD36100[Z] = -500.0, MD36110[Z] = 700.0 (mm).
  3. Read the actual position. On the axis monitor screen, read the actual position of the Z axis. If the value is greater than MD36110[Z], then 10621 is geometrically correct: either the limit is wrong, the position is wrong, or both.
  4. Read the referencing state. Open MD34210 $MA_ENC_REFP_STATE[Z, 0]. The values and their meaning are:\li>
    • 0: not referenced, or absolute reference lost.
    • 1: referenced.
    • 2: referenced, but the encoder has been removed (parked state). Power-down with battery-backup retained returns to 1; encoder or motor replacement sets it back to 0.
  5. Compare encoder actual to mechanical position. If the encoder actual value does not match the dial gauge to within the manufacturer tolerance, the encoder scale has slipped. Mechanical service is required before any electrical procedure.

Recovery Procedure (Parked-Axis Method)

This is the field-proven recovery sequence for the exact symptom in the source material: an axis that cannot move because 10621 is raised before referencing, where the operator cannot identify the reference point, and where the absolute encoder reference has been lost. The sequence temporarily disables the limit clamp so that the axis can be jogged to a known mechanical reference position.

Warning: The temporary limit values written in step 1 are deliberately outside the working envelope. Ensure that no collision is possible in the direction of jog before writing the value. A second person should be present at the machine ready to remove the enable.
  1. Temporarily open the limits. On the affected axis (Z in the source case), write the temporary values:
    MD36100 $MA_POS_LIMIT_MINUS[Z] = -9999999.0
    MD36110 $MA_POS_LIMIT_PLUS[Z] = 9999999.0
    The exact magnitude is not critical; what matters is that the limits are well outside the working envelope and that MD36110 > MD36100.
  2. Clear the absolute encoder state. Set MD34210 $MA_ENC_REFP_STATE[Z, 0] = 0. This tells the NCK that the absolute reference is unknown. On the next NCK reset (or with Set MD active if the version supports it) the axis is treated as not referenced and JOG motion is allowed in the no-reference state once the limit clamp is open.
  3. Jog the axis to a known reference point. With the limits open, jog the Z axis in JOG mode (or JOG-INC for fine approach) to a known reference position. On lathes and machining centres without a documentation record, use the most recently observable tool-change reference (a marked scribe line on the column, or a mechanical stop that can be measured). Record the value shown on the dial gauge.
  4. Write the reference position to MD34100. Set MD34100 $MA_REFP_SET_POS[Z, 0] to the machine coordinate value of the reference point. For example, if the Z axis is at the machine zero when the carriage touches the Z-positive reference block: MD34100[Z, 0] = 0.0.
  5. Execute the referencing cycle in REF mode. On the HMI, switch the axis to REF mode. Press the axis-traverse key + or - in the direction that the configured reference-cam logic expects (see MD34010 $MA_REFP_CAM_DIR_IS_MINUS). The NCK will set the referencing bit and the encoder reference state.
  6. Verify MD34210 transitioned to 2. After the referencing cycle completes, MD34210 $MA_ENC_REFP_STATE[Z, 0] should read 2. State 2 means the axis has been re-referenced by an active referencing cycle; on the next NCK reset the value transitions to 1 (referenced). If the value remains at 0, the referencing cam, zero marker, or absolute value has not been found; consult MD34200 and the encoder wiring.
  7. Restore the original software limits. Write back the original values for MD36100[Z] and MD36110[Z] taken from the backup. Trigger NCK reset if required.
  8. Save the backup image. From the HMI, perform Commissioning > Series commissioning > Save, or copy the machine data to a CF card via the manufacturer service menu.

Referencing Procedure (Standard REF Cycle)

Once the limits are restored and the absolute state is corrected, the standard SINUMERIK referencing cycle is used for normal operation. The machine data that the cycle uses are:

Machine Data Function
MD34010 $MA_REFP_CAM_DIR_IS_MINUS Direction the axis approaches the reference cam. 0 = positive, 1 = negative.
MD34020 $MA_REFP_VELO_SEARCH_CAM Velocity for the search of the reference cam.
MD34040 $MA_REFP_VELO_SEARCH_MARKER Velocity for the search of the zero marker.
MD34050 $MA_REFP_SEARCH_MARKER_REVERSE Direction reversal after cam drop for zero-marker search.
MD34060 $MA_REFP_MAX_MARKER_DIST Maximum distance between two zero markers (distance-coded scales).
MD34070 $MA_REFP_VELO_POS Velocity for the final approach to the reference position.
MD34080 $MA_REFP_MOVE_DIST_CORR Offset distance between zero marker and reference point.
MD34090 $MA_REFP_MOVE_DIST Maximum distance to search for the reference cam before alarm 20000 / 21821.

On absolute encoders with MD34200 = 3, the NCK automatically completes the referencing state on power-up without any physical axis motion, provided the absolute value read from the encoder matches the encoder-internal offset stored at the time of last referencing. This is the reason MD34210 is critical: a value of 0 forces the cycle to require motion-based referencing.

Verification and Functional Test

  1. Alarm 10621 cleared. From the alarm bar on the HMI, confirm that 10621 is no longer present for any axis. Other alarms (for example 17000 / 25050 axis-not-referenced) are expected until referencing completes and are handled separately.
  2. MD34210 = 1. After the first NCK reset following the successful reference cycle, MD34210 $MA_ENC_REFP_STATE[Z, 0] = 1.
  3. JOG motion unrestricted. In JOG mode, traverse the Z axis in both + and - directions at low feed. The axis must stop at the restored MD36100 and MD36110 values, not at the temporary 9999999 limits.
  4. Software limit response. With feed override at 10%, command the axis past MD36110[Z] using the override travel-limit key. The drive must ramp down with the configured braking ramp (see MD36010 $MA_STOP_MODE_LIMIT_PLUS) and stop at the limit without triggering 10621 during approach. 10621 should appear only if the axis is forced past the limit while disabled.
  5. Repeatability check. Issue a G75 or equivalent fixed-stop cycle on the Z axis. The reported position at the same physical stop must repeat within the configured encoder resolution.
  6. Backup verification. From the service menu, run a Compare MD between the live machine data and the saved series-commissioning file. All MD36100 / MD36110 / MD34210 values must match exactly.

Edge Cases and Field-Proven Caveats

  • Modulo rotary axes. For spindles and modulo rotary axes, MD36100 and MD36110 are interpreted within the configured modulo range. A value of MD36110 = 360 on a modulo-360 axis is treated as 0, not as a forbidden zone. This is a frequent source of 10621 on spindle recovery.
  • Drive-side software limit. The SINAMICS drive also enforces position limits via p2540 / p2541. If the NCK limit is open but the drive-side limit is still set tight, the drive will refuse to enable motion and the NCK will report 10621 even though the position is geometrically inside the working envelope. Both layers must be moved together.
  • Position offset MD32750 $MA_ENC_RESOL. If MD32750 (encoder resolution) or MD32760 $MA_ENC_STEP_PULSE has been changed after referencing, the actual-value scaling is wrong and 10621 can appear at unexpected positions. Re-reference and re-enter MD34100.
  • Encoder park state (MD34210 = 2). State 2 means the encoder was disconnected under power. The reference point itself is retained on the encoder side (EnDat, SSI), but the NCK treats the axis as not-referenced until the next referencing cycle. The recovery procedure in the previous section applies.
  • Multiple encoders per axis. For an axis with two encoders (for example load-side and motor-side), the second encoder is selected with index [1]. The recovery must be repeated for the second encoder, and the active encoder is selected by MD30200 $MA_ENC_NUM_MAX / MD30220 $MA_ENC_MODULE_NR.
  • HMI Advanced vs. HMI Operate parameter visibility. On legacy MMC103 / HMI Advanced, MD34210 is only displayed at manufacturer level. On HMI Operate it is visible under Commissioning > Axes > References, but only with the manufacturer password. If the operator cannot see MD34210, this is the first thing to check.
  • PLC interface reset. Some user programs gate NCK referencing with a PLC flag (for example DB31.DBX0.4 / 0.5 axis-specific interface bits). If the PLC drops the controller-enable while the NCK still expects to complete the referencing cycle, 10621 can be raised on the next start. Cross-check the PLC program after the recovery.

Preventive Measures and Best Practices

  • Maintain a written or electronic machine-data backup before any motor, encoder, or drive replacement. Use the Series commissioning archive function with a unique timestamp per change.
  • After any motor or encoder swap, always read MD34210 for every axis on the same machine coordinate system. A motor swap on one axis can invalidate the absolute encoder reference on neighbouring axes if the encoder battery back-up is shared.
  • Adopt a label policy on every encoder cable and connector. Encoder pin-out swaps (A+/A-, B+/B-, R+/R-) are a common root cause of misinterpreted absolute position values and downstream 10621.
  • Run the SINUMERIK Trace function on the actual-value channel during commissioning. A 5-second trace captures the position trajectory and clearly shows whether the axis actually approaches or overshoots the limit.
  • For machines without a known reference point on the mechanical drawing, document the reference position during the first commissioning. Add the value to the machine nameplate and to the maintenance log.
  • Schedule an annual referencing-cycle check. For absolute encoders, this verifies that the battery back-up is still functional before a power-down event exposes a latent 10621 condition.

Related Alarms and How They Differ

Alarm Meaning Relation to 10621
10620 Channel %1: Axis %2 at software limit switch %3%4 Raised while traversing toward the limit. 10621 is the post-stop equivalent.
10622 Channel %1: Axis %2 traversed software limit switch %3%4 Raised when the actual position is past the limit but motion is still commanded.
17000 Channel %1: Axis %2 stop Generic axis-stop alarm, often accompanies 10621.
20000 Channel %1: Axis %2 referencing cam not found Raised during active referencing cycle; can precede 10621 if cam is misconfigured.
21821 Channel %1: Axis %2 reference point not reached Referencing cycle completed but the reference position could not be set.
25050 Channel %1: Axis %2 contour monitoring Follow-on alarm when the axis is commanded past a limit under interpolation.
300500 SINAMICS axis %1: position limit reached Drive-side equivalent of 10621. Indicates p2540 / p2541 misconfiguration.

FAQ

What does Siemens SINUMERIK alarm 10621 mean?

Alarm 10621 means the NCK has detected the axis actual position on the configured software limit switch. The standard format is Channel %1: Axis %2 rests on software limit switch %3%4, where %3 is + or - and %4 identifies which of the two software limit pairs is active. See the official Siemens alarm 10621 documentation.

Which machine data define the software limit switches on a SINUMERIK axis?

The first software limit pair is MD36100 $MA_POS_LIMIT_MINUS and MD36110 $MA_POS_LIMIT_PLUS. The optional second pair is MD36120 and MD36130, selected by MD36000 $MA_STOP_LIMIT_COARSE = 1. Values are in the configured measuring system, and on linear axes MD36110 must be greater than MD36100.

How do I clear alarm 10621 after a motor or encoder replacement?

Use the parked-axis recovery sequence: temporarily open the limits by setting MD36110 to a very large value such as 9999999.0 and MD36100 to -9999999.0, set MD34210 $MA_ENC_REFP_STATE to 0, jog the axis to a known mechanical reference position, write that value to MD34100 $MA_REFP_SET_POS, run a REF-mode referencing cycle, confirm MD34210 transitions to 2 then 1, then restore the original MD36100 and MD36110 values.

Why does alarm 10621 appear before any referencing has been performed?

When MD34210 $MA_ENC_REFP_STATE = 0 the axis is treated as not referenced. The NCK cannot confirm the actual machine position, so it clamps the axis at the configured software limit as soon as the drive is enabled. The remedy is either to restore the absolute encoder reference (MD34210 transitions to 1 automatically on EnDat / SSI encoders if the encoder was not removed) or to run an active referencing cycle after clearing MD34210 to 0.

Is referencing compulsory after swapping a motor on a different axis?

Yes, when the affected axis uses an absolute encoder that lost its battery-backed position reference (MD34210 = 0 or 2), or when the NCK was reset and the axis machine data changed. Removing and refitting a motor on axis X can in practice disturb encoder cabling on axis Z if the cables share a connector block, so the Z axis reference state must always be re-verified after any neighbouring motor work.

Why can I not see MD34210 in the SINUMERIK HMI parameter display?

MD34210 $MA_ENC_REFP_STATE is a manufacturer-level machine data and is hidden unless the manufacturer password has been entered. Switch the access level to manufacturer under Commissioning > Password, then re-open the axis parameter tree; the data will appear.

Can alarm 10621 be raised by the SINAMICS drive instead of the NCK?

Yes. The SINAMICS drive enforces its own software position limits via parameters p2540 (negative) and p2541 (positive). If those are configured tighter than the NCK's MD36100 / MD36110, the drive will refuse motion and the NCK will then raise 10621. Both layers must be aligned before commissioning.

Back to blog