Sinumerik 550010 Spindle Coupling Error: COUPDEF COARSE Fix

David Krause21 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 Overview

During a mill-turn operation in which the main spindle (S1) and the subspindle (S2) are electronically synchronized and a live center is pressed into the end of the workpiece between them, the controller raises alarm 1016 Channel 1 axis C2 system error 550010 deep inside a finishing pass that runs under G96 (constant surface speed). The roughing profile completes cleanly, but the finishing pass stops at or near block N12650 G1 Z-5.7187 F0.005 with the alarm on the HMI. The block number reported in the alarm is not always the true fault location; the part-program counter simply halts at the first block whose release requires a synchronism condition that the slave can no longer satisfy.

The fault is a classic Sinumerik 840D sl mill-turn coupling defect: G96 keeps moving the master spindle's setpoint speed as the X (diameter) changes, the setpoint-based fine-synchronism check is too tight to absorb that continuous motion through a soft mechanical coupling (a live center), and the controller raises 550010 (setpoint-linkage, following error too large). The fix is to relax the block-change criterion from "IPOSTOP" (the source uses the shortened form "IPO") to "COARSE" (the source uses "COURSE") in the COUPDEF call so the part program continues once coarse synchronism is reached and the fine window is no longer a hard requirement at every block boundary.

Alarm 1016 / 550010 Decoded

On a Sinumerik Operate or HMI Advanced alarm page the message is composed of two layers:

  • 1016 — "Channel %1 axis %2 system error %3." This is the channel/axis wrapper that the controller uses to forward a lower-level alarm into the channel context. It carries the channel number (here, 1), the axis identifier (here, C2), and the actual alarm number (here, 550010).
  • 550010 — "Setpoint linkage, fine/coarse: following error too large." The exact wording varies by SW version, but the meaning is constant: the actual position or actual velocity of the following spindle differs from the leading spindle's setpoint by more than the configured synchronism tolerance. The threshold that is violated is reported in the alarm clear criteria or in the diagnostic screen as either FINE_TOL or COARSE_TOL.
  • C2 — The axis identifier of the following spindle. On a mill-turn with a subspindle, the second spindle is the C-axis-named C2 when operated in C-axis mode. On pure turning machines, C2 is the second spindle and the alarm targets the spindle axis.
Read the alarm clearly. The block number shown in the alarm line (N12650 in this case) is the block the controller is trying to release when the check fails. The actual loss of synchronism often happens one or more blocks earlier, when a speed setpoint jump (G96 ramp, spindle ramp-out) was not yet settled.

Operating Conditions and Root Cause

All of the following must be true for 550010 to fire in this configuration:

  1. Two spindles are electronically coupled with COUPDEF / COUPON / COUPOF active and a "DV" setpoint linkage selected.
  2. Block change is configured to "IPOSTOP" (the default for many configurations) or to "FINE", both of which force the next block to wait for setpoint-based fine synchronism.
  3. The master spindle is commanded in G96 (constant surface speed), so its setpoint speed is recomputed every IPO cycle from the current programmed X diameter. With a moving tool on a tapered or multi-diameter profile, the speed setpoint is never static.
  4. The mechanical coupling is "soft" — for example, a live center pressed into the end of the bar between the two spindles allows micro-slip rather than rigid zero-backlash transmission.

If any one of those conditions is removed (e.g. the part program is changed to G97 on the master, the block change is set to "COARSE", the center is rigid, or the synchronism tolerance is widened), the alarm does not fire.

With G96 S500 M04 on the master and the X position moving along a tapered or multi-diameter profile, the master spindle's setpoint speed is recomputed every IPO cycle from the formula:

n_setpoint = (V_c × 1000) / (π × D)

where V_c is the programmed cutting speed in m/min and D is the current X (diameter) in mm. As D shrinks on a finishing pass approaching the smallest diameter of the profile, n_setpoint rises rapidly. The slave spindle has to track this moving target.

