Resolving F07412 on SINAMICS S120 Resolver Commutation Alignment

David Krause15 min read
SiemensTroubleshootingVFD / 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

F07412 Fault Definition and Failure Context

Fault F07412 on a SINAMICS S120 drive is raised by encoder 1 (the motor encoder) when the drive determines that the commutation angle it is using is not plausible. The official fault value is "Encoder 1: Determined commutation angle incorrect", and it is generated by the closed-loop control when either (a) the automatic pole-position identification routine finishes with an angle that lies outside the expected band, or (b) the angle stored in p0431 differs from the mechanically determined commutation angle by more than the plausibility threshold. The fault reaction is OFF2 plus OFF3, which means the pulses are immediately cancelled and the drive ramps down on the quick stop ramp. Acknowledgment requires a power-on reset or the explicit p3981 mechanism because the fault is stored in the fault buffer at r0945[0].

In the failure pattern that produced the field report, a PM servo motor in an existing SINAMICS S120 cabinet was replaced. The resolver that was attached to the original motor was unbolted and remounted on the new motor. The resolver is therefore mechanically correct in its internal sin/cos relationship, but its external zero reference (the resolver index / resolver-to-rotor-d-axis angle) is no longer the same physical value as the offset that was last stored in p0431 on the Control Unit. Every subsequent attempt to run the drive trips F07412 because the closed-loop control detects that the flux-producing current component (Id) and the torque-producing component (Iq) are being applied with the wrong axis alignment.

Resolver and PM Motor Commutation Physics

A resolver is an absolute, brushless rotary transformer. The rotor is excited by a sinusoidal carrier from the SMC10 Sensor Module (typically 4 Vrms at 8 kHz). Two stator windings, mechanically displaced by 90 electrical degrees (one full revolution for a 1x resolver), produce the signals:

  • S1-S3 = E0 · sin(θ_m)
  • S2-S4 = E0 · cos(θ_m)

where θ_m is the mechanical angle of the resolver shaft. The SMC10 decodes these via an on-board RDC (resolver-to-digital converter) into a 14-bit (SMC10) or 12-bit (older firmware) digital position. For a PM motor with p pole pairs, the SINAMICS uses the electrical angle θ_e = p · θ_m + φ_offset to transform the stator currents into the d-q rotating reference frame. The rotor d-axis is, by definition, the direct axis of the field produced by the permanent magnets; commutation is correct when the d-axis of the Park transform coincides with the resolver electrical zero at θ_m = 0 plus φ_offset.

The compensation φ_offset is exactly the value stored in p0431 ("Encoder commutation angle offset"). If the resolver is unmounted from motor A and remounted on motor B with a different shaft-key alignment, the original p0431 value no longer corresponds to the rotor d-axis, and Id/Iq control is rotated by the mechanical misalignment Δθ. The drive recognises this as soon as torque is demanded and raises F07412.

SINAMICS S120 Resolver Parameter Map

The following table lists every parameter that has to be checked or set when an SMC10-fed resolver has been moved between motors. Values shown are firmware V5.x defaults; equivalent parameters exist in V4.x and V6.x with the same numerical addresses.

Parameter Description Typical / Required Value Notes
p0400[0] Encoder type selection 10000 = resolver (SMC10) Must match the physical Sensor Module.
p0404.0 Configuration word 0 Bit 0 = invert encoder, set if rotation is reversed.
p0410[0] Encoder inversion 0 or 1 Set so that positive speed command produces positive r0061.
p0420[0] Encoder type 1 = resolver Auto-set by Starter / Startdrive commissioning wizard.
p0430[0] Resolver gear ratio, motor side 1 (most direct mount) Set to p0431[0] / p0438[0] when a resolver gearbox is present.
p0431[0] Commutation angle offset 0 to 360° Critical value for F07412. Updated by p1980 ID run.
p0437[0] Resolver excitation amplitude 0 = 4 Vrms (default) Raise to 1 = 6 Vrms for long cables > 50 m.
p0438[0] Resolver gear ratio, resolver side 1 (most direct mount) Only relevant with mechanical resolver gearing.
p0439[0] Resolver gear ratio threshold 0 Default unchanged.
p1752[0] Speed threshold for commutation sequence control 5 to 20 rpm Test commutation above this value to exercise full flux model.
p1980[0] Pole-position ID procedure 0 = inhibited
1 = saturation (standard)
4 = motion-based
5 = saturation (fine)
The ID routine that auto-writes p0431.
p1982[0] Pole-position ID pulse pattern 0 = standard Sets the inverter excitation pattern used for the ID.
r1778 Commutation angle (model vs. encoder) 0 ± 5° Live readout used to validate the offset during manual alignment.
r0047 Status of motor and encoder ID Word of bits Bit 4 = pole-position ID complete.

