4. 电流环与力矩环:永磁同步电机(PMSM)的力矩产生原理,FOC控制基础

聊到机器人关节的力矩控制,绕不开一个核心话题——电机怎么听话地出力。我最早接触这个领域时,以为给多大电压,电机就出多大力矩。结果呢?电机要么抖得像筛子,要么干脆堵转。后来才明白,力矩控制的根基,在于电流环。

说白了,永磁同步电机(PMSM)的力矩,本质上就是电流。你控制住了电流,就控制住了力矩。这一章,我们就把这个链条彻底理清楚。

4.1 PMSM力矩产生的物理本质

先看一个最基础的公式:

Te = 1.5 * p * [λ * iq + (Ld - Lq) * id * iq]

这里面:

  • Te —— 电磁力矩,我们要的就是它
  • p —— 极对数,电机设计时就定了
  • λ —— 永磁体磁链,也是固定值
  • Ld, Lq —— d轴和q轴电感
  • id, iq —— d轴和q轴电流

对于表贴式PMSM(SPMSM),Ld ≈ Lq,公式简化成:

Te = 1.5 * p * λ * iq

看到了吗?力矩和iq电流是线性关系。这就是为什么FOC控制里,我们拼命去控制iq。我在调试第一个关节模组时,就是靠这个公式反推——力矩不准,先查iq反馈是不是对的。

核心结论: 对于表贴式PMSM,力矩控制 = iq电流控制。id通常控制为0,除非你需要弱磁升速。

4.2 FOC控制的基本架构

FOC(Field-Oriented Control),中文叫磁场定向控制。名字听着玄乎,其实思路很直接——把三相交流电机,假装成直流电机来控制。

为什么这么做?因为直流电机的力矩和电枢电流是天然解耦的,控制简单。而三相交流电机的电流是旋转的,直接控制很难。FOC通过坐标变换,把静止的三相坐标系(abc),先变到两相静止坐标系(αβ),再变到旋转坐标系(dq)。

在dq坐标系下,id和iq就成了直流量。这时候,用两个PI调节器分别控制id和iq,就搞定了。

我的习惯: 调试FOC时,先开环给一个固定的dq电压,看电流采样和旋转变换对不对。确认无误后,再闭环。这一步能省下大量排查时间。

下面这张图,是我每次培训新人必讲的FOC核心流程:

FOC控制核心流程 电流采样 Clark变换 Park变换 PI调节器 PI调节器 反Park变换 SVPWM 逆变器 位置/速度反馈 流程说明: 1. 采样三相电流 ia, ib, ic 2. Clark变换:ia, ib, ic → iα, iβ 3. Park变换:iα, iβ → id, iq(需要转子位置θ) 4. PI调节:id_ref - id → Vd, iq_ref - iq → Vq 5. 反Park变换:Vd, Vq → Vα, Vβ 6. SVPWM生成占空比,驱动逆变器输出三相电压

4.3 电流环的组成与调试

电流环是FOC的最内环,也是响应最快的环。它的带宽通常设置在1kHz~5kHz,取决于你的PWM频率和硬件能力。

一个标准的电流环包含:

  • 电流采样:通常用双电阻或单电阻采样,配合ADC
  • 坐标变换:Clark + Park,把三相电流变成dq轴电流
  • PI调节器:分别控制id和iq
  • 解耦补偿:消除d轴和q轴之间的交叉耦合
  • 反变换与调制:反Park + SVPWM

我曾经踩过的坑: 电流采样时序没对齐PWM中心。结果采到的电流全是开关噪声,PI怎么调都抖。后来把采样点放在PWM载波的谷底或峰顶,问题立刻解决。记住——采样时刻比算法本身更重要。

4.4 PI调节器的参数整定

电流环的PI参数,我建议用极点配置法来算,而不是盲目试凑。

对于q轴电流环,被控对象可以近似为一阶惯性环节:

G(s) = 1 / (R + sLq)

其中R是定子电阻,Lq是q轴电感。PI调节器传递函数为:

PI(s) = Kp + Ki/s

闭环传递函数为:

Gc(s) = (Kp*s + Ki) / (Lq*s² + (R+Kp)*s + Ki)

我们希望闭环带宽为ωc(比如2000 rad/s),阻尼比ξ取0.707(典型值)。那么:

Kp = Lq * 2 * ξ * ωc - R
Ki = Lq * ωc²

举个例子,假设Lq = 0.5 mH,R = 0.1 Ω,目标带宽ωc = 2000 rad/s:

Kp = 0.0005 * 2 * 0.707 * 2000 - 0.1 = 1.314
Ki = 0.0005 * 2000² = 2000

我的经验: 算出来的参数只是起点。实际调试时,我会把Kp先减半,然后慢慢往上加,直到电流响应出现轻微过冲,再回调10%。Ki同理。别迷信公式,示波器才是最好的老师。

4.5 力矩环与电流环的关系

力矩环在电流环的外面。力矩环的输出,就是电流环的iq参考值。

整个控制链路是这样的:

  1. 力矩指令 → 力矩环(通常是PI或前馈+PI)
  2. 力矩环输出 iq_ref → 电流环
  3. 电流环输出 Vq → 反Park + SVPWM → 逆变器 → 电机

力矩环的带宽通常比电流环低5~10倍。比如电流环带宽2kHz,力矩环带宽就设在200~400Hz。这样内外环不会打架。

控制环 带宽范围 主要作用 输入 输出
电流环 1kHz ~ 5kHz 快速跟踪电流指令 id_ref, iq_ref Vd, Vq
力矩环 200Hz ~ 1kHz 将力矩指令转为电流指令 Te_ref iq_ref
速度环 50Hz ~ 200Hz 速度闭环 ω_ref Te_ref
位置环 10Hz ~ 50Hz 位置闭环 θ_ref ω_ref

你看,力矩环其实就是一个转换器。它把抽象的力矩指令,变成了物理上可执行的电流指令。我在做协作机器人关节时,力矩环的PI参数直接决定了关节的柔顺性——调得太硬,碰到人就反弹;调得太软,响应又跟不上。

4.6 工程实现中的关键细节

最后聊几个实际项目中容易忽略的点:

  • 电流采样偏置校准:ADC总有零偏,不校准的话,id和iq会有直流偏置,导致力矩波动。我习惯上电后先采100次电流取平均,作为偏置值。
  • 旋变/编码器对齐:Park变换需要准确的转子位置。如果编码器零位和电机电气零位没对齐,id和iq会耦合,力矩控制就乱了。
  • 死区补偿:逆变器的死区时间会导致电压误差,尤其在低速轻载时。我一般用基于电流极性的死区补偿,简单有效。
  • 过调制处理:当电压指令超过母线电压能提供的最大值时,需要做限幅和过调制处理。否则电流环会饱和,响应变差。

一句话总结: 电流环是力矩控制的基石。把电流环调好了,力矩环、速度环、位置环才有立足之地。别急着往上堆算法,先把电流环的每一个细节吃透。