以下是一个简单的异步电机矢量控制电流估计map点Matlab脚本,并解释了脚本中的参数设置、电机参数估算、控制算法实现以及结果可视化等步骤。

% 异步电机矢量控制电流估计map点Matlab脚本
% 假设电机参数已知,包括:电阻R,电感L,磁极对数p,转子电阻Rr,转子电抗Xr,额定电压Vrated,额定频率frated,额定功率Prated
% 假设控制器已经设计好,包括:PI调节器参数Kp和Ki,电流内环采样周期Ts,速度外环采样周期Ts2,速度PI调节器参数Kpv和Kiv,速度限制Vmax和Vmin
% 假设电机转速已知,包括:电机转速n,电机转矩Tload

% 设置模拟参数
Ts = 1e-6;       % 电流内环采样周期
Ts2 = 1e-4;      % 速度外环采样周期
Tfinal = 0.2;    % 模拟时长
T = 0:Ts:Tfinal; % 时间向量

% 设置电机参数
R = 3;           % 电阻
L = 0.02;        % 电感
p = 2;           % 磁极对数
Rr = 0.5;        % 转子电阻
Xr = 0.1;        % 转子电抗
Vrated = 220;    % 额定电压
frated = 50;     % 额定频率
Prated = 2e3;    % 额定功率

% 设置控制器参数
Kp = 0.5;        % PI调节器参数Kp
Ki = 10;         % PI调节器参数Ki
Kpv = 0.05;      % 速度PI调节器参数Kpv
Kiv = 1;         % 速度PI调节器参数Kiv
Vmax = 220;      % 速度限制Vmax
Vmin = -220;     % 速度限制Vmin

% 估算电机参数
Ls = L*p;        % 同步电感
Xs = 2*pi*frated*Ls;  % 同步电抗
Zs = R + j*Xs;   % 同步电阻
Zr = Rr + j*Xr;  % 转子阻抗
Zm = Zs*Zr/(Zs+Zr);  % 互感阻抗
Vph = Vrated/sqrt(3); % 相电压幅值
Iphrated = Prated/(sqrt(3)*Vph); % 额定相电流幅值
Israted = Iphrated*p; % 额定同步电流幅值

% 计算电机参数矩阵
Rs = R/p;
Lm = Ls - L/p;
M = Lm*p;

% 设置初始值
theta = 0;       % 电机转子位置
n = 0;           % 电机转速
Ia = 0; Ib = 0; Ic = 0; % 三相电流
Ialpha = 0; Ibeta = 0;  % αβ坐标系电流
Id = 0; Iq = 0;         % dq坐标系电流
Vd = 0; Vq = 0;         % dq坐标系电压
Valpha = 0; Vbeta = 0;  % αβ坐标系电压
Vt = 0;                % 转矩电压
Tm = 0;                % 机械转矩
Tmload = 0;            % 负载转矩

% 初始化数组
Ia_arr = zeros(1,length(T));
Ib_arr = zeros(1,length(T));
Ic_arr = zeros(1,length(T));
Ialpha_arr = zeros(1,length(T));
Ibeta_arr = zeros(1,length(T));
Id_arr = zeros(1,length(T));
Iq_arr = zeros(1,length(T));
Vd_arr = zeros(1,length(T));
Vq_arr = zeros(1,length(T));
Valpha_arr = zeros(1,length(T));
Vbeta_arr = zeros(1,length(T));
Vt_arr = zeros(1,length(T));
Tm_arr = zeros(1,length(T));

% 循环模拟
for i=1:length(T)
    % 计算电机电流
    Ialpha = Iphrated*sin(theta);
    Ibeta = Iphrated*cos(theta);
    Ia = 2/3*(Ialpha*cos(2*pi/3)-Ibeta*sin(2*pi/3));
    Ib = 2/3*(Ialpha*cos(2*pi/3+2*pi/3)-Ibeta*sin(2*pi/3+2*pi/3));
    Ic = 2/3*(Ialpha*cos(2*pi/3-2*pi/3)-Ibeta*sin(2*pi/3-2*pi/3));
    
    % 计算dq坐标系电流
    Idq = 2/3*[cos(theta) cos(theta-2*pi/3) cos(theta+2*pi/3);...               -sin(theta) -sin(theta-2*pi/3) -sin(theta+2*pi/3)]*[Ia;Ib;Ic];
    Id = Idq(1);
    Iq = Idq(2);
    
    % 计算dq坐标系电压
    Vd = Kp*(Id-Id_arr(i)) + Ki*Ts*Id + Kpv*(n-n_arr(i)) + Kiv*Ts2*(n-n_arr(i))*Ts + Vt/2/M;
    Vq = Kp*(Iq-Iq_arr(i)) + Ki*Ts*Iq - Kpv*(n-n_arr(i)) - Kiv*Ts2*(n-n_arr(i))*Ts;
    
    % 计算αβ坐标系电压
    Valpha = Vd*cos(theta) - Vq*sin(theta);
    Vbeta = Vd*sin(theta) + Vq*cos(theta);
    
    % 计算电机电压
    Vab = 2/3*[cos(theta) cos(theta-2*pi/3) cos(theta+2*pi/3);...               -sin(theta) -sin(theta-2*pi/3) -sin(theta+2*pi/3)]*[Valpha;Vbeta];
    Va = Vab(1);
    Vb = Vab(2);
    Vc = Vab(3);
    
    % 计算机械转矩
    Tmload = Tload;
    Tm = 3/2*p*(Lm*(Idq(2)-Israted) - Rs*(Idq(1)-Israted) - Tmload);
    
    % 计算转矩电压
    Vt = M*(Tm-Tm_arr(i))/Ts;
    
    % 计算电机转速
    n = n + Kpv*(n-n_arr(i))*Ts + Kiv*Ts2*(n-n_arr(i))*Ts;
    n_arr(i) = n;
    
    % 限制电机转速
    if n > Vmax/p*2*pi/60
        n = Vmax/p*2*pi/60;
    elseif n < Vmin/p*2*pi/60
        n = Vmin/p*2*pi/60;
    end
    
    % 计算电机转子位置
    theta = theta + 2*pi/60*n*Ts;
    
    % 保存数据
    Ia_arr(i) = Ia;
    Ib_arr(i) = Ib;
    Ic_arr(i) = Ic;
    Ialpha_arr(i) = Ialpha;
    Ibeta_arr(i) = Ibeta;
    Id_arr(i) = Id;
    Iq_arr(i) = Iq;
    Vd_arr(i) = Vd;
    Vq_arr(i) = Vq;
    Valpha_arr(i) = Valpha;
    Vbeta_arr(i) = Vbeta;
    Vt_arr(i) = Vt;
    Tm_arr(i) = Tm;
end

% 绘制图形
figure;
subplot(2,2,1);
plot(T,Ia_arr,T,Ib_arr,T,Ic_arr);
title('三相电流');
xlabel('时间 (s)');
ylabel('电流 (A)');
legend('Ia','Ib','Ic');

subplot(2,2,2);
plot(T,Ialpha_arr,T,Ibeta_arr);
title('αβ坐标系电流');
xlabel('时间 (s)');
ylabel('电流 (A)');
legend('Ialpha','Ibeta');

subplot(2,2,3);
plot(T,Id_arr,T,Iq_arr);
title('dq坐标系电流');
xlabel('时间 (s)');
ylabel('电流 (A)');
legend('Id','Iq');

subplot(2,2,4);
plot(T,Vd_arr,T,Vq_arr);
title('dq坐标系电压');
xlabel('时间 (s)');
ylabel('电压 (V)');
legend('Vd','Vq');

脚本解释

  1. 参数设置: 首先定义模拟参数,包括采样周期、模拟时长等。接着定义电机参数,例如电阻、电感、磁极对数等。最后定义控制器参数,例如PI调节器参数、速度限制等。
  2. 电机参数估算: 根据已知参数,计算同步电感、同步电抗、同步电阻、转子阻抗、互感阻抗、相电压幅值、额定相电流幅值和额定同步电流幅值。
  3. 控制算法实现: 脚本的核心部分是利用PI调节器和速度PI调节器来控制电机电流和转速。算法根据当前电流、转速和负载转矩计算出所需的dq坐标系电压,然后通过坐标变换得到αβ坐标系电压和三相电压。
  4. 结果可视化: 最后脚本将模拟结果绘制成图形,方便观察电流、电压和转速的变化情况。

注意事项

  • 脚本中假设电机参数已知,实际应用中可能需要通过测量或其他方法获取参数。
  • 控制器参数需要根据具体电机和控制要求进行调整。
  • 脚本只提供了一个简单的示例,实际应用中可能需要根据具体需求进行修改和完善。

原文地址: https://www.cveoy.top/t/topic/mLjH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录