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)计算有误。

PMSM坐标变换结构图 abc 三相静止系 电压方程: u_abc = R·i_abc + dψ_abc/dt 磁链方程: ψ_abc = L_abc·i_abc + ψ_pm·f(θ_e) 含互感M,轴间耦合 L_s, M 均为常数 Clarke 等幅值变换 αβ 两相静止系 电压方程: u_αβ = R·i_αβ + dψ_αβ/dt 磁链方程: ψ_α = L·i_α + ψ_pm·cosθ_e ψ_β = L·i_β + ψ_pm·sinθ_e 互感消除,轴间解耦 L = L_s - M(同步电感) 展开后的反电动势项 u_α = R·i_α + L·di_α/dt − ψ_pm·ω_e·sinθ_e u_β = R·i_β + L·di_β/dt + ψ_pm·ω_e·cosθ_e 包含转子位置信息θ_e 代入 αβ模型保留了转子位置信息,为Park变换(αβ→dq)和转子位置观测提供基础