Induction Motor Modeling (for Lab Prep Session)¶

From your book, the circuit model of one phase of a balanced Y connected induction motor is:

image.png

The slip, $s = (n_s - n)/n_s$ where $n_s$ is the synchronous speed, and $n$ is the actual speed. So if the rotor was going at synchronous speed, the slip would be zero, and when the rotor is blocked the slip is one. The resistor $R_2(1-s)/s$ is where the mechanical work is accomplished. $R_2$ is the rotor resistance referred to back to the stator. The winding resistance of the stator is $R_1$. The reactance due to the leakage inductance in the stator is $X_1$. The reactance due to leakage inductance in the rotor referred to the stator is $X_2$, and the reactance due to magnetizing inductance and resistance due to core losses are $X_m$ and $R_c$ respectively.

In Lab 8, we will first warm up the motors. Then we will do a load test, and lastly, we will measure the DC resistances of the stator. After the lab, we have provided a script that allows you to show how well the load test data matches your selection of the above parameters. You will need to follow the instructions in the lab sheet to get the best values you can. Here is an example of the East Induction Motor.

In [8]:
% East Induction Motor (High Efficiency)
% Carlton Cross  25 Feb 10   Updated 4 May 2021
%  E2016  XRI  HVK213TTFW6026BP L
%  7.5 HP, 5.6 kW, 1765 rpm, 208-230 Vrms,  pf = 0.8
%  IEC 34-1  IEC 34-5  IP 43
% DC resistance test  25 Feb 10  cec
%   5.0 A  1.95 V  line-to-line

clear;  close all; DataID = ['East Machine (Logan, Rivas, Carrigan)'];

R1 = (0.5*1.95/5.0);
f = 60; np = 4; Nph = 3; rpm = 1765;
Prated = 7.5*745.7; wmrated = rpm*2*pi/60;      % W
taurated = Prated/wmrated;
mass = 7.65;		% kg    calibration mass
d = 0.260;			% m     moment arm
g = 9.81;			% m/s^2 acceleration of gravity
Vcal = -2.08;		% V     load cell voltage
Tscale = -mass*g*d/Vcal;	% Nm/V  torque scale factor

data = [
% Vl-ln, V  I, A   P, kW  Q, kVAR  Nm, rpm  Vcell, V
    144.8   8.8     0       3.5     1800   -0.178       % Unexplained offset
    145     8.9     0.5     3.5     1798    0.0911
    141     9.2     1.1     3.5     1795    0.442
    141     9.7     1.6     3.6     1791    0.676
    144     10.6    2.2     3.6     1790    1.025
    144     11.5    2.7     3.7     1788    1.296
    146     12.8    3.3     3.8     1786    1.615
    150     13.2    3.8     3.9     1784    1.892
    144     15.0    4.4     4.1     1781    2.192
    150     16.4    4.9     4.3     1778    2.505
    141     17.7    5.5     4.4     1776    2.764
    146     19.4    6.1     4.7     1772    3.106];
         
Vphase = mean(data(:,1));               % Vrms
Iline = data(:,2);                      % Arms
P = 1000*data(:,3);                     % W
Q = 1000*data(:,4);                     % VAR
Nm = data(:,5);                         % rpm
tau = Tscale*(data(:,6)-data(1,6));     % Nm    (with offset correction)

% Model Parameters
Pcore = P(2) - 3*R1*Iline(2)^2;     % Idle power less resistive losses
Rc = 5*(Vphase^2)/(Pcore/Nph);      % per phase
R2 = 0.71*R1;                       % Adjusted for best power-torque fit
Xm = 0.95*(Vphase^2)/(Q(1)/Nph);    % Most significant at low power
Qdiff = Q(end) - Q(1);              % Increase from rotor inductance
X1X2 = (Qdiff/Nph)/Iline(end)^2;    % X1X2 is really X1+X2
X1 = 0.7*X1X2;                      % Adjusted for best pf fit
X2 = 1.21*X1X2;                     % Adjusted for high-load reactive power

