Space Vectors

Space Vectors#

The system models in motulator apply peak-valued complex space vectors, marked with boldface in the following equations [1]. As an example, consider the space vector of the stator current,

(1)#\[\begin{split}\boldsymbol{i}^\mathrm{s}_\mathrm{s} &= \frac{2}{3}\left(i_\mathrm{sa} + i_\mathrm{sb}\mathrm{e}^{\mathrm{j}2\pi/3} + i_\mathrm{sc}\mathrm{e}^{\mathrm{j} 4\pi/3}\right) \\ &= i_{\mathrm{s}\alpha} + \mathrm{j} i_{\mathrm{s}\beta}\end{split}\]

where \(i_\mathrm{sa}\), \(i_\mathrm{sb}\), and \(i_\mathrm{sc}\) are the phase currents, which may vary freely in time. In this notation, the subscript s refers to the stator quantities and the superscript s refers to the stationary coordinates. In code, this space vector is denoted by i_s_ab.

The space vector does not include the zero-sequence component, which is defined as

(2)#\[i_0 = \frac{1}{3}\left(i_\mathrm{a} + i_\mathrm{b} + i_\mathrm{c}\right)\]

Even though the zero-sequence voltage exists at the output of typical converters, there is no path for the zero-sequence current to flow (i.e., \(i_0 = 0\)), if the three-phase system is delta-connected or its star point is not connected. Consequently, the zero-sequence voltage cannot produce power or torque.

The space vector can be transformed to other coordinates as

(3)#\[\boldsymbol{i}_\mathrm{s} = \mathrm{e}^{-\mathrm{j}\vartheta_\mathrm{k}}\boldsymbol{i}^\mathrm{s}_\mathrm{s}\]

where \(\vartheta_\mathrm{k}\) is the angle of the new coordinate system with respect to stationary coordinates. The coordinate system can be fixed to a physical rotor or it can defined by a control system (typically fixed to some estimated quantity). The components in rotor coordinates are traditionally denoted according to \(\boldsymbol{i}_\mathrm{s} = i_\mathrm{sd} + \mathrm{j} i_\mathrm{sq}\). Hence, in code, the current vector in rotor coordinates is denoted by i_s_dq. The vector in controller coordinates is simply denoted by i_s in code. The notation for other space vectors is similar.

The space vector transformation in (1) is implemented in the function motulator.common.utils.abc2complex() and its inverse transformation in the function motulator.common.utils.complex2abc().

References