2. 空间矢量基础:Clark变换与Park变换回顾,电压空间矢量的概念

好,咱们进入第二章。这一章是FOC的数学基础,说白了就是搞明白两件事:怎么把三相电流拆成两个正交分量,以及怎么用空间矢量的视角看电压。

我记得刚入行那会儿,看到Clark和Park这两个名字,第一反应是“又来了,又是数学推导”。但后来在项目里调了几次波形,才真正体会到——没有这两个变换,FOC根本转不起来。

2.1 为什么需要坐标变换?

先问个问题:三相电机有三相绕组,电流是正弦波,互相差120度。你直接去控制这三相电流,能控吗?

能,但很麻烦。因为三相是耦合的,A相电流变化会影响B相和C相。而且转矩和磁通是混在一起的,你分不清哪个电流分量在出力,哪个在励磁。

所以我们需要解耦。把三相静止坐标系(abc)下的交流量,变成两相旋转坐标系(dq)下的直流量。这样,转矩和磁通就分开了,控制起来就像调直流电机一样简单。

这个解耦过程,分两步走:

  1. Clark变换:abc → αβ(三相静止 → 两相静止)
  2. Park变换:αβ → dq(两相静止 → 两相旋转)

核心思想:变换本身不改变物理本质,只是换了个坐标系看问题。就像你站在地上看旋转的风扇,和坐在风扇上看地面,看到的运动轨迹不同,但风扇还是那个风扇。

2.2 Clark变换:从abc到αβ

Clark变换的目标是:把三相电流 ia、ib、ic 投影到两相正交的α-β坐标系上。

数学表达式很简单:

iα = i_a
iβ = (1/√3) * (i_a + 2*i_b)

等一下,为什么 ic 没出现?因为三相电流满足 ia + ib + ic = 0(星形连接,中性点不接地),所以 ic 可以由前两个推出来。

写成矩阵形式更清楚:

[ iα ]   [ 1      -1/2    -1/2  ] [ i_a ]
[ iβ ] = [ 0      √3/2   -√3/2 ] [ i_b ]
[ i0 ]   [ 1/2    1/2     1/2   ] [ i_c ]

这里 i0 是零序分量,在平衡系统中为0,一般不管它。

我个人的习惯:在实际代码里,我通常用等幅值变换(系数2/3版本),这样变换后的αβ幅值和三相幅值一致,调试时看波形更直观。如果你用等功率变换,幅值会变,注意换算。

2.3 Park变换:从αβ到dq

Clark变换之后,我们得到了两个正交的正弦波 iα 和 iβ。但正弦波还是交流量,不好控。

Park变换就是干这个的——把静止的αβ坐标系,旋转起来。旋转角速度等于电角速度 ωe,旋转角度 θe 由编码器或观测器提供。

公式:

i_d =  iα * cos(θe) + iβ * sin(θe)
i_q = -iα * sin(θe) + iβ * cos(θe)

变换之后,id 和 iq 就变成了直流量。其中:

  • id:励磁分量,控制磁通
  • iq:转矩分量,控制力矩

你想想看,两个直流量,用PI控制器就能轻松跟踪。这就是FOC的精髓。

我曾经踩过的坑:Park变换的角度 θe 必须和电机转子位置严格对齐。有一次我编码器安装时偏了5度,结果id和iq一直控不准,电机发热严重。后来用示波器抓了反电动势波形,才发现是角度偏了。所以,角度校准是FOC调试的第一步,千万别跳过。

2.4 电压空间矢量的概念

好,现在我们把电流变换到了dq坐标系。但控制最终要落实到电压上——你得给逆变器发PWM波,让电机两端产生正确的电压。

这里就引出了电压空间矢量的概念。

什么叫电压空间矢量?

简单说:三相逆变器有6个开关管,可以组合出8种开关状态(6个有效矢量 + 2个零矢量)。每种状态对应一个合成电压矢量,在αβ平面上画出来,就是六个方向、幅值相等的矢量,间隔60度。

这六个矢量围成一个正六边形。你想要的任意方向、任意大小的电压矢量,都可以用这六个矢量合成出来——这就是SVPWM(空间矢量脉宽调制)的基本原理。

一句话总结:电压空间矢量,就是把三相逆变器的开关状态,映射到αβ平面上的一个旋转矢量。你控制这个矢量的幅值和角度,就控制了电机的电压。

2.5 变换与空间矢量的关系图

下面这张图,把整个变换链路和空间矢量的关系画清楚了。我建议你多看几遍,把每一步的物理意义搞明白。

FOC坐标变换与电压空间矢量关系图 三相静止 abc i_a, i_b, i_c Clark 两相静止 αβ i_α, i_β Park 两相旋转 dq i_d, i_q (直流) PI 控制器 V_d*, V_q* 反 Park V_α*, V_β* SVPWM 电压空间矢量合成 三相逆变器 6路PWM输出 PMSM 电机 三相电流反馈 电流采样反馈 电压空间矢量说明 • 三相逆变器有8种开关状态:6个有效矢量(V1~V6)+ 2个零矢量(V0, V7) • 有效矢量幅值 = 2/3 * Vdc,方向间隔60°,围成正六边形 • 任意目标电压矢量由相邻两个有效矢量 + 零矢量合成(伏秒平衡) • SVPWM的调制比最高可达 0.907(比SPWM高15%) • 电压空间矢量 = 三相电压在αβ平面上的合成矢量,旋转角速度 = 电角速度 —— 控制电压空间矢量的幅值和角度,就控制了电机的电压和转矩

2.6 变换的逆过程

实际控制中,我们不光要正向变换(abc→αβ→dq),还要反向变换(dq→αβ→abc)。

因为PI控制器输出的是Vd*和Vq*(电压指令),需要先反Park变成Vα*和Vβ*,再通过SVPWM合成出三相电压。

反Park公式:

Vα* = Vd* * cos(θe) - Vq* * sin(θe)
Vβ* = Vd* * sin(θe) + Vq* * cos(θe)

你看,和正变换就差一个符号。代码实现时,我习惯把正反Park写成一个函数,用参数控制方向,省得写两遍。

2.7 常见问题与避坑

问题 原因 解决方法
id和iq控不稳 角度θe不准或延迟 校准编码器零位,补偿角度采样延迟
电机发热严重 id不为0,励磁过大 检查id参考值,表贴式电机id*=0
转矩输出不足 SVPWM调制比受限 检查直流母线电压,考虑过调制
电流波形畸变 Clark/Park变换系数错误 核对等幅值/等功率变换系数

我再强调一次:变换系数一定要和你的电流采样对齐。我见过有人用了等功率变换的系数,但电流采样是等幅值标定的,结果id和iq一直对不上,查了两天才发现。建议在代码里把变换矩阵写成常量,调试时用示波器抓αβ波形验证。

2.8 本章小结

这一章我们干了三件事:

  • Clark变换:把三相电流变成两相正交电流(αβ)
  • Park变换:把静止的两相电流变成旋转的两相直流(dq)
  • 电压空间矢量:理解了逆变器开关状态如何映射到αβ平面上的电压矢量

这些变换是FOC的数学骨架。你不需要背公式,但一定要理解为什么这么做——说白了,就是为了把交流量变成直流量,把耦合变成解耦,把复杂控制变成简单PI。