1. 为什么说PID不够用了?聊聊ADRC的“降维打击”
大家好,我是老张,在电机控制这个行当里摸爬滚打了十几年,从最早的直流有刷电机玩到现在的永磁同步电机,控制器也从模拟电路换成了DSP,算法更是试了一圈。今天想和大家掏心窝子聊聊,为什么在很多对性能要求高的场合,比如精密机床、机器人关节,经典的PID控制器开始有点“力不从心”,而自抗扰控制(ADRC)又是怎么像个“全能管家”一样,把那些让人头疼的问题打包解决的。
咱们先说说PID,这绝对是控制领域的“老黄牛”,结构简单,参数整定方法成熟,我刚开始搞控制的时候,觉得它简直万能。但用久了,尤其是在永磁同步电机这种高性能应用里,它的几个“老毛病”就特别明显。第一个就是“快”和“稳”的矛盾。你想让电机转速快速跟上指令,把比例和微分调猛一点,结果往往是超调严重,电机“冲过头”了再回来,系统晃得厉害;你要是为了平稳,把参数调柔和,响应又慢得像蜗牛。第二个是“微分”环节太娇气,电机运行时的电流噪声、编码器测量噪声,都会被微分环节放大,导致控制信号里掺杂了大量噪声,反而让系统不稳定。第三个是“积分”的滞后性,面对突然的负载扰动,积分项得慢慢累积误差才能产生对抗力,反应总是慢半拍。
这时候,ADRC的思路就很有意思了。它不像PID那样,眼睛只盯着“误差”这个结果去修修补补。ADRC的想法更“霸道”一点:我不管你这个电机内部数学模型到底多复杂,也不管外面来了什么负载扰动、参数波动,我把所有我看不懂的、测不准的、突然冒出来的东西,统统打包成一个“总扰动”。然后,我想办法实时地“猜”出这个总扰动有多大(这就是状态观测器的活儿),并且在控制信号里提前把它给“抵消”掉。这就好比开车,PID是看到车偏左了才向右打方向,而ADRC是能提前感知到侧风、路面倾斜,在车还没开始偏的时候,就稳稳地把方向盘扶正了。
所以,ADRC的核心魅力就在于它这种“以不变应万变”的能力。它不依赖于精确的电机数学模型(要知道,永磁同步电机的参数比如电感、磁链,在实际中是会随着温度、电流变化的),而是把模型的不确定性和外部扰动一起估计并补偿掉。这对于我们工程师来说,简直是福音,因为我们终于可以从繁琐的精确建模和复杂的抗扰动设计中解放出来,把精力更多放在如何让系统整体性能更优上。接下来,我们就一起拆开ADRC这个“黑盒子”,看看它里面的三大法宝到底是怎么工作的。
2. 拆解ADRC:三大核心部件是如何各司其职的
ADRC控制器虽然听起来高大上,但它的结构非常清晰,主要由三部分组成:跟踪微分器(TD)、扩张状态观测器(ESO)和非线性状态误差反馈(NLSEF)。我们可以把它们想象成一个配合默契的精英小队。
2.1 跟踪微分器(TD):规划最优的“行动路径”
TD是整个控制过程的“先行官”。它的任务不是直接去控制电机,而是为控制目标(比如期望的位置或速度)规划一条合理的“过渡路径”。为什么需要这个?回想一下PID的问题,直接给一个阶跃指令,系统容易“反应过激”。TD的作用就是把这个生硬的阶跃指令,平滑地转变为一个既快速又无超调的跟踪信号 v1 及其微分信号 v2。
这里面的关键是一个叫 fhan 的非线性函数。我刚开始看这个函数时也觉得有点绕,后来理解它其实就是一个“最速控制综合函数”。它根据当前状态与目标的差距,以及当前的速度(微分),计算出一个最优的“加速度”,让系统能以最短时间、无超调地到达目标。你可以把它想象成一位经验丰富的老司机,他不是一脚油门踩到底,而是根据距离和当前车速,精准地控制油门和刹车,让车平稳又迅速地停到指定位置。在Simulink里实现时,TD的核心更新逻辑就是两行代码:
v1 = v1 + h_1 * v2;
v2 = v2 + h_1 * fhan(v1 - v, v2, r, h);
其中 v 是目标指令,r 是控制速度的系数(r越大,跟踪越快),h 是积分步长。v1 就是规划出的平滑位置指令,v2 是其微分(速度指令)。通过调整 r 和 h,你可以轻松地在“响应速度”和“平稳性”之间找到最佳平衡点,这比PID里调三个参数去权衡超调和快速性要直观得多。
2.2 扩张状态观测器(ESO):洞察一切的“火眼金睛”
ESO是ADRC的灵魂,也是最精妙的部分。如果说TD规划了理想路径,那么ESO就是实时监控现实世界的“传感器+预言家”。它的强大之处在于,它不仅观测系统的实际输出(比如电机实际转速 y),还能估计出我们无法直接测量的状态(比如总扰动)。
它是怎么做到的呢?ESO把系统的总扰动(包括未建模动态、内部参数变化、外部负载干扰)当作一个新的状态变量 z3 来进行观测。我们以速度环为例,永磁同步电机的机械运动方程通常可以简化为 dw/dt = (Te - Tl - B*w)/J,其中 Te是电磁转矩,Tl是负载转矩,B是阻尼系数,J是转动惯量。这里面 Tl、B、J 的变化都是扰动。ESO的做法是,把这些乱七八糟的项和模型不准确的部分全部打包,设为一个扩张状态 x3 = f(w, t, d, ...)。然后通过一个巧妙的观测器结构,实时估计出 z1(速度估计值)、z2(加速度估计值)和最重要的 z3(总扰动估计值)。
它的核心算法依赖于另一个非线性函数 fal(e, alpha, delta)。这个函数的特点是,当误差 e 大时,它呈现线性或非线性增益,快速收敛;当误差 e 很小时,它又具有“小误差大增益”的特性,保证估计精度。ES
1290



被折叠的 条评论
为什么被折叠?



