EXP 6
TRANSIENT STABILITY ANALYSIS
clc;
clear all;
close all;
if exist('Pm')~=1
Pm=input('Generator output power in p.u. Pm = ');
else end
if exist('E')~=1
E=input('Generator output power in p.u. E = ');
else end
if exist('V')~=1
V=input('Generator output power in p.u. V = ');
else end
if exist('X1')~=1
X1=input('Transfer Reactance before Fault in p.u. X1 = ');
else end
if exist('X2')~=1
X2=input('Transfer Reactance during Fault in p.u. X2 = ');
else end
if exist('X3')~=1
X3=input('Transfer Reactance after Fault in p.u. X3 = ');
else end
P1max=(E*V)/X1;
P2max=(E*V)/X2;
P3max=(E*V)/X3;
delta=0:0.01:pi;
P1=P1max*sin(delta);
P2=P2max*sin(delta);
P3=P3max*sin(delta);
d0=asin(Pm/P1max);
dmax=pi-asin(Pm/P3max);
cosdc=(Pm*(dmax-d0)+P3max*cos(dmax)-P2max*cos(d0))/(P3max-P2max);
if abs(cosdc)>1
fprintf('No critical clearing angle could be found.\n');
fprintf('System can remain stable during this disturbance\n\n');
return
else end
dc=acos(cosdc);
if dc>dmax
fprintf('No critical clearing angle could be found.\n');
fprintf('System can remain stable during this disturbance\n\n');
return
else end
Pmx=[0 pi-d0]*180/pi;
Pmy=[Pm Pm];
X0=[d0 d0]*180/pi;
Y0=[0 Pm];
Xc=[dc dc]*180/pi;
Yc=[0 P3max*sin(dc)];
Xm=[dmax dmax]*180/pi;
Ym=[0 P3max*sin(dmax)];
d0=d0*180/pi;
dmax=dmax*180/pi;
dc=dc*180/pi;
X=(d0:1:dc);
Y=P2max*sin(X*pi/180);
Y1=P2max*sin(d0*180/pi);
Y2=P2max*sin(dc*180/pi);
X=[d0 X dc];
Y=[Pm Y Pm];
XX=dc:0.1:dmax;
h=P3max*sin(XX*pi/180);
XX=[dc XX dmax];
hn=[Pm h Pm]
delta=delta*180/pi;
if X2==inf
fprintf('\n for this case tc can be found from analytical formula\n');
H=input('To find centre of intertia constant H, or (0 or skip)H= ');
if H~=0
d0r=d0*pi/180;
dcr=dc*pi/180;
tc=sqrt(2*H*(dcr-d0r))/(pi*60*Pm);
else end
else end
fprintf('Initial power angle=%7.3f\n',d0)
fprintf('Maximum angle swing=%7.3f\n',dmax)
fprintf('Critical clearing angle',dc)
if X2==inf&&H~=0
fprintf('Critical clearing=%7.3fsec.\n\n',tc)
else end
h=figure,figure(h);
fill(X,Y,'m')
hold;
fill(XX,hn,'c')
plot(delta,P1,'-',delta,P2,'r-',delta,P3,'g-',Pmx,Pmy,'b-
',X0,Y0,Xc,Yc,Xm,Ym),grid
title('Application of equal area criterion to a critically cleared system')
xlabel('Power angle,degree')
ylabel('Power per unit')
text(5,1.07*Pm,'Pm')
text(50,1.05*P1max,['Critical clearing angle=',num2str(dc)])
axis([0 180 0 1.1*P1max])
hold off;
OUTPUT: