**4. Control Scheme**

In the control scheme depicted in Figure 2, the proposed sensorless adaptive observer provides the necessary rotational transformation angle and the rotor speed value for a traditional stator flux Field Oriented Control (FOC). In particular *x*, *y* represent the stator reference frame axis; *α*, *β* refer to the rotor reference frame axis; and *d*, *q* represents the rotating reference frame aligned with the stator flux **Φ***<sup>s</sup>*.

**Figure 2.** Control diagram.

Since the observer model has been written into the stator reference frame, its inputs (**<sup>v</sup>***s*, **i***s* and **<sup>v</sup>***r*) are referred to as *x*, *y* coordinates. In particular, while the first two inputs are measured directly on the stator side connected to the AC grid, the third input needs to be transformed from *α*, *β* to *x*, *y* coordinates. Indeed, the quantity **v**<sup>∗</sup>(*r*) *r* = *<sup>v</sup>*<sup>∗</sup>*rα* + *jv*<sup>∗</sup>*rβ*, representing the reference voltage for the VSI, is transformed into *x*, *y* coordinates by the angle *ϑ* ˆ *e* + Δ*ϑ* ˆ *e*. In this way, the projection error is compensated by the position estimation error.

The adaptive observer outputs are the estimation of rotor speed *ω*<sup>ˆ</sup> *r*, position *ϑ* ˆ *e*, the rotor position estimation error Δ*ϑ* ˆ *e* and the stator flux space vector **Φ***<sup>s</sup>*. From this last output, it is possible to calculate the angle of the stator flux *ψ*ˆ:

$$
\hat{\psi} = \arg \left( \Phi\_s \right) \tag{21}
$$

The necessary transformation from *α*, *β* to *x*, *y* coordinates can thus be operated by the angle *ϑ* ˆ *e* + Δ*ϑ* ˆ *e* − *ψ* ˆ :

$$\mathbf{i}\_r^{(\Phi)} = \mathbf{i}\_r^{(r)} e^{j(\theta\_r + \Delta\theta\_\varepsilon)} e^{-j\psi} = i\_{rd} + j i\_{rq} \tag{22}$$

where **i**(*r*) *r* is the rotor current space vector, measurable in *α*, *β* coordinates.

As per the traditional FOC scheme, the obtained components *ird*,*irq* are processed by two PI controllers driven by the errors computed with respect to the correspondent reference quantities *<sup>i</sup>*<sup>∗</sup>*rd*,*i*<sup>∗</sup>*rq*. In particular, while *i*∗*rq* is set proportional to the reference torque *T*∗*e* by the torque constant *KT*, *i*∗*rd* should be set equal to zero. However, it must be considered that the tracking of *ϑe* and Δ*ϑe* could prove ineffective during very low torque operating conditions where both current components move toward zero. For this reason, an injection strategy has been implemented:

$$\begin{cases} \ i\_{rd}^{\*} = i\_{rd,inj}^{\*} \\ \ i\_{rq}^{\*} = K\_T T\_{\mathfrak{c}}^{\*} + i\_{rq,inj}^{\*} \end{cases} \tag{23}$$

where:

$$\begin{cases} \begin{array}{l} i\_{rd,inj}^{\*} = \lambda\_d A\_{inj} \cos \left(2\pi f\_{inj} t\right) \\ i\_{rq,inj}^{\*} = \lambda\_q A\_{inj} \cos \left(2\pi f\_{inj} t\right) \end{array} \tag{24}$$

*Ainj* and *finj* are the amplitude and the frequency of the injected current components. Activation and deactivation of the injection are operated through *λd* and *<sup>λ</sup>q*, which can assume either 0 or 1 values. The *q* injection is activated if the required torque is too small. The *d* injection is activated if the required torque is too small or if the slip angular frequency is too small. Fixing <sup>Δ</sup>*Te*,*inj* and <sup>Δ</sup>*<sup>ω</sup>inj* as threshold values, respectively, for the required torque and the slip angular frequency, *λd* and *λq* can be expressed as (in C language style):

$$\begin{cases} \lambda\_d = |p\omega\_\tau - \omega| < \Delta \omega\_{inj} \, | \, |\, |T\_c^\*| < \Delta T\_{c, inj} \\\ \lambda\_\emptyset = |T\_c^\*| < \Delta T\_{c, inj} \end{cases} \tag{25}$$

The converter space vector reference voltage components *<sup>v</sup>*<sup>∗</sup>*rd*, *v*∗*rq* are obtained by compensating the current PI regulator outputs *<sup>v</sup>*\**rd*, *v*\**rq* through the decoupling action:

$$\begin{cases} \boldsymbol{v}\_{rd}^{\*} = \widetilde{\boldsymbol{v}}\_{rd} - \widehat{\boldsymbol{\omega}}\_{\sigma} \boldsymbol{L}\_{s,\epsilon q} \boldsymbol{i}\_{rq} \\ \boldsymbol{v}\_{rq}^{\*} = \widetilde{\boldsymbol{v}}\_{rq} + \widehat{\boldsymbol{\omega}}\_{\sigma} \boldsymbol{L}\_{s,\epsilon q} \boldsymbol{i}\_{rd} + \widehat{\boldsymbol{\omega}}\_{\sigma} \boldsymbol{\Phi}\_{s,\mathcal{R}} \end{cases} \tag{26}$$

with *ω*<sup>ˆ</sup> *σ* = *ω* − *pω*<sup>ˆ</sup> *r* being the estimated rotor slip angular frequency, and Φ*<sup>s</sup>*,*<sup>R</sup>* being the rated stator flux.

Finally, the obtained space vector *<sup>v</sup>*<sup>∗</sup>*rd* + *jv*<sup>∗</sup>*rq* = **v**<sup>∗</sup>(Φ) *r* is transformed from *d*, *q* to *α*, *β* coordinates by the angle *ψ*ˆ − *ϑ*ˆ*e* − <sup>Δ</sup>*ϑ*<sup>ˆ</sup>*e*:

$$\mathbf{v}\_r^{\*(r)} = \mathbf{v}\_r^{\*(\Phi)} \mathbf{e}^{-j(\vartheta\_\varepsilon + \Lambda \vartheta\_\varepsilon)} \mathbf{e}^{j\psi} = \mathbf{v}\_{ra}^{\*} + j\mathbf{v}\_{r\emptyset}^{\*} \tag{27}$$

The *α*, *β* components of Equation (27) can be modulated as per a Space Vector Modulation (SVM) in order to drive the VSI at the rotor side. Naturally, as mentioned above, **v**<sup>∗</sup>(*r*) *r* is also sent back and, through a unit time delay, constitutes a closed loop for the proposed adaptive law.
