4. 位置环设计:控制架构、PID参数整定与前馈补偿

位置环,说白了就是让电机精准地停在你想让它停的位置。速度环管的是“跑多快”,位置环管的是“跑到哪”。

我刚开始做位置控制时,总觉得把PID参数调大点就能又准又快。结果呢?要么超调严重,要么震荡个不停。后来才明白,位置环有它自己的脾气。

4.1 位置环控制架构

先看看整体框架。位置环在最外层,它的输出是速度环的给定值。

位置环控制架构 位置给定 θ_ref − 位置环PID P + I + 前馈 速度环 PI控制 电机+负载 编码器 前馈补偿 关键点:位置环输出 = 速度给定。位置环的带宽通常比速度环低 5~10 倍。 采样频率建议:位置环 1kHz,速度环 4~10kHz,电流环 10~20kHz。

位置环的输入是位置误差 e = θ_ref − θ_fb,输出是速度给定 ω_ref。这个 ω_ref 会喂给速度环,速度环再输出电流给定给电流环。三层嵌套,一层管一层。

我的习惯:位置环周期我一般设在 1ms(1kHz)。太快了没意义,因为机械响应本身就慢。太慢了位置跟踪会滞后。

4.2 位置环PID参数整定

位置环的PID和速度环不太一样。我通常只用P,最多加一点点I。D项?位置环里我基本不用。

4.2.1 P参数整定

比例增益 Kp_pos 决定了位置响应的刚度。Kp越大,电机对位置偏差的纠正力越强。

整定步骤其实很简单:

  1. 先把I和D设为0,只留P。
  2. 给一个阶跃位置指令,比如转90度。
  3. 慢慢增大Kp,直到出现轻微超调。
  4. 退回20%~30%,这就是比较安全的Kp值。

我在项目里遇到过一个问题:Kp调得太大,电机一启动就“嘎嘎”响。后来发现是位置环输出给速度环的给定值跳变太大,速度环根本追不上。解决办法是在位置环输出加一个限幅。

注意:位置环P参数的单位通常是 (rad/s)/rad,也就是 1/s。别和速度环的P搞混了。

4.2.2 I参数的作用与风险

积分项能消除稳态误差。比如负载把电机推开了一点,I项会慢慢累积,把电机拉回来。

但位置环的I项要非常小心。我见过有人把I调大了,结果位置在目标点附近来回震荡,就是稳不住。为什么?积分饱和了。

我的建议:

  • 如果系统对静态精度要求不高,I=0就行。P控制本身就有一定的刚度。
  • 如果一定要加I,Ki取Kp的1/100~1/50,并且一定要加积分限幅。
  • 别忘了积分分离:误差大时关掉积分,误差小时再打开。

4.2.3 D参数——我基本不用

位置环加D,理论上能抑制超调。但实际效果嘛……

编码器反馈的微分就是速度,而速度环已经在处理速度了。位置环再加D,相当于对速度再做一次微分,噪声会被放大得很厉害。我曾经试过,结果电机抖得跟筛子似的。

经验总结:位置环PID,90%的场景只用P。剩下10%加一点点I。D基本不用。

4.3 前馈补偿技术

纯PID控制有个问题:它总是“看到误差才行动”。对于匀速跟踪或者加减速过程,位置误差会一直存在。

前馈补偿就是提前告诉位置环:“接下来要这么走,你先准备好。”

4.3.1 速度前馈

速度前馈是最常用的一种。原理很简单:

位置环输出 = Kp × e + 速度前馈项

速度前馈项 = Kff × dθ_ref/dt

其中 dθ_ref/dt 就是位置给定的速度。如果给定轨迹是规划好的,这个值可以直接算出来。

我做过一个贴片机项目,位置跟踪误差要求小于0.1度。纯P控制时,匀速段误差有0.3度。加了速度前馈后,误差直接降到0.05度以内。效果立竿见影。

4.3.2 加速度前馈

如果对动态性能要求更高,可以再加加速度前馈。加速度前馈补偿的是惯性力。

位置环输出 = Kp × e + Kff_v × v_ref + Kff_a × a_ref

加速度前馈在重负载或者高速启停时特别有用。但要注意,加速度信号噪声大,通常需要滤波。

4.3.3 前馈系数整定

前馈系数怎么调?我一般这样做:

步骤 操作 现象
1 Kff_v从0开始,慢慢增加 匀速段误差逐渐减小
2 继续增加Kff_v 误差变为负值(过补偿)
3 退回使误差接近0的值 匀速段误差最小
4 如果启停段误差大,加Kff_a 加减速段误差减小
一个小技巧:前馈系数可以先设成1.0,然后看跟踪误差的符号。误差为正就加大,为负就减小。调几次就找到最佳值了。

4.4 位置环参数整定流程总结

把上面说的串起来,一个完整的位置环整定流程是这样的:

  1. 先整定好速度环。位置环依赖速度环,速度环不稳,位置环怎么调都没用。
  2. 设置位置环周期,我一般用1ms。
  3. P参数粗调:从0开始加,直到出现轻微超调,然后退回30%。
  4. 加前馈:先调速度前馈,再调加速度前馈(如果需要)。
  5. 微调P:加了前馈后,原来的P可能偏大,适当减小。
  6. 如果需要加I:从Kp/100开始,加积分限幅和积分分离。
  7. 验证:跑一个完整的运动轨迹,检查最大误差和稳态误差。

我曾经在一个六轴机器人项目上,光位置环就调了两天。最后发现是速度环带宽不够,位置环怎么调都追不上。所以记住:位置环的性能上限,由速度环决定。

核心要点:
• 位置环输出 = 速度给定,带宽比速度环低5~10倍
• 90%场景只用P,前馈比I更实用
• 速度前馈消除匀速跟踪误差,加速度前馈消除加减速误差
• 位置环调不好,先检查速度环