3. PMSM数学模型推导
任务目标
建立表贴式永磁同步电机(PMSM)在abc三相静止坐标系下的电压方程与磁链方程,并通过Clarke变换将其转换到αβ两相静止坐标系,为后续FOC控制中的坐标变换与电流环设计提供数学基础。
PMSM在abc坐标系下的数学模型
假设电机为理想表贴式结构(Ld = Lq = Ls),转子永磁体在定子绕组中产生的反电动势为正弦分布,忽略磁路饱和、铁损与齿槽效应。三相定子绕组的电压方程由电阻压降与磁链变化率两部分构成:
电压方程(矩阵形式):
[u_a] [R_s 0 0 ] [i_a] [ψ_a]
[u_b] = [0 R_s 0 ] [i_b] + d/dt[ψ_b]
[u_c] [0 0 R_s] [i_c] [ψ_c]
磁链方程:定子总磁链由电枢反应磁链(自感与互感产生)和永磁体励磁磁链两部分叠加:
[ψ_a] [L_s M M ] [i_a] [cos(θ_e) ]
[ψ_b] = [M L_s M ] [i_b] + ψ_pm[cos(θ_e - 2π/3)]
[ψ_c] [M M L_s] [i_c] [cos(θ_e + 2π/3)]
其中:Rs为定子相电阻,Ls为相自感,M为相间互感(表贴式电机Ls与M均为常数),ψpm为永磁体磁链幅值,θe为转子电角度。对于星形连接且无中线系统,ia + ib + ic = 0,互感项可合并,定义同步电感 L = Ls - M。
Clarke变换与αβ坐标系模型
采用等幅值Clarke变换矩阵,将三相变量映射到两相正交坐标系:
[x_α] [2/3 -1/3 -1/3] [x_a]
[x_β] = [0 √3/3 -√3/3] [x_b]
对电压方程和磁链方程分别施加该线性变换(变换矩阵与时间无关,可与微分算子交换),得到αβ坐标系下的数学模型:
αβ电压方程:
[u_α] [R_s 0] [i_α] [ψ_α]
[u_β] = [0 R_s] [i_β] + d/dt[ψ_β]
αβ磁链方程:
[ψ_α] [L 0] [i_α] [cos(θ_e) ]
[ψ_β] = [0 L] [i_β] + ψ_pm[sin(θ_e)]
由于变换后互感项完全消除,αβ轴磁链解耦,仅剩定子电感L与永磁体磁链分量。将磁链方程代入电压方程,展开可得最终用于仿真或观测器的αβ电压显式表达式:
u_α = R_s·i_α + L·(di_α/dt) - ψ_pm·ω_e·sin(θ_e)
u_β = R_s·i_β + L·(di_β/dt) + ψ_pm·ω_e·cos(θ_e)
其中ωe = dθe/dt为电角速度。反电动势项(含ωe的项)在αβ轴间呈现正弦耦合,这是后续构建滑模观测器或锁相环提取转子位置的理论依据。
Python验证实现
以下代码数值验证上述推导的正确性:给定一组三相电流与转子位置,分别用abc模型和αβ模型计算磁链与电压,比较两者经反Clarke变换后的误差。
import numpy as np
# 电机参数
Rs = 0.5 # 定子电阻 Ω
Ls = 0.008 # 自感 H
M = -0.001 # 互感 H(典型负值)
L = Ls - M # 同步电感 = 0.009 H
psi_pm = 0.1 # 永磁体磁链 Wb
theta_e = np.deg2rad(45) # 转子电角度
omega_e = 100.0 # 电角速度 rad/s
# 给定三相电流(满足 ia+ib+ic=0)
ia, ib, ic = 5.0, -2.0, -3.0
i_abc = np.array([ia, ib, ic])
# 反电动势系数矩阵(abc)
k_abc = np.array([np.cos(theta_e),
np.cos(theta_e - 2*np.pi/3),
np.cos(theta_e + 2*np.pi/3)])
# --- abc坐标系磁链与电压 ---
Lmat = np.array([[Ls, M, M],
[M, Ls, M],
[M, M, Ls]])
psi_abc = Lmat @ i_abc + psi_pm * k_abc
# 电流变化率(给定示例值)
di_abc = np.array([100.0, -50.0, -50.0]) # A/s
u_abc = Rs * i_abc + di_abc * Ls # 简化:仅自感项用于验证变换一致性
# --- Clarke变换矩阵(等幅值) ---
C = np.array([[2/3, -1/3, -1/3],
[0, np.sqrt(3)/3, -np.sqrt(3)/3]])
# 变换到αβ
i_ab = C @ i_abc
psi_ab_from_abc = C @ psi_abc
u_ab_from_abc = C @ u_abc
# --- 直接αβ模型计算 ---
psi_ab_direct = np.array([L * i_ab[0] + psi_pm * np.cos(theta_e),
L * i_ab[1] + psi_pm * np.sin(theta_e)])
# 反Clarke变换(等幅值逆变换)
C_inv = np.array([[1, 0],
[-1/2, np.sqrt(3)/2],
[-1/2, -np.sqrt(3)/2]])
psi_abc_recover = C_inv @ psi_ab_direct
# --- 验证误差 ---
err_psi = np.max(np.abs(psi_abc - psi_abc_recover))
err_psi_ab = np.max(np.abs(psi_ab_from_abc - psi_ab_direct))
print(f"αβ磁链直接计算 vs 变换得到: {psi_ab_direct}")
print(f"αβ磁链经abc变换得到: {psi_ab_from_abc}")
print(f"最大磁链误差(αβ): {err_psi_ab:.2e} Wb")
print(f"反变换回abc最大误差: {err_psi:.2e} Wb")
运行与验证
运行方式:将上述代码保存为 pmsm_model_check.py,在已安装NumPy的Python环境中执行 python pmsm_model_check.py。
通过标准:程序输出的两组αβ磁链数值应完全一致,最大误差在1e-12量级(浮点舍入误差)。这证明:①Clarke变换正确实现;②αβ坐标系下的磁链方程 ψ_αβ = L·i_αβ + ψ_pm·[cosθ_e, sinθ_e]ᵀ 与abc坐标系模型在数学上严格等价。若误差显著大于1e-10,说明变换矩阵或电感合并项(L = Ls - M)计算有误。