c++实现二阶系统的滑模观测器
时间: 2023-11-17 20:08:44 浏览: 126
FOC滑模观测器仿真,滑模观测器原理,C,C++
4星 · 用户满意度95%
二阶系统的状态空间表示为:
$$
\begin{cases}
\dot{x}_1 = x_2 \\
\dot{x}_2 = -a x_2 - b x_1 + c u \\
y = x_1
\end{cases}
$$
其中,$x_1$ 和 $x_2$ 分别表示系统的位置和速度,$u$ 表示系统的输入,$y$ 表示系统的输出。
滑模观测器的设计思路是:引入一个虚拟控制器 $v$,将系统的状态用一个滑模变量 $s$ 表示,满足 $s = y - \hat{y}$,其中 $\hat{y}$ 表示估计输出。然后,设计 $v$ 和 $\hat{y}$,使得 $s$ 能够收敛到零。
设虚拟控制器 $v$ 的形式为:
$$
v = -k_1 \mathrm{sign}(s) - k_2 s
$$
其中 $k_1$ 和 $k_2$ 是设计参数。
根据滑模观测器的设计原理,我们有:
$$
\dot{s} = \dot{y} - \dot{\hat{y}} = x_2 - \dot{\hat{y}}
$$
根据系统的状态方程和输出方程,可以得到:
$$
\begin{cases}
\dot{x}_1 = x_2 \\
\dot{x}_2 = -a x_2 - b x_1 + c u \\
\dot{\hat{y}} = x_2
\end{cases}
$$
将上述方程代入 $\dot{s}$,得到:
$$
\dot{s} = -a x_2 - b x_1 + c u + k_2 s
$$
将 $v$ 代入系统的控制输入 $u$ 中,得到:
$$
u = -\frac{1}{c} (a x_2 + b x_1) - k_1 \mathrm{sign}(s) - k_2 s
$$
最终,滑模观测器的设计方案为:
$$
\begin{cases}
\dot{x}_1 = x_2 \\
\dot{x}_2 = -a x_2 - b x_1 - \frac{c}{m} (a x_2 + b x_1) - \frac{c}{m} (k_1 \mathrm{sign}(s) + k_2 s) \\
\dot{\hat{y}} = x_2 \\
s = y - \hat{y}
\end{cases}
$$
其中 $m = c + \frac{c}{a}$ 是系统的等效质量。
阅读全文