Análisis de Flujo de Carga Presentación del problema

Slides:



Advertisements
Presentaciones similares
Serie de Taylor y Maclaurin
Advertisements

UNIVERSIDAD NACIONAL DE INGENIERÍA UNI- NORTE
FACTORIZACIÓN LU Bachilleres:
EC. DIFERENCIAL Def: Se llama ecuación diferencial a una relación que contiene una o varias derivadas de una función no especificada “y” con respecto.
DERIVADA DE UNA FUNCION REAL
Análisis de Flujo de Carga Presentación del problema
Análisis Matemático III
KRIGING.
Compensación utilizando Métodos de respuesta en frecuencia
CÁLCULO DIFERENCIAL.
Método de Gauss-Seidel
Ecuaciones diferenciales de 1er orden :
Método de Acuitardo Hantush Leaky Método de Neuman para Acuíferos Libres (no confinados) Alfredo Olvera Gómez.
Circunferencia. Presentado por: María del Rosario Ochoa Guerrero.
Transferencia de potencia a través de cuadripolos
2- SIMPLEX.
ESTRUCTURAS DE CONTROL
Unidad temática 3 Análisis de esfuerzos en un punto
GEOMETRIA ANALITICA.
Biograma Introducir datos en una matriz. Elegir método para máximos y mínimos. Calcular los máximos y mínimos observados. Límites.
Programación Numérica
Método de Gauss-Seidel
Programación en Matlab
Estabilidad Transitoria en Sistemas Multimaquinas
Flujo de carga en Sistemas de Potencia.
Métodos iterativos para sistemas lineales
Despacho Optimo de la Generación Costos de la generación.
2º Bachillerato de Ciencias y Tecnología BC2A – BC2B Curso
GRUPO DE INVESTIGACION EN CONTROL INDUSTRIAL
Utilización de la Carta de Smith
Material de apoyo Unidad 4 Estructura de datos
Métodos de Análisis Ingenieril
Valores Por Unidad REDES ELECTRICAS 2008.
SEGURIDAD EN SISTEMAS DE POTENCIA
Corriente alterna 1. Generador de corriente alterna. Frecuencia y fase. Valores eficaces. Fasores. 2. Circuito con resistencia, condensador o bobina. Impedancia.
Flujo de carga en Sistemas de Potencia.
ESTUDIO DE FLUJOS DE POTENCIA
M. en C. José Andrés Vázquez Flores
JUSTIFICACIÓN TEÓRICA PARA MEJORAR LA CALIDAD DE SUMINISTRO
Interpolación y aproximación polinomial
Bisección. Newton-Raphson Secante UNIVERSIDAD NACIONAL EXPERIMENTAL DEL TÁCHIRA DECANATO DE POSTGRADO Maestría en Matemática Mención Educación Matemática.
Sabemos reconocerlas, y calcularlas como soluciones de sistemas de ecuaciones, o de desigualdades Buscamos métodos de cálculo generales y eficientes Problemas.
GEOMETRIA ANALITICA.
Tiro Parabólico Supongamos que se dispara un proyectil, con velocidad inicial v0, desde una altura h, formando un ángulo  con la horizontal. Se pretende.
UNIDAD 4 Clase 6.3 Tema: Sistema de Ecuaciones Lineales
DIAGRAMA DE FLECHAS O RUTA CRITICA
INAOE CURSO PROPEDEUTICO PARA LA MAESTRIA EN ELECTRONICA
Matriz inversa Método Gauss Jordan.
MATRICES.
MATRICES Y DETERMINANTES
“CURSO PROPEDÉUTICO PARA EL MEJORAMIENTO DEL PENSAMIENTO MATEMÁTICO”
Método de mínimos cuadrados
Introducción a los TADs
Análisis cinemático: POSICION
Resolución Gráfica de PPL
Análisis cinemático: ACELERACION
MATRIZ INVERSA.
MATRICES.
Unidad 2 Matrices.
Evaluación Económica Financiera de Proyectos
Grupo de Modelamiento de Sistemas Programa de Ingeniería Civil UdeA.
PROGRAMACIÓN Grupo de Modelamiento de Sistemas
Grupo de Modelamiento de Sistemas Programa de Ingeniería Civil U de A.
Ing. Haydeli del Rosario Roa Lopez
Álgebra, ecuaciones y sistemas
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO FACULTAD DE QUÍMICA P.E.L: INGENIERO QUÍMICO U.A: ÁLGEBRA LINEAL Unidad II Conceptos básicos de Álgebra Tema:
Flujos de Carga (Load Flow)
UNIVERSIDAD NACIONAL EXPERIMENTAL DEL TACHIRA UNIDAD DE ADMISION CURSO PROPEDEUTICO ASIGNATURA FISICA Prof. Juan Retamal G.
ESTUDIO DE SUS PARÁMETROS FUNDAMENTALES CATEDRA DE A MEDICIONES I 1.
Instituto de Protecciones de Sistemas Eléctricos de Potencia Universidad Nacional de Río Cuarto Calculo de H (Matriz Jacobiana) Potencia Activa inyectada.
Transcripción de la presentación:

