Dq Transform (Three-Phase Current Id/Iq)

Resolves three-phase current U/V/W into Id / Iq components through the Clarke → Park transform, and additionally derives electrical frequency fe, electrical angle θe, mechanical speed, torque, the EPVA fault indicator, order colormaps, and a harmonic-injection analysis that normalizes vibration/noise by the same current fe so acoustic orders can be compared against electrical orders on one axis.

U/V/W (A)  ──Clarke──▶  iα/iβ  ──Park (rotate by θ)──▶  Id/Iq

Clarke uses the power-invariant (Concordia) form: iα=√(2/3)(iU−½iV−½iW), iβ=√(2/3)·(√3/2)(iV−iW). The vector magnitude |Idq|=√(iα²+iβ²) is frame-independent — changing the frame, δ or the pole-pair count never moves it. That property is the best self-check you have for a mis-typed parameter.

This page documents every parameter on the property panel: what it means, how to choose a value, what a wrong value looks like on screen, and how the parameters interact. For the underlying concepts (Clarke/Park/FOC/PLL/EPVA, how to measure rotor angle, how harmonic injection works) see the companion document “Three-Phase Current Id/Iq Analysis · Fundamentals”.

Before you start: what to select in the Source pool

  1. At least 3 current channels (U/V/W). With fewer than 3 the analysis aborts and the event log reads “Three-phase current required”.
  2. For true rotor dq (Frame C): also select a measured rotor-angle channel (encoder, resolver-decoded angle, or the electrical-angle ramp exported by the MCU).
  3. For harmonic-injection targeting / correlation: select the vibration and microphone channels too — every non-current channel is treated as an NVH sensor for order targeting.

How the three phases are identified

There is no U/V/W selector on the panel; the engine resolves them in this order:

  1. Channel name contains current_u / current u, or ends with _u or space u, or equals u (same for V/W, case-insensitive);
  2. No match → falls back to source channels 0/1/2.
The fallback is silent: if the first three channels are not U/V/W (or are swapped or wired with inverted polarity), you still get plots — with wrong numbers. Check the balance figure on the last log line: balance = rms(iU+iV+iW) / rms(iU), which should be near 0 for a balanced set. Above 10% the log prints “⚠ too large (check channel mapping / polarity / zero-sequence)”. The other symptom is a non-constant |Idq| and an iα-iβ trajectory that is not a circle.

Parameter overview

ParameterDefaultVisible whenAffects
Frame (A/B/C)Calwaysthe definition of Id/Iq (the whole analysis)
PLL Bandwidth (Hz)5Frame = B or Csmoothness vs. tracking speed of θ̂ / fe
Pole Pairs4Frame = Cspeed, absolute torque, mechanical-angle conversion
Align Offset δ (°)0Frame = Csplit between Id and Iq
Flux Linkage ψ (Wb)0Frame = Ctorque in N·m vs. relative torque
Max Order10“Order colormap” tickedorder-map ceiling + search ceiling for the order table / overlay
Angle Channel (-1=auto)-1Frame = Cmeasured vs. synthetic angle
Angle Full-scale6.283185 (2π)Frame = Cchannel value → radians
Angle is mechanicaloffFrame = Cwhether to multiply by pole pairs
Plot types (9 tick boxes)all offframe-dependentwhich curves / colormaps this run produces
Target ordersblank (auto)“order overlay” tickedwhich orders get overlay + null map

Frame (A / B / C)

The most important parameter — it defines what “Id/Iq” actually mean. Same currents, different coordinate system you observe them from.

ValueDefinition of Id/IqWhat the curves look likeAngle neededTypical use
A Stationary Park vectorId = iα, Iq = iβstill sinusoidal at fenoEPVA fault diagnosis (healthy = circular iα-iβ)
B Synchronous (SRF-PLL)Park with the PLL-estimated θ̂fundamental collapses to near-DC; harmonics/ripple emergeno (self-estimated)harmonics, ripple, modulation
C Rotor frame (default)uses the measured rotor angle if present, otherwise falls back to the synthetic PLL angle; then subtracts δnear-DC, and (with a true angle) genuine field/torque componentsyes (otherwise it degrades to B)FOC quantities, speed, torque

The curve labels state the active frame: Id (iα) / Id (synchronous) / Id (rotor, measured) / Id (rotor, synthetic).

What a wrong choice looks like

Interaction

PLL Bandwidth (Hz)

Loop bandwidth of the SRF-PLL. The engine uses a standard second-order loop with damping ζ=0.707 and ωn=2π·bandwidth, giving kp=2ζωn and ki=ωn². It is the “how fast may θ̂ change” knob.

