# ee_generateIdealPMSMfluxData

Generate tabulated flux linkage data for ideal PMSM

## Syntax

## Description

`[`

generates 4-D flux linkage data, including torque and partial
derivatives, for an ideal permanent magnet synchronous motor (PMSM). `F`

,`T`

,`dFdA`

,`dFdB`

,`dFdC`

,`dFdX`

]
= ee_generateIdealPMSMfluxData(`PM`

,`Ld`

,`Lq`

,`L0`

,`A`

,`B`

,`C`

,`X`

)

Use this function to create test data for the FEM-Parameterized PMSM block, either for validation purposes or to set up a model before the actual flux linkage data is available.

## Examples

### Generate 4-D Flux Linkage Data

Specify the motor parameters.

PM = 0.1; % Permanent magnet flux N = 6; % Number of pole pairs Ld = 0.0002; % D-axis inductance Lq = 0.0002; % Q-axis inductance L0 = 0.00018; % Zero-sequence inductance Rs = 0.013; % Stator resistance

Define the phase current vectors.

iA = linspace(-250,250,5); iB = iA; iC = iA;

Specify the rotor angle vector based on the number of pole pairs.

X = pi/180*linspace(0,360/N,180/N+1);

Tabulate flux linkage partial derivatives and torque in terms of A-,B-,C-currents and rotor angle

[F,T,dFdA,dFdB,dFdC,dFdX] = ee_generateIdealPMSMfluxData(PM,Ld,Lq,L0,iA,iB,iC,X);

The function returns a 4-D flux linkage matrix F, a 4-D torque matrix T, and four 4-D matrices for the flux linkage partial derivatives. The four partial derivative matrices correspond to the three phase currents and the rotor angle, respectively. The matrix dimensions correspond to the three phase currents and the rotor angle.

### Generate 4-D Flux Linkage Matrix *F*

Specify the motor parameters.

PM = 0.1; % Permanent magnet flux N = 6; % Number of pole pairs Ld = 0.0002; % D-axis inductance Lq = 0.0002; % Q-axis inductance L0 = 0.00018; % Zero-sequence inductance Rs = 0.013; % Stator resistance

Define the phase current vectors.

iA = linspace(-250,250,5); iB = iA; iC = iA;

Specify the rotor angle vector based on the number of pole pairs.

X = pi/180*linspace(0,360/N,180/N+1);

Tabulate flux linkage partial derivatives and torque in terms of A-,B-,C-currents and rotor angle

F = ee_generateIdealPMSMfluxData(PM,Ld,Lq,L0,iA,iB,iC,X);

The function returns a 4-D flux linkage matrix F. The matrix dimensions correspond to the three phase currents and the rotor angle.

### Generate 3-D Flux Linkage Data

Specify the motor parameters.

PM = 0.1; % Permanent magnet flux N = 6; % Number of pole pairs Ld = 0.0002; % D-axis inductance Lq = 0.0002; % Q-axis inductance L0 = 0.00018; % Zero-sequence inductance Rs = 0.013; % Stator resistance

Define the *d*-axis and *q*-axis current vectors.

iD = linspace(-250,250,5); iQ = iD;

Specify the rotor angle vector based on the number of pole pairs.

X = pi/180*linspace(0,360/N,180/N+1);

Tabulate flux linkage partial derivatives and torque in terms of *d*-axis and *q*-axis currents and rotor angle.

[F,T,dFdA,dFdB,dFdC,dFdX] = ee_generateIdealPMSMfluxData(PM,Ld,Lq,L0,iD,iQ,X);

The function returns a 3-D flux linkage matrix F, a 3-D torque matrix T, and four 3-D matrices for the flux linkage partial derivatives. The four partial derivative matrices correspond to the three phase currents and the rotor angle, respectively. The matrix dimensions correspond to the *d*-axis and *q*-axis currents and the rotor angle.

### Generate 3-D Flux Linkage Matrix *F*

Specify the motor parameters.

Define the *d*-axis and *q*-axis
current vectors.

iD = linspace(-250,250,5); iQ = iD;

