**1. Introduction**

The Doubly Fed Induction Generator (DFIG) is widely employed as a generator, especially in variable speed grid-connected wind energy applications. DFIGs guarantee robust and flexible systems, facilitating electric energy generation in a wide operating range of wind turbines [1–3].

In the grid-connected system, the aim is to maximize the conversion of mechanical input energy from the wind turbine into electric energy, ensuring the minimization of the cost of energy at the same time [4,5]. To meet this goal, the more widespread wind power generation system, for both small and large power, consists of a wind turbine [6,7], usually equipped with pitch control limits, a gearbox, and a DFIG directly connected to the AC grid on the stator side and driven through a power electronic converter on the rotor side. The rating of the power electronic is almost 25% of the rated power, allowing a speed range from nearly 50% to 120% of the rated speed [8].

It is clear that this Wind Energy Conversion System (WECS) is much more efficient than a constant speed squirrel cage induction generator system, but it obviously presents a greater complexity in the control, especially with regard to the knowledge of the rotor position [6].

The traditional control system of the doubly fed induction generator is based on stator flux oriented vector control [9]. Practically, using the rotor position it is possible

**Citation:** Brando, G.; Dannier, A.; Spina, I. Performance Analysis of a Full Order Sensorless Control Adaptive Observer for Doubly-Fed Induction Generator in Grid Connected Operation. *Energies* **2021**, *14*, 1254. https://doi.org/10.3390/ en14051254

Academic Editor: Anibal De Almeida

Received: 1 February 2021 Accepted: 19 February 2021 Published: 25 February 2021

**Publisher's Note:** MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations.

**Copyright:** © 2021 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https:// creativecommons.org/licenses/by/ 4.0/).

to decompose the rotor current space vector into two current components in order to decouple control of the flux and electromagnetic torque. A rotor position sensor is required to finalize the transformation of the rotor current space vector. As it is evident, the presence of these sensors on the shaft reduces the robustness of the whole system. In recent years, research has been very active in working to replace the traditional control with a sensorless one, achieving advantages in terms of system robustness, easy installation, and maintenance [10,11]. In the literature, several sensorless methods have been proposed. The different sensorless controls can be collected into the follows categories: open-loop estimation methods, closed-loop estimation methods [12,13], Kalman filter [14], high-frequency signal injections [15,16], Model Reference Adaptive System (MRAS) observers [17,18] with full or reduced order approaches [19–21], and other sensorless methods.

In the open-loop sensorless methods, the rotational speed is obtained via differentiation of the estimated slip angle [22–26]; in the MRAS, the adaptive models are all based on static flux–current relations, and the estimated speed is used as feedback in a vector control system—this approach is very sensitive to machine inductance [27]; in the other sensorless method, it is possible to include all types of sensorless control based on PLLs and similar to MRAS observers. Indeed, in these last cases, the error is driven to zero when the phase shift between the estimated vector and the reference vector is null [28,29]. Ultimately, it is possible to state that in each of these controls, the challenge is to evaluate the position of the rotor by means of an indirect method, preserving at the same time good estimation accuracy against possible parameter deviations.

The performances of the estimation of the rotor position are linked to the implemented control strategy, such as Field Oriented Control (FOC), Direct Torque Control (DTC) [30,31], and Direct Power Control (DPC) [32–34].

This paper deals with an experimental evaluation of the performance of a novel adaptive full-order observer, presented in [35], in order to assess the accuracy of the rotor position estimation by means of an FOC control scheme.

The novelty of this approach is the consideration of the rotor position estimation error as an additional machine parameter. This parameter is accurately tracked by the proposed adaptive law, assuring a good compensation of the projection error from the rotor frame to the stator frame. A prototype system was set up in order to validate the effectiveness of the proposed approach by means of an extensive measurement campaign.

This paper is organized as follows: in Section 2 a description of the system is presented, in Section 3, starting from the mathematical model in a matrix form, the proposed adaptive observer is illustrated, in Section 4 details of the adopted control scheme are highlighted and, finally, in Section 5, an analysis of the experimental results is reported.

#### **2. Description of the System**

The present work focuses on the system depicted in Figure 1. In particular, a Doubly Fed Induction Generator (DFIG) was mechanically connected to a wind turbine via a gearbox. The DFIG rotor windings were wound and equipped with slip rings. While the stator windings were directly connected to the three-phase AC grid, the rotor windings were fed through a back-to-back power converter consisting of a common DC link and two three–phase converters: a Voltage Source Inverter (VSI) to the rotor side and a Voltage Source Rectifier (VSR) to the AC grid side. Due to the presence of the bidirectional power converter, the DFIG can operate as a generator or motor in both sub-synchronous and super-synchronous modes. However, in typical applications, the converter can be rated as 25% of the nominal power of the whole system. This limits the sub-synchronous and super-synchronous modes to about 1/3 up and down of synchronous speed.