Análisis de Flujo de Carga Presentación del problema Slack Carga_1 Carga_2 Carga_4 Carga_3 Gen_2 Gen_1 P G V0° |V| Q Dada una red Mediante resolución de las ecuaciones de flujo de carga determino las siguientes incognitas: Barra Tensión Angulo ------Carga------ ---Generación--- Shunt Mag. grados MW MVAr MW MVAr MVAr Carga_1 1.001 -2.938 200.0 30.0 0.0 0.0 0.0 Carga_2 1.029 -3.427 200.0 20.0 0.0 0.0 0.0 Carga_3 1.009 -13.732 100.0 30.0 0.0 0.0 0.0 Carga_4 0.893 -23.205 400.0 100.0 0.0 0.0 0.0 Gen_1 1.050 -0.709 0 0 500.0 161.3 0.0 Gen_2 1.050 -11.968 0 0 200.0 174.8 0.0 Slack 1.000 0.000 0.0 0.0 340.1 -22.6 0.0 Luego aplicando en forma directa las ecuaciones de la red determino: Una vez resueltas las barras, mediantes las ecuaciones fundamentales de circuitos, determino: Flujo en las líneas y pérdidas --Línea-- -Flujo en la línea- --Pérdidas-- desde hasta MW Mvar MVA MW Mvar Carga_1 Carga_3 134.416 -28.964 137.501 4.205 -2.128 Carga_2 4.336 -41.077 41.305 0.156 -17.693 Carga_2 Carga_4 242.202 86.285 257.113 14.930 64.411 Carga_1 -4.180 23.384 23.754 0.156 -17.693 . . . . . . . . . . . . . .

Expresiones fundamentales de la red Vi yi1 V1 yi2 Ii . V2 yin Vn yi0

Clasificación de las barras de la red Las barras son clasificadas generalmente en tres tipos: Barra Slack - Es tomada como referencia donde |V| y  son especificados, no aporta ecuaciones al algoritmo, si no que una vez calculados los |V| y  en el resto de las barras, se calcula Pslack y Qslack : Barra de carga - o barra PQ, se especifica la potencia activa y reactiva, el módulo y la fase de las tensiones son desconocidas, y se calculan resolviendo el siguiente set de ecuaciones no lineares: Barra de generación- o barra PV o barras de tensión controlada, se especifican el módulo de la tensión y la potencia activa, debiendose determinar la fase de la tensión y la potencia reactiva.Los límites de la potencia reactiva son también especificados. Se aplica entonces una única ecuación por barra para el cálculo de la fase de la tensión: una vez calculadas todas los módulos y fases de las tensiones de todas las barras (o sea convergió algoritmo Newton-Raphson), se calcula Q en todas las barras PV: si se viola el límite inferior o superior en alguna/s barras se puede tomar alguna de las siguientes acciones correctivas: 1 - fijar Q=Qlim y liberar la tensión (transformar en una barra PQ) y vuelvo a entrar en el algoritmo N-R. 2 - Aumentar (o disminuir) un escalón porcentual el módulo de la tensión y vuelvo a entrar en el algoritmo N-R).

Datos de entrada para resolver el flujo de carga Dada una red Slack Carga_1 Carga_2 Gen_1 G P P |V| Q Q G V0° P Q P |V| Q P G P Q Gen_2 Q Carga_4 Carga_3 % Datos de archivo de entrada tomados del Gross, pag. 244 % % DATOS DE BARRA % CARGA GENERACION min max Shunt Shunt % BARRA TENSION MW MVAR MW MVAR MVAR MVAR MVAr SUCEPTANCIA SL Slack 1 0 0 0 0 0 0 0 0 PQ Carga_1 1 200 30 0 0 0 0 0 0 PV Gen_1 1.05 60 8 500 0 0 0 0 0 PQ Carga_2 1 200 20 0 0 0 0 0 0 PV Gen_2 1.05 50 5 200 0 0 0 0 0 PQ Carga_3 1 100 30 0 0 0 0 0 0 PQ Carga_4 1 400 100 0 0 0 0 0 0 % DATOS DE LINEAS % BARRA_1 BARRA_2 RESISTENCIA REACTANCIA SUCEPTANCIA Linea Carga_1 Carga_3 0.023 0.138 0.271 Linea Carga_2 Carga_4 0.023 0.138 0.271 Linea Carga_1 Carga_2 0.015 0.092 0.181 Linea Carga_3 Carga_4 0.015 0.092 0.181 % DATOS DE TRANSFORMADORES % BARRA_1 BARRA_2 RESISTENCIA REACTANCIA TAP Trafo Slack Carga_1 0.0012 0.015 1 Trafo Gen_1 Carga_2 0.001 0.012 1 Trafo Gen_2 Carga_3 0.002 0.024 1

Interpretación gráfica: Solución de Ecuaciones Algebraicas No-Lineares - Método de Newton-Raphson Interpretación gráfica: c(0) J(0) c(1) J(1) C=0 x(1) x(0)

