3. 坐标变换理论(上):Clark变换(三相静止到两相静止)的数学推导与物理意义

好,咱们正式开始啃坐标变换这块硬骨头。

说实话,很多做FOC的朋友,一开始都被这堆矩阵和公式吓住了。我当年也是。但后来我发现,只要搞懂了Clark变换,后面的Park变换就是顺水推舟的事。今天咱们就把Clark变换彻底讲透。

3.1 为什么要做Clark变换?

你想想看,电机里通的是三相交流电,A、B、C三相相差120度。但问题是,这三相之间是耦合的,控制起来很麻烦。

我打个比方:你面前有三个人同时拉一辆车,每个人拉的方向都不一样。你想让车往正前方走,得同时协调三个人的力气。是不是很头疼?

Clark变换要做的,就是把这三个人的合力,分解成两个互相垂直的方向上的力。一个水平方向,一个垂直方向。这样控制就简单多了。

说白了,就是把三相静止坐标系(ABC)下的物理量,映射到两相静止坐标系(αβ)下。α轴和β轴互相垂直,解耦了。

核心思想: 三相系统 → 两相系统,保持磁动势不变。

3.2 数学推导:从ABC到αβ

咱们先假设三相电流是平衡的:

iA + iB + iC = 0

这是理想情况。实际电机里,三相电流之和不一定严格为零,但咱们先按理想情况推,后面再处理零序分量。

Clark变换的矩阵形式是这样的:

[ iα ]   [ 1    -1/2   -1/2 ] [ iA ]
[ iβ ] = [ 0   √3/2  -√3/2 ] [ iB ]
[ i0 ]   [ 1/2   1/2    1/2 ] [ iC ]

嗯,这个矩阵看着有点吓人。咱们拆开来看。

α轴分量:

iα = iA - (1/2)*iB - (1/2)*iC

这个公式的物理意义是什么?

α轴和A轴是重合的。所以iA直接贡献给iα。而B相和C相在α轴上的投影,正好是它们各自的一半,方向相反。所以是减去。

β轴分量:

iβ = (√3/2)*iB - (√3/2)*iC

β轴和A轴垂直。所以iA在β轴上没有分量。B相和C相在β轴上的投影,大小相等,方向相反。

零序分量:

i0 = (1/3)*(iA + iB + iC)

对于三相平衡系统,i0 = 0。但在实际系统中,如果存在零序电流(比如电机中性点接地),这个分量就不能忽略。

我的经验: 在实际项目中,我一般会保留零序分量。虽然大多数时候它很小,但万一电机出现单相接地故障,零序电流会突然增大。保留它,可以帮你做故障诊断。

3.3 等幅值变换 vs 等功率变换

这里有个坑,很多人会踩。

Clark变换有两种常用的形式:等幅值变换等功率变换

变换类型 变换矩阵系数 特点
等幅值变换 2/3 变换前后,电流幅值不变
等功率变换 √(2/3) 变换前后,功率不变

我上面给的矩阵,是等幅值变换的版本。为什么?

因为在实际调试中,我习惯用等幅值变换。这样我在示波器上看电流波形时,幅值直接对应,不用换算。心里踏实。

但如果你做的是功率计算,比如算电机的输入功率,那就得用等功率变换。否则算出来的功率会差一个系数。

注意: 我曾经在一个项目里,用了等幅值变换的电流去做功率计算,结果算出来的效率超过100%。查了两天才发现是变换系数的问题。所以,电流环用等幅值,功率环用等功率,或者统一用一种,但记得换算。

3.4 物理意义:磁动势不变

Clark变换的核心,是保证变换前后,电机气隙中的合成磁动势不变。

什么意思?

三相绕组通入三相电流,会产生一个旋转的磁动势。两相绕组通入两相电流,也要产生完全相同的磁动势。这样,电机转子的受力情况才不变。

所以,Clark变换不是随便找个矩阵乘一下。它是基于磁动势等效的原则推导出来的。

我画个图帮你理解:

三相绕组(ABC):
    A相:在0°方向产生磁动势
    B相:在120°方向产生磁动势
    C相:在240°方向产生磁动势

两相绕组(αβ):
    α相:在0°方向产生磁动势
    β相:在90°方向产生磁动势

只要保证这两个系统产生的合成磁动势大小和方向都相同,电机就会表现出完全一样的特性。

3.5 逆Clark变换

有正变换,就有逆变换。从αβ回到ABC:

[ iA ]   [ 1      0      1 ] [ iα ]
[ iB ] = [ -1/2  √3/2   1 ] [ iβ ]
[ iC ]   [ -1/2 -√3/2   1 ] [ i0 ]

这个逆变换在SVPWM里会用到。你把αβ电压算出来后,得变回三相电压,才能去驱动逆变器。

小技巧: 实际代码实现时,我一般不会直接用矩阵乘法。因为乘法和加法太多,浪费算力。我会把公式展开,写成标量运算。比如:

// 正变换
iAlpha = iA;
iBeta = (iB - iC) * 0.8660254f;  // √3/2 ≈ 0.866

// 逆变换
iA = iAlpha;
iB = -0.5f * iAlpha + 0.8660254f * iBeta;
iC = -0.5f * iAlpha - 0.8660254f * iBeta;

这样快很多,而且容易调试。

3.6 实际应用中的注意事项

  1. 采样同步: Clark变换的输入是三相电流的瞬时值。这三相电流必须在同一时刻采样。如果A相和B相采样时间差了几微秒,变换结果就会引入误差。
  2. 零点漂移: 电流传感器的零点漂移,会直接反映在i0分量上。我习惯在电机启动前,先采集一次零漂值,然后在变换时减去。
  3. 数值精度: √3/2这个系数,在定点DSP上要注意精度。我一般用Q15格式,把0.8660254转成整数。

避坑指南: 我曾经在一个项目里,用了float32做Clark变换,结果发现iβ的波形有毛刺。查了半天,发现是ADC采样值有噪声,经过√3/2放大后,噪声也被放大了。后来我在变换前加了个一阶低通滤波器,问题解决。

3.7 小结

Clark变换,说白了就是把三相问题变成两相问题。数学上不复杂,但物理意义很重要。

记住三点:

  • 变换矩阵的系数(2/3还是√(2/3))决定了你是等幅值还是等功率
  • 零序分量i0在平衡系统中为0,但不要忽略它
  • 逆变换在SVPWM中会用到,提前准备好

下一节,咱们讲Park变换。那才是真正把交流变直流的魔法。到时候你就知道,为什么FOC能像控制直流电机一样控制交流电机了。