1 Introduction

Modern industrial processes must guarantee efficiency of industrial production. In general, many equipments operate in an interconnected way. This happens when the measured variable, corresponding to a particular device, influences the operation of another equipment. The presence of malfunctions or defects in a single component may affect drastically the whole system performance. In order to avoid deterioration or damage to machines and human beings, fault-tolerant control (FTC) is incorporated into the processes. This type of control is able to detect and compensate faults quickly, so their effects are not propagated to the other components in the process. FTC has become an important line of research because it increases the safety and reliability of control loop. During the last two decades, many papers related to FTC techniques were published (Patton and Chen 1997; Li et al. 2012; Cao et al. 2011), as well as, their application, i.e., in level control, power converters and vehicle model control (Noura et al. 2009; Li et al. 2016; Chen et al. 2018).

An important role of FTC is the fault compensation in control systems. Those faults may affect the performances of the actuators, sensors and the plant itself. Particularly, fault estimation is a powerful feature of an active FTC because it can provide information about the magnitude and shape of the fault. The fault reconstruction is an important feature in various applications in control reconfiguration and real-time decisions. There are many observer-based approaches that can be used to perform the state and fault estimation, e.g., sliding mode observers (Chen and Saif 2007; Van et al. 2013), adaptive scheme (Wen et al. 2015; Reppa et al. 2014), differential geometric method (Persis and Isidori 2001; Meskin and Khorasani 2010) and unknown input observer (UIO) which was proposed in Chen et al. (1996) and was used for robust state estimation in systems affected by uncertainties in Vu et al. (2017), although they were proposed for continuous-time system and for states estimates only.

The main drawback of aforementioned methods is that most of the implemented controllers based in micro-processed devices which must be analyzed as a discrete-time process. Many researchers have focused on discrete-time observers for discrete-time systems subjected to faults. For instance, Jia et al. (2015) and Witczak et al. (2016) present approaches which are able to estimate faults in nonlinear systems. However, they do not perform both actuator and sensor fault estimation simultaneously. The UIO design method proposed by Gao (2015) is able to estimate the states and both actuator and sensor fault signal in a system affected by process disturbances and sensor noise. Nevertheless, it does not extend the approach to a Lipschitz nonlinear system. Additionally, although the observer proposed in Gu and Yang (2018) is able to simultaneously perform fault estimation in actuator and sensor of Lipschitz nonlinear systems, it does not consider sensor disturbances, and to obtain the estimator design, the sensor fault distribution matrix must be exactly known, which is unrealistic in many practical applications.

As seen, new approaches should address to UIO capable of handling sensor and actuator fault estimation for Lipschitz nonlinear discrete-time systems subjected to process and measurement disturbances. Under this assumption, we propose a robust actuator and sensor fault estimator design to discrete-time systems. In order to achieve this objective, firstly, an augmented system is obtained from an augmented state vector composed of system states and faults. This augmented system is based on the methodology presented in Gao et al. (2016). After that, the appropriated robust observer is used to decoupling process disturbances. In addition, sufficient conditions for observer existence are described. Then, the robust UIO gain matrices are obtained using linear matrix inequality (LMI) optimization techniques which are based on Vu et al. (2017) and Rotondo et al. (2016). These approaches were used to ensure error estimation dynamics stable and to attenuate the other disturbances that cannot be decoupled.

The reminder of this paper is organized as follows. In Sect. 2, the proposed method is presented in linear discrete-time system context. In sequence, in Sect. 3, the proposed technique is extended to Lipschitz nonlinear systems. Finally, the effectiveness of the proposed methods is validated by two numerical examples, in Sect. 4.

Notations Throughout this paper, the notation \({\mathcal {R}}^n\) and \({\mathcal {R}}^{n\times m}\) stand for the n-dimensional Euclidean space and the set of \(n\times m\) real matrices, respectively. \(\mathbf{I }_n\) denotes identity matrix with dimension of \(n\times n\). \(\mathbf{0 }_{n\times m}\) is a matrix which all entries are zero and its dimension is \(n\times m\). The superscript T denotes the transpose of matrices or vectors. The notations \(\mathbf{X }>0\) and \(\mathbf{X }<0\) indicate that the symmetric matrix \(\mathbf{X }\) is positive definite and negative definite, respectively. \(|\mathbf{x }_k|\) represents the standard norm of \(\mathbf{x }_k\), and \(||\mathbf{x }_k||_{l_2}=\sqrt{\sum _{k=0}^\infty \mathbf{x }_k^{\mathrm{T}}\mathbf{x }_k}\) stands for Euclidean norm of sequences of vectors. Moreover, we also have

$$\begin{aligned} \left[ \begin{array}{c@{\quad }c} \mathbf{M }_1 &{} * \\ \mathbf{M }_2 &{} \mathbf{M }_3 \end{array}\right] = \left[ \begin{array}{c@{\quad }c} \mathbf{M }_1 &{} \mathbf{M }_2^{\text {T}} \\ \mathbf{M }_2 &{} \mathbf{M }_3 \end{array}\right] \end{aligned}$$

in large matrix expressions.

2 Linear Case

In this section, UIO fault estimation methods are described for a linear system subjected to actuator and sensor faults, process disturbances and sensor noise.

Consider a dynamic linear discrete in time system represented in state-space form as:

$$\begin{aligned}&\mathbf{x }_{k+1}=\mathbf{A }\mathbf{x }_k+\mathbf{B }\mathbf{u }_k+\mathbf{B }_1 \mathbf{d }_k+\mathbf{B }_2\mathbf{f }_{\mathrm{a}k}, \end{aligned}$$
(1a)
$$\begin{aligned}&\mathbf{y }_k=\mathbf{C }\mathbf{x }_k +\mathbf{D }_1\mathbf{n }_k+\mathbf{D }_2\mathbf{f }_{\mathrm{s}k}, \end{aligned}$$
(1b)

where \(\mathbf{x }_k \in {\mathcal {R}}^n\) is the system states vector, \(\mathbf{u }_k \in {\mathcal {R}}^m\) is the control input vector, \(\mathbf{y }_k \in {\mathcal {R}}^p\) is the system output vector, \(\mathbf{f }_{\mathrm{a}k} \in {\mathcal {R}}^{l_{f\mathrm{a}}}\) and \(\mathbf{f }_{\mathrm{s}k} \in {\mathcal {R}}^{l_{f\mathrm{s}}}\) stand for actuator and sensor fault vector, respectively, \(\mathbf{d }_k \in {\mathcal {R}}^{l_d}\) and \(\mathbf{n }_{k} \in {\mathcal {R}}^{l_n}\) are norm-bounded disturbances or uncertainties associated with state and output equations respectively, and \(\mathbf{A }\), \(\mathbf{B }\), \(\mathbf{B }_1\), \(\mathbf{B }_2\), \(\mathbf{C }\), \(\mathbf{D }_1\) and \(\mathbf{D }_2\) are known constant coefficient matrices with appropriate dimensions. In addition, \(\mathbf{B }_1\) is considered of full column rank. The system (1) can be represented as:

$$\begin{aligned}&\mathbf{x }_{k+1}=\mathbf{A }\mathbf{x }_k+\mathbf{B }\mathbf{u }_k+\mathbf{B }_1\mathbf{d }_k+\mathbf{F }_x\mathbf{f }_k, \end{aligned}$$
(2a)
$$\begin{aligned}&\mathbf{y }_k=\mathbf{C }\mathbf{x }_k+\mathbf{D }_1\mathbf{n }_k+\mathbf{F }_y\mathbf{f }_k, \end{aligned}$$
(2b)

where \(\mathbf{f }_k=\left[ \begin{array}{c@{\quad }c} \mathbf{f }_{\mathrm{a}k}^{\text {T}}&\mathbf{f }_{\mathrm{s}k}^{\text {T}} \end{array}\right] ^{\text {T}}\), \(\mathbf{F }_x=\left[ \begin{array}{c@{\quad }c} \mathbf{B }_2&\mathbf{0 }_{n \times l_{f_\mathrm{s}}} \end{array}\right] \), and \(\mathbf{F }_y=\left[ \begin{array}{c@{\quad }c} \mathbf{0 }_{l_{f_\mathrm{a}} \times p}&\mathbf{D }_2 \end{array}\right] \).

The fault vector dynamics can be calculated as follows:

$$\begin{aligned} \mathbf{f }_{k+1}=\mathbf{f }_k+{\varvec{\xi }}_k, \end{aligned}$$
(3)

where \(\varvec{\xi }_k\) is the fault deviation and satisfies \(||\varvec{\xi }_k||_{l_2}<\infty \).

By defining an augmented state vector as:

$$\begin{aligned} \bar{\mathbf{x }}_k=\left[ \begin{array}{c@{\quad }c} \mathbf{x }_k^{\text {T}}&\mathbf{f }_{k}^\mathrm{T} \end{array}\right] ^\mathrm{T} \in {\mathcal {R}}^{{\bar{n}}}, \end{aligned}$$
(4)

where \({\bar{n}}=n+l_{f},\) with \(l_f=l_{f\mathrm{a}}+l_{f\mathrm{s}}\), one obtains the following augmented system:

$$\begin{aligned}&\bar{\mathbf{x }}_{k+1}={\bar{\mathbf{A }}}\bar{\mathbf{x }}_k+{\bar{\mathbf{B }}}\mathbf{u }_k+{\bar{\mathbf{B }}}_1\mathbf{d }_k+\mathbf{F }\varvec{\xi }_k, \end{aligned}$$
(5a)
$$\begin{aligned}&\mathbf{y }_k={\bar{\mathbf{C }}}\bar{\mathbf{x }}_k+\mathbf{D }_1\mathbf{n }_k, \end{aligned}$$
(5b)

where \({\bar{\mathbf{A }}}=\left[ \begin{array}{c@{\quad }c} \mathbf{A } &{} \mathbf{F }_x\\ \mathbf{0 }_{l_f\times n} &{} \mathbf{I }_{l_f}\\ \end{array}\right] \in {\mathcal {R}}^{{\bar{n}}\times {\bar{n}}}\), \(\bar{\mathbf{B }}=\left[ \begin{array}{c} \mathbf{B } \\ \mathbf{0 }_{l_f\times m} \end{array}\right] \in {\mathcal {R}}^{{\bar{n}}\times m}\), \(\bar{\mathbf{B }}_1=\left[ \begin{array}{c} \mathbf{B }_1 \\ \mathbf{0 }_{l_f\times l_d} \end{array}\right] \in {\mathcal {R}}^{{\bar{n}}\times l_d}\), \(\mathbf{F }=\left[ \begin{array}{c} \mathbf{0 }_{n\times l_f} \\ \mathbf{I }_{l_f} \end{array}\right] \in {\mathcal {R}}^{{\bar{n}}\times l_f}\) and \(\bar{\mathbf{C }}=\left[ \begin{array}{c@{\quad }c} \mathbf{C }&\mathbf{F }_y \end{array}\right] \in {\mathcal {R}}^{p\times {\bar{n}}}\).

The proposed UIO is

$$\begin{aligned}&\mathbf{z }_{k+1}=\mathbf{M }\mathbf{z }_k+\mathbf{N }\mathbf{u }_k+\mathbf{K }\mathbf{y }_k, \end{aligned}$$
(6a)
$$\begin{aligned}&\hat{{\bar{\mathbf{x }}}}_k=\mathbf{z }_k+\mathbf{L }\mathbf{y }_k, \end{aligned}$$
(6b)

where \(\mathbf{z }_k\in {\mathcal {R}}^{{\bar{n}}}\) is the observer state vector and \(\hat{{\bar{\mathbf{x }}}}_k\in {\mathcal {R}}^{{\bar{n}}}\) is the estimate of \(\bar{\mathbf{x }}_k\), while \(\mathbf{M }\in {\mathcal {R}}^{{{\bar{n}}}\times {{\bar{n}}}}\), \(\mathbf{N }\in {\mathcal {R}}^{{{\bar{n}}}\times m}\), \(\mathbf{K }=\mathbf{K }_1+\mathbf{K }_2\in {\mathcal {R}}^{{{\bar{n}}}\times p}\), and \(\mathbf{L }\in {\mathcal {R}}^{{{\bar{n}}}\times p}\) are the observer gain matrices to be determined.

Defining the estimation error as

$$\begin{aligned} \mathbf{e }_k=\bar{\mathbf{x }}_k-\hat{{\bar{\mathbf{x }}}}_k, \end{aligned}$$
(7)

and using (6b) in (7), one has

$$\begin{aligned} \mathbf{e }_k= & {} \bar{\mathbf{x }}_k-\mathbf{z }_k-\mathbf{L }\mathbf{y }_k \nonumber \\= & {} \mathbf{R }\bar{\mathbf{x }}_k-\mathbf{z }_k-\mathbf{L }\mathbf{D }_1 \mathbf{n }_k, \end{aligned}$$
(8)

where \(\mathbf{R }=\mathbf{I }_{{\bar{n}}}-\mathbf{L }\bar{\mathbf{C }}\).

The estimation error dynamic is:

$$\begin{aligned} \mathbf{e }_{k+1}= & {} \mathbf{R }\bar{\mathbf{x }}_{k+1}-\mathbf{z }_{k+1}-\mathbf{L }\mathbf{D }_1\mathbf{n }_{k+1} \nonumber \\= & {} \mathbf{R }\bar{\mathbf{A }}\bar{\mathbf{x }}_k + \mathbf{R }\bar{\mathbf{B }}\mathbf{u }_k + \mathbf{R }\bar{\mathbf{B }}_1\mathbf{d }_k + \mathbf{R }\mathbf{F }\varvec{\xi }_k - \mathbf{M }\mathbf{z }_k \nonumber \\&- \mathbf{N }\mathbf{u }_k - \mathbf{K }_1\bar{\mathbf{C }}\bar{\mathbf{x }}_k - \mathbf{K }_1\mathbf{D }_1\mathbf{n }_k - \mathbf{K }_2\mathbf{y }_k \nonumber \\&- \mathbf{L }\mathbf{D }_1\mathbf{n }_{k+1} \nonumber \\= & {} (\mathbf{R }\bar{\mathbf{A }}-\mathbf{K }_1\bar{\mathbf{C }})\mathbf{e }_k+(\mathbf{R }\bar{\mathbf{A }}-\mathbf{K }_1\bar{\mathbf{C }}-\mathbf{M })\mathbf{z }_k \nonumber \\&+(\mathbf{R }\bar{\mathbf{B }}-\mathbf{N })\mathbf{u }_k+((\mathbf{R }\bar{\mathbf{A }}-\mathbf{K }_1\bar{\mathbf{C }})\mathbf{L }-\mathbf{K }_2)\mathbf{y }_k \nonumber \\&+\mathbf{R }\bar{\mathbf{B }}_1\mathbf{d }_k+\mathbf{R }\mathbf{F }\varvec{\xi }_k-\mathbf{K }_1\mathbf{D }_1\mathbf{n }_k-\mathbf{L }\mathbf{D }_1\mathbf{n }_{k+1}, \end{aligned}$$
(9)

If one can make the following relationships hold:

$$\begin{aligned}&\mathbf{R }\bar{\mathbf{B }}_1=0, \end{aligned}$$
(10)
$$\begin{aligned}&\mathbf{M }=\mathbf{R }\bar{\mathbf{A }}-\mathbf{K }_1\bar{\mathbf{C }},\end{aligned}$$
(11)
$$\begin{aligned}&\mathbf{N }=\mathbf{R }\bar{\mathbf{B }},\end{aligned}$$
(12)
$$\begin{aligned}&\mathbf{K }_2=\mathbf{M }\mathbf{L }, \end{aligned}$$
(13)

the state estimation error dynamic (9) reduces to

$$\begin{aligned} \mathbf{e }_{k+1}&=\mathbf{M }\mathbf{e }_k+\mathbf{R }\mathbf{F }\varvec{\xi }_k-\mathbf{K }_1\mathbf{D }_1\mathbf{n }_k-\mathbf{L }\mathbf{D }_1\mathbf{n }_{k+1}. \end{aligned}$$
(14)

Theorem 1

The necessary conditions for the existence of UIO defined in (6) for the system (5) are

  1. (i)

    rank\((\mathbf{C }\mathbf{B }_1)\,=\,\)rank\((\mathbf{B }_1)\),

  2. (ii)

    the pair \((\bar{\mathbf{C }},\mathbf{R }\bar{\mathbf{A }})\) is detectable.

Proof

The proof of Theorem 1 can be referred to Gao et al. (2016) and Hsu et al. (2001) and is omitted here.

Remark 1

The condition (i) of Theorem 1 means that (10) is solvable. Then, \(\mathbf{L }\) can be found as:

$$\begin{aligned} \mathbf{L }=\bar{\mathbf{B }}_1[(\bar{\mathbf{C }}\bar{\mathbf{B }}_1)^\mathrm{T}\,(\bar{\mathbf{C }}\bar{\mathbf{B }}_1)]^{-1}(\bar{\mathbf{C }}\bar{\mathbf{B }}_1)^\mathrm{T}. \end{aligned}$$
(15)

Remark 2

The condition (ii) of Theorem 1 means that the unstable poles of \(\mathbf{M }\) can be assigned arbitrarily. It implies that the desired UIO response can be achieved through \(\mathbf{L }\) design.

One can rewrite (14) in a matrix form as

$$\begin{aligned} \mathbf{e }_{k+1}=\left[ \begin{array}{c@{\quad }c@{\quad }c} \mathbf{M }&\bar{\mathbf{W }}_1&\bar{\mathbf{W }}_2 \end{array}\right] \left[ \begin{array}{c} \mathbf{e }_k\\ \varvec{\omega }_k\\ \varvec{\omega }_{k+1} \end{array}\right] , \end{aligned}$$
(16)

where \(\varvec{\omega }_{k}=\left[ \begin{array}{c@{\quad }c} \varvec{\xi }_k^\mathrm{T}&\mathbf{n }_k^\mathrm{T} \end{array}\right] ^\mathrm{T}\in {\mathcal {R}}^{l_\omega }\) and \(\bar{\mathbf{W }}_1=\mathbf{W }_1-\mathbf{K }_1\mathbf{W }_2\) and \(\bar{\mathbf{W }}_2=-\mathbf{L }\mathbf{W }_2\) with \(l_\omega =l_{f}+l_n\), \(\mathbf{W }_1=\left[ \begin{array}{c@{\quad }c} \mathbf{R }\mathbf{F }&\mathbf{0 }_{{\bar{n}}\times l_n} \end{array}\right] \) and \(\mathbf{W }_2=\left[ \begin{array}{c@{\quad }c} \mathbf{0 }_{p\times l_f}&\mathbf{D }_1 \end{array}\right] \).

The next step for designing robust observers (6) is to guarantee that the estimation error \(\mathbf{e }_k\) is asymptotically convergent, making the matrix \(\mathbf{M }\) stable, and reducing the influence from the vector \(\varvec{\omega }_{k}\), which contain the fault deviation vector and the sensor noise.

The following lemmas are useful to derive the Theorems 2 and 3.

Lemma 1

(Boyd et al. 1994) The ensuing statements are equivalent:

  1. (i)

    \(\mathbf{X }=\mathbf{X }^\mathrm{T}\), \(\mathbf{X }>0\) and \(\mathbf{Y }^\mathrm{T}\mathbf{X }^{-1}\mathbf{Y }+\mathbf{W }<0\),

  2. (ii)

    \(\left[ \begin{array}{c@{\quad }c} \mathbf{W } &{} \mathbf{Y }^\mathrm{T} \\ \mathbf{Y } &{} -\mathbf{X } \end{array}\right] <0\).

Lemma 2

(Li et al. 2008) For any matrices \(\mathbf{X }\in {\mathcal {R}}^{s\times t}\) and \(\mathbf{Y }\in {\mathcal {R}}^{t\times s}\), and any scalar \(\epsilon >0\), we have

$$\begin{aligned} \mathbf{X }\mathbf{Y }+\mathbf{Y }^\mathrm{T}\mathbf{X }^\mathrm{T} \le \epsilon ^{-1}\mathbf{X }^\mathrm{T}\mathbf{X }+\epsilon \mathbf{Y }^\mathrm{T}\mathbf{Y }. \end{aligned}$$

Theorem 2

If there exists a positive definite symmetric matrix \(\mathbf{P }\) and a matrix \(\mathbf{Q }\) and a constant \(\lambda >0\) such that the LMI

$$\begin{aligned} \left[ \begin{array}{c@{\quad }c@{\quad }c@{\quad }c} -\mathbf{P }+\mathbf{I }_{{\bar{n}}} &{} * &{} * &{} *\\ \mathbf{0 }_{l_\omega \times {\bar{n}}} &{} -\lambda ^2\mathbf{I }_{l_\omega } &{} * &{} *\\ \mathbf{0 }_{l_\omega \times {\bar{n}}} &{} \mathbf{0 }_{l_\omega \times l_\omega } &{} -\lambda ^2\mathbf{I }_{l_\omega } &{} *\\ \mathbf{P }\mathbf{R }\bar{\mathbf{A }}-\mathbf{Q }\bar{\mathbf{C }} &{} \mathbf{P }\mathbf{W }_1-\mathbf{Q }\mathbf{W }_2 &{} \mathbf{P }\bar{\mathbf{W }}_2 &{} -\mathbf{P } \end{array}\right] <0 \end{aligned}$$
(17)

holds. Then, the robust UIO, defined by (6), for the system (5) is solvable and is able to guarantee the following upper bound

$$\begin{aligned} ||\mathbf{e }_k||_{l_2}\le \alpha ||\varvec{\omega }_k||_{l_2}, \end{aligned}$$
(18)

