# ee_generateIdealPMSMfluxData

Generate tabulated flux linkage data for ideal PMSM

## Syntax

``````[F,T,dFdA,dFdB,dFdC,dFdX] = ee_generateIdealPMSMfluxData(PM,Ld,Lq,L0,A,B,C,X)``````
``````F = ee_generateIdealPMSMfluxData(PM,Ld,Lq,L0,A,B,C,X)``````
``````[F,T,dFdA,dFdB,dFdC,dFdX] = ee_generateIdealPMSMfluxData(PM,Ld,Lq,L0,D,Q,X)``````
``````F = ee_generateIdealPMSMfluxData(PM,Ld,Lq,L0,D,Q,X)``````

## Description

example

``````[F,T,dFdA,dFdB,dFdC,dFdX] = ee_generateIdealPMSMfluxData(PM,Ld,Lq,L0,A,B,C,X)``` generates 4-D flux linkage data, including torque and partial derivatives, for an ideal permanent magnet synchronous motor (PMSM). 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. ```

example

``````F = ee_generateIdealPMSMfluxData(PM,Ld,Lq,L0,A,B,C,X)``` generates 4-D flux linkage matrix F for an ideal PMSM. ```

example

``````[F,T,dFdA,dFdB,dFdC,dFdX] = ee_generateIdealPMSMfluxData(PM,Ld,Lq,L0,D,Q,X)``` generates 3-D flux linkage data, including torque and partial derivatives, for an ideal PMSM. ```

example

``````F = ee_generateIdealPMSMfluxData(PM,Ld,Lq,L0,D,Q,X)``` generates 3-D flux linkage matrix F for an ideal PMSM. ```

## 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.

```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 = 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

collapse all

Peak permanent magnet flux linkage, in weber-turns, specified as a scalar.

Data Types: `double`

`D`-axis inductance, in henries, specified as a scalar.

Data Types: `double`

`Q`-axis inductance, in henries, specified as a scalar.

Data Types: `double`

Zero-sequence inductance, in henries, specified as a scalar.

Data Types: `double`

A-phase current, in amperes, specified as a vector. The vector must be monotonically increasing and two-sided (contain both positive and negative values). Best practice is to include zero current as one of the points. Use this input argument to generate 4-D flux linkage data.

Data Types: `double`

B-phase current, in amperes, specified as a vector. The vector must be monotonically increasing and two-sided (contain both positive and negative values). Best practice is to include zero current as one of the points. Use this input argument to generate 4-D flux linkage data.

Data Types: `double`

C-phase current, in amperes, specified as a vector. The vector must be monotonically increasing and two-sided (contain both positive and negative values). Best practice is to include zero current as one of the points. Use this input argument to generate 4-D flux linkage data.

Data Types: `double`

D-axis current, in amperes, specified as a vector. The vector must be monotonically increasing and two-sided (contain both positive and negative values). Best practice is to include zero current as one of the points. Use this input argument to generate 3-D flux linkage data.

Data Types: `double`

Q-axis current, in amperes, specified as a vector. The vector must be monotonically increasing and two-sided (contain both positive and negative values). Best practice is to include zero current as one of the points. Use this input argument to generate 3-D flux linkage data.

Data Types: `double`

The rotor angle, in radians, specified as a vector. The values must be in the range from zero to 2π/N, where N is the number of pole pairs.

Data Types: `double`

## Output Arguments

collapse all

The flux linkage, in weber-turns, returned as a matrix. The matrix can be four-dimensional or three-dimensional, depending on the syntax used to call the function. In a four-dimensional matrix, the first three dimensions correspond to the phase currents, and the fourth dimension corresponds to the rotor angle. In a three-dimensional matrix, the first two dimensions correspond to the `d`-axis and `q`-axis currents, and the third dimension corresponds to the rotor angle.

Torque, in N*m, returned as a matrix. The matrix can be four-dimensional or three-dimensional, depending on the syntax used to call the function. In a four-dimensional matrix, the first three dimensions correspond to the phase currents, and the fourth dimension corresponds to the rotor angle. In a three-dimensional matrix, the first two dimensions correspond to the `d`-axis and `q`-axis currents, and the third dimension corresponds to the rotor angle.

Flux linkage partial derivative with respect to the A-phase current, returned as a matrix. The matrix can be four-dimensional or three-dimensional, depending on the syntax used to call the function. In a four-dimensional matrix, the first three dimensions correspond to the phase currents, and the fourth dimension corresponds to the rotor angle. In a three-dimensional matrix, the first two dimensions correspond to the `d`-axis and `q`-axis currents, and the third dimension corresponds to the rotor angle.

Flux linkage partial derivative with respect to the B-phase current, returned as a matrix. The matrix can be four-dimensional or three-dimensional, depending on the syntax used to call the function. In a four-dimensional matrix, the first three dimensions correspond to the phase currents, and the fourth dimension corresponds to the rotor angle. In a three-dimensional matrix, the first two dimensions correspond to the `d`-axis and `q`-axis currents, and the third dimension corresponds to the rotor angle.

Flux linkage partial derivative with respect to the C-phase current, returned as a matrix. The matrix can be four-dimensional or three-dimensional, depending on the syntax used to call the function. In a four-dimensional matrix, the first three dimensions correspond to the phase currents, and the fourth dimension corresponds to the rotor angle. In a three-dimensional matrix, the first two dimensions correspond to the `d`-axis and `q`-axis currents, and the third dimension corresponds to the rotor angle.

Flux linkage partial derivative with respect to the rotor angle, returned as a matrix. The matrix can be four-dimensional or three-dimensional, depending on the syntax used to call the function. In a four-dimensional matrix, the first three dimensions correspond to the phase currents, and the fourth dimension corresponds to the rotor angle. In a three-dimensional matrix, the first two dimensions correspond to the `d`-axis and `q`-axis currents, and the third dimension corresponds to the rotor angle.

## 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.