# Flux Observer

Compute electrical position, magnetic flux, and electrical torque of rotor

Since R2020a

Libraries:
Motor Control Blockset / Sensorless Estimators

## Description

The Flux Observer block computes the electrical position, magnetic flux, and electrical torque of a PMSM or an induction motor by using the per unit voltage and current values along the α- and β-axes in the stationary αβ reference frame.

The block also accepts 16-bit fixed-point datatype inputs. To perform mathematical operations on 16-bit fixed-point datatype signals, the block uses optimized implementation of equations for maintaining the best possible precision.

### Equations

These equations describe how the block computes the electrical position, magnetic flux, and electrical torque for a PMSM.

If $\left({V}_{\alpha }-{I}_{\alpha }R\right)={v}_{1}\left(t\right)$ and $\left({V}_{\beta }-{I}_{\beta }R\right)={v}_{2}\left(t\right)$

Then, the following Laplace transforms represent the integral terms available in Ψα and Ψβ:

`$\begin{array}{l}L\left({\int }^{\text{​}}{\text{v}}_{1}\text{(t)dt}\right)=\frac{1}{s}L\left({\text{v}}_{1}\text{(t)}\right)=\frac{1}{s}{v}_{1}\left(s\right)\\ L\left({\int }^{\text{​}}{\text{v}}_{2}\text{(t)dt}\right)=\frac{1}{s}L\left({\text{v}}_{2}\text{(t)}\right)=\frac{1}{s}{v}_{2}\left(s\right)\end{array}$`

The block uses low-pass filter (LPF) based integrator to compute these integral terms.

If the input electrical speed of the motor (ωe) is much greater than the speed corresponding to the cut-off frequency of LPF-based integrator (ωc), then

`$\begin{array}{l}L\left({\int }^{\text{​}}{\text{v}}_{1}\text{(t)dt}\right)=\frac{1}{\left(s+{\omega }_{c}\right)}{v}_{1}\left(s\right)\\ L\left({\int }^{\text{​}}{\text{v}}_{2}\text{(t)dt}\right)=\frac{1}{\left(s+{\omega }_{c}\right)}{v}_{2}\left(s\right)\end{array}$`

The LPF-based integrator that the block uses eliminates any DC offset that the block may have. For example, consider an input function X(s)=k/s. Using the preceding transfer function of $G\left(s\right)=\frac{1}{\left(s+{\omega }_{c}\right)}$, we obtain:

`$\begin{array}{l}Y\left(s\right)=G\left(s\right)X\left(s\right)=\frac{k}{s\left(s+{\omega }_{c}\right)}=\frac{k}{{\omega }_{c}}\left(\frac{1}{s}\right)-\frac{k}{{\omega }_{c}}\left(\frac{1}{s+{\omega }_{c}}\right)\\ Y\left(t\right)=\frac{k}{{\omega }_{c}}u\left(t\right)-\frac{k}{{\omega }_{c}}\mathrm{exp}\left(-{\omega }_{c}t\right)u\left(t\right)\end{array}$`

The preceding equation shows that the DC component in the resulting output Y(t) reduces exponentially with time. Therefore, the LPF-based integrator enables the block to eliminate any DC component available in the system.

`${T}_{\text{e}}=\frac{3}{2}P\left({\psi }_{\alpha }{I}_{\beta }-{\psi }_{\beta }{I}_{\alpha }\right)$`

These equations describe how the block computes the rotor electrical position, rotor magnetic flux, and electrical torque for an induction motor.

As explained previously, the LPF-based integrator enables the block to eliminate any DC component available in Ψα and Ψβ.

`$\sigma =1-\frac{{L}_{m}^{2}}{{L}_{r}\cdot {L}_{s}}$`

`${T}_{\text{e}}=\frac{3}{2}\cdot P\cdot \frac{{L}_{m}}{{L}_{r}}\left({\psi }_{\alpha }{I}_{\beta }-{\psi }_{\beta }{I}_{\alpha }\right)$`

where:

• ${V}_{\alpha }$ and ${V}_{\beta }$ are the α-axis and β-axis voltages (Volts).

• ${I}_{\alpha }$ and ${I}_{\beta }$ are the α-axis and β-axis current (Amperes).

• $R$ is the stator resistance of the motor (Ohms).

• ${L}_{s}$ is the stator inductance of the motor (Henry).

• ${L}_{r}$ is the rotor inductance of the motor (Henry).

• ${L}_{m}$ is the magnetizing inductance of the motor (Henry).

• $\sigma$ is the total leakage factor of the induction motor.

• $P$ is the number of motor pole pairs.

• $\psi$ is the rotor magnetic flux (Weber).

• ${\psi }_{\alpha }$ and ${\psi }_{\beta }$ are the rotor magnetic fluxes along the α- and β-axes (Weber).

• ${T}_{e}$ is the electrical torque of the rotor (Nm).

• ${\theta }_{e}$ is the electrical position of the rotor (Radians).

## Ports

### Input

expand all

