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:
- A real mechanical position error (slip, torsion, brake dragging, ballscrew wind-up).
- A computed error caused by wrong mechanical data (MD 31030 / 31050 / 31060 / 32100 / 32110).
- 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:
- 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.
- 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.
- 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.
- 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.
- 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 |
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.
- 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.
- 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.
- 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:
- Save the active file system to the passive file system and to a USB stick / PG using Start-up → Service → Archive.
- 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.
- 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.
- 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.
Step-by-Step Recovery Procedure
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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).
- Restore the original encoder configuration and resolve the root cause identified in step 7 before re-commissioning the cross-check.
- 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.
- 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
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.