Resolving Siemens 840D Contour Monitoring Fault on Vertical Axis

David Krause17 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 Summary

A SINUMERIK 840D (classic, pre-sl) controlled machine with SIMODRIVE 611 digital drives and a PCU 50 running Windows NT / HMI Advanced reports a Contour monitoring alarm on the vertical spindle-carrying axis. The fault occurs only during rapid traverse; slow jog and positioning moves complete without alarm. The vertical axis is equipped with two measuring systems: the indirect motor encoder (measuring system 1) on the servo motor and a direct glass/linear scale (measuring system 2) on the machine slide. The service display shows a position deviation of up to 20 mm between the two encoders, well in excess of the configured contour tolerance of 2.0 mm.

All of the obvious hardware has already been replaced: NC controller card, SIMODRIVE 611 amplifier module, the servo motor, the glass scale, and the motor encoder cable. The fault appeared immediately after a forced NCU replacement and re-load of the NC and PLC archives. Slow motion is clean, which rules out gross encoder or wiring failures; the deviation grows with velocity, which is the signature of either a mechanical compliance/binding problem, a brake that is not releasing cleanly under load, or — most commonly after a backup restore — a wrong spindle pitch, gear ratio, or polarity entry in the axis machine data.

System Identification

Before any work begins, confirm exactly which SINUMERIK generation is on the floor. The combination PCU 50 + Windows NT + HMI Advanced + SIMODRIVE 611 identifies a classic 840D (6FC5 247-0AAxx / 6FC5 247-0ABxx) with NCU 561.x or 571.x rather than an 840D sl with NCU 710/720 and SINAMICS S120. The contour-monitoring parameters and procedures are nearly identical, but the PLC interface, drive-side MDs, and the file layout of the active and passive file system differ.

Item Observed Confirm with
NCK NCU 561/571 (classic) Service → Version → NCK
HMI HMI Advanced on Windows NT, PCU 50 Service → Version → HMI
Drives SIMODRIVE 611 digital (6SN11xx) Drive configuration display
FW NCK SW 5.x / 6.x typical for this HW Service → Version, record exact build
Backup tooling Active / Passive file system on PCU 50 Start-up → Service → Archive

Capture the build numbers before any work; if a parameter is to be corrected, the original value must be recoverable for the audit trail.

Contour Monitoring – Theory of Operation

The contour monitor is not a stand-alone function. It is the combination of three independent monitoring functions running in the position controller: standstill monitoring, position (following error) monitoring, and contour monitoring proper. All three compare the setpoint position issued by the interpolator against the actual position measured by the active encoder. When the configured tolerance is exceeded, the relevant alarm is raised.

  • MD 36000 POS_LIMIT_SWITCH_SOFT / MD 36010 STOP_LIMIT_SWITCH_SOFT – software limit switches (not the contour monitor).
  • MD 36020 STANDSTILL_POS_TOL – the window inside which the axis is considered at standstill.
  • MD 36030 STANDSTILL_DELAY_TIME – time the actual value must stay inside the window before the "axis at standstill" signal is set.
  • MD 36400 CONTOUR_TOL – tolerance band for the contour monitor; the user has set this to 2.0 mm.

Contour monitoring evaluates the difference between setpoint and actual position on the position-controlled axis. The condition is:

abs(setpoint_position – actual_position) > CONTOUR_TOL → Alarm 25050 "Axis %1 Contour monitoring"

The actual value is taken from whichever encoder is currently active. In a dual-encoder configuration, the contour monitor is implicitly a comparison between the two encoders only if the controller is closed-loop on the motor encoder (measuring system 1) and the linear scale (measuring system 2) is cross-checked via MD 32700 / MD 32710 functions or is the active position feedback after switch-over.

Dual Measuring System Architecture

A vertical axis with both motor encoder and glass scale is normally configured as a dual-encoder system in the 840D. The relevant machine data block is:

MD Name Meaning
MD 30200 NUM_ENCS Number of encoders for the axis (= 2)
MD 30210 CTAB_SET_NO Not contour related, leave at default
MD 30220 ENC_MODULE_NR Drive module / measuring-circuit module assignment
MD 30230 ENC_INPUT_NR Input number of the encoder on the module
MD 30240 ENC_TYPE 1 = incremental square-wave, 4 = absolute EnDat
MD 31020 ENC_RESOL Encoder increments per motor revolution
MD 32100 AX_MOTION_DIR Direction of motion sign
MD 32110 ENC_FEEDBACK_POL Encoder feedback polarity (sign)
MD 34200 ENC_REFP_MODE Referencing mode per encoder