Reference for the parameter list: SINAMICS S120/S150 List Manual (Firmware V5.x) and SINAMICS S120 Commissioning Manual.

Pre-Commissioning Prerequisites

Do not run the pole-position identification before the following items are confirmed, or F07412 will simply reappear at the end of the routine.

  1. Resolver wiring and shielding. Verify the SMC10 is wired to the resolver using a shielded, twisted-pair cable (Sin/Cos pairs, R1/R2 excitation pair). Maximum cable length 100 m for the 4 Vrms excitation, derated for higher excitation. The shield must be bonded to the SMC10 sub-D backshell and the resolver body, not to a separate ground bus. Inspect for broken strands at both ends, and check that the connector pin-out matches the SMC10 wiring diagram in the S120 Equipment Manual (typically: 1 = R1, 2 = R2, 3 = S1+, 4 = S3+, 5 = S2-, 6 = S4-, 7 = shield).
  2. Sensor Module ID. The drive auto-detects the SMC10 in r0148. If the slot reports ? or SLOT_OCCUPIED but with no module type, the resolver cannot be read. Power-cycle the CU once to ensure the topology is current.
  3. Motor data block. p0300[0] (motor type), p0301[0] (motor code, if Siemens 1FK/1FT/1PH motor), p0304[0] / p0305[0] (rated voltage / current) and p0310[0] / p0311[0] (rated speed / power) must be correct. With a third-party PM motor, run motor data identification p1910 = 1 followed by rotating measurement p1910 = 3 to populate the equivalent circuit and the saturation characteristic.
  4. Current limits. p0329[0] (motor standstill current / saturation current) must be at least 30 % of p0305[0] for the saturation-based pole-position ID to develop a measurable saliency signal. If p0329 is too low, the ID completes with garbage and F07412 is raised.
  5. Mechanical freedom. The motor shaft must be free to rotate through the test angle. Friction or external load will either stall the motion-based ID (p1980 = 4) or pollute the saturation signal of p1980 = 1. Lock any holding brake that is fed by the drive's BR+ / BR- output; release any mechanical brake that is fed externally.

Mechanical Alignment Reference Procedure

If the resolver shaft can be rotated independently of the motor rotor, the cleanest approach is to align the resolver index to the rotor d-axis and then start with p0431 = 0. The d-axis position of a surface-mounted PM motor corresponds to the maximum positive U-phase back-EMF position: connect two of the three motor phases to an oscilloscope, rotate the shaft by hand, and lock the rotor at the peak of the U-V sinewave. Mount the resolver with its electrical zero aligned to a defined mechanical keyway, then tighten the coupling. With the resolver zero and the rotor d-axis collinear, the only remaining offset is the small electrical angle produced by the resolver pole count, which is 0° for a 1x resolver and 360 / n° for an n-x resolver. The drive will accept p0431 = 0 (or a single 360 / n° value) as the starting point for the software routines that follow.

For frameless resolvers in 1FK7 / 1FT7 / 1PH8 motors the resolver is already aligned at the factory, and the value of p0431 is published in the motor data sheet. If the resolver was unmounted and the alignment was lost, use the factory value as a first guess and then refine by procedure A or B below.

Procedure A: Automatic Pole-Position Identification (p1980)

This is the recommended first step on every resolver-fitted PM motor. The drive excites the stator with a low-amplitude test pattern, evaluates the resulting saliency, and writes the determined angle directly into p0431.

  1. Set p1980[0] = 1 (saturation-based) for a first attempt. If the motor is a salient-pole or interior-mount type, prefer p1980[0] = 4 (motion-based) when mechanical freedom is confirmed.
  2. Disable the OFF1 source if it would prevent the ID from running (e.g., a Safety Integrated STO input that is held open).
  3. Set the ON command. The drive energises the motor, performs the test, and pulses are disabled again at the end.
  4. Monitor r0047: bit 4 = pole-position ID complete, bit 5 = fault during pole-position ID. A non-zero fault value in r0947[0] indicates F07412 was raised; jump to the troubleshooting matrix in the next section.
  5. If the routine completes without a fault, p0431[0] has been overwritten. Save with p0977 = 1 and acknowledge the routine completion with p1959[0] = 0 so that the next OFF1/ON cycle uses the new offset.

