1. PMSM数学模型建立与参数辨识
任务目标
建立表贴式永磁同步电机(SPMSM)在dq旋转坐标系下的电压方程与磁链方程,并基于直流注入法与静止脉冲电压法,辨识定子电阻Rs、d/q轴电感Ls和转子磁链ψf。本案例聚焦参数辨识的算法实现与仿真验证,不涉及实际硬件电流环调试。
数学模型
在dq坐标系下(d轴与转子磁极对齐),SPMSM的电压方程与磁链方程为:
u<sub>d</sub> = R<sub>s</sub>·i<sub>d</sub> + L<sub>s</sub>·(di<sub>d</sub>/dt) − ω<sub>e</sub>·L<sub>s</sub>·i<sub>q</sub>
u<sub>q</sub> = R<sub>s</sub>·i<sub>q</sub> + L<sub>s</sub>·(di<sub>q</sub>/dt) + ω<sub>e</sub>·(L<sub>s</sub>·i<sub>d</sub> + ψ<sub>f</sub>)
其中ωe为电角速度。稳态(di/dt=0)且转子锁定(ωe=0)时,方程退化为纯电阻模型,这是直流注入法的辨识基础。
辨识原理与实现
电阻辨识:向d轴注入直流电压Ud,转子锁定,待电流稳定后读取id,则Rs = Ud/id。
电感辨识:转子锁定,施加短时脉冲电压Upulse,记录电流上升斜率Δi/Δt。忽略电阻压降时,Ls ≈ Upulse/(Δi/Δt)。
磁链辨识:转子以恒定电角速度ωe旋转,q轴电流控制为0,d轴电流为0,此时q轴电压uq = ωe·ψf,故ψf = uq/ωe。
关键完整代码(Python仿真验证)
import numpy as np
# 电机真实参数(用于生成仿真数据)
Rs_true = 2.5 # 欧姆
Ls_true = 0.008 # 亨利
flux_true = 0.175 # 韦伯
def simulate_dc_resistance():
"""直流注入法辨识电阻:转子锁定,d轴加直流电压"""
U_d = 5.0 # 注入电压(V)
i_d_steady = U_d / Rs_true # 稳态电流
Rs_est = U_d / i_d_steady
return Rs_est
def simulate_pulse_inductance():
"""脉冲电压法辨识电感:转子锁定,短脉冲测电流斜率"""
dt = 0.001 # 采样周期(s)
U_pulse = 10.0 # 脉冲电压(V)
i_prev = 0.0
# 模拟电流上升(忽略电阻,纯电感特性)
di = (U_pulse / Ls_true) * dt
i_now = i_prev + di
Ls_est = U_pulse / (di / dt)
return Ls_est
def simulate_backemf_flux():
"""反电动势法辨识磁链:转子恒速旋转,q轴电流为0"""
omega_e = 100.0 # 电角速度(rad/s)
u_q = omega_e * flux_true # q轴电压测量值
flux_est = u_q / omega_e
return flux_est
# 执行辨识
Rs_est = simulate_dc_resistance()
Ls_est = simulate_pulse_inductance()
flux_est = simulate_backemf_flux()
print(f"电阻辨识结果: {Rs_est:.3f} Ω (真实值 {Rs_true} Ω)")
print(f"电感辨识结果: {Ls_est:.5f} H (真实值 {Ls_true} H)")
print(f"磁链辨识结果: {flux_est:.4f} Wb (真实值 {flux_true} Wb)")
# 验证误差
assert abs(Rs_est - Rs_true) < 1e-6, "电阻辨识失败"
assert abs(Ls_est - Ls_true) < 1e-6, "电感辨识失败"
assert abs(flux_est - flux_true) < 1e-6, "磁链辨识失败"
print("全部辨识误差 < 1e-6,验证通过")
运行与验证
- 保存代码为
pmsm_param_id.py,运行python pmsm_param_id.py。 - 程序输出三种参数的辨识值与真实值对比。
- 通过条件:辨识值与真实值误差小于1e-6,且断言语句无异常抛出。
常见问题
- 电阻辨识误差大:确保转子完全锁定,且电流已进入稳态(等待时间 > 5·L/R时间常数)。
- 电感辨识受电阻影响:脉冲宽度应远小于L/R时间常数,使电阻压降可忽略。
- 磁链辨识需速度稳定:转速波动会直接引入误差,建议使用速度闭环或多次采样取平均。