With the slave mechanically coupled through a live center (a slip-fit contact point rather than a rigid grip), there is a small but real angular compliance between the two spindles. Each time the master setpoint jumps — for example at a G1 → G2 transition, at the start of a new finishing pass, or at a programmed feed-hold/resume — the slave has to catch up. If the catch-up transient is longer than the IPO clock in which the IPOSTOP check is evaluated, the actual deviation briefly exceeds the FINE window (MD37210 = 0.0196 in / MD37230 = 1.181 in/min), and 550010 fires.

This matches the operator's observation: a feed hold between the roughing and finishing cycles "let the spindles get up to speed" and the program then ran almost to the end. During the hold, the IPOSTOP synchronism check had time to settle inside the FINE window, so the next block released cleanly. The moment the finishing pass started moving X under G96, the slave transiently fell out of FINE again, and 550010 fired — but this time at the end of the roughing pass rather than at the start of the finishing pass. Hence the "the line at the time of the error isn't always where the error is" behavior that initially made the fault look like a profile problem.

COUPDEF Syntax and Block-Change Criteria

The COUPDEF command programs the static definition of an electronic spindle coupling. Syntax:

COUPDEF (FS, LS, NR, ZV, BlockChangeCriteria, CouplingType)
Argument Meaning Typical Value
FS Following spindle (the slave) S2
LS Leading spindle (the master) S1
NR Numerator of the transmission ratio (FS rotates NR times per LS revolution) -1 (opposite direction)
ZV Denominator of the transmission ratio 1 (1:1 in opposite direction)
BlockChangeCriteria When the next block may be released "IPOSTOP" (default) / "COARSE" / "FINE" / "NOC"
CouplingType How setpoint and actual values are derived "DV" (default) / "AV" / "VV"

For a mill-turn with the main spindle driving the subspindle at 1:1 in opposite rotation, the typical call is:

COUPDEF (S2, S1, -1, 1, "IPOSTOP", "DV")

The configuration flagged in this fault was identical except that the source reports the fifth argument as "IPO" rather than the full "IPOSTOP" form. Both forms are accepted by current Sinumerik 840D sl controllers as the IPOSTOP block-change criterion; "IPO" is the colloquial short form used in many Siemens programming examples.

COUPDEF (S2, S1, -1, 1, "IPO", "DV")

Replacing the fifth argument with "COARSE" (the source uses "COURSE") resolved the fault:

COUPDEF (S2, S1, -1, 1, "COARSE", "DV")

The full Siemens reference for the COUPDEF syntax, the four tolerance machine data, and the block-change options is the Siemens Sinumerik 840D sl Function Manual — Synchronous Spindles (FB2).

Block Change Criteria Compared

Argument Behavior When to Use
"NOC" Block change is immediate. The next block is released the moment the coupling is requested. No synchronism check is performed at the block boundary. When the spindles are already turning together before the coupling is established and no synchronism quality is required (e.g. a coupled pick-off that is already in lock-step). Not appropriate when G96 changes the speed during the operation.
"FINE" Block change waits until the position and velocity deviation between the spindles is inside the FINE window (MD37210 / MD37230). This is the tightest check. Rigid mechanical coupling, part rigidly held between chucks, no live center, master typically in G97.
"COARSE" Block change waits until the deviation is inside the COARSE window (MD37200 / MD37220). The window is roughly 2× the FINE window for both position and velocity. Soft mechanical coupling (live center between the two spindles, work-holding with spring force), G96 master that constantly shifts setpoint, or any application where fine synchronism cannot be physically held.
"IPOSTOP" Block change waits until the leading spindle's IPO has produced a setpoint that the following spindle can interpolate. This is the Siemens default. Behavior is similar to "FINE" for setpoint linkage ("DV") but is processed in the interpolator rather than the position controller. Default for most synchronous-spindle turning. Suitable when the master is in G97 and the part is held rigidly between chucks.

Block-Change State Machine

