
双三相SVPWM(二矢量)与双三相空间电压矢量调制及其在电机控制中的应用
双三相SVPWM这玩意儿乍一听挺唬人,实际就是给那些有六个绕组的电机准备的"组合拳"。传统三
相SVPWM大家应该都玩过,现在相当于左手画圆右手画方——得同时处理两个平面(α-β和z1-z2)。举个不恰
当的例子,就像在火锅里同时涮毛肚和脑花,得掌握好火候别串味。
先看坐标变换这关。六相电流往两个坐标系怼的时候,得用扩展版Clarke变换:
```python
def extended_clarke(ia, ib, ic, ix, iy, iz):
alpha = 0.5*(ia - ib - ic + ix - iy - iz)
beta = (np.sqrt(3)/2)*(ia + ib - ic - ix - iy + iz)
z1 = 0.5*(ia + ib + ic - ix - iy - iz)
z2 = (np.sqrt(3)/2)*(ia - ib + ic + ix - iy + iz)
return alpha, beta, z1, z2
```
这个变换矩阵暗藏玄机——前三行处理传统三相部分,后三行专门对付新增的三个绕组。注意z轴分
量通常不做调制,直接甩给闭环控制处理,就像吃鱼只取鱼身肉,鱼头留着熬汤。
空间矢量分区是重头戏。双三相系统有64个基本矢量,但咱们用二矢量法只需要锁定最近的俩。看
这段空间分区的骚操作:
```matlab
function sector = get_sector(V_alpha, V_beta)
angle = mod(atan2(V_beta, V_alpha), 2*pi);
sector = floor(angle/(pi/3)) + 1;
if sector > 6
sector = 1;
end
end
```
这代码把360度切成6个扇区,每个扇区60度。实际调试时遇到过坑——某次把floor改成ceil,结果矢
量方向全反,电机直接跳起机械舞,现场堪比夜店现场。
占空比计算是精髓所在。伏秒平衡方程得这么玩:
```python