Keywords

1 Introduction

The rotor angular velocity estimate can be used in the control loop instead of the measured value, for sensor fault detection or as a reserve system. It is actively studied as part of sensorless (self-sensing) algorithms, where mechanical variables, such position and speed, estimate by currents and voltages measurements [8].

Sensorless control has several benefits. Transducers mounting requires additional space for sensing element and wiring. High-resolution sensors are usually expensive. Estimators and observers can be used to decrease the cost of the drive system and increase the failure tolerance.

In this paper, the speed estimation for a permanent-magnet synchronous motor (PMSM) is considered. The overview of the main approaches is presented in [2]. We mention the following results. The observer-based position estimator is described in [4, 5]. The main problem of such methods is performance degradation at low- and zero-speed. Methods presented in [9, 10] use high-frequency signal injection, which improves performance for the low speeds. However, it requires additional hardware effort and cannot be used on the speeds near the maximum.

This work uses the relation between the rotor angular velocity and currents and voltages, which is described in [1]. In the mentioned paper the third order regression model was obtained, where parameters depend on the rotor angular velocity. In this paper, the order is decreased to one. All parameters of the mathematical model are assumed to be known except the stator windings resistance and rotor inertia. Although resistance can be measured, it depends on the temperature and changes over operating time.

2 Problem Statement

Consider a classical, two-phase \(\alpha \beta \) model of the unsaturated, non-salient, PMSM given by [6] and [8]

$$\begin{aligned} \dot{\lambda }(t)&= \upsilon (t) - R i(t), \end{aligned}$$
(1)
$$\begin{aligned} j \dot{\omega }(t)&= -f \omega (t) + \tau _e(t) - \tau _l(t), \end{aligned}$$
(2)
$$\begin{aligned} \dot{\theta }(t)&= \omega (t), \end{aligned}$$
(3)

where \(\lambda (t) = [ \lambda _1(t) \, \lambda _2(t) ]^T \in \mathbb {R}^{2}\) is the stator flux, \(i(t) = [ i_1(t) \, i_2(t) ]^T \in \mathbb {R}^{2}\) are the currents, \(\upsilon (t) = [ \upsilon _1(t) \, \upsilon _2(t) ]^T \in \mathbb {R}^{2}\) are the voltages, R is the stator winding resistance, \(j > 0\) is the rotor inertia, \(\theta (t) \in \mathbb {S} = [0, 2\pi )\) is the rotor phase, \(\omega (t) \in \mathbb {R}\) is the mechanical angular velocity, \(f \ge 0\) is the viscous friction coefficient, \(\tau _l(t) \in \mathbb {R}\) is the load torque, \(\tau _e(t) \in \mathbb {R}\) is the torque of electrical origin.

The state-space representation of (1)–(3) has the following form [1]

$$\begin{aligned} L \frac{di (t)}{dt}&= -Ri(t) - \lambda _m \omega (t) C'(\theta ) + \upsilon (t), \end{aligned}$$
(4)
$$\begin{aligned} j \dot{\omega }(t)&= -f \omega (t) + \lambda _m i^T(t) C'(\theta ) - \tau _l(t), \end{aligned}$$
(5)
$$\begin{aligned} \dot{\theta }(t)&= \omega (t), \end{aligned}$$
(6)

where \(L \in \mathbb {R}_{+}\) is the stator inductance, \(\lambda _m\) is the constant flux generated by permanent magnets,

$$\begin{aligned} C'(\theta ) = \begin{bmatrix} -n_p \sin (n_p \theta ) \\ n_p \cos (n_p \theta ) \end{bmatrix} = n_p J C(\theta ) = dC / d\theta , \end{aligned}$$
(7)

\(J \in \mathbb {R}^{2\times 2}\) is the rotation matrix

$$\begin{aligned} J = \begin{bmatrix} 0 &{} -1 \\ 1 &{} 0 \end{bmatrix}, \quad C(\theta ) = \begin{bmatrix} \cos (n_p \theta ) \\ \sin (n_p \theta ) \end{bmatrix}, \end{aligned}$$
(8)

