Code covered by the BSD License  

Highlights from
Induction Motor Analysis GUI

image thumbnail
from Induction Motor Analysis GUI by Hadi Saadat
Enter circuit parameters for performance characteristics. Torque slip curve is plotted.

inductionmotor(varargin)
function varargout = inductionmotor(varargin)
warning('off','MATLAB:dispatcher:InexactCaseMatch')
% INDUCTIONMOTOR Application M-file for TransformerTests.fig
%    FIG = INDUCTIONMOTOR launch TransformerTests GUI.
%    INDUCTIONMOTOR('callback_name', ...) invoke the named callback.

% Last Modified by GUIDE v2.5 21-Feb-2010 10:24:16
% warning('off','MATLAB:dispatcher:InexactMatch')
 
if nargin == 0  % LAUNCH GUI
fig = openfig(mfilename,'reuse');% Generate a structure of handles to pass to callbacks, and store it. 
handles = guihandles(fig);
guidata(fig, handles);


%  picture
ax4=axes('Position',[0.7  .72  .2  .2]);
[x,map] = imread('IMPic1','jpg');
image(x)
set(gca,'visible','off')
      
ax1=axes('Position',[0  .48  .9  .23]);
% This program draws the induction motor equivalent circuit
ths = 0:.0025:pi;
xs1 =1.45+0.075*cos(ths);
ys1 = 1.2 +0.075*sin(ths);
xs2 =1.6+0.075*cos(ths);
xs3 =1.75+0.075*cos(ths);
xs4 =1.9+0.075*cos(ths);
x5 = [0.75 0.75 .8];
y5 =[1.2 1.0 1.0];
x6 = [1.1 1.3 1.3];
y6 = [1.0 1.0  0];
xw = [0.65  0.65  1.4  1.4  0.65];
yw = [0.95  1.35  1.35  0.95  0.95];
% R_c
xr=[.5   .5   .3   .3   .35  .25   .35   .25   .35   .25   .35   .25   .3  .3  .5  .5];
yr=[1.2   1     1  .775 .75  .7    .65   .60   .55   .50   .45   .40   .375 .2 .2  0];
% X_m
thm=-pi/2:.0025:pi/2;
xm=0.7+0.05*cos(thm);
ym=.05*sin(thm);
xxm=[xm     xm      xm  xm] ;

yxm=[.4+ym 0.5+ym 0.6+ym 0.7+ym];

x1=[0.4  .65 .7     .80  0.9   1.0   1.1   1.2   1.25  1.575  ];
y1=[1.2   1.2  1.3    1.1  1.3   1.1   1.3    1.1   1.2  1.2];

plot(x1-1.2, y1,'b', 'erasemode','none')
hold on
axis('equal')
axis off
plot(xs1-1,ys1,'b', xs2-1,ys1, 'b', xs3-1,ys1,'b', xs4-1, ys1,'b') 
xv1=[.3  .7  .7];
yv1=[1   1   .75];
xv2=[.5  .5  .7 .7 ];
yv2=[0  .2   .2  .35];
plot(xr+.8, yr, 'b')
plot(xxm+.8, yxm, 'b')
plot(xv1+.8, yv1,'b', xv2+.8, yv2, 'b')
x21=[3.2-.025  3.6  3.6];
y21=[1.2 1.2  .9];
x22=[-.8  3.6  3.6];
y22=[0  0   .3];
xL2=[3.55  3.55  3.65  3.65  3.55];
yL2=[.3  .9  .9  .3  .3];
plot(x21, y21, 'b',x22, y22,'b')
plot(xL2, yL2,'b')
x2=1.0+[0.6  .65 .7     .80  0.9   1.0   1.1   1.2   1.25  1.575  ];
y2=[1.2   1.2  1.3    1.1  1.3   1.1   1.3    1.1   1.2  1.2];
plot(x2, y2,'b')
plot(1.2+xs1,ys1,'b', 1.2+xs2,ys1, 'b', 1.2+xs3,ys1,'b', 1.2+xs4, ys1,'b') 
xd1=[.9750   1.6];
yd1=[1.2  1.2];
plot(xd1, yd1, 'b') 
text(-.835,1.1625, '\circ', 'color', [0 0 1])
text(-.835,-.0375, '\circ', 'color', [0 0 1])
text(-.8, .6, 'V_{1\phi}', 'Fontsize', 8, 'color', [0 0 .675])
text(1.6, .35, 'X_{m}', 'Fontsize', 8, 'color', [0 0 .675])
text(.9, .35, 'R_{c}', 'Fontsize', 8, 'color', [0 0 .675])
text(-.34, .975, 'R_1', 'Fontsize', 8, 'color', [0 0 .675])
text(.6, 1.05, 'X_1', 'Fontsize', 8, 'color', [0 0 .675])
text(1.85, 1, 'R_2^\prime', 'Fontsize', 8, 'color', [0 0 .675])
text(2.9, 1.05, 'X_2\prime', 'Fontsize', 8, 'color', [0 0 .675])
text(3.7, .6, 'R_L^\prime= {R_2}^\prime(1-s)/s', 'Fontsize', 8, 'color', [0 0 .675])
%text(5.5, .6, 'V_2', 'Fontsize', 8, 'color', [0 0 .675])
%text(8.75, .6, 'S_{Load}', 'Fontsize', 8, 'color', [0 0 .675])
text(-.2, -.1, 'Equivalent Circuit per phase referred to the Stator', 'color',[0 0 .675])
%%%%%%%%
hold off

