To implement the IFOC scheme for the drive, the accurate estimation of the required ECPs is the most challenging task as these ECPs get changed with the running conditions of the motor.

The ECPs depend mostly on the slip, supply frequency, loading, and inside temperature of the motor, the accurate measurement of which are very much essential to get better control performance of the IFOC. Accordingly, an MRAS model [5, 7] for ECPs estimation is developed as shown in Fig. 4. In the form of BPANN, the Reference model and BPANN-based plant model are the two basic building blocks of the controller.

### Formulation for reference model *M*
_{R}

This model is used to generate ECP_{R} set, i.e. the reference values of ECPs namely *R*_{s1}, *R*_{r1}, *L*_{m1}, *L*_{s1}, *L*_{r1} during the pre-start and post-start transition period up to the steady-state running condition of the induction motor. This ECP_{R} set is utilized to train the gains in the plant model during this entire transition period i.e. till the steady-state running of the motor up to the desired speed is achieved.

#### ECPR generation before start

The *H-G* diagram method, IEEE 112, and the NEMA specification are used to generate the ECP_{R} set based on the nameplate data before starting the motor. The stator voltage *V*_{s}, stator current *I*_{s} (*I*_{a}, *I*_{b})*,* rotor speed N_{r}, input power factor p_{f}, and output power P_{out} are the nameplate data to be provided. The *H-G* diagram is represented by an operating circle in the complex plane to analyze the power consumption scenario of an IM. The *G* and *H* functions [27] are having the dimension of inductance to represent the active and reactive power consumption status, respectively. The G function is directly related to developed torque and the H function is concerned with the magnetizing flux. The per-phase equivalent circuit impedance of Eq. (1) is modified by ignoring *R*_{c} and is expressed as in Eq. (12). The ECP_{R} set is evaluated using the equations derived as follows:

$$ Z_{{{\text{eqR}}}} = \frac{{V_{{\text{s}}} }}{{I_{{\text{s}}} }} = R_{{\text{s}}} + \omega_{{\text{s}}} G(\omega_{{{\text{sl}}}} ) + j\omega_{{\text{s}}} H(\omega_{{{\text{sl}}}} ) $$

(12)

Following the construction method of the H-G diagram, the operating points on the diagram are a function of slip *ω*_{sl} and can be expressed as

$$ G(\omega_{sl} ) = \frac{{L_{m1} \omega_{sl} R_{r1} }}{{R_{r1}^{2} + L_{r1}^{2} \omega_{sl}^{2} }}L_{m1} $$

(13)

$$ H(\omega_{sl} ) = L_{s1} - \frac{{L_{m1}^{2} \omega_{sl}^{2} }}{{R_{r1}^{2} + L_{r1}^{2} \omega_{sl}^{2} }}L_{r1} $$

(14)

Since *G*(*ω*_{sl}) and *H*(*ω*_{sl}) represent active and reactive power consumption, their locus describes a circle in the so-called H-G plane for the variation in load or even change in the ECPs for any other reasons [17]. This circle is graduated with the *ω*_{sl} increasing from the purely synchronous point *H*_{0} to its point *H*_{∞}, from which stator inductance *L*_{s} and the total leakage coefficient *σ* can be derived using Eq. (15)

$$ L_{{\text{s}}} = H_{0} = \frac{{\phi_{{{\text{nl}}}} }}{{I_{{{\text{nl}}}} }} = \frac{{V_{{\text{s}}} }}{{I_{{{\text{nl}}}} \omega_{{\text{s}}} }}, \, \sigma = \frac{{H_{\infty } }}{{H_{0} }} $$

(15)

where the current *I*_{nl} can be evaluated from the nameplate data and NEMA specification without performing the real hardware test. It is assumed that *σ* is quite small for which *H*_{∞}* ≈* 0, circle diameters become directly a function of the stator flux *ψ*_{s} as shown in Eq. (16). The H-G diagram identifies the parameters in the (*α*, *β*) reference frame. The *P* and *Q* power components are estimated from the dot and cross product of the *V*_{s} and *I*_{s} vectors in the (*α*, *β*) reference frame using Clarke Transformation. The values of *P* and *Q* are obtained as