Acceptance check: run the motor in open-loop at low speed first by selecting p1300[0] = 0 momentarily, then in closed-loop (default p1300[0] = 21) at speeds both below and above p1752[0]. The drive should run smoothly in both directions without F07412. If the saturation-based ID fails, run the motion-based ID with the motor uncoupled and a low-load test bench, and re-check p0329[0] against p0305[0].

Procedure B: Manual Offset Adjustment via p0431 and r1778

When p1980 cannot be made to converge (e.g., the ID routine is blocked by a Safety-Integrated axis without test stop, or the motor cannot rotate for mechanical reasons), the commutation angle can be tuned manually. The r1778 parameter is the live difference between the model-based electrical angle and the resolver-based electrical angle, and is the single best indicator of commutation quality.

  1. Read the current p0431[0] and back it up by writing it to a free parameter, e.g. p0495[0] = p0431[0].
  2. Set p0431[0] = 0 (or the factory resolver alignment value) as the starting offset.
  3. Enable the drive in n-set = +5 % of rated speed, with a torque limit no higher than 30 % of rated (p1530[0] = 0.3 * p0338[0]).
  4. Read r1778. The display will jump while the motor is accelerating and should stabilise to a single value once steady-state speed is reached.
  5. The goal is r1778 = 0° ± 5° in both positive and negative rotation. To drive the readout to zero, add the observed r1778 value (in degrees, mod 360°) to p0431[0]. For example, if r1778 = +137.4° and p0431[0] = 0, write p0431[0] = 137.4.
  6. Re-enable the drive, repeat the reading. After two or three iterations the residual should drop below 5° and then into the < 2° band that is considered commutation-quality for torque control.
  7. Repeat the test at -5 % speed. The r1778 value should be the same magnitude and sign in both directions; if it flips, the resolver is inverting the mechanical sense, and p0410[0] must be toggled before the offset is readjusted.
  8. Once r1778 < 5° at all test speeds (and especially above p1752), save the project and write the new p0431[0] to the non-volatile memory of the CU with p0977 = 1.
Safety: The torque limit (p1530[0]) must be set to a non-zero, low value before enabling the drive. An open torque limit during the iteration will produce a large Id current and a violent rotor jerk if the offset is badly wrong. The drive may also pull F07900 ("Drive: Motor blocked") or F07902 ("Drive: Motor stalled") when the commutation error exceeds 90°; both are remedied by the same p0431 correction, but indicate the iteration overshot.

Verification and Acceptance Test

Once p0431 is set, the following verification sequence is recommended before returning the machine to production. Each step is a separate ramp from the test bench or HMI, with the drive in the closed-loop torque-controlled mode.

  1. Directional symmetry. Run at +5 % and -5 % of p0310[0] for at least 5 seconds each. Log r1778 at each step. The residual must be within ± 5° in both directions.
  2. Speed sweep. Ramp from 0 to +90 % of p0311[0] in 5 % steps. Log r1778 at each step. The accepted band is ± 5° at every step; a value that walks monotonically with speed is a sign of resolver gearing error (re-check p0438[0] / p0439[0]).
  3. Torque step. Apply a step from 0 % to 50 % of rated torque (p1530[0]) and observe r0027 (torque actual value) on a trace. A correctly aligned resolver produces a clean step with no > 10 % overshoot; misaligned commutation produces a 20 % to 60 % overshoot with ringing at the electrical time constant.
  4. Fault counter. Confirm r0947[0] and the warning buffer r2110[0] are clear of F07412 / A07961 ("Drive: Commutation angle monitoring") after the full sweep.
  5. Thermal run. With the load applied, monitor the motor thermal model r0034 for 30 minutes. A misaligned resolver causes excess current in the wrong axis, and the motor will heat up 10 K to 20 K above its true load share even at zero mechanical load. The temperature rise is the single most sensitive practical check on commutation quality.

Troubleshooting Matrix for F07412