%%%%%%%%%%%%
%Squirrel cage
ax2=axes('Position',[0.3  .2  .25  .25]);
R=.5; N=60;
[x,y,z]= cylinder(R,N);
Rotor=mesh(x,y,z); axis off, axis('square')

set(Rotor, 'erasemode', 'background');
rotation_increment=.2; % degree
rotation_axis=[0 0 1];

rotation_origin=[0  0  0];

incr=30/rotation_increment;
for loop =.1:incr
   rotate(Rotor, rotation_axis, incr, rotation_origin);
   drawnow 
end
 %hold off  
 %%%%%%%%%%%% 
 
 
	if nargout > 0
		varargout{1} = fig;
	end

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

	try
		if (nargout)
			[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
		else
			feval(varargin{:}); % FEVAL switchyard
		end
	catch
		disp(lasterr);
	end

end


%| ABOUT CALLBACKS:
%| GUIDE automatically appends subfunction prototypes to this file, and 
%| sets objects' callback properties to call them through the FEVAL 
%| switchyard above. This comment describes that mechanism.
%|
%| Each callback subfunction declaration has the following form:
%| <SUBFUNCTION_NAME>(H, EVENTDATA, HANDLES, VARARGIN)
%|
%| The subfunction name is composed using the object's Tag and the 
%| callback type separated by '_', e.g. 'slider2_Callback',
%| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.
%|
%| H is the callback object's handle (obtained using GCBO).
%|
%| EVENTDATA is empty, but reserved for future use.
%|
%| HANDLES is a structure containing handles of components in GUI using
%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This
%| structure is created at GUI startup using GUIHANDLES and stored in
%| the figure's application data using GUIDATA. A copy of the structure
%| is passed to each callback.  You can store additional information in
%| this structure at GUI startup, and you can change the structure
%| during callbacks.  Call guidata(h, handles) after changing your
%| copy to replace the stored original so that subsequent callbacks see
%| the updates. Type "help guihandles" and "help guidata" for more
%| information.
%|
%| VARARGIN contains any extra arguments you have passed to the
%| callback. Specify the extra arguments by editing the callback
%| property in the inspector. By default, GUIDE sets the property to:
%| <MFILENAME>('<SUBFUNCTION_NAME>', gcbo, [], guidata(gcbo))
%| Add any extra arguments after the last argument, before the final
%| closing parenthesis.






% --------------------------------------------------------------------
function varargout = V_LText_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = f_sText_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = P_nText_Callback(h, eventdata, handles, varargin)
%--------------------------------------------------------------------
function varargout = R_1Text_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = X_1Text_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = R_2Text_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = X_2Text_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = R_cText_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = X_mText_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = SlipText_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = ProtText_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = pushbuttonSolve_Callback(h, eventdata, handles, varargin)

%              ANALYSIS OF THE EQUIVALENT CIRCUIT
%               OF A THREE-PHASE INDUCTION MOTOR
%
%    The equivalent circuit can be used to determine the operating
%    characteristics an induction motor. Among the important aspects
%    in the steady-state are the variation of current, power, losses
%    and torque associated with various operating conditions.  Upon
%    entering the parameters of the equivalent circuit, performance
%    characteristics are obtained for the specified slip and the torque
%    slip curve is plotted on the screen.
%
% Copyright (C) 1999 by H. Saadat, Revised Summer 2002


%function [Rclv, Xmlv, Rchv, Xmhv, Zelv, Zehv, Ic, Io, Re, Zemag, Error] = OcScTest;
Error = 0;
V_LHandle=findobj(gcbf, 'Tag','V_LText');
Vm=eval(get(V_LHandle,'String'));
f_sHandle=findobj(gcbf, 'Tag','f_sText');
f=eval(get(f_sHandle,'String'));
P_nHandle=findobj(gcbf, 'Tag','P_nText');
P=eval(get(P_nHandle,'String'));
R_1Handle=findobj(gcbf, 'Tag','R_1Text');
R1=eval(get(R_1Handle,'String'));
X_1Handle=findobj(gcbf, 'Tag','X_1Text');
X1=eval(get(X_1Handle,'String'));
R_2Handle=findobj(gcbf, 'Tag','R_2Text');
R2=eval(get(R_2Handle,'String'));
X_2Handle=findobj(gcbf, 'Tag','X_2Text');
X2=eval(get(X_2Handle,'String'));
R_cHandle=findobj(gcbf, 'Tag','R_cText');
Rc=eval(get(R_cHandle,'String'));
X_mHandle=findobj(gcbf, 'Tag','X_mText');
Xm=eval(get(X_mHandle,'String'));
SlipHandle=findobj(gcbf, 'Tag','SlipText');
S=eval(get(SlipHandle,'String'));
ProtHandle=findobj(gcbf, 'Tag', 'ProtText');
Prot=eval(get(ProtHandle,'String'));

j = sqrt(-1);
Z1 = R1 + j*abs(X1);
Z2s= R2 +j*abs(X2);
if Rc ==0 || Xm==0
   Error = 1;
   plot(0, 0), axis off
   text(-1, .6,'Data error:  R_c an R_m cannot be zero, 0 < R_c \leq inf & 0 < X_m \leq inf', 'color', [1 0 0], 'erasemode','xor')
   text(-1, .25, 'Enter the correct value for R_c or X_m and try again. If neglected enter inf','color',[1 0 0], 'erasemode','xor');
   return, end
   if S > 1 || S <= 0
     Error=2;
     plot(0, 0), axis off
     text(-1, .5,'Data error:   s must be in per unit in the following range', 'color', [1 0 0], 'erasemode','xor')
   text(-1,  .25, '0 < s \leq 1. Enter the correct value for s and try again.','color',[1 0 0], 'erasemode','xor');
   return, end
if R2 ==0 
   Error = 3;
   plot(0, 0), axis off
  text(-.6, .4,'Data error:  R_2 cannot be zeo, enter the correct value and try again', 'color', [1 0 0], 'erasemode','xor')
  return, end

%%%%%%%
Vmp=Vm/sqrt(3);
V= Vmp+j*0;
Ns=120.*f/P;
Nr=(1.-S)*Ns;
Ws=2.*pi*Ns/60;
Wr=(1.-S)*Ws;
Zrd=R2+j*abs(X2);
if S~= 0
RLd= R2*(1-S)/S;
R2ds=R2/S;
else RLd =inf; R2ds=inf; end
Z2=R2ds + j*abs(X2);
if Rc == inf || Rc ==0, Gc = 0; else Gc = 1/Rc; end
if Xm == inf || Xm==0, Bm = 0; else Bm = 1/abs(Xm); end
Y2=1/Z2 ;
Ye=Gc-j*Bm;
if (Gc == 0 && Bm == 0)  
    Ze = inf+j*inf; else Ze = 1/Ye; end
Yf=Y2+Ye;
Zf=1/Yf;  Rf = real(Zf); Xf = imag(Zf);
Zin=Z1+Zf; Rin = real(Zin); Xin = imag(Zin);
if (Gc ~= 0  | Bm) ~= 0
      Zth= Z1*Ze/(Z1+Ze);
      Vthc=V*Ze/(Z1 +Ze);
      else
      Zth=Z1 ;
      Vthc=V ;
      end
Vth=abs(Vthc); Tth = angle(Vthc)*180/pi;
Rth=real(Zth);
Xth=imag(Zth);
Rdd=sqrt(Rth^2 + (Xth+X2)^2);
Smax=R2/Rdd;
Pmax=1.5*Vth^2./(Rth+Rdd);
Tmax=Pmax/Ws;
I1=V/Zin;
I1m=abs(I1);
T1=angle(I1)*180./pi;
%if real(Ze) == inf & imag(Ze) == inf I2 =I1; else
if Rc==inf && Xm==inf, I2=I1; else
I2= Ze*I1/(Ze+Z2); end
T2=angle(I2)*180/pi;
I2m=abs(I2);
Io=I1-I2; Iom=abs(Io); Ao=angle(Io)*180/pi;
Pcore=3*real(Ze)*Iom^2;
S1=3.*V*conj(I1);
SCL=3*R1*I1m^2;
Pin=real(S1);
Pg=3.* R2ds*I2m^2;
RCL=3.*R2*I2m^2;
Pm=Pg-RCL;
Td=Pg/Ws;
I2st = Vth/(Zth+Z2s);
Pgst = 3.*R2*abs(I2st)^2;
Tst = Pgst/Ws;
if S ~= 1
      Po=Pm-Prot;  hp = Po/746;
      To=Po/Wr;
      Ef=100*Po/Pin;
else, end

h0 = figure('Units','normalized', ...
        'PaperUnits','points', ...
       'Position',[0.15  0.09 0.8 0.8], ...
        'Tag','Fig2');
ax1=axes('Position',[0.2 .72   .55 .20]);

% Draw the Thevenin's Equivalent circuit
ths = 0:.0025:pi;
xs1 =1.45+0.075*cos(ths);
ys1 = 1.2 +0.075*sin(ths);
xs2 =1.6+0.075*cos(ths);
xs3 =1.75+0.075*cos(ths);
xs4 =1.9+0.075*cos(ths);
x5 = [0.75 0.75 .8];
y5 =[1.2 1.0 1.0];
x6 = [1.1 1.3 1.3];
y6 = [1.0 1.0  0];
xw = [0.65  0.65  1.4  1.4  0.65];
yw = [0.95  1.35  1.35  0.95  0.95];
% R_c
xr=[.5   .5   .3   .3   .35  .25   .35   .25   .35   .25   .35   .25   .3  .3  .5  .5];
yr=[1.2   1     1  .775 .75  .7    .65   .60   .55   .50   .45   .40   .375 .2 .2  0];
% X_m
thm=-pi/2:.0025:pi/2;
xm=0.7+0.05*cos(thm);
ym=.05*sin(thm);
xxm=[xm     xm      xm  xm] ;
yxm=[.4+ym 0.5+ym 0.6+ym 0.7+ym];
x1=[0.4  .65 .7     .80  0.9   1.0   1.1   1.2   1.25  1.575  ];
y1=[1.2   1.2  1.3    1.1  1.3   1.1   1.3    1.1   1.2  1.2];
plot(x1-1.2, y1,'b', 'erasemode','none')
hold on
axis('equal')
axis off
plot(xs1-1,ys1,'b', xs2-1,ys1, 'b', xs3-1,ys1,'b', xs4-1, ys1,'b') 
xv1=[.3  .7  .7];
yv1=[1   1   .75];
xv2=[.5  .5  .7 .7 ];
yv2=[0  .2   .2  .35];
x21=[3.2-.025  3.6  3.6];
y21=[1.2 1.2  .9];
x22=[-.8  3.6  3.6];
y22=[0  0   .3];
xL2=[3.55  3.55  3.65  3.65  3.55];
yL2=[.3  .9  .9  .3  .3];
plot(x21, y21, 'b',x22, y22,'b')
plot(xL2, yL2,'b')
x2=1.0+[0.6  .65 .7     .80  0.9   1.0   1.1   1.2   1.25  1.575  ];
y2=[1.2   1.2  1.3    1.1  1.3   1.1   1.3    1.1   1.2  1.2];
plot(x2, y2,'b')
plot(1.2+xs1,ys1,'b', 1.2+xs2,ys1, 'b', 1.2+xs3,ys1,'b', 1.2+xs4, ys1,'b') 
xd1=[.9750   1.6];
yd1=[1.2  1.2];
plot(xd1, yd1, 'b') 
text(-.835,1.1625, '\circ', 'color', [0 0 1])
text(-.835,-.0375, '\circ', 'color', [0 0 1])
%text(1.6, .35, 'jX_{m}', 'Fontsize', 10, 'color', [0 0 .675])
%text(.9, .35, 'R_{c}', 'Fontsize', 10, 'color', [0 0 .675])
text(-.34, .975, 'R_{th}', 'Fontsize', 10, 'color', [0 0 .675])
text(.6, 1.05, 'jX_{th}', 'Fontsize', 10, 'color', [0 0 .675])
text(1.85, 1, 'R_2^\prime', 'Fontsize', 10, 'color', [0 0 .675])
text(2.9, 1.05, 'jX_2\prime', 'Fontsize', 10, 'color', [0 0 .675])
%text(5.5, .6, 'V_2', 'Fontsize', 10, 'color', [0 0 .675])
%text(8.75, .6, 'S_{Load}', 'Fontsize', 10, 'color', [0 0 .675])
text(-.2, -.15, 'Thevenin''s Equivalent Circuit per phase', 'color',[0 0 .675])
text(-.5, 1.4, ['Z_{th} = ', num2str(Rth),' + j', num2str(Xth), ' \Omega'], 'Fontsize', 10, 'color', [1 0 0])
text(1.7, 1.4, ['{Z_2}^\prime = ', num2str(R2) ' + j', num2str(abs(X2)), ' \Omega'], 'Fontsize', 10, 'color', [1 0 0])
text(3.7, .75, 'R_L^\prime= {R_2}^\prime(1-s)/s', 'Fontsize', 10, 'color', [1 0 0])
text(3.7, .45, ['{R_L}^\prime = ', num2str(RLd), ' \Omega'], 'Fontsize', 10, 'color', [1 0 0])
text(-1.2, .6, ['V_{\phi (th)} = ', num2str(Vth),'\angle', num2str(Tth) ' V'], 'Fontsize', 10, 'color', [1 0 0])
%text(2.8, 1.4, ['{I_2}^\prime = ', num2str(I2), '\angle', num2str(T2), ' A'], 'Fontsize', 10, 'color', [1 0 0])
text(3.2, 1.4, '{I_2}^\prime \rightarrow', 'color', [1 0 0])
text(-.7, 1.7,['\bfAnalysis of the Equivalent Circuit at Slip s = ',num2str(S)], 'color', [0  0  .675]) 
hold off
% Display the results of theequivalent circuit analysis
ax2=axes('Position',[0.05  .28  .2  .34]);
axis off
hold on
text(0,1.125, ['V_{1(LL)} = ', num2str(Vm), ' V   ', 'R_1 = ', num2str(R1), ' \Omega   ', 'X_1 = ', num2str(X1), ' \Omega   ',...
             'R_2 = ', num2str(R2), ' \Omega   ', 'X_2 = ', num2str(X2), ' \Omega   ', 'R_c = ', num2str(Rc), ' \Omega   ', ...
             'X_m = ', num2str(Xm),' \Omega   '],  'Fontsize', 10, 'color', [0 0 0.77])
text(0, 1.0, ['{I_2}^\prime  = ', num2str(I2m), '\angle', num2str(T2), ' A'], 'Fontsize', 10,'color', [0 0 0.77 ]); 
text(0, .9, ['I_0 = '          , num2str(Iom), '\angle', num2str(Ao), ' A'], 'Fontsize', 10,'color', [0 0 0.77 ]); 
text(0,.8, ['I_1 = '          , num2str(I1m), '\angle', num2str(T1), ' A'], 'Fontsize', 10,'color', [0 0 0.77 ]) 
text(0,.7, ['P_{in} = ', num2str(Pin), ' W'], 'Fontsize', 10,'color', [0 0 0.77 ]); 
text(0,.6, ['P_{cu (stator)} = ', num2str(SCL), ' W'], 'Fontsize', 10,'color', [0 0 0.77 ]); 
text(0,.5, ['P_{core (stator)}  = ', num2str(Pcore), ' W'], 'Fontsize', 10,'color', [0 0 0.77 ]); 
text(0,.4, ['P_{ag} = ', num2str(Pg), ' W'], 'Fontsize', 10,'color', [0 0 0.77 ]); 
text(0,.3, ['P_{cu (rotor)} = ', num2str(RCL), ' W'], 'Fontsize', 10,'color', [0 0 0.77 ]) 
text(0,.2, ['T_d = ', num2str(Td), ' N-m'], 'Fontsize', 10,'color', [0 0 0.77 ]); 
if S~=1
text(0,.1, ['P_m = ', num2str(Pm), ' W'], 'Fontsize', 10,'color', [0 0 0.77 ]); 
text(0, 0, ['P_{rot} = ', num2str(Prot), ' W'], 'Fontsize', 10,'color', [0 0 0.77 ]); 
text(0, -.1, ['P_o = ', num2str(Po), ' W,  ', num2str(hp), ' hp'], 'Fontsize', 10,'color', [0 0 0.77 ]); 
text(0,-.2, ['T_o = ', num2str(To), ' N-m'], 'Fontsize', 10,'color', [0 0 0.77 ]); 
text(0,-.3 ,['\eta = ', num2str(Ef), ' %'], 'Fontsize', 10,'color', [0 0 0.77 ]); 
%%
text(0,-.4, ['T_{max} = ', num2str(Tmax), ' N-m'], 'Fontsize', 10,'color', [0 0 0.77 ]); 
text(0,-.5, ['s_{max} = ', num2str(Smax), ' p.u.'], 'Fontsize', 10,'color', [0 0 0.77 ]); 
text(0,-.6, ['T_{st} = ', num2str(Tst), ' W'], 'Fontsize', 10,'color', [0 0 0.77 ]); 
elseif S==1
text(0,.1, ['T_{max} = ', num2str(Tmax), ' N-m'], 'Fontsize', 10,'color', [0 0 0.77 ]); 
text(0,.0, ['s_{max} = ', num2str(Smax), ' p.u.'], 'Fontsize', 10,'color', [0 0 0.77 ]); 
text(0, -.1, ['T_{st} = ', num2str(Tst), ' W'], 'Fontsize', 10,'color', [0 0 0.77 ]); 
else, end
% Torque Speed characteristics
slip1 = Smax:-.005:.0001;
if Smax > 1, Smax =1;else,end
slip2 = 1:-.005:Smax;
slip=[slip2, slip1];
np1 = length(slip1);
np2 = length(slip2);
R2d1 = R2./slip1;
R2d2 = R2./slip2;
Z2d1=R2d1+ j*X2*ones(1,np1);
Z2d2=R2d2+ j*X2*ones(1,np2);
I2d1 = Vth./(Zth*ones(1,np1)+Z2d1);
I2d2 = Vth./(Zth*ones(1,np2)+Z2d2);
Pgd1 = 3*R2d1.*abs(I2d1).^2;
Pgd2 = 3*R2d2.*abs(I2d2).^2;
Tdev1 = Pgd1/Ws;
Tdev2 = Pgd2/Ws;
nr1 = Ns*(ones(1,np1)-slip1);
nr2 = Ns*(ones(1,np2)-slip2);
if length(nr2) > 4
   x1= 1.7*nr2(4);
   else x1 = 1.7*nr1(2); end
y1 = 0.86*Tst;
x2 = 0.96*(1- Smax)*Ns; y2 = 0.89*Tmax;
x3 = 0.95*Nr;  y3 =0.93*Td;
fy = 0:Td/20:Td; nf=length(fy);
fx = ones(1,nf)*Nr;
ax3=axes('Position',[0.365  .1  .53  .5]);

plot(nr1, Tdev1, 'm', nr2, Tdev2, 'r', fx, fy,'b'),grid
xlabel('Rotor speed, rpm', 'color', [0 0 0.675])
ylabel('Developed Torque,  N-m' , 'color', [0 0 0.675])
title('Motor torque-speed curve', 'color', [0 0 0.675])
text(x1, y1, 'T_{st}', 'color',[0 0 0.675])
text(x2, y2, 'T_{max}', 'color', [0 0 0.675])
if Nr ~= 0
  text(x3, y3, 'T_d', 'color',[0 0 0.675])
else, end
if S~=1
if S >= Smax
   text(x1,.75*y1, ['s_{max} = ',num2str(Smax), ', s \geq s_{max}'], 'color', [1 0 0])
   text(x1, .5*y1,'Motor cannot operate in this region.', 'color', [1 0 0])
   else, end
   hold off, 
else, end


% --------------------------------------------------------------------
function varargout = pushbuttonInfo_Callback(h, eventdata, handles, varargin)
figure(inductionmotorinfo)
% --------------------------------------------------------------------
function varargout = pushbuttonExit_Callback(h, eventdata, handles, varargin)
close all

Contact us