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

滑动模式控制 — VSC 与鲁棒性

将受外乱的2阶系统应用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。

实时读数
0.000
切换变量 s
2.000
状态 x₁
0.00
控制输入 u
0.00
抖动指标
相平面动画与控制输入

状态从初始点到达滑动面 s=0(橙色),随后沿面滑向原点(绿色)。下方为控制输入 u(t) 的切换(抖动)。

理论与主要公式

对于2阶系统 $\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 \lt 0,\qquad s=0\ \Rightarrow\ \dot x_1 = -c\,x_1$$

当 $k$ 设置大于外乱振幅时,满足到达条件,面上动学以系数 $c$ 决定的速率指数收敛。

滑动模式控制模拟器说明

🙋
滑动模式控制听起来很复杂,"滑动"到底是什么意思呢?
🎓
简单来说,我们在状态空间中预先设计一条"滑道",叫做"滑动面"。看上面模拟器的相位平面,那条绿色虚线就是 $s=c\,x_1+x_2=0$,是我们设计的"滑道"。蓝色的轨迹从初始点 (2, 0) 开始,先直奔这条绿线,这叫"到达阶段";到达之后就沿着绿线朝原点滑下去,这就是"滑动"。我们的控制律在 $s$ 的两侧不停切换,确保轨迹总是指向滑道。
🙋
外乱明明在起作用,为什么系统还能收敛到原点?这就是"鲁棒性"吗?
🎓
完全正确。关键在于切换增益 $k$。只要 $k$ 大于外乱的最大值,李亚普诺夫函数 $V=\frac{1}{2}s^2$ 的导数 $V'=s\,\dot s$ 就总是负数,系统必然有限时间内到达滑道。一旦到达面上,面上的动学就变成 $\dot x_1=-c\,x_1$,这个动力学与外乱无关。无论外乱多大、频率多高,原点附近都能稳定收敛。这种不变性就是鲁棒性的数学本质。你试试把"外乱振幅 d"调到最大,看看轨迹还是会收敛。
🙋
我注意到底部图表的红色线(控制输入)在抖动。这是什么原因?
🎓
好眼力!那就是"抖动"现象。$\mathrm{sign}(s)$ 在 $s=0$ 处不连续,切换瞬间频率无穷大。实际系统有延迟和离散特性,所以 $s$ 会围绕零值高频振动,表现为控制输入的抖动。现在把"边界层宽度 φ"设为 0,看看"抖动指标"会跳到多少。然后逐步增加 φ,比如到 0.1,你会发现控制输入变得光滑,抖动指标下降。代价是在原点周围会留下一点小误差,但这是值得的,因为抖动会伤害机械。
🙋
滑动面的"系数 c"是怎样决定的?c 越大越好吗?
🎓
$c$ 决定了到达面之后的收敛速度。时间常数是 $1/c$,所以 $c$ 越大响应越快。但问题是,$c$ 太大会导致到达阶段所需的控制输入也变大,可能超过执行器的能力范围(饱和)。试试把 $c$ 设到 10,你会看到 $u(t)$ 的振幅暴增。在工程实践中,$c$ 通常设在机械响应频率稍低的位置,$k$ 则根据外乱的估计值加上安全系数来选择。这样既保证鲁棒性,又不会过度要求执行器。

常见问题

PID 是线性叠加误差的比例、积分、微分三项,逻辑直观、调试容易。SMC 采用非线性的 sign 函数进行切换,如果知道外乱的上界,理论上能保证鲁棒收敛。但 SMC 的切换项会产生抖动,容易磨损机械。PID 适合外乱温和的场景,SMC 适合参数变动大或外乱强的工况。实践中常将两者结合,用 SMC 的框架加上 PID 微调。
到达条件要求 $k$ 要超过外乱和模型误差的最大值。基本规则是 $k>\,|d|_\max + \eta$($\eta$ 是到达速率余量)。但 $k$ 过大会激化抖动和输入饱和。工程实践通常采用"外乱估计值的 1.5~2 倍"作为 $k$。如果外乱难以准确估计,可考虑适应性 SMC,根据实时信息动态调整 $k$。
当 $|s|<\varphi$ 时,sign 函数被连续的 tanh 替换,控制变成高增益比例控制。比例控制无法完全消除定常偏差,特别是在外乱有直流分量时。残余误差与 φ 成正比。在许可范围内,φ 越小抖动越低但误差越小;φ 越大误差越大但抖动越少。这是经典的设计权衡。为了同时消除抖动和误差,高阶 SMC(如 Super-twisting)会同时驱使 $\dot s$ 也为零。
线性面 $s=c\,x_1+x_2$ 是最常见的,但非必须。对于高阶系统,可设计非线性面如 $s=x_2+\beta|x_1|^{\alpha}\,\mathrm{sign}(x_1)$(末端时间有限收敛 SMC),使系统在有限时间内到达原点,而不是指数收敛。面的选择直接影响到达后的响应时间、超调量和输入大小。工程中会根据对时间、超调、功耗的要求综合选择。