\(n_p \in \mathbb {N}\) is the number of pole pairs.

The objective is to find the estimate \(\hat{\omega }(t)\) of the constant angular velocity \(\omega \) that provides exponential convergence of the error \(\tilde{\omega }(t) = \omega - \hat{\omega }(t)\) to zero, i.e. there exist positive constants C and a such that

$$\begin{aligned} \left\Vert \tilde{\omega }(t) \right\Vert \le C e^{-a t}, \end{aligned}$$
(9)

\(\left\Vert \cdot \right\Vert \) is some norm of the vector, under the following assumptions.

Assumption 1

All model (1)–(2) parameters except the stator winding resistance R and the rotor inertia j are known.

Assumption 2

The currents i(t) and voltages \(\upsilon (t)\) are measured.

Assumption 3

The rotor angular velocity \(\omega (t)\) is constant.

The Assumption 2 is satisfied in the usual operation mode. In some cases \(\upsilon (t)\) are not measured directly, but estimated with sufficiently high accuracy.

3 Main Result

Following [1] consider the equation based on (4)

$$\begin{aligned} Ri(t) + L \frac{di(t)}{dt} - \upsilon (t) = - \lambda _m \omega C'(\theta ). \end{aligned}$$
(10)

Applying the filter as proposed in [7]

$$\begin{aligned} (\cdot )_f = \frac{1}{T p + 1}(\cdot ), \end{aligned}$$
(11)

where \(p=d/dt\) and \(T \in \mathbb {R}_{+}\) is a design parameter, to (10) gives

$$\begin{aligned} R \frac{1}{T p + 1} i(t) + L \frac{p}{T p + 1} i(t) - \frac{1}{T p + 1} \upsilon (t) = - \lambda _m \omega \frac{1}{T p + 1} C'(\theta ). \end{aligned}$$
(12)

Substituting vectors components yields

$$\begin{aligned} R \zeta _1(t) + \xi _1(t)&= \mu \sin ( n_p \omega t + \alpha ) + \varepsilon _1(t), \end{aligned}$$
(13)
$$\begin{aligned} R \zeta _2(t) + \xi _2(t)&= - \mu \cos ( n_p \omega t + \alpha ) + \varepsilon _2(t), \end{aligned}$$
(14)

where \(\varepsilon _1(t)\) and \(\varepsilon _2(t)\) are exponentially decaying terms, because filter (11) is stable,

$$\begin{aligned} \zeta _1(t)&= \frac{1}{T p + 1} i_1(t), \end{aligned}$$
(15)
$$\begin{aligned} \xi _1(t)&= L \frac{p}{T p + 1} i_1(t) - \frac{1}{T p + 1} \upsilon _1(t), \end{aligned}$$
(16)
$$\begin{aligned} \zeta _2(t)&= \frac{1}{T p + 1} i_2(t), \end{aligned}$$
(17)
$$\begin{aligned} \xi _2(t)&= L \frac{p}{T p + 1} i_2(t) - \frac{1}{T p + 1} \upsilon _2(t), \end{aligned}$$
(18)
$$\begin{aligned} \mu&= \lambda _m n_p \omega / \sqrt{1 + n_p^2 \omega ^2 T^2}, \end{aligned}$$
(19)
$$\begin{aligned} \alpha&= \theta (0) - \arctan ( n_p \omega T ), \end{aligned}$$
(20)

where \(\mu \in \mathbb {R}\), \(\alpha \in \mathbb {R}\) are transfer coefficient and phase shift respectively for (11) and sinusoidal signal with frequency \(n_p \omega \).

Let us rewrite \(\zeta _1(t)\), \(\zeta _2(t)\) \(\xi _1(t)\), \(\xi _2(t)\) explicitly