$$ \left. \begin{aligned} P & = V_{{{\text{s}}(\alpha ,\beta )}} \cdot I_{{{\text{s}}(\alpha ,\beta )}} = V_{{{\text{s}}\alpha }} I_{{{\text{s}}\alpha }} - V_{{{\text{s}}\beta }} I_{{{\text{s}}\beta }} \\ Q & = V_{{{\text{s}}(\alpha ,\beta )}} \times I_{{{\text{s}}(\alpha ,\beta }}) = V_{{{\text{s}}\alpha }} I_{{{\text{s}}\beta }} - V_{{{\text{s}}\beta }} I_{{{\text{s}}\alpha }} \\ \end{aligned} \right\} $$

(16)

The values of *G*(*ω*_{sl}) and *H*(*ω*_{sl}) at any instantaneous point *i* can also be calculated from given *P* and *Q* as

$$ G_{i} = G(\omega_{{{\text{sl}}}} ) = \frac{1}{{\omega_{{\text{s}}} }}\left( {\frac{P}{{I_{{{\text{s}}(\alpha ,\beta )}}^{2} }} - R_{{\text{s}}} } \right) $$

(17)

$$ H_{i} = H(\omega_{{{\text{sl}}}} ) = \frac{{Q_{i} }}{{\omega_{{\text{s}}} I_{{{\text{s}}(\alpha ,\beta )}}^{2} }} $$

(18)

$$ R_{{{\text{r}}1}} = \frac{{\frac{P}{{I_{{{\text{s}}(\alpha ,\beta )}}^{2} }}}}{{\left( {1 - \frac{{H_{i} }}{{H_{0} }} + k} \right)}},R_{{{\text{s}}1}} = kR_{{{\text{r}}1}} $$

(19)

where *k* is obtained from NEMA guidelines. The stator and rotor resistance *R*_{s1} and *R*_{r1} and rotor time constant *τ*_{r} can then be estimated from *G*(*i*) and *H*(*i*) as,

$$ \tau_{{\text{r}}} = \frac{{L_{{{\text{r}}1}} }}{{R_{{{\text{r}}1}} }} = \frac{{H_{0} - H_{i} }}{{\omega_{{{\text{sl}}}} G_{i} }}\;\;{\text{and}}\;{\text{thus}}\;\;L_{{{\text{r}}1}} = L_{{{\text{s}}1}} \, $$

(20)

Thus the value of rotor inductance *L*_{r1} can be estimated from *τ*_{r} and *R*_{r1}. The mutual inductance can thus be evaluated as

$$ L_{{{\text{ml}}}} = \sqrt {\left( {\frac{{(L_{{{\text{s}}1}} - H_{i} )(R_{{{\text{r}}1}}^{2} + L_{{{\text{r}}1}}^{2} \omega_{{{\text{sl}}}}^{2} )}}{{L_{{{\text{r}}1}} \omega_{{{\text{sl}}}}^{2} }}} \right)} $$

(21)

The gain parameters of IFOC *K*_{1}, *K*_{2}, and *K*_{3} as shown in Eqs. (2)–(4) are evaluated using the ECP_{R} set from the nameplate data before starting.

#### ECPR generation during the transition phase

It is evident from Eq. (2) that the value of *ψ*_{r} is dependent on the mutual inductance. But the mutual inductance varies on variations in resistances and both of them vary due to variations in motor temperature during the running condition. This in turn causes a change in *i*_{ds} and IFOC logic accordingly. Thus though the H-G diagram method is efficient enough for estimating the ECPs during the pre-start condition, its use is not suggested during the running condition. Accordingly, during the transition phase, the feedback values like *V*_{s}, *I*_{a}, and *I*_{b} are provided as input to the reference model on basis of which the ECP_{R} is generated using equations are (16)–(21) to tune the plant model ECP_{p}. The value of *I*_{sαβ} (*i*_{α}*,i*_{β}) and the *V*_{sαβ} (*V*_{α}, *V*_{β}) are evaluated using Clarke transformation as shown in figure vii7.

