4、谐波注入法(二):基于12次谐波注入的转矩脉动抑制原理与仿真

好,咱们接着聊谐波注入法。上一节我讲了6次谐波注入的原理,说白了就是在电流环里加一个反向的6次谐波,去抵消电机本体产生的6次转矩脉动。但实际做项目时你会发现,光靠6次谐波往往不够。为什么?因为电机里除了6次,还有12次、18次这些高次谐波在捣乱。

今天我就重点说说12次谐波注入。我个人习惯把6次和12次放在一起处理,效果会好很多。你想想看,6次谐波压下去了,12次谐波就冒出来了,就像打地鼠一样。所以这一节,咱们专门收拾这个12次谐波。

4.1 12次转矩脉动的来源

先搞清楚一个问题:12次转矩脉动从哪来的?

嗯,这里要注意。12次谐波主要来自两个方面:

  • 磁链谐波中的12次分量:永磁体产生的磁场不是完美的正弦波,里面含有5次、7次、11次、13次等谐波。这些谐波和基波电流相互作用,就会产生12次转矩脉动。具体来说,5次和7次磁链谐波会产生6次脉动,11次和13次磁链谐波会产生12次脉动。
  • 逆变器非线性:死区效应、管压降这些因素,也会引入额外的谐波,其中就包括12次分量。我在一个项目中就遇到过,明明电机本体设计得很好,但实测转矩脉动就是降不下来,最后发现是逆变器死区时间设得太大了。

说白了,12次转矩脉动是高频段的"钉子户"。你把它拔掉,系统的高频振动和噪声就能明显改善。

4.2 12次谐波注入的数学模型

有了上一节的基础,12次谐波注入的原理其实很好理解。我们同样需要在d-q轴电流指令中注入一个12次谐波分量。

假设基波电流指令为:

i_d* = 0  (MTPA控制时不为0,这里简化)
i_q* = I_q0

那么注入12次谐波后的电流指令为:

i_d* = I_d6 * sin(6θ_e + φ_d6) + I_d12 * sin(12θ_e + φ_d12)
i_q* = I_q0 + I_q6 * cos(6θ_e + φ_q6) + I_q12 * cos(12θ_e + φ_q12)

这里我解释一下为什么q轴用cos而d轴用sin。这其实和转矩方程有关。转矩脉动主要是由q轴电流和磁链的交叉项产生的。通过选择合适的相位关系,可以让注入的谐波电流产生的转矩正好抵消原有的脉动。

我在实际调试时,一般会先调6次谐波的幅值和相位,等6次脉动压下去之后,再调12次的。这样分层调试,思路清晰,不容易乱。

4.3 12次谐波注入的幅值与相位确定

这是最核心的部分。12次谐波的幅值和相位怎么定?

有两种方法:

  1. 离线标定法:在台架上测出不同工况下的转矩脉动频谱,然后查表得到注入的幅值和相位。这个方法比较可靠,但工作量很大。我记得有一次做项目,光标定就花了两周时间,各种转速、各种负载都要测一遍。
  2. 在线自适应法:通过观测器实时检测转矩脉动中的12次分量,然后自动调整注入的幅值和相位。这个方法更智能,但对算法的实时性要求高。

我个人更推荐第二种方法,尤其是在产品迭代阶段。因为电机的一致性不可能完美,每台电机的谐波特性都有差异。离线标定只能覆盖有限工况,而在线自适应可以实时补偿。

下面我给出一个简单的自适应算法框架:

// 12次谐波注入自适应算法(伪代码)
// 输入:转速ω_m,转矩指令T_e*
// 输出:注入幅值I_12,注入相位φ_12

// 1. 提取转矩脉动中的12次分量
T_12 = BandpassFilter(T_e, 12 * ω_m);  // 带通滤波器

// 2. 计算幅值和相位(使用锁相环思想)
I_12_mag = sqrt(T_12_d^2 + T_12_q^2) * K_mag;  // K_mag为增益系数
φ_12 = atan2(T_12_q, T_12_d);

// 3. 限幅保护
if (I_12_mag > I_12_max) {
    I_12_mag = I_12_max;
}

// 4. 更新注入值
I_d12_ref = I_12_mag * sin(12 * θ_e + φ_12);
I_q12_ref = I_12_mag * cos(12 * θ_e + φ_12);
注意:自适应算法的收敛速度要控制好。增益系数K_mag设得太大,系统容易振荡;设得太小,收敛太慢。我一般从0.01开始试,逐步增大,直到找到临界值再往回退一点。

4.4 仿真验证

光说不练假把式。咱们来看看仿真结果。

仿真条件:

参数 数值
电机极对数 4
额定转速 1500 rpm
额定转矩 10 N·m
开关频率 10 kHz
死区时间 2 μs

仿真分三步走:

  1. 不注入任何谐波:观察原始转矩脉动。可以看到6次和12次分量都很明显,6次幅值约0.8 N·m,12次幅值约0.3 N·m。
  2. 只注入6次谐波:6次脉动降到0.1 N·m以下,但12次脉动反而变大了,变成0.4 N·m。这就是我之前说的"打地鼠"现象。
  3. 同时注入6次和12次谐波:6次和12次脉动都降到0.05 N·m以下,总转矩脉动从原来的8%降到了1%以内。

关键结论:6次和12次谐波注入是互补的。只做6次,12次会放大;两个一起做,才能把转矩脉动真正压下去。

4.5 工程实现中的坑

做工程嘛,总会遇到各种意想不到的问题。我分享几个亲身踩过的坑:

  • 电流环带宽不够:12次谐波的频率是基波的12倍。在高速工况下,比如基频200 Hz,12次谐波就是2400 Hz。如果电流环带宽只有1000 Hz,那根本跟踪不上。我曾经在一个项目里,转速一高谐波注入就失效了,查了半天才发现是电流环带宽设得太低。
  • 采样噪声放大:12次谐波注入需要精确的转子位置信息。如果位置传感器有噪声,注入的谐波反而会引入额外的脉动。我建议在位置信号上加一个低通滤波器,截止频率设在基频的20倍左右。
  • 饱和问题:注入谐波会增大电流峰值。如果逆变器容量有限,可能会导致过流保护动作。所以一定要加限幅,而且限幅值要留有余量。
小技巧:调试时可以用示波器观察相电流的波形。如果注入的谐波正确,相电流会呈现"马鞍形"的调制波形。如果波形畸变得厉害,说明相位或者幅值没调对。

4.6 总结

好了,这一节的内容就这么多。12次谐波注入的原理和6次类似,但频率更高,对硬件和算法的要求也更高。在实际项目中,我建议把6次和12次谐波注入做成一个模块,统一管理。这样代码结构清晰,调试也方便。

下一节我会讲更高次的谐波注入,以及如何用迭代学习控制来自动优化注入参数。到时候咱们再聊。