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.
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 |
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)
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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) andr0091(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) followsr0062(speed setpoint) within the current controller cycle (typically 125 µs for S120). - No fault
F31111,F7900,F7901is 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:
- Issue ON.
- Measure
p0431[0]used by the drive (visible viar1984). - Confirm all three readings are identical within 0.5° electrical.
8. Signal Flow
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:
- SINAMICS S120 Commissioning Manual with Startdrive, 09/2021, section 5.7.3.9 "Pole position synchronisation"
- SINAMICS S120 Function Manual for Drive Functions, section 5.16.4 "Commutation angle offset"
- SINAMICS S120 List Manual (parameter list p1980, p1981, p1982, p1983, p0431, p0430)
- SMC10 Sensor Module Cabinet-Mounted Equipment Manual
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.