$$\begin{aligned} \nonumber \zeta _1(t)&= \frac{a_i}{\sqrt{T^2 \omega ^2 n_p^2 + 1}} \cos {\left( n_p \omega t + \varphi _i - \tilde{\alpha } \right) } \\ \nonumber&= \frac{a_i}{\sqrt{T^2 \omega ^2 n_p^2 + 1}} \left( \cos {(n_p \omega t + \varphi _i)} \tilde{b} + \sin {(n_p \omega t + \varphi _i)} \tilde{a} \right) \\&= \frac{1}{\sqrt{T^2 \omega ^2 n_p^2 + 1}} \left( i_1(t) \tilde{b} + i_2(t) \tilde{a} \right) , \end{aligned}$$
(21)
$$\begin{aligned} \zeta _2(t)&= \frac{1}{\sqrt{T^2 \omega ^2 n_p^2 + 1}} \left( i_2(t) \tilde{b} - i_1(t) \tilde{a} \right) , \\ \nonumber \xi _1(t)&= \frac{L a_i \omega n_p}{\sqrt{T^2 \omega ^2 n_p^2 + 1}} \cos {\left( n_p \omega t + \varphi _i + \frac{\pi }{2} - \tilde{\alpha } \right) } \\ \nonumber&\quad - \frac{a_v}{\sqrt{T^2 \omega ^2 n_p^2 + 1}} \cos {\left( n_p \omega t - \tilde{\alpha } \right) } \end{aligned}$$
(22)
$$\begin{aligned}&= \frac{L \omega n_p}{\sqrt{T^2 \omega ^2 n_p^2 + 1}}\left( i_1 \tilde{a} - i_2 \tilde{b} \right) - \frac{1}{\sqrt{T^2 \omega ^2 n_p^2 + 1}} \left( \upsilon _1 \tilde{b} + \upsilon _2 \tilde{a} \right) , \end{aligned}$$
(23)
$$\begin{aligned} \xi _2(t)&= \frac{L \omega n_p}{\sqrt{T^2 \omega ^2 n_p^2 + 1}}\left( i_2 \tilde{a}+ i_1 \tilde{b}\right) - \frac{1}{\sqrt{T^2 \omega ^2 n_p^2 + 1}} \left( \upsilon _2 \tilde{b} - \upsilon _1 \tilde{a} \right) , \end{aligned}$$
(24)

where \(\tilde{a} = \sin {(\arctan ( n_p \omega T ))}\), \(\tilde{b} = \cos {(\arctan ( n_p \omega T ))}\), \(\tilde{\alpha } = \arctan ( n_p \omega T )\).

Excluding R from (13)–(14) and neglecting the exponentially decaying terms we obtain

$$\begin{aligned} \xi _1(t)\zeta _2(t) - \xi _2(t)\zeta _1(t) = \mu \zeta _2(t) \sin ( n_p \omega t + \alpha ) + \mu \zeta _1(t) \cos ( n_p \omega t + \alpha ), \end{aligned}$$
(25)

where \(\xi _1(t)\zeta _2(t) - \xi _2(t)\zeta _1(t)\), \(\zeta _1(t)\), and \(\zeta _2(t)\) are measured signals, \(\mu \) and \(n_p \omega \) are unknown parameters.

Remark 1

The stator windings inductance can be excluded form (13)–(14) instead of R.

3.1 Angular Velocity Estimation

This section aims to find a linear regression model with constant parameters depending on the unknown angular velocity \(\omega \).

Substituting (21)–(24) into the left part of (25) yields

$$\begin{aligned} \nonumber \xi _1(t)\zeta _2(t) - \xi _2(t)\zeta _1(t)&= \frac{L \omega n_p}{T^2 \omega ^2 n_p^2 + 1}\left( -i_1^2 -i_2^2 \right) \\ \nonumber&\quad + \frac{1}{T^2 \omega ^2 n_p^2 + 1} \left( \upsilon _2 i_1 - \upsilon _1 i_2 \right) \\&= -\left( \frac{a_i^2 L \omega n_p+a_i a_\upsilon \sin {\phi _i}}{n_p^2 \omega ^2 T^2 +1}\right) , \end{aligned}$$
(26)

where \(\phi _i\) is the phase current shift, \(a_i\) and \(a_\upsilon \) are currents and voltages amplitudes respectively

