内置式永磁同步电机参数识别交直轴电感、电阻、磁链、转动惯量,给出matlab代码
时间: 2023-09-17 19:13:50 浏览: 70
以下是一份MATLAB代码,可用于内置式永磁同步电机参数识别:
```
%% 内置式永磁同步电机参数识别
% 通过实验测量,得到电机三相电流、转速、机械负载转矩等基本参数,
% 计算推导得到电机的电感、电阻、转动惯量、磁链等参数。
%% 1. 读取实验数据
% 读取电机三相电流、转速、机械负载转矩等实验数据
Ia = xlsread('data.xlsx','Sheet1','B2:B1001');
Ib = xlsread('data.xlsx','Sheet1','C2:C1001');
Ic = xlsread('data.xlsx','Sheet1','D2:D1001');
omega = xlsread('data.xlsx','Sheet1','E2:E1001');
Tm = xlsread('data.xlsx','Sheet1','F2:F1001');
%% 2. 计算电机参数
% 由电机基本原理得到电机模型方程
% Va = Ra*Ia + La*di_a/dt + omega*Lm*Ib*sin(theta) + omega*Lm*Ic*cos(theta)
% Vb = Rb*Ib + Lb*di_b/dt + omega*Lm*Ic*sin(theta) + omega*Lm*Ia*cos(theta)
% Vc = Rc*Ic + Lc*di_c/dt + omega*Lm*Ia*sin(theta) + omega*Lm*Ib*cos(theta)
% 其中,Va、Vb、Vc为电机三相电压;Ia、Ib、Ic为电机三相电流;
% Ra、Rb、Rc为电机三相电阻;La、Lb、Lc为电机三相电感;
% Lm为磁链;theta为转子位置角。
% 为了简化问题,假设电机三相电阻相等,即Ra=Rb=Rc=R;
% 电机三相电感相等,即La=Lb=Lc=L;
% 假设电机空载时,磁链为定值,即Lm=Lm0;
% 因此,电机模型方程可以简化为:
% Va = R*Ia + L*di_a/dt + omega*Lm0*(Ib*sin(theta) + Ic*cos(theta))
% Vb = R*Ib + L*di_b/dt + omega*Lm0*(Ic*sin(theta) + Ia*cos(theta))
% Vc = R*Ic + L*di_c/dt + omega*Lm0*(Ia*sin(theta) + Ib*cos(theta))
% 把三个方程用矩阵表示:
% V = R*I + L*dI/dt + omega*Lm0*M*I
% 其中,V、I为三相电压、电流的列向量;R、L为电阻、电感的对角矩阵;
% dI/dt为电流变化率的列向量;M为矩阵,其元素为三角函数值。
% 电机参数可以通过实验数据拟合矩阵方程得到。
% 定义矩阵参数
N = length(Ia);
V = [Va Vb Vc]';
I = [Ia Ib Ic]';
R = diag([R R R]);
L = diag([L L L]);
dI = zeros(3,N);
M = zeros(3,3,N);
for k = 1:N
theta = omega(k)/60*2*pi; % 角速度转弧度制
M(:,:,k) = [sin(theta) cos(theta) 0; 0 sin(theta) cos(theta); cos(theta) 0 sin(theta)];
if k > 1
dI(:,k) = (I(:,k)-I(:,k-1))/(omega(k)-omega(k-1));
end
end
% 拟合矩阵方程
X = [L*ones(3,1) R*ones(3,1) omega*Lm0*ones(3,1) M];
Y = V - R*I - L*dI;
P = X\Y;
% 计算电机参数
Ls = P(1,1);
Rs = P(2,1);
Lm = P(3,1)/omega(k);
J = Tm(k)/(omega(k)*pi/30);
% 输出电机参数
fprintf('电机电感:%.4f H\n',Ls);
fprintf('电机电阻:%.4f ohm\n',Rs);
fprintf('电机磁链:%.4f Wb\n',Lm);
fprintf('电机转动惯量:%.4f kg*m^2\n',J);
```
此代码假设电机三相电阻相等,即Ra=Rb=Rc=R;电机三相电感相等,即La=Lb=Lc=L;电机空载时,磁链为定值,即Lm=Lm0。如果电机实际情况与假设不同,需要相应地修改代码。