### Formulation for plant model *M*
_{P}

The estimated ECP_{R} set, using the above-described method, provides accurate results so long the operating conditions, i.e. load demand, slip, temperature, supply frequency remain unaltered. But, as the values of *R*_{s1}, *ω*_{sl} varies with change in motor temperature and slip, the estimated ECP_{R} set, *L*_{m} value in particular, from the H-G method produces an erroneous result. This needs a switchover of the ECPs estimation from the reference model to the plant model during the running condition of the motor. The plant model is built based on the backpropagation principle where ANN with an input layer of three neurons and three hidden layers of five, four, and two neurons respectively, and one output neuron model (3-5-4-2-1) is used in its forward path as shown in Fig. 5. The value of each of the ECPs, i.e. *R*_{s}, *R*_{r}, *L*_{r}, *L*_{s}, and *L*_{m}, have been evaluated accurately during steady state. For working of BPANN, an input matrix [A]_{3×5} is constituted where each row contains three values of one of the parameters and each column represents each of the parameters of *R*_{s}, *R*_{r}, *L*_{r}, *L*_{s}, and *L*_{m}. Out of the three values of each row *j*, one value (*a*_{j}) is calculated by using the respective equations from (22) to (24) and the other two values are estimated considering a deviation range of ± €. This creates a set of values like [*a*_{j}−*ε*, *a*_{j}, *a*_{j}+*ε*] for each row *j* of [A]_{3×5} and is treated as the input neurons for the ANN module to estimate the parameter corresponding to that row *j*. As *j* can vary from 1 to 5 to represent *R*_{s}, *R*_{r}, *L*_{r}, *L*_{s}, and *L*_{m}, respectively, the ANN structure is to be utilized four times to estimate all the ECPs in a one-time step. The entire operation of the plant model can be divided into two subparts—namely (i) starting, i.e. start of the motor from standstill to the set speed achievement and (ii) running conditions of the motor. The functioning of ECPs under these conditions is described below.

#### ECPs evaluation during the transition period

Before start, the ECP_{R} values are utilized for input matrix [A]_{3×5} and the weight updation procedure begins offline so that the overall time of convergence can be minimized. After the offline training is done the IM is started with the parameters obtained from *M*_{R}. During this period, ECPs copy the values of ECP_{R} to generate the triggering pulses following IFOC schemes. It is considered that the value of *L*_{s} and *L*_{r} are assumed to be the same for small to medium motors whereas the ratio between these two parameters can be taken as per NEMA specifications for larger motors for their evaluation. The value of *R*_{s} and *R*_{r} is estimated using (22) where *v*_{ssi} and *i*_{ssi} are the voltage and current signals derived from the SSI method as illustrated in “Estimation of *R*_{s} using small signal injection method” section.

$$ R_{{\text{s}}} = \, \frac{{v_{{{\text{ssi}}}} }}{{i_{{{\text{ssi}}}} }},R_{{\text{r}}} = R_{{\text{s}}} /k $$

(22)

Therefore the inductances can be evaluated as

$$ L_{{\text{s}}} + L_{{\text{r}}} = \frac{1}{2\pi f}\sqrt {\left( {\frac{{V_{{\text{s}}} }}{{I_{{\text{r}}} }}} \right)^{2} - \left( {R_{{\text{s}}} + \frac{{R_{{\text{r}}} }}{s}} \right)^{2} } $$

(23)

where slip s is changing with the estimated speed

$$ L_{{\text{m}}} = \frac{1}{2\pi f}\frac{{P_{{{\text{nl}}}} }}{{V_{{\text{s}}} I_{{{\text{nl}}}} \sqrt {1 - p_{{{\text{fnl}}}}^{2} } }} $$

(24)

Considering the inputs of each BPANN topology as

$$ a_{j1} = a_{j} - \varepsilon , \, a_{j2} = a_{j} , \, a_{j2} = a_{j} + \varepsilon $$

(25)

three such inputs for each *j* are mapped to the four neurons of the first hidden layer by their corresponding weight factor *w*. The selection of the weights is done in a random manner such that the neurons of this layer are initialized as in Eq. (26)

$$ \left[ {\begin{array}{*{20}c} {h_{11j} } \\ {h_{12j} } \\ {h_{13j} } \\ \begin{gathered} h_{14j} \hfill \\ h_{15j} \hfill \\ \end{gathered} \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {w_{1j} } & {w_{6j} } & {w_{11j} } \\ {w_{2j} } & {w_{7j} } & {w_{12j} } \\ {w_{3j} } & {w_{8j} } & {w_{13j} } \\ {w_{4j} } & {w_{9j} } & {w_{14j} } \\ {w_{5j} } & {w_{10j} } & {w_{15j} } \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {a_{j1} } \\ {a_{j2} } \\ {a_{j3} } \\ \end{array} } \right] $$

(26)

The BPANN structure is designed in such a way that the vanishing gradient and exploding gradient problems are minimum. For simplicity, the number of the hidden layer is considered to be two where Leaky Relu and Adam activation function is used for optimization. But in some work [30, 31] use of three hidden layers has also been considered to improve accuracy. The use of three hidden layers poses the problems like: (i) increase in network complexity, (ii) increase in convergence time, as well as the number of iterations to converge, (iii), increases the processor’s computational overhead, and accordingly, high power processors are required for its implementation. Whereas with the use of two hidden layers, these problems are very less and the system with two hidden layers can easily be implemented with a low-power processor. But considering the accuracy aspects for the evaluation of ECPs of IM, three hidden layer system control structure is considered in this work. The activation function used here is Leaky Relu which is defined as *S*_{ir}(*h*) = *h*_{ir} for *h*_{ir} ≥ 0 or *S*_{ir}(*h*) = 0.01*h*_{ir} for *h*_{ir} < 0 where *i* represents the number of hidden layers and *r* represents the number of neurons in that particular hidden layer. For this design, *i* and *r* maybe 1 to 2 and 1 to 4, respectively. The second hidden layer neurons are represented similarly as given by

