永磁同步电机无差拍预测控制加延时补偿
在电机控制领域,永磁同步电机(PMSM)凭借其高功率密度、高效率等优点,广泛应用于工业、交通等众多领域。而如何实现对PMSM的精准控制,一直是研究的热点。今天咱们就来聊聊永磁同步电机的无差拍预测控制以及其中至关重要的延时补偿。
无差拍预测控制基础
无差拍预测控制的核心思想,是基于电机的数学模型,预测下一时刻电机的状态,从而计算出合适的控制量,使得系统输出能快速跟踪给定值。
以PMSM在两相静止坐标系(α - β 坐标系)下的电压方程为例:
\[
\begin{cases}
u{\alpha}=Rsi{\alpha}+Ls\frac{di{\alpha}}{dt}-\omegae\psif\sin\thetae \\
u{\beta}=Rsi{\beta}+Ls\frac{di{\beta}}{dt}+\omegae\psif\cos\thetae
\end{cases}
\]
其中,$u{\alpha}$、$u{\beta}$是α - β 坐标系下的定子电压分量,$i{\alpha}$、$i{\beta}$是定子电流分量,$Rs$是定子电阻,$Ls$是定子电感,$\omegae$是电角速度,$\psif$是永磁体磁链,$\theta_e$是电角度。
对上述方程进行离散化处理,以便在数字控制系统中实现。采用一阶向前欧拉法离散化,即$\frac{dx}{dt} \approx \frac{x(k + 1)-x(k)}{Ts}$,$Ts$为采样周期。
离散化后的电压方程为:
\[
\begin{cases}
u{\alpha}(k)=Rsi{\alpha}(k)+Ls\frac{i{\alpha}(k + 1)-i{\alpha}(k)}{Ts}-\omegae(k)\psif\sin\thetae(k) \\
u{\beta}(k)=Rsi{\beta}(k)+Ls\frac{i{\beta}(k + 1)-i{\beta}(k)}{Ts}+\omegae(k)\psif\cos\thetae(k)
\end{cases}
\]
我们的目标是让下一时刻的电流$i{\alpha}(k + 1)$和$i{\beta}(k + 1)$跟踪给定值$i{\alpha}^(k + 1)$和$i{\beta}^(k + 1)$,对上面方程进行整理,就可以得到无差拍控制下的电压指令计算式:
\[
\begin{cases}
u{\alpha}^(k)=\frac{Ls}{Ts}(i{\alpha}^(k + 1)-i{\alpha}(k))+Rsi{\alpha}(k)-\omegae(k)\psif\sin\thetae(k) \\
u{\beta}^(k)=\frac{Ls}{Ts}(i{\beta}^(k + 1)-i{\beta}(k))+Rsi{\beta}(k)+\omegae(k)\psif\cos\thetae(k)
\end{cases}
\]
在代码实现上,大致框架如下(以Python为例,这里只是示意,实际应用会涉及硬件驱动等更多内容):
import numpy as np # 电机参数 Rs = 1.5 Ls = 0.0085 psi_f = 0.175 # 采样周期 Ts = 0.0001 def deadbeat_control(i_alpha_k, i_beta_k, omega_e_k, theta_e_k, i_alpha_star_k1, i_beta_star_k1): u_alpha_star_k = (Ls / Ts) * (i_alpha_star_k1 - i_alpha_k) + Rs * i_alpha_k - omega_e_k * psi_f * np.sin(theta_e_k) u_beta_star_k = (Ls / Ts) * (i_beta_star_k1 - i_beta_k) + Rs * i_beta_k + omega_e_k * psi_f * np.cos(theta_e_k) return u_alpha_star_k, u_beta_star_k延时补偿的必要性
理想的无差拍预测控制很美好,但在实际数字控制系统中,存在各种延时,如采样延时、计算延时以及PWM更新延时等。这些延时会导致实际施加的电压并非是基于准确预测时刻的,从而影响控制性能,使电流跟踪出现偏差。
比如,由于采样和计算延时,我们实际得到的电流$i{\alpha}(k)$和$i{\beta}(k)$其实是过去某一时刻的电流值,并非当前时刻值,这就使得计算出的电压指令$u{\alpha}^(k)$和$u{\beta}^(k)$并不准确,导致电流跟踪误差。
延时补偿策略与实现
为了补偿这些延时,一种常见的方法是预估电流。我们可以根据电机的动态特性,提前预估延时期间电流的变化。
假设总延时为$n$个采样周期,我们可以通过对电流进行预估。以α轴电流为例,利用电机的运动方程和电流变化关系,预估$n$个采样周期后的电流$i_{\alpha}(k + n)$。
\[
i{\alpha}(k + n)=i{\alpha}(k)+\frac{Ts}{Ls}\sum{j = 0}^{n - 1}(u{\alpha}(k + j)-Rsi{\alpha}(k + j)+\omegae(k + j)\psif\sin\theta_e(k + j))
\]
在代码中实现延时补偿,我们需要在计算电压指令前,先进行电流预估:
def delay_compensation(i_alpha_k, i_beta_k, omega_e_k, theta_e_k, u_alpha_k_list, u_beta_k_list, n): # 假设u_alpha_k_list和u_beta_k_list是之前n个时刻的电压值 i_alpha_pre = i_alpha_k i_beta_pre = i_beta_k for j in range(n): i_alpha_pre = i_alpha_pre + (Ts / Ls) * (u_alpha_k_list[j] - Rs * i_alpha_pre + omega_e_k * psi_f * np.sin(theta_e_k)) i_beta_pre = i_beta_pre + (Ts / Ls) * (u_beta_k_list[j] - Rs * i_beta_pre + omega_e_k * psi_f * np.cos(theta_e_k)) return i_alpha_pre, i_beta_pre然后在无差拍控制函数中,使用预估后的电流来计算电压指令:
def deadbeat_control_with_delay_comp(i_alpha_k, i_beta_k, omega_e_k, theta_e_k, i_alpha_star_k1, i_beta_star_k1, u_alpha_k_list, u_beta_k_list, n): i_alpha_pre, i_beta_pre = delay_compensation(i_alpha_k, i_beta_k, omega_e_k, theta_e_k, u_alpha_k_list, u_beta_k_list, n) u_alpha_star_k = (Ls / Ts) * (i_alpha_star_k1 - i_alpha_pre) + Rs * i_alpha_pre - omega_e_k * psi_f * np.sin(theta_e_k) u_beta_star_k = (Ls / Ts) * (i_beta_star_k1 - i_beta_pre) + Rs * i_beta_pre + omega_e_k * psi_f * np.cos(theta_e_k) return u_alpha_star_k, u_beta_star_k通过这样的延时补偿,能够有效减少因延时带来的电流跟踪误差,提升永磁同步电机无差拍预测控制的性能,使其在实际应用中更加稳定和高效。
永磁同步电机的无差拍预测控制结合延时补偿,为我们在追求电机高性能控制的道路上提供了一个有力的手段。当然,实际应用中还需要根据具体的硬件平台和电机特性进行进一步的优化和调整。希望今天的分享能让大家对这一技术有更深入的了解。