# How to use Luenberger observer for induction motor rotor flux estimation?

I have implemented field oriented control algorithm of three phase induction motor with speed sensor. Now I would like to improve the rotor flux estimation algorithm with Luenberger observer usage. My idea was to use the state space model of the induction motor in following form:

\begin{align} \frac{\mathrm{d}}{\mathrm{d}t} \begin{bmatrix} i_{s\alpha}\\ i_{s\beta}\\ \psi_{r\alpha}\\ \psi_{r\beta} \end{bmatrix} &= \begin{bmatrix} -\alpha & 0 & \beta & \gamma\cdot\omega_m \\ 0 & -\alpha & -\gamma\cdot\omega_m & \beta \\ R_r\frac{L_h}{L_r} & 0 & -\frac{R_r}{L_r} & -\omega_m \\ 0 & R_r\frac{L_h}{L_r} & \omega_m & -\frac{R_r}{L_r} \end{bmatrix} \cdot \begin{bmatrix} i_{s\alpha} \\ i_{s\beta} \\ \psi_{r\alpha} \\ \psi_{r\beta} \end{bmatrix} + \begin{bmatrix} \delta & 0 \\ 0 & \delta \\ 0 & 0 \\ 0 & 0 \\ \end{bmatrix} \cdot \begin{bmatrix} u_{s\alpha} \\ u_{s\beta} \end{bmatrix} \\ \\ \dot{\mathbf{x}}_T &= \mathbf{A}_T\cdot \mathbf{x}_T + \textbf{B}_T\cdot \mathbf{u} \\ \begin{bmatrix} i_{s\alpha} \\ i_{s\beta} \end{bmatrix} &= \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \end{bmatrix} \cdot \begin{bmatrix} i_{s\alpha} \\ i_{s\beta} \\ \psi_{r\alpha} \\ \psi_{r\beta} \end{bmatrix} \\ \mathbf{y}_T &= \mathbf{C}_T\cdot\mathbf{x}_T \end{align} where

$$\alpha = \frac{R_s + R_r\frac{L^2_h}{L^2_r}}{L_{s\sigma}+\frac{L_h}{L_r}L_{r\sigma}}$$

$$\beta = \frac{R_r\frac{L_h}{L^2_r}}{L_{s\sigma}+\frac{L_h}{L_r}L_{r\sigma}}$$

$$\gamma = \frac{\frac{L_h}{L_r}}{L_{s\sigma}+\frac{L_h}{L_r}L_{r\sigma}}\cdot p_p$$

$$\delta = \frac{1}{L_{s\sigma}+\frac{L_h}{L_r}L_{r\sigma}}$$

System state consists of components of the space vector of the stator current in the stator reference frame along with the components of the space vector of the rotor flux in the stator reference frame. Input to the system consists of the components of the space vector of the stator voltage in the stator reference frame. Output of the system consists of the components of the space vector of the stator current in the stator reference frame.

Based on the inspection of the above mentioned system matrix it is obvious that this matrix is rotor speed dependent ($$\\omega_m\$$). This is not a problem because I have the information about the rotor speed (I have been using the foc algorithm with speed sensor). My intention is to use the standard Luenberger observer i.e. variant for linear time independent systems and in each sampling period evaluate the elements of the system matrix based on current value of the rotor mechanical speed at first. Please can anybody tell me whether this approach is correct or whether it is necessary to use the the extended Luenberger observer which is dedicated for non-linear systems? Thanks in advance for any ideas.

EDIT:

Transformation of the state space model from the T equivalent circuit into the inverse gamma equivalent circuit:

The goal is to have the state space model for the inverse gamma equivalent circuit. It means that it is necessary to transform the matrices $$\\mathbf{A}_T, \mathbf{B}_T, \mathbf{C}_T\$$ above with some trasformation matrix usage.

The transformation matrix can be found based on following relationship between the above mentioned state space model for the T equivalent circuit and the inverse gamma equivalent circuit:

$$\hat{\mathbf{i}}_{s\Gamma^-1} = \hat{\mathbf{i}}_{sT} \\ \hat{\boldsymbol{\psi}}_{r\Gamma^{-1}}= \hat{\boldsymbol{\psi}}_{rT}\cdot\frac{L_h}{L_r}$$

The previously mentioned formulas can be written in matrix form

$$\begin{bmatrix} \hat{\mathbf{i}}_{s\Gamma^{-1}} \\ \hat{\boldsymbol{\psi}}_{r\Gamma^{-1}} \end{bmatrix} = \begin{bmatrix} \mathbf{I} & 0 \\ 0 & \frac{L_h}{L_r}\cdot\mathbf{I} \end{bmatrix} \cdot \begin{bmatrix} \hat{\mathbf{i}}_{sT} \\ \hat{\boldsymbol{\psi}}_{rT} \end{bmatrix}$$

In case we express the state vector for the T equivalent circuit from the last matrix equation, we have

