clc, clear,clf
%PROGRAMA PARA EL ESTUDIO DE ESTABILIDAD TRANSITORIA POR EL MFET INCLUYENDO MODELOS DE CARGA ESTATICA NO LINEAL PARA UN SMBI
disp (' INSTITUTO POLITECNICO NACIONAL') disp ('ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA')
disp (' SECCION DE ESTUDIOS DE POSGRADO E INVESTIGACION') disp (' ')
disp (' TOPICOS SELECTOS EN I. E.') disp (' ')
disp ('"CALCULO DEL VECTOR IGL PARA EL SISTEMA DEL KUNDUR"') disp (' ')
disp ('TESISTA: EDGAR L. BELMONTE GONZALEZ') disp (' ')
disp ('DIRECTOR DE TESIS: DR. DANIEL OLGUIN SALINAS') disp (' ')
disp ('FEBRERO 2004') disp (' ')
pause %Tiempos
te=input('Tiempo de estudio (seg)=') tlib=input('Tiempo de liberación (seg)=') % disp('DATOS DE LA CORRIDA DE FLUJOS')
V1=0.90081; %Voltaje en el bus infinito
V2=1.00000; %Voltaje en el bus de generacion V3=0.925079; %Voltaje en el bus de carga Alfa1=00.0000; %Angulo del bus infinito Alfa2=14.0446; %Angulo del bus de generacion Alfa3=05.6533; %Angulo del bus de carga Xbi=0.0001i; %Reactancia transitoria del bus infinito Xpd=0.30i; %Reactancia transitoria en el eje d del generador Xtr=0.15i; %Reactancia del transformador
Xl1=0.50i; %Reactancia de la linea 1 Xl2=0.93i; %Reactancia de la linea 2 F=60; %Frecuencia nominal (Hz)
pmec=0.9; %Potencia mecánica de entrada
Pgen=0.9; %Potencia activa del generador Qgen=0.565500; %Potencia reactiva del generador Pbi=-0.252445; %Potencia activa del bus infinito Qbi=-0.054765; %Potencia reactiva del bus infinito Pcarga=0.647555; %Potencia activa de la carga Qcarga=0.314527; %Potencia reactiva de la carga
p2=0.70; q2=0.70; %Factores de la componente de corriente constante (valor maximo=1)
p3=0.30; q3=0.30; %Factores de la componente de potencia constante (valor maximo=1)
CI=3.5; %CI= Cte. de inercia H (rad*seg) m=CI/(180*F);
%--- %P R E F A L L A
%--- disp ('SE CALCULAN LAS VARIABLES DE PREFALLA...') %Calculo de los voltajes internos
Sgen=Pgen+1i*Qgen; anggen=atan(imag(Sgen)/real(Sgen))*180/pi; Igen=conj(Sgen)/conj(V2*(cos(Alfa2*pi/180)+1i*sin(Alfa2*pi/180))); angigen=atan(imag(Igen)/real(Igen))*180/pi; ei=V2*(cos(Alfa2*pi/180)+1i*sin(Alfa2*pi/180))+Igen*Xpd; eint=abs(ei); delta=atan(imag(ei)/real(ei))*180/pi; Sbi=Pbi+1i*Qbi; angbi=atan(imag(Sbi)/real(Sbi))*180/pi; Ibi=conj(Sbi)/conj(V1*(cos(Alfa1*pi/180)+1i*sin(Alfa1*pi/180))); angibi=atan(imag(Ibi)/real(Ibi))*180/pi; eibir=V1*(cos(Alfa1*pi/180)+1i*sin(Alfa1*pi/180))+Ibi*Xbi; eibi=abs(eibir); deltabi=atan(imag(eibir)/real(eibir))*180/pi;
%Vector de voltajes iniciales
vecv=[V1*(cos(Alfa1*pi/180)+1i*sin(Alfa1*pi/180)) V2*(cos(Alfa2*pi/180)+1i*sin(Alfa2*pi/180)) V3*(cos(Alfa3*pi/180)+1i*sin(Alfa3*pi/180))];
i2g1=eibir/Xbi; %Corriente interna del bus infinito
sigma1=atan(imag(i2g1)/real(i2g1))*180/pi; %Angulo de la corriente interna del bus infinito
i2g2=ei/Xpd; %Corriente interna del generador sincrono
sigma2=atan(imag(i2g2)/real(i2g2))*180/pi; %Angulo de la corriente interna del generador sincrono
Pc=Pcarga*p2; Qc=Qcarga*q2; %Pontencias real y reactiva de la carga con corriente constante
Pp=Pcarga*p3; Qp=Qcarga*q3; %Pontencias real y reactiva de la carga con potencia constante
Scc=Pc+1i*Qc; %Potencia aparente de la carga de corriente constante
Scp=Pp+1i*Qp; %Potencia aparente de la carga de potencia constante
I1c=conj(Scc)/conj(V3*(cos(Alfa3*pi/180)+1i*sin(Alfa3*pi/180))); %Componente de la carga de corriente constante (nodo 3) I1p=conj(Scp)/conj(V3*(cos(Alfa3*pi/180)+1i*sin(Alfa3*pi/180))); %Componente de la carga de potencia constante (nodo 3) if (I1c==0.00)
fic=0.0; Angc=0.0; else
fic=atan(imag(I1c)/real(I1c))*180/pi; %Angulo debido a la corriente constante de la carga
Angc=atan(imag(Scc)/real(Scc)); %Angulo de la carga (corriente constante)
end if (I1p==0.00) fip=0.0; Angp=0.0; else
fip=atan(imag(I1p)/real(I1p))*180/pi; %Angulo debido a la potencia constante de la carga
Angp=atan(imag(Scp)/real(Scp)); %Angulo de la carga (potencia constante)
end
%Corriente compuesta de la carga I1=I1c+I1p;
%Vector de corrientes iniciales veci=[i2g1
i2g2 -I1]; Yf=0.0;
vecvi=vecv; %Vector de voltajes iniciales vecii=veci; %Vector de corrientes iniciales
YBUSKUN %Subrutina para elaborar YAbus, YBbus, YCbus, FDC y el Jacobiano %Matrices de prefalla YAbusa=YAbus; YBbusa=YBbus; YCbusa=YCbus; FDCA=FDC; Jaca=Jac;
epsilon=0.001; %Tolerancia de convergencia indice=0;
%datos requeridos para las subrutinas VARIDELTA y NRM JM=Jaca; %Jacobiano para N-R modificado
YA=YAbusa; %Matriz YAbus de prefalla FDC=FDCA; %Factor de distribucion de corrientes de prefalla
cont=0;
angulo1=0; %Los angulos y el incremento angulo2=pi; %determinan los limites empleados
incre=pi/1800; %en la subrutina VARIDELTA
VARIDELTA %Subrutina para variar el angulo delta
% Variables a graficar de prefalla
pea=pe; %Potencia electrica de prefalla
peta=pet; %Potencia electrica transmitida de prefalla pela=pel; %Potencia electrica de la carga en prefalla v1a=v1; %Voltaje o corriente de prefalla en el bus 1 (modificar NRM para pedir corrientes)
v2a=v2; %Voltaje o corriente de prefalla en el bus 2 (modificar NRM para pedir corrientes)
v3a=v3; %Voltaje o corriente de prefalla en el bus 3 (modificar NRM para pedir corrientes)
peea=pee; %PEE de prefalla peia=pei; %PEI de prefalla figure(1) subplot (2,1,1) plot(dlt,pea,dlt,pm,dlt,peta,dlt,pela) title('CURVAS POTENCIA-ÁNGULO') xlabel('Ángulo (grados)') ylabel('POTENCIA (P.U.)') grid subplot (2,1,2) plot(dlt,v1a,dlt,v2a,dlt,v3a)
title('CURVAS DE VOLTAJE, ANGULO Y RELACION DE VOLTAJES') xlabel('Ángulo (grados)') ylabel('MAGNITUD') grid pause %--- %P O S F A L L A %--- %Se reinician valores
clear Yext indice v1 v2 v3 pe pet pel dlt
disp ('SE CALCULAN LAS VARIABLES DE POSFALLA...')
Xl1=Xl1;
Xl2=999999999999;
Yf=0.0; %Admitancia de falla YBUSKUN %Matrices de posfalla YAbusc=YAbus; YBbusc=YBbus; YCbusc=YCbus; FDCC=FDC; Jacc=Jac; Yeqc=Yeq; indice=0;
%Datos requeridos para las subrutinas VARIDELTA y NRM vecv=vecvi; %Vector de voltajes iniciales veci=vecii; %Vector de corrientes iniciales JM=Jacc; %Jacobiano para N-R modificado
YA=YAbusc; %Matriz YAbus de prefalla FDC=FDCC; %Factor de distribucion de corrientes de prefalla
cont=0;
angulo1=0; %Los angulos y el incremento angulo2=pi; %determinan los limites empleados
incre=pi/1800; %en la subrutina VARIDELTA
VARIDELTA %Subrutina para variar el angulo delta
% Variables a graficar de posfalla
pec=pe; %Potencia electrica de posfalla
petc=pet; %Potencia electrica transmitida de posfalla pelc=pel; %Potencia electrica de la carga en posfalla v1c=v1; %Voltaje o corriente de posfalla en el bus 1 (modificar NRM para pedir corrientes)
v2c=v2; %Voltaje o corriente de posfalla en el bus 2 (modificar NRM para pedir corrientes)
v3c=v3; %Voltaje o corriente de posfalla en el bus 3 (modificar NRM para pedir corrientes)
peec=pee; %PEE de posfalla peic=pei; %PEI de posfalla figure(3) subplot (2,1,1) plot(dlt,pec,dlt,pm,dlt,petc,dlt,pelc) title('CURVAS POTENCIA-ÁNGULO') xlabel('Ángulo (grados)') ylabel('POTENCIA (P.U.)') grid subplot (2,1,2) plot(dlt,v1c,dlt,v2c,dlt,v3c)
title('CURVAS DE VOLTAJE, ANGULO Y RELACION DE VOLTAJES') xlabel('Ángulo (grados)') ylabel('MAGNITUD') grid pause %--- % F A L L A %--- %Se reinician valores
clear Yext indice v1 v2 v3 %pe pet pel
YBUSKUN %Matrices de falla YAbusb=YAbus; YBbusb=YBbus; YCbusb=YCbus; FDCB=FDC; Jacb=Jac; Yeqb=Yeq; % indice=0;
%datos requeridos para las subrutinas VARIDELTA y NRM
% vecv=vecvi; %Vector de voltajes iniciales % veci=vecii; %Vector de corrientes iniciales % JM=Jacb; %Jacobiano para N-R modificado
% YA=YAbusb; %Matriz YAbus de falla % FDC=FDCB; %Factor de distribucion de corrientes de falla
% cont=0;
% angulo1=0; %Los angulos y el incremento
% angulo2=pi; %determinan los limites empleados
% incre=pi/1800; %en la subrutina VARIDELTA
% VARIDELTA %Subrutina para variar el angulo delta
% % Variables a graficar de falla
% peb=pe; %Potencia electrica de falla
% petb=pet; %Potencia electrica transmitida de falla % pelb=pel; %Potencia electrica de la carga en falla % v1b=v1; %Voltaje o corriente de falla en el bus 1 (modificar NRM para pedir corrientes)
% v2b=v2; %Voltaje o corriente de falla en el bus 2 (modificar NRM para pedir corrientes)
% v3b=v3; %Voltaje o corriente de falla en el bus 3 (modificar NRM para pedir corrientes)
% peeb=pee; %PEE de falla % peib=pei; %PEI de falla % figure(2) % subplot (2,1,1) % plot(dlt,peb,dlt,pm,dlt,petb,dlt,pelb) % title('CURVAS POTENCIA-ÁNGULO') % xlabel('Ángulo (grados)') % ylabel('POTENCIA (P.U.)') % grid % subplot (2,1,2) % plot(dlt,v1b,dlt,v2b,dlt,v3b)
% title('CURVAS DE VOLTAJE, ANGULO Y RELACION DE VOLTAJES') % xlabel('Ángulo (grados)') % ylabel('MAGNITUD') % grid % pause tama=[length(pm) length(pea)]; tam=min(tama); figure(4) plot(dlt(1,1:tam),pea(1,1:tam),dlt(1,1:tam),pec(1,1:tam),dlt(1,1:tam),pm(1,1 :tam))
title('CURVAS POTENCIA-ÁNGULO DE PREFALLA, FALLA Y POSFALLA') xlabel('Ángulo (grados)') ylabel('POTENCIA (P.U.)') grid % pause %--- % ENERGIA CRITICA %--- indice=0;
JM=Jacc; %Jacobiano para N-R modificado
YA=YAbusc; %Matriz YAbus de falla FDC=FDCC; %Factor de distribucion de corrientes de falla
Yeq=Yeqc;
%Se obtiene la energia critica
NI=10; %NUMERO DE SEGMENTOS
angulo1=peec*pi/180; %Los angulos y el incremento
angulo2=peic*pi/180; %determinan los limites empleados
incre=(peic-peec)*pi/(180*NI); %en la subrutina VARDLTTRAP cont=0; VARDLTTRAP %Energia crítica ecrit=-pmec*(angulo2-angulo1)-eibi*eint*abs(Yeq)*(cos(angulo2)- cos(angulo1))+funcion %energia critica
%--- % ENERGIA EN LA TRAYECTORIA DE FALLA
%---
%Constantes consideradas
tol=0.0001; %Tolerancia de acuerdo al paso de integracion
c=pi/180;
ti=0.0; %Tiempo inicial h=tol; %Paso de integracion
curvas=4; %El numero de curvas no debe ser menor a 4
di=0.0; %Limite inferior del eje delta df=180; %Limite superior del eje delta cte=1.0; %Para obtener la curva mas cercana al pee % disp('Angulo de falla='),peea; dfalla=peea*c; %Numero de pasos n=(te-ti)/h;
%Calculo de la trayectoria de falla %Se reinician valores
pe=0; pet=0; pel=0;
%Condiciones iniciales
vecv=vecvi; %Vector de voltajes iniciales veci=vecii; %Vector de corrientes iniciales JM=Jacb; %Jacobiano para N-R modificado
YA=YAbusb; %Matriz YAbus de falla FDC=FDCB; %Factor de distribucion de corrientes de falla
Yeq=Yeqb;
DELTA(1)=peea*c; %Angulo de falla en radianes j=DELTA(1); veci(2)=eint*(cos(j)+1i*(sin(j)))/Xpd; cont=1; NRM DDELTA(1)=0.0;
% DELTA(1)=peea*c; %Angulo de falla en radianes PE(cont)=pe(1); Pa(1)=(pmec-PE(1)); C1=h^2/m; t(1)=0.0; VEL(1)=0.0;
angulo1=DELTA(1); %Los angulos y el incremento
angulo2=DELTA(1); %determinan los limites empleados
incre=(angulo2-angulo1)/(NI); %en la subrutina VARDLTTRAP cont=0; funcion=0.0; VARDLTTRAP ener=0.5*m*VEL(1)^2-pmec*(angulo2-angulo1)- eibi*eint*abs(Yeq)*(cos(angulo2)-cos(angulo1))+funcion; margen(1)=ecrit-ener; cont=1; %pause
%Calculo del tcr por el metodo de paso a paso for I=2:n cont=I; DDELTA(I)=DDELTA(I-1)+C1*Pa(I-1)*c; DELTA(I)=DELTA(I-1)+DDELTA(I); j=DELTA(I); veci(2)=eint*(cos(j)+1i*(sin(j)))/Xpd; if (p3>0.0 | q3>0.0)
pe(I)=0; %Eliminar este renglon si la falla no es en el nodo de A.T. del TR
else NRM end PE(I)=pe(I); Pa(I)=pmec-PE(I); t(I)=t(I-1)+h; VEL(I)=DDELTA(I)/h;
%Calculo del angulo de liberación if abs(t(I)-tlib)<=tol/2;
conta=cont;
disp('El angulo de liberación es='); DELTA(I)/c
%Se obtiene la energia en el instante de liberacion
vecv=vecvi; %Vector de voltajes iniciales veci=vecii; %Vector de corrientes iniciales
angulo1=DELTA(I); %Los angulos y el incremento
angulo2=dfalla; %determinan los limites empleados
incre=(angulo2-angulo1)/(NI); %en la subrutina VARDLTTRAP cont=0; funcion=0.0; elib=0.5*m*VEL(I)^2-pmec*(angulo2-angulo1)- eibi*eint*abs(Yeq)*(cos(angulo2)-cos(angulo1))+funcion margen(I)=ecrit-elib; if (abs(ecrit-elib)<=0.0001)
disp 'El sistema es criticamente estable' disp 'El tiempo critico de liberacion es',tlib elseif((ecrit-elib)>0.0001)
disp 'El sistema es estable para el tiempo de liberacion dado' else
disp 'El sistema es inestable para el tiempo dado' break
end cont=conta; else
%Calculo del margen de energia conta=cont;
%Se obtiene la energia en el angulo DELTA
% vecv=vecvi; %Vector de voltajes iniciales
% veci=vecii; %Vector de corrientes iniciales
% NI=10; %NUMERO DE SEGMENTOS
angulo1=DELTA(I); %Los angulos y el incremento
angulo2=dfalla; %determinan los limites empleados
incre=(angulo2-angulo1)/(NI); %en la subrutina VARDLTTRAP
cont=0; funcion=0.0; VARDLTTRAP
%Energia en el instante en el angulo DELTA ener=0.5*m*VEL(I)^2-pmec*(angulo2-angulo1)- eibi*eint*abs(Yeq)*(cos(angulo2)-cos(angulo1))+funcion; margen(I)=ecrit-ener; if (abs(ecrit-ener)<=0.0005) disp ' ' disp ' '
disp 'El tiempo critico de liberacion es',t(I) end cont=conta; end end figure (5) plot(DELTA/c,VEL) title('Plano de Fase') xlabel('Angulo (deg)') ylabel('Velocidad (rad/seg)') grid figure (6) plot(t,margen) title('Margen de energía') xlabel('Tiempo (s)')
ylabel('Margen de energía (p.u.)') grid
end