3. Clark变换的逆变换实现

任务目标

实现逆Clark变换,将两相静止坐标系(α-β轴)上的电流分量还原为三相静止坐标系(A-B-C轴)电流,并验证变换与逆变换的互逆性。

数学基础

逆Clark变换采用等幅值约束(系数2/3),变换矩阵为:

|Ia|   | 1      0     | |Iα|
|Ib| = |-1/2   √3/2  | |Iβ|
|Ic|   |-1/2  -√3/2  |

该变换是Clark变换矩阵(3×2)的左逆,满足正变换后接逆变换可恢复原始三相电流。

核心代码实现

import numpy as np

def clark_transform(ia, ib, ic):
    """等幅值Clark变换:三相→两相静止坐标系"""
    i_alpha = (2/3) * (ia - 0.5*ib - 0.5*ic)
    i_beta  = (2/3) * ((np.sqrt(3)/2)*ib - (np.sqrt(3)/2)*ic)
    return i_alpha, i_beta

def inverse_clark_transform(i_alpha, i_beta):
    """逆Clark变换:两相静止坐标系→三相电流"""
    ia = i_alpha
    ib = -0.5*i_alpha + (np.sqrt(3)/2)*i_beta
    ic = -0.5*i_alpha - (np.sqrt(3)/2)*i_beta
    return ia, ib, ic

# 验证:三相平衡电流 → Clark → 逆Clark → 还原
theta = np.pi/6  # 30度相位
I_mag = 5.0      # 电流幅值

# 原始三相电流
ia_orig = I_mag * np.cos(theta)
ib_orig = I_mag * np.cos(theta - 2*np.pi/3)
ic_orig = I_mag * np.cos(theta + 2*np.pi/3)

# 正变换
i_alpha, i_beta = clark_transform(ia_orig, ib_orig, ic_orig)

# 逆变换还原
ia_rec, ib_rec, ic_rec = inverse_clark_transform(i_alpha, i_beta)

# 打印结果
print(f"原始三相电流: Ia={ia_orig:.4f}, Ib={ib_orig:.4f}, Ic={ic_orig:.4f}")
print(f"Clark变换后:  Iα={i_alpha:.4f}, Iβ={i_beta:.4f}")
print(f"逆变换还原:   Ia={ia_rec:.4f}, Ib={ib_rec:.4f}, Ic={ic_rec:.4f}")

# 误差检查
err_a = abs(ia_rec - ia_orig)
err_b = abs(ib_rec - ib_orig)
err_c = abs(ic_rec - ic_orig)
max_err = max(err_a, err_b, err_c)
print(f"\n最大误差: {max_err:.2e}")
print("验证通过" if max_err < 1e-10 else "验证失败")

运行与验证

运行方式:保存为 inverse_clark.py,执行 python inverse_clark.py(需安装NumPy)。

预期输出:逆变换还原的三相电流与原始值一致,最大误差在10⁻¹⁵量级(浮点精度范围内),最终打印“验证通过”。

验证逻辑:以30°相位、5A幅值的平衡三相电流为输入,经正变换得到Iα、Iβ后,再经逆变换还原。若还原值与原始值误差小于1e-10,则证明逆变换实现正确。

关键说明

  • 本实现采用等幅值约束,正变换含系数2/3,逆变换不含额外系数,两者互逆。
  • 若采用等功率约束,正变换系数为√(2/3),逆变换矩阵需相应调整,但互逆性验证方法相同。
  • 实际FOC应用中,逆Clark变换通常用于从α-β轴电压重构三相PWM占空比,输入为电压而非电流,但数学形式完全一致。