SINAMICS S120 PolID: PMSM Resolver Pole Position Setup

David Krause14 min read
SiemensTechnical ReferenceVFD / Drives
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

SINAMICS S120 PolID for PMSM with Resolver on SMC10: Technical Reference

This reference documents pole position identification (PolID) for a permanent-magnet synchronous motor (PMSM) equipped with a two-pole resolver and connected to a SINAMICS S120 drive via an SMC10 Sensor Module. The document covers why certain motor/encoder combinations allow PolID to be skipped, the parameter set that controls the procedure, and the commissioning steps required when a PolID run is mandatory.

1. Pole Position Fundamentals for PMSM

Field-oriented control of a PMSM requires knowledge of the rotor magnetic axis (electrical angle = 0°) at every instant. The commutation angle the Control Unit supplies to the power section is constructed from the encoder raw angle plus the commutation angle offset (p0431) plus the pole pair number scaling.

For asynchronous motors the rotor field can be built freely from stator current, so the absolute angle at start-up is irrelevant. For a PMSM the rotor field is fixed, so any error between the angle fed back by the encoder and the true rotor magnet axis causes torque ripple, increased current, and uncontrolled motion in the worst case.

The error between encoder electrical angle and rotor flux axis at start-up is defined as the commutation angle offset Δϑ. The drive stores this value in p0431[0] (commutation angle offset) and the measured value remains valid as long as the mechanical coupling between encoder and rotor does not change.

A commutation angle error of more than ±10° electrical typically causes the drive to trip with fault F31111 (encoder fault, sign-of-life error) or F7900 (motor blocked/speed controller at endstop) during the first acceleration.

2. Resolver and SMC10 — Hardware Block

2.1 Resolver mechanical model

A resolver is a rotary transformer with:

  • One primary (rotor) winding excited at ~8 kHz (carrier) by the SMC10.
  • Two secondary windings (stator, sin and cos, 90° mechanical apart).

The number of pole pairs on the resolver is the number of sin/cos full cycles per mechanical revolution. A "two-pole resolver" (resolver pole pair number = 1) gives one sin/cos cycle per revolution, the same resolution as an incremental encoder with one line pair. A "four-pole resolver" gives two cycles per revolution.

The SMC10 (catalog 6SL3055-0AA00-5AA3) demodulates the resolver carrier, performs a tracking-loop conversion, and presents an EnDat/SSI-compatible digital position to the Control Unit at the Drive-CLiQ port X500.

2.2 SMC10 parameters of interest

Parameter Description Typical value (resolver 1 pole pair)
p0400[0] Encoder type selection 9999 (user) / 1001 (resolver SMC10)
p0404[0] Encoder configuration 0x1 or 0x4001 (resolver)
p0408[0] Encoder pulses per revolution 1 (resolver: 1 sin/cos cycle = 1 ppr equivalent)
p0421[0] Resolver excitation amplitude Auto (default 0)
p0430[0] Sensor Module configuration 0x1 (resolver)
p0431[0] Commutation angle offset 0° (initial) → measured value
p0437[0] Extended encoder configuration Bit pattern for tolerance

For a Siemens 1FT6/1FK7/1FT7 servo motor the resolver is factory-aligned to the rotor (p0431 = 0). For a third-party PMSM with a separately supplied resolver the offset must be determined once.

3. The Integer Pole-Pair Ratio Rule

The integer ratio rule is the key concept that decides whether PolID is required. The rule states:

The ratio of motor pole pairs (p0310 or p0314) to encoder pole pairs (p0408 or p0425) must be an integer number.

When the rule is satisfied, the commutation angle repeats identically at every electrical period, and a single offset measurement (or the factory pre-set) defines the rotor angle at every startup. PolID is not required.

The mathematical form is:

Integer = p_pole_motor / p_pole_encoder

If the result is a non-integer (e.g. 10 motor pole pairs and 3 encoder pole pairs → 10/3 = 3.33), the commutation angle drift per mechanical revolution is non-zero, and the drive must run PolID at every start-up to track the rotor.

3.1 Worked example: 10-pair PMSM with 1-pair resolver

Motor pole pairs (p0314) 10
Encoder pole pairs (p0425) 1
Ratio p_pole_motor / p_pole_encoder 10 / 1 = 10 (integer)
PolID required at every start-up? No
PolID required at commissioning? Only if resolver is not factory-aligned