**Figure 1.** System block scheme.

## **3. Proposed Adaptive Observer**

The mathematical model of the DFIG is well known and can be presented in different forms, depending on the particular choice of the state variables and the reference frame. Adopting the matrix form, the stator current and flux as state variables and the stator reference frame, the DFIG mathematical model is given by (see nomenclature at §.0):

$$
\frac{\mathbf{d}}{\mathbf{d}t} \begin{bmatrix} \mathbf{i}\_{s} \\ \boldsymbol{\Phi}\_{s} \end{bmatrix} = \begin{bmatrix} A\_{11} & A\_{12} \\ A\_{21} & A\_{22} \end{bmatrix} \begin{bmatrix} \mathbf{i}\_{s} \\ \boldsymbol{\Phi}\_{s} \end{bmatrix} + \begin{bmatrix} B\_{1} \\ B\_{2} \end{bmatrix} \begin{bmatrix} \mathbf{v}\_{s} \end{bmatrix} + \begin{bmatrix} C\_{1} \\ C\_{2} \end{bmatrix} \begin{bmatrix} \mathbf{v}\_{r} \end{bmatrix} \tag{1}
$$

It is worth noting that by imposing **v***r* = 0 in Equation (1), the mathematical model of a traditional induction machine (with short-circuited rotor windings) is obtained.

In Equation (1), the state variables, the inputs, and the outputs are space vectors. By consequence, all the corresponding matrix elements are complex numbers. In particular

$$\begin{cases} A\_{11} = -\left(\frac{R\_s}{L\_{s,eq}} + f\_{r,eq}\right) + jp\omega\_r\\ A\_{12} = \frac{rf\_{r,eq}}{L\_{s,eq}} - j\frac{p\omega\_r}{L\_{s,eq}}\\ A\_{21} = -R\_s\\ A\_{22} = 0 \end{cases} \quad \left\{ \begin{array}{l} B\_1 = \frac{1}{L\_{s,eq}}\\ B\_2 = 1 \end{array} \right\} \begin{array}{l} \mathbb{C}\_1 = -\frac{B\_1}{\mu\_r} \\ \mathbb{C}\_2 = 0 \end{array} \tag{2}$$

where:

$$\mu\_r = \frac{L\_m}{L\_r}; \sigma = (1 - \mu\_s \mu\_r); \ L\_{s, \text{eq}} = \sigma L\_s; \ f\_{r, \text{eq}} = \frac{R\_r}{L\_{r, \text{eq}}} \tag{3}$$