a) Búsqueda de la raíz de f(x)=x3-6 x2+9x-4. Ejemplo 6.1: a) Búsqueda de la raíz de f(x)=x3-6 x2+9x-4. clear dx=1; % Se inicializa el error con un valor elevado fun=input('Nombre de la función: '); % Nombre de la función.m donde están las expr. % de f y J. vx=input('Entre la estimación inicial y rango de ploteo [xe xi xf] -> '); x=vx(1); iter = 0; k=1; disp('iter Dc J dx x')% Encabezamiento de resultados while abs(dx) >= 0.001 & iter < 100 % Test de convergencia iter = iter + 1; % No. de iteraciones [f,J]=feval(fun,x); % feval ejecuta la función especificada % en el string fun con el argumento x. yp(k)=f; % Puntos para graficar las xp(k)=x; % pendientes. Dc=0 - f; % Residuo dx= Dc/J; % Se actualiza el error x=x+dx; % Soluciones sucesivas yp(k+1)=0; % Puntos para graficar las xp(k+1)=x; % pendientes. k=k+2; fprintf('%g', iter) % Se muestra iter sin ceros % no significativos disp([Dc, J, dx, x]) % Se completa con el resto de las % variables. end x=(vx(2):.1:vx(3)); % Rango de x para ploteo. f=feval(fun,x); % Se evalúa f en ese rango plot(x,f,x,0*x,xp,yp) axis([vx(2) vx(3) min(f) max(f)]) % Se fijan los ejes para x y f. function[f,J]=pol3(x) f=x.^3-6*x.^2+9*x-4; J=3*x.^2-12*x+9;

Búsqueda de la raíz de f(x)=x3-6 x2+9x-4. » te6ej1 Nombre de la función: 'pol3' Entre la estimación inicial y rango de ploteo [xe xi xf] -> [6 0 6] iter Dc J dx x 1 -50.0000 45.0000 -1.1111 4.8889 2 -13.4431 22.0370 -0.6100 4.2789 3 -2.9981 12.5797 -0.2383 4.0405 4 -0.3748 9.4914 -0.0395 4.0011 5 -0.0095 9.0126 -0.0011 4.0000 6 -0.0000 9.0000 -0.0000 4.0000

b) Estudio de convergencia de f(x)=atg(x). Ejemplo 6.1: b) Estudio de convergencia de f(x)=atg(x). function[f,J]=atx(x) f=atan(x); J=1./(1+x.*x); » te6ej1 Nombre de la función: 'atx' Entre la estimación inicial y rango de ploteo [xe xi xf] -> [1.4 -20 20]

En Matlab, la solución del sistema de ecuaciones es obtenida Quedando entonces el algoritmo de Newton-Raphson: * El problema se reduce entonces a resolver sucesivos sistemas de ecuaciones lineares. En Matlab, la solución del sistema de ecuaciones es obtenida usando el operador de división de matrices \, o sea \ el cual es basado en factorización triangular y eliminación Gaussiana, mucho más eficiente que invertir * .

Ejemplo 6.2: Se usa el método de Newton-Raphson para encontrar la intersección de las curvas La siguiente rutina (te6ej2a) genera las gráficas tita=0:.02:2*pi; % Rango del ángulo de la cfa. r = 2*ones(1, length(tita)); % Vector radio de la cfa. x=-3:.02:1.5; % Rango de x para la segunda ec. y=1- exp(x); % Segunda ec. plot(x,y),grid axis([-3 3 -3 3]); axis('square'); % Relación de ejes tal que no deformen la cfa. xlabel('x') text(1.1,1.8,' x^2+y^2=4') text(1.2,-2.3,' e^x+y=1') hold on; % Se "fija" la gráfica tal que las sucesivas % se hagan en la misma figura con los mismos ejes. polar(tita, r) % Ploteo polar en un sistema cartesiano. hold off; % Se "libera" la figura

Tomando las derivadas parciales, la matriz Jacobiana resulta: La siguiente rutina (te6ej2b) aplica Newton-Raphson para el sistema arriba iter = 0; x=input('Entre el vector estimación inicial [x1; x2] -> '); Dx=[1; 1]; C=[4; 1]; disp('Iter DC Matriz Jacobiana Dx x'); while max(abs(Dx)) >= .0001 & iter < 100 iter=iter+1; f = [x(1)^2+x(2)^2; exp(x(1))+x(2)]; DC = C - f; J = [2*x(1) 2*x(2) exp(x(1)) 1]; Dx=J\DC; % Resolución del sistema de ecuaciones x=x+Dx; fprintf('%g', iter) disp([DC, J, Dx, x]) end » te6ej2b Entre el vector estimación inicial [x1; x2] -> [0.5 -1]' Iter DC Matriz Jacobiana Dx x 1 2.7500 1.0000 -2.0000 0.8034 1.3034 0.3513 1.6487 1.0000 -0.9733 -1.9733 2 -1.5928 2.6068 -3.9466 -0.2561 1.0473 -0.7085 3.6818 1.0000 0.2344 -1.7389 3 -0.1205 2.0946 -3.4778 -0.0422 1.0051 -0.1111 2.8499 1.0000 0.0092 -1.7296 4 -0.0019 2.0102 -3.4593 -0.0009 1.0042 -0.0025 2.7321 1.0000 0.0000 -1.7296 5 -0.0000 2.0083 -3.4593 -0.0000 1.0042 -0.0000 2.7296 1.0000 -0.0000 -1.7296

