位置环的数学模型:PID、前馈与滤波器

说实话,位置环的数学模型,是整个运动控制里最绕不开的东西。你调了半天参数,电机还是抖,或者跟丢目标,十有八九是这里没吃透。我刚开始做伺服驱动的时候,也在这上面栽过跟头——明明PID参数看着挺合理,一跑起来就是不行。后来才明白,光有PID不够,前馈和滤波器才是拉开差距的地方。

PID控制器的位置环应用

位置环里最常用的,就是比例-积分-微分控制器。但跟速度环、电流环不一样,位置环的PID有它自己的脾气。

先看标准公式:

u(t) = Kp * e(t) + Ki * ∫e(t)dt + Kd * de(t)/dt

其中 e(t) 是位置指令与实际位置的偏差。这里有个关键点——位置环的积分项要慎用。为什么?

我遇到过一台贴片机,位置环加了积分,结果每次启动都有个过冲。查了半天,发现是积分饱和。位置环的采样周期通常比速度环长(一般是1ms到10ms),积分项一旦饱和,退出来要花好几个周期,位置精度就崩了。

我的习惯:位置环优先用PD控制。只有在需要消除稳态误差的场合(比如重力轴),才加很小的Ki。而且一定要做积分限幅,限幅值我一般设成额定转矩的10%~20%。

比例增益Kp怎么设?说白了,它决定了位置环的刚度。Kp越大,电机对位置偏差的响应越猛,但容易振荡。我有个经验公式:

Kp ≈ (0.5 ~ 1.0) * 速度环带宽 / 位置环采样频率

举个例子,速度环带宽100Hz,位置环采样1kHz,那Kp大概在0.05到0.1之间。当然,这只是个起点,具体还得看负载。

参数 作用 调大后的影响 调小后的影响
Kp 位置刚度 响应快,易振荡 响应慢,跟随差
Ki 消除静差 过冲,积分饱和 稳态误差
Kd 阻尼/预测 噪声放大 阻尼不足

前馈控制原理

光靠PID,位置环的跟随误差永远存在。你想想看,PID是等误差出来了才去纠正,天生就慢半拍。前馈控制就是解决这个问题的——它提前把控制量算好,喂给系统。

位置环里最常用的前馈有两种:速度前馈和加速度前馈。

速度前馈的公式很简单:

u_ff_v = Kff_v * dθ_ref/dt

其中 dθ_ref/dt 是位置指令的速度。Kff_v 一般设成1.0左右,意思是把速度指令直接映射到速度环的输入。这样位置环只需要处理残余误差。

加速度前馈更进一层:

u_ff_a = Kff_a * d²θ_ref/dt²

它补偿的是惯性力。我在做龙门铣床的时候,Z轴负载重,不加加速度前馈,加减速段的位置误差能到0.1mm。加上之后,直接降到0.02mm以内。

前馈调参口诀:先调速度前馈到1.0,看跟随误差是否减小。如果加减速段误差仍然明显,再加加速度前馈。注意——前馈不是越大越好,过大会导致超调。

我曾经犯过一个错:把加速度前馈设到1.5,结果电机在急停时反向冲出去。后来才意识到,前馈增益超过1.0,相当于给系统注入了额外的能量,稳定性就危险了。

滤波器对精度的影响

滤波器这东西,很多人不重视。觉得不就是滤个波嘛,能有多大影响?我告诉你,影响大了去了。

位置环里常见的滤波器有:

  • 低通滤波器:滤除高频噪声,但会引入相位滞后
  • 陷波滤波器:针对特定频率(比如机械共振点)
  • 移动平均滤波器:平滑位置反馈信号

低通滤波器是最常用的。它的传递函数是:

H(s) = 1 / (τ * s + 1)

τ是时间常数。τ越大,滤波越强,但滞后也越大。这个滞后会直接吃掉位置环的相位裕度。

我测过一组数据:

滤波器截止频率 相位滞后@100Hz 位置环带宽
500 Hz 11.3° 85 Hz
200 Hz 26.6° 62 Hz
100 Hz 45.0° 38 Hz

看到没?截止频率从500Hz降到100Hz,位置环带宽直接腰斩。所以我的原则是:滤波器能不用就不用,非用不可就选最高的截止频率。

避坑指南:我曾经在一个精密转台项目里,为了滤掉编码器的量化噪声,把低通滤波器的截止频率设到了50Hz。结果位置环带宽掉到20Hz,转台响应慢得像蜗牛。后来改用陷波滤波器只滤掉共振峰,带宽才救回来。

移动平均滤波器也有它的坑。它本质上是个FIR滤波器,没有相位滞后?不对——它也有延迟,延迟量等于窗口长度的一半。比如你用10个点的移动平均,采样周期1ms,那就引入了5ms的延迟。这5ms在位置环里,足够让系统振荡了。

位置环控制结构图 位置指令 前馈控制器 位置误差 PID控制器 滤波器 电机+负载 位置反馈 + − 图例说明: 蓝色:指令/反馈路径 | 紫色:前馈路径 | 红色:误差计算 绿色:PID控制器 | 橙色:滤波器 | 青色:被控对象 前馈与PID输出叠加后经过滤波器,再驱动电机。反馈信号与指令比较形成闭环。

从这张图你能看到,前馈和PID是并联的,它们的输出叠加后经过滤波器,再送到被控对象。滤波器放在这个位置,既能平滑控制信号,也会引入延迟。所以滤波器参数的选择,本质上是在噪声抑制和响应速度之间做权衡。

嗯,这里要注意一点:滤波器的延迟会直接削弱前馈的效果。因为前馈算出来的控制量是"准时"的,但滤波器一拖,就变成"迟到"的了。我建议,如果用了前馈,滤波器的截止频率至少要比位置环带宽高3倍以上。

实战建议:先不滤波,调好PID和前馈。然后从高到低慢慢降低滤波器截止频率,直到位置反馈的噪声可以接受。别一上来就加滤波,那样会把系统的真实性能埋掉。

最后说一句,位置环的数学模型不是纸上谈兵。你每改一个参数,都要想清楚它在传递函数里动了什么。Kp动了增益,Ki动了低频特性,Kd动了高频特性,前馈动了指令跟踪能力,滤波器动了相位裕度。把这些关系理清了,调参就不再是玄学。