4. 滑模控制基础:滑模面设计、趋近律选择与抖振问题
各位同学,今天我们聊聊滑模控制。说实话,这玩意儿在电机控制圈子里,属于那种「听着很唬人,用起来很顺手」的方法。我最早接触滑模是在做伺服驱动器项目的时候,当时被参数失配搞得焦头烂额,后来发现滑模控制简直就是一剂猛药——虽然副作用也有,但咱们今天就把它的底裤扒干净。
4.1 滑模控制的核心思想
滑模控制,说白了就是「设计一个滑面,让系统状态乖乖滑上去」。你想想看,电机参数变了怎么办?负载突变怎么办?传统PID可能就慌了。但滑模控制不管这些——它只关心系统状态是不是在滑模面上。
我习惯用一个比喻来理解:想象你在滑雪。滑模面就是雪道,系统状态就是你的滑雪板。只要雪板在雪道上,你就能稳定滑行。哪怕雪道上有坑坑洼洼(参数扰动),只要雪板还在道上,你就不会摔。这就是滑模控制的鲁棒性来源。
核心思想:通过不连续的控制律,迫使系统状态在有限时间内到达并保持在滑模面上,从而获得对参数摄动和外部扰动的完全鲁棒性。
4.2 滑模面设计
滑模面怎么设计?这得看你的控制目标。对于永磁同步电机这类二阶系统,我常用的滑模面形式是:
s = c·e + ė
其中 e 是误差,c 是滑模面参数(c > 0)。这个参数 c 决定了系统在滑模面上的收敛速度。c 越大,收敛越快,但控制力要求也越高。
我在项目中遇到过一个问题:c 选得太小,系统收敛慢得像蜗牛;选得太大,控制输入饱和,反而导致震荡。后来我总结了一个经验——c 的取值大概在系统带宽的 3-5 倍比较合适。当然,具体还得看你的采样频率和执行器能力。
| 滑模面类型 | 表达式 | 适用场景 |
|---|---|---|
| 线性滑模面 | s = c·e + ė | 二阶系统,最常用 |
| 积分滑模面 | s = c·e + ė + k∫e dt | 需要消除稳态误差 |
| 终端滑模面 | s = ė + β·e^(p/q) | 有限时间收敛 |
我的小技巧:刚开始设计滑模面时,先用线性滑模面。等系统跑稳了,再考虑加积分项消除静差。别一上来就搞终端滑模,那玩意儿参数整定够你喝一壶的。
4.3 趋近律选择
滑模面设计好了,接下来就是怎么让系统状态「滑」到滑模面上。这就是趋近律干的事。常见的趋近律有三种,我一个个说。
4.3.1 等速趋近律
形式最简单:
ṡ = -ε·sign(s), ε > 0
说白了就是用一个恒定的速度把状态推向滑模面。ε 越大,趋近越快,但抖振也越严重。我刚开始做实验时,ε 设得太大,结果电机嗡嗡响,吓得我赶紧断电。
注意:等速趋近律的抖振问题最严重。因为 sign 函数在 s=0 附近来回切换,控制量跳变剧烈。除非你的系统对抖振不敏感,否则我不建议单独使用。
4.3.2 指数趋近律
这个是我最常用的:
ṡ = -ε·sign(s) - k·s, ε > 0, k > 0
你看,多了一个 -k·s 项。当 s 很大时,-k·s 起主导作用,系统快速趋近滑模面;当 s 接近 0 时,-ε·sign(s) 起主导作用,保证系统能到达滑模面。
指数趋近律的好处是:既保证了快速性,又在一定程度上抑制了抖振。我习惯把 k 设得大一些(比如 100-200),ε 设得小一些(比如 0.1-1)。这样系统响应快,抖振也小。
4.3.3 幂次趋近律
这个稍微复杂点:
ṡ = -k·|s|^α·sign(s), 0 < α < 1
当 s 远离滑模面时,|s|^α 很大,趋近速度快;当 s 接近滑模面时,|s|^α 很小,趋近速度变慢,从而平滑地进入滑模面。这玩意儿能有效抑制抖振,但参数 α 的整定比较麻烦。
我曾经在一个高精度位置控制项目里用过幂次趋近律,效果确实好,抖振几乎看不见。但调试 α 花了我整整两天时间——α 取 0.5 时系统震荡,取 0.3 时收敛太慢,最后取 0.4 才勉强满意。
4.4 抖振问题分析
抖振,是滑模控制绕不开的坎。说白了,抖振就是控制量在滑模面附近高频切换导致的震荡。为什么会这样?因为 sign 函数是个不连续函数,它在 s=0 处跳变。理想情况下,系统在滑模面上完美滑动;但实际系统中,采样延迟、执行器惯性、未建模动态等因素,导致控制量来回切换,产生抖振。
抖振的危害我深有体会:
- 电机发热严重,我有个项目因为抖振太大,电机温度直接飙到 90°C
- 产生 audible noise(可听噪声),客户投诉说「你们的驱动器像在唱歌」
- 增加执行器磨损,尤其是机械轴承和齿轮箱
怎么抑制抖振?我常用的方法有:
- 边界层法:用饱和函数 sat(s/Φ) 代替 sign(s)。Φ 是边界层厚度,Φ 越大,抖振越小,但鲁棒性也下降。这是个 trade-off。
- 高阶滑模:把不连续项放到控制量的导数里,这样控制量本身是连续的。超螺旋算法(Super-Twisting)就是个典型例子。
- 自适应增益:根据系统状态动态调整 ε 或 k,在保证鲁棒性的同时减小抖振。
我的经验:别指望完全消除抖振,那不现实。我们的目标是「把抖振控制在可接受范围内」。对于大多数电机控制应用,边界层法配合指数趋近律就够用了。先把系统跑起来,再慢慢优化。
4.5 本章知识体系
下面这张图是我画的滑模控制知识结构,你看一眼就能明白各部分的逻辑关系:
嗯,这张图把滑模控制的三个核心要素串起来了。你设计滑模控制器时,就按这个思路来:先定滑模面,再选趋近律,最后处理抖振。每一步都有 trade-off,没有银弹。
避坑指南:我曾经在一个项目中,花了两周时间调滑模参数,结果发现是采样频率太低导致的抖振。后来把采样频率从 5kHz 提到 10kHz,问题直接解决。所以,遇到抖振先别急着改算法,检查一下硬件和采样设置。
好了,滑模控制的基础就讲到这里。下一节我们会把这些理论应用到永磁同步电机的电流环和速度环控制中,到时候你会看到滑模控制到底有多「鲁棒」。
公众号:蓝海资料掘金营,微信deep3321