4. 位置环P参数整定:位置环比例系数计算、前馈补偿、轨迹规划与跟随误差
位置环的调优,说白了就是让电机听话。你让它转10圈,它就得精准停在10圈的位置上,不能多也不能少。我刚开始做位置环时,总觉得这玩意儿比速度环难搞多了——速度环跑偏了还能忍,位置环要是偏了,设备直接就废了。
今天咱们聊聊位置环P参数的整定。嗯,这里要注意,位置环和速度环的P参数整定思路完全不同。速度环追求的是响应快、超调小,而位置环追求的是——不超调、不震荡、稳态误差为零。
4.1 位置环比例系数计算
位置环的P参数,说白了就是位置误差到速度指令的增益。公式很简单:
V_cmd = Kp_pos * (Pos_target - Pos_actual)
这个Kp_pos怎么算?我个人习惯从系统的带宽需求反推。假设你的位置环期望带宽是10Hz,那Kp_pos大概可以这样估算:
Kp_pos ≈ 2 * π * Bandwidth_pos
算出来大约是62.8。但这是理想情况,实际项目中我一般会先给个50%的安全系数,也就是30左右开始试。
核心原则:位置环的Kp不能太大。太大了,位置误差稍微大一点,速度指令就飙上天,电机咣当一下冲过头,然后来回震荡。我见过一个同行,Kp设了200,电机像抽风一样抖,他还以为是编码器坏了。
实际调试时,我建议用这个步骤:
- 先锁定速度环——速度环没调好之前,别碰位置环。速度环带宽至少是位置环的5倍以上。
- 给一个阶跃位置指令——比如让电机转1圈。
- 观察响应曲线——看有没有超调。位置环不允许有超调,一旦超调,说明Kp太大了。
- 逐步增大Kp——直到出现临界震荡,然后回退30%。
我的小技巧:位置环的Kp整定,我习惯用「斜坡响应」而不是「阶跃响应」。斜坡响应能更清楚地看到跟随误差的变化趋势,比阶跃响应直观得多。
4.2 前馈补偿
光靠P控制,位置环永远会有跟随误差。为什么?因为P控制是「事后纠偏」——有了误差才产生控制量。对于匀速运动,这个误差是恒定的。对于加速运动,误差会更大。
前馈补偿就是解决这个问题的。说白了,就是提前告诉电机:「接下来我要加速了,你先多给点力。」
位置环的前馈通常有两种:
- 速度前馈:根据目标位置的变化率(即目标速度),直接叠加到速度指令上。
- 加速度前馈:根据目标速度的变化率(即目标加速度),叠加到电流指令上。
公式长这样:
V_cmd = Kp_pos * e_pos + Kff_v * V_target
I_cmd = Kp_spd * e_spd + Kff_a * A_target
其中Kff_v是速度前馈系数,Kff_a是加速度前馈系数。理想情况下,Kff_v=1.0,Kff_a=1.0。但实际中,因为摩擦、惯量不匹配等因素,需要微调。
注意:前馈补偿不是万能的。我曾经在一个高摩擦的丝杠平台上调前馈,Kff_v设到1.2才勉强跟上。后来发现是润滑不够,加了点油,Kff_v降到0.95就完美了。所以,前馈调不好,先检查机械。
调试前馈时,我习惯这样做:
- 先关掉前馈(Kff_v=0, Kff_a=0),调好P参数。
- 给一个匀速运动指令,观察跟随误差。
- 逐步增大Kff_v,直到跟随误差接近零。
- 给一个匀加速运动指令,观察跟随误差的变化。
- 逐步增大Kff_a,直到加速段的误差也消失。
4.3 轨迹规划
位置环的调优,不能只看控制器本身,还得看输入信号。你给一个阶跃信号,神仙来了也调不好——位置不可能瞬间跳变。
轨迹规划就是生成一个「物理上可实现」的位置指令。常见的轨迹规划有:
- T型曲线:加速-匀速-减速。简单粗暴,但加速度有突变,会有冲击。
- S型曲线:加加速度(Jerk)有限制。加速度平滑变化,冲击小。
- 多项式曲线:比如5次多项式,位置、速度、加速度都连续。
我个人最常用的是S型曲线。为什么?因为T型曲线在加速段结束的瞬间,加速度从最大值突变为0,电机会抖一下。S型曲线让加速度平滑变化,电机运行起来像丝般顺滑。
S型曲线的生成代码大概长这样:
// S型曲线轨迹规划(简化版)
// 输入:起始位置、目标位置、最大速度、最大加速度、最大加加速度
void S_Curve_Plan(float start, float target, float v_max, float a_max, float jerk_max) {
float dist = target - start;
// 计算各段的时间参数
// 加速段、匀速段、减速段...
// 每个段内,位置是时间的5次多项式
// 具体实现略...
}
关键点:轨迹规划的参数(最大速度、最大加速度)必须与电机的实际能力匹配。你设一个电机根本跑不到的速度,轨迹规划再漂亮也没用。我见过有人把最大加速度设成10000 rad/s²,电机直接报过流故障。
4.4 跟随误差
跟随误差就是目标位置与实际位置的差值。调位置环,本质上就是在压这个误差。
影响跟随误差的因素有很多:
| 因素 | 影响 | 解决办法 |
|---|---|---|
| P参数太小 | 误差大,响应慢 | 增大Kp(注意不要超调) |
| 前馈不足 | 匀速段有恒定误差 | 增大Kff_v |
| 加速度过大 | 加速段误差突增 | 降低加速度或增大Kff_a |
| 机械间隙 | 反向时有回差 | 加反向间隙补偿 |
| 摩擦力 | 低速时误差大 | 加摩擦力补偿 |
我曾经在一个龙门平台上调位置环,发现跟随误差总是周期性波动。查了半天,发现是导轨的直线度有问题,电机每转一圈,阻力就变化一次。后来加了自适应前馈补偿才搞定。嗯,机械问题有时候比控制问题更难搞。
避坑指南:我曾经在调试时发现跟随误差始终降不到零,以为是PID参数没调好。折腾了两天,最后发现是编码器的分辨率不够——位置反馈的量化误差太大了。换了个高分辨率编码器,问题迎刃而解。所以,调位置环之前,先确认你的反馈精度够不够。
4.5 知识体系总览
下面这张图总结了位置环调优的核心逻辑,从参数计算到前馈补偿,再到轨迹规划和误差分析,环环相扣:
调位置环,说白了就是一场「误差消灭战」。P参数解决静态误差,前馈解决动态误差,轨迹规划从源头减少误差,最后用跟随误差分析来验证效果。每一步都踩实了,你的电机才能指哪打哪。