% Programa para la construccion de la Matriz Impedancia de barra % ZbusMaker, Version 2.00 % Disenado y Programado por: Francisco M. Gonzalez-Longatt % fglongatt@cantv.net fglongatt@ieee.org % http://www.giaelec.org % Derechos de autor reservados % Solo para ser usado para fines de investigacion o academicos % Version inicial: Abril, 2003. % Revision: Francisco M. Gonzalez-Longatt, Enero 2008 %------------------------------------------------------------------------ clc clear disp(' Programa de Matriz Impedancia de Barra') disp(' ZbusMaker Version 2.00 ') disp(' ') disp(' Programado por: Francisco M. Gonzalez-Longatt') disp(' Version Inicial: Abril 2003') disp(' Ultima Revision: Enero 2008') disp(' ') disp(' ') disp('-----------------------------------------------------------') m=input(' Numero de ramas :'); disp(' ') op=7; bandera=1; d2=0; while (op ~= 6), clc disp(' Programa de Matriz Impedancia de Barra') disp(' ZbusMaker Version 2.00 ') disp(' ') disp(' ') numero =[' Operacion ' int2str(bandera)]; disp(numero) disp('-----------------------------------------------------') disp(' [0] Primitiva') disp(' [1] Elemento entre Referencia y Barra Nueva') disp(' [2] Elemento entre Barra existente y Barra Nueva') disp(' [3] Entre dos Barras Existentes') disp(' [4] Reduccion de Kron') disp(' [5] Ver matriz Z') disp(' [6] Salir') disp('-----------------------------------------------------') barras =[' Barras del Sistema :' int2str(d2)]; disp(barras); disp('-----------------------------------------------------') op=input(' Numero de operacion:'); disp(' '); if op==0 % Intoduccion de la primitiva disp('-----------------------------------------------------') disp(' Introduccion de la Zprimitiva') disp('-----------------------------------------------------') orden=input(' Orden de la primitiva :'); for s = 1:orden, for t=1:orden, mm=[' Z[' int2str(s) ',' int2str(t) ']=' ]; Z(s,t)=input(mm); end end end if op==1 % Operacion Numero 1 % Agrerar un elemento entre barra de referencia y barra nueva disp('-----------------------------------------------------') disp(' Elemento entre Barra de Referencia y Barra Nueva') disp('-----------------------------------------------------') disp(' Barra de Inicio : 0 (Barra de Referencia)'); bus_new =input(' Barra Final :'); [d1,d2]=size(Z); while (bus_new <= d2), texto=[' La barra nueva debe ser mayor a ' int2str(d2)]; disp(texto); bus_new =input(' Barra Final :'); end mm=[' Z[' int2str(0) ',' int2str(bus_new) ']=' ]; Zpq=input(mm); Z(:,bus_new)=0; Z(bus_new,:)=0; Z(bus_new,bus_new)=Zpq; end if op==2 % Operacion Numero 2 % Agrerar un elemento entre barra existente y barra nueva disp('-----------------------------------------------------') disp(' Elemento entre Barra de Existente y Barra Nueva') disp('-----------------------------------------------------') bus_old=input(' Barra de Inicio :'); [d1,d2]=size(Z); while (bus_old > d2), texto=[' La barra nueva debe ser menor a ' int2str(d2) ]; disp(texto); bus_old =input(' Barra Inicio :'); end bus_new =input(' Barra Final :'); while (bus_new < d2), texto=[' La barra nueva debe ser mayor a ' int2str(d2) ]; disp(texto); bus_new =input(' Barra Final :'); end mm=[' Z[' int2str(bus_old) ',' int2str(bus_new) ']=' ]; Zpq=input(mm); Z(:,bus_new)=Z(:,bus_old); Z(bus_new,:)=Z(bus_old,:); Z(bus_new,bus_new)=Z(bus_old,bus_old)+Zpq; end if op==3 % Operacion Numero 3 % Agrerar un elemento entre dos barras existentes disp('-----------------------------------------------------') disp(' Elemento entre dos Barras Existentes') disp('-----------------------------------------------------') [d1,d2]=size(Z); bus_new=input(' Barra de Inicio :'); while (bus_new > d2), texto=[' La barra nueva debe ser menor a ' int2str(d2) ]; disp(texto); bus_new =input(' Barra Inicio :'); end bus_old =input(' Barra Final :'); while (bus_old > d2), texto=[' La barra nueva debe ser menor a ' int2str(d2) ]; disp(texto); bus_old =input(' Barra Final :'); end mm=[' Z[' int2str(bus_new) ',' int2str(bus_old) ']=' ]; Zpq=input(mm); lazo=d2+1; Z(:,lazo)=Z(:,bus_new)-Z(:,bus_old); Z(lazo,:)=Z(bus_new,:)-Z(bus_old,:); Z(lazo,lazo)=Z(bus_old,bus_old)+Z(bus_new,bus_new)-2*Z(bus_old,bus_new)+Zpq; disp('-----------------------------------------------------') disp(' HAY QUE APLICAR REDUCCION DE KRON') disp('-----------------------------------------------------') end if op==4 % Reduccion de Kron disp('-----------------------------------------------------') disp(' Reduccion de Kron') disp('-----------------------------------------------------') [d1,d2]=size(Z); lazo=d2; for s = 1:lazo-1, for t=1:lazo-1, Z(s,t)=Z(s,t)-Z(s,lazo)/Z(lazo,lazo)*Z(lazo,t); end end Z(:,lazo)=[]; Z(lazo,:)=[]; end if op==5 % Muestra la matriz Impedancia de Barra disp('-----------------------------------------------------') disp(' Matriz Impedancia de Barra') disp(' ') Z [d1,d2]=size(Z); disp('-----------------------------------------------------') tam=[' Orden de la matriz es :' int2str(d1) 'x' int2str(d2) ]; disp(tam) disp(' ') sss=input(' Presione '); end if op==6 % Salir disp('-----------------------------------------------------') disp(' Gracias por Usar Zbus') disp(' Programa desarrollado por: Francisco M. Gonzalez-Longatt') disp(' Caracas, UCV, Marzo 2003') end if (op >= 1) | (op <= 3) disp('-----------------------------------------------------') disp(' Matriz Impedancia de Barra') disp(' ') Z [d1,d2]=size(Z); disp('-----------------------------------------------------') tam=[' Orden de la matriz es :' int2str(d1) 'x' int2str(d2) ]; disp(tam) disp(' ') sss=input(' Presione '); end if op ~=6 bandera=bandera+1; end end