電流控制回路:針對永磁電機(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?=Rs?id?+Ld?dtdid?? 代入上式,在拉普拉斯域中可得:
[
(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 軸電流控制回路的傳遞函數,并繪制它們的階躍響應。你可以根據實際的電機參數調整代碼中的參數值。