Especifica Pi , |Vi| y los limites max y min de Qi Tenemos entonces dos ecuaciones por cada barra PQ y una por cada barra PV, suponiendo que: Barra 1 - barra Slack Barra 2 a m - barras PQ Barras m+1 a n - barras PV Expandiendo en series de Taylor haciendo estimaciones iniciales para |V| y  y despreciando los términos de orden elevado, se llega al siguiente sistema de ecuaciones lineares: En forma abreviada: El procedimiento para solucionar un flujo de carga con el método de Newton-Raphson es el que sigue: Especifica Pi y Qi Para las barras PQ Para la barra Slack Estima |Vi(0)| y (0) (igual a la slack) Se especifica V y  Especifica Pi , |Vi| y los limites max y min de Qi Para las barras PV Estima (0) (igual a la slack) Usando los valores especificados y estimados Calculo el vector:

Se calculan los elementos de la matriz jacobiana J1, J2, J3 y J4. Se resuelve: Se actualizan los |Vi| y i : Mientras halla algún: |Pi(k)|> o algún |Qi(k)|> convergió Calculo la potencia reactiva en todas las barras PV: Si se violó al menos un límite tomo acción correctiva y vuelvo al algoritmo

Solución Flujo de Carga Desacoplado Rápido P está fuertemente acoplado a  y debilmente acoplado a |V| Para relación X/R alta Q está fuertemente acoplado a |V| y debilmente acoplado a  Además considerables simplificaciones a J1 y J4 pueden ser hechas: -Qi Bii Siendo Bii la parte imaginaria de los elementos de la diagonal de Y, o sea, la suma de todas las suceptancias incidentes a la barra i.

Se pueden plantear como: Bii Llegamos entonces a que los sistemas de ecuaciones Se pueden plantear como: Siendo B’ y B’’ constantes, estas pueden ser invertidas una única vez antes de iniciar las iteraciones y luego durante el proceso de cálculo los cambios de |V| y  son dados en forma directa por:

desacoplado rápido es el que sigue: El procedimiento para solucionar un flujo de carga con el método de Newton-Raphson desacoplado rápido es el que sigue: Especifica Pi y Qi Para las barras PQ Para la barra Slack Estima |Vi(0)| y (0) (1.00) Se especifica V y  Especifica Pi , |Vi| y los limites max y min de Qi Para las barras PV Estima (0) (1.00) Determinar B’ y B’’ y en consecuencia [B’]-1 y [B’’]-1 Usando los valores especificados y estimados Calculo los vectores:

Se actualizan los |Vi| y i : Mientras halla algún: |Pi(k)|> o algún |Qi(k)|> convergió Calculo la potencia reactiva en todas las barras PV: Si se violó al menos un límite tomo acción correctiva y vuelvo al algoritmo

Implementación Flujo de Carga Archivo texto con la configuración de la red Entrada Matrices “usables” por el Matlab Matriz Admitancia Proceso [V,P,Q] [Y] Flujo de Carga Resultados Salida

G G V0° G Slack Carga_1 Carga_2 Gen_1 P P Q Q |V| |V| P P Q Q Gen_1 % Datos de archivo de entrada tomados del Gross, pag. 244 % % DATOS DE BARRA % CARGA GENERACION min max Shunt Shunt % BARRA TENSION MW MVAR MW MVAR MVAR MVAR MVAr SUCEPTANCIA SL Slack 1 0 0 0 0 0 0 0 0 PQ Carga_1 1 200 30 0 0 0 0 0 0 PV Gen_1 1.05 0 0 500 0 0 0 0 0 PQ Carga_2 1 200 20 0 0 0 0 0 0 PV Gen_2 1.05 0 0 200 0 0 0 0 0 PQ Carga_3 1 100 30 0 0 0 0 0 0 PQ Carga_4 1 400 100 0 0 0 0 0 0 % DATOS DE LINEAS % BARRA_1 BARRA_2 RESISTENCIA REACTANCIA SUCEPTANCIA Linea Carga_1 Carga_3 0.023 0.138 0.271 Linea Carga_2 Carga_4 0.023 0.138 0.271 Linea Carga_1 Carga_2 0.015 0.092 0.181 Linea Carga_3 Carga_4 0.015 0.092 0.181 % DATOS DE TRANSFORMADORES % BARRA_1 BARRA_2 RESISTENCIA REACTANCIA TAP Trafo Slack Carga_1 0.0012 0.015 1 Trafo Gen_1 Carga_2 0.001 0.012 1 Trafo Gen_2 Carga_3 0.002 0.024 1