with *μs* = *Lm*/*Lr* and *Lr*,*eq* = *<sup>σ</sup>Lr*.

It is possible to derive the space vector of the rotor current from the definition of the stator flux (**Φ***s* = *Ls***i***s* + *Lm***i***r*):

$$\mathbf{i}\_r = \frac{\Phi\_s}{L\_m} - \frac{L\_s}{L\_m}\mathbf{i}\_s \tag{4}$$

The following full-order Lueberger observer can be defined based on the DFIG mathematical model (Equation (1)):

$$\frac{\mathbf{d}}{\mathbf{d}t} \begin{bmatrix} \mathbf{i}\_{s} \\ \boldsymbol{\Phi}\_{s} \end{bmatrix} = A \begin{bmatrix} \mathbf{i}\_{s} \\ \boldsymbol{\Phi}\_{s} \end{bmatrix} + B[\mathbf{v}\_{s}] + C[\mathbf{v}\_{r}] + \begin{bmatrix} G\_{1} \\ G\_{2} \end{bmatrix} \begin{bmatrix} \mathbf{i}\_{s} - \mathbf{i}\_{s} \end{bmatrix} \tag{5}$$

The elements *G*1 and *G*2 of the observer matrix should be designed with reference to the observer state matrix *AO*:

$$A\_O = \begin{bmatrix} A\_{11} - G\_1 & A\_{12} \\ A\_{21} - G\_2 & A\_{22} \end{bmatrix} \tag{6}$$

having eigenvalues *pO*,<sup>1</sup> and *pO*,2. It should be noted that the above equations relate to a proportional type Lueberger observer. Other more complex architectures (such as proportional–integral and modified integral [36]) may lead to an overall improved noise rejection. However, the proportional type allows for a relatively simple selection of the observer gains. In particular, the observer gains should be selected such as that the error **i***s* − ˆ **i***s* quickly converges to zero. In other words, the observer dynamic must be faster than that of the DFIG in all operating conditions and, in particular, for any value of the rotational speed. The faster DFIG dynamic is linked to the DFIG high-frequency pole *pD,HF* at zero speed. Thus, by introducing an overall observer gain *KG* > 1, the two observer poles that *pO*,<sup>1</sup> and *pO*,<sup>2</sup> can be fixed proportional to *pD,HF* through *KG*. Considering that a good approximation by excess of the effective *pD,HF* value is:

$$p\_{D,HF} \cong -\left(\frac{R\_s}{L\_{s,eq}} + f\_{r,eq}\right) \tag{7}$$

the eigenvalues *pO*,1, *pO*,<sup>2</sup> can be fixed as:

$$p\_{O,1} = p\_{O,2} = p\_O = -K\_G \left(\frac{R\_s}{L\_{s,eq}} + f\_{r,eq}\right) \tag{8}$$

where *KG* is the overall observer gain.

In order to preserve system stability, an optimal value for *KG* should be eventually fixed by trials on the real system, depending on the measurement equipment and noise; *KG* values are typically chosen between 2 and 5. Hence, the elements *G*1 and *G*2 of the observer matrix are given by:

$$\begin{cases} \text{ G}\_1 = A\_{11} - 2p\_{\text{O}} \\ \text{ G}\_2 = A\_{21} + p\_{\text{O}}^2 / A\_{12} \end{cases} \tag{9}$$

In the dynamic system (Equation (5)), the space vectors **v***r*,**v***<sup>s</sup>* and **i***s* represent inputs. In particular, while **v***s* and **i***s* can be simply measured by voltage and current transducers, knowledge of **v***r* would require an additional rotor position sensor. Indeed, **v***r* is defined by a rotational transformation of the actual space vector voltage **v**(*r*) *r* provided by the rotor power converter through the electrical rotor position *ϑe*:

$$\mathbf{v}\_{\mathbf{r}} = \mathbf{v}\_{\mathbf{r}}^{(r)} e^{j\boldsymbol{\vartheta}\_{\mathbf{r}}} \tag{10}$$

where

$$
\theta\_c = p\theta\_r \tag{11}
$$

with *ϑr* represents the mechanical rotor position and *p* the number of pole pairs.

On the other hand, in the context of a sensorless control, the observer outputs can be exploited in order to estimate the rotor position and, consequently, the space vector of the rotor voltage in the stator reference frame **v***r*, without the use of an additional position sensor.

The rotor position can be estimated considering that Relation (10) also applies to the rotor current space vector in the two reference frames:

$$\mathbf{i}\_r = \mathbf{i}\_r^{(r)} e^{j\theta\_r} \tag{12}$$

where, naturally, **i**(*r*) *r* is the rotor current space vector provided by the power converter and **i***r* is the rotor current space vector in the stator frame.

While the quantity **i**(*r*) *r* is directly measurable at the converter terminals, an estimated version of **i***r* can be calculated as per Equation (4) by substituting the actual flux **Φ***s* with the estimated one **Φ** ˆ *s*:

$$
\hat{\mathbf{i}}\_{\mathcal{I}} = \frac{\hat{\Phi}\_{\mathcal{S}}}{L\_{\rm m}} - \frac{L\_{\rm s}}{L\_{\rm m}} \mathbf{i}\_{\mathcal{S}} \tag{13}
$$

Once **i**(*r*) *r* and ˆ**i***r* are known, the rotor electrical position can be derived as:

$$e^{j\hat{\theta}\_{\varepsilon}} = \frac{\hat{\mathbf{i}}\_{r}}{\mathbf{i}\_{r}^{(r)}} \Rightarrow \hat{\boldsymbol{\theta}}\_{\varepsilon} = \arg\left(\boldsymbol{\Phi}\_{s} - L\_{s}\mathbf{i}\_{s}\right) - \arg\left(\mathbf{i}\_{r}^{(r)}\right) \tag{14}$$

Hence, **v***r* can be calculated as per Equation (10).

The knowledge of *ϑ* ˆ *e* also allows for the computation of the rotor speed via the numerical time derivative. In order to dampen the oscillations resulting from the time derivative computation, the calculation of the rotor speed should be processed by a properly sized Low Pass Filter (LPF): 

$$
\hat{\omega}\_{\mathcal{T}} = \frac{1}{p} \mathbb{S}\left(\frac{d\theta}{dt}\right) \tag{15}
$$

where denotes the functional associated to the LPF.

As expected, knowledge of machine parameter values plays an important role in the described estimation procedure. However, the machine parameters cannot be known with absolute precision, and only their estimated values can actually be used in the previous equations. In particular, the symbols *A*, *B*, *C*, **v***r* and *Ls* appearing in Equations (5), (10), and (14) should formally be replaced with *A* ˆ , *B* ˆ , *C* ˆ , **v** ˆ *r* and *L* ˆ *s*, this last representing their estimated versions. As a consequence of the possible parameter deviations, the rotor position estimation *ϑ* ˆ *e* will be affected by inaccuracy.

Let us define Δ*ϑe* as the rotor position estimation error:

ˆ

$$
\Delta \theta\_{\varepsilon} = \theta\_{\varepsilon} - \hat{\theta}\_{\varepsilon} \tag{16}
$$

ˆ

According to Definition (16), the actual rotor position *ϑe* can be expressed as *ϑ e* + Δ*ϑ<sup>e</sup>*. Hence, the actual rotor voltage **v***r* can be written as:

$$\mathbf{v}\_r = \mathbf{v}\_r^{(r)} \mathbf{e}^{j(\boldsymbol{\vartheta}\_r + \Delta \boldsymbol{\vartheta}\_\varepsilon)} = \mathbf{v}\_r^{(r)} \mathbf{e}^{j\boldsymbol{\vartheta}\_\varepsilon} \mathbf{e}^{j\Delta \boldsymbol{\vartheta}\_\varepsilon} = \boldsymbol{\Psi}\_r \mathbf{e}^{j\Delta \boldsymbol{\vartheta}\_\varepsilon} \tag{17}$$

where the quantity **v**(*r*) *r ejϑ*<sup>ˆ</sup>*<sup>e</sup>* corresponds to ˆ**v***r*: the estimated version of the rotor voltage.

Equation (17) clarifies that the estimated rotor voltage **<sup>v</sup>**<sup>ˆ</sup>*r* does not correspond to the actual rotor voltage **v***r* due the projection error *<sup>e</sup>j*Δ*ϑ<sup>e</sup>*. At the same time, this suggests that the projection error could be compensated if a Δ*ϑe* tacking procedure is conceived.

Let us denote the tracking procedure output with Δ*ϑ* ˆ *e*. i.e., Δ*ϑ* ˆ *e* is the estimation of the actual Δ*ϑe* value. For small Δ*ϑ* ˆ *e* values, the following approximation can be assumed:

$$e^{j\Delta\theta\_{\varepsilon}} = \cos\Delta\hat{\theta}\_{\varepsilon} + j\sin\Delta\hat{\theta}\_{\varepsilon} \cong 1 + j\Delta\hat{\theta}\_{\varepsilon} \tag{18}$$

In light of the previous consideration on the parameter deviations, and considering Equation (17) with approximation (18), the Luemberger observer (Equation (5)) can now be re-written: ˆ ˆ

$$\frac{\mathbf{d}}{\mathbf{d}t} \begin{bmatrix} \mathbf{\dot{i}}\_{s} \\ \dot{\boldsymbol{\Phi}}\_{s} \end{bmatrix} = \boldsymbol{\mathcal{A}} \begin{bmatrix} \mathbf{\dot{i}}\_{s} \\ \dot{\boldsymbol{\Phi}}\_{s} \end{bmatrix} + \boldsymbol{\mathcal{B}}[\mathbf{v}\_{s}] + \boldsymbol{\mathcal{C}}(\mathbf{1} + j\boldsymbol{\Delta}\boldsymbol{\theta}\_{c})[\mathbf{\dot{v}}\_{r}] + \boldsymbol{G}[\mathbf{e}] \tag{19}$$

where *G* = \$ *G*1 *G*2 %*T* and **e** = **i***s* − ˆ**i***s*. ˆ

The quantity Δ*ϑ e* in Equation (19) can be regarded as an additional machine parameter, and its value can be estimated by the following adaptive law based on the Lyapunov theory:

$$
\Delta\hat{\theta}\_{\varepsilon} = K\_{\Delta\theta} \int\_{0}^{t} \left(\hat{\boldsymbol{\upsilon}}\_{ry}\boldsymbol{\varepsilon}\_{x} - \hat{\boldsymbol{\upsilon}}\_{rx}\boldsymbol{\varepsilon}\_{y}\right) dt + \Delta\hat{\theta}\_{\varepsilon 0} \tag{20}
$$

where *K*Δ*ϑ* is a not negative number.

The model (Equation (19)) and the adaptive law (Equation (20)), together with the Relations (14) and (15), define the proposed adaptive observer, which provides the estimation of rotor speed *ω*<sup>ˆ</sup> *r* and position *ϑ* ˆ *e*. Moreover, the proposed technique is robust against possible machine parameter uncertainties and is capable of tracking the rotor position estimation error Δ*ϑ* ˆ *e*.
