第二节 转矩波动数学模型:傅里叶级数表达与谐波分析

好,咱们接着聊。上一节我讲了转矩波动的基本概念,说白了就是电机转起来不那么平顺。那怎么定量描述这种不平顺呢?这就得请出傅里叶级数这个老朋友了。

我个人习惯,遇到周期性波动的问题,第一反应就是傅里叶展开。为什么?因为电机转一圈,转矩波动基本上也是周期性重复的。你想想看,齿槽效应、磁链谐波、电流谐波,这些干扰源都是跟着转子位置走的。一圈一圈转下来,波动模式几乎一样。

2.1 基于傅里叶级数的转矩波动数学表达

假设电机稳定运行在某个转速,电磁转矩 \( T_e \) 可以写成平均转矩加上波动项:

T_e(θ) = T_avg + Σ A_n · sin(n·θ + φ_n)

这里 \( n \) 是谐波阶次,\( A_n \) 是幅值,\( φ_n \) 是相位。\( θ \) 是转子电角度。

嗯,这里要注意:\( n \) 不一定是整数。对于永磁同步电机,齿槽转矩的基波频率通常是槽数和极数的最小公倍数。我在做一台 12 槽 8 极电机时,齿槽转矩的基波阶次就是 24。第一次看到这个数我还愣了一下,后来才反应过来——每转一圈,齿槽转矩要波动 24 次。

更完整的表达式,我会把转矩波动拆成两部分:

  1. 与转子位置相关的波动:齿槽转矩、磁链谐波引起的转矩脉动
  2. 与电流相关的波动:电流谐波、逆变器死区效应引起的转矩脉动

把它们合在一起,就是:

T_ripple(θ) = Σ_{k=1}^{∞} T_k · sin(k·θ + ψ_k)

这个级数理论上可以取到无穷项,但实际工程中,我们只关心幅值较大的前几次谐波。我一般取到 12 次就差不多了,再高次的幅值已经小到可以忽略。

关键点:傅里叶级数把复杂的转矩波动分解成了不同频率的正弦波叠加。每个正弦波对应一个谐波阶次,幅值越大,影响越明显。

2.2 不同谐波阶次对转矩的影响分析

不同阶次的谐波,对电机性能的影响完全不同。我根据项目经验,把常见的谐波阶次和影响整理了一下:

谐波阶次 n 主要来源 对转矩的影响 典型幅值占比
1 次(基波) 磁链不对称、电流偏置 产生平均转矩,波动很小 80%~95%
2 次 逆变器死区、电流传感器偏置 引起 2 倍频转矩脉动 2%~8%
6 次 5、7 次电流谐波相互作用 最常见的转矩脉动频率 3%~10%
12 次 11、13 次电流谐波 高频振动,可能引发噪声 1%~3%
齿槽基波 齿槽效应 定位力矩,低速时明显 0.5%~5%

我曾经在一个伺服项目里遇到过 6 次谐波特别大的情况。电机跑到 3000 rpm 时,转矩波动达到了额定转矩的 12%。一开始我以为是电流环参数没调好,折腾了两天。后来用示波器抓了相电流波形,发现 5 次和 7 次谐波含量很高。这才意识到是逆变器死区时间设置有问题。

为什么会这样?因为 5 次谐波电流和基波磁场相互作用,会产生 6 次转矩脉动。7 次谐波也一样。两个加起来,6 次分量就特别突出。

我的经验:如果你发现转矩波动频率是基频的 6 倍,优先检查电流谐波。如果是齿槽频率,那就得从电机本体设计入手了。

2.3 谐波阶次与机械系统的耦合

这里要特别提醒一点:谐波阶次不仅要看电气角度,还要考虑机械角度。电气上的 6 次谐波,对应到机械轴上是多少?

公式很简单:

f_mech = n · f_elec / P

其中 \( P \) 是极对数。比如一台 4 极电机(P=2),电气 6 次谐波对应的机械频率是 3 倍基频。如果这个频率刚好落在机械系统的共振点上,那就麻烦了。

我记得有一次做电动工具项目,客户反映电机在某个转速下噪音特别大。我一看频谱,6 次谐波幅值并不高,但机械系统在那个频率刚好有共振。最后没办法,只能调整控制策略,在那个转速区间加了陷波滤波器。

避坑指南:不要只看转矩波动的幅值,还要看频率。我曾经吃过这个亏——以为幅值小就没事,结果机械共振放大了振动。现在我做仿真时,一定会把机械传递函数也加进去。

2.4 如何在 Simulink 中建立转矩波动模型

说完了理论,咱们看看怎么在 Simulink 里实现。我个人习惯用 Fcn 模块 或者 MATLAB Function 模块 来写傅里叶级数。

下面是一个简单的示例:

function T_ripple = torque_ripple_model(theta, harmonic_order, amplitude, phase)
    % theta: 转子电角度 (rad)
    % harmonic_order: 谐波阶次向量,例如 [6, 12, 18]
    % amplitude: 对应幅值向量
    % phase: 对应相位向量
    
    T_ripple = 0;
    for i = 1:length(harmonic_order)
        n = harmonic_order(i);
        A = amplitude(i);
        phi = phase(i);
        T_ripple = T_ripple + A * sin(n * theta + phi);
    end
end

把这个函数封装成一个 MATLAB Function 模块,输入是转子位置,输出就是转矩波动。然后叠加到平均转矩上,就能模拟出带波动的电磁转矩了。

嗯,这里有个小技巧:实际项目中,谐波参数通常来自 有限元仿真 或者 实验测试。我一般会先跑一遍有限元,提取出转矩波形的 FFT 结果,然后把前几次主要谐波的幅值和相位填进去。这样模型精度很高,仿真结果和实测能对得上。

2.5 小结

这一节我们讲了:

  • 转矩波动可以用傅里叶级数表示为不同阶次正弦波的叠加
  • 6 次谐波是最常见的转矩脉动来源,通常和电流谐波有关
  • 齿槽谐波的阶次由电机极槽配合决定
  • 谐波频率要和机械系统一起考虑,避免共振
  • Simulink 里用 MATLAB Function 模块可以方便地实现转矩波动模型

下一节我会讲怎么用前馈补偿的方法来抑制这些谐波。说白了,就是「以毒攻毒」——你产生一个反向的波动,把原来的波动抵消掉。这个方法我在好几个项目里都用过,效果不错。