% Datos de archivo de entrada tomados del Gross, pag. 244 % DATOS DE BARRA % CARGA GENERACION min max Shunt Shunt % BARRA TENSION MW MVAR MW MVAR MVAR MVAR MVAr SUCEPTANCIA SL Slack 1 0 0 0 0 0 0 0 0 PQ Carga_1 1 200 30 0 0 0 0 0 0 PV Gen_1 1.05 0 0 500 0 0 0 0 0 PQ Carga_2 1 200 20 0 0 0 0 0 0 PV Gen_2 1.05 0 0 200 0 0 0 0 0 PQ Carga_3 1 100 30 0 0 0 0 0 0 PQ Carga_4 1 400 100 0 0 0 0 0 0 % DATOS DE LINEAS % BARRA_1 BARRA_2 RESISTENCIA REACTANCIA SUCEPTANCIA Linea Carga_1 Carga_3 0.023 0.138 0.271 Linea Carga_2 Carga_4 0.023 0.138 0.271 Linea Carga_1 Carga_2 0.015 0.092 0.181 Linea Carga_3 Carga_4 0.015 0.092 0.181 % DATOS DE TRANSFORMADORES % BARRA_1 BARRA_2 RESISTENCIA REACTANCIA TAP Trafo Slack Carga_1 0.0012 0.015 1 Trafo Gen_1 Carga_2 0.001 0.012 1 Trafo Gen_2 Carga_3 0.002 0.024 1 1.0000 1.0000 1.0000 200.0000 30.0000 0 0 2.0000 2.0000 1.0000 200.0000 20.0000 0 0 3.0000 3.0000 1.0000 100.0000 30.0000 0 0 4.0000 4.0000 1.0000 400.0000 100.0000 0 0 5.0000 5.0000 1.0500 0 0 500.0000 0 6.0000 6.0000 1.0500 0 0 200.0000 0 7.0000 7.0000 1.0000 0 0 0 0 1.0000 3.0000 0.0230 0.1380 0.2710 0 0 2.0000 4.0000 0.0230 0.1380 0.2710 0 0 1.0000 2.0000 0.0150 0.0920 0.1810 0 0 3.0000 4.0000 0.0150 0.0920 0.1810 0 0 7.0000 1.0000 0.0012 0.0150 1.0000 0 0 5.0000 2.0000 0.0010 0.0120 1.0000 0 0 6.0000 3.0000 0.0020 0.0240 1.0000 0 0 0 0 0 0 N= 1 4 5 6 7 7 8 11 12 14 0 0 'Carga_1' 'Carga_2' 'Carga_3' 'Carga_4' 'Gen_1' 'Gen_2' 'Slack' pN= Barras= Se usa cuando se especifica datos generadores (estabilidad)

Función red2mat : Esta función, convierte un archivo ASCII con los datos de la red, en matrices usables por el Matlab Argumentos de entrada: Archivo ASCII con los datos de la red. Nombre del archivo para almacenar los datos de salida (opcional). Argumentos de salida: Matrices N, pN, Barras.

desacoplado rápido es el que sigue: El procedimiento para solucionar un flujo de carga con el método de Newton-Raphson desacoplado rápido es el que sigue: Especifica Pi y Qi Para las barras PQ Para la barra Slack Estima |Vi(0)| y (0) (1.00) Se rspecifica V y  Especifica Pi , |Vi| y los limites max y min de Qi Para las barras PV Estima (0) (1.00) Determinar B’ y B’’ y en consecuencia [B’]-1 y [B’’]-1 Usando los valores especificados y estimados Calculo los vectores:

Se actualizan los |Vi| y i : Mientras halla algún: |Pi(k)|> o algún |Qi(k)|> convergió Calculo la potencia reactiva en todas las barras PV: Si se violó al menos un límite tomo acción correctiva y vuelvo al algortimo

Argumentos de entrada: Matrices N y pN con los datos de la red. Función ybb : Esta función, dados los datos de la red, obtiene las matrices Y, B’ y B’’ . Argumentos de entrada: Matrices N y pN con los datos de la red. Argumentos de salida: Matriz admitancia Y y las matrices suceptancias B’ y B’’. Red ejemplo: slack barra_PQ1 barra_PQ2 0.02+j0.04 400 MW 250 MVar 0.01+j0.03 0.0125+j0.025 1.050° Vpu barra_PV 200 MW |1.04| Vpu % DATOS DE BARRA % CARGA GENERACION min max Shunt % BARRA TENSION MW MVAR MW MVAR MVAR MVAR MVAr SL slack 1.05 0 0 0 0 0 0 0 PQ barra_PQ1 1 0 0 0 0 0 0 0 PQ barra_PQ2 1 400 250 0 0 0 0 0 PV barra_PV 1.04 0 0 200 0 0 0 0 % % DATOS DE LINEAS % BARRA_1 BARRA_2 RESISTENCIA REACTANCIA SUCEPTANCIA Linea slack barra_PQ1 0.02 0.04 0.001 Linea slack barra_PV 0.01 0.03 0 Linea barra_PQ1 barra_PV 0.0125 0.025 0 % DATOS DE TRANSFORMADORES % BARRA_1 BARRA_2 RESISTENCIA REACTANCIA TAP Trafo barra_PQ2 barra_PQ1 0.012 0.015 0.98

