探索非奇异快速终端滑模控制:TSMC、NTSMC、FTSMC 与 NFTSMC

张开发
2026/4/3 15:40:45 15 分钟阅读
探索非奇异快速终端滑模控制:TSMC、NTSMC、FTSMC 与 NFTSMC
非奇异快速终端滑模控制 包含:TSMC、NTSMC、FTSMC、NFTSMC等滑模控制方法对比了趋近率的加速特性渐近性质和抖动抑制效果在控制领域滑模控制一直是备受关注的技术尤其是非奇异快速终端滑模控制Non - Singular Fast Terminal Sliding Mode ControlNFTSMC它在众多复杂系统控制中展现出独特优势。今天咱们就来深入探究一下其中包含的 TSMC、NTSMC、FTSMC 以及 NFTSMC 等滑模控制方法并对比它们趋近率的加速特性、渐近性质和抖动抑制效果。TSMCTerminal Sliding Mode Control终端滑模控制TSMC 的核心在于其能够实现有限时间收敛这一特性让它在许多对响应速度要求苛刻的系统中崭露头角。咱们来看一段简单的代码示例以 Python 为例模拟一个简单系统控制import numpy as np import matplotlib.pyplot as plt # 定义系统参数 dt 0.01 t np.arange(0, 10, dt) x np.zeros(len(t)) x_dot np.zeros(len(t)) # TSMC 控制律相关参数 k 10 alpha 0.8 beta 1.2 for i in range(1, len(t)): s x[i - 1] 2 * x_dot[i - 1] if s! 0: u -k * np.sign(s) * np.abs(s) ** (alpha / beta) else: u 0 x_dot[i] x_dot[i - 1] dt * u x[i] x[i - 1] dt * x_dot[i - 1] plt.plot(t, x) plt.xlabel(Time (s)) plt.ylabel(System State x) plt.title(Terminal Sliding Mode Control Simulation) plt.grid(True) plt.show()在这段代码中我们定义了一个简单的系统通过设定 TSMC 的控制律参数k、alpha和beta来模拟系统状态x随时间的变化。s是滑模面当s不为 0 时控制律u根据s的符号和绝对值的特定幂次来计算这样能驱使系统状态快速收敛到滑模面上并在有限时间内达到平衡点。TSMC 的趋近率加速特性在于它利用滑模面函数的特殊设计使得系统状态能快速靠近滑模面。然而传统 TSMC 存在奇异问题即在某些情况下控制律会出现无穷大这在实际应用中是不可取的。NTSMCNon - Terminal Sliding Mode Control非终端滑模控制NTSMC 则是为了解决 TSMC 的奇异问题而诞生的。它采用了不同的滑模面设计避免了控制律在某些情况下的奇异性。import numpy as np import matplotlib.pyplot as plt # 定义系统参数 dt 0.01 t np.arange(0, 10, dt) x np.zeros(len(t)) x_dot np.zeros(len(t)) # NTSMC 控制律相关参数 k1 5 k2 3 for i in range(1, len(t)): s x[i - 1] k1 * x_dot[i - 1] u -k2 * np.sign(s) x_dot[i] x_dot[i - 1] dt * u x[i] x[i - 1] dt * x_dot[i - 1] plt.plot(t, x) plt.xlabel(Time (s)) plt.ylabel(System State x) plt.title(Non - Terminal Sliding Mode Control Simulation) plt.grid(True) plt.show()在这段 NTSMC 的模拟代码中我们看到滑模面s的设计相对简单由系统状态x和它的一阶导数x_dot通过线性组合构成。控制律u只与滑模面s的符号有关乘以一个增益k2。NTSMC 的渐近性质表现良好系统能稳定地趋近平衡点但在收敛速度上相较于 TSMC 的有限时间收敛它可能稍逊一筹。FTSMCFast Terminal Sliding Mode Control快速终端滑模控制FTSMC 结合了 TSMC 有限时间收敛的优点同时在一定程度上优化了收敛速度。import numpy as np import matplotlib.pyplot as plt # 定义系统参数 dt 0.01 t np.arange(0, 10, dt) x np.zeros(len(t)) x_dot np.zeros(len(t)) # FTSMC 控制律相关参数 kf 15 alpha_f 0.6 beta_f 1.4 for i in range(1, len(t)): sf x[i - 1] 2 * x_dot[i - 1] 0.5 * np.sign(x[i - 1]) * np.abs(x[i - 1]) ** (alpha_f / beta_f) if sf! 0: uf -kf * np.sign(sf) * np.abs(sf) ** (alpha_f / beta_f) else: uf 0 x_dot[i] x_dot[i - 1] dt * uf x[i] x[i - 1] dt * x_dot[i - 1] plt.plot(t, x) plt.xlabel(Time (s)) plt.ylabel(System State x) plt.title(Fast Terminal Sliding Mode Control Simulation) plt.grid(True) plt.show()从代码中能看到FTSMC 的滑模面sf在 TSMC 的基础上增加了一项与系统状态绝对值的特定幂次相关的项。这使得系统在趋近滑模面和平衡点时速度更快。它的加速特性优于传统 TSMC能在更短的时间内让系统状态达到稳定。但同样它也可能面临与 TSMC 类似的抖动问题因为控制律的不连续项会引发系统的高频切换。NFTSMCNon - Singular Fast Terminal Sliding Mode Control非奇异快速终端滑模控制NFTSMC 可谓是集大成者它既解决了 TSMC 的奇异问题又保留了快速收敛的优势。import numpy as np import matplotlib.pyplot as plt # 定义系统参数 dt 0.01 t np.arange(0, 10, dt) x np.zeros(len(t)) x_dot np.zeros(len(t)) # NFTSMC 控制律相关参数 kn 12 alpha_n 0.7 beta_n 1.3 for i in range(1, len(t)): sn x[i - 1] 2 * x_dot[i - 1] 0.5 * np.sign(x[i - 1]) * np.abs(x[i - 1]) ** (alpha_n / beta_n) un -kn * np.sign(sn) * np.abs(sn) ** (alpha_n / beta_n) / (1 np.abs(sn)) x_dot[i] x_dot[i - 1] dt * un x[i] x[i - 1] dt * x_dot[i - 1] plt.plot(t, x) plt.xlabel(Time (s)) plt.ylabel(System State x) plt.title(Non - Singular Fast Terminal Sliding Mode Control Simulation) plt.grid(True) plt.show()在 NFTSMC 的代码实现中我们注意到控制律un在 FTSMC 的基础上分母增加了1 np.abs(sn)这一项。这小小的改变有效地避免了奇异问题。在抖动抑制方面相较于 TSMC 和 FTSMCNFTSMC 有更好的表现因为分母的这一项缓和了控制律的切换强度减少了高频抖动。它的渐近性质保证了系统能稳定收敛到平衡点同时加速特性又使得收敛过程迅速综合性能较为出色。对比总结从趋近率加速特性来看FTSMC 和 NFTSMC 表现较为突出能在较短时间内让系统状态靠近平衡点。TSMC 虽然也能有限时间收敛但由于奇异问题限制了其应用。NTSMC 渐近稳定但收敛速度相对较慢。非奇异快速终端滑模控制 包含:TSMC、NTSMC、FTSMC、NFTSMC等滑模控制方法对比了趋近率的加速特性渐近性质和抖动抑制效果渐近性质上所有方法都能使系统趋近平衡点但 NTSMC 的稳定性证明相对简单直接而其他几种基于终端滑模的方法需要更细致地分析滑模面和控制律的特性。抖动抑制效果方面NFTSMC 通过巧妙的控制律设计有效地减少了抖动相比之下TSMC 和 FTSMC 的抖动较为明显这在对系统平稳性要求高的应用中可能会成为问题。非奇异快速终端滑模控制家族中的这些方法各有千秋在实际应用中需要根据具体系统的需求如响应速度、稳定性要求以及对抖动的容忍程度等来选择最合适的滑模控制方法。希望通过今天的分享大家对 TSMC、NTSMC、FTSMC 和 NFTSMC 有了更清晰的认识能在控制领域的实践中运用得更加得心应手。

更多文章