Two hidden behaviours (they look like bugs)

1. In Frame A with “Order colormap” ticked, the PLL still runs. Order normalization needs fe, so the PLL runs in Frame A too and uses exactly this bandwidth value — while the row itself is hidden. To change it, switch to B or C, edit, and switch back.

2. The frequency is clamped. The seed fundamental f0 is the median per-sample angle increment over the whole record (log: “PLL seed fundamental … Hz”), after which the loop frequency is clamped to 0.5–1.8 × |f0| (active when |f0| > 0.5 Hz) to block the 1/5-subharmonic and 2nd-harmonic lock attractors. The cost: if the electrical frequency varies beyond that range within one analysis, the fe curve is flattened against the clamp limits and the fundamental drifts off order 1 in the order map. Fix: analyse wide run-ups in segments.

The “PLL seed fundamental” log line is a free sanity check: it should be close to your known electrical frequency (fe = speed × pole pairs / 60). If it is not, suspect channel mapping or polarity before PLL tuning.

Pole Pairs

Pole-pair count p (= poles ÷ 2, from the nameplate). Frame C only. Three uses:

  1. Speed: nmech = fe × 60 / p.
  2. Absolute torque: T = 1.5 · p · ψ · Iq.
  3. Mechanical-angle conversion: with “Angle is mechanical” ticked, θe = p · θm.

Align Offset δ (°)

Frame C only: the angle actually fed to Park is θ = θ_ref − δ. It only rotates the split between Id and Iq and never changes |Idq|. Physically it aligns the d axis with the magnet flux — “Id = field, Iq = torque” only holds once aligned.

Flux Linkage ψ (Wb)

Permanent-magnet flux linkage from the motor datasheet. Frame C only; it decides whether torque is absolute or relative:

ValueCurveFormulaUnit
0 (default)T_rel (∝Iq)1.5 · p · Iqrel
> 0T (torque)1.5 · p · ψ · IqN·m

Max Order

Ceiling for electrical order (order = f / fe, fundamental = 1). Default 10. One parameter, three jobs:

  1. ceiling of the order colormap axis, grid step fixed at 0.02 order;
  2. search ceiling of the problem-order table in the log, grid step 0.5 order, counting only orders ≥ 2;
  3. search ceiling when the electrical↔acoustic overlay picks its target order automatically.
Panel trap: this row is only shown while “Order colormap (Id/Iq)” is ticked, yet it still governs jobs 2 and 3. If you cannot find the row, tick “Order colormap” first; you may untick it afterwards, the value is kept.

Measured rotor angle (three parameters)

Frame C only. A real angle is what makes Id/Iq genuine field/torque components; without one the engine silently falls back to the synthetic PLL angle. Acquisition requirements for the angle signal (DC-coupled voltage channel, same clock and sample rate as the currents, range covering the ramp) are in the fundamentals document.

Angle Channel (-1 = auto)

Channels whose names look like an angle are automatically excluded from the NVH sensor set (an angle ramp is not vibration), so they never pollute the order table.

Angle Full-scale

The channel value that corresponds to one full turn. Conversion: θ = value × 2π / full-scale.

Angle signal formEnter
radians (0–2π)6.283185 (default)
degrees (0–360°)360
normalized (0–1)1
analog ramp voltage (0–Vmax)the ramp peak, e.g. 5 or 3.3

Angle is mechanical (× pole pairs)

You do not have to check this by hand. Whenever a measured angle is used, the log carries a measured-angle check: angle rate xx Hz / PLL f_e xx Hz = ratio line: The reference is the PLL's own fe (the PLL runs anyway in Frame C); the angle rate is the median per-sample increment, so the ramp wrap-around does not disturb the verdict.

Select plot types (which plots this run)

This group picks which plots this run produces — the analysis can emit a lot of curves and colormaps at once, enough to swamp a single Data Viewer, so nothing is ticked by default: tick what you need, and the selection is stored with the node. Ticking nothing still gives you the diagnosis: balance, EPVA modulation depth and the problem-order table always go to the log.