The position displayed in the service screen is computed two ways. The motor-side value uses:

pos_motor = (motor_revs / (MD31060/MD31050)) × MD31030 × sign(AX_MOTION_DIR)

The linear-scale value is read directly from the glass scale, after MD 31070/31080 (drive-encoder ratio, normally 1:1) and MD 32110 sign correction. If the two values diverge by 20 mm in rapid, the discrepancy is either:

  1. A real mechanical position error (slip, torsion, brake dragging, ballscrew wind-up).
  2. A computed error caused by wrong mechanical data (MD 31030 / 31050 / 31060 / 32100 / 32110).
  3. A wrong scaling in the encoder channels, especially if the new NCU was loaded with a slightly different archive or MD file.

Service Display Interpretation

Open Diagnosis → Service Display → Axis for the vertical axis. The relevant fields are:

  • Position setpoint – issued by the interpolator (mm).
  • Position actual, measuring system 1 – motor encoder, scaled by MD 31030/31050/31060.
  • Position actual, measuring system 2 – glass scale, direct.
  • Following error – setpoint minus actual (active encoder).
  • Kv factor (MD 32200) – mm/min per mm of following error; gain of the position loop.

A 20 mm divergence in the two position-actuals is too large to be a real mechanical problem on a ballscrew-driven axis. If the motor and load were really 20 mm apart, the ballscrew, coupling, or ballscrew nut would have to be physically damaged. It is far more likely that the linear scale shows the true position and the motor-side computed position is wrong by a constant ratio or a missing factor. Drive the axis manually to several distinct positions (e.g. 0, 50, 100, 200 mm) and record both actual values. If the divergence grows linearly with position, suspect a wrong spindle pitch or a wrong gear ratio. If the divergence is roughly constant regardless of position, suspect a polarity, a quadrant-error, or a backlash problem.

Root-Cause Matrix

Symptom pattern Most likely cause First check
Deviation scales with position (e.g. 20 mm at 200 mm travel) Wrong leadscrew pitch in MD 31030 Compare MD 31030 with the nameplate pitch on the ballscrew (typically 10, 12, 16, 20, 25, 32, 40 mm)
Deviation constant, equals backlash value Lost motion, loose coupling, worn nut Mechanical backlash measurement with dial indicator on the slide
Deviation appears only in + or only in – direction Wrong sign in MD 32100 or MD 32110 Move axis 10 mm positive, observe which actual leads/lags
Deviation appears only in rapid Mechanical binding, brake not releasing, Kv too low MD 32200 POSCTRL_GAIN, brake voltage, mechanical inspection
Deviation appears only after NCU reload Old/incomplete archive loaded Cross-check active archive with passive backup on PCU 50
Deviation increases with time of operation Thermal growth, friction compensation needed MD 32500 FRICT_COMP_ENABLE, MD 32620 FRICT_COMP_TIME

Mechanical Inspection

Even though all major components have been replaced, mechanical issues persist and are routinely missed. Perform the following on the vertical spindle axis, in this order:

  1. Coupling integrity: with the drive powered down and the motor clamped, attempt to rotate the ballscrew by hand on the motor side of the coupling. There must be zero slippage. A backlash of more than 1-2 arc-minutes in the coupling on a 20 mm pitch ballscrew translates into positional error that grows with traverse distance.
  2. Brake check: the user states the motor "is the only brake." Measure the 24 V at the brake coil with the drive enabled (the brake is held released by a switched 24 V from the 611 module). Voltage must be > 22.8 V (per Siemens 1FK/1FT motor spec) and the brake must release cleanly. If the brake drags, the motor is fighting the load and the motor encoder will lead or lag the glass scale depending on direction.
  3. Ballscrew preload: a worn or under-preloaded ballscrew nut will store energy when loaded axially (the spindle is heavy) and release it during rapid. This produces a non-linear following error that grows with speed. Mount a dial indicator on the spindle housing and measure the slide position while commanding a rapid G0 move; the position should be repeatable to within 0.01 mm.
  4. Scale bracket and glass scale: the bracket must be rigid; any deflection during a rapid move translates to a glass-scale reading that is independent of the load path. With the machine at rest, push the slide 50 N by hand and observe the scale reading.
  5. Belt / gear stage (if any): the user has confirmed a direct coupling. Skip this item.

Machine Data Verification (Axis MDs)

For the vertical axis, read the actual values from the NC and compare them line-by-line against the passive backup, the original commissioning archive, and a sister axis. The three MDs that were specifically flagged by the prior discussion — MD 31030, MD 31050, MD 31060 — are the load-side mechanical scaling data. The complete critical set is:

MD Name Default suspect if wrong
MD 30300 IS_ROT_AX 0 for linear (vertical Z), 1 for rotary (B/C)
MD 30310 ROT_IS_MODULO 0 for Z
MD 31030 LEADSCREW_PITCH Nameplate pitch of the ballscrew, e.g. 16 mm/rev
MD 31050 DRIVE_AX_RATIO_DENOM Load gearbox ratio denominator (= 1 for direct)
MD 31060 DRIVE_AX_RATIO_NUMERA Load gearbox ratio numerator (= 1 for direct)
MD 31070 DRIVE_ENC_RATIO_DENOM Encoder gearbox denominator
MD 31080 DRIVE_ENC_RATIO_NUMERA Encoder gearbox numerator
MD 32100 AX_MOTION_DIR Sign of axis motion (1 or -1)
MD 32110 ENC_FEEDBACK_POL Sign of encoder feedback (1 or -1)
MD 32200 POSCTRL_GAIN Kv in (m/min)/mm. Typical Z axis: 1.0 - 3.0
MD 32620 FRICT_COMP_ENABLE 1 = on, allows friction comp to remove the contour error at direction reversal
MD 32700 MAJEN_ENABLE Cross-check encoder / extended monitoring enable
MD 36400 CONTOUR_TOL Current value 2.0 mm – this is the alarm threshold, not the cause
Critical: MD 36400 is a trip limit, not a parameter to "fix" the alarm. Raising the tolerance to mask the symptom will hide a real fault and is not a correct corrective action. Identify the divergence and fix the cause.

Brake and Clamping

The motor holding brake is integral to the 1FT/1FK servo on this axis. If the brake does not release cleanly under load (vertical axis = full gravity load), the motor cannot reach the setpoint quickly. The motor-side actual will lag the setpoint by an amount that grows with load and speed. This is observed as a divergence between the motor encoder and the glass scale even though the load is genuinely following the glass scale.

  1. With the drive enabled, command 0.5 mm of motion. Listen for the brake click-off. Use a clamp-on ammeter on the brake leads: current should rise to the rated holding-brake release current immediately on enable.
  2. Measure the brake release time on the 611 drive: parameter p1051 or 611-side equivalent on the 611D configuration. A worn brake typically takes 100-300 ms to release, during which the motor is fighting gravity. If release is delayed, the position loop cannot close correctly and the contour monitor trips in rapid.
  3. Confirm there is no second, external brake on the spindle slide (a hydraulic or pneumatic clamp) that is also binding.

NCU Replacement and Archive Reload Considerations

An NCU replacement is not a transparent event. After installing a new NCU 561/571, the procedure is:

  1. Save the active file system to the passive file system and to a USB stick / PG using Start-up → Service → Archive.
  2. Confirm that the PLC project and the NC machine data are both present in the active file system. A common mistake is to load an archive that contains only one of the two.
  3. Verify that the drive configuration (611D commissioning / SIMODRIVE 611 digital configuration tool) was either restored from the archive or re-entered by hand. Drive-side parameters (e.g., motor code, encoder type) live in the 611, not in the NCK MDs.
  4. Re-run the axis referencing for every axis. The referencing MDs (MD 34000..MD 34220) are NCK MDs, but the absolute-encoder offset (if EnDat is used) is captured at first reference. If MD 34100 REFP_SET_POS was not in the archive, the slide will reference to the wrong machine zero — but that would not produce a 20 mm dynamic divergence.

Specifically, the user confirms that an old NC archive was reloaded. If the old archive came from a different NCU 571 hardware revision, the drive-SCOM link, the drive firmware defaults, or even the default MD list (a "default MD file" is loaded when the NCU cannot find a matching MD file in the active FS) may be subtly different. The result can be that the NC has correct axis MDs (31030/31050/31060) but the 611 drive is operating with a different motor code, encoder resolution, or current limit. A drive-side MD mismatch typically shows up at high speed and high acceleration, exactly as described.

Best practice: After an NCU replacement, always perform a fresh drive commissioning on the 611 with the SIMODRIVE 611 commissioning tool, do an axis optimization (circularity test, Kv tuning), and finally save to both the active and passive file systems.

Step-by-Step Recovery Procedure

  1. Capture the as-found state. On the HMI, navigate to Diagnosis → Service Display → Axis and screenshot the Z-axis values. In Start-up → Machine Data, export the full NCK MD list to a text file via Print → Services → Save to file. Save to USB.
  2. Compare NC archives. Using Start-up → Service → Archive, list the active and passive file systems. Compare modification timestamps. If the active file system was modified after the NCU replacement, that is the version the controller is currently running. If only the passive has the post-replacement file, that is the inconsistency to fix.
  3. Verify the three flagged MDs. Read MD 31030, MD 31050, MD 31060 for the Z axis. Compare to the nameplate pitch of the ballscrew (look at the ballscrew itself, the OEM commissioning sheet, or the CAD drawing). For a direct-coupled Z axis, MD 31050 = 1, MD 31060 = 1, MD 31030 = the actual ballscrew pitch.
  4. Verify Kv factor. Read MD 32200 POSCTRL_GAIN. A Kv of 0.5 - 1.0 is typical for a heavy Z axis. If Kv was increased during a previous tuning, the position loop is faster than the mechanical resonance, and the motor encoder will oscillate around the glass-scale position. Lower Kv in 10% steps and re-test.
  5. Drive-side check. Connect a PG to the 611 module (X471 / X472 commissioning port) and read the drive MDs with the SIMODRIVE 611 commissioning tool. Confirm: motor code (matches the motor nameplate), encoder type (incremental / absolute / EnDat), encoder resolution (2048 / 4096 / 8192 inc/rev), current limit, and torque limit. If any of these are wrong, the drive will exhibit a velocity-dependent position error.
  6. Brake test. Power the drive, enable, command 0.5 mm upward. With a clamp-on ammeter on the motor leads, watch the current draw: a fully-loaded vertical Z axis with a dragging brake will pull several amps just to start moving upward. A healthy brake-release will see a brief current spike and then settle at the gravitational holding current of typically 5 - 15% of rated torque.
  7. Single-encoder test. Temporarily set MD 30200 NUM_ENCS = 1 and switch the active encoder to the glass scale (MD 30230 ENC_INPUT_NR set to the second input). Re-reference. If the fault clears in rapid, the issue is in the motor-side path. If the fault persists, the issue is mechanical (load path, scale bracket, or a real defect).
  8. Restore the original encoder configuration and resolve the root cause identified in step 7 before re-commissioning the cross-check.
  9. Re-optimize the axis. Run the Circularity test in the Start-up → Optimization menu. A clean circle at rapid should be repeatable to within the configured CONTOUR_TOL.
  10. Document and back up. Once clean, save the active file system to the passive and to an external USB / CF card. Note the date and the corrective action in the machine logbook.

Verification

After the corrective action, run the following acceptance tests:

  • Service display check: with the axis at rest, the two measuring-system actuals must agree within MD 36020 STANDSTILL_POS_TOL (typically 0.5 - 1.0 mm).
  • Rapid traverse: run G0 moves at 100% rapid override from -200 mm to +200 mm, ten cycles. The contour monitor must not trip and the following error must stay below 0.5 × MD 36400.
  • Circularity test: program a clockwise and a counter-clockwise G2 circle of 100 mm radius at 5000 mm/min. The radial deviation must stay within MD 36400. Typical well-tuned result: 0.02 - 0.05 mm.
  • Long-duration test: run 50 rapid cycles back-to-back. The deviation must not drift (rules out thermal growth and friction).
  • Alarm log: Diagnosis → Alarm Log must show no 25050, 25080, 25040, or 10820 entries for the Z axis during the test.

Related Alarms Reference