$$\begin{aligned} a_i&= \sqrt{i_1^2 + i_2 ^2}, \end{aligned}$$
(27)
$$\begin{aligned} a_\upsilon&= \sqrt{\upsilon _1^2 + \upsilon _2 ^2}, \end{aligned}$$
(28)
$$\begin{aligned} \sin \phi _i&= \dfrac{i_2 \upsilon _1 - i_1 \upsilon _2}{a_i a_\upsilon }. \end{aligned}$$
(29)

Substituting (21)–(24) into the right part of (25) gives

$$\begin{aligned} \nonumber&\mu \zeta _2(t) \sin ( n_p \omega t + \alpha ) + \mu \zeta _1(t) \cos ( n_p \omega t + \alpha ) \\ \nonumber&\quad = \frac{\mu }{\sqrt{T^2 \omega ^2 n_p^2 + 1}}\left[ \left( i_2 \tilde{b} - i_1 \tilde{a} \right) \sin {(n_p \omega t - \tilde{\alpha })} \right. \\ \nonumber&\quad \left. \quad + \left( i_1 \tilde{b} + i_2 \tilde{a} \right) \cos {(n_p \omega t - \tilde{\alpha })} \right] \\ \nonumber&\quad = \frac{\mu }{\sqrt{T^2 \omega ^2 n_p^2 + 1}}\left[ i_1\cos {(n_p \omega t)} + i_2 \sin {(n_p \omega t )} \right] \\&\quad = -\frac{\lambda _m n_p \omega a_i}{T^2 \omega ^2 n_p^2 + 1} \sin \phi _i. \end{aligned}$$
(30)

Combining (26) and (30) we obtain

$$\begin{aligned} - \frac{a_i^2 L \omega n_p+a_i a_\upsilon \sin {\phi _i}}{n_p^2 \omega ^2 T^2 +1}&= -\frac{\lambda _m n_p \omega a_i}{T^2 \omega ^2 n_p^2 + 1} \sin \phi _i,\end{aligned}$$
(31)
$$\begin{aligned} a_v \sin \phi _i&= \omega n_p \left( \lambda _m \sin \phi _i -a_i L \right) . \end{aligned}$$
(32)

The Eq. (31) can be represented in the linear regression form

$$\begin{aligned} \psi (t) =\theta \varphi (t), \end{aligned}$$
(33)

where \(\psi (t) = a_v \sin \phi _i\) is the regressand, \(\theta =\omega \) is the unknown parameter, \(\varphi (t) = n_p \left( \lambda _m \sin \phi _i -a_i L\right) \) is the regressor.

Various approaches can be used to estimate the unknown parameter \(\theta \). We propose the estimation algorithm, which is based on the standard gradient method [3]:

$$\begin{aligned} \dot{\hat{\theta }}(t) = k \varphi (t) \left( \psi (t) - \hat{\theta }(t) \varphi (t) \right) , \end{aligned}$$
(34)

where \(\hat{\theta }(t)\) is the estimate of the parameter \(\theta \), \(k\in \mathbb {R}_{+}\) is a constant gain.

The estimation converges to zero exponentially fast

$$\begin{aligned} \left\Vert \theta -\hat{\theta }(t) \right\Vert \le C_{1}e^{-\rho _{1}t}, \end{aligned}$$
(35)

where \(C_{1}\) and \(\rho _{1}\) are some positive constants, if the following conditions are satisfied [3]:

  1. 1.

    The regressor \(\varphi (t)\) is bounded.

  2. 2.

    There exist the positive constant D, such that

    $$\begin{aligned} \int _0^t \varphi ^2(\tau )d\tau \ge Dt. \end{aligned}$$
    (36)

The regressor in (33) is constant and bounded. Inequality (36) holds for \(\varphi (t) \not \equiv 0\). The objective (9) is achieved.

4 Numerical Examples

In this section, we present simulation results that illustrate the efficiency of the proposed estimation algorithm. All simulations have been performed in Mathworks MATLAB Simulink.

The model (4)–(6) parameters, which was used in the simulation, are shown in the Table 1.

