非奇异终端滑模与扰动观测器协同:实现零超调极速伺服控制

非奇异终端滑模与扰动观测器协同:实现零超调极速伺服控制 开头先给一个实际场景一套伺服系统做定位控制客户要求快速到位但又不允许冲过目标点。传统做法是把速度环调得偏软或者给位置指令加低通滤波负载一变化超调又回来了。后来我把扰动观测器和非奇异终端滑模放到一起用才发现“零超调极速收敛”并不是某个控制器单独给出的数学保证而是轨迹规划、前馈、观测器、滑模面、执行器限幅共同压着误差走完一条不穿越零点的路径。这篇文章想把这条路径拆开讲清楚。先说结论非奇异终端滑模解决的是“有限时间收敛”和“奇异性规避”扰动观测器解决的是“不靠增大切换增益硬扛扰动”而零超调是这两者和前馈、轨迹规划、抗饱和设计叠加出来的工程结果。只拿一个公式上板子大概率会失败。1. 为什么“零超调”和“极速收敛”不能只靠调参解决1.1 线性控制的矛盾带宽和阻尼是同一对参数的两端在经典的 PID 位置控制里越是追求快速到位越要拉高位置环和速度环的带宽。但带宽拉高之后系统对高频噪声、传动间隙、机械共振也会更敏感更直接的是相位裕度变差阶跃响应很容易出现超调。反过来为了把超调压下去只能增加阻尼增加阻尼通常意味着降低响应速度。这就是最基础的矛盾在固定线性结构的反馈控制里“零超调”和“极速收敛”往往站在同一组参数的两端。很多工程师的第一反应是加前馈。速度前馈、加速度前馈确实能把跟踪误差压小但对阶跃定位这种“指令本身不连续”的场景前馈很难解决初始时刻的状态跳变。位置指令一路阶跃速度前馈相当于瞬间给一个大电流指令执行器饱和后照样会产生过冲。1.2 滑模控制的切入点让系统结构切换而不是增益堆叠滑模控制的思路和线性增益堆叠不一样。它不是靠调一个比例系数或者积分时间而是设计一条滑模面让系统状态被强制“推”到这条面上然后沿滑模面滑动到原点。在这个滑动过程里系统的动态特性由滑模面决定和原被控对象参数的关系被弱化。所以对匹配扰动和参数摄动滑模控制在理论上具有不变性。但传统滑模通常用的是一阶线性滑模面比如 $s \dot{e} c e$状态一旦落到滑模面上误差是指数收敛理论上要无限时间才到零实际工程里只能说“进入可接受误差带”。终端滑模的贡献是把滑模面里的误差项换成分数幂形式让系统在滑模面上实现有限时间收敛。这个改变对“极速收敛”是本质性的。不过有限时间收敛不是免费午餐。终端滑模在误差趋近于零的过程中控制量里可能出现误差的负幂次项数学上产生奇异点工程上表现为控制量突然冲到不合理数值。这就是后来非奇异终端滑模要解决的问题。从控制设计角度看这个组合的真正价值不是替代 PID而是把“快速性”交给滑模面设计把“鲁棒性”拆成两部分匹配的部分由滑模保证非匹配的部分由扰动观测器补偿。明白了这一层才能继续往下谈参数。2. 从终端滑模到非奇异终端滑模解决的不只是分母等于零2.1 终端滑模为什么能有限时间收敛终端滑模最典型的设计思路是在滑模面里引入分数幂。比如把误差状态 $\left(e, \dot{e}\right)$ 放到如下形式$$s \dot{e} \beta e^{q/p}$$其中 $\beta 0$$q p$且 $p$、$q$ 通常取正奇数以保证实数域上的符号特性。当系统进入滑模面后$s 0$得到$$\dot{e} -\beta e^{q/p}$$这个微分方程的解会在有限时间内到达零而不是渐近逼近。也就是说误差的收敛时间可以写成一个和初始误差有关的有限表达式。这个性质是终端滑模“极速收敛”的根本来源。从物理上看分数幂让误差越小的时候误差变化率也越小但这并不意味着收敛变慢。实际上由于 $q/p$ 通常小于 1在误差较大的阶段收敛速度比线性滑模更陡在误差接近零的阶段又不会像指数滑模那样永远差“最后一小段”。有限时间收敛意味着可以给出一个可计算的收敛上界这对机械臂、精密运动平台的节拍控制很有吸引力。2.2 奇异问题的由来与非奇异构造终端滑模控制律里一般包含等效控制项推导过程中会对滑模面求导计算 $\dot{s}$ 时会出现包含 $e^{q/p - 1}$ 的项。当误差 $e 0$ 而 $\dot{e} \neq 0$ 时$q/p - 1 0$这一项就是误差的负幂次控制量会趋于无穷大。这就是奇异问题。非奇异终端滑模的常见做法是把滑模面设计为$$s e \frac{1}{\beta} \dot{e}^{p/q}$$这里把分数幂作用在误差导数上并且 $1 p/q 2$ 时控制量推导过程中不会再出现负幂项。这样的滑模面同样具有有限时间收敛特性同时避免了控制律的奇异点。很多论文会进一步采用分段形式让滑模面在误差不同范围内切换工程上更稳健。理解这个差异很重要非奇异终端滑模并不是在终端滑模后面加一个“防奇异补丁”而是重新构造了滑模面让有限时间收敛与控制量有限性同时成立。对电机这类真正要实现电流指令输出的被控对象来说控制量有限是硬约束。一个会在某时刻发出无穷大电流指令的算法写得再漂亮也没法上板。但这里也要说明边界非奇异终端滑模消除了数学上的奇异不代表工程上不会出现控制量饱和。滑模面里的 $\dot{e}^{p/q}$ 项如果初始误差大等效控制项照样可能超出电流限幅。所以后面要说的轨迹规划、抗饱和设计都是这个方案的“另一半”。3. 扰动观测器在这里的真正价值把不确定性变成可补偿量3.1 电机系统里哪些扰动不能靠滑模硬扛电机控制中常见的扰动包括负载转矩突变、转动惯量变化、摩擦力矩、电流环延时以及未建模的机械谐振。严格讲滑模控制只对匹配扰动具有不变性也就是扰动通道和控制输入通道相同的扰动。负载转矩变化经过机械方程进入速度环在某些结构下可以认为接近匹配扰动但实际系统的惯量辨识误差、反馈延时、电流环带宽限制会让系统出现明显的非匹配特性。为了对抗这些不确定性最原始的办法是增大滑模切换增益让切换项幅值大于扰动上界。这是理论分析里经常出现的要求。实际执行会带来两个后果一是抖振增大电流谐波增加机械噪音变大二是为了覆盖“最坏情况扰动上界”切换增益往往比标称工作点高很多系统在正常小扰动下反而过于激进。扰动观测器的作用是把这些不确定性和外部扰动估计出来然后在控制律里做前馈补偿。这样设计滑模切换项时不需要再针对整个扰动上界去取值只需要补偿观测误差和残差切换增益可以明显降低。扰动观测器越准滑模越轻松。3.2 观测器带宽怎么选太快噪声太慢滞后扰动观测器本质上是在用一个动态系统去估计真实扰动。以非线性扰动观测器为常见结构它的核心是把扰动估计值送到控制律前馈通道。观测器的收敛速度由带宽决定带宽越高越能快速跟踪负载突变但也会把测量噪声放大带宽太低估计值落后于真实扰动前馈补偿是滞后的反而可能激起超调。从工程经验看先确定期望的速度环闭环带宽再把观测器带宽取成它的 3 到 5 倍是一个比较稳妥的起点。再结合编码器分辨率、速度信号噪声和电流采样频率调整。速度反馈如果是从位置差分得来的噪声会非常大观测器带宽就必须压低有高分辨率编码器或高带宽速度观测器带宽可以适当放宽。这里有一个容易混淆的点扰动观测器能估计“总扰动”包括负载、摩擦、惯量摄动和一部分非线性项。但它不是一个万能补偿器。当系统存在明显延时、滞后和离散化效应时观测器估计出来的“扰动”里会混入相位误差。这时候如果强行提高观测器增益会在扰动突变时刻制造一个很大的补偿尖峰电流冲击反而更严重。所以扰动观测器在这一方案里的定位不是“让系统无扰动”而是把扰动幅度降到滑模切换项能够轻松处理的范围内。滑模负责边界观测器负责日常大头。4. 零超调极速收敛是四层协同的结果4.1 轨迹规划层别让阶跃指令一开始就逼出超调很多人一看到“零超调”就把注意力全部放在控制器上忽略指令本身。对一个阶跃位置指令来说初始速度误差为零但位置误差突然从 0 跳到目标值控制器在一个控制周期内就会给出很大的控制量。这种初始冲击非常容易让系统越过目标之后再由反馈拉回来波形上就是一个超调。即使非奇异终端滑模设计得很好也很难完全抵消阶跃指令带来的初始激励因为控制器输出受电流限幅限制。更合理的做法是在轨迹规划层生成一条平滑的位置曲线让目标位置、速度、加速度都连续变化。S 曲线规划、梯形曲线配合低通滤波、或者更高阶的 jerk 限制都是成熟做法。这不是说控制算法不重要而是说“零超调”是整体行为的属性不是某一个公式的属性。轨迹规划把指令从“阶跃”变成“连续”滑模面负责误差沿规划路径快速收敛扰动观测器负责补偿负载变化。三者缺一不可。4.2 前馈与反馈层滑模负责有限时间收敛观测器负责把扰动“垫平”在位置环和速度环之间通常会加入速度前馈和加速度前馈。能测到模型参数的地方前馈是最不容易激发超调的手段因为它不依赖误差反馈不会因为增益提高而产生相位滞后。前馈的精度取决于模型是否准确。电机转矩常数、转动惯量、负载惯性如果辨识不准前馈补偿就会存在残差。这个残差由谁处理在非奇异终端滑模控制律里通常包含等效控制项、切换控制项和扰动补偿项。等效控制项根据标称模型推导切换控制项负责把状态拉到滑模面上并维持滑动扰动补偿项直接使用观测器估计值。当扰动观测器把残差估计出来后前馈通道不再依赖大增益而是一个明确的补偿量。滑模切换项只处理估计误差和残余扰动也就能使用更小的增益抖振自然降下来。从误差轨迹看超调意味着误差的符号发生了变化误差从正变负或者速度在目标点附近再次反向。要避免超调本质上要让误差状态在相平面里走一条不穿越误差零轴的路径。滑模面设计得越精准误差进入滑动模态后沿滑模面的方向越接近“从一侧直接滑到原点”。扰动观测器如果滞后等效于让滑模面在扰动作用下被“推偏”误差就可能越过零轴。所以“零超调”很大程度取决于扰动补偿的相位是否足够准。4.3 执行器约束层饱和、限幅、离散化都在改写最终波形多数控制算法是在理想连续系统下推导的但电机控制最终要看电流限幅、电压限幅、PWM 占空比、逆变器非线性、死区时间。当控制器算出的电流指令超过限幅值反馈控制器进入饱和区间原本的滑模动态被“截断”。在饱和状态下滑模面不一定成立误差可能沿另一个路径运动恢复饱和之后超调更容易出现。解决思路有两个方向。一个是抗饱和设计比如对观测器前馈项也做限幅避免补偿量加得过大另一个是把限幅后的实际指令反馈回控制器而不是让控制器以为自己的指令一直生效。很多仿真和实验的差异就出现在这里仿真里没有限幅或者限幅没有参与状态更新实际跑起来自然对不上。离散化也是重灾区。滑模控制对切换频率有天然依赖在连续系统里符号函数可以瞬时切换在数字控制器里每个采样周期只能切换一次。如果控制周期不够快切换项带来的效果会被离散化稀释甚至出现极限环。所以这类方案通常要求采样频率远高于期望收敛频率一般建议至少 5 到 10 倍。四层协同总结成一句话轨迹规划决定“误差从哪出发”观测器和前馈决定“误差路径有没有被扰动推偏”滑模面决定“误差在相平面里以什么速度回到原点”执行器约束决定“这个路径是否还能成立”。只看最后一层方案很难稳定。5. 从公式到仿真一套可以复用的设计流程5.1 被控对象建模与控制结构做这类方案第一步是把被控对象简化到可设计但不失真。对常见永磁同步电机速度环或位置环而言可以写出机械运动方程$$J \dot{\omega} K_t i_q - T_L - B \omega$$其中 $J$ 是转动惯量$K_t$ 是转矩常数$i_q$ 是 q 轴电流$T_L$ 是负载转矩$B$ 是粘性阻尼系数。如果电流环带宽远高于速度环和位置环可以把电流环近似成一阶惯性环节甚至直接当作比例环节。这样设计速度环和位置环滑模面时被控对象就是二阶积分串联型结构。控制结构一般推荐位置环和速度环合并设计电流环保持原有 PI 加前馈。外部位置环生成速度指令内部速度环生成 q 轴电流指令。这里不需要把所有公式铺开但一定要在仿真里保留电流环的延时、电流限幅和 PWM 离散特征否则后面没法复现实验现象。5.2 参数整定的起点和顺序从我个人的实践看参数不要按论文顺序全部一次性给定。先做几件事先把轨迹规划层关闭用阶跃指令看一下控制器的“原始行为”记录初始超调量和电流峰值。再开启轨迹规划确认超调是否在第一层压住。固定滑模面里的分数幂参数先用一组保守参数让系统稳定再逐步缩短收敛时间。加入扰动观测器但要在标称模型无扰动情况下确认观测器不引入额外振荡。最后加入负载突变和参数摄动观察速度跌落和恢复时间。滑模面参数里$p/q$ 的比值决定有限时间收敛特性。太接近 1 时有限时间优势不明显太接近 2 时对噪声和高频信号放大严重容易在反馈中引入抖振。$\beta$ 类似线性控制里的带宽参数我不建议一开始就追求理论收敛时间先取一个能让系统稳定滑动的值再逐步上调。5.3 仿真阶段先验证哪几张波形重点不是看“最终位置曲线很漂亮”而是看四个关键信号位置/速度误差曲线确认误差没有变号也就是没有超调。滑模面函数曲线确认系统进入滑模面后能一直保持 $s \approx 0$而不是反复穿越。q 轴电流指令与实际输出确认没有频繁打到限幅且指令噪声在可接受范围。扰动观测器估计值与真实扰动曲线确认估计值跟得上突变负载并且不会在达到时刻先出现反向尖峰。仿真里必须加入噪声源。没有噪声的控制系统仿真几乎都会“看起来很完美”因为符号函数在连续域里切换无限快离散仿真步长也会掩盖一部分问题。加上速度测量噪声、电流采样噪声和负载扰动后才能看出滑模切换项和观测器带宽是否匹配。更具体一点先用固定步长、100 微秒左右的控制周期跑避免变步长求解器掩盖离散化问题。再尝试把控制周期拉长到 250 微秒观察系统是否还稳定。很多方案在仿真步长很小时表现优秀换到真实 DSP 控制周期后性能急剧下降这就是离散化验证不足。6. 实验阶段最典型的五个坑6.1 仿真通过但实验发散最常见的原因不是控制算法错误而是反馈量不对。速度信号如果用位置差分得到差分噪声会被滑模里的微分项放大尤其是滑模面中包含 $\dot{e}$ 时噪声会直接进入控制量。解决办法是使用速度观测器或者在速度通道加合适带宽的滤波而不是把控制器里的微分项直接暴露给差分噪声。另一个原因是符号函数的实现方式。连续控制系统里的符号函数在实验中会引起高频抖振通常是改成饱和函数或连续化函数在零附近形成一个线性边界层。边界层太窄抖振还在边界层太宽有限时间收敛特性会退化。这个参数只能在实验里调仿真只能给一个初始值。6.2 “零超调”变成低速限幅下的慢爬如果轨迹规划用了非常缓的 S 曲线误差确实不会越过零点但收敛时间被拉得很长“极速”就丢了。如果误差越来越小控制器控制量也在变小最后可能只剩下静摩擦和观测器残差在拉扯。这个时候系统会进入“慢爬”状态而不是有限时间收敛到设定精度内。实际处理时我会把“零超调”的定义写清楚是位置误差不超过 1 个编码器脉冲还是不超过目标值的某个百分比。物理上不可能保证绝对严格为零尤其是在量化噪声存在的情况下。接受一个很小的误差带把“进入误差带的时间”作为收敛时间的定义设计才有可验收的标准。6.3 抖振被电流噪声掩盖抖振不一定是肉眼在速度曲线上看到的高频波动也可能被电流噪声掩盖表现为电机发热升高、机械噪音变大、位置波形在目标点附近出现极限环。此时如果只盯着超调量根本看不出问题。要先看电流频谱如果在切换频率附近出现明显谐波峰值说明切换增益或边界层设置需要调整。一种有效的调试手法是把扰动观测器输出暂时断开先把滑模切换项单独调到稳定再接上观测器。这样可以区分“抖振来自滑模”还是“来自观测器补偿的噪声放大”。6.4 增益符号没算对滑模控制里切换项必须指向滑模面的另一边方向不能错。如果模型里转矩常数、惯量或符号约定不一致切换项方向反了系统会第一时间发散。这类问题在仿真里容易被发现但在实验合闸启动时可能直接飞车或过流。所以上实验台前一定要把控制量到机械运动的符号链路完整推导一遍最好用步骤响应或手推动电机的方式验证反馈极性。6.5 只用位置差分代替速度反馈很多低成本平台只有编码器位置反馈没有速度传感器。直接在滑模面里使用位置误差的差分会同时引入量化噪声和一拍延时导致系统很难稳定。一种做法是设计扩展状态观测器把位置、速度、扰动一起估计出来另一种做法是降低滑模面对速度的依赖把速度项换成电流和位置组合。前者保留更多动态信息更接近“扰动观测器 滑模”的理想场景但实现复杂度更高。五类坑的背后其实是同一个问题算法假设的“状态可测、控制量理想、执行器无约束”在真实系统里并不成立。每补一个工程环节算法性能都会打折需要重新调参。7. 排查顺序先分层再定位7.1 第一个检查的不是控制器而是反馈量如果实验波形出现异常不要第一个改滑模增益先确认位置和速度反馈本身是干净的。具体做法是把控制器输出强制为一个固定常数让电机以近似恒定速度转动然后观察速度反馈是否平稳。如果速度反馈本身就有很大的周期波动后续所有控制设计都没法判断。接着检查电流环闭环状态。在电机堵转或低速情况下给一个小的 q 轴电流指令看实际电流是否能在几个控制周期内跟上。电流环滞后太大会让滑模面里的等效控制项计算失真位置环再高级也会被电流环瓶颈限制。7.2 然后看观测器是否把扰动“垫”平了在速度环和位置环不工作的情况下直接给一个负载阶跃观察扰动观测器输出是否快速跟踪真实负载变化。如果观测器响应太慢后面前馈补偿就是滞后的如果观测器输出噪声很大就需要降低带宽或在观测器入口加滤波。这里很容易犯的一个错误是过早地把观测器输出直接叠加到电流指令中。正确姿势是先在开环模式下验证观测器确认它只在负载变化时明显变化在稳态时接近总扰动的平均值。等滑模控制器已经稳定再把观测器输出接入观察接入前后速度跌落量和抖动是否改善。7.3 最后才调滑模增益和其他参数反馈和观测器都确认之后才进入滑模参数的调试。按以下顺序操作先把分数幂参数设置为较保守值比如 $p/q$ 接近 1。把切换增益从零开始缓慢增加直到系统在阶跃扰动下能够回到滑模面。再调整 $\beta$逐渐提高收敛速度同时观察电流噪声和机械噪音。最后开启轨迹规划确认超调是否在规划层已经被压住控制器只负责误差收敛。这个排查顺序的本质是逐层隔离先确认反馈质量再确认补偿质量最后才是控制器的“激进程度”。多数失败案例都是反馈噪声太大却一直调滑模增益结果越调越抖最后误判算法不可行。8. 这个方案适合什么场合不适合什么场合8.1 适合的场景和前置条件这套组合最适合的场景是负载扰动频繁、对定位时间有硬性要求、同时又不允许过冲的伺服系统。典型例子包括芯片贴装设备、精密定位平台、机器人关节以及一些需要快速换向的机械臂。这些场合的电流环带宽足够高位置反馈分辨率足够好控制器有足够的采样频率去支撑滑模切换。前置条件也要提前评估电流环采样频率最好不低于 10 kHz位置反馈能提供低噪声的速度或通过观测器获得控制系统具备清晰的限幅和故障保护逻辑。如果这些条件满足扰动观测器加非奇异终端滑模能够把“快”和“稳”之间的矛盾处理得比 PID 更从容。8.2 不适合的场景如果执行器本身带宽很低比如大惯量转台、液压执行器、或者电流环响应明显滞后那滑模的高频切换优势会被执行器带宽滤掉系统最后仍然表现为低带宽跟随此时硬套非奇异终端滑模只会增加调参难度。如果位置反馈分辨率很低速度信号是通过差分得到的滑模面里的误差导数项会被量化噪声放大工作点附近会出现极限环。这种情况下更优先的是换编码器或增加速度观测器而不是继续调控制算法。如果系统存在显著机械谐振且没有做陷波滤波滑模切换会持续激励谐振频率机械噪音和磨损都会变大。这类场景要先解决谐振抑制否则任何高增益控制都很难稳定。8.3 和 ADRC、模型预测控制放在一起怎么看ADRC 的思路也是用扩展状态观测器估计总扰动再通过控制律消掉。它和非奇异终端滑模的区别在于反馈控制律的部分前者更像“线性误差反馈 扰动补偿”后者用滑模面保证了有限时间收敛和特定的误差动态。两者不是对立的很多工程系统会把 ADRC 的观测器结构和滑模控制律结合起来。模型预测控制则会直接考虑系统约束通过滚动优化得到控制量天然具备处理限幅和预测能力。但它的计算量更大且对模型精度和计算资源要求更高。扰动观测器加滑模方案更像是在“可解释的误差动态”和“相对简单可实现”之间取平衡。从工程落地角度看没有哪个方案是万能的。核心还是要先想清楚被控对象的瓶颈在哪里如果瓶颈是扰动未知就加强观测器如果瓶颈是执行器响应慢就给 MPC 一类有约束优化能力的控制器如果瓶颈是误差收敛速度不够滑模面设计才有意义。回到最初的问题零超调极速收敛不是某个数学公式的天然属性。它来自轨迹规划、前馈、扰动观测器、非奇异终端滑模面和执行器约束多层的协同。扰动观测器把未知扰动变成可补偿项滑模面把剩余误差拉到有限时间收敛路径上轨迹规划和抗饱和设计保证这条路不会因为初始冲击和限幅被打断。每一层都做好最后才能在真实电机上看到那条“不过冲、快速到位、负载突变也不乱”的曲线。如果只把论文里的滑模公式抄到控制板上大概率只会收获一台抖得发烫的电机。