This is exactly the case in the source scenario: 10 motor pole pairs and 1 resolver pole pair. The integer ratio is satisfied, so the drive can derive a stable commutation angle at every power-on from the resolver raw angle plus the stored offset p0431. A PolID run is only needed the first time if the resolver is not pre-aligned by the motor manufacturer.

3.2 Worked example: 5-pair PMSM with 2-pair resolver (fail)

5 / 2 = 2.5 — not an integer. The drive must execute a PolID routine on every start-up (or at least when the encoder has rotated through an unresolved ambiguity).

4. PolID Methods in SINAMICS S120

The SINAMICS S120 offers several PolID techniques selected by p1980[0] (technique) and the activation source p1981[0] (bit 0: technique, bit 1: motion-based, bit 2: saturation). The most common methods are summarised in the table below.

p1980 value Method Operating principle When used
1 Saturation 1st harmonic Inject short current pulse at standstill, measure current peak at 90° offset Standard PMSM with high rotor anisotropy
2 Saturation 2nd harmonic Two pulses 180° apart, evaluate saliency 2nd harmonic PMSM with weak 1st-harmonic saliency
3 Motion-based Apply small current step, allow rotor to rotate, measure angle Non-salient PMSM (reluctance component ≈ 0)
4 Saturation 1st harmonic (high-current) Same as 1 with higher amplitude for noisy environments Noisy resolver, long cables
5 Saturation 2nd harmonic (high-current) Same as 2 with higher amplitude Noisy resolver, low saliency
6 Elasticity-based motion Drive small mechanical oscillation, integrate resolver angle Blocked rotor, very low inertia
10 Use stored p0431 No measurement, take the value saved at last commissioning Integer ratio + already-known offset
p1980 = 10 is the only "PolID" value that performs no real measurement. It is the correct choice for a PMSM with an integer ratio resolver where the offset has already been written into p0431 during commissioning. Setting p1980 = 0 disables PolID entirely; the drive then trusts p0431 unconditionally.

5. PolID Parameter Configuration on S120

5.1 Required parameters

Parameter Name Setting for the example (10/1 integer) Comment
p0300 Motor type 2 (PMSM) Mandatory
p0301 Motor code (Siemens) 0 (third-party) or motor code Defines motor data set
p0311 Rated speed Per motor plate rpm
p0314 Motor pole pair number 10 Critical for integer-ratio check
p0316 Motor torque constant Per plate Nm/A
p0341 Inertia (motor) From manufacturer or measurement kg·m²
p0400[0] Encoder type (encoder 1) 1001 (resolver via SMC10) or 9999 (user) Selects SMC10 resolver decoding
p0404[0] Encoder configuration 0x1 (resolver) Bit 0 = resolver
p0408[0] Encoder pulses per rev 1 For 1-pair resolver
p0425[0] Encoder pole pair number 1 For 1-pair resolver
p0430[0] Sensor Module configuration 0x1 Must match p0404
p0431[0] Commutation angle offset Result of PolID or 0 (factory) Degrees, electrical
p1980[0] PolID technique 10 (use p0431) Skip measurement
p1981[0] PolID activation source 0 (deactivated) or required trigger Bit 0 = technique, Bit 1 = at start, Bit 2 = at restart
p1982[0] PolID current magnitude Method-dependent; p1982[0] = Id_ref of pulse 20–60% of p0305 typical
p1983[0] PolID settle time 300–1000 ms Time between current injection and angle evaluation
p1984 PolID angle difference (magnet axis vs encoder) Read-only result Diagnostic, degrees electrical
p1985 PolID angle difference (saturation 1st) Read-only result Diagnostic
p1990 Encoder adjustment — start 1 to trigger Writes result to p0431

5.2 p1981 (PolID activation) bit pattern

Bit Meaning Recommended for integer-ratio case
0 Select technique from p1980 1 (forced)
1 PolID after run-up (encoder OK signal) 0 (no run-up PolID)
2 PolID before run-up 0 (not needed)
3 PolID with motion 0 (not needed at every start)
4 PolID at every power-on 0 (not needed)
5 PolID only when p0431 invalid 1 (safe choice)
6 PolID with high current 0 (default)

