坐标变换理论(上):Clark与Park变换
坐标变换,说白了就是换个角度看问题。你想想看,电机里三个绕组通的是三相正弦电流,转子却在转。我们做控制的,总不能盯着三个正弦波去算吧?太累了。所以就有了Clark和Park这两位老兄的变换,把问题从静止的三相坐标系,搬到了旋转的两相坐标系里。
我个人习惯把坐标变换比作「翻译官」。它把电机里复杂的电磁关系,翻译成我们控制器能轻松处理的直流信号。嗯,今天我们就来好好聊聊这两位翻译官。
1. Clark变换:从ABC到αβ
Clark变换,也叫3/2变换。它的任务是把三相静止的ABC坐标系,映射到两相静止的αβ坐标系上。α轴和A轴重合,β轴超前α轴90度。
为什么要这么做?因为三相系统有冗余。你想想看,Ia + Ib + Ic = 0(星形连接且无中线),实际上只有两个自由度。Clark变换就是去掉这个冗余,把三个变量变成两个。
1.1 等幅值变换 vs 等功率变换
这里有个坑,我刚开始学的时候也迷糊过。Clark变换有两种形式:等幅值变换和等功率变换。区别在于变换矩阵前面的系数。
| 变换类型 | 变换矩阵(前两行) | 特点 |
|---|---|---|
| 等幅值 | 系数 = 2/3 | 变换后αβ电压幅值与ABC相电压幅值相等 |
| 等功率 | 系数 = √(2/3) | 变换前后功率守恒,常用于功率计算 |
1.2 公式推导
我们直接看等幅值变换的公式。假设三相电流为 Ia, Ib, Ic,那么αβ轴电流为:
Iα = Ia
Iβ = (Ia + 2*Ib) / √3
等等,这个公式看着有点奇怪?其实它是从矩阵形式简化来的。完整的矩阵形式是这样的:
[ Iα ] [ 1, -1/2, -1/2 ] [ Ia ]
[ ] = [ ] [ ]
[ Iβ ] [ 0, √3/2, -√3/2 ] [ Ib ]
[ Ic ]
因为 Ia + Ib + Ic = 0,所以 Ic = -Ia - Ib,代入化简就能得到上面的简化公式。我在项目里写代码时,为了省一个ADC采样通道(不采Ic),就用这个简化公式,效果完全一样。
2. Park变换:从αβ到dq
Clark变换完了,我们得到了两个正交的正弦波(Iα, Iβ)。但正弦波还是交流量,PI调节器对交流量的跟踪效果并不好,存在稳态误差。怎么办?
Park变换就是来解决这个问题的。它把静止的αβ坐标系,旋转起来,变成与转子磁链同步旋转的dq坐标系。这样一来,基波分量就变成了直流量。
2.1 旋转的数学本质
Park变换本质上是一个旋转矩阵。假设转子位置角为θ(电角度),那么:
Id = Iα * cos(θ) + Iβ * sin(θ)
Iq = -Iα * sin(θ) + Iβ * cos(θ)
你看,Id和Iq就是直流量了。Id代表励磁分量,Iq代表转矩分量。这就是FOC能像控制直流电机一样控制永磁同步电机的关键。
3. 反Park变换:从dq回到αβ
反Park变换,顾名思义,就是Park变换的逆过程。我们在dq坐标系下算出了想要的电压指令 Ud, Uq,但最终要给电机施加的是三相电压。所以需要先反Park到αβ,再反Clark到ABC。
公式很简单,就是Park变换矩阵的逆(因为旋转矩阵是正交矩阵,逆等于转置):
Uα = Ud * cos(θ) - Uq * sin(θ)
Uβ = Ud * sin(θ) + Uq * cos(θ)
嗯,这里要注意符号。不同教材对Park变换的定义可能差一个负号,导致反Park的符号也不同。我的经验是:以电机能正常转动为准,如果发现电机反转或者电流失控,先检查Park/反Park的符号是否一致。
4. 知识体系总览
下面这张图,我把整个坐标变换的流程和关系画出来了。你对照着看,思路会更清晰。
5. 避坑指南与个人经验
- 角度对齐: 编码器安装时,Z脉冲与A相绕组的对齐方式,决定了θ的零点。我建议上电后先做一次角度自校准,否则Park变换出来的Id/Iq全是乱的。
- 浮点精度: 在MCU里做三角函数运算,如果不开FPU,速度会很慢。我一般用查表法或者CORDIC算法,或者直接用IQmath库。
- 符号一致性: 不同论文对Park变换的定义,Id和Iq的公式可能差一个负号。我的做法是:先按一种定义写好,然后给电机一个正方向的q轴电流,看电机是否正转。如果反转,就把Iq取反,或者把Park变换的符号改一下。
- 反Park的陷阱: 反Park变换输出的Uα, Uβ,最终要经过SVPWM生成占空比。如果Uα, Uβ的幅值超过了直流母线电压的1/√3倍,就会过调制。我一般会在反Park之后加一个限幅,防止SVPWM饱和。