4. 位置环与速度环调优:PID参数整定对同步精度的影响
各位搞多轴同步的兄弟,今天咱们聊点硬核的——位置环和速度环的调优。说实话,我见过太多项目,硬件选型没问题,电机也是大牌,但同步精度就是上不去。问题出在哪?十有八九是PID没调好。
你想想看,多轴同步说白了就是让几个轴像一个人走路一样协调。但每个轴都有自己的脾气——惯量不同、摩擦力不同、响应速度不同。PID参数就是用来驯服这些脾气的工具。调好了,四轴八轴都能同步得像一台机器;调不好,两个轴都能给你扭出麻花来。
4.1 位置环与速度环的角色分工
先搞清楚一件事:位置环和速度环不是各干各的,它们是嵌套关系。速度环在里面,位置环在外面。位置环给速度环发指令,速度环再去驱动电机。
我习惯用这个比喻:速度环是运动员,负责跑得快、跑得稳;位置环是教练,告诉运动员该跑到哪、什么时候停。教练喊得急了,运动员可能摔跤;教练喊得慢了,运动员又跑不到位。
| 控制环 | 输入 | 输出 | 主要目标 | 带宽范围 |
|---|---|---|---|---|
| 位置环 | 位置指令 | 速度指令 | 定位精度、跟随误差 | 10~50 Hz |
| 速度环 | 速度指令 | 电流/转矩指令 | 速度平稳、抗扰动 | 100~500 Hz |
这里有个关键点:速度环的带宽必须比位置环高一个数量级。如果速度环响应慢,位置环再怎么调也是白费力气。我在调试一台六轴机器人时遇到过这问题——位置环增益加到200了,轴还是抖。后来发现是速度环带宽只有30Hz,根本跟不上位置环的指令变化。
4.2 PID参数整定对同步精度的影响
PID三个参数,每个都有自己的脾气。我总结了一个口诀,虽然糙但管用:P管响应,I管精度,D管稳定。
4.2.1 比例增益(Kp)
Kp是主力。Kp越大,系统响应越快,位置误差越小。但Kp不是越大越好——过大会引起超调,甚至震荡。
对于多轴同步,我建议这样调:
- 先让所有轴在空载下跑同样的轨迹
- 从Kp=10开始,每次增加5,直到出现轻微震荡
- 然后退回80%的值作为基准
- 各轴的Kp尽量保持一致,差异不要超过10%
4.2.2 积分增益(Ki)
Ki的作用是消除稳态误差。但Ki有个副作用——它会引入相位滞后。对于同步系统来说,相位滞后意味着轴与轴之间的延迟差会变大。
我的经验是:Ki能不用就不用,能小用就小用。如果位置环的稳态误差在允许范围内,干脆把Ki设成0。实在要用,Ki值不要超过Kp的1/10。
4.2.3 微分增益(Kd)
Kd是双刃剑。用好了能抑制超调,用不好会放大噪声。在伺服系统里,我一般只在速度环用Kd,位置环很少用。
为什么?因为位置环的指令通常是平滑的轨迹曲线,微分项对噪声太敏感。你想想看,编码器反馈稍微抖一下,微分项就能给你放大成一个很大的修正量,轴反而更不稳。
4.3 前馈补偿的应用
PID是被动纠偏——等误差出来了才去修正。前馈是主动预防——提前算好需要多少力,直接给上去。
前馈补偿的核心公式很简单:
速度前馈 = 位置指令微分 × 速度前馈增益
转矩前馈 = 加速度指令 × 惯量前馈增益
但实际应用时要注意几点:
- 速度前馈:主要减少跟随误差。我习惯先设50%,看效果再往上加。加到80%以上时要注意,如果指令有突变,前馈会引起冲击。
- 加速度前馈:主要补偿惯性力。这个参数跟负载惯量直接相关。换负载后一定要重新标定。
- 摩擦前馈:很多驱动器支持。对于低速运行的轴,摩擦力占比大,加上摩擦前馈能明显改善同步精度。
4.4 陷波滤波器抑制机械谐振
机械谐振是同步精度的头号杀手。一旦某个轴发生谐振,整个系统的同步误差会瞬间放大。谐振频率通常在几十到几百赫兹,跟机械结构的刚度、质量分布有关。
陷波滤波器的作用就是:在谐振频率点挖一个坑,把那个频率的能量吸收掉。
典型的陷波滤波器传递函数:
H(s) = (s² + ω₀²) / (s² + 2ζω₀s + ω₀²)
其中:
ω₀ = 2πf₀(f₀为谐振频率)
ζ = 阻尼比(通常取0.1~0.3)
实际调试步骤:
- 找谐振点:用驱动器的FFT功能扫频,或者用手转动轴听声音。高频啸叫声通常就是谐振点。
- 设置中心频率:把f₀设成测到的谐振频率。
- 设置陷波深度:一般从-10dB开始,不够再加。太深会影响系统带宽。
- 验证效果:跑一遍同步轨迹,看误差曲线是否平滑了。
4.5 调优流程与实战要点
说了这么多,我整理一个实战调优流程,照着做基本不会翻车:
- 机械检查:联轴器是否松动?导轨是否卡涩?先排除机械问题。
- 速度环粗调:Kp从低到高,找到临界值后回退30%。Ki尽量小。
- 位置环粗调:Kp从低到高,观察跟随误差。目标是把误差控制在允许范围的50%以内。
- 前馈补偿:先加速度前馈,再速度前馈。每加一个就跑一次完整轨迹验证。
- 谐振抑制:如果轴有抖动,用陷波滤波器处理。
- 同步验证:让所有轴跑同样的S曲线,记录最大同步误差。
- 微调:根据同步误差曲线,微调各轴的Kp和Ki,让误差曲线尽量重合。
嗯,这里要注意一点:调参时一定要用统一的轨迹。我习惯用S曲线,加减速时间设成一样。这样各轴的响应差异才能暴露出来。
最后说一句:PID参数没有万能公式。每台机器的机械特性都不一样,参数必须现场调。但掌握了今天讲的这些原理和方法,你至少知道该往哪个方向调,而不是瞎蒙。