4. 位置环原理:位置环的作用、数学模型与P控制器设计
好,咱们进入三环控制的最后一环——位置环。说实话,位置环是很多工程师觉得「简单」但又经常出问题的地方。我见过不少项目,速度环和电流环调得漂漂亮亮,一加上位置环就开始抖、超调、甚至丢步。为什么?因为位置环的「慢」和「准」跟速度环的「快」是天然矛盾的。
这一节,咱们就把位置环的底裤扒干净。从它到底干什么,到数学上怎么描述,再到最简单的P控制器怎么设计,一步到位。
4.1 位置环的作用:它到底在管什么?
位置环,顾名思义,就是控制电机最终停在哪儿。你想想看,电流环管力矩,速度环管转速,那位置环就是管「角度」或「位移」。它接收一个目标位置,然后告诉速度环:「嘿,你该往这个方向跑,跑多快,什么时候该减速。」
具体来说,位置环有三个核心任务:
- 定位精度:最终停下来的位置跟目标位置的误差,要控制在允许范围内。比如数控机床的丝杠定位,差了0.01mm可能就废了。
- 响应速度:从收到指令到到达目标位置,时间要短。但注意,不是越快越好,太快了容易超调。
- 无超调或小超调:很多应用场景(比如机械臂抓取、龙门架同步)不允许位置超调,因为超调意味着撞机或撞工件。
核心观点:位置环是「慢工出细活」的环。它的带宽通常只有速度环的1/5到1/10。我习惯把速度环带宽设为100Hz时,位置环带宽先给10-20Hz试试水。
我在一个贴片机项目里遇到过一个问题:位置环响应太快,结果每次到位后机械臂都会反弹一下,导致贴片偏移。后来我把位置环增益降了30%,再配合一个简单的加速度前馈,问题就解决了。嗯,这里要注意——位置环不是越快越好。
4.2 位置环的数学模型:从物理到传递函数
要设计控制器,先得有模型。位置环的模型其实比速度环还简单,因为它本质上就是一个积分关系。
咱们从最基础的物理关系说起:
- 电机轴的位置 θ(单位:rad 或 deg)
- 电机轴的角速度 ω(单位:rad/s)
它们之间的关系是:位置是速度的积分。
用数学表达就是:
θ(t) = ∫ ω(t) dt
如果考虑初始位置 θ₀,那就是:
θ(t) = θ₀ + ∫₀ᵗ ω(τ) dτ
在拉普拉斯域(s域)里,积分对应 1/s。所以位置环的传递函数就是:
G_pos(s) = θ(s) / ω(s) = 1/s
就这么简单?对,就这么简单。但实际系统中,位置反馈来自编码器或光栅尺,会有量化误差和延迟。不过咱们先不考虑这些,先把理想模型搞清楚。
如果把速度环也考虑进来(因为位置环的输出就是速度环的输入),那整个位置环的被控对象就是:
G_plant(s) = G_vel(s) * (1/s)
其中 G_vel(s) 是速度环的闭环传递函数。如果速度环已经调好,通常可以近似为一阶惯性环节:
G_vel(s) ≈ 1 / (τ_vel * s + 1)
其中 τ_vel 是速度环的时间常数。那么位置环的被控对象就是:
G_plant(s) = 1 / [s * (τ_vel * s + 1)]
你看,这是一个典型的「I型系统」——一个积分环节加一个惯性环节。这种系统的特点是:对阶跃输入没有稳态误差,但动态响应需要仔细设计。
实用技巧:在实际工程中,我很少去精确辨识 τ_vel。我一般直接用速度环的闭环带宽 ω_bw_vel 来估算:τ_vel ≈ 1 / ω_bw_vel。然后位置环的P增益就从这里开始试。
4.3 位置环的P控制器设计:最简单的往往最有效
位置环最常用的控制器就是——纯比例(P)控制器。你没看错,没有I,没有D。为什么?
- 不需要I:因为被控对象本身有一个积分环节(1/s),所以对阶跃输入的稳态误差天然为零。加I反而可能引入积分饱和和振荡。
- 慎用D:位置反馈通常有量化噪声(尤其是低分辨率编码器),微分会放大噪声,导致电机抖动。除非你用高分辨率编码器或做了很好的滤波,否则别轻易加D。
所以,位置环P控制器的形式就是:
ω_ref(t) = K_p * [θ_ref(t) - θ_fb(t)]
其中:
- ω_ref:速度环的参考输入(位置环的输出)
- θ_ref:目标位置
- θ_fb:实际反馈位置
- K_p:位置环比例增益
在s域里,控制器的传递函数就是:
C_pos(s) = K_p
整个位置环的开环传递函数为:
G_open(s) = K_p * [1 / (s * (τ_vel * s + 1))]
闭环传递函数为:
G_close(s) = K_p / [τ_vel * s² + s + K_p]
这是一个典型的二阶系统。它的自然频率 ω_n 和阻尼比 ζ 分别为:
ω_n = √(K_p / τ_vel)
ζ = 1 / (2 * √(K_p * τ_vel))
你看,K_p 越大,自然频率越高(响应越快),但阻尼比越小(超调越大)。这就是位置环设计的核心矛盾。
避坑指南:我曾经在一个激光切割机项目里,把K_p调得太大,结果每次定位时电机都会「冲过头」然后振荡回来。切割头在工件上画出了一道波浪线——整块板材报废。后来我把K_p降到原来的60%,再配合一个速度前馈,才搞定。
4.4 P增益的整定方法:从理论到实践
理论讲完了,咱们说说实际怎么调。我一般用两种方法:
方法一:基于临界阻尼的公式法
如果你希望位置环没有超调(临界阻尼,ζ=1),那么:
K_p = 1 / (4 * τ_vel)
这个公式怎么来的?从 ζ=1 的条件反推:
1 / (2 * √(K_p * τ_vel)) = 1
→ √(K_p * τ_vel) = 1/2
→ K_p * τ_vel = 1/4
→ K_p = 1 / (4 * τ_vel)
举个例子:如果速度环时间常数 τ_vel = 0.01s(对应带宽约100Hz),那么:
K_p = 1 / (4 * 0.01) = 25
这个值可以作为你的初始值。
方法二:试凑法(我常用的方法)
- 先给一个很小的K_p(比如1-5),让系统动起来,观察响应。
- 逐步增大K_p,直到出现轻微超调(比如5%-10%)。
- 然后退回20%-30%,作为最终值。
- 如果允许超调,可以再往上加一点,但要注意机械冲击。
我的习惯:我一般先用示波器看速度环的阶跃响应,估算出τ_vel。然后用公式算出K_p的初始值,再用试凑法微调。这样既快又稳,不会出现「调一整天还在抖」的情况。
4.5 位置环的知识体系总览
为了让你对整个位置环的设计有一个全局视角,我画了一张框架图。你可以看到位置环在整个三环系统中的位置,以及它内部的核心逻辑。
4.6 位置环P控制器的参数对比
为了让你更直观地理解K_p的影响,我整理了一个对比表。你可以看到不同K_p值下,系统的响应特性会怎么变化。
| K_p 值 | 响应速度 | 超调量 | 稳态误差 | 适用场景 |
|---|---|---|---|---|
| 过小(K_p < 1/4τ) | 慢 | 无 | 无 | 对响应速度要求不高的场合 |
| 临界值(K_p = 1/4τ) | 适中 | 无(临界阻尼) | 无 | 大多数通用场合(推荐起始点) |
| 适中(K_p = 1/2τ) | 较快 | 约5%-10% | 无 | 允许轻微超调的快速定位 |
| 过大(K_p > 1/τ) | 很快 | 大(>20%) | 无 | 不推荐,易振荡和机械冲击 |
重要提醒:上表中的 τ 是速度环的时间常数。如果你不知道速度环的 τ,可以用一个简单方法估算:给速度环一个阶跃指令,用示波器看它从10%上升到90%的时间 t_rise,那么 τ ≈ t_rise / 2.2。