Symptom / Observation Likely Root Cause Corrective Action
F07412 immediately after p1980 = 1 ID Saturation saliency too weak; p0329 too low Raise p0329[0] to ≥ 0.3 · p0305[0]; retry. If still failing, switch to p1980 = 4.
F07412 after p1980 = 4 motion-based ID Motor mechanically blocked or holding brake active Release external brake, decouple load, lower p1993[0] motion step, retry.
F07412 only above p1752[0] Resolver wiring reversed on Sin or Cos pair Check S1-S3 against S2-S4 polarity at SMC10. Swap Sin or Cos pair and re-run ID.
F07412 only in one rotational direction p0410[0] direction inversion set incorrectly Toggle p0410[0] and re-run ID, or compensate in p0431[0] by ± 180°.
F07412 appears at constant speed, even with r1778 in band Plausibility timeout in p1980; p0431 is correct but p1990[0] was skipped Run p1990[0] = 1 to fine-tune the offset, then save.
Resolver changes angle reading r0061 when shaft is rotated by hand, but r1778 jumps wildly Shielding broken or resolver cable > 100 m Replace cable, raise p0437[0] = 1 to use 6 Vrms excitation.
F07412 only when Safety Integrated STO is disengaged Test stop is not acknowledged; drive reverts to default commutation Run p10200 = 4 (encoder commutation test stop) at least once per Safety commissioning.
F07412 with third-party PM motor not in the S120 motor list Equivalent circuit missing; p0350/p0356/p0360 = 0 Run full motor ID p1910 = 1, 3 first, then p1980 = 1.

Reference for the fault reaction and the plausibility checks: SINAMICS S120/S150 List Manual, Faults and Warnings and SINAMICS S120/S150 Function Manual Drive Functions.

Field-Proven Notes

  • The single biggest source of F07412 after a motor swap is not electrical alignment but mechanical: the resolver coupling has been re-fitted with the resolver rotor rotated relative to its original keyed position. Always re-clock the resolver before touching the software parameters.
  • When the motor is a Siemens 1FK7 / 1FT7 / 1PH8 with integrated resolver, the resolver is already gear-aligned and the p0431 value is published on the motor rating plate. After a motor swap, start the commissioning with the printed value and use procedure B to fine-tune by a few degrees.
  • Do not rely on p1990[0] = 1 alone to re-establish commutation; this routine is the fine trim and assumes a good p0431 is already present. Run p1980 first, then p1990 if additional accuracy is required for high-bandwidth torque control.
  • If the drive is part of a Safety Integrated axis with SS1 / STO, the test stop pulses required by p10200 re-excite the resolver and the commutation angle. An F07412 after a Safety commissioning often disappears once p10200 = 4 has been executed and acknowledged.
  • For multi-pole resolvers (resolver pole count > 1), the value of p0431 is still written in electrical degrees, but the mechanical-to-electrical scaling must respect the resolver pole count. With a 2-x resolver on a 4-pole-pair motor, the published offset from the factory is given in resolver mechanical degrees and must be multiplied by 4 (= 2 · pole pairs / resolver pole count in this case) before being written to p0431.

What does fault F07412 on a SINAMICS S120 mean?

F07412 ("Encoder 1: Determined commutation angle incorrect") is raised when the SINAMICS S120 detects that the commutation offset stored in p0431 (or the angle just produced by the pole-position ID routine) is not plausible. Typical reaction is OFF2 + OFF3, with the fault stored in r0945[0] and acknowledged by power-on or p3981.

Which parameter holds the resolver commutation offset on a SINAMICS S120?

The commutation offset is p0431[0] (Encoder commutation angle offset). It is in electrical degrees, range 0 to 360, and is updated by the pole-position identification routine p1980[0] = 1, 4, 5 or by manual entry. The factory value for Siemens 1FK7 / 1FT7 / 1PH8 motors is printed on the rating plate.

What is the correct sequence to clear F07412 after a motor swap?

Confirm motor data and run p1910 motor identification, set p1980[0] = 1 (or 4 for motion-based), enable the drive, wait for r0047 bit 4 (pole-position ID complete), verify p0431[0] has been written, then run p1990[0] = 1 for a fine trim. Finally, sweep speed from -n_max to +n_max and confirm r1778 < 5° at every step.

What is the role of r1778 when aligning a resolver on S120?

r1778 is the live difference between the model-based electrical angle and the resolver-based electrical angle. It is the most sensitive single-number check of commutation quality: after a good p0431, r1778 must read 0° ± 5° at all speeds and in both directions, especially above the commutation sequence control threshold p1752[0].

Why does p1980 keep raising F07412 on a third-party PM motor?

The saturation-based ID requires the motor equivalent circuit (p0350 / p0356 / p0360) and a non-zero saturation current p0329 (≥ 30 % of p0305). If p1910 motor identification has not been run first, those parameters stay at zero and the ID is meaningless. Run p1910 = 1 (static) and p1910 = 3 (rotating) before retrying p1980.

Back to blog