Ejecutando [N,pN]=fcm2dat(‘ejemplo4b.m’) 1.0000 1.0000 1.0000 0 0 0 0 0 0 0 0 2.0000 2.0000 1.0000 400.0000 250.0000 0 0 0 0 0 0 3.0000 3.0000 1.0400 0 0 200.0000 0 0 0 0 0 4.0000 4.0000 1.0500 0 0 0 0 0 0 0 0 4.0000 1.0000 0.0200 0.0400 0.0010 0 0 0 0 0 0 4.0000 3.0000 0.0100 0.0300 0 0 0 0 0 0 0 1.0000 3.0000 0.0125 0.0250 0 0 0 0 0 0 0 2.0000 1.0000 0.012 0.0150 0.9800 0 0 0 0 0 0 pN = 1 2 3 3 4 4 5 7 8 8 [Y,Bp,Bs]=ybb(N,pN) Y = 59.9617 -94.3265i -33.1840 +41.4800i -16.0000 +32.0000i -10.0000 +20.0000i -33.1840 +41.4800i 32.5203 -40.6504i 0 0 -16.0000 +32.0000i 0 26.0000 -62.0000i -10.0000 +30.0000i -10.0000 +20.0000i 0 -10.0000 +30.0000i 20.0005 -50.0000i » Bp Bp = -94.3265 41.4800 32.0000 41.4800 -40.6504 0 32.0000 0 -62.0000 » Bs Bs = -94.3265 41.4800 41.4800 -40.6504

Se considera entonces un transformador con admitancia yt en serie con un transformador ideal de relación 1:a siendo a el valor por unidad de la posición del tap, el que permitirá pequeños ajustes de tensión en escalones del orden del 1 al 1.5% de la tensión nominal, el modelo del transformador ahora es : yt Vi Vj Vx 1:a Ii Ij

Función flunrdr: Esta función, dados los datos de la red, ejecuta flujo de carga por el método Newton-Raphson desacoplado rápido. Argumentos de entrada: Matrices N y pN con los datos de la red o archivo.dat generado por fcm2dat. Nombre del archivo de salida para almacenar los resultados (opcional). Argumentos de salida: Para cada una de las barras: Módulo y ángulo de la tensión. Potencia activa y reactiva de carga. Potencia activa y reactiva de generación. Compensación. General: Máximo error de potencia una vez que convergió. Número de iteraciones.

Fuerzo una salida del while. Avisando que es “normal” Mientras iter<iter máx: B Desde Barra 1 hasta última Barra PV p f(Y, |V|, ) P Pesp-p calc PV P/|V| no Todos los P son < que ? si También convergió Q? no A Calculo  resolviendo el sistema. Actualizo  si Hay Barras PV? no si Busco en cual de las Barras PV hay violación de los límites Hubo violación en algún límite? no Fuerzo una salida del while. Avisando que es “normal” si Aumento la tensión en la barra donde se violó el límite inferior y bajo la tensión donde se violó el límite superior. Aviso que es como si no hubiera convergido A

Fuerzo una salida del while. Avisando que es “normal” Desde Barra 1 hasta última Barra PV q f(Y, |V|, ) Q Qesp-q calc QV Q/|V| (solo barras PQ) Todos los Q son < que ? si También convergió P? no Calculo |V| resolviendo el sistema Actualizo |V|. si Hay Barras PV? no si Busco en cual de las Barras PV hay violación de los límites si Hubo violación en algún límite? no Fuerzo una salida del while. Avisando que es “normal” si Aumento la tensión en la barra donde se violó el límite inferior y bajo la tensión donde se violó el límite superior. Aviso que es como si no hubiera convergido Iter=iter+1 B Warning: No convergió en iter max iteraciones FIN

Flujo en las líneas y pédidas Utilizando el archivo del ejemplo anterior: » [N,pN,Barras]=red2mat('ejemplo4b.m'); » [mv,an,Pd,Qd,Pg,Qg,Qsh,maxerror,iter]=flunrdr(N,pN); » diary ejemplo.tab » tabflu Flujo en las líneas y pédidas --Línea-- -Flujo en la línea- --Pérdidas-- desde hasta MW Mvar MVA MW Mvar barra_PQ1 slack -190.357 -114.738 222.262 10.691 21.282 barra_PV -243.851 -178.033 301.926 12.333 24.667 barra_PV slack -56.184 -15.582 58.304 0.314 0.943 barra_PQ1 256.184 202.700 326.677 12.333 24.667 slack barra_PQ1 201.048 136.020 242.738 10.691 21.282 barra_PV 56.498 16.524 58.865 0.314 0.943 Total de pérdidas 23.339 46.891 Flujo en las transformadores -Transformador- -Flujo transformador- --Tap-- desde hasta MW Mvar MVA barra_PQ2 434.196 292.673 471.653 0.980 barra_PQ2 barra_PQ1 -399.994 -249.922 523.626 0.980

