电流控制回路:针对永磁电机(PMM)的d轴和q轴电流,考虑交叉耦合补偿,设计P1控制器并推导出相应的传递函数。
1. 永磁电机(PMM)的数学模型
在同步旋转坐标系( d − q d - q d−q 坐标系)下,永磁同步电机(PMSM)的电压方程为:
[
\begin{cases}
u_d = R_si_d + L_d\frac{di_d}{dt}-\omega_eL_qi_q \
u_q = R_si_q + L_q\frac{di_q}{dt}+\omega_eL_di_d+\omega_e\psi_f
\end{cases}
]
其中, u d u_d ud 和 u q u_q uq 分别是 d d d 轴和 q q q 轴电压; i d i_d id 和 i q i_q iq 分别是 d d d 轴和 q q q 轴电流; R s R_s Rs 是定子电阻; L d L_d Ld 和 L q L_q Lq 分别是 d d d 轴和 q q q 轴电感; ω e \omega_e ωe 是电角速度; ψ f \psi_f ψf 是永磁体磁链。
2. 交叉耦合补偿
为了消除 d d d 轴和 q q q 轴之间的交叉耦合影响,我们引入补偿项。令:
[
\begin{cases}
u_{d_comp} = \omega_eL_qi_q \
u_{q_comp} = -\omega_eL_di_d-\omega_e\psi_f
\end{cases}
]
经过补偿后,电压方程变为:
[
\begin{cases}
u_d - u_{d_comp}= R_si_d + L_d\frac{di_d}{dt} \
u_q - u_{q_comp}= R_si_q + L_q\frac{di_q}{dt}
\end{cases}
]
3. PI 控制器设计
PI 控制器的一般形式为:
[
G_{PI}(s)=K_p+\frac{K_i}{s}=\frac{K_ps + K_i}{s}
]
其中, K p K_p Kp 是比例系数, K i K_i Ki 是积分系数。
对于 d d d 轴电流控制回路,控制器的输出为 u d − u d _ c o m p u_d - u_{d\_comp} ud−ud_comp,输入为 i d ∗ − i d i_d^* - i_d id∗−id( i d ∗ i_d^* id∗ 是 d d d 轴电流给定值)。则有:
[
u_d - u_{d_comp}=G_{PI}(s)(i_d^* - i_d)
]
将 u d − u d _ c o m p = R s i d + L d d i d d t u_d - u_{d\_comp}= R_si_d + L_d\frac{di_d}{dt} ud−ud_comp=Rsid+Lddtdid 代入上式,在拉普拉斯域中可得:
[
(R_s + L_ds)I_d(s)=G_{PI}(s)(I_d^(s)-I_d(s))
]
整理可得 d d d 轴电流控制回路的传递函数:
[
\frac{I_d(s)}{I_d^(s)}=\frac{G_{PI}(s)}{R_s + L_ds+G_{PI}(s)}=\frac{K_ps + K_i}{L_ds^2+(R_s + K_p)s + K_i}
]
对于 q q q 轴电流控制回路,控制器的输出为 u q − u q _ c o m p u_q - u_{q\_comp} uq−uq_comp,输入为 i q ∗ − i q i_q^* - i_q iq∗−iq( i q ∗ i_q^* iq∗ 是 q q q 轴电流给定值)。同理可得:
[
(R_s + L_qs)I_q(s)=G_{PI}(s)(I_q^(s)-I_q(s))
]
整理可得 q q q 轴电流控制回路的传递函数:
[
\frac{I_q(s)}{I_q^(s)}=\frac{G_{PI}(s)}{R_s + L_qs+G_{PI}(s)}=\frac{K_ps + K_i}{L_qs^2+(R_s + K_p)s + K_i}
]
4. Python 代码示例(验证传递函数)
import control
import matplotlib.pyplot as plt
import numpy as np
# 电机参数
R_s = 1 # 定子电阻
L_d = 0.1 # d 轴电感
L_q = 0.1 # q 轴电感
K_p = 10 # 比例系数
K_i = 100 # 积分系数
# d 轴传递函数
num_d = [K_p, K_i]
den_d = [L_d, R_s + K_p, K_i]
sys_d = control.TransferFunction(num_d, den_d)
# q 轴传递函数
num_q = [K_p, K_i]
den_q = [L_q, R_s + K_p, K_i]
sys_q = control.TransferFunction(num_q, den_q)
# 绘制阶跃响应
t = np.linspace(0, 1, 1000)
t_d, y_d = control.step_response(sys_d, t)
t_q, y_q = control.step_response(sys_q, t)
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.plot(t_d, y_d)
plt.title('d 轴电流控制回路阶跃响应')
plt.xlabel('时间 (s)')
plt.ylabel('电流')
plt.subplot(1, 2, 2)
plt.plot(t_q, y_q)
plt.title('q 轴电流控制回路阶跃响应')
plt.xlabel('时间 (s)')
plt.ylabel('电流')
plt.tight_layout()
plt.show()
这个代码示例使用 Python 的 control
库来创建 d d d 轴和 q q q 轴电流控制回路的传递函数,并绘制它们的阶跃响应。你可以根据实际的电机参数调整代码中的参数值。