OutputDefaultProducesRequires / interacts
Current curves (Id / Iq / Idq)offthree curves in A (footer single value = RMS)—
Electrical frequency feofffe vs. time in Hz (sign = direction of rotation)only if the PLL ran (see below)
Electrical angle θeofframp wrapped to (−π,π], label states the source (measured/synthetic/PLL)same as above
Speed nmech & torqueoffspeed in rpm + T or T_relFrame C only
Colormap vs. timeoffthree time-frequency maps for Id / Iq / Idq (linear A)—
Order colormap (Id/Iq)offtwo order maps (order = f/fe)needs fe → forces the PLL to run, even in Frame A
Correlate vibration & noiseoffone order map per non-current channel, normalized by the current femust be combined with “Order colormap”, otherwise nothing is produced
Electrical↔acoustic order overlay (phase)offper target order: normalized current, normalized sensors, phase-difference curves + one null mapneeds θ; see target orders below

The two interactions people trip over:

1. “Correlate vibration & noise” alone does nothing. Its output lives inside the order-colormap branch — tick both to get vibration/noise order maps.

2. Frame A without “Order colormap” has no angle and no fe. So the fe and θe curves are absent, the overlay and null map are skipped entirely, and the problem-order table never appears in the log. Nothing failed — that frame simply never computes an angle. To get them in Frame A, tick “Order colormap” (it starts the PLL as a side effect).

Target orders (blank = auto)

Fixed values the engine uses that are not on the panel

ItemValueEffect
Spectrum size4096colormap frequency resolution Δf = fs/4096
WindowHanningspectral leakage in the colormaps
Overlap50%colormap time resolution
Max time bins600excess frames are max-reduced (peak hold, not averaged)
Max colormap frequency2000 Hzceiling of the vs.-time colormap axis
Remove DCoffeach phase has its record mean removed before Clarke
Order-analysis decimationto about 24 kHzapplied before coherent demodulation; it only lifts the noise floor slightly

Where to look: curves, colormaps, log

Curves and colormaps

All go to the Data Viewer. Current colormap values are linear amperes and are never converted to dB(SPL).

Log (Event Viewer)

These are always written and cost no plot slot — check them first when a parameter looks wrong:

Symptom → cause quick reference

What you seeMost likelyWhat to do
Log “balance … ⚠ too large”, |Idq| not constantphase mapping/polarity wrong, or real zero-sequenceverify the first 3 source channels are U/V/W; check clamp orientation
Id/Iq in Frame B/C beat slowly instead of being DCPLL bandwidth too low, or angle full-scale / mechanical tick wrongcheck the θe ramp rate against fe; if it matches, raise the bandwidth
fe flattened against two horizontal limitsPLL frequency clamp (0.5–1.8 × seed) is activeanalyse wide run-ups in segments
fe reads about 1/5 or 2× the true valuePLL locked to a sub/super harmonic (bad seed)check the seed line in the log; rule out channel mapping first
Id/Iq are noise but |Idq| is fineangle input (wrong channel / full-scale / mechanical tick)look at θe — is it a clean ramp?
Speed curve off by an integer ratiowrong pole-pair countp = fe×60 / measured speed, rounded to an integer
Torque unit is rel, not N·mflux linkage ψ left at 0enter the nameplate flux linkage in Wb
“Correlate vibration & noise” ticked but no vibration order maps“Order colormap” not tickedtick both
No fe / θe / order table in Frame AFrame A computes no angle by defaulttick “Order colormap”, or use Frame B
Large blank band at the top of the order mapMax Order exceeds (fs/2)/felower Max Order
Order map almost entirely dark|fe| < 1 Hz in those frames (not locked / machine stopped)cut the record to the running section
Cannot find the “Max Order” rowit only appears with “Order colormap” tickedtick it, edit, untick again if you like
Order table says there are no vibration/noise channelsonly currents selected in the source pooladd the vibration/microphone channels

Shortest path to a result

  1. Currents only: select U/V/W, choose Frame B → Id/Iq/|Idq| plus EPVA modulation depth and the balance check. No angle, pole pairs or flux linkage needed.
  2. Harmonics / orders: tick “Order colormap” (and “Correlate vibration & noise” if wanted) and set Max Order.
  3. “Which order should we inject?”: add the vibration/noise channels to the source pool and read the problem-order table in the log; tick the overlay for the null map and the predicted optimum injection phase.
  4. True rotor dq / absolute torque: wire the measured angle (DC-coupled, synchronously sampled), choose Frame C, set the angle channel/full-scale/mechanical tick, then pole pairs and flux linkage.
θe is always the foundation to verify: a uniform ramp whose rate equals fe (or fe/p for a mechanical angle) means the angle is right and everything downstream — Id/Iq, torque, order phase — is meaningful. Jumps, breaks or a mismatched rate mean fix the angle first and ignore the results.

Scope and known limits


© 2026 Deepsona. All Rights Reserved.