Argumentos de entrada: Función flujo: Ejecuta todos los comandos para realizar un flujo de carga y desplegar los resultados. Argumentos de entrada: Nombre del archivo ASCII con los datos de la red. function[]=flujo(archivo) global Sb Sb=100; [N,pN,Barras]=red2mat(archivo); [mv,an,Pd,Qd,Pg,Qg,Qsh,maxerror,iter,Y]=flunrdr(N,pN); archivo=[strtok(archivo,'.') '.flu']; % crea el nombre del archivo de salída % igual al de entrada pero con extensión .tab diary(archivo) tabbar tabflu diary » flujo('ejemplo4b.m') Máximo error en la potencia = 0.0981324 No. de Iteraciones = 11 Barra Tensión Angulo ------Carga------ ---Generación--- Shunt Mag. grados MW MVAr MW MVAr MVAr barra_PQ1 0.961 -3.022 0.0 0.0 0.0 0.0 0.0 barra_PQ2 0.883 -5.006 400.0 250.0 0.0 0.0 0.0 barra_PV 1.040 -0.803 0.0 0.0 200.0 187.1 0.0 slack 1.050 0.000 0.0 0.0 257.5 152.5 0.0 Total 400.0 250.0 457.5 339.7 0.0 Flujo en las líneas y pédidas --Línea-- -Flujo en la línea- --Pérdidas-- desde hasta MW Mvar MVA MW Mvar barra_PQ1 slack -190.357 -114.738 222.262 10.691 21.282 barra_PV -243.851 -178.033 301.926 12.333 24.667 barra_PV slack -56.184 -15.582 58.304 0.314 0.943 barra_PQ1 256.184 202.700 326.677 12.333 24.667 slack barra_PQ1 201.048 136.020 242.738 10.691 21.282 barra_PV 56.498 16.524 58.865 0.314 0.943 Total de pérdidas 23.339 46.891 Flujo en las transformadores -Transformador- -Flujo transformador- --Tap-- desde hasta MW Mvar MVA barra_PQ2 434.196 292.673 471.653 0.980 barra_PQ2 barra_PQ1 -399.994 -249.922 523.626 0.980

Es interesante aprovechar el potencial del Matlab para estudios paramétricos, por ejemplo se considerando el siguiente archivo (pag84.m) que corresponde a la red simplificada de Nueva Zelandia: % Datos de archivo de entrada tomados del Arrillaga, cap. IV % % DATOS DE BARRA % CARGA GENERACION min max Shunt % BARRA TENSION MW MVAr MW MVAR MVAr MVAr MVAr PQ INV220 1 200 51 0 0 0 0 0 PQ ROX220 1 150 60 0 0 0 0 0 PQ MAN220 1 0 0 0 0 0 0 0 PV MAN014 1.045 0 0 690 0 0 0 0 PQ TIW220 1 420 185 0 0 0 0 0 SL ROX011 1.05 0 0 0 0 0 0 0 PQ BEN220 1 500 200 0 0 0 0 0 PV BEN016 1.06 0 0 0 0 0 0 0 PQ AVI220 1 0 0 0 0 0 0 0 PV AVI011 1.045 0 0 200 0 0 0 0 PV OHAU 1.05 0 0 350 0 0 0 0 PQ LIV220 1 150 60 0 0 0 0 0 PV ISL220 1.0 500 300 0 0 0 0 0 PQ BRM220 1 100 60 0 0 0 0 0 PQ TEK011 1.05 0 0 150 0 0 0 0 PQ TEK220 1 0 0 0 0 0 0 0 PQ TWI220 1 0 0 0 0 0 0 0 % DATOS DE LINEAS % BARRA_1 BARRA_2 RESISTENCIA REACTANCIA SUCEPTANCIA Linea INV220 MAN220 0.013 0.09 0.25 Linea MAN220 TIW220 0.01 0.1 0.29 Linea INV220 TIW220 0.002 0.01 0.04 Linea INV220 ROX220 0.01 0.11 0.17 Linea ROX220 TWI220 0.016 0.14 0.24 Linea ROX220 LIV220 0.03 0.12 0.18 Linea BEN220 TWI220 0.004 0.03 0.07 Linea LIV220 AVI220 0.007 0.03 0.05 Linea AVI220 BEN220 0.004 0.05 0.02 Linea LIV220 ISL220 0.03 0.18 0.35 Linea TWI220 TEK220 0.002 0.01 0.02 Linea TEK220 ISL220 0.02 0.13 0.35 Linea TWI220 BRM220 0.02 0.14 0.45 Linea BRM220 ISL220 0.002 0.01 0.05 Linea TWI220 ISL220 0.02 0.14 0.45 % DATOS DE TRANSFORMADORES % BARRA_1 BARRA_2 RESISTENCIA REACTANCIA TAP Trafo MAN220 MAN014 0.0006 0.016 1 Trafo ROX220 ROX011 0.002 0.04 1 Trafo TWI220 OHAU 0.004 0.032 1 Trafo AVI220 AVI011 0.0015 0.045 1 Trafo BEN220 BEN016 0.0012 0.032 1 Trafo TEK220 TEK011 0.003 0.056 1

