This page draws on two official Siemens sources: the “Extended Functions” function manual (valid for SINUMERIK 840D sl / 840DE sl / 828D, CNC software 4.4 generation) and the “Machine Data and Interface Signals” parameter manual (valid for SINUMERIK 802D sl V1.4 SP7). SINUMERIK 840Di sl is not in the validity list of this generation and appears only in older documentation. The settings described here are not operator-level; they require servo commissioning knowledge and manufacturer access rights.
What This Page Covers
When a circular contour shows bumps at the 12, 3, 6 and 9 o’clock positions, the first reflex is usually to increase the backlash value. That is normally wrong. What breaks the roundness is often not mechanical play but the static friction that holds the axis as it passes through zero speed — and the quadrant error that follows from it.
This page covers:
- How quadrant error forms
- What the Circularity Test does and what it shows
- Commissioning conventional friction compensation (MD32490, MD32500, MD32520, MD32540)
- The acceleration-dependent adaptive characteristic and its B1–B4 ranges (MD32510, MD32530, MD32550, MD32560, MD32570)
- Over-compensation on short moves and MD32580
- Neural Network QEC: the learning and working phases
- The share of circularity error that comes from feedforward, and the use of FFWON / FFWOF
Measuring mechanical play with a dial indicator and entering the MD32450 backlash value is not covered here; that is a separate procedure. The two must not be mixed: backlash is measured and ruled out first, and friction is set up afterwards.
What Is Quadrant Error, and Why at Four Points of the Circle?
When a circle is machined with the X and Y axes, the two axes are constantly moving at different speeds. At four specific points on the circle, one axis is running close to its maximum speed while the other passes through zero speed and reverses.
On the axis passing through zero speed, the force needed to start motion is higher than the force needed to maintain it. Because of this static friction the axis sticks briefly, then jumps as soon as the friction force drops. This timing mismatch between the two axes shows up on the contour in four regions:
- A bump or spike
- A notch or inward dip
- A reversal mark
- A round hole taking on a slight clover shape
The Siemens remedy is to apply an additional speed setpoint pulse at the moment of reversal — with the correct sign and the correct amplitude — so that the axis starts moving on time. That is exactly what friction compensation does. The whole difficulty of the setup lies in choosing the size and the duration of that pulse.
Rule out backlash before you start
The two errors come from different sources and are easy to tell apart:
- Backlash: there is measurable dead motion on the indicator, the error is independent of feedrate, and it appears at every direction reversal.
- Friction / quadrant: there is no significant play on the indicator, the error varies with feedrate and radius, and it appears mainly on circular contours.
Setting up friction compensation before mechanical play has been eliminated means trying to cover two errors with one parameter, and it usually fails.
What Is the Circularity Test?
The Circularity Test is a commissioning tool built into the SINUMERIK control. It records the actual axis positions during a circular motion and plots them against the programmed circle.
How it works
- Two interpolating axes (typically X and Y) traverse a circular path.
- The actual position values of the axes are recorded.
- The measured radius is compared with the programmed radius.
- The quadrant transition points are examined in particular.
- Deviations are plotted graphically at a magnified scale.
- Measurements can be recorded and compared using the Trace system.
- The function is reached from the commissioning area of the HMI.
The value of the test is that it shows the size and location of the error without machining a part. The effect of every change is then followed directly on the same plot.
Problems the test can reveal
- Backlash
- Static friction and quadrant error
- Dynamic mismatch between the X and Y axes
- Unequal axis gains
- Over-compensation
- Insufficient compensation
- Direction-dependent friction
- Servo following error
The plot alone does not identify the cause. The same shape of distortion can come from more than one source; the result must be assessed together with the mechanical condition and the servo data.
Never test at a single condition
A test run at one radius and one feedrate produces a setting that is right for that operating point and poor everywhere else. Repeat the test across a matrix that represents how the machine is actually used:
| Variable | Conditions to try | Why it matters |
|---|---|---|
| Radius | Small / medium / large | Reversals are more frequent and more abrupt at small radii |
| Feedrate | Low / medium / high | Friction dominates at low speed, feedforward error at high speed |
| Acceleration | Several levels within the programmed limit | Shows whether an adaptive characteristic is needed at all |
| Axis pair | X-Y, X-Z, Y-Z | A vertical axis behaves differently because of gravity and its counterbalance |
Stage 1: Commissioning Conventional Friction Compensation
Commissioning has two stages. First a fixed compensation value is found without adaptation; if that is not enough, an acceleration-dependent characteristic is defined in the second stage. On many machines the first stage is sufficient.
1. Select the method
MD32490 $MA_FRICT_COMP_MODE
0 = No friction compensation
1 = Conventional compensation (fixed value or adaptive characteristic)
2 = Characteristic learned by a neural network (QEC)For the conventional method this value is set to 1.
2. Run a reference test with compensation OFF
MD32500 $MA_FRICT_COMP_ENABLE = 0Do not skip this step. The circularity plot taken with compensation off shows the machine’s natural quadrant error and is the reference against which every subsequent change is judged. Save the plot.
3. Switch compensation on, keep adaptation off
MD32500 $MA_FRICT_COMP_ENABLE = 1
MD32510 $MA_FRICT_COMP_ADAPT_ENABLE = 0Keeping adaptation off in the first stage matters: moving two variables at once makes it impossible to see which change fixed what.
4. Set the amplitude and the time constant
MD32520 $MA_FRICT_COMP_CONST_MAX ; amplitude of the compensation pulse
MD32540 $MA_FRICT_COMP_TIME ; time constant of the pulse (seconds)MD32520 is entered in mm/min on linear axes. For rotary axes and spindles the unit varies with the control version (degrees/min or rev/min); this point could not be independently verified, so confirm it in your own parameter manual.
The source document gives the following starting example:
MD32520 = 10 mm/min
MD32540 = 0.008 sThese are not factory settings or recommended values. They are an example of where commissioning can start. Each machine’s own values are found with the circularity test.
5. Read the result off the plot
With a correct setting the quadrant transitions should not stand out and the circle should close cleanly. Which way the setting is off can be read from the shape of the plot:
| What the plot shows | Meaning | Action |
|---|---|---|
| Bump at the quadrant transition persists | Amplitude too low | Increase MD32520 in steps |
| A notch has appeared in the opposite direction | Over-compensation | Reduce MD32520 |
| Error corrects briefly, then returns immediately | Time constant too short | Increase MD32540 |
| The correction keeps acting along the contour | Time constant too long | Reduce MD32540 |
| Good at low feedrate, poor at high feedrate | Not friction — following error | Move to the feedforward section |
| Good at one acceleration, poor at another | A fixed value is not enough | Move to the adaptive characteristic (Stage 2) |
Stage 2: Acceleration-Dependent Adaptive Friction Compensation
On some machines a single fixed compensation value does not suit the whole acceleration range. Typically a larger pulse is needed at low acceleration and a smaller one at high acceleration. In that case adaptation is enabled, making the compensation value a function of acceleration.
MD32510 $MA_FRICT_COMP_ADAPT_ENABLE = 1 ; adaptation on
MD32520 $MA_FRICT_COMP_CONST_MAX ; maximum compensation
MD32530 $MA_FRICT_COMP_CONST_MIN ; minimum compensation
MD32550 $MA_FRICT_COMP_ACCEL1 ; acceleration breakpoint 1
MD32560 $MA_FRICT_COMP_ACCEL2 ; acceleration breakpoint 2
MD32570 $MA_FRICT_COMP_ACCEL3 ; acceleration breakpoint 3The four ranges of the characteristic
The three acceleration breakpoints divide the characteristic into four ranges. In the table below a is the instantaneous axis acceleration:
| Range | Condition | Compensation applied |
|---|---|---|
| B1 | a < MD32550 | Rises from zero towards the maximum |
| B2 | MD32550 ≤ a ≤ MD32560 | Maximum value (MD32520) is applied |
| B3 | MD32560 < a < MD32570 | Falls from maximum to minimum |
| B4 | a ≥ MD32570 | Minimum value (MD32530) is applied |
This curve is not estimated at a desk. Separate circularity tests are run at acceleration levels representing each range and the characteristic is derived from the measurements. A practical order: fix the maximum in the B2 range first, then find the B4 minimum at high acceleration, and set the breakpoints last.
Over-Compensation on Short Moves: MD32580
MD32580 $MA_FRICT_COMP_INC_FACTORThis is the parameter for a problem that is common in the field but little known. The compensation value found with the circularity test is correct for continuous circular motion, but the same pulse is excessive on short positioning moves.
The symptom: once the circle is correct, the axis starts overshooting its target on short moves. Hole positions, small shoulders and fine finishing passes drift out of tolerance.
MD32580 is used to reduce the compensation applied on short moves by a weighting factor, so the overshoot on short positioning is removed without disturbing the setting found for circular contours. A short-move test should always be run after the circularity setup is finished.
Neural Network QEC (MD32490 = 2)
Neural-network-based quadrant error compensation is described in the source document as an option for the SINUMERIK 840D sl. It must not be assumed to be present on every control and every configuration.
The difference from the conventional method: the characteristic curve is not built by hand by the commissioning engineer. During a training phase the system learns the machine’s own behaviour.
Learning phase
The system learns the relationship between the input and output signals and writes the result to permanent user memory. Learning is axis-specific; axes do not influence one another, and the source states that up to four axes can be learned simultaneously.
Critical warning: MD32500 = 1 must not be set before a valid characteristic has been learned. During the learning phase compensation values can be applied independently of this machine data; getting the order wrong puts an empty or half-learned characteristic into service.
Working phase
Additional speed setpoint pulses are applied according to the learned characteristic. The characteristic does not change during normal operation — the machine will not “drift out of adjustment” on its own — but learning must be repeated when the mechanical condition changes (bearings, lubrication, guideways).
Resolution and memory
The resolution of the characteristic is set by the fine quantization and coarse quantization values. The source states that up to 1025 memory locations can be allocated per axis.
| If resolution is increased | Result |
|---|---|
| Memory requirement | Increases |
| Learning time | Gets longer |
| Detail of the characteristic | Increases |
The detailed learning option is recommended only for applications demanding very high accuracy; it lengthens the learning time noticeably. It is usually not needed for standard mould and part machining.
The Share of Circularity Error That Comes From Feedforward
Friction compensation rescues the axis as it passes through zero speed. But if the circle also degrades at high feedrate, the problem is not friction — it is following error: the lag between the commanded and the actual position. Dynamic feedforward reduces that lag.
The distinguishing rule is simple: if the error grows with feedrate, look at feedforward; if it sits at the quadrant points regardless of feedrate, look at friction.
MD32620 $MA_FFW_MODE — values differ by generation
The meaning of this parameter’s values differs between control generations, and mixing them up is a common mistake:
| Value | Classic 840D / 810D | 840D sl generation |
|---|---|---|
| 0 | No feedforward | No feedforward |
| 1 | Speed feedforward | — |
| 2 | Torque feedforward | — |
| 3 | — | Speed feedforward |
| 4 | — | Combined torque/speed feedforward |
Always work from the value list in the parameter manual of your own control. Never copy a value straight from another machine.
Speed feedforward weighting: MD32610
MD32610 $MA_VELO_FFW_WEIGHT
Value range : 0 ... 1
0 = no feedforward
1 = 100% feedforward (the normal value on digital drives)Reducing the value makes motion smoother and reduces overshoot, at the cost of a larger circular contour error. Lowering it because “the machine runs harshly” is the fastest way to create a circularity problem with your own hands. Look for the source of the harshness in the jerk and acceleration settings first.
Equivalent time constants
MD32810 $MA_EQUIV_SPEEDCTRL_TIME ; speed loop equivalent time constant
MD32800 $MA_EQUIV_CURRCTRL_TIME ; current loop equivalent time constant
MD32650 $MA_AX_INERTIA ; axis inertia (for torque feedforward)MD32810 is determined from the speed setpoint step response. For fine adjustment the source recommends the following conditions: traverse the axis at constant speed, with low acceleration and a high feedrate. The System Deviation value on the service screen then reads more steadily and the time constant can be found more accurately.
Torque feedforward (MD32620 = 4 on the 840D sl generation) generates an additional torque setpoint from acceleration and inertia. If the MD32650 inertia value is wrong, the correction works in the wrong direction; this setting is at servo commissioning level.
FFWON and FFWOF: Feedforward Control From the Part Program
FFWON ; switches feedforward control on
FFWOF ; switches feedforward control offFor these commands to work, the activation behaviour must be defined accordingly:
MD32630 $MA_FFW_ACTIVATION_MODEThis machine data determines both whether switching from the program is possible at all, and whether the command takes effect immediately or only when the axis has stopped.
Why it matters: switching feedforward on or off while the axis is moving produces an abrupt setpoint change and harsh motion. Siemens requires the transition to be made at standstill; with some settings the control already delays the transition until the next stop.
The example program from the source
N10 FFWOF
N20 POSA[A]=1000 FA[A]=10000
N30 G4 F1
N40 FFWON
N50 G0 X10 Y10 Z10
N60 WAITP(A)
N70 POSA[A]=1500 FA[A]=10000
N80 WAITP(A)
M30| Block | What it does |
|---|---|
| N10 | Feedforward is switched off |
| N20 | The A axis is sent to a non-synchronised (POSA) positioning move; the program continues without waiting |
| N30 | One-second dwell |
| N40 | Feedforward is switched on |
| N50 | The other axes are sent on a rapid move |
| N60 | Wait for the A axis to finish positioning |
| N70 | The A axis is sent to a new position |
| N80 | Wait for synchronisation again |
This program must not be copied straight into a production program. Axis names, machine configuration, the existence of an A axis and the OEM PLC behaviour all differ from machine to machine. It is given in the source to illustrate the logic of the commands.
Symptoms of an Incorrect Setting
| Symptom | Likely cause | First check |
|---|---|---|
| Circle is fixed but the axis overshoots on short moves | Over-compensation on short moves | MD32580 |
| Notch in the opposite direction at the quadrant transition | Amplitude too high | MD32520 |
| The bump did not reduce at all | Compensation not active, or amplitude far too low | MD32500, MD32520 |
| Good at one acceleration, poor at another | A fixed value is not enough | MD32510 and the adaptive characteristic |
| Correct at low feedrate, circle goes oval at high feedrate | Following error / feedforward | MD32610, MD32620, MD32810 |
| Corners are rounded off | Feedforward insufficient or switched off | MD32620, FFWON state |
| Axis runs harshly, vibrates | Over-compensation or wrong time constant | MD32540, MD32810 |
| QEC was enabled but nothing changed | No valid characteristic has been learned | Learning phase and the MD32500 order |
| The error is different at every measurement | Mechanical looseness | Not compensation — mechanical maintenance |
Who Should Do This Work?
None of the parameters on this page is an operator setting. The MD325xx, MD326xx and MD328xx groups require servo commissioning knowledge and are usually protected behind a manufacturer access level.
The operator’s contribution lies elsewhere and should not be underestimated: recording which axis pair, which radius, which feedrate and which override value the error appears at lets the service engineer start the setup from the right point. Without that information the commissioning engineer has to search for it too.
Parameter Summary
| Parameter | Meaning | When it is used |
|---|---|---|
MD32490 $MA_FRICT_COMP_MODE | Friction compensation method (0/1/2) | Method choice: off, conventional, neural QEC |
MD32500 $MA_FRICT_COMP_ENABLE | Compensation on/off for the axis | Reference test and commissioning |
MD32510 $MA_FRICT_COMP_ADAPT_ENABLE | Acceleration-dependent adaptation on/off | Stage 2, when a fixed value is not enough |
MD32520 $MA_FRICT_COMP_CONST_MAX | Maximum compensation amplitude | The main adjustment parameter |
MD32530 $MA_FRICT_COMP_CONST_MIN | Minimum compensation amplitude | Range B4 of the adaptive characteristic |
MD32540 $MA_FRICT_COMP_TIME | Compensation time constant (s) | Duration of the pulse |
MD32550 / 32560 / 32570 ACCEL1/2/3 | Adaptation acceleration breakpoints | Boundaries of ranges B1–B4 |
MD32580 $MA_FRICT_COMP_INC_FACTOR | Short-move weighting factor | When short positioning moves overshoot |
MD32610 $MA_VELO_FFW_WEIGHT | Speed feedforward weighting (0…1) | Following error adjustment |
MD32620 $MA_FFW_MODE | Feedforward mode (values differ by generation) | Choosing the feedforward type |
MD32630 $MA_FFW_ACTIVATION_MODE | FFWON/FFWOF behaviour | When control from the program is wanted |
MD32650 $MA_AX_INERTIA | Axis inertia | Torque feedforward |
MD32800 $MA_EQUIV_CURRCTRL_TIME | Current loop time constant | Torque feedforward |
MD32810 $MA_EQUIV_SPEEDCTRL_TIME | Speed loop time constant | Speed feedforward |
Safety Warning
- Do not touch these parameters without an archive backup of the NC, PLC and drive data.
- Record the previous state of every value you change.
- Run the Circularity Test with a safe travel range, a safe radius and a controlled feedrate.
- Remove the tool and workpiece from the working area during the test and reduce the rapid override.
- On vertical axes, account for gravity, the counterbalance system and the axis brake.
- Incorrect compensation can enlarge the existing error in the opposite direction instead of reducing it; re-measure after every change.
- Electronic compensation does not repair a mechanical fault. If there is a loose coupling, a worn ball screw or a damaged bearing, carry out mechanical maintenance first.
- If the parameter access level is protected by the manufacturer, do not bypass it.
Disclaimer
This content was prepared to explain how friction compensation, quadrant error compensation and dynamic feedforward control work on Siemens SINUMERIK systems. All numerical values given are examples from the source documentation, not ready-made figures to be entered on any machine. These parameters are at servo commissioning level and must not be changed without proper backups and without reviewing the machine builder’s procedure. The same parameters can behave differently on different SINUMERIK models and software versions; the official manuals of the machine builder and of Siemens always take precedence. Mentor CNC cannot be held responsible for material damage, dimensional errors or workplace accidents resulting from this application.