where \(\alpha =\sqrt{2}\lambda >0\) is a prescribed \(H_\infty \) performance index and \(\mathbf{Q }=\mathbf{P }\mathbf{K }_1\).

Proof

The problem of \(H_\infty \) observer design Li and Fu (1997), Rotondo et al. (2016) is to determine the matrix \(\mathbf{K }_1\) such that

$$\begin{aligned} \lim _{k\rightarrow \infty }e_k= & {} 0\text { for }\omega _{k}=0\text { }\forall k, \end{aligned}$$
(19)
$$\begin{aligned} ||e_k||_{l_2}\le & {} \alpha ||\omega _k||_{l_2}\text { for }\omega _{k}\ne 0,\text { }e_0=0. \end{aligned}$$
(20)

By taking the following Lyapunov candidate function:

$$\begin{aligned} V_k=\mathbf{e }_k^\mathrm{T}\mathbf{P }\mathbf{e }_k, \end{aligned}$$
(21)

one has

$$\begin{aligned} \Delta V_k= & {} V_{k+1}-V_k \nonumber \\= & {} \mathbf{e }_{k+1}^\mathrm{T}\mathbf{P }\mathbf{e }_{k+1}-\mathbf{e }_k^\mathrm{T}\mathbf{P }\mathbf{e }_k. \end{aligned}$$
(22)

Substituting (16) in (22), one has

$$\begin{aligned} \Delta V_k&=\left[ \begin{array}{c} \mathbf{e }_k\\ \varvec{\omega }_k\\ \varvec{\omega }_{k+1} \end{array}\right] ^\mathrm{T}\left( {\varvec{\Lambda }}^\mathrm{T}\mathbf{P }{\varvec{\Lambda }}+{\varvec{\Omega }}\right) \left[ \begin{array}{c} \mathbf{e }_k\\ \varvec{\omega }_k\\ \varvec{\omega }_{k+1} \end{array}\right] , \end{aligned}$$
(23)

where \({\varvec{\Lambda }}=\left[ \begin{array}{c@{\quad }c@{\quad }c} \mathbf{M }&\bar{\mathbf{W }}_1&\bar{\mathbf{W }}_2 \end{array}\right] \) and \({\varvec{\Omega }}=\left[ \begin{array}{cc} -\mathbf{P } &{} \mathbf{0 }_{{\bar{n}}\times 2l_\omega } \\ \mathbf{0 }_{2l_\omega \times {\bar{n}}} &{} \mathbf{0 }_{2l_\omega \times 2l_\omega } \end{array}\right] \).

According to the Lemma 1, one can see that (17) indicates \(\mathbf{M }^\mathrm{T}\mathbf{P }\mathbf{M }-\mathbf{P }<0\). When \(\varvec{\omega }_k=0\), from (23) one has \(\Delta V_k<0\) which implies that the error dynamic is asymptotically stable.

Defining:

$$\begin{aligned} J=\sum ^\infty _{k=0}(\Delta V_k + \mathbf{e }_k^\mathrm{T}\mathbf{e }_k - \lambda ^2\varvec{\omega }_k^\mathrm{T}\varvec{\omega }_k - \lambda ^2\varvec{\omega }_{k+1}^\mathrm{T}\varvec{\omega }_{k+1}), \end{aligned}$$
(24)

one has

$$\begin{aligned} J=\sum ^\infty _{k=0}\left[ \begin{array}{c} \mathbf{e }_k \\ \varvec{\omega }_k \\ \varvec{\omega }_{k+1} \end{array}\right] ^\mathrm{T}{\varvec{\Psi }}\left[ \begin{array}{c} \mathbf{e }_k \\ \varvec{\omega }_k \\ \varvec{\omega }_{k+1} \end{array}\right] , \end{aligned}$$
(25)

where

$$\begin{aligned} {\varvec{\Psi }}=({\varvec{\Lambda }}^\mathrm{T}\mathbf{P })\mathbf{P }^{-1}(\mathbf{P }{\varvec{\Lambda }})+\left[ \begin{array}{c@{\quad }c} -\mathbf{P }+\mathbf{I }_{{\bar{n}}} &{} \mathbf{0 }_{{\bar{n}}\times 2l_\omega } \\ \mathbf{0 }_{2l_\omega \times {\bar{n}}} &{} -\lambda ^2\mathbf{I }_{2l_\omega } \end{array}\right] . \end{aligned}$$
(26)

It is noticeable, in terms of Lemma 1, that (17) implies \({\varvec{\Psi }}<0\), which leads to \(J<0\). Therefore, one can write (24) as

$$\begin{aligned}&\sum ^\infty _{k=0} \mathbf{e }_k^\mathrm{T}\mathbf{e }_k - \sum ^\infty _{k=0}\lambda ^2\varvec{\omega }_k^\mathrm{T}\varvec{\omega }_k - \sum ^\infty _{k=0}\lambda ^2\varvec{\omega }_{k+1}^\mathrm{T}\varvec{\omega }_{k+1} \nonumber \\&\quad +\,V_\infty - V_0<0. \end{aligned}$$
(27)

Knowing that

$$\begin{aligned} \sum ^\infty _{k=0}\lambda ^2\varvec{\omega }_{k+1}^\mathrm{T}\varvec{\omega }_{k+1}-\sum ^\infty _{k=0}\lambda ^2\varvec{\omega }_{k}^\mathrm{T}\varvec{\omega }_{k}=-\lambda ^2\varvec{\omega }_0^\mathrm{T}\varvec{\omega }_0, \end{aligned}$$
(28)

and substituting (28) in (27), one has

$$\begin{aligned} \sum _{k=0}^{\infty }\mathbf{e }_k^\mathrm{T}\mathbf{e }_k-2\lambda ^2\sum _{k=0}^{\infty }\varvec{\omega }_{k}^\mathrm{T}\varvec{\omega }_{k}<-\lambda ^2\varvec{\omega }_0^\mathrm{T}\varvec{\omega }_0-V_\infty +V_0. \end{aligned}$$
(29)

As \(V_\infty \ge 0\) and knowing that \(V_0=0\) for \(e_0=0\), one has

$$\begin{aligned} \sum _{k=0}^{\infty }\mathbf{e }_k^\mathrm{T}\mathbf{e }_k-2\lambda ^2\sum _{k=0}^{\infty }\varvec{\omega }_{k}^\mathrm{T}\varvec{\omega }_{k}<0, \end{aligned}$$
(30)

or

$$\begin{aligned} \sqrt{\sum _{k=0}^{\infty }\mathbf{e }_k^\mathrm{T}\mathbf{e }_k}<\sqrt{2}\lambda \sqrt{\sum _{k=0}^{\infty }\varvec{\omega }_{k}^\mathrm{T}\varvec{\omega }_{k}}, \end{aligned}$$
(31)

which is equivalent to (18). The proof is completed.

Summarily, the procedure to design an UIO for linear discrete-time system is detailed in Algorithm 1.

figure a

3 Nonlinear Case

In this section, an UIO actuator and sensor fault estimation approach is proposed for a Lipschitz nonlinear system subjected to process disturbances and sensor noise, described by:

$$\begin{aligned} \left\{ \begin{array}{l} \mathbf{x }_{k+1}=\mathbf{A }\mathbf{x }_k+\mathbf{B }\mathbf{u }_k+{\varvec{\Phi }}(k,x,u)+\mathbf{B }_1\mathbf{d }_k+\mathbf{B }_2\mathbf{f }_{\mathrm{a}k},\\ \mathbf{y }_k=\mathbf{C }\mathbf{x }_k+\mathbf{D }_1\mathbf{n }_k+\mathbf{D }_2\mathbf{f }_{\mathrm{s}k}, \end{array}\right. \end{aligned}$$
(32)

where \({\varvec{\Phi }}(k,x,u)\in {\mathcal {R}}^n\) is a real nonlinear vector function with Lipschitz constant \(\beta \) which satisfies

$$\begin{aligned}&||{\varvec{\Phi }}(k,x_1,u)-{\varvec{\Phi }}(k,x_2,u)||\le \beta ||x_1-x_2||, \nonumber \\&\forall (k,x_1,u), (k,x_2,u)\in {\mathcal {R}}\times {\mathcal {R}}^n\times {\mathcal {R}}^m. \end{aligned}$$
(33)

Defining an augmented state vector in (4) form, one can obtain an equivalent augmented system as follows:

$$\begin{aligned} \left\{ \begin{array}{l} \bar{\mathbf{x }}_{k+1} = \bar{\mathbf{A }}\bar{\mathbf{x }}_k+\bar{\mathbf{B }}\mathbf{u }_k+\bar{\mathbf{B }}_1\mathbf{d }_k+\mathbf{E }{\varvec{\Phi }}(k,x,u)+\mathbf{F }\varvec{\xi }_k,\\ \mathbf{y }_k =\bar{\mathbf{C }}\bar{\mathbf{x }}_k+\mathbf{D }_1\mathbf{n }_k, \end{array}\right. \end{aligned}$$
(34)

where \(\mathbf{E }=\left[ \begin{array}{c@{\quad }c} \mathbf{I }_{n}&\mathbf{0 }_{n\times l_f} \end{array}\right] ^\mathrm{T} \in {\mathcal {R}}^{{\bar{n}}\times n}\), and the other symbols are defined the same as those in (5).

The nonlinear UIO is in the form of

$$\begin{aligned} \left\{ \begin{array}{l} \mathbf{z }_{k+1}=\mathbf{M }\mathbf{z }_k+\mathbf{N }\mathbf{u }_k+\mathbf{W }\mathbf{y }_k+\mathbf{R }\mathbf{E }{\varvec{\Phi }}(k,{\hat{x}},u), \\ \hat{{\bar{\mathbf{x }}}}_k=\mathbf{z }_k+\mathbf{L }\mathbf{y }_k. \end{array} \right. \end{aligned}$$
(35)

The estimation error is defined by (8). In terms of (8), (34) and (35). The estimation error dynamic is represented as

$$\begin{aligned} \mathbf{e }_{k+1}= & {} (\mathbf{R }\bar{\mathbf{A }}-\mathbf{K }_1\bar{\mathbf{C }})\mathbf{e }_k+(\mathbf{R }\bar{\mathbf{A }}-\mathbf{K }_1\bar{\mathbf{C }}-\mathbf{M })\mathbf{z }_k \nonumber \\&+(\mathbf{R }\bar{\mathbf{B }}-\mathbf{N })\mathbf{u }_k+\mathbf{R }\bar{\mathbf{B }}_1\mathbf{d }_k+\mathbf{R }\mathbf{F }\varvec{\xi }_k-\mathbf{K }_1\mathbf{D }_1\mathbf{n }_k \nonumber \\&+((\mathbf{R }\bar{\mathbf{A }}-\mathbf{K }_1\bar{\mathbf{C }})\mathbf{L }-\mathbf{K }_2)\mathbf{y }_k-\mathbf{L }\mathbf{D }_1\mathbf{n }_{k+1} \nonumber \\&+\mathbf{R }\mathbf{E }{\varvec{\Phi }}(k,x,u)-\mathbf{R }\mathbf{E }{\varvec{\Phi }}(k,{\hat{x}},u). \end{aligned}$$
(36)

Using (10)–(13) into (36) yields

$$\begin{aligned} \mathbf{e }_{k+1}= & {} \mathbf{M }\mathbf{e }_k+\mathbf{R }\mathbf{F }\varvec{\xi }_k+\mathbf{R }\mathbf{E }\Delta {\varvec{\Phi }}_k-\mathbf{K }_1\mathbf{D }_1\mathbf{n }_k \nonumber \\&-\mathbf{L }\mathbf{D }_1\mathbf{n }_{k+1}, \end{aligned}$$
(37)

where \(\Delta {\varvec{\Phi }}_k={\varvec{\Phi }}(k,x,u)-{\varvec{\Phi }}(k,{\hat{x}},u)\).

One can rewrite (37) as:

$$\begin{aligned} \mathbf{e }_{k+1}={\varvec{\Lambda }}\left[ \begin{array}{c} \mathbf{e }_k\\ \varvec{\omega }_k\\ \varvec{\omega }_{k+1} \end{array}\right] +\mathbf{R }\mathbf{E }\varDelta {\varvec{\Phi }}_k, \end{aligned}$$
(38)

where \(\varvec{\omega }_k\) and \({\varvec{\Lambda }}\) are equivalent to the ones defined in Sect. 2.

Theorem 3

If there exists a positive definite symmetric matrix \(\mathbf{P }\), a matrix \(\mathbf{Q }\) and constants \(\lambda >0\) and \(\mu >0\), such that the following LMIs hold:

$$\begin{aligned}&\left[ \begin{array}{c@{\quad }c@{\quad }c@{\quad }c} (1+\mu \beta ^2)\mathbf{I }_{{\bar{n}}}-\mathbf{P } &{} * &{} * &{} *\\ \mathbf{0 }_{l_\omega \times {\bar{n}}} &{} -\lambda ^2\mathbf{I }_{l_\omega } &{} * &{} *\\ \mathbf{0 }_{l_\omega \times {\bar{n}}} &{} \mathbf{0 }_{l_\omega \times l_\omega } &{} -\lambda ^2\mathbf{I }_{l_\omega } &{} *\\ \mathbf{P }\mathbf{R }\bar{\mathbf{A }}-\mathbf{Q }\bar{\mathbf{C }} &{} \mathbf{P }\mathbf{W }_1-\mathbf{Q }\mathbf{W }2 &{} \mathbf{P }\bar{\mathbf{W }}_2 &{} -\frac{1}{2}\mathbf{P } \end{array}\right] \nonumber \\&<0, \end{aligned}$$
(39)
$$\begin{aligned}&\left[ \begin{array}{c@{\quad }c} -\mu \mathbf{I }_n &{} * \\ \mathbf{P }\mathbf{R }\mathbf{E } &{} -\frac{1}{2}\mathbf{P } \end{array}\right] <0, \end{aligned}$$
(40)

then the robust observer, defined by (35) for the system (34), is solvable and is able to guarantee the following upper bound:

$$\begin{aligned} ||\mathbf{e }_k||_{l_2}\le \alpha ||\varvec{\omega }_k||_{l_2}, \end{aligned}$$
(41)

where \(\alpha \) is an \(H_\infty \) performance index in equivalent form as in Theorem 2.

Proof

Considering the following Lyapunov candidate function:

$$\begin{aligned} V_k=\mathbf{e }_k^\mathrm{T}\mathbf{P }\mathbf{e }_k, \end{aligned}$$
(42)

one has

$$\begin{aligned} \Delta V_k= & {} V_{k+1}-V_k \nonumber \\= & {} \mathbf{e }_{k+1}^\mathrm{T}\mathbf{P }\mathbf{e }_{k+1}-\mathbf{e }_k^\mathrm{T}\mathbf{P }\mathbf{e }_k. \end{aligned}$$
(43)

Substituting (38) in (43), one has

$$\begin{aligned} \Delta V_k= & {} \left[ \begin{array}{c} \mathbf{e }_k\\ \varvec{\omega }_k\\ \varvec{\omega }_{k+1} \end{array}\right] ^\mathrm{T}\left( {\varvec{\Lambda }}^\mathrm{T}\mathbf{P }{\varvec{\Lambda }}+{\varvec{\Omega }}\right) \left[ \begin{array}{c} \mathbf{e }_k\\ \varvec{\omega }_k\\ \varvec{\omega }_{k+1} \end{array}\right] \nonumber \\&+\left[ \begin{array}{c} \mathbf{e }_k\\ \varvec{\omega }_k\\ \varvec{\omega }_{k+1} \end{array}\right] ^\mathrm{T}{\varvec{\Lambda }}^\mathrm{T}\mathbf{P }\mathbf{R }\mathbf{E }\Delta {\varvec{\Phi }}_k \nonumber \\&+\Delta {\varvec{\Phi }}_k^\mathrm{T}(\mathbf{R }\mathbf{E })^\mathrm{T}\mathbf{P }{\varvec{\Lambda }}\left[ \begin{array}{c} \mathbf{e }_k\\ \varvec{\omega }_k\\ \varvec{\omega }_{k+1} \end{array}\right] \nonumber \\&+\Delta {\varvec{\Phi }}_k^\mathrm{T}(\mathbf{R }\mathbf{E })^\mathrm{T}\mathbf{P }\mathbf{R }\mathbf{E }\Delta {\varvec{\Phi }}_k \nonumber \\&+ (\mu \Delta {\varvec{\Phi }}_k^\mathrm{T}{\varvec{\Phi }}_k- \mu \Delta {\varvec{\Phi }}_k^\mathrm{T}{\varvec{\Phi }}_k). \end{aligned}$$
(44)

Applying Lemma 2 and using (33) in (44), one has

$$\begin{aligned}&\Delta V_k \nonumber \\&\quad \le \left[ \begin{array}{c} \mathbf{e }_k\\ \varvec{\omega }_k\\ \varvec{\omega }_{k+1} \end{array}\right] ^\mathrm{T}\Bigg (2{\varvec{\Lambda }}^\mathrm{T}\mathbf{P }{\varvec{\Lambda }}+\left[ \begin{array}{c@{\quad }c} -\mathbf{P }+\mu \beta ^2\mathbf{I }_{{\bar{n}}} &{} \mathbf{0 }_{{\bar{n}}\times 2l_\omega }\\ \mathbf{0 }_{2l_\omega \times {\bar{n}}} &{} \mathbf{0 }_{2l_\omega \times 2l_\omega } \end{array}\right] \Bigg )\nonumber \\&\qquad \times \left[ \begin{array}{c} \mathbf{e }_k\\ \varvec{\omega }_k\\ \varvec{\omega }_{k+1} \end{array}\right] +\Delta {\varvec{\Phi }}_k^\mathrm{T}(2(\mathbf{R }\mathbf{E })^\mathrm{T}\mathbf{P }\mathbf{R }\mathbf{E }-\mu \mathbf{I }_n)\Delta {\varvec{\Phi }}_k. \end{aligned}$$
(45)

In terms of Lemma 1, one can see that (39) and (40) imply in \(2\mathbf{M }^\mathrm{T}\mathbf{P }\mathbf{M }-\mathbf{P }+\mu \beta ^2\mathbf{I }_{{\bar{n}}}<0\) and \(2(\mathbf{R }\mathbf{E })^\mathrm{T}\mathbf{P }\mathbf{R }\mathbf{E }-\mu \mathbf{I }_n<0\), respectively. When \(\varvec{\omega }_k=0\), from (45) one has \(\Delta V_k<0\), which implies that the error dynamic is asymptotically stable.

Let

$$\begin{aligned} J= & {} \sum _{k=0}^{\infty }(\mathbf{e }_k^\mathrm{T}\mathbf{e }_k-\lambda ^2\varvec{\omega }_{k}^\mathrm{T}\varvec{\omega }_{k}-\lambda ^2\varvec{\omega }_{k+1}^\mathrm{T}\varvec{\omega }_{k+1}+\Delta V_k). \end{aligned}$$
(46)

Substituting (45) in (46), one has

$$\begin{aligned} J\le&\sum _{k=0}^{\infty }\left[ \begin{array}{c} \mathbf{e }_k\\ \varvec{\omega }_k\\ \varvec{\omega }_{k+1}\\ \Delta {\varvec{\Phi }}_k \end{array}\right] ^\mathrm{T}\left[ \begin{array}{c@{\quad }c} {\varvec{\Psi }}_1 &{} \mathbf{0 }_{({\bar{n}}+2l_\omega )\times n}\\ \mathbf{0 }_{n\times ({\bar{n}}+2l_\omega )} &{} {\varvec{\Psi }}_2 \end{array}\right] \left[ \begin{array}{c} \mathbf{e }_k\\ \varvec{\omega }_k\\ \varvec{\omega }_{k+1}\\ \Delta {\varvec{\Phi }}_k \end{array}\right] , \end{aligned}$$
(47)

where

$$\begin{aligned} {\varvec{\Psi }}_1= & {} ({\varvec{\Lambda }}^\mathrm{T}\mathbf{P })(2\mathbf{P }^{-1})(\mathbf{P }{\varvec{\Lambda }}) \nonumber \\&+\left[ \begin{array}{c@{\quad }c} (1+\mu \beta ^2)\mathbf{I }_{{\bar{n}}}-\mathbf{P } &{} \mathbf{0 }_{{\bar{n}}\times 2l_\omega }\\ \mathbf{0 }_{2l_\omega \times {\bar{n}}} &{} -\lambda ^2\mathbf{I }_{2l_\omega }\\ \end{array}\right] , \end{aligned}$$
(48)

and

$$\begin{aligned} {\varvec{\Psi }}_2=(\mathbf{R }\mathbf{E })^\mathrm{T}\mathbf{P }(2\mathbf{P }^{-1})\mathbf{P }\mathbf{R }\mathbf{E }-\mu \mathbf{I }_n. \end{aligned}$$
(49)

Note that \(\sum _{k=0}^{\infty }\Delta V_k=\mathbf{e }_{\infty }^\mathrm{T}\mathbf{P }\mathbf{e }_{\infty }>0\). In terms of Lemma 1, one can see that (39) and (40) imply in

$$\begin{aligned} \left[ \begin{array}{c@{\quad }c} {\varvec{\Psi }}_1 &{} \mathbf{0 }_{({\bar{n}}+2l_\omega )\times n}\\ \mathbf{0 }_{n\times ({\bar{n}}+2l_\omega )} &{} {\varvec{\Psi }}_2 \end{array}\right] <0. \end{aligned}$$
(50)

Similar to the proof of Theorem 2, it is noticeable that (50) leads to \(J<0\), which indicates that \(||\mathbf{e }_k||_{l_2}<\alpha ||\varvec{\omega }_k||_{l_2}\). This concludes the proof.

Summarily, the procedure to design an UIO for Lipschitz nonlinear system subjected to process disturbances and sensor noise is detailed in Algorithm 2.

figure b

4 Simulation Example

In this section, simulation results are presented to show the efficiency of the proposed method. Firstly, the robust UIO is used to estimate state and faults in a linear system. In sequence, the proposed technique is employed in a nonlinear system. Both techniques are compared to Extended Kalman Filter which is nonlinear and is a very known state observer in the literature (Hmida et al. 2012; Jiang and Chowdhury 2005).

4.1 Linear Case

Let us consider a crane system (Edwards and Tan 2006), which was discretized with a sample time \(T_\mathrm{s}=0.01\) s. The linear discrete-time model of the system is given in the same form of (1), where

$$\begin{aligned}&\mathbf{A }=\begin{bmatrix} 0&\quad 1&\quad 0&\quad 0\\ -32.42&\quad -0.148&\quad 0&\quad 11.55\\ 0&\quad 0&\quad 0&\quad 1\\ 0.86&\quad 0.3&\quad 0&\quad -3.123 \end{bmatrix}, \mathbf{B }=\begin{bmatrix} 0\\ 12.354\\ 0\\ -9.115 \end{bmatrix}, \nonumber \\&\mathbf{C }=\begin{bmatrix} 1&\quad 0&\quad 0&\quad 0\\ 0&\quad 0&\quad 1&\quad 0\\ 0&\quad 0&\quad 0&\quad 1 \end{bmatrix}. \end{aligned}$$

The fault and disturbances distribution matrices are, respectively, \(\mathbf{B }_2=\mathbf{B }\),

\(\mathbf{D }_2=\begin{bmatrix} 0\\ 0\\ 1 \end{bmatrix}\), \(\mathbf{B }_1=\begin{bmatrix} 0.08\\ 0.03\\ 0\\ 0.06 \end{bmatrix}\), \(\mathbf{D }_1=\left[ \begin{array}{c} 0.01\\ -0.01\\ 0.01 \end{array}\right] \).

The disturbance input is \(d_k=0.1\hbox {sin}(0.1k)\), the sensor noise is \(n_k=0.005\hbox {sin}(0.06k)\), and the control input is \(u_k=0.2\hbox {sin}(0.02k)\) and the initial state vector is \(x(0)=\left[ \begin{array}{c@{\quad }c@{\quad }c@{\quad }c} 0.05&0.5&0&0 \end{array}\right] ^\mathrm{T}\). The actuator fault is

$$\begin{aligned} f_{\mathrm{a}k}&= \left\{ \begin{array}{l@{\quad }l} 0, &{} \text { for }k \le 600, \\ 0.1\hbox {sin}(0.002k), &{} \text { for } k > 600, \end{array}\right. \end{aligned}$$
(51)

and the sensor fault is

$$\begin{aligned} f_{\mathrm{s}k}&= \left\{ \begin{array}{l@{\quad }l} 0,&{} \text { for } k \le 1000, \\ 0.01k-10,&{} \text { for } 1000 < k \le 1100, \\ 1,&{} \text { for } k > 1100, \end{array}\right. \end{aligned}$$
(52)

Choosing \(\lambda = 2.5\) and using the Algorithm 1, one can obtain the observer gains as follows:

$$\begin{aligned} \mathbf{L }= & {} \begin{bmatrix} 0.64&\quad 0&\quad 0.48\\ 0.24&\quad 0&\quad 0.18\\ 0&\quad 0&\quad 0\\ 0.48&\quad 0&\quad 0.36 \\ 0&\quad 0&\quad 0 \\ 0&\quad 0&\quad 0 \end{bmatrix}, \mathbf{N }=\begin{bmatrix} 0.04\\ 0.14\\ 0\\ -0.06\\ 0\\ 0 \end{bmatrix}, \\ \mathbf{K }= & {} \begin{bmatrix} 0.37&\quad -6.48&\quad -0.49\\ -0.05&\quad -64.6&\quad -0.25\\ 0.01&\quad 1.71&\quad 0\\ 0.22&\quad 47&\quad -0.31\\ 0.16&\quad -186.7&\quad -0.21\\ -0.72&\quad -38.34&\quad 0.96 \end{bmatrix}, \\ \mathbf{M }= & {} \begin{bmatrix} 0.2&\quad 0&\quad 6.48&\quad 0.18&\quad 0.04&\quad 0.17 \\ -0.46&\quad 1&\quad 64.6&\quad 0.23&\quad 0.14&\quad 0.11 \\ 0&\quad 0&\quad -0.71&\quad 0.01&\quad 0&\quad 0 \\ -0.64&\quad 0&\quad -47&\quad 0.97&\quad -0.06&\quad -0.01 \\ 0.12&\quad 0&\quad 186.7&\quad 0.42&\quad 1&\quad 0.42 \\ 0.38&\quad 0&\quad 38.3&\quad -1.22&\quad 0&\quad -0.22 \end{bmatrix} \end{aligned}$$
Fig. 1
figure 1

Measured states and its estimations

Fig. 2
figure 2

\(x_2\), its measurement and its estimation

Figure 1 presents the evolution of the three system states. In order to highlight UIO characteristics in this figure, the curves corresponding to the estimated, measured and real states are shown. Despite the addition of sensor fault at \(k=1000\), the UIO is able to match the real states and actuator faults, and measurement and sensor noise do not affect the states.

Figure 2 shows the state \(x_2\) evolution and the estimation results obtained by the proposed UIO and EKF, respectively. Considering that this state is unmeasurable, the results are satisfactory. As depicted in figure, EKF is not able to match real states, in the presence of input disturbance, sensor noise and faults. On the other hand, the proposed UIO converges to the real value in a satisfactory interval of time.

Another important aspect to consider is the fault estimation, shown in Figs. 3 and 4. As seen, EKF states is not able to converge to fault signal, which means that the EKF cannot decouple inserted faults. On the other hand, the proposed UIO converges to the fault signal even in the presence of process disturbances and sensor noise.

Fig. 3
figure 3

\(f_{\mathrm{a}k}\) and its estimation

Fig. 4
figure 4

\(f_{\mathrm{s}k}\) and its estimation

4.2 Nonlinear Case

Consider the nonlinear Lipschitz system described as:

$$\begin{aligned} x_{1k+1}= & {} 0.5\hbox {sin}(x_{2k}) + 1.25u_k, \\ x_{2k+1}= & {} x_{1k}, \\ x_{3k+1}= & {} 0.5x_{2k}, \\ x_{4k+1}= & {} -x_{3k}, \end{aligned}$$

with sample time of \(T_\mathrm{s}=0.01\) s.

The system can be written in the form of (32), where

$$\begin{aligned} \mathbf{A }= & {} \left[ \begin{array}{c@{\quad }c@{\quad }c@{\quad }c} 0 &{} 0 &{} 0 &{} 0 \\ 1 &{} 0 &{} 0 &{} 0 \\ 0 &{} 0.5 &{} 0 &{} 0 \\ 0 &{} 0 &{} -1 &{} 0 \end{array}\right] , \mathbf{B }=\left[ \begin{array}{c} 1.25 \\ 0 \\ 0 \\ 0 \end{array}\right] , \\ \mathbf{C }= & {} \begin{bmatrix} 1&\quad 0&\quad 0&\quad 0\\ 0&\quad 0&\quad 1&\quad 0\\ 0&\quad 0&\quad 0&\quad 1\\ \end{bmatrix}, {\varvec{\Phi }}(k,x,u)=\left[ \begin{array}{c} 0.5\hbox {sin}(x_{2k}) \\ 0 \\ 0 \\ 0 \end{array}\right] . \end{aligned}$$

The faults and disturbances distribution matrices are, respectively, \(\mathbf{B }_2=\mathbf{B }\),

$$\begin{aligned} \mathbf{D }_2=\begin{bmatrix} 0 \\ 1 \\ 0 \end{bmatrix}, \mathbf{B }_1=\left[ \begin{array}{c} 0.2 \\ 0.1 \\ -0.1 \\ -0.2 \end{array}\right] , \mathbf{D }_1=\left[ \begin{array}{c} 0.1 \\ 0.1 \\ 0.1 \end{array}\right] . \end{aligned}$$

The disturbance input is \(d_k=\hbox {sin}(0.2\pi k)\), the sensor noise \(n_k\) is an uniform random number between - 0.1 to 0.1. The control input is \(u_k=0.5\hbox {sin}(0.2\pi k)\) and the initial state vector is \(x(0)=\left[ \begin{array}{c@{\quad }c@{\quad }c@{\quad }c} 0&1&0&0 \end{array}\right] ^\mathrm{T}\). The actuator fault is

$$\begin{aligned} f_{\mathrm{a}k}&=\left\{ \begin{array}{l@{}r} 0, &{} k \le 200, \\ 0.5, &{} 200 < k \le 525, \\ 0.5+0.5\hbox {sin}(0.02k), &{} k > 525, \end{array}\right. \end{aligned}$$

and the sensor fault is

$$\begin{aligned} f_{\mathrm{s}k}&=\left\{ \begin{array}{l@{}r} 0, &{} k \le 300, \\ 0.01k-3, &{} 300< k \le 400, \\ 1, &{} 400 < k \le 440, \\ 1+0.5\hbox {sin}(0.1k), &{} k > 440. \end{array}\right. \end{aligned}$$

Choosing \(\lambda = 0.64\), \(\beta = 0.0333\) and using the Algorithm 2, one obtains the observer gains as follows:

$$\begin{aligned} \mathbf{L }= & {} \begin{bmatrix} 0.44&\quad -\,0.22&\quad -\,0.44 \\ 0.22&\quad -\,0.11&\quad -\,0.22 \\ -\,0.22&\quad 0.11&\quad 0.22 \\ -\,0.44&\quad 0.22&\quad 0.44 \\ 0&\quad 0&\quad 0 \\ 0&\quad 0&\quad 0 \\ \end{bmatrix}, \mathbf{N }=\begin{bmatrix} 0.69\\ -\,0.28\\ 0.28\\ 0.56\\ 0 \\ 0 \end{bmatrix},\\ \mathbf{K }= & {} \begin{bmatrix} 0.68&\quad 0.18&\quad 0.31 \\ 0.73&\quad 0.12&\quad -\,0.47 \\ 0.27&\quad -\,0.11&\quad 0.21 \\ 0.54&\quad -\,0.25&\quad 0.45 \\ 0.97&\quad -\,0.05&\quad 1 \\ 0&\quad 0.99&\quad -\,0.49 \end{bmatrix},\\ \mathbf{M }= & {} \begin{bmatrix} -\,0.93&\quad 0.11&\quad -\,0.50&\quad -\,0.05&\quad 0.69&\quad 0.16 \\ 0.27&\quad 0.06&\quad -\,0.34&\quad 0.47&\quad -\,0.28&\quad -\,0.01 \\ -\,0.28&\quad 0.44&\quad 0.33&\quad -\,0.20&\quad 0.28&\quad 0\\ -\,0.74&\quad -\,0.11&\quad -\,0.20&\quad -\,0.25&\quad 0.56&\quad 0.13\\ -\,1.36&\quad 0&\quad 0.24&\quad -\,0.61&\quad 1&\quad 0.24\\ -\,0.09&\quad 0&\quad -\,0.94&\quad 0.58&\quad 0&\quad 0.06 \end{bmatrix}. \end{aligned}$$
Fig. 5
figure 5

Measured states and its estimations

Figure 5 presents the evolution of three system states \(x_1\), \(x_3\) and \(x_4\). The real, measured and estimated signals are shown . Note that a sensor fault is added to \(x_3\) state, affecting clearly the measurement. Despite the fault addition, the UIO is able to match the real states, maintaining bounded the error between real and estimated state values.

Fig. 6
figure 6

\(x_{2k}\), its measurement and its estimation

Figure 6 shows the obtained results with the proposed UIO and EKF, respectively. As depicted in figure, EKF is not able to match real states due to input disturbance, sensor noise and faults presences. On the other hand, the proposed UIO converges to the real state, although the system is under the same conditions. Additionally, once the state has converged, observation estimation error remains bounded.

Fig. 7
figure 7

\(f_{ak}\) and its estimation

Figures 7 and 8 show the proposed UIO and EKF performances as actuator and sensor estimator. Note that EKF estimation is not able to converge to fault signals, which means the EKF is not able to decouple inserted disturbances. On the other hand, the proposed UIO rapidly converges to fault signals.

Fig. 8
figure 8

\(f_{sk}\) and its estimation

The proposed UIO design, based on Theorem 3, is able to maintain estimation error norm bounded. Figure  9 shows the evolution of estimation error norm. Note that the estimation error values are high in the beginning of the simulation. That happens because the initial estimated state values are different from the real ones. In this case, presented formulation grants that estimation error norm values decrease asymptotically. One can note that as the error diminishes the perturbation effect become more evident and the UIO tends to maintain the observation error bounded. Figure 10 shows the behavior of ratio between \(\Delta \Phi _{k}\) and estimation error norm. The proposed UIO satisfies Theorem 3 by maintaining the ratio lower than \(\beta \) level.

Fig. 9
figure 9

Estimation error norm

Fig. 10
figure 10

Satisfaction of Theorem 3

Remark 3

The parameter \(\lambda \) in (17) and (39) should be minimized, so that the estimation error is as minimum as possible, which yields better results. On the other hand, as the value of \(\lambda \) decreases, the optimization problem becomes more restrictive, which causes the LMI solver to perform more interactions until it converges to the solution.

5 Conclusion

In this paper, a novel robust fault estimation technique based on UIO for discrete-time time systems has been proposed. It was proved to be able to simultaneously estimate actuator and sensor faults, as well as, system states. The UIO technique plays an important role decoupling the process disturbances and attenuating the fault deviation and sensor noise influences through a LMI technique.

The designed estimators for both linear and nonlinear systems are presented and validated by numerical simulations with linear and nonlinear examples, presenting excellent results. From the point of view of digital applications, the proposed techniques are quite suitable for use in real-time implementations with microprocessors and microcontrollers.

Future works shall address to extend proposed techniques to uncertain systems whose parameters vary linearly with time, based on the techniques proposed in Mondal et al. (2010). Additionally, researches shall investigate fault estimation algorithms for discrete-time Takagi-Sugeno fuzzy systems, since they are an interesting way of modeling and discretize nonlinear systems.