COUPDEF Block-Change State Machine Block N start NOC COARSE MD37200 / MD37220 FINE / IPOSTOP MD37210 / MD37230 Block N+1 release immediate |Δ| < COARSE |Δ| < FINE release release release or 550010
Why "IPOSTOP" is the default. "IPOSTOP" is essentially "fine synchronism evaluated in the IPO clock" and is what Siemens ships as the safe default. In a mill-turn with G96 on the master, however, the master setpoint is never constant, so the fine check is rarely satisfied at a block boundary. "COARSE" gives the same block-by-block motion guarantee at a coarser tolerance and avoids the 550010 trip.

Coupling Type Variants (DV / AV / VV)

Argument Behavior Notes
"DV" Setpoint linkage. The following spindle is given a setpoint that is mathematically derived from the leading spindle's setpoint. Both spindles therefore have the same commanded speed; the controller only needs to keep the actual values close to the common setpoint. Default and least sensitive to following-velocity error. Recommended when the master is in G96 and the part is constrained between centers. The fault described in this article uses "DV"; only the block-change criterion needs to change.
"AV" Actual-value coupling. The following spindle uses the leading spindle's measured (actual) speed as its command. Any measurement noise on the master is propagated to the slave. Use when the master speed is being measured externally and that measured value must drive the slave. Rare on mill-turn; common on driven-tool/spindle synchronization for non-CSS work.
"VV" Speed coupling. The following spindle receives the leading spindle's actual speed and is rate-matched rather than position-matched. There is no phase relationship, only a speed ratio. Use when the two spindles must turn at the same RPM but their angular positions do not need to be aligned. Typical for unwind/rewind applications, not for turning.

The Fix: COUPDEF with COARSE Block Change

Replacing the fifth argument of COUPDEF from "IPOSTOP" to "COARSE" tells the controller to release the next block once the deviation between master and slave is within the coarser COARSE window (MD37200 = 0.0393 in / MD37220 = 2.362 in/min). The fine synchronism check is still active in the background — MD37210 and MD37230 continue to be evaluated — but the block-change release no longer requires the tighter FINE window to be achieved first.

This is the right behavior for a soft-coupled mill-turn:

  • The part program continues to be processed in lock-step with the master, so the part profile is correct.
  • The slave is allowed to lag a little more before the next block, so G96 setpoint jumps on the master do not stall the program.
  • Alarms 550010 / 550011 stop firing because the controller no longer demands the unreachable FINE window at every block transition.

Replace the line:

COUPDEF (S2, S1, -1, 1, "IPOSTOP", "DV")

with:

COUPDEF (S2, S1, -1, 1, "COARSE", "DV")

Synchronism Tolerance Machine Data

The four machine data that control the synchronism windows are listed below. The values shown were the active values on the affected machine at the time of the fault.

MD Name Active Value Units Siemens Default Role
MD37200 $MA_COUPLE_POS_TOL_COURSE 0.0393 in 1.0 mm (≈0.0394 in) Position tolerance for COARSE synchronism. Block change to "COARSE" waits for |Δpos| < MD37200.
MD37210 $MA_COUPLE_POS_TOL_FINE 0.0196 in 0.5 mm (≈0.0197 in) Position tolerance for FINE synchronism. Used as the alarm threshold at all times, regardless of block-change criterion.
MD37220 $MA_COUPLE_VELO_TOL_COURSE 2.362 in/min 100 mm/min (≈3.94 in/min) Velocity tolerance for COARSE synchronism.
MD37230 $MA_COUPLE_VELO_TOL_FINE 1.181 in/min 50 mm/min (≈1.97 in/min) Velocity tolerance for FINE synchronism. (See note: the source text labels this MD as MD37220, which is a typo — the correct MD is 37230.)
MD typo in the original report. The active value of 1.181 in/min for the FINE velocity tolerance is stored in MD37230 $MA_COUPLE_VELO_TOL_FINE. The original report listed it as MD37220 (which is the COARSE velocity tolerance). Always read the data in the active NC and confirm by name ($MA_COUPLE_VELO_TOL_FINE) rather than by number when the values look unexpectedly identical.

