滑模控制模拟器 返回
控制工程模拟器

滑模控制 — 变结构控制与鲁棒性

对带扰动的二阶系统应用SMC切换律 u=-k·sign(s)。调节滑模面系数c、切换增益k、边界层宽度φ与扰动幅值d,实时可视化向原点的鲁棒收敛与抖振抑制过程。

参数设置
滑模面系数 c
切换增益 k
边界层宽度 φ
扰动幅值 d

被控对象: ẍ = -a·ẋ - b·x + u + d(t),a=1,b=2,x(0)=2,ẋ(0)=0,扰动 d(t)=d·sin(5t),dt=0.01,T=5s。

计算结果
到达时间 t_reach
调节时间 (2%带)
抖振指标
到达后最大 |s|
相平面与时域响应

上:相平面 (x₁, x₂) 轨迹(蓝)与滑模面 s=c·x₁+x₂=0(绿色虚线)/下:时域响应 x₁(t)、x₂(t) 与控制输入 u(t)

理论与主要公式

对二阶系统 $\ddot x = -a\dot x - b x + u + d(t)$,采用状态 $x_1=x,\ x_2=\dot x$ 设计滑模面。

滑模面 $s$,$c$ 是决定面斜率的正系数:

$$s = c\,x_1 + x_2$$

结合反馈线性化与切换项的控制律,$k$ 是切换增益:

$$u = -k\,\mathrm{sign}(s) - c\,x_2 + a\,x_2 + b\,x_1$$

通过边界层 $\varphi$ 抑制抖振(连续化):

$$\mathrm{sign}(s)\;\longrightarrow\;\tanh(s/\varphi)$$

滑模条件与面上动力学:

$$s\,\dot s < 0,\qquad s=0\ \Rightarrow\ \dot x_1 = -c\,x_1$$

若取 $k$ 大于扰动幅值,则到达条件成立;进入滑模面后,由系数 $c$ 决定指数收敛速度。

滑模控制模拟器是什么

🙋
滑模控制这个名字经常听到,但到底是什么在「滑」呀?
🎓
简单来说,就是在状态空间里事先铺一条「滑道」的控制方法,那条滑道叫做「滑模面」。你看模拟器上半部分的相平面,绿色虚线就是 $s=c\,x_1+x_2=0$,也就是滑道的方程。蓝色轨迹从 (2, 0) 出发,先笔直地「到达」绿线,然后沿着线「滑」向原点,看到了吗?
🙋
真的诶!可是系统里明明有扰动,怎么还是稳稳地停在原点?这就是所谓的鲁棒性?
🎓
对,就是这个意思。式子 $u=-k\,\mathrm{sign}(s)\,\cdots$ 里的切换增益 $k$ 只要比扰动大,就能在有限时间内到达滑模面。一旦上了面,动力学就变成 $\dot x_1=-c\,x_1$,扰动频率多高、幅值多大都没关系,照样指数收敛到原点。所以电机控制和电力变换器都很爱用这一招。你把「扰动幅值 d」滑块拉到 5,轨迹照样收敛到原点。
🙋
厉害!不过下方图里红色那条线(控制输入 u)锯齿状的。这就是抖振吗?
🎓
没错。$\mathrm{sign}(s)$ 在原点不连续,所以 $s$ 跨过零的瞬间控制就来回切换。把「边界层宽度 φ」设为 0 试试,抖振指标的卡片会直接爆表。然后再把 φ 调到 0.1 左右,$\mathrm{sign}$ 就被 $\tanh(s/\varphi)$ 取代,输入变得平滑。代价是原点会留一点微小残差,但在真实机械里为了防止磨损,这种妥协是必须的。
🙋
那滑模面斜率 c 怎么定?看起来越大收敛越快是吗?
🎓
好问题。$c$ 决定面上收敛的时间常数 $1/c$,所以确实越大越快。但 $c$ 太大的话,到达阶段需要的控制输入也变大,会让执行机构饱和。把模拟器里的 $c$ 设到 10,你会看到输入 u 的幅值瞬间飙升。实务上一般 $c$ 略低于机械响应带宽,$k$ 按扰动估值再加余量来定,这是经验之谈。

常见问题