6. Commissioning Procedure (third-party PMSM with resolver)

  1. Wire the resolver to SMC10: sin+ to X520-1/2, cos+ to X520-3/4, rotor (REF) to X520-5/6. Use shielded twisted pair, shield clamped at cabinet entry, not at motor side.
  2. Set p0300 = 2 (PMSM), enter p0310..p0341 from the motor data sheet. Pay attention to p0314 (pole pairs) — verify by measuring line-to-line back-EMF over one mechanical revolution with the motor uncoupled and rotated by hand: count the zero-crossings of the back-EMF; that number equals 2 × pole pairs.
  3. Set p0400[0] = 1001 and p0404[0] = 0x1 for the SMC10 resolver. Set p0408[0] = 1 and p0425[0] = 1 for a 1-pole-pair resolver. Drive-CLiQ port X500 on the SMC10 must be wired to the CU320-2 or the relevant Motor Module X200.
  4. Configure the integer ratio in p1980 by selecting the technique you wish to use as a one-time commissioning PolID. Method 1 (saturation 1st harmonic) is the default for a salient PMSM. Set p1981 to execute PolID once at the next RUN command.
  5. Verify safety: confirm the mechanical brake is engaged, the drive is in "commissioning" mode (p0009 = 1 or p0010 = 1 if the Safety Integrated commissioning is active), and that no axis in the machine can move. The PolID routine (methods 1, 2, 4, 5) can apply a brief current pulse that can move a non-braked, low-inertia rotor by a few electrical degrees.
  6. Give the drive a RUN command (ON/OFF1 = 1) without enabling the setpoint. PolID executes automatically. The result is displayed in r1984 and r1985 and is written to p0431 if p1990 is set to 1.
  7. After PolID, save the parameters (RAM-to-ROM, p0977 = 1). Then reconfigure p1980 to 10 and p1981 to disable further automatic PolID. The drive now uses p0431 directly.
  8. Run a motor identification routine p1910 (or p1960 for rotating) with the motor uncoupled if possible, to refine the motor equivalent circuit and current controller gains.

7. Verification

7.1 Static checks

  • Read r0027 (actual speed). Should be 0 rpm in standstill, no oscillation.
  • Read r0080[0] (torque setpoint). Should be near 0 with no current injection.
  • Read r0090 (motor angle) and r0091 (resolver angle). The difference between electrical and mechanical rotor angle must equal 0° + n × (360° / p0314).
  • Read p0431[0]. The value should be in the range −180° to +180° and remain constant across power cycles if the encoder is not moved.

7.2 Dynamic check

Apply a small setpoint (e.g. 5% of rated speed) and check that:

  • r0060 (actual speed) follows r0062 (speed setpoint) within the current controller cycle (typically 125 µs for S120).
  • No fault F31111, F7900, F7901 is raised within the first 5 seconds of motion.
  • Reversing the setpoint does not produce a sudden jump in r0027 > 5% of rated speed.

7.3 Repeatability check

Power-cycle the drive three times. After each power-on:

  1. Issue ON.
  2. Measure p0431[0] used by the drive (visible via r1984).
  3. Confirm all three readings are identical within 0.5° electrical.
If readings differ between power cycles, the resolver mechanical coupling has slipped or p0431 is being overwritten by an automatic PolID still configured to run. Inspect p1981.

8. Signal Flow

PMSM rotor Resolver (1pp) SMC10 CU320-2 Motor Module mechanical resolver excitation + sin/cos Drive-CLiQ digital angle encoder / position / p0431 electrical angle = resolver angle + p0431[0] mod 360° commutation voltage = f(electrical angle, setpoint)

9. Troubleshooting Matrix

Symptom Likely cause Investigation Action
F31111 at first RUN Commutation angle offset wrong or zero r1984, p0431, drive commissioning log Run PolID p1980=1, p1981 activate, save p0431
Motor jerks 1 electrical period on first RUN Resolver miscount (cable swap on sin/cos) Manually rotate motor by 90° mechanical; r0091 should change by 90° × p0425 Swap sin+ / sin− or cos+ / cos− at SMC10
F7900 / F7901 during acceleration PolID method wrong for motor (no saliency) r1984, r1985 spread; motor data sheet torque constant Use p1980 = 3 (motion-based) or p1980 = 6 (elasticity)
PolID result varies run-to-run Mechanical play between resolver and rotor Hold rotor with external brake and run PolID Eliminate mechanical play; re-run PolID
No current injection at PolID Drive in safety commissioning mode, or p1981 deactivated r0002, r1981 bit pattern Exit commissioning state, set p1981 per section 5.2
r0431 = 0 after PolID p1990 not set to 1 to write result; or p1980 = 10 (uses stored value only) Check p1990 and p1980 Set p1990 = 1 and repeat PolID, or use p1980 = 1 first time
Angle drifts over time Resolver on a non-rigid coupling, or thermal expansion Monitor r1984 over warm-up cycle Improve mechanical coupling, use a non-decoupled encoder
Alarm A7915 / A7936 PolID failed (timeout or encoder error) r0947 fault value Check encoder cable, set p1983 settle time higher