Step-by-Step Resolution Procedure

  1. Confirm the alarm is 1016 / 550010 and the affected axis is the following spindle (C2 / S2). The HMI alarm screen will show both.
  2. Inspect the active COUPDEF in the part program. Search for the string COUPDEF in the affected program directory and record the exact arguments.
  3. Verify that the coupling is required for the operation. If not (e.g. the part does not need the live center), the cleanest fix is to COUPOF the slave spindle before the G96 turning pass and re-establish it afterwards.
  4. If the coupling must stay active, change the fifth argument of COUPDEF from "IPOSTOP" to "COARSE". Do not change the coupling type (sixth argument); keep "DV" for setpoint linkage unless you have a specific reason to switch to "AV" or "VV".
  5. Save the modified program and reload it on the controller. A Reset is not strictly required, but a single RESET clears any residual 550010 alarm and ensures the new COUPDEF takes effect on the next COUPON.
  6. Run the program in single-block (SBL1 or SBL2 with reduced rapid) over the section that previously failed. Watch the service screen of the following spindle: position and velocity deviation should stay inside the COARSE window and only occasionally touch the FINE window.
  7. If 550010 still fires with "COARSE", the mechanical coupling is too compliant. Either tighten the live-center pressure (if the option is available on the machine), switch to a between-chucks rigid setup, or raise MD37200 / MD37220 in small increments (e.g. +20% at a time) until the alarm stops.
  8. If 550010 still fires with "COARSE" and raised tolerances, inspect the master ramp at the G96 step changes. The standard remedy is to add a small dwell (G4 F0.5) or an M103 (wait for spindle to reach programmed speed) immediately before the high-X-movement blocks of the finishing pass. The original poster observed that an M103 alone did not help, but a manual feed hold did — this is consistent with the IPOSTOP-vs-COARSE finding, because M103 waits for actual speed, not setpoint synchronism, while the feed hold actually gives the slave time to settle inside the FINE window.

Verification, Diagnostics, and Acceptance Tests

After applying the fix, run the following checks before signing off the program:

  1. Full-part dry run in SBL1. The program must complete end-to-end with no 550010 alarm, no 550011 (coarse following error), and no 25201 (axis C2 following error).
  2. Repeatability test. Run the same part 10 times consecutively. The first pass after a cold start is the most likely to fail; if it survives, the program is stable.
  3. Service-screen capture. Open the spindle service screen (typically Menu > Diagnostics > Service > Spindle) and capture a screenshot of the position and velocity deviation of the following spindle. Confirm that |Δpos| < MD37200 and |Δv| < MD37220 throughout the finishing pass.
  4. Surface finish check. Measure the part OD with a profilometer. With a live-center coupling, surface finish is dominated by the contact-point micro-slip; if the chatter pattern is new or worse than before the change, the slave is now lagging the master by a measurable amount and MD37200 should be tightened by 10% until the chatter disappears without re-introducing 550010.
  5. Alarm-history review. At the end of the run, open the alarm log (Menu > Diagnostics > Alarm Log) and confirm no 550010, 550011, or 25201 entries for the run.

Service Screen Procedure

  1. Menu Select > Diagnostics > Service > Axes > Spindle (path varies by SW version).
  2. Select the following spindle (S2 / C2).
  3. Open the Coupling tab. The following values are shown in real time:
    • Position offset (actual) — actual angular deviation between the two spindles.
    • Velocity offset (actual) — actual speed deviation.
    • Synchronism stateFINE, COARSE, or --.
    • Block-change criterion — echoes the value programmed in COUPDEF.
  4. Run the part program and observe whether the position offset stays within the COARSE window during the finishing pass. If it stays inside the window and 550010 still fires, the fault is in the velocity check (MD37220 / MD37230); if it leaves the window, the position check is the limiter and MD37200 / MD37210 are the candidates to widen.

Troubleshooting Matrix and Related Alarms