$$ \left[ {\begin{array}{*{20}c} {h_{21j} } \\ {h_{22j} } \\ {h_{23j} } \\ {h_{24j} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {w_{16j} } & {w_{20j} } & {w_{24j} } & {w_{28j} } & {w_{32j} } \\ {w_{17j} } & {w_{21j} } & {w_{25j} } & {w_{29j} } & {w_{33j} } \\ {w_{18j} } & {w_{22j} } & {w_{26j} } & {w_{30j} } & {w_{34j} } \\ {w_{19j} } & {w_{23j} } & {w_{27j} } & {w_{31j} } & {w_{35j} } \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {s_{11j} } \\ {s_{12j} } \\ {s_{13j} } \\ {s_{14j} } \\ {s_{15j} } \\ \end{array} } \right] $$

(27)

$$ \left[ {\begin{array}{*{20}c} {h_{31j} } \\ {h_{32j} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {w_{36j} } & {w_{38j} } & {w_{40j} } & {w_{42j} } \\ {w_{37j} } & {w_{39j} } & {w_{41j} } & {w_{43j} } \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {s_{21j} } \\ {s_{22j} } \\ {s_{23j} } \\ {s_{24j} } \\ \end{array} } \right] $$

(28)

The output of the ECP_{pj} is expressed as

$$ {\text{ECP}}_{{{\text{p}}j}} = \left[ {\begin{array}{*{20}c} {w_{44j} } & {w_{45j} } \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {s_{31j} } \\ {s_{32j} } \\ \end{array} } \right] $$

(29)

Besides, the BPANN algorithm is designed in such a way that the weight factors are trained during the speed transient period and/or starting period of the motor while these periods are identified till the desired set speed is achieved from the very start i.e. stopped or stalled condition of the motor.

For the training purposes, each of the output parameters from *M*_{P} is compared with the respective reference parameters coming out from *M*_{R} i.e. the error between the parameters of the *M*_{R} and *M*_{P} are *E*_{j} = (ECP_{Rj}*-*ECP_{Pj}) are evaluated such that The loss or error functions are then generated following Eqs. (35) which are minimized using Adam rule to recalculate the weights in backpropagation manner,

$$ b_{j} = \frac{1}{2}E_{j}^{2} ,j = [R_{{\text{s}}} = {\text{ECP}}_{{{\text{Rs}}}} ,R_{{\text{r}}} = {\text{ECP}}_{{{\text{Rr}}}} ,L_{{\text{s}}} = {\text{ECP}}_{{{\text{Ls}}}} ,L_{{\text{m}}} = {\text{ECP}}_{{{\text{Lm}}}} ] $$

(30)

where *b*_{j} is the loss function for each of the *j*th parameters. Thus the weight updation process or the training process continues until the difference between the output of all the elements of *M*_{R} and *M*_{P} will be less than or equal to the tolerance limit *δ*,

$$ E_{j} = {\text{ECP}}_{{\text{R}}} - {\text{ECP}}_{{{\text{P}}j}} = \pm \delta $$

(31)

The basic weight updation rule as stated in the gradient descend (GD) method is expressed as in Eq. (32). This weight updation method is modified as per the ADAM rule as described in Eq. (35–38). This ADAM rule is a combined form of the Adagrad and RMSProp adaptive GD method, the details of which are explained in reference (25), and hence the description is not included in this paper.

$$ w_{(n + 1)} = w_{(n)} - \eta \frac{\partial E}{{\partial w_{n} }},g_{n} = \frac{\partial E}{{\partial w_{n} }} $$

(32)

$$ w_{(n + 1)} = w_{(n)} - \frac{\eta }{{\sqrt {\gamma + r_{n}^{*} } }} \times m_{n}^{*} $$

(33)

where *m*_{n} is the momentum term and the value of *m*_{n} and *r*_{n} is given by

$$ m_{n} = \beta_{n} \times (m_{n - 1} - 1) + (1 - \beta_{1} ) \times g_{n} ,g_{n} = \frac{\partial E}{{\partial w_{n} }} $$

(34)

$$ r_{n}^{*} = \beta_{n} \times (r_{n - 1} - 1) + (1 - \beta_{2} ) \times g_{n}^{2} $$

(35)

and

$$ m_{n}^{*} = \frac{{m_{n} }}{{1 - \beta_{1}^{n} }},r_{n}^{*} = \frac{{r_{n} }}{{1 - \beta_{2}^{n} }},\beta_{1} = 0.9,\beta_{2} = 0.999 $$

(36)

The BPANN gain tuning procedure continues till the weight updating rule is satisfied, the duration of which is well within the starting transition period of the motor.

#### ECPs evaluation during running

Once the training period is over, the ECPs estimation is started with the plant model by making a switch over to the selection of input towards sampled feedback of (*V*_{s}, *I*_{s}(*I*_{a}, *I*_{b})). The parameters are calculated using Eqs. (22)–(24) to form the input matrix of BPANN and then this [A]_{3×5} is used to evaluate ECP_{P}. The values of *K*_{1}, *K*_{2}, and *K*_{3} are also evaluated following Eq. (37), and all the IFOC d-q voltage, current, flux, slip frequency, etc., are calculated using Eq. (2)–(11).

$$ K_{1} = \frac{1}{{{\text{ECP}}_{{L_{{\text{m}}} }} }},K_{2} = \frac{{4{\text{ECP}}_{{L_{{\text{r}}} }} }}{{3p{\text{ECP}}_{{L_{{\text{m}}}^{2} }} }},K_{3} = \frac{{{\text{ECP}}_{{R_{{\text{r}}} }} }}{{{\text{ECP}}_{{L_{{\text{r}}} }} }} $$

(37)