10. Safety and Commissioning Notes

  • PolID applies a DC current pulse (typical 20–60% of rated motor current for 100–500 ms). The rotor may move a small angle if it is not braked.
  • For vertical axes, ensure the mechanical brake is fully closed and the load is mechanically supported during PolID.
  • Safety Integrated functions (STO, SS1, SBC) must be commissioned before motion is enabled. PolID with safety functions active is permitted if the relevant safety parameters (p9601, p9602) are configured.
  • Do not run PolID if the encoder is not yet electrically closed (e.g. no Drive-CLiQ link, no resolver excitation). The drive will report F3xxx (encoder fault).
  • Always save parameters with p0977 = 1 (RAM-to-ROM) after a successful PolID. The data resides in non-volatile memory on the CFast card of the CU.

11. Parameter Set Summary for the Integer-Ratio PMSM

For a 10-pole-pair PMSM with a 1-pole-pair resolver on SMC10 where the resolver is factory-aligned to the rotor, the minimum parameter set is:


p0300 = 2           // PMSM
p0314 = 10          // motor pole pairs
p0400[0] = 1001     // resolver on SMC10
p0404[0] = 0x1      // resolver config
p0408[0] = 1        // 1 ppr equivalent
p0425[0] = 1        // 1 resolver pole pair
p0430[0] = 0x1      // SMC10 config
p0431[0] = 0.0      // factory offset (kept as 0 if resolver was pre-aligned)
p1980[0] = 10       // use stored offset, no PolID
p1981[0] = 0        // PolID deactivated

For a third-party PMSM with the same integer ratio but an unaligned resolver, run PolID once with p1980 = 1, p1981 = 16 (PolID at first power-on, then deactivated), save, and switch to p1980 = 10 for production operation.

12. Related Drive Function Parameters

Parameter Function Notes
p0341 Motor moment of inertia Used for PolID motion-based settling
p0342 Total moment of inertia / motor inertia ratio Set if load inertia is significant
p0350-p0360 Stator/rotor resistance, leakage, d/q inductance From motor data sheet or p1910 identification
p1520 Upper torque limit Restrict PolID pulse amplitude
p1530 Upper power limit Restrict PolID pulse power
p1715 Current controller P gain Auto-set by p1910
p1717 Current controller integral time Auto-set by p1910
p1910 Motor data identification (static) Run once after PolID
p1960 Speed controller optimization (rotating) Run with motor uncoupled

13. References to Official Documentation

For complete parameter descriptions and commissioning flows, consult:

FAQ

What is the integer pole-pair ratio rule for SINAMICS S120 PolID?

The ratio of motor pole pairs (p0314) to encoder pole pairs (p0425) must be an integer. When satisfied, the commutation angle is unambiguous at every electrical period and PolID is not required at every start-up. Example: 10 motor pole pairs and 1 resolver pole pair give ratio 10 — PolID can be skipped after the initial commissioning offset is stored in p0431.

Which PolID method should I choose for a salient PMSM?

Use p1980 = 1 (saturation 1st harmonic) as the first choice. It injects a short current pulse at standstill and measures the rotor flux axis from the resulting 1st-harmonic current asymmetry. If the motor has very low magnetic saliency, switch to p1980 = 3 (motion-based) or p1980 = 6 (elasticity-based).

How do I set p1980 so the drive uses the stored offset only?

Set p1980[0] = 10. The drive then uses the value in p0431[0] directly and does not run any measurement at start-up. Combine with p1981[0] = 0 to fully deactivate automatic PolID. This is the recommended setting for a PMSM with an integer pole-pair ratio and a known, factory-aligned resolver.

What does p0431 contain and where is it saved?

p0431[0] holds the commutation angle offset in degrees electrical, written by the encoder adjustment routine (p1990 = 1) or by the motor data identification. The value is stored on the CFast card of the CU320-2 and reloaded at every power-on via p0977 = 1 (RAM-to-ROM).

Why does my drive trip F31111 on first RUN with a third-party PMSM?

F31111 indicates a commutation angle error. For a third-party motor with a separately supplied resolver, p0431 is initially 0 and the resolver is not pre-aligned. Run a one-time PolID with p1980 = 1, p1981 = 16, then save with p0977 = 1. Re-arm the drive and F31111 should clear.

Back to blog