PID 把误差的比例、积分、微分线性叠加,设计直观、整定也容易。而 SMC 带有 sign 函数这种非线性切换项,只要知道扰动上界,理论上就能保证鲁棒性。但切换项会引起抖振,容易损坏机械或功率器件,所以实务上常用边界层或高阶 SMC 进行连续化。可以记住:PID 适合温和扰动,SMC 适合参数变化或强扰动。
为了满足到达条件 $V'=s\,\dot s<0$,$k$ 必须超过扰动与模型误差的上界。具体取 $k>|d|_\max+\eta$($\eta>0$ 对应到达速率的余量)。但 $k$ 过大会让切换引起的输入幅值增大、抖振加剧,所以余量应保持最小。当扰动估计困难时,也可以选择根据状态自动调整增益的「自适应滑模」。
在 $|s|<\varphi$ 内部,$\mathrm{sign}(s)\approx s/\varphi$,相当于对面切换为高增益比例控制。比例控制无法完全消除稳态偏差,所以扰动的积分或直流成分会让 $s$ 偏离零一个小偏置。误差上界与 $\varphi$ 成正比,因此可以根据容许误差反推 φ 的取值。抖振与残留误差是典型的折中关系,要完全消除可用积分滑模(ISM)或 Super-twisting。
对于二阶系统,$s=c\,x_1+x_2$ 这种线性面是最基本的选择,但并非必须。高阶系统中常用 $s=(\frac{d}{dt}+c)^{n-1}x$ 这种构造,或者为了实现有限时间收敛而采用 $s=x_2+\beta|x_1|^{\alpha}\mathrm{sign}(x_1)$ 这种非线性面(终端滑模 Terminal SMC)。面的设计直接决定系统到达后的行为,需要综合考虑响应时间、超调量与输入约束。

实际应用

机器人手臂的轨迹跟踪:多关节机器人各关节间的惯性耦合和负载变化大,模型误差不可避免。SMC 只要知道误差上界,就能让跟踪误差收敛到零,因此在工业机器人的轨迹控制和力控模式下广泛使用。一般会加入边界层,避免对减速器的冲击。

电力变换器(DC-DC 变换器、逆变器):开关器件本身就体现了「切换」,所以 SMC 与电力电子是天作之合。输出电压响应快、对负载突变也鲁棒,因此在光伏逆变器和电动汽车电机驱动逆变器中广泛应用。为了限制开关频率,通常带边界层实现。

航空航天的姿态控制:飞行器的气动系数随速度和高度大幅变化,增益调度 PID 在某些工况下追不上。SMC 对参数变化不敏感,因此在导弹末制导律和再入飞行器姿态控制中被研究和应用。

汽车的 ABS、ESC、电动助力转向:路面摩擦系数的不确定性大,使汽车控制成为 SMC 的理想应用场景。ABS 中让车轮滑移率跟踪目标值的 SMC、ESC 中横摆角速度的 SMC、EPS 中助力扭矩的 SMC 都在研究和量产中,鲁棒性直接关乎安全。

常见误解与注意事项

最常见的误解是认为「增益 k 越大性能越好」。理论上只要 $k$ 大于扰动就能满足到达条件,但 $k$ 过大会让输入幅值增加,抖振加剧,最终磨损甚至损坏执行机构。把模拟器里的 $k$ 设为 20、$\varphi$ 设为 0,你会看到抖振指标飙到天文数字。实务上一般控制在「扰动上界估值 + 1.5~2 倍安全系数」,多余的鲁棒性需求交给边界层或自适应律补足。

第二个常见误区是加了边界层 φ 就以为「几乎是理想 SMC」。一旦引入 φ,严格的不变性立刻丧失,会留下有限残差和低频振荡。把 φ 调到 0.5,你会发现原点附近出现小幅振动。能否容忍这个误差取决于应用场景,精密定位时实务上会再叠加积分滑模(ISM)或 Super-twisting。请把「边界层 = 抖振解决方案」改成「边界层 = 折中的调节旋钮」。

最后请注意,本工具展示的是「模型完全已知」的理想 SMC。实际实现中,控制律里 $a\,x_2 + b\,x_1$ 这种抵消项会带有模型误差,相当于扰动变大了。真机里要么把 $k$ 按包含模型误差来设计,要么先通过 System ID 求出名义模型的误差界。此外,离散时间实现会让切换频率被采样频率限制,这本身就是抖振的来源。连续时间仿真效果好的方案,在 1 kHz 采样下行为可能截然不同。