Argumentos de entrada: Nombre de una o dos barras. Para variar un parámetro de una barra o línea o transformador, necesitamos saber dicho elemento en que fila está de la matriz N, una vez ubicada la fila podemos hacer el estudio paramétrico variando el o los valores de las columnas que nos interesan. Función filaN: Esta función encuentra la fila de N donde está la barra o línea o transformador requerido. Argumentos de entrada: Nombre de una o dos barras. Vector celda con los nombres de todas las barras. Matriz N (No es necesaria si se ingresó solo una barra) Argumentos de salida: Fila o filas de la matriz N donde se encuentra la barra o línea o transformador de interés. function[fN]=filaN(b1,b2,Barras,N) fl=0; if iscell(b2), % Si el segundo argumento de entrada es una celda Barras=b2; % es porque se ingreso una única barra, por lo tanto fl=1; % b2 es en realidad el vector celda con los nombres de end % todas las barras. nb1=find(strcmpi(Barras,b1)); % Se busca el número de barra que corresponde b1 if fl==1, % Si se ingresó una única barras, el número de esta se corresponde fN=nb1; % con la fila, pronto, me voy de la función. return end nb2=find(strcmpi(Barras,b2)); % Se busca el número que le corresponde a la barra b2 fb=(N(:,1:2)==nb1); % fb es un matriz de dos columnas x filas de N, donde hay unos % cuando coincide el nombre de la barra 1 fb=fb+2*(N(:,1:2)==nb2); % A la matriz anterior le sumo dos cuando hay coincidencia % con el nombre de la barra 2. fN=find(sum(fb')==3); % Las filas de fN que sumen tres son las buscadas. 1 2 3 4 5

Siguiendo por pasos la ejecución de filaN para este último ejemplo: Por ejemplo: cual es la ubicación dentro de la matriz N de la barra AVI220: » [N,pN,Barras]=fcm2dat('pag84.m'); » f=filan('AVI220',Barras) f = 6 Para el caso de líneas: cual es la ubicación dentro de la matriz N de la línea TEK220-ISL220: » f=filan('TEK220','ISL220',Barras,N) f = 34 Siguiendo por pasos la ejecución de filaN para este último ejemplo: fb = 0 0 1 1 0 1 1 0 fb = 0 0 1 1 2 2 0 2 0 1 1 2 1 0 nb1 = 10 1 - 2 - nb2 = 16 fN = 34 3 - 4 - 5 -

Ejemplo 6.3a: Dada la red definida en ‘pag84.m’, el siguiente ejemplo estudia el módulo de la tensión y el ángulo en la barra ‘INV220’ al variar la carga en esta de 0 a 500 MW y de 0 a 250 MVAr pinv=linspace(0,500,5); % Rango potencia activa (5 puntos) qinv=linspace(0,250,5); % Rango potencia reactiva (5 puntos) clear v a f=0; c=0; global Sb; Sb=100; [N,pN,Barras]=red2mat('pag84.m'); INV220=filaN('INV220',Barras); % Se 'ubica' a INV220 en N for var1=pinv, % Variación de la potencia activa c=c+1; N(INV220,4)=var1; % Se modifica el elemento de N correspondiente % a la potencia activa de INV220 for var2=qinv, N(INV220,5)=var2; % Se modifica el elemento de N correspondiente % a la potencia reactiva de INV220 f=f+1; [mv an]=flunrdr(N,pN); % Flujo de cargas v(f,c)=mv(INV220); % Se alacena módulo de la tensión a(f,c)=an(INV220); % y el ángulo end [x,y]=meshgrid(pinv,qinv); % Se crea el grid para el plote 3D surf(x,y,v,a) % Ploteo de la superficie: v contra x,y shading interp % Interpolación de colores view([40 35]) % Variación del ángulo de la visión colorbar('v') % Escala de colores de a (ángulo) en pos. vertical xlabel('Potencia Activa') ylabel('Potencia Reactiva') zlabel(Tensión) title('Estudio de Flujo de Carga sobre la Barra INV220')

Idéntico al anterior pero usando flunrdrI. Ejemplo 6.3b: Idéntico al anterior pero usando flunrdrI. pinv=linspace(0,500,5); % Rango potencia activa (5 puntos) qinv=linspace(0,250,5); % Rango potencia reactiva (5 puntos) clear v a f=0; c=0; load pag84.dat -mat % Se cargan los datos previamente calculados con fcm2dat INV220=filaN('INV220',Barras); % Se 'ubica' a INV220 en N [Y,Bp,Bs]=ybb(N,pN); for var1=pinv, % Variación de la potencia activa c=c+1; N(INV220,4)=var1; % Se modifica el elemento de N correspondiente % a la potencia activa de INV220 for var2=qinv, N(INV220,5)=var2; % Se modifica el elemento de N correspondiente % a la potencia reactiva de INV220 f=f+1; [mv an]=flunrdrI(N,pN,Y,Bp,Bs); % Flujo de cargas v(f,c)=mv(INV220); % Se alacena módulo de la tensión a(f,c)=an(INV220); % y el ángulo end [x,y]=meshgrid(pinv,qinv); % Se crea el grid para el plote 3D surf(x,y,v,a) % Ploteo de la superficie: v contra x,y shading interp % Iterolación de colores view([40 35]) % Variación del ángulo de la visión colorbar('v') % Escala de colores de a (angulo) en pos. vertical xlabel('Potencia Activa') ylabel('Potencia Reactiva') zlabel('Tension') title('Estudio de Flujo de Carga sobre la Barra INV220')