Electric Machines#
This document describes continuous-time electric machine models.
Induction Machine#
The induction machine models are provided in the package motulator.drive.model
. The models are implemented in stator coordinates. A Γ-equivalent model is used as a base model since it can be extended with the magnetic saturation model in a straightforward manner [1].
Γ model.#
Γ model.#
Block diagram of the machine model. The magnetic model includes the flux equations (or, optionally, saturation characteristics) and the torque equation.#
Block diagram of the machine model. The magnetic model includes the flux equations (or, optionally, saturation characteristics) and the torque equation.#
The voltage equations are
where \(\boldsymbol{u}_\mathrm{s}^\mathrm{s}\) is the stator voltage, \(\boldsymbol{i}_\mathrm{s}^\mathrm{s}\) is the stator current, \(\boldsymbol{i}_\mathrm{r}^\mathrm{s}\) is the rotor current, \(R_\mathrm{s}\) is the stator resistance, and \(R_\mathrm{r}\) is the rotor resistance. The electrical angular speed of the rotor is \(\omega_\mathrm{m} = n_\mathrm{p}\omega_\mathrm{M}\), where \(\omega_\mathrm{M}\) is the mechanical angular speed of the rotor and \(n_\mathrm{p}\) is the number of pole pairs. The stator flux linkage \(\boldsymbol{\psi}_\mathrm{s}^\mathrm{s}\) and the rotor flux linkage \(\boldsymbol{\psi}_\mathrm{r}^\mathrm{s}\), respectively, are
where \(L_\mathrm{s}\) is the stator inductance and \(L_\ell\) is the leakage inductance. This linear magnetic model is applied in the class motulator.drive.model.InductionMachine
. Its parameters are defined in the data class motulator.drive.model.InductionMachinePars
. The electromagnetic torque is
The same class can also be used with the main-flux saturation models, such as \(L_\mathrm{s} = L_\mathrm{s}(\psi_\mathrm{s})\) [2]. See also the example 2.2-kW induction motor, saturated.
Note
If the magnetic saturation is omitted, the Γ model is mathematically identical to the inverse-Γ and T models. For example, the parameters of the Γ model can be transformed to those of the inverse-Γ model parameters as follows:
The inverse-Γ model parameters can be given using the data class motulator.drive.model.InductionMachineInvGammaPars
. Unlike the Γ model, the inverse-Γ model does not support the magnetic saturation model.
Inverse-Γ model.#
Inverse-Γ model.#
Example control methods in the package motulator.drive.control.im
are based on the inverse-Γ model.
Synchronous Machine#
Synchronous machine models are provided in the package motulator.drive.model
. The models can be parametrized to represent permanent-magnet synchronous machines (PMSMs) and synchronous reluctance machines (SyRMs).
Block diagram of the machine model in rotor coordinates. The magnetic model includes the flux equation (or, optionally, saturation characteristics) and the torque equation.#
Block diagram of the machine model in rotor coordinates. The magnetic model includes the flux equation (or, optionally, saturation characteristics) and the torque equation.#
The voltage equation in rotor coordinates is [3]
where \(\boldsymbol{u}_\mathrm{s}\) is the stator voltage and \(\boldsymbol{i}_\mathrm{s}\) is the stator current. In the magnetically linear case, the stator flux linkage is
where \(L_\mathrm{d}\) is the d-axis inductance, \(L_\mathrm{q}\) is the q-axis inductance, \(\psi_\mathrm{f}\) is the permanent-magnet (PM) flux linkage. As special cases, this model represents a surface-PMSM with \(L_\mathrm{d} = L_\mathrm{q}\) and SyRM with \(\psi_\mathrm{f}=0\).
The electromagnetic torque is
Since the machine is fed and observed from stator coordinates, the quantities are transformed accordingly, as shown in the figure below. The mechanical subsystem closes the loop from \(\tau_\mathrm{M}\) to \(\omega_\mathrm{M}\), see Mechanics.
Synchronous machine model seen from stator coordinates.#
Synchronous machine model seen from stator coordinates.#
The model is implemented in the class motulator.drive.model.SynchronousMachine
. The parameters are defined in the data class motulator.drive.model.SynchronousMachinePars
for the linear magnetics, see (5).
Magnetic Saturation#
The linear magnetic model (5) can be replaced with \(\boldsymbol{\psi}_\mathrm{s} = \psi_\mathrm{d} + \mathrm{j}\psi_\mathrm{q}\), where the flux linkage components
are nonlinear in the components of the current vector \(\boldsymbol{i}_\mathrm{s} = i_\mathrm{d} + \mathrm{j} i_\mathrm{q}\). Other equations of the model remain the same. The flux linkage maps are numerically invertible. These maps are often modeled either in a form of lookup tables or explicit functions [4], [5]. The magnetic saturation can be parametrized using the data class motulator.drive.model.SaturatedSynchronousMachinePars
. Furthermore, methods for manipulating and plotting the flux map data are provided, see the class motulator.drive.utils.MagneticModel
, motulator.drive.utils.plot_maps()
, and motulator.drive.utils.plot_flux_vs_current()
. See also the examples 5.5-kW PM-SyRM, saturated, 6.7-kW SyRM, saturated, and 5-kW PM-SyRM, flux maps from SyR-e.
MTPA and MTPV Conditions#
The maximum-torque-per-ampere (MTPA) condition of a saturable machine can be compactly presented by means of the auxiliary flux vector [6]. Applying the current vector \(\boldsymbol{i}_\mathrm{s} = i \mathrm{e}^{\mathrm{j}\gamma}\) with a given magnitude \(i\) in the torque expression (6), the MTPA condition is obtained by setting \(\partial \tau_\mathrm{M}/\partial \gamma = 0\), resulting in
where the star operator denotes the complex conjugate. The auxiliary flux vector \(\boldsymbol{\psi}_\mathrm{a}\) is defined as
where \(L_\mathrm{dd} = \partial \psi_\mathrm{d}/\partial i_\mathrm{d}\), \(L_\mathrm{qq} = \partial \psi_\mathrm{q}/\partial i_\mathrm{q}\), and \(L_\mathrm{dq} = \partial \psi_\mathrm{d}/\partial i_\mathrm{q}\) are the incremental inductances obtained from (7). Notice that the auxiliary flux is a function of the stator current, \(\boldsymbol{\psi}_\mathrm{a} = \boldsymbol{\psi}_\mathrm{a}(\boldsymbol{i}_\mathrm{s})\).
The maximum-torque-per-volt (MTPV) condition can be derived similarly, resulting in
The auxiliary current vector \(\boldsymbol{\psi}_\mathrm{a}\) is defined as
where \(\Gamma_\mathrm{dd} = \partial i_\mathrm{d}/\partial \psi_\mathrm{d}\), \(\Gamma_\mathrm{qq} = \partial i_\mathrm{q}/\partial \psi_\mathrm{q}\), and \(\Gamma_\mathrm{dq} = \partial i_\mathrm{d}/\partial \psi_\mathrm{q}\) are the incremental inverse inductances. The auxiliary current is a function of the flux linkage, \(\boldsymbol{i}_\mathrm{a} = \boldsymbol{i}_\mathrm{a}(\boldsymbol{\psi}_\mathrm{s})\). The data class motulator.drive.model.SaturatedSynchronousMachinePars
contains methods for computing auxiliary flux and current vectors based on the given magnetic model. In addition to optimal reference generation, these vectors are useful in sensorless observers and flux-vector control [7].
The MTPA and MTPV conditions in (8) and (10) are realized in the class motulator.drive.utils.ControlLoci
that provides methods for computing the MTPA, MTPV, and constant current loci for magnetically linear as well as saturated machines. The class motulator.drive.utils.MachineCharacteristics
provides methods for visualizing these loci. See also the examples 5.5-kW PM-SyRM, saturated, 6.7-kW SyRM, saturated, and 5-kW PM-SyRM, flux maps from SyR-e.
Note
Here, we define the auxiliary vectors according to the conventions used in [8], which differ from the conventions in [6], i.e., the vectors defined here are 90 degrees rotated as compared to [6].
References