Symptom Likely Cause Fix
550010 only during G96 finishing, not during G97 Master setpoint is moving; fine synchronism check fails at block transition. Switch COUPDEF block-change to "COARSE".
550010 only at the start of an operation, then runs clean Slave has not yet reached the master speed when the first cutting block releases. Add a dwell (G4 F0.5) or an M103 before the first cutting block; verify MD37210 and MD37230 are appropriate for the application's catch-up time.
550010 only when the part is between live center and chuck Live center micro-slip means the slave cannot physically hold the FINE window. Use "COARSE" block change; consider raising MD37200 / MD37220 slightly.
550010 only when the operator opens the door / enables dry-run Dry-run or rapid override changes the IPO clock or the spindle ramp; synchronism check fires. Disable dry-run for the first part; verify the program in AUTO with the door closed.
550010 immediately on COUPON, before any G96 Master and slave start at different speeds; the catch-up transient violates FINE. Pre-spin both spindles to the same speed before COUPON; or use "COARSE" block change on the first COUPON.
550010 random, anywhere in the program Mechanical compliance in the drive train, encoder noise, or excessive speed-loop gain. Inspect the slave spindle encoder and drive; check MD37210 / MD37230 against the actual measured deviation in the service screen.

Related alarms in the same family (all raised by the synchronous-spindle monitor, all point at the COUPDEF/COUPON configuration):

  • 550010 — Setpoint linkage: following error too large (the alarm in this article).
  • 550011 — Actual-value linkage: following error too large. Triggered when the slave's actual position/velocity deviates from the master's actual value by more than the tolerance. Typical cause: encoder noise on the master or slave.
  • 550012 — Speed coupling: following error too large. Triggered with "VV" coupling if the rate mismatch exceeds the tolerance.
  • 25201 — Axis %1 following error. The generic axis-level following error alarm raised when the slave's position controller can no longer keep up. May precede a 550010 by one IPO cycle if the position controller saturates.

Related Sinumerik Considerations

SETMS — Set the Master Spindle

The master spindle for the cutting side is set with SETMS(n) in the program. With a center in the subspindle and synchronized spindles, both spindles are turning together; the active master is the one whose speed setpoint the controller reads for the G96 calculation. In the program in the original report, SETMS(1) is called before the G96 roughing and finishing passes. The active master must be the leading spindle of the COUPDEF, otherwise the G96 calculation will read the slave's setpoint and produce wrong speeds.

COUPON / COUPOF Lifecycle

Each COUPON re-evaluates the block-change criterion from scratch. If you split the part program into multiple operations and call COUPOF at the end of an operation, the next COUPON in the new operation must come from a COUPDEF with the correct block-change criterion. The original report re-issued COUPDEF only once at the start of the program; this is correct because COUPON honors the last programmed COUPDEF until a new one is issued.

Centered Workpiece vs. Center in Subspindle

This fault is specific to the "live center in the subspindle" configuration. With a part that is rigidly held between two chucks (no center in the subspindle), the coupling is mechanically stiff, the FINE window can be achieved quickly, and the "IPOSTOP" default is safe. With a live center, micro-slip is unavoidable and the FINE window cannot be physically held; "COARSE" is the correct setting.

M103 — Wait for Spindle at Speed

M103 is the Sinumerik command that waits for the spindle to reach the programmed speed (within a small tolerance). It is a tool for synchronizing feed start with the actual spindle speed, not with the coupling synchronism. In a COUPDEF context it does not release the IPOSTOP check; it only waits for the master to be at the speed it was commanded to. This is why the original poster's sprinkling of M103 did not help.

G96 Spindle Setpoint Dynamics

G96 is a constant-surface-speed mode in which the controller recalculates the spindle RPM from the current X (diameter) and the programmed S value. With two mechanically coupled spindles, both have to be commanded to the same RPM at all times. The cleanest implementation is SETMS(LS) immediately before G96 so that the master for the cutting is also the master for the coupling, and COUPDEF uses "COARSE" so that the block-change synchronism check tolerates the constant setpoint motion of G96.