Table 1. Parameters of the motor FAST1M6030 and external load.

Open-loop controller was used in the all experiments

$$\begin{aligned} \upsilon _1(t) = A(t) \cos ( \xi (t) t ), \end{aligned}$$
(37)
$$\begin{aligned} \upsilon _2(t) = A(t) \sin ( \xi (t) t ), \end{aligned}$$
(38)

where

$$\begin{aligned} A(t) = \frac{\lambda _1 \lambda _2}{(p + \lambda _1)(p + \lambda _2)} A_{0}(t), \end{aligned}$$
(39)
$$\begin{aligned} \xi (t) = \frac{\lambda _1 \lambda _2}{(p + \lambda _1)(p + \lambda _2)} \xi _{0}(t), \end{aligned}$$
(40)

\(A(t) = 60\), \(\lambda _1\) and \(\lambda _2\) are the tunable parameters; \(A_{0}(t)\) and \(\xi _{0}(t)\) are the desired amplitude and frequency of the voltage signals in steady state.

The experimental results for piecewise constant angular velocity (in the steady state), which have step change at time 200 s, are shown in Fig. 1. The following form of \(\xi _{0}(t)\) was used

$$\begin{aligned} \xi _{0}(t)&= {\left\{ \begin{array}{ll} 60, 0 \le t < 200s,\\ 66, 200s \le t. \end{array}\right. } \end{aligned}$$
(41)

The estimation gain k was equal to 20. In this case, the estimation error \(\tilde{\omega }(t)\) converges to zero in steady state.

In the second case, estimation of the time-varying rotor speed is investigated. The control signals were produced using

$$\begin{aligned} \xi _{0}(t)&= 60 + \zeta _{0}(t), \end{aligned}$$
(42)
$$\begin{aligned} \zeta _{0}(t)&= {\left\{ \begin{array}{ll} 0, 0 \le t < 50s,\\ 0.06 \sin (0.2t), 50s \le t. \end{array}\right. } \end{aligned}$$
(43)
Fig. 1.
figure 1

The angular velocity, estimation, and estimation error

Fig. 2.
figure 2

The angular velocity, estimation, and estimation error for the time-varying rotor speed

To increase performance of the estimator, the value of k was increased up to 50. The behaviours of the angular velocity signal \(\omega (t)\), estimate \(\hat{\omega }(t)\), and estimation error \(\omega (t)-\hat{\omega }(t)\) are depicted in Fig. 2. There is a small estimation error, which depends on properties of the rotor speed and the estimator performance.

In Fig. 3 the behaviour of the estimate based on the corrupted by exponentially correlated noise \(\delta (t)\) current signal i(t) is illustrated. The noise signal \(\delta (t)\) was modelled by a shaping filter \(W(s)=0.005/(0.00004s^2+0.0006s+1)\) with frequency-bounded input white noise of power \(N=0.1\). Simulation parameters were the following

$$\begin{aligned} \xi _0(t)&= 20, \quad k=5. \end{aligned}$$
(44)

In the case of noised measurements, the estimate \(\hat{\omega }(t)\) does not converge to \(\omega (t)\) and is also corrupted by noise. However, it is bounded.

Fig. 3.
figure 3

The angular velocity, estimation, and estimation error for the case with additive noise in the measured signal i(t)

5 Conclusion

The simplified estimator for the PMSM rotor angular velocity based on currents and voltages measurements is described. All parameters of the drive are assumed to be known except the stator windings resistance and the rotor inertia.

For the rotation with constant angular velocity is proved that the velocity estimation error converges to zero exponentially fast. The estimator can handle cases with time-varying rotation frequency and noises in the measured signals. The estimation error in such cases is bounded, but don’t converge to zero.

For the known stator windings resistance and unknown inductance the estimator can be accordingly modified. From Eqs. (13)–(14) one or another parameter can be excluded.

Future investigations will be devoted to the angular velocity estimation for the case with unknown permanent magnets flux constant \({\lambda }_m\) and the stator windings inductance L. Also, time-varying rotation frequency will be considered.