Specify the rotor angle vector based on the number of pole pairs.

X = pi/180*linspace(0,360/N,180/N+1);

Tabulate flux linkage partial derivatives and torque in terms of
*d*-axis and *q*-axis
currents and rotor angle.

F = ee_generateIdealPMSMfluxData(PM,Ld,Lq,L0,iD,iQ,X);

The function returns a 3-D flux linkage matrix *F*.
The matrix dimensions correspond to the *d*-axis
and *q*-axis currents and the rotor angle.

## Input Arguments

## Output Arguments

## Algorithms

The flux linking each winding has contributions from the permanent magnet plus the three windings. Therefore, the total flux is given by [1]:

$$\left[\begin{array}{c}{\psi}_{a}\\ \begin{array}{l}{\psi}_{b}\\ {\psi}_{c}\end{array}\end{array}\right]=\left[\begin{array}{ccc}{L}_{aa}& {L}_{ab}& {L}_{ac}\\ {L}_{ba}& {L}_{bb}& {L}_{bc}\\ {L}_{ca}& {L}_{cb}& {L}_{cc}\end{array}\right]\left[\begin{array}{c}{i}_{a}\\ \begin{array}{l}{i}_{b}\\ {i}_{c}\end{array}\end{array}\right]+\left[\begin{array}{c}{\psi}_{am}\\ \begin{array}{l}{\psi}_{bm}\\ {\psi}_{cm}\end{array}\end{array}\right]$$

$$\begin{array}{l}{L}_{aa}={L}_{s}+{L}_{m}\mathrm{cos}\left(2{\theta}_{r}\right)\\ {L}_{bb}={L}_{s}+{L}_{m}\mathrm{cos}\left(2\left({\theta}_{r}-2\pi /3\right)\right)\\ {L}_{cc}={L}_{s}+{L}_{m}\mathrm{cos}\left(2\left({\theta}_{r}+2\pi /3\right)\right)\\ {L}_{ab}={L}_{ba}=-{M}_{s}-{L}_{m}\mathrm{cos}\left({\theta}_{r}+\pi /6\right)\\ {L}_{bc}={L}_{cb}=-{M}_{s}-{L}_{m}\mathrm{cos}\left({\theta}_{r}+\pi /6-2\pi /3\right)\\ {L}_{ca}={L}_{ac}=-{M}_{s}-{L}_{m}\mathrm{cos}\left({\theta}_{r}+\pi /6+2\pi /3\right)\\ {\psi}_{am}={\psi}_{m}\mathrm{cos}{\theta}_{e}\\ {\psi}_{bm}={\psi}_{m}\mathrm{cos}\left({\theta}_{e}-2\pi /3\right)\\ {\psi}_{bm}={\psi}_{m}\mathrm{cos}\left({\theta}_{e}+2\pi /3\right)\end{array}$$

Here, *Θ*_{e} is
the electrical angle, which is related to rotor angle *Θ*_{r} by *Θ*_{e} = *N**·Θ*_{r}.
The function assumes that the permanent magnet flux linking the A-phase
winding is at the maximum for *Θ*_{e} =
0.

The function output `F`

corresponds to *ψ*_{a} tabulated
as a function of A-phase current, B-phase current, C-phase current,
and rotor angle.

*Ls*, *Lm*, and *Ms* are
related to input arguments `Ld`

, `Lq`

,
and `L0`

by:

$$\begin{array}{l}{L}_{s}=\frac{{L}_{0}}{3}+\frac{{L}_{d}}{3}+\frac{{L}_{q}}{3}\\ {M}_{s}=\frac{{L}_{d}}{6}-\frac{{L}_{0}}{3}+\frac{{L}_{q}}{6}\\ {L}_{m}=\frac{{L}_{d}}{3}-\frac{{L}_{q}}{3}\end{array}$$

## References

[1] Anderson, P.M. *Analysis of
Faulted Power Systems*. 1st Edition. Wiley-IEEE Press,
July 1995, p.187.

## Version History

**Introduced in R2017a**