对于永磁同步电机来说,知道当前k时刻的d轴电压为ud(k),如何用matlab代码表示下一时刻的d轴电压ud(k+1)?
永磁同步电机的数学模型如下所示:
$$\begin{cases} u_d = R_si_d + L_s\frac{di_d}{dt} + \varepsilon_{pm}\sin(\theta) \ u_q = R_si_q + L_s\frac{di_q}{dt} + \varepsilon_{pm}\cos(\theta) + \omega_{mech}L_s i_d \end{cases}$$
其中,$u_d$为d轴电压,$u_q$为q轴电压,$R_s$为定子电阻,$L_s$为定子电感,$i_d$、$i_q$为定子d轴和q轴电流,$\varepsilon_{pm}$为永磁体的磁动势,$\theta$为永磁体磁场旋转角度,$\omega_{mech}$为机械角速度。
要求永磁同步电机下一时刻(k+1时刻)d轴电压ud(k+1),可以采用欧拉法进行数值求解。具体步骤如下:
MATLAB代码如下所示(假设采样周期$T_s$为1ms):
% 输入参数
ud_k = 220; % 第k个时刻d轴电压
iq_k = 0; % 第k个时刻q轴电流
id_k = 1; % 第k个时刻d轴电流
R_s = 0.05; % 定子电阻
L_s = 0.002; % 定子电感
eps_pm = 0.1; % 永磁体磁动势
w_mech = 200*pi/60; % 机械角速度(rad/s)
Ts = 1e-3; % 采样周期
% 数值积分(欧拉法)
id_k1 = id_k + Ts*(ud_k - R_s*id_k - eps_pm*sin(0))/L_s;
iq_k1 = iq_k + Ts*(-R_s*iq_k - eps_pm*cos(0) - w_mech*L_s*id_k)/L_s;
% 归算公式
ud_k1 = R_s*id_k1 + L_s*(id_k1 - id_k)/Ts + eps_pm*sin(0);
% 输出结果
fprintf('ud(k+1) = %.2f\n', ud_k1);
需要注意的是,在实际的应用中,还需要考虑限制电流大小、过电压保护等问题,这里没有一一列出,需要根据具体情况进行实现。