Safety Considerations

  • Loss of synchronism = part damage. When the slave spindle falls behind the master by more than the COARSE window during cutting, the part is being fed into the tool at a rate that no longer matches the part surface speed. The visible effect is a localized diameter error, a chatter pattern, or a step on the finished profile. Always inspect the first part after changing a coupling parameter.
  • Watch the live center. A live center pressed into the part acts as a slip clutch. If the slave falls so far behind that the contact point breaks friction lock, the part will slip in the subspindle. MD37200 / MD37220 should be set so that the worst-case transient lag is well inside the center's friction cone.
  • Keep the FINE alarm thresholds active. Even when block-change uses COARSE, the FINE thresholds (MD37210 / MD37230) continue to be evaluated. Do not raise them just to silence 550010; if the FINE thresholds are violated, the slave is genuinely out of lock and the part quality is compromised.
  • Verify the SETMS state. Before G96, the active master (set with SETMS) must match the leading spindle of COUPDEF. A mismatch means the controller reads the slave's setpoint for the surface-speed calculation, which under- or over-speeds the spindle and may stall the cut.
  • Don't disable COUPOF on E-Stop. A controller that goes into E-Stop with the spindles coupled and a live center in the workpiece is in an unsafe state (the part can be thrown if the slave stops before the master). Confirm that your E-Stop routine calls COUPOF before the spindle ramps out.

FAQ

What does Sinumerik alarm 1016 / 550010 mean?

1016 is the channel/axis wrapper ("Channel %1 axis %2 system error %3"). The actual fault is 550010, raised when the position or velocity deviation between the leading and following spindles exceeds the configured COARSE or FINE tolerance window (MD37200 / MD37210 / MD37220 / MD37230). In a mill-turn with COUPDEF, the affected axis is the following spindle (S2 / C2).

Why does 550010 only fire when G96 is active with synchronized spindles?

G96 constantly recomputes the master spindle setpoint from the current X diameter. With the block-change criterion set to "IPOSTOP" or "FINE", the controller requires fine synchronism to be achieved at every block transition. The slave cannot follow a continuously moving setpoint fast enough, the FINE window is briefly violated, and 550010 fires. Switching to "COARSE" accepts a larger tolerance and eliminates the alarm.

Is COUPDEF (S2, S1, -1, 1, "COARSE", "DV") safe for production?

Yes, for a live-center mill-turn. The slave is still being given the master's setpoint (DV linkage), the block change still waits for synchronism (COARSE is a synchronism check, not a "no check"), and the part program continues in lock-step with the master. The trade-off is a small allowable phase lag between the spindles; for a part that is supported by a center on one end and a chuck on the other, the lag is acceptable.

What is the difference between "COARSE" and "FINE" in COUPDEF?

Both are synchronism checks, but they use different tolerance windows. "FINE" waits for |Δpos| < MD37210 and |Δv| < MD37230. "COARSE" waits for |Δpos| < MD37200 and |Δv| < MD37220. COARSE is roughly 2× the FINE window for both position and velocity. Both windows are evaluated continuously regardless of the block-change criterion; the criterion only controls when the next block may be released.

Should I use "VV" or "AV" instead of "DV"?

For a mill-turn that requires the two spindles to be phase-locked (the live center stays in the center hole as the part rotates), keep "DV" setpoint linkage. "VV" is speed-only coupling with no phase relationship and is not suitable for turning. "AV" actual-value coupling is appropriate when the master's measured speed (not its setpoint) is the source of truth; in a normal Sinumerik turning cell, the setpoint is the more stable signal and "DV" is preferred.

Does adding M103 fix 550010 with G96 and synchronized spindles?

No. M103 waits for the spindle to reach its programmed speed, which is a single-spindle check. The 550010 alarm in this scenario is a coupling-following-error alarm; the slave needs time for the coupling synchronism check to settle, not for the master to reach its speed. The correct fix is to change COUPDEF to "COARSE" block change, not to sprinkle M103 in the program.

Which MD controls the alarm threshold — MD37200, MD37210, MD37220, or MD37230?

All four are evaluated continuously. MD37210 / MD37230 (FINE position/velocity) is the tightest window and is the threshold that is most often violated when 550010 fires. MD37200 / MD37220 (COARSE) is roughly 2× wider. The block-change criterion of COUPDEF selects which window the controller waits for at every block transition. The active values on the affected machine are 0.0196 in (MD37210), 1.181 in/min (MD37230), 0.0393 in (MD37200), and 2.362 in/min (MD37220).

Back to blog