Note: This page has been translated by MathWorks. Click here to see

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

Discrete-time permanent magnet synchronous machine current controller

**Library:**Simscape / Electrical / Control / PMSM Control

The PMSM Current Controller block implements a discrete-time PI-based
permanent magnet synchronous machine (PMSM) current controller in the rotor
*d*-*q* reference frame.

You typically use this block in a series of blocks making up a control structure.

You can generate a current reference in the d-q frame to be used as an input to this block with a PMSM Current Reference Generator.

You can obtain a voltage reference in the abc domain by converting the output of this block using an Inverse Park Transform block.

You can see an example of a full control structure, from machine measurements to machine inputs, in the PMSM Field-Oriented Control block.

The block is discretized using the backward Euler method due to its first-order simplicity and its stability.

Two PI current controllers implemented in the rotor reference frame produce the reference voltage vector:

${v}_{d}^{ref}=\left({K}_{p\_id}+{K}_{i\_id}\frac{{T}_{s}z}{z-1}\right)\left({i}_{d}^{ref}-{i}_{d}\right)+{v}_{d\_FF},$

and

${v}_{q}^{ref}=\left({K}_{p\_iq}+{K}_{i\_iq}\frac{{T}_{s}z}{z-1}\right)\left({i}_{q}^{ref}-{i}_{q}\right)+{v}_{q\_FF},$

where:

$${v}_{d}^{ref}$$ and $${v}_{q}^{ref}$$ are the

*d*-axis and*q*-axis reference voltages, respectively.$${i}_{d}^{ref}$$ and $${i}_{q}^{ref}$$ are the

*d*-axis and*q*-axis reference currents, respectively.$${i}_{d}$$ and $${i}_{q}$$ are the

*d*-axis and*q*-axis currents, respectively.*K*and_{p_id}*K*are the proportional gains for the_{p_iq}*d*-axis and*q*-axis controllers, respectively.*K*and_{i_id}*K*are the integral gains for the_{i_iq}*d*-axis and*q*-axis controllers, respectively.*v*and_{d_FF}*v*are the feedforward voltages for the_{q_FF}*d*-axis and*q*-axis, respectively, obtained from the machine mathematical equations and provided as inputs.*T*is the sample time of the discrete controller._{s}

Using PI control results in a zero in the closed-loop transfer function, which can result in undesired overshoot in the closed-loop response. This zero can be canceled by introducing a zero-cancelation block in the feedforward path. The zero cancellation transfer functions in discrete time are:

${G}_{ZC\_id}\left(z\right)=\frac{\frac{{T}_{s}{K}_{i\_id}}{{K}_{p\_id}}}{z+\left(\frac{{T}_{s}-\frac{{K}_{p\_id}}{{K}_{i\_id}}}{\frac{{K}_{p\_id}}{{K}_{i\_id}}}\right)},$

and

${G}_{ZC\_iq}\left(z\right)=\frac{\frac{{T}_{s}{K}_{i\_iq}}{{K}_{p\_iq}}}{z+\left(\frac{{T}_{s}-\frac{{K}_{p\_iq}}{{K}_{i\_iq}}}{\frac{{K}_{p\_iq}}{{K}_{i\_iq}}}\right)}.$

Saturation must be imposed when the stator voltage vector exceeds the voltage
phase limit *V _{ph_max}*:

$\sqrt{{v}_{d}^{2}+{v}_{q}^{2}}\le {V}_{ph\_max},$

where *v _{d}* and

In the case of axis prioritization, the voltages
*v _{1}* and

*v*and_{1}= v_{d}*v*for_{2}= v_{q}*d*-axis prioritization.*v*and_{1}= v_{q}*v*for_{2}= v_{d}*q*-axis prioritization.

The constrained (saturated) voltages $${v}_{1}^{sat}$$ and $${v}_{2}^{sat}$$ are obtained as follows:

${v}_{1}^{sat}=\text{min}\left(\mathrm{max}\left({v}_{1}^{unsat},-{V}_{ph\_max}\right),{V}_{ph\_max}\right)$

and

${v}_{2}^{sat}=\text{min}\left(\mathrm{max}\left({v}_{2}^{unsat},-{V}_{2\_max}\right),{V}_{2\_max}\right),$

where:

$${v}_{1}^{unsat}$$ and $${v}_{2}^{unsat}$$ are the unconstrained (unsaturated) voltages.

*v*is the maximum value of_{2_max}*v*that does not exceed the voltage phase limit, given by ${v}_{2\_max}=\sqrt{{\left({V}_{ph\_max}\right)}^{2}-{\left({v}_{1}^{sat}\right)}^{2}}.$_{2}

In the case that the direct and quadrature axes have the same priority (d-q equivalence) the constrained voltages are obtained as follows:

${v}_{d}^{sat}=\text{min}\left(\mathrm{max}\left({v}_{d}^{unsat},-{V}_{d\_max}\right),{V}_{d\_max}\right)$

and

${v}_{q}^{sat}=\text{min}\left(\mathrm{max}\left({v}_{q}^{unsat},-{V}_{q\_max}\right),{V}_{q\_max}\right),$

where

${V}_{d\_max}=\frac{{V}_{ph\_max}\left|{v}_{d}^{unsat}\right|}{\sqrt{{({v}_{d}^{unsat})}^{2}+{({v}_{q}^{unsat})}^{2}}}$

and

${V}_{q\_max}=\frac{{V}_{ph\_max}\left|{v}_{q}^{unsat}\right|}{\sqrt{{({v}_{d}^{unsat})}^{2}+{({v}_{q}^{unsat})}^{2}}}.$

An anti-windup mechanism is employed to avoid saturation of integrator output. In such a situation, the integrator gains become:

${K}_{i\_id}+{K}_{aw\_id}\left({v}_{d}^{sat}-{v}_{d}^{unsat}\right)$

and

${K}_{i\_iq}+{K}_{aw\_iq}\left({v}_{q}^{sat}-{v}_{q}^{unsat}\right),$

where *K _{aw_id}* and

The plant model for direct and quadrature axis can be approximated with a first-order system.

This control solution is used only for permanent magnet synchronous motors with sinusoidal flux distribution and field windings.

[1] Bernardes, T., V. F. Montagner, H. A. Gründling, and H. Pinheiro.
"Discrete-time sliding mode observer for sensorless vector control of permanent magnet
synchronous machine." *IEEE Transactions on Industrial
Electronics.* Vol. 61, Number 4, 2014, pp. 1679–1691.

[2] Carpiuc, S., and C. Lazar. "Fast real-time constrained predictive current
control in permanent magnet synchronous machine-based automotive traction drives."
*IEEE Transactions on Transportation Electrification.* Vol.1,
Number 4, 2015, pp. 326–335.