Voltage component along the α-axis in the stationary αβ reference frame.

Data Types: `single` | `double` | `fixed point`

Voltage component along the β-axis in the stationary αβ reference frame.

Data Types: `single` | `double` | `fixed point`

Current along the α-axis in the stationary αβ reference frame.

Data Types: `single` | `double` | `fixed point`

Current along the β-axis in the stationary αβ reference frame.

Data Types: `single` | `double` | `fixed point`

The pulse (true value) that resets the block algorithm.

Data Types: `single` | `double` | `fixed point`

### Output

expand all

The electrical position of the rotor as estimated by the block.

#### Dependencies

To enable this port, set Block output to `Position`.

Data Types: `single` | `double` | `fixed point`

The magnetic flux of the rotor as estimated by the block.

#### Dependencies

To enable this port, set Block output to `Flux`.

Data Types: `single` | `double` | `fixed point`

The electrical torque of the rotor as estimated by the block.

#### Dependencies

To enable this port, set Block output to `Torque`.

Data Types: `single` | `double` | `fixed point`

## Parameters

expand all

### Motor parameters

Select the type of motor that the block supports.

To process 16-bit fixed-point inputs and perform computation using 16-bit fixed-point data type, select this parameter. To use a data type other than 16-bit fixed point, clear this parameter.

#### Dependencies

If you select this parameter:

• The block sets the Input unit parameter to `Per-unit` because 16-bit datatype does not work with SI units.

• The block selects only Position option for the Block output parameter because it cannot generate flux or torque output using 16-bit datatype.

Select the unit of the α and β-axes voltage and current input values.

The maximum phase voltage applied to the PMSM. For details, see Per-Unit System.

#### Dependencies

To enable this parameter, set Input unit to `Per-unit`.

The maximum measurable current supplied to the PMSM. For details, see Per-Unit System.

#### Dependencies

To enable this parameter, set Input unit to `Per-unit`.

Select one or more quantities that the block should compute and display in the block output.

Note

You must select at least one value. The block displays an error message if you click or without selecting any value.

Number of pole pairs available in the motor.

#### Dependencies

To enable this parameter, set Block output to `Torque`.

Stator phase winding resistance of the motor in ohms.

Stator winding inductance of the motor along d-axis in Henry.

#### Dependencies

To enable this parameter, set Motor selection to `PMSM`.

Leakage inductance of the induction motor stator winding in Henry.

#### Dependencies

To enable this parameter, set Motor selection to `ACIM`.

Leakage inductance of the induction motor rotor winding in Henry.

#### Dependencies

To enable this parameter, set Motor selection to `ACIM`.

Magnetizing inductance of the induction motor in Henry.

#### Dependencies

To enable this parameter, set Motor selection to `ACIM`.

Cutoff frequency of the internal high-pass filter (that filters noise) in Hertz.

The Flux Observer block uses an internal first order IIR high-pass filter. You should set the Cutoff frequency (Hz) for this filter to a value that is lower than the lowest frequency corresponding to the minimum speed of the motor. For example, you can enter a value that is one-tenth of the lowest electrical frequency of the stator voltages and the currents. However, you can adjust this value to determine a more accurate cutoff frequency that generates the desired block output.

The fixed time interval in seconds between two consecutive instances of block execution.

### Datatypes

Unit of the electrical position output.

#### Dependencies

To enable this parameter, set Block output to `Position`.

Data type of the electrical position output.

#### Dependencies

To enable this parameter, set Block output to `Position`.

Unit of the magnetic flux output.

#### Dependencies

To enable this parameter, set Block output to `Flux`.

Data type of the magnetic flux output.

#### Dependencies

To enable this parameter, set Block output to `Flux`.

Unit of the electrical torque output.

#### Dependencies

To enable this parameter, set Block output to `Torque`.

Data type of the electrical torque output.

#### Dependencies

To enable this parameter, set Block output to `Torque`.

## References

[1] A. Podder and D. Pandit, "Study of Sensorless Field-Oriented Control of SPMSM Using Rotor Flux Observer & Disturbance Observer Based Discrete Sliding Mode Observer," 2021 IEEE 22nd Workshop on Control and Modelling of Power Electronics (COMPEL), 2021, pp. 1-8. (doi: 10.1109/COMPEL52922.2021.9645939)

[2] O. Sandre-Hernandez, J. J. Rangel-Magdaleno and R. Morales-Caporal, "Simulink-HDL cosimulation of direct torque control of a PM synchronous machine based FPGA," 2014 11th International Conference on Electrical Engineering, Computing Science and Automatic Control (CCE), Campeche, 2014, pp. 1-6. (doi: 10.1109/ICEEE.2014.6978298)

[3] Y. Inoue, S. Morimoto and M. Sanada, "Control method suitable for direct torque control based motor drive system satisfying voltage and current limitations," The 2010 International Power Electronics Conference - ECCE ASIA -, Sapporo, 2010, pp. 3000-3006. (doi: 10.1109/IPEC.2010.5543698)

## Version History

Introduced in R2020a