$$\mathbf{x}_T = \begin{bmatrix} \hat{\mathbf{i}}_{sT} \\ \hat{\boldsymbol{\psi}}_{rT} \end{bmatrix} = \begin{bmatrix} \mathbf{I} & 0 \\ 0 & \frac{L_r}{L_h}\cdot\mathbf{I} \end{bmatrix} \cdot \begin{bmatrix} \hat{\mathbf{i}}_{s\Gamma^{-1}} \\ \hat{\boldsymbol{\psi}}_{r\Gamma^{-1}} \end{bmatrix} = \mathbf{T} \cdot \mathbf{x}_{\Gamma^{-1}}$$

Now we can substitute the $$\\mathbf{x}_T\$$ into the state space model for the T equivalent circuit

$$\dot{\mathbf{x}}_T = \mathbf{A}_T\cdot \mathbf{x}_T + \textbf{B}_T\cdot \mathbf{u}$$

$$\frac{\mathrm{d}}{\mathrm{d}t}\left(\mathbf{T}\cdot\mathbf{x}_{\Gamma^{-1}}\right) = \mathbf{A}_T\cdot\left(\mathbf{T}\cdot\mathbf{x}_{\Gamma^{-1}}\right) + \mathbf{B}_T\cdot \mathbf{u}_T$$

$$\dot{\mathbf{x}}_{\Gamma^{-1}} = \mathbf{T}^{-1}\cdot\mathbf{A}_T\cdot\mathbf{T}\cdot\mathbf{x}_{\Gamma^{-1}} + \mathbf{T}^{-1}\cdot\mathbf{B}_T\cdot\mathbf{u}_T$$

respectively

$$\mathbf{y}_{T} = \mathbf{y}_{\Gamma^{-1}} = \mathbf{C}_T\cdot\mathbf{T}\cdot\mathbf{x}_{\Gamma^{-1}}$$

Based on that we have know how to transform the matrices of the T state space model

$$\mathbf{A}_{\Gamma^{-1}} = \mathbf{T}^{-1}\cdot\mathbf{A}_T\cdot\mathbf{T}$$

$$\mathbf{B}_{\Gamma^{-1}} = \mathbf{T}^{-1}\cdot\mathbf{B}_T$$

$$\mathbf{C}_{\Gamma^{-1}} = \mathbf{C}_T\cdot\mathbf{T}$$

At this moment we can substitute into the transformation equations

$$\mathbf{A}_{\Gamma^{-1}} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & \frac{L_h}{L_r} & 0 \\ 0 & 0 & 0 & \frac{L_h}{L_r} \end{bmatrix} \cdot \begin{bmatrix} -\alpha & 0 & \beta & \gamma\cdot\omega_m \\ 0 & -\alpha & -\gamma\cdot\omega_m & \beta \\ R_r\frac{L_h}{L_r} & 0 & \frac{-R_r}{L_r} & \omega_m \\ 0 & R_r\frac{L_h}{L_r} & \omega_m & -\frac{R_r}{L_r} \end{bmatrix} \cdot \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & \frac{L_r}{L_h} & 0 \\ 0 & 0 & 0 & \frac{L_r}{L_h} \end{bmatrix}$$

$$\mathbf{A}_{\Gamma^{-1}} = \begin{bmatrix} -\alpha & 0 & \frac{L_r}{L_h}\cdot\beta & \frac{L_r}{L_h}\cdot\gamma\cdot\omega_m \\ 0 & -\alpha & -\frac{L_r}{L_h}\cdot\gamma\cdot\omega_m & \frac{L_r}{L_h}\cdot\beta \\ \frac{L_h}{L_r}\cdot R_r\cdot\frac{L_h}{L_r} & 0 & -\frac{L_r}{L_h}\cdot\frac{L_h}{L_r}\cdot R_r & -\frac{L_r}{L_h}\cdot\frac{L_h}{L_r}\cdot\omega_m \\ 0 & \frac{L_h}{L_r}\cdot R_r\cdot\frac{L_h}{L_r} & \frac{L_r}{L_h}\cdot\frac{L_h}{L_r}\cdot\omega_m & -\frac{L_r}{L_h}\cdot\frac{L_h}{L_r}\cdot R_r \end{bmatrix}$$

$$\mathbf{B}_{\Gamma^{-1}} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & \frac{L_h}{L_r} & 0 \\ 0 & 0 & 0 & \frac{L_h}{L_r} \end{bmatrix} \cdot \begin{bmatrix} \delta & 0 \\ 0 & \delta \\ 0 & 0 \\ 0 & 0 \end{bmatrix} = \begin{bmatrix} \delta & 0 \\ 0 & \delta \\ 0 & 0 \\ 0 & 0 \end{bmatrix}$$

$$\mathbf{C}_{\Gamma^{-1}} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \end{bmatrix} \cdot \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & \frac{L_h}{L_r} & 0 \\ 0 & 0 & 0 & \frac{L_h}{L_r} \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \end{bmatrix}$$