Alarm Text Likely cause in this scenario
25050 Axis %1 Contour monitoring The one currently being raised – setpoint/actual divergence on the active encoder.
25080 Axis %1 Position monitoring Following error exceeded MD 36050 STOP_LIMIT_FOLLOWING_ERROR (or the velocity-dependent limit MD 36060 / 36070 family).
25040 Axis %1 Standstill monitoring Axis moved out of MD 36020 window after a delay of MD 36030.
25030 Axis %1 Actual velocity alarm limit MD 36200 AX_VELO_LIMIT or MD 36020 family exceeded – can accompany a contour trip if the drive overshoots.
10820 Axis %1 Reference point not set Will appear if referencing was not completed; the user mentions this is the moment the fault appears, so the referencing state is suspect.
21612 Axis %1 VDI signal change (controller enable) Often raised on a brake that toggles enable unintentionally.

Inline Diagram: Contour Monitoring Decision Flow

Interpolator setpoint Position controller Motor Ballscrew + slide Encoder 1 (motor) Encoder 2 (glass) |setpoint - actual| > MD 36400 ?→ Alarm 25050

Field-Proven Caveats

  • The contour monitor on a classic 840D runs at the IPO cycle (typically 4 - 12 ms). A 20 mm divergence is a lot of mm to accumulate in one IPO cycle. If you observe a continuous divergence of 20 mm in the service display, you are looking at a steady-state disagreement between the two encoders, not a per-cycle spike.
  • If the 20 mm divergence only appears during the rapid move and is zero at standstill, you are looking at a velocity-dependent error: brake drag, Kv mismatch, or drive-side torque limit. If the 20 mm is present even when the axis is at standstill, the error is in the scaling data (MD 31030, 31050, 31060, 32100, 32110) and the alarm is just the controller's way of reporting it.
  • Do not raise MD 36400 above the value documented in the OEM commissioning sheet. The OEM typically sets it tighter than the system could ever drift; if you are forced to raise it, you are masking a real fault.
  • After every NCU replacement, re-validate every axis, not just the one that alarmed. The same archive that mis-scaled Z can mis-scale X or Y silently until a tool change or a high-rapid move trips the next axis.

FAQ

What does the contour monitor actually compare on a dual-encoder 840D axis?

The contour monitor compares the interpolator setpoint with the actual position of the active encoder (set by MD 30230 / MD 32100). In a dual-encoder system, the second encoder is only compared indirectly: if it is the active feedback, the motor encoder's scaled value is the cross-check. A 20 mm divergence between the two displayed actuals in the service screen is therefore either a scaling-data error (wrong MD 31030/31050/31060/32100/32110) or a real mechanical position error.

Why does the fault appear only in rapid and not in jog?

Velocity-dependent divergence on a vertical Z axis is the signature of a brake that is dragging, a position-loop gain (MD 32200 POSCTRL_GAIN) that is too low, a drive torque limit that is being hit, or a soft mechanical compliance (ballscrew preload, coupling backlash) that is being excited by the rapid acceleration. Jog uses 1/10 of the rapid acceleration, so the symptom is hidden.

Can an NCU replacement cause a contour monitoring fault on a previously healthy axis?

Yes. An old or mismatched NC archive can carry over wrong mechanical data, wrong drive configuration, or a wrong default MD file. After an NCU replacement, always re-validate MD 31030/31050/31060, the drive motor code, the encoder resolution, and the Kv factor, and re-run the axis optimization (circularity test).

Is it safe to raise MD 36400 CONTOUR_TOL to clear the alarm?

It will clear the alarm, but it is not a corrective action. MD 36400 is a safety/tolerance limit, not a tuning parameter. Raising it to suppress a 20 mm divergence hides a real fault (mechanical or scaling) and risks a crash. Identify and fix the root cause instead.

How do I tell if the 20 mm divergence is the motor encoder or the glass scale that is wrong?

Move the slide to a known position (e.g. a fixed mechanical stop measured with a dial indicator). The true position is the dial-indicator reading. Compare that against the two encoders. In the overwhelming majority of these cases, the glass scale is correct and the motor-side value is wrong because MD 31030 (ballscrew pitch) or MD 31050/31060 (load gear ratio) is mis-scaled. A common root cause after an NCU reload is the old archive carrying a different pitch than the new NCU's default MD file.

Back to blog