实际应用

机器人关节轨迹跟踪:多关节机械臂存在关节间耦合和负载变化,模型误差难以避免。SMC 只需知道误差上界,就能确保跟踪误差收敛,因此在工业机器人的轨迹控制中被广泛采用。通常采用边界层避免对减速机的冲击。

电力变换器(DC-DC 、逆变器):功率开关本质上就是"切换",与 SMC 的切换律天然匹配。输出电压对负荷变化响应快、抗干扰能力强。太阳能逆变器、电动汽车马达驱动中大量采用,通常通过限制开关频率来实现边界层。

飞行器与导弹姿态控制:飞行体空气动力系数随速度和高度大幅变化,参数线性控制效果差。SMC 对参数变动的不敏感性使其成为终末段导引和再入姿态控制的理想选择。

汽车 ABS、ESP、电动转向:路面摩擦系数的不确定性很大,SMC 的鲁棒特性能保证制动力与转向力在各种路况下的稳定性。许多高端汽车的电子稳定系统都采用 SMC 或其变体。

常见误解与注意事项

最常见的误解是"增益 k 越大性能越好"。理论上 k 超过外乱即可保证到达,但过大的 k 会导致输入端抖动激烈,烧毁执行器。模拟器中试试把 $k$ 设到 20,$\varphi$ 设为 0,你会看到"抖动指标"飙升到难以想象的数值。正确做法是"外乱估计值加上 1.5~2 倍安全系数",剩余的鲁棒裕度通过边界层或高阶 SMC 来补偿。

另一个误解是"加上边界层 φ 就相当于完美 SMC"。φ 引入后,严格的滑动面不变性就被打破了,会产生有限的定常误差和低频振荡。模拟器中把 φ 设到 0.5,你会发现原点周围有轻微摆动。精密定位应用往往需要积分滑动模式(ISM)或 Super-twisting 来彻底消除。把边界层看作"抖动-误差权衡的调节旋钮",而不是"一劳永逸的解决方案"。

第三点是本工具假设模型完全已知。实际中控制律中的打消项 $a\,x_2+b\,x_1$ 包含模型误差,相当于外乱被放大。工程实施需要通过系统辨识估计名义模型,计算对真实参数的误差界,然后据此提高 $k$。另外,离散时间实现会把切换频率限制在采样率以下,这本身就是抖动的来源。模拟器中的连续结果到 1 kHz 采样率时会有明显变化,需要预留更大的设计裕度。

使用指南

  1. 设置滑动面系数 c(0.5~5.0),确定期望的固有频率。c 越大响应越快
  2. 输入切换增益 k(1~50)。须满足 $k > d/|s_\max|$,确保滑动条件 $s\cdot\dot s < 0$ 成立
  3. 调整边界层宽度 φ(0.01~1.0)。缩小 φ 可减少抖动,但增加控制输入高频分量
  4. 设置外乱振幅 d(0~5 N),检验不同外乱下的鲁棒性。观察最大 |s| 的变化
  5. 点击"执行"按钮或自动刷新,看 2 阶系统动态,查看到达时间、抖动指标、整定时间

具体计算示例

对于 m=1 kg、外乱 d=2 N 的 2 阶系统,设定 c=2.0、k=15 时,滑动面 $s=\dot x+2x$ 的梯度使得到达时间 $t_\text{reach}\approx 0.35$ 秒,系统快速收敛至原点附近。应用边界层宽度 φ=0.1 m,到达后定常抖动振幅约 ±0.15 m。若缩小 φ=0.01 m,抖动指标降至 0.02 m 以下,但控制输入的高频能量增加 2.8 倍。当 c=2.0 时整定时间(进入 ±2% 带)约 1.2 秒;若缩小 c=1.0,整定时间延伸至 2.1 秒。

实际应用注意事项