Now we can substitute for the $$\ \alpha, \beta, \gamma, \delta \$$ into the matrices $$\\mathbf{A}_{\Gamma^{-1}}, \mathbf{B}_{\Gamma^{-1}}, \mathbf{C}_{\Gamma^{-1}} \$$. We also have take into account that the inverse gamma equivalent circuit contains following parameters: total leakage inductance $$\L_L = L_{s\sigma} + \frac{L_h}{L_r}\cdot L_{r\sigma}\$$, magnetizing inductance $$\L_M = L_h\cdot\frac{L_h}{L_r}\$$, stator resistance $$\R_S = R_s\$$ and rotor resistance $$\R_R = R_r\cdot\left(\frac{L_h}{L_r}\right)^2\$$. After simplification, we have

$$\mathbf{A}_{\Gamma^{-1}} = \begin{bmatrix} -\frac{R_S + R_R}{L_L} & 0 & \frac{R_R}{L_M\cdot L_L} & \frac{1}{L_L}\cdot\omega_m \\ 0 & -\frac{R_S + R_R}{L_L} & -\frac{1}{L_L}\cdot\omega_m & \frac{R_R}{L_M\cdot L_L} \\ R_R & 0 & -\frac{R_R}{L_M} & -\omega_m \\ 0 & R_R & \omega_m & -\frac{R_R}{L_M} \end{bmatrix}$$

$$\mathbf{B}_{\Gamma^{-1}} = \begin{bmatrix} \frac{1}{L_L} & 0 \\ 0 & \frac{1}{L_L} \\ 0 & 0 \\ 0 & 0 \end{bmatrix}$$

$$\mathbf{C}_{\Gamma^{-1}} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \end{bmatrix}$$

As far as the equation for the moment of the induction motor. We can use the equation for the moment based on the T equivalent circuit

$$M_T = \frac{3}{2}\cdot p_p\cdot \frac{L_h}{L_r}\cdot\Re \{ \mathrm{j}\cdot\hat{\boldsymbol{\psi}}_{rT}\cdot \hat{\boldsymbol{i}}^{*}_{sT} \} = \frac{3}{2}\cdot p_p\cdot \frac{L_h}{L_r}\cdot(\psi_{rxT}\cdot i_{syT} - \psi_{ryT}\cdot i_{sxT})$$

Then we can substitute for the space vectors $$\\hat{\mathbf{i}}_{sT} = \hat{\mathbf{i}}_{s\Gamma^-1}\$$ and $$\\hat{\boldsymbol{\psi}}_{rT} = \frac{L_r}{L_h}\cdot\hat{\boldsymbol{\psi}}_{r\Gamma^{-1}}\$$. After simplification, we have

$$M_{\Gamma^{-1}} = \frac{3}{2}\cdot p_p\cdot(\psi_{rx\Gamma^{-1}}\cdot i_{sy\Gamma^{-1}} - \psi_{ry\Gamma^{-1}}\cdot i_{sx\Gamma^{-1}})$$

I agree that using the $$\\omega_m\$$ to produce a time-varying observer is a valid and intuitive approach. The "theoretical correctness" of it will mostly depend on two aspects, and both will require some reading and research on your part.

(1) the criterias you want to guarantee for the closed-loop system. This mostly concerns stability guarantees and perhaps some pole-placement objectives.

(2) the design method you will be using (i.e. how the gain coefficients of closed loop are obtained).

My suggestion is that you start by modeling $$\\omega_m\$$ as an uncertain parameter within $$\\omega_{min}\$$ and $$\\omega_{max}\$$, so now your system is "bounded by a polytope". This will produce LMI (linear matrix inequality) constraints that can be used to guarantee quadratic stability of the system. Such constraints can also easily be coupled with $$\H_2\$$ or $$\H_\infty\$$ design objectives to produce a convex optimization problem. There are plenty of papers available on the topic if you search using these keywords. Good luck!

Additional question in comments: eigenvalues of the above mentioned system matrix in symbolic form?

You can always use a symbolic calculator to figure this out. Just did it using WolframAplha:

Just replace $$\a=-\alpha\$$, $$\b=\beta\$$, $$\c=\gamma\omega_m\$$, $$\d=R_r\frac{L_h}{L_r}\$$, $$\e=-\frac{R_r}{L_r}\$$ and $$\f=-\omega_m\$$

• thank you for your reaction. Let´s say I will use the state space model mentioned above and I will design the Luenberger observer based on requirement that its poles has to be "faster" than poles of the system. Do you have any idea how to calculate poles of the induction motor i.e. eigenvalues of the above mentioned system matrix in symbolic form? Aug 5, 2020 at 8:52
• @Steve ammended answer Aug 5, 2020 at 15:15
• thank you very much for your help. Let me one more question. The above mentioned state space model is related to the standard T equivalent circuit of induction motor. Do you have any idea how to reformulate the state space model for the gamma or inverse gamma equivalent circuit? Aug 7, 2020 at 7:11
• @Steve You could either reformulate state-space model derived from equations of a new model, or you could apply a transformation matrix to your current model. Read up on "Similarity Transformations". Aug 7, 2020 at 12:15
• I have attempted to derive the state space model for the inverse gamma equivalent circuit. I have added the steps into the original question. I am not sure whether my approach is correct. May I ask you for your opinion? Aug 11, 2020 at 8:31