% Performance from data
Ns = 120*f/np; wm = 2*pi*Nm/60; s = (Ns - Nm)/Ns;
Pout = wm.*tau; eta = 100*Pout./P; pf = cos(atan(Q./P));

% Peformance from model
npts = 200; smin = 1/1800; smax = (Ns - 1)/Ns; 
smodel = linspace(smin,smax,npts)';
ws = 2*pi*Ns/60; wshaft = (1-smodel)*ws; Nshaft = wshaft*30/pi;
z1 = R1+j*X1; y1 = 1/z1; z2 = R2./smodel + j*X2; y2 = (1./z2);
yc = 1/Rc + 1/(j*Xm);
Ea = Vphase*y1./(y1 + yc + y2); Ia = y2.*Ea;
Pomodel = 3*R2*(abs(Ia).^2).*(1-smodel)./smodel;
taumodel = Pomodel./wshaft;
ze = z1 + R2 + j*X2;                % Approximate impedance at under load
sp = R2/(R2 + abs(ze));             % Slip at max power
sb = R2/(sqrt(R1^2 + (X1+X2)^2));   % Slip at max torque

figure(1); hold on;
plot(Nshaft,taumodel, Nm,tau,'xr', 'linewidth',1.5)
axs = axis;
plot([(1-sb) (1-sb)]*Ns, axs(3:4),':r','linewidth',1.5)
plot([(1-sp) (1-sp)]*Ns, axs(3:4),'--c','linewidth',1.5)
plot(axs(1:2), [taurated taurated],':k');
hold off
title('\fontsize{14}Induction Motor Load Characteristic')
ylabel('Torque, Nm'); xlabel('Mechanical Speed, rpm');
legend('Model','Test Data','Max Torque','Max Power','location','north')
grid
text(400,50, DataID, 'backgroundcolor','white')
text(200,1.05*taurated,['Rated Torque'])
fmt1 = 'R_1 = %5.3f  X_1 = %5.3f';  S1 = sprintf(fmt1,R1,X1);
fmt2 = 'R_2 = %5.3f  X_2 = %5.3f';  S2 = sprintf(fmt2,R2,X2);
fmt3 = 'R_c = %5.0f   X_m = %5.1f'; S3 = sprintf(fmt3,Rc,Xm);
text(400,40,{S1 S2 S3},'BackgroundColor','white')
% Place a caption under the graph box
AxesPos = get(gca,'Position');
CapStr = ['From file ...\\' mfilename '.m  plotted ' date '.  Carlton Cross'];
annotation('textbox',[AxesPos(1) 0 .99 .04],'string',CapStr,...
    'FitBoxToText','on', 'LineStyle','none', 'BackgroundColor','white');
    
% % Peformance from model (over data segment)
npts = 200; smin = 0; smax = (Ns - Nm(end))/Ns;
smodel = linspace(smin,smax,npts)';
ws = 2*pi*Ns/60; wshaft = (1-smodel)*ws; Nshaft = wshaft*30/pi;
z1 = R1+j*X1; z2 = R2./smodel + j*X2;
Ea = Vphase./((1/z1 + 1/Rc + 1/(j*Xm) + 1./z2)*z1);
Ia = Ea./z2; Ic = Ea*(1/Rc + 1/(j*Xm)); I1 = Ia + Ic;
Smodel = 3*Vphase*conj(I1);
Pinmodel = real(Smodel);
Qinmodel = imag(Smodel);
pfmodel = cos(angle(Smodel));
Pomodel = 3*R2*(abs(Ia).^2).*(1-smodel)./smodel;
taumodel = Pomodel./wshaft;
Effmodel = 100*Pomodel./Pinmodel;
In [9]:
figure(2); hold on;
plot(Nshaft,taumodel, Nm,tau,'xr', 'linewidth',1.5); axs = axis;
plot([axs(1) axs(2)], [taurated taurated],':k');
title('\fontsize{14}Induction Motor Load Characteristic')
ylabel('Torque, Nm'); xlabel('Mechanical Speed, rpm')
legend('Model','Test Data', 'location','north'); grid
text(1775,1.02*taurated,['Rated Torque'])
text(1773,20, DataID, 'backgroundcolor','white')
text(1773,12,{S1 S2 S3},'BackgroundColor','white')
% Place a caption under the graph box
AxesPos = get(gca,'Position');
CapStr = ['From file ...\\' mfilename '.m  plotted ' date '.  Carlton Cross'];
annotation('textbox',[AxesPos(1) 0 .99 .04],'string',CapStr,...
    'FitBoxToText','on', 'LineStyle','none', 'BackgroundColor','white');
In [10]:
figure(3)
plot(Pinmodel,Qinmodel, P,Q,'--x')
axs = axis; axs = [axs(1:2) 0 axs(4)]; axis(axs); grid;
title('\fontsize{14}Induction Motor Load Characteristic')
ylabel('Reactive Power, VAR'); xlabel('Average Power, W')
legend('Model','Test Data', 'location','north')
text(1200,3000, DataID, 'backgroundcolor','white')
text(1200,2000,{S1 S2 S3},'BackgroundColor','white')
% Place a caption under the graph box
AxesPos = get(gca,'Position');
CapStr = ['From file ...\\' mfilename '.m  plotted ' date '.  Carlton Cross'];
annotation('textbox',[AxesPos(1) 0 .99 .04],'string',CapStr,...
    'FitBoxToText','on', 'LineStyle','none', 'BackgroundColor','white');
In [12]:
figure(4)
plot(Nshaft,pfmodel, Nm,pf,'--x', 'linewidth',1.5)
title('\fontsize{14}Induction Motor Load Characteristic')
ylabel('Power Factor'); xlabel('Mechanical Speed, rpm')
legend('Model','Test Data', 'location','north'); grid;
text(1773,0.65, DataID, 'backgroundcolor','white')
text(1773,0.5,{S1 S2 S3},'BackgroundColor','white')
% Place a caption under the graph box
AxesPos = get(gca,'Position');
CapStr = ['From file ...\\' mfilename '.m  plotted ' date '.  Carlton Cross'];
annotation('textbox',[AxesPos(1) 0 .99 .04],'string',CapStr,...
    'FitBoxToText','on', 'LineStyle','none', 'BackgroundColor','white');
In [13]:
figure(5)
plot(Pinmodel,Effmodel, P,eta,'--x'); grid;
title('\fontsize{14}Induction Motor Load Characteristic')
ylabel('Efficiency, per cent'); xlabel('Average Power, W')
legend('Model','Test Data', 'location','East')
text(1800,80, DataID, 'backgroundcolor','white')
text(1800,60,{S1 S2 S3},'BackgroundColor','white')
% Place a caption under the graph box
AxesPos = get(gca,'Position');
CapStr = ['From file ...\\' mfilename '.m  plotted ' date '.  Carlton Cross'];
annotation('textbox',[AxesPos(1) 0 .99 .04],'string',CapStr,...
    'FitBoxToText','on', 'LineStyle','none', 'BackgroundColor','white');
In [14]:
figure(6)
plot(Nshaft,Effmodel, Nm,eta,'--x')
title('\fontsize{14}Induction Motor Load Characteristic')
ylabel('Efficiency, per cent'); xlabel('Mechanical Speed, rpm')
legend('Model','Test Data', 'location','West'); grid;
text(1773,80, DataID, 'backgroundcolor','white')
text(1773,60,{S1 S2 S3},'BackgroundColor','white')
% Place a caption under the graph box
AxesPos = get(gca,'Position');
CapStr = ['From file ...\\' mfilename '.m  plotted ' date '.  Carlton Cross'];
annotation('textbox',[AxesPos(1) 0 .99 .04],'string',CapStr,...
    'FitBoxToText','on', 'LineStyle','none', 'BackgroundColor','white');
In [ ]: