DISEÑO DE BASE DE DATOS PARA CREACIÓN Y · PDF fileSe utilizaran los programas...
Transcript of DISEÑO DE BASE DE DATOS PARA CREACIÓN Y · PDF fileSe utilizaran los programas...
UNIVERSIDAD DE CHILE FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS DEPARTAMENTO DE INGENIERÍA ELÉCTRICA
DISEÑO DE BASE DE DATOS PARA CREACIÓN Y MANEJO DE ARCHIVOS ESTÁNDAR DE SISTEMAS
ELÉCTRICOS. DESARROLLO DE CASOS PRÁCTICOS.
Memoria para optar al Título de Ingeniero Civil Electricista
FELIPE ANTONIO CARVAJAL ZULETA
PROFESOR GUÍA: LUIS SANTIAGO VARGAS DÍAZ
MIEMBROS DE LA COMISIÓN:
OSCAR EDUARDO MOYA ARAVENA JUAN PABLO TOLEDO TORRES
SANTIAGO DE CHILE 2008
RESUMEN
En la actualidad, existe la tendencia de las herramientas computacionales
de avanzar y de desarrollarse, haciéndose cada vez más completas, más
amigables, y más rápidas. Estas tecnologías son usadas por distintas
compañías para crear variados programas para el estudio de sistemas
eléctricos, que quieren llevar a cabo estos estudios bajo su propio punto de
vista o necesidades particulares. Muchas veces nos encontramos con casos en
los que varios de estos programas se pueden comunicar entre sí, pudiendo
obtener, mediante ambos, los mismos resultados, en las variables eléctricas y
obtener gráficos o diagramas en conjunto que otorguen mayor confiabilidad a
un estudio de sistemas. Muchas veces, también nos encontramos con
programas que son muy útiles, pero que no tienen correspondencia, o no son
compatibles entre sí, con softwares estándares, o que simplemente no se tiene
acceso a la licencia que deja utilizar aquella habilidad. En el caso particular de
este estudio, aparece una combinación de estos casos, en los que por una
parte se tiene dos softwares capaces de comunicarse entre si, y además un
tercer software, más completo que los anteriores que no posee esta
comunicación. El trabajo realizado consiste en crear una herramienta que sea
capaz de unir a estos 3 programas, y que sea capaz de crear una Base de
Datos que contenga la información necesaria para realizar estudios de flujo de
potencia, análisis de secuencia y flujos dinámicos en cualquiera de estos.
2
Se utilizaran los programas Power Factory – Digsilent, Power World y
PSS/E, y la base de datos será administrada en Microsoft Excel.
3
AGRADECIMIENTOS
Son muchos a quienes a lo largo del tiempo han dejado una huella en mí. Experiencias de las que puedo recordar nombre y descubrir que a lo largo del camino todo es motivo de alegría y gratitud. De creer en la vida y en todos los que me ayudaron a terminar esta etapa de mi vida.
Agradezco a mis padres que me enseñaron con su infinito amor a ser mas humano, sencillo y sensible, a conseguir lo que en algún momento pareció casi imposible: a cambiar, crecer y madurar. Me enseñaron valores y perseverancia para no rendirme en el camino, aunque a veces tomara tiempo terminar.
A mis hermanos con los que compartí los momentos de mi niñez y juventud, a ser el hermano chico y mayor después, mis momentos de juegos y de apoyo.
A mis familiares, abuelita, tíos, tías, primos que a lo largo de los años me han hecho sentir parte de una familia grande y cariñosa, sin obligación.
A mis amigos que con el correr de los años han seguido estando ahí a mi lado, con los que me reencontrado, a los que he visto crecer y formar familias, y me han demostrado que no es necesario olvidar para seguir adelante.
A mi novia que con su constante apoyo, amor, cariño y paciencia, en el ámbito personal, con su ejemplo y dedicación en el trabajo, me dieron el impulso necesario para concretar los últimos pasos de esta titulación.
Finalmente quisiera agradecer a mi profesor guía, ya que no solo me apoyo en el transcurso de esta etapa , sino también lleno de dudas las cuales lograron hacer que este trabajo finalizara de manera correcta y satisfactoria. Además quisiera agradecerle por el echo de que sin querer me hizo formar parte de un equipo en el que no solo encontrare jefes y compañeros de trabajo, sino también amigos y personas admirables que no solo perduran en mi memoria como los que me ayudaron es este pequeño paso final en mi titilación , sino tan bien por la admiración que lograron producir en mi no solo por sus capacidades laborares sino también sus valores logrando así darme cuenta que no erré el camino, que esto es lo que me hace feliz ser.
4
Contenido RESUMEN ...................................................................................................................... 2 AGRADACIMIENTOS ..................................................................................................... 4 TABLA DE ILUSTRACIONES ........................................................................................ 7 CAPÍTULO 1. .................................................................................................................. 8 INTRODUCCIÓN............................................................................................................. 8
1.1 Generalidades ................................................................................................... 8
1.2 Objetivos ........................................................................................................... 9
1.2.1 Objetivos Generales.......................................................................................... 9
1.2.2 Objetivos Específicos ........................................................................................ 9
1.3 Estructura del Trabajo ....................................................................................... 9
CAPÍTULO 2. ................................................................................................................ 11 ASPECTOS GENERALES ........................................................................................... 11
2.1 Resumen ......................................................................................................... 11
2.2 Introducción .................................................................................................... 11
2.3 Herramientas Usadas Para el Análisis de Sistemas de Potencia ................... 12
2.4 Métodos Para Realizar el Cálculo de Flujo de Potencia ............................ 16
2.4.1 Método de Gauss – Seidel. ............................................................................. 20
2.4.2 Método de Newton – Raphson. ....................................................................... 21
2.4.3 Método Desacoplado Rápido. ......................................................................... 22
2.5 Ejemplos de Programas en el Mercado. ......................................................... 24
2.5.1 Power - World Simulator (3): ........................................................................... 24
2.5.2 SimPowerSystem (4): ....................................................................................... 25
2.5.3 PSS/E (5): ........................................................................................................... 25
2.5.4 RTDS Simulator (6): .......................................................................................... 26
2.5.5 ETAP (7): ............................................................................................................ 27
2.5.6 Power Factory (Digsilent) (8): .......................................................................... 27
2.5.7 EDSA: .................................................................................................................. 28
2.5.8 ABB Advise GridView (10): .............................................................................. 29
CAPÍTULO 3. ................................................................................................................ 30 DATOS PARA DISTINTOS TIPOS DE ANÁLISIS DE SISTEMAS ELÉCTRICOS. .... 30
5
3.1 Resumen ......................................................................................................... 30
3.2 Introducción .................................................................................................... 30
3.3 Datos para el Flujo de Potencia ...................................................................... 31
3.4 Datos de Secuencia ........................................................................................ 33
3.5 Datos para Análisis Dinámicos ....................................................................... 34
3.6 Uso de Power Factory – Digsilent y Power System Simulator for Engineering (PSS/E) .................................................................................................. 35
3.7 Archivos Creados para la Base de Datos ....................................................... 35
CAPÍTULO 4. ................................................................................................................ 47 BASE DE DATOS PARA CREAR ARCHIVOS GENERALES DE SISTEMAS ELÉCTRICOS. .............................................................................................................. 47
4.1 Resumen ......................................................................................................... 47
4.2 Introducción .................................................................................................... 47
4.3 Planteamiento del Problema ........................................................................... 47
4.4 Datos de Entrada de Base de Datos ............................................................... 48
4.5 Creación del Diseño ........................................................................................ 50
CAPÍTULO 5. ................................................................................................................ 52 CASOS PRÁCTICOS DE ANÁLISIS ............................................................................ 52
5.1 Resumen ......................................................................................................... 52
5.2 Introducción .................................................................................................... 52
5.3 Casos de Estudio ............................................................................................ 53
CAPÍTULO 6. ................................................................................................................ 62 CONCLUSIONES ......................................................................................................... 62 Bibliografía ................................................................................................................... 64 ANEXOS ....................................................................................................................... 66
1. Código Script ......................................................................................................... 66
2. Datos de Reguladores de Voltaje .......................................................................... 86
3. Datos de Reguladores de Turbina ......................................................................... 89
4. Datos de Estabilizadores de Potencia. .................................................................. 92
6
TABLA DE ILUSTRACIONES
Figura 1, Evolución de las herramientas computacionales utilizadas en estudios de sistemas eléctricos (3) ................................................................................................... 13
Figura 2, Modelo General de una Barra (3). ................................................................. 16
Figura 3, Tabla de Script Visto en Notepad .................................................................. 51
Figura 4, Tabla de Script Visto en Excel ....................................................................... 51
Figura 5, Casos a Estudiar ........................................................................................... 54
Figura 6, Datos del Sistema Extraídos Manualmente, Caso Base + Línea Crucero - Encuentro ...................................................................................................................... 55
Figura 7, Datos del Sistema Extraídos con el Script, Caso Base + Línea Crucero - Encuentro ...................................................................................................................... 56
Figura 8, Creación de formato raw 26 .......................................................................... 57
Figura 9, Vista de PowerWorld ..................................................................................... 58
Figura 10, Datos Ingresados al Power World ............................................................... 59
Figura 11, Comparación de Barras entre Power world y Digsilent ............................... 60
Figura 12, Comparación de Generación enre Power World y digsilent ........................ 60
Figura 13, Comparación de Líneas entre Power World y Digsilent .............................. 61
7
CAPÍTULO 1.
INTRODUCCIÓN
1.1 Generalidades
En Chile, el uso de la computación en los estudios de operación y
contingencia son empleados por la gran mayoría de las empresas eléctricas,
principalmente en los departamentos encargados de estudios, departamentos
técnicos y comerciales. También son utilizados por los organismos de
coordinación de la operación de sistemas, Centro de Despacho Económico de
Carga (CDEC), y por los organismos gubernamentales encargados de la
regulación legal de la operación del sistema eléctrico, CNE, SEC.
Dichas herramientas computacionales son utilizadas también para realizar
distintas investigaciones, como por ejemplo, estudios específicos de operación,
o también pueden ser utilizados por los departamentos de ingeniería eléctrica
de las universidades, en donde se realiza uso docente e investigativo.
En este trabajo se mencionará brevemente la evolución de programas
computacionales para el uso en cálculos o estudios de sistemas eléctricos de
potencia, junto con los distintos métodos de modelación utilizados. Luego se
mostrará una metodología para crear una base de datos, con toda la
información necesaria para hacer un análisis de sistema, con la finalidad de
crear archivos utilizables simultáneamente por los programas computacionales
Digsilent, PSS/E y Power World.
8
1.2 Objetivos
1.2.1 Objetivos Generales
El objetivo general de este trabajo es la creación de una base de datos
que sea capaz de reunir toda la información necesaria de un sistema eléctrico
de potencia para lograr realizar estudios varios.
1.2.2 Objetivos Específicos
Los objetivos específicos corresponden a la creación de una base de
datos que contenga la información necesaria para realizar cálculos de flujo de
potencia, que contenga los datos de secuencia de la red y que contenga la
información necesaria para realizar análisis dinámicos de un sistema eléctrico
de potencia. Se utilizará Microsoft Excel para la el manejo de la base de datos,
y éste deberá generar archivos compatibles con los softwares Digsilent, PSS/E
y Power World, programas computacionales facilitados por las empresas
Edelnor – Electroandina, las cuales entregan toda la información e
infraestructura para realizar este trabajo.
1.3 Estructura del Trabajo
Esta memoria consta de seis capítulos, el primero de ellos consta de una
introducción a la utilización de software computacional para el estudio de
sistemas eléctricos en Chile. En este capítulo se muestran, también, los
objetivos generales y específicos del trabajo.
9
En el capítulo dos, se exponen brevemente los distintos métodos de
modelación de los sistemas eléctricos y sus métodos de solución. Luego se
muestra la necesidad de hacer estudios y análisis de un sistema eléctrico, ya
sea el efecto de fallas, mantenimientos, cambios estructurales, etc. Y de lo
importante que es tener datos confiables, actualizados y legibles de cualquier
sistema eléctrico de potencia.
En el capítulo tres se hace una descripción detallada de los datos que
son recopilados, ya sea para el estudio de flujos de potencia, como para hacer
un análisis dinámico del sistema o un estudio de fallas. Luego se exponen los
softwares utilizados y la forma en como éstos son manejados.
En el capítulo 4 se muestran la base de datos creada, con todas sus
características. Se describe el diseño elegido, la forma en como se revela la
información y la forma en como es seleccionada para ser utilizada por cada uno
de los programas computacionales utilizados.
En el capítulo 5 se explican distintos casos prácticos reales en donde se
utilizó el método descrito en este trabajo. Exponiendo los resultados obtenidos,
y comparando los resultados entre sí.
En el capítulo 6 se muestran las conclusiones de este trabajo. Al final de
este documento se hace referencia a los antecedentes bibliográficos, y a los
anexos, donde se muestra un detalle de los antecedentes utilizados.
10
CAPÍTULO 2.
ASPECTOS GENERALES
2.1 Resumen
En este capítulo se comentará de la evolución que ha tenido el desarrollo
de softwares computacionales, la metodología utilizada para el estudio y
algunos ejemplos de programas computacionales que existen en el mercado.
2.2 Introducción
En los años cincuenta y sesenta, era común encontrar en los laboratorios
de las universidades modelos estáticos de los sistemas eléctricos, utilizando
modelos simplificados de los generadores y reduciendo los elementos del
sistema utilizando componentes RLC (1). En los años 70 estos métodos fueron
reemplazados con el uso de computadores, los cuales eliminaron este tedioso
trabajo, pero introdujeron nuevos problemas típicos de éstos, por ejemplo,
problemas de accesibilidad, requerimientos mínimos de sistema, problemas de
aprendizaje de los sistemas operativos, costos propios de los computadores, y
grandes gastos de tiempo en el cálculo mientras más complejas eran las redes
eléctricas (2).
En el presente, el rápido progreso de la tecnología de los computadores
(hardware y software) a hecho que el problema del análisis de sistemas sea
realizado por un simple PC. Las técnicas ya se han desarrollado para
aprovechar al máximo las tecnologías, las cuales permiten al usuario gastar
11
más tiempo en el análisis de los aspectos propios del sistema eléctrico en sí, en
vez de usar tiempo en aprender programación, o en aprender un nuevo sistema
operativo (2).
En Chile, el uso de simulaciones para realizar cálculo de flujo de potencia
es usado intensamente para determinar la factibilidad y los niveles de seguridad
necesarios de operación técnica económica proyectada.
Este desarrollo es llevado a cabo por programas computacionales, los
cuales deben realizar modelos de los sistemas eléctricos existentes, y deben
ser capaces de realizar el cálculo de flujo de potencia sin importar la extensión
o el tamaño de la red; además los resultados obtenidos deben ser claros y
fáciles de interpretar, ya que éstos serán son los que se utilizarán para la toma
de decisiones (3).
2.3 Herramientas Usadas Para el Análisis de Sistemas de Potencia
A continuación se muestra un esquema que resume la evolución de las
herramientas utilizadas en el estudio de los sistemas eléctricos de potencia.
12
Para hacer análisis de sistemas de potencia se necesita que los
softwares involucrados cumplan con ciertos requerimientos y métodos básicos.
Estos requerimientos básicos son el análisis de flujo de carga, análisis de
corto circuito, análisis de motores, regulación de voltaje, estudio de sistemas
tipo DC, y análisis de dispositivos varios que se encuentren en el sistema (4).
Detrás de cada estudio matemático es importante obtener resultados rápidos y
confiables. Los métodos que se utilizan generalmente son Gauss-Seidel,
Newton-Raphson, y el Fast-Decoupled o desacoplado rápido (5). Combinando
los algoritmos de Gauss-Seidel y Newton-Raphson se puede llegar a tener un
gran grado de convergencia. Muchos estudios demuestran que Newton-
Figura 1, Evolución de las herramientas computacionales utilizadas en estudios de sistemas eléctricos (3)
13
Raphson es más adecuado para sistemas de distribución, mientras que el de
desacoplado rápido es más apropiado para los sistemas de transmisión (6).
Para hacer un análisis del sistema se definen condiciones iniciales y se
utilizan distintas técnicas para simular el diseño y comportamiento del modelo.
Alguno de los métodos de análisis son (7):
• Análisis en régimen permanente: Se asume voltajes y corrientes
sinusoidales y componentes lineales. Es usado para realizar flujos
de potencia, perfiles de voltaje, pérdidas (activas y reactivas),
compensaciones de reactivos, y posiciones de los tap de los
transformadores.
• Análisis de perturbaciones: Es usado para análisis en sistemas
eléctricos en condiciones anormales, tales como cortocircuitos, y
análisis de armónicos.
• Análisis Dinámico: Es usado para verificar que el sistema eléctrico
no se inestabilice, o que no colapse durante disturbios mayores en
la red, y también es usado para determinar los límites
operacionales del sistema eléctrico de potencia.
• Análisis Transiente: Simula sistemas reales, incluyendo modelos
no lineales, con impedancias des balanceadas y parámetros
dependientes de la frecuencia.
14
Cuando se quiso añadir a los cálculos las restricciones económicas
relativas al costo de producción de una unidad adicional de electricidad, se
realizaron estudios, a partir de los años sesenta, para agregar estas
restricciones, y se llego a la formulación de un flujo de potencia óptimo (OPF),
la cual ha sido generalizada para representar cualquier tipo de restricción, como
la de minimizar pérdidas óhmicas del sistema, la minimización del costo de
compensación de reactivos para el control de variaciones de tensión (8).
Los programas computacionales, además de tener las herramientas de
análisis anteriormente descritas, tienen que contar con una interfaz gráfica
(graphical user interface o GUI) para interactuar con el usuario. Alguna de las
características para hacer amigables dichos programas incluyen la posibilidad
de arrastrar (drag and drop) elementos, diseño de instalaciones, poder editar en
pantalla las instalaciones, el uso de distintas vistas y las características de
reportes de los eventos, que utilice distintos colores para cada tipo de
información, etc. Además el resultado debe ser independiente de la máquina
donde se realice el estudio.
Otra característica importante es que incluya la capacidad de
importar/exportar los datos, la capacidad de hacer/deshacer y la de tener una
buena librería de ayuda (9).
15
2.4 Métodos Para Realizar el Cálculo de Flujo de Potencia
“Flujo de potencia es calcular con precisión las tensiones de estado
estacionario en todas las barras de toda una red, y a partir de ese cálculo, los
flujos de potencia real y reactiva en cada una de las líneas y transformadores,
bajo la suposición de generación y carga conocidas. Su función básica radica
en importantes detalles: modelar controles tales como derivaciones móviles de
transformadores y potencia de salida reactiva del generador” (10).
Para el estudio de flujos de potencia, una barra cualquiera de un sistema
eléctrico, que se encuentra dentro de una red eléctrica, y que está conectada a
tierra mediante una admitancia, puede ser modelada de la siguiente manera:
Figura 2, Modelo General de una Barra (1).
Si se aplica la ley de corrientes de Kirchoff a la barra, se puede calcular
la corriente inyectada a la barra y los voltajes en otras barras del sistema
conectadas mediante líneas modeladas como admitancias a la barra en estudio:
16
· · 0 . 1
En donde representa la matriz admitancia entre la barra en estudio i y
la barra j, y | | , es el voltaje en la barra j del sistema.
La ecuación anterior puede ser escrita en términos de los elementos de
la matriz de admitancia nodal, la cual resume la información de la topología de
la red del sistema bajo estudio. La forma que toma la matriz de admitancia
nodal del sistema está dada por:
• Elementos de la diagonal (ec. 2) | | ∑
• Elementos fuera de la diagonal (ec.3)
Con la definición de la matriz de admitancia nodal y considerando que
y | | son números complejos, la ec. 1 puede ser escrita
como:
· · . 4
El conjugado de la potencia compleja de la barra en estudio, que resume
el balance total de la potencia compleja inyectada y retirada en la barra, se
expresa como:
· . 5
17
Con la ecuación 4 y 5, se obtienen las relaciones de potencia activa y
reactiva totales de la barra en estudio, en función de la matriz de admitancia y
los voltajes de los voltajes del sistema, estas son:
• Potencia Activa: (ec.6)
| | · cos
• Potencia Reactiva: (ec.7)
| | · sen
Es por esto que para cada barra del sistema, su estado para efectos del
estudio de flujos de potencia queda completamente determinado al conocer el
valor del módulo del voltaje y su ángulo, los valores de la potencia activa y
reactiva (1).
De estas variables, se elijen dos de ellas para calcular las otras dos, y así
determinar el estado completo de la barra. Es por esto que dependiendo de las
características de la barra, se consideran las variables dependientes o
independientes. De acuerdo a esto, las barras se pueden clasificar de la
siguiente manera:
• Barra PV
o Se refiere a aquellas barras que cuentan con uno o más
generadores conectados directamente a ellas. Al tener esta
configuración, se considera como conocidos las variables de la
18
potencia activa y el voltaje (P y V), y como incógnitas el valor del
ángulo del voltaje y la potencia reactiva neta de la barra.
• Barra PQ
o Se refiere a aquellas barras que cuentan con una o más cargas
conectadas directamente a ellas, las cuales tienen consumos de
potencia activa y reactiva conocidas (P y Q). Es por esto que para
este tipo de barras las incógnitas pasan a ser el módulo y el
ángulo del voltaje en la barra. Si en algún momento se
sobrepasan los límites máximos o mínimos de las potencias, estos
valores se fijan, y la clasificación de la barra cambia para las
siguientes iteraciones del flujo de potencia.
• Barra libre (Barra Slack)
o De todas las barras PV del sistema, una de ellas se elige como
barra libre o barra slack, a la cual se le asigna como conocido (y
de manera arbitraria) el valor del voltaje en módulo y ángulo, la
que constituye la referencia para los demás voltajes en las demás
barras del sistema. Esta barra inyecta (o absorbe) la potencia
activa y reactiva necesaria para igualar la generación total del
sistema con la demanda total de los consumos y las pérdidas de
las líneas, las que no son conocidas a priori.
19
Con esta clasificación, y dado que la relación entre las potencias y el
voltaje en una barra no es lineal (ec. 5, 6 y 7), para resolver el problema de flujo
de carga es necesario emplear métodos numéricos iterativos para encontrar la
solución del problema mediante un proceso de convergencia.
Como se mencionó en el punto anterior, estos métodos son:
2.4.1 Método de Gauss – Seidel.
Este método calcula el voltaje en módulo y ángulo de una barra, en
función de los voltajes en todas las barras obtenidos en una iteración anterior
del modelo.
De las ecuaciones 1 y 5, se obtiene una expresión para el voltaje de la
barra genérica i, que es calculado en forma iterativa.
∑ · . 8
Se considera que el método converge si el módulo de la diferencia del
voltaje entre dos iteraciones sucesivas para todas las barras, excepto para la
barra libre, es menor a una tolerancia definida, por ejemplo =0,01.
Para mejorar la convergencia del método se puede calcular el voltaje en
las barras i en la iteración k+1, utilizando los voltajes en la barra j, calculados
dentro de la misma iteración k+1 (método con variables actualizadas). También
20
se puede emplear un factor ( [1,3; 1,7]) para acelerar la convergencia al
disminuir el número de iteraciones para la tolerancia definida (método con factor
de aceleración)
. 9
En general el método de Gauss Seidel no exhibe buenas características
de convergencias en sistemas eléctricos de tamaño real. Generalmente
necesita una cantidad mayor de iteraciones que las utilizadas por otros métodos
para el cálculo de flujos de potencia.
2.4.2 Método de Newton – Raphson.
Este método constituye el método numérico iterativo base para las
aplicaciones computacionales que calculan flujos de potencia.
Este método consiste en expandir en serie de Taylor las ecuaciones 6 y 7
en torno a un punto inicial despreciando los términos de segundo orden de la
serie. De esta forma se deduce un sistema de ecuaciones lineales que
relacionan las potencias con el módulo y ángulo del voltaje, que puede ser
escrita como:
ΔΔ
| |
| |
· ∆∆| | . 10
Considerando el error entre dos sucesiones sucesivas ángulo y módulo
de voltaje como:
21
∆∆| |
. 11
Este método concluye cuando el módulo del error de potencia activa y
reactiva para la siguiente iteración es menor a una tolerancia definida para
todas las barras del sistema incluidas en el método, por ejemplo ∆
0.001 ∆ 0.001.
La matriz de derivadas parciales de la ecuación 10 es conocida como
matriz jacobiana del sistema. Si un sistema tiene n barras, de las cuales g son
PV, entonces la matriz es cuadrada de dimensiones 2n-2-g.
El número de iteraciones para obtener la solución es independiente al
tamaño del sistema. Además el error del módulo de potencia converge en forma
cuadrática a cero; mientras que el método de Gauss Seidel lo hace en forma
lineal. El contra que tiene este método es que generalmente se hacen más
cálculos numéricos por iteración.
2.4.3 Método Desacoplado Rápido.
Cuando el sistema eléctrico tiene un gran número de barras, el método
de Newton Raphson usa demasiados recursos de cómputo y memoria del
computador en donde se están haciendo los cálculos, ya que se esta
calculando, almacenando y factorizando en cada iteración la matriz jacobiana
del sistema. El método Desacoplado Rápido (2), es una variante que introduce
aproximaciones deducidas de la topología de la red y las condiciones de
22
operación normales del sistema. Este método genera una matriz jacobiana,
pero no necesita actualizar sus valores en cada aproximación, lo que reduce la
cantidad de cálculos necesarios.
Las simplificaciones son aplicables si el sistema eléctrico cumple con:
• En las líneas de transmisión, el siguiente coeficiente tiene que
ser un valor elevado, siendo X la reactancia serie, y R la
resistencia de la línea.
• En una condición de operación normal del sistema la diferencia
entre el ángulo de voltajes en barras adyacentes es pequeña.
• En una condición de operación normal del sistema el módulo del
voltaje en todas las barras del sistema es aproximadamente 1 en
p.u.
Con estas consideraciones se pueden deducir las siguientes relaciones:
cos 0 | | 0 0 . 12
De estas relaciones se puede demostrar que el sistema de ecuaciones
definido por la ecuación 10 se desacopla dando lugar a dos ecuaciones
matriciales independientes que describen la otra versión del método
desacoplado rápido. La primera relaciona la variación de potencia activa con la
variación en los ángulos de los voltajes, mientras que la segunda relaciona la
variación de la potencia reactiva con la variación en los módulos de ls voltajes:
23
∆ · ∆∆ · ∆| | . 13
En donde los elementos de las matrices quedan definidos por:
1
. 14
2 · . 15
Si los supuestos descritos para la validez del método no se cumplen para
un sistema eléctrico de potencia, esta versión presenta problemas de
convergencia, los cuales pueden ser mejorados si se introducen mejoras al
método.
2.5 Ejemplos de Programas en el Mercado.
2.5.1 Power - World Simulator (3):
Power - World es una herramienta robusta para encontrar soluciones en
el cálculo de flujo de potencia, es capaz de resolver eficientemente sistemas
eléctricos con más de 60.000 barras. Básicamente, este programa esta
diseñado para simular la operación de sistemas de alta tensión. El software es
24
extremadamente amigable y de gran interactividad, incluye diagramas
unilineales con flujos de carga animados, contornos con distintos colores.
2.5.2 SimPowerSystem (4):
Modela y simula sistemas eléctricos de potencia con el ambiente
Simulink/Matlab. Tiene una gran capacidad para modelar la generación, la
transmisión, y la distribución de sistemas eléctricos de potencia, especialmente
cuando el diseño se asocia a sistemas de control. Contiene más de 130 bloques
de componentes y dispositivos comúnmente utilizados en redes eléctricas,
basadas en conocidas ecuaciones electro-magnéticas y electro-mecánicas.
Están distribuidos en seis librerías, donde se incluyen fuentes, elementos,
máquinas, electrónica, control, medidores, y componentes de tres fases. El
programa puede ser usado para propósito general y se pueden agregar
módulos creados por el usuario.
2.5.3 PSS/E (5):
PSS/E (Power System Simulator for Engineering) es un programa
integral para simular, analizar y optimizar el rendimiento del sistema de energía.
Utiliza los más avanzados métodos probados para realizar estudios de flujo de
potencia, análisis de fallas en desequilibrio, y simulaciones dinámicas. El
módulo integrado PSS/E OPF proporciona una solución de flujo óptimo de
energía el cual optimiza automáticamente un sistema dependiendo de las metas
25
especificadas por el usuario, cumpliendo al mismo tiempo las limitaciones de
flujo de potencia. PSS/E proporciona la máxima flexibilidad para el análisis de
sistemas de potencia para proyectistas y diseñadores modelando una amplia
variedad de componentes que permite a los usuarios aplicar sus propios
criterios de análisis. Además consta de una moderna interfaz gráfico con menús
y ventanas desplegables. Su modelado eficiente permite manejar redes de
cualquier tipo y reducirlas a tamaño práctico. PSS/E también cuenta con
programas complementarios como MUST (Managing and Utilizing System
Transmission), TPLAN, PSS/ADEPT (Power System Simulator/Advances
Engineering Productivity Tool), PSS/Engines, ODMS (Operational Database
Management System), PSS/O (Power System Simulator for Operations),
LMPsim (Location Marginal Pricing Simulator, PSS/Viper (Power System
Simulator for Visual Power EngineeRing).
2.5.4 RTDS Simulator (6):
RTDS Technologies Inc. puede hacer análisis de sistemas eléctricos de
potencia para tecnologías de estudio de simulaciones en tiempo real, para
sistemas con HVAC (high voltaje alternating current) y HVDC (high voltaje direct
current). El simulador RTDS tiene una interfaz gráfica, RSCAD, el cual puede
ser usado para configurar simulaciones, controlar y modificar los parámetros de
un sistema de potencia durante una simulación, adquiriendo datos, y analizando
26
resultados. Básicamente el simulador RTDS tiene dos elementos principales, la
interfaz gráfica (RSCAD) y una librería de módulos y compiladores.
2.5.5 ETAP (7):
Etap of Operational Technology, Inc. es para diseñar, simular, y analizar
generación, transmisión, distribución y sistemas de potencia industriales. El
programa ETAP tiene varios módulos, como el del estudio de sistemas
eléctricos de potencia, simulaciones en tiempo real, monitoreo avanzado,
optimización de sistemas de control, cambio automático de carga, análisis de
costo por uso de energía, y coordinación de dispositivos. ETAP tiene una familia
de programas que integran una herramienta de análisis usada para diseñar,
mantener, y operar sistemas eléctricos de potencia, y lo hacen en un ambiente
totalmente gráfico. Además cuenta con herramientas complementarias, como
ETAP PSMS (Power System Management System) para el manejo de centrales
eléctricas, ETAP STAR para protecciones y aparatos de coordinación, y ETAP
PanelSystem.
2.5.6 Power Factory (Digsilent) (8):
El software Digsilent PowerFactory es una herramienta para realizar
análisis de sistemas eléctricos de potencia, el cual combina el modelamiento de
sistemas confiables y flexibles con distintos tipos de algoritmos para encontrar
soluciones dependiendo de lo que se necesite, además hace uso de una base
27
de datos orientada al objeto (Object-Oriented). El usuario puede desarrollar
modelos detallados de un sistema de potencia, utilizando una única base de
datos, con un amplio rango de datos, datos de un sistema balanceado, de un
sistema des balanceado, datos de frecuencia, de tiempo, y sistemas con
características estocásticas. El programa soporta estudios para sistemas con un
máximo de 100, 250 e infinitas barras, dependiendo del tipo de licencia que se
adquiera. PowerFactory también realiza análisis de confiabilidad, proyección de
demanda, análisis de contingencias, modelamiento de elementos de electrónica
de potencia, y tiene una interface para SCADA/GIS. Además es compatible con
otro tipo de programas como PSS/E & PSS/U
2.5.7 EDSA:
EDSA es una compañía que no solo hace herramientas para el análisis
de sistemas de potencia, también realiza softwares de seguridad nacional,
energía nuclear, propulsión eléctrica, y programas de control avanzado en
sistemas eléctricos de potencia (9). El programa EDSA’s Technical 2000 es una
herramienta eléctrica estándar para el diseño en la industria, la cual ayuda a los
profesionales a modelar, simular, gestionar, y manejar los diseños eléctricos de
distribución y transmisión. El programa Technical 2000 utiliza distintos tipos de
algoritmos, utilizando programación orientada a objetos, para que los ingenieros
sean capaces de estudiar sistemas balanceados, des balanceados, con tres
fases, monofásicos, flujo de cargas, y estudiar casi todas las configuraciones
28
que existen en una red eléctrica. El programa contiene distintos módulos que
hacen posible estudiar y diseñar cualquier tipo de sistema eléctrico (T & D,
parques eólicos, redes AC/DC), analizando sistemas de potencia desde
distintas perspectivas (sistemas balanceados, PQ, confiabilidad de sistemas,
análisis dinámico, etc.), importando/exportando datos, y siendo compatible cien
porciento con Auto CAD. Otras características están disponibles, dependiendo
del tipo de licencia que se adquiera.
2.5.8 ABB Advise GridView (10):
ABB Advise GridView es una herramienta que simula el mercado
energético, contiene herramientas de análisis y diseño, usadas para la toma de
decisiones en asuntos del mercado industrial eléctrico. GridView, utiliza
metodologías avanzadas para el estudio de generación, transmisión, cargas,
combustible, y mercado económico, integrando todo en un programa que
entrega indicadores económicos de los distintos lugares, medidas de utilización
en el sistema de transmisión, medidas de estabilidad en el sistema de potencia,
e índices de comportamiento del mercado. Produce despachos económicos que
respetan las leyes de flujo de potencia y requerimientos en los sistemas de
transmisión.
29
CAPÍTULO 3.
DATOS PARA DISTINTOS TIPOS DE ANÁLISIS DE SISTEMAS
ELÉCTRICOS.
3.1 Resumen
En este capítulo se detallan los tipos de archivos necesarios para los
diferentes análisis que se realizan en los sistemas eléctricos de potencia.
3.2 Introducción
Se necesita desarrollar una base de datos que sea capaz de crear
archivos utilizables por programas destinados al análisis de sistemas eléctricos
de potencia (SEP).
En primera instancia se necesitan los parámetros eléctricos del SEP para
poder hacer un flujo de potencia y poder estudiar la estabilidad estática del
sistema.
Los parámetros de secuencia son necesarios para el análisis de fallas
que pueden ocurrir en el sistema, como por ejemplo las fallas monofásicas,
bifásicas o trifásicas, ocasionadas por ejemplo, por un cortocircuito en alguna
línea del sistema.
El último conjunto de datos son los datos necesarios para realizar un
estudio de comportamiento dinámico del sistema.
30
3.3 Datos para el Flujo de Potencia
Se refiere, en general, a los parámetros eléctricos mínimos de los
dispositivos de un sistema eléctrico (cargas, líneas, generadores, etc.). Estos
parámetros son necesarios para realizar estudios en sistemas en condiciones
normales de operación, y que no presentan variaciones en el tiempo
(estacionarios). Además constituyen los datos necesarios para los softwares
utilizados.
Los parámetros necesarios, por elemento, son:
• Terminales y Barras: De donde se obtiene el voltaje nominal de la barra.
• Cargas: Se necesita la barra donde está conectada la barra,
especificando si la carga está o no fuera de servicio. Además se
necesitan los siguientes datos:
o Potencia Activa en [MW].
o Potencia Reactiva en [MVar].
o Potencia en [MVA].
o Corriente en [kA].
o Factor de Potencia.
• Generadores: Se necesita saber en que barra está conectado el
generador, y especificar si el generador está o no en servicio. Además se
necesitan los siguientes parámetros:
o Potencia Activa [MW].
o Potencia Reactiva [MVar].
31
o Limite superior e inferior de la Potencia Real y Reactiva.
o Potencia total en [MVA].
• Líneas: Se necesitan las barras donde está conectada, el largo de ésta y
especificar si la línea se encuentra o no en servicio. Además se
necesitan los siguientes datos:
o R, X y B (resistencia, reactancia y susceptancia) de la línea en
[p.u].
o Capacidad de la línea en [MVA].
• Transformadores de dos y tres enrollados: Se necesita saber entre que
barras está conectado el transformador, y saber si está en servicio o no.
Los demás datos que se necesitan son:
o Relación de resistencia y reactancia entre enrollados (R1-2 y X1-
2) en [p.u]
o La potencia nominal del transformador expresada en [MVA].
o Relación entre voltaje nominal y voltaje base de los enrollados.
• Shunts / Reactores: Para los Shunts / Reactores se necesita saber la
barra donde están conectados y los siguientes datos:
o Límite superior e inferior de voltaje en [p.u].
o Total de admitancia del elemento shunt entregada [MVar] con
respecto a la unidad de voltaje.
o Numero de pasos necesarios para llegar al total de admitancia.
o Incremento de admitancia por cada número de pasos.
32
• Etc.
3.4 Datos de Secuencia
Los datos de secuencia (positiva, negativa y cero) son necesaria para
realizar un análisis de fallas en sistemas balanceado/des balanceados.
Los datos mínimos necesarios para crear esta base de datos son:
• Datos de Secuencia de los generadores:
o Para cada uno de los casos se necesita la barra donde esta
conectado el generador, su resistencia y reactancia (cero, positiva
y negativa, para cada caso) en [p.u].
• Datos de secuencia de cargas tipo Shunt:
o Este dato se utiliza para cargas de tipo shunt, se necesita la barra
donde esta conectada la carga, y los valores de secuencia de
resistencias y reactancias de cada elemento, expresadas en [p.u].
• Datos de secuencias de las líneas de transmisión:
o Se necesitan las barras donde esta conectada la línea, con los
datos de resistencia, reactancia y susceptancia de secuencias de
cada una.
• Puesta a tierra de cada elemento del sistema:
o Se necesitan las barras donde están conectados los elementos,
por ejemplo en el caso de los transformadores se especifica el tipo
de conexión que cada uno tiene, por ejemplo el lado de alta esta
33
en conexión delta y el lado de baja en configuración estrella con
neutro conectado a tierra.
• Datos de secuencia de los elementos Shunt:
o Se necesita la barra donde esta conectado el elemento, y el
incremento de la admitancia de secuencia cero para cada paso en
[p.u].
• Etc.
3.5 Datos para Análisis Dinámicos
Estos datos son necesarios para poder modelar cada una de las
máquinas generadoras, cargas, protecciones, y así poder realizar un estudio
dinámico del sistema.
Los datos necesarios para este análisis son:
• Modelo General de cada generador.
• Modelo de los Reguladores de Voltaje de cada generador.
• Modelo de los Reguladores de Turbina de cada generador.
• Estabilizadores de Potencia de cada generador.
• Modelo de Cargas.
• Modelo de protecciones.
• Etc.
Cada uno de estos puntos será mostrado en detalle en anexos.
34
3.6 Uso de Power Factory – Digsilent y Power System Simulator
for Engineering (PSS/E)
La recopilación de información para realizar la base de datos se obtuvo
desde la página oficial del CDEC – SING. Estos datos están ingresados en los
archivos utilizados por el software Power Factory – Digsilent en formato
exportado .dz, los cuales fueron extraídos a Microsoft Excel para luego generar
archivos “.raw” (sin formato) utilizables por los softwares PSS/E y Power World.
El traspaso desde Digsilent a estos programas debe ser en ambas direcciones
(lectura / escritura).
Para realizar el traspaso desde los archivos Digsilent (.dz) a Excel (.xls),
se utilizó un script escrito en lenguaje DPL (Digsilent Programming Lenguage).
Este proceso llevo los datos a formato .txt. Luego se abren estos archivos con
Excel y se generan los archivos “raw” utilizando macros (Visual Basic).
Estos archivos “raw” pueden ser leídos por Digsilent, PSS/E y Power
World, lo que facilita el análisis de cualquier variación que se quiera estudiar
mediante estos softwares.
3.7 Archivos Creados para la Base de Datos
Para hacer el traspaso desde Digsilent a un archivo formato .txt se crea
un script hecho en lenguaje DPL, lenguaje muy parecido a C++. La información
para utilizar este lenguaje de programación se encuentra en el manual del
Digsilent.
35
El Script genera tres archivos, el primero utilizado para el cálculo del flujo
de potencia, el segundo contiene los datos de secuencia, y el tercero tiene los
datos para cálculos dinámicos del sistema.
El algoritmo del script, es el siguiente:
Set: Con este comando se definen las variables que contendrán un listado de
parámetros, por ejemplo, todas las barras del sistema.
object : Se definen las variables que contiene cada uno de los elementos
listados en el comando Set, por ejemplo, la barra Encuentro 220 con
todos los datos que contiene (nombre, voltaje, etc).
string: Se usa para definir las variables alfabéticas que se encuentran en los
objetos, como por ejemplo, el nombre de la barra.
double: Se utiliza para definir variables numéricas que se encuentran en los
objetos, como por ejemplo el voltaje de una barra.
int: Se utiliza para definir variables de tipo entero, se utilizan generalmente para
hacer comparaciones (1 verdadero, 0 falso).
fopen: Se utiliza para crear un archivo de texto. En este caso se generan tres
archivos estos son raw.txt, seq.txt y dyr.txt. El primero contiene los datos
para el cálculo de flujo de potencia, el segundo contiene los datos de
secuencia del sistema, y el tercero contiene los datos para el cálculo
dinámico.
36
Luego de definir los tipos de variables a utilizar, se comienza a extraer datos
desde Digsilent:
while (exista una red){
• Se eligen cada una de las barras y terminales de todas las redes
existentes en el sistema y se escribe en este formato:
o Name Station: Nombre de la barra.
o Grid: Nombre de la red en la que se encuentra.
o Nom.L-L Volt.kV: Voltaje nominal de la barra en [kV].
o Ul. Magnitude kV: Voltaje real de la barra en [kV].
o u. Magnitude p.u: Voltaje real de la barra en [pu].
o U. Angle deg: Ángulo del voltaje en la barra, en [deg].
while (exista una red){
• Se eligen cada una de las cargas de todas las redes existentes en el
sistema y se escribe en este formato:
o Name: Nombre de la carga.
o Grid: Nombre de la red en la que se encuentra.
o Type TypLod,TypLodind: Tipo de carga.
o Terminal Busbar: Barra donde está conectada la carga.
o Out of Service: Muestra si la carga se encuentra en servicio.
o Act.Pow. MW: Potencia Activa de la carga en [MW].
37
o React.Pow. Mvar: Potencia reactiva de la carga en [MVar]
o App.Pow. MVA: Potencia aparente de la carga en [MVA].
o I kA: Corriente de la carga en [kA].
o Pow.Fact.: Factor de potencia de la carga.
while (exista una red){
• Se eligen cada una de los generadores de todas las redes existentes
en el sistema y se escribe en este formato:
o Nombre: Nombre del generador.
o Grid: Nombre de la red en la que se encuentra el generador.
o Terminal Busbar: Barra donde está conectada el generador.
o Active Power MW: Potencia Activa del generador en [MW].
o Reactive Power Mvar: Potencia reactiva del generador en [MVar].
o Qmax Mvar: Limite superior de Potencia Reactiva en [MVar].
o Qmin Mvar: Limite inferior de Potencia Reactiva en [MVar].
o Nominal Apparent Power: Potencia nominal del generador en
[MVA].
o xd" sat p.u: Reactancia de saturación.
o Out of Service: Muestra si el generador se encuentra en servicio.
o Pmax MW: Máximo valor de Potencia Activa del generador.
o Pmin MW: Valor mínimo de Potencia activa del generador.
38
while (exista una red){
• Se eligen cada una de las líneas de todas las redes existentes en el
sistema y se escribe en este formato:
o Nombre: Nombre de la línea.
o Grid: Nombre de la red en la que se encuentra la línea.
o Terminal i: Barra i donde esta conectada la línea.
o Terminal j: Barra j donde esta conectada la línea.
o R [pu]: Parámetro R (resistencia) de la línea, en ohm/km.
o X [pu]: Parámetro X (reactancia) de la línea, en ohm/km.
o B [pu]: Parámetro B (susceptancia) de la línea, e h /kmn o m .
o RateA; RateB; RateC: se refiere a la expresión √3·V · I , en
[MVA].
o Out of Service: Muestra si la línea se encuentra en servicio.
o Len [KM]: representa el largo de la línea, en [km].
while (exista una red){
• Se eligen cada una de los transformadores de dos y tres enrollados
de todas las redes existentes en el sistema y se escribe en este formato:
o Nombre: Nombre del transformador.
o Grid: Nombre de la red en la que se encuentra el transformador.
o Terminal i: Barra i donde esta conectado el transformador.
o Terminal j: Barra j donde esta conectado el transformador.
39
o R1-2 [pu]: Parámetro R (resistencia), de secuencia positiva en
[pu].
o X1-2 [pu]: Parámetro X (reactancia), de secuencia positiva en [pu].
o Rated Power [MVA]; Rated Power [MVA]; Rated Power [MVA]:
Potencia nominal del transformador, en [MVA].
o WINDV1 [pu]: Relación entre el voltaje de alta del transformador y
el voltaje nominal, en [pu].
o Out of Service: Muestra si el transformador se encuentra en
servicio.
while (exista una red){
• Se eligen cada una de los elementos Shunt de todas las redes
existentes en el sistema y se escribe en este formato:
o Name Nombre del elemento shunt.
o Grid: Nombre de la red en la que se encuentra el elemento shunt.
o Terminal BusBar: Barra donde está conectada el elemento shunt.
o Upper Voltage Limit [pu]: Límite superior de voltaje en [pu].
o Lower Voltage Limit [pu]: Límite inferior de voltaje en [pu].
o Binit: Admitancia total.
o Ni: Numero de pasos.
o Bi: Valor de la admitancia por numero de pasos.
40
Con esto se termina la recopilación de datos para el cálculo de flujo de
potencia, ahora se comienza a escribir el archivo que contiene los datos de
secuencia.
while (exista una red) {
• Se eligen los datos de impedancia de secuencia positiva de los
generadores de todas las redes existentes en el sistema y se escribe en
este formato:
o Terminal Bus Bar: Barra donde está conectado el generador.
o Name: Nombre del Generador.
o ZRPOS [pu]: Resistencia de secuencia positiva del generador.
o ZXPOS [pu]: Reactancia de secuencia positiva del generador.
while (exista una red) {
• Se eligen los datos de impedancia de secuencia negativa de los
generadores de todas las redes existentes en el sistema y se escribe en
este formato:
o Terminal Bus Bar: Barra donde está conectado el generador.
o Name: Nombre del Generador.
o ZRNEG [pu]: Resistencia de secuencia negativa del generador.
o ZXNEG [pu]: Reactancia de secuencia negativa del generador.
41
while (exista una red) {
• Se eligen los datos de impedancia de secuencia cero de los
generadores de todas las redes existentes en el sistema y se escribe en
este formato:
o Terminal Bus Bar: Barra donde está conectado el generador.
o Name: Nombre del Generador.
o RZERO [pu]: Resistencia de secuencia cero del generador.
o XZERO [pu]: Reactancia de secuencia cero del generador.
while (exista una red) {
• Se eligen los datos de impedancia de secuencia negativa de las cargas
de tipo shunt de todas las redes existentes en el sistema y se escribe en
este formato:
o Terminal Bus Bar: Barra donde está conectada la carga.
o Name: Nombre de la carga.
o GNEG [pu]: Componente activa de secuencia negativa de la
carga.
o BNEG [pu]: Componente reactiva de secuencia negativa de la
carga.
while (exista una red) {
42
• Se eligen los datos de impedancia de secuencia cero de las cargas de
tipo shunt de todas las redes existentes en el sistema y se escribe en
este formato:
o Terminal Bus Bar: Barra donde está conectada la carga.
o Name: Nombre de la carga.
o GZERO [pu]: Componente activa de secuencia cero de la carga.
o BZERO [pu]: Componente reactiva de secuencia cero de la carga.
while (exista una red) {
• Se eligen los datos de secuencia cero de las líneas de todas las redes
existentes en el sistema y se escribe en este formato:
o Name: Nombre de la línea.
o Terminal i Bus bar: Barra i donde esta conectada la línea.
o Terminal j Bus Bar: Barra j donde esta conectada la línea.
o RLINZ: Resistencia de secuencia cero de la línea en [pu].
o XLINZ: Reactancia de secuencia cero de la línea en [pu].
o BCHZ: Susceptancia de secuencia cero de la línea en [pu].
while (exista una red) {
• Se eligen los datos de método de puesta a tierra de los
transformadores de dos y tres enrollados de todas las redes existentes
en el sistema y se escribe en este formato:
43
o Name: Nombre del generador.
o Terminal i Bus bar: Barra i donde está conectado el transformador
(lado de alta tensión).
o Terminal j Bus Bar: Barra j donde está conectado el transformador
(lado de baja tensión).
o Grounding Code I: Método de conexión de lado i del transformador
(D, Y o YN).
o Grounding Code J: Método de conexión de lado j del
transformador (D, Y o YN).
Con esto finaliza la recopilación de datos de secuencia del sistema, y comienza
la recopilación de datos para el análisis dinámico.
while (exista una red) {
• Se eligen los datos del modelo general de cada generador de todas las
redes existentes en el sistema y se escribe en este formato:
o Nombre: Nombre del Generador.
o Terminal Bus Bar: Barra en donde está conectado el generador.
o H [s]: Constante de tiempo de inercia.
o Damp [pu]: Dumping mecánico.
o rstr [pu]: Resistencia de estator.
o xl [pu]: Reactancia de fuga.
o xrl [pu]: Reactancia de estator.
44
o Rotor Type: Tipo de rotor (polos salientes, tipo jaula de ardilla)
o xd [pu]: Reactancia síncrona longitudinal.
o xq [pu]: Reactancia síncrona transversal.
o Td0´ [s], Tq0´ [s]: Constantes de tiempo transitorios.
o xd´ [pu]: Reactancia transiente longitudinal.
o xq´ [pu]: Reactancia transiente transversal.
o Td0´´ [s], Tq0´´ [s]: Constantes de tiempo subtransitorios.
o xd´´ [pu]: Reactancia subtransiente longitudinal.
o xq´´ [pu]: Reactancia subtransiente transversal.
o Main Flux Saturation: Saturación de flujo principal.
o 1.0 [pu], 1.2 [pu]: Parámetros de saturación
while (exista una red) {
• Se eligen los datos de los reguladores de tensión de cada generador
de todas las redes existentes en el sistema. Existen distinta información
para distintos tipos de generadores, estos datos se detallan en los
anexos.
while (exista una red) {
• Se eligen los datos de los reguladores de turbina de cada generador de
todas las redes existentes en el sistema. Existen distinta información
45
para distintos tipos de generadores, estos datos se detallan en los
anexos.
while (exista una red) {
• Se eligen los datos de los estabilizadores de potencia de cada
generador de todas las redes existentes en el sistema. Existen distinta
información para distintos tipos de generadores, estos datos se detallan
en los anexos.
46
CAPÍTULO 4.
BASE DE DATOS PARA CREAR ARCHIVOS GENERALES DE
SISTEMAS ELÉCTRICOS.
4.1 Resumen
En este capítulo se mostrará el origen y el manejo de los datos
recopilados para el análisis y cálculo de los sistemas eléctricos.
4.2 Introducción
En el capítulo anterior se describe en detalle el algoritmo del script
realizado en Digsilent. En esta oportunidad se hablará del origen de dichos
datos, la forma en que son manejados, y el producto final, que se refiere a los
archivos generados para ser utilizados por los softwares disponibles (Digsilent,
PSS/E y Power World).
4.3 Planteamiento del Problema
Como es de conocimiento general, cada elemento de un sistema
eléctrico contiene parámetros físicos, técnicos y eléctricos que son necesarios
para realizar análisis de estabilidad. Esta extensa información es manejada de
forma particular por cada uno de los softwares del mercado, es decir, cada
programa tiene sus propias librerías, herramientas, entornos gráficos y forma en
47
como ingresar datos, siendo la de algunos más gráfica y didáctica, y en otros
siendo más criptica y detallada para manejar.
Es por esto que surge la necesidad de crear una base de datos que trate
a cada elemento del sistema de forma general y sencilla. Para esto se elige una
herramienta ampliamente conocida en el mercado, Microsoft Excel, de uso
frecuente como planilla de cálculo.
Para esto se crea una herramienta capaz de exportar datos directamente
desde Digsilent (donde se tienen los datos actualizados del sistema), y crear
archivos de texto, en formato legible directamente por Excel, los cuales serán
exportados en formato .raw, formato compatible con todos los softwares
utilizados.
4.4 Datos de Entrada de Base de Datos
Los datos requeridos por los programas Power World, PSS/E y Digsilent,
son distintos (en cantidad) ya que cada uno de estos programas maneja la
información de manera distinta, siendo unos más completos que otros.
El análisis más básico lo entrega Power World, que solamente está
capacitado para realizar estudios de flujos de potencia, aún así este programa
tiene una interfaz bastante sencilla y didáctica, lo que lo hace un programa muy
usado para ilustrar gráficamente el comportamiento del sistema.
El programa PSS/E, además de realizar análisis de flujos de potencia, es
capaz de hacer estudios dinámicos de fallas. Es por esto que requiere una
48
mayor cantidad de datos de los que necesita Power World, precisando un
archivo raw mayor. El problema es que es un programa poco amigable, y su
utilización se limita a usuarios avanzados.
PSS/E también es capaz de realizar análisis dinámicos de sistema, pero
su implementación es más complicada que en Digsilent, aún así estos análisis
se desarrollan, y los resultados del PSS/E serán comparados con los resultados
entregados por Digsilent.
Digsilent es el programa más completo de los tres software presentados,
es bastante gráfico y didáctico para su utilización, haciéndolo, a primera vista,
fácil de ocupar. Aún así trabajar con Digsilent es complicado, ya que, por
ejemplo, la cantidad de datos requeridos para hacer un simple flujo de potencia
es abrumadora, con lo que se escapa de la definición de “programa fácil de
ocupar”. Digsilent realiza, entre otras cosas, flujos de potencia, análisis de fallas
y estudios dinámicos de SEP. Aunque PSS/E también realiza análisis
dinámicos, es en Digsilent donde se puede ajustar (con la posibilidad de
hacerlo gráficamente) con mayor precisión las máquinas generadoras del
sistema, consiguiendo hacer modelos personalizados (en especial de los
sistemas de control).
Este programa es el que se está utilizando hoy en el mercado chileno y
es en donde se encuentran gran parte de los datos necesarios. Los CDEC’s
ponen a disposición los archivos del SING y SIC en Digsilent, en donde se
encuentran los antecedentes necesarios, pero al tratar de visualizar los datos,
49
estos se encuentran en lenguaje críptico (formato .dz), y es por esto que es
necesario crear una forma (script) para llevar la información desde Digsilent a
PSS/E y Power world, u otro software.
4.5 Creación del Diseño
El traspaso de información desde Digsilent a Excel puede ser directa,
simplemente “copiando y pegando”, el problema con este método es que existe
mucha información innecesaria, o redundante. Además, para el caso de análisis
dinámico, los datos tendrían que hacerse uno por uno, por cada generador. Es
por esto que se hace uso del script, para hacer el traspaso de información en
poco tiempo y sólo con la información necesaria.
Cada inicio de toma de datos comienza con el siguiente formato:
“0 tab una pequeña descripción de la información que viene”
“nombre de la información que se mostrará separada por tabs”
“nombre de la variable que contiene la información en Digsilent”
En la Figura 3 se muestra une extracto del archivo generado, donde se
ve claramente el uso de “tabs” para cambiar de tipo de información, y en el
encabezado de tres líneas especificado anteriormente.
50
Figura 3, Tabla de Script Visto en Notepad
Este archivo generado se abre con Excel, lo que se ve en la siguiente
figura:
Figura 4, Tabla de Script Visto en Excel
Este formato se repite para cada tipo de dato, y para cada archivo, esto
se hace para facilitar la creación de una macro de Excel.
Cuando Excel genera los archivos raw, estos están en formato raw tipo
26, que es el formato que lee Power World, PSS/E y Digsilent.
51
CAPÍTULO 5.
CASOS PRÁCTICOS DE ANÁLISIS
5.1 Resumen
En este capítulo se analizarán estudios reales en el sistema. Entre estos
estudios, se pueden considerar la inclusión de generadores, líneas y cargas al
sistema, y comparación de los resultados obtenidos con los softwares.
5.2 Introducción
Utilizando Digsilent se estudiaran 2 casos reales, el primero consiste en
incluir nuevas centrales generadoras, utilizando una demanda esperada a futuro
para realizar estudios.
Con estas centrales en funcionamiento se estudiarán los efectos
sistémicos, la necesidad de incluir nuevas líneas, con lo cual estos análisis se
extenderán a los efectos en el sistema de transmisión. Esto llevará al segundo
caso a estudiar, la inclusión de nuevas líneas de transmisión.
Los análisis en general consisten en hacer flujos de potencias y análisis
estáticos de fallas, analizando variables principales. Se analizan los efectos en
el sistema, antes y después de la central, se realizan comparaciones con cada
uno de los softwares computacionales, mediante la base de datos creada.
52
5.3 Casos de Estudio
Para realizar los distintos casos de estudio, hay que tener en cuenta que
los cambios que se realizarán son la inclusión de:
• 2 unidades generadoras en Mejillones (SING) (300 MW).
• Otra nueva posible central generadora en mejillones con capacidad
aproximada de 600 MW que tendrá posible conexión con las barras del
SING Chacaya, Gas Atacama, Laberinto y Encuentro/Crucero.
• Nuevas líneas entre Chacaya – Gas Atacama y Norgener – Tocopilla, y
cuando se necesite, una línea nueva entre Crucero – Encuentro.
• Cuando sea necesario, y para equilibrar el sistema cuando la generación
exceda la demanda, se incluirán cargas posibles en barras Laberinto,
Escondida y Encuentro.
• Al entrar las unidades generadoras de mejillones, se analizará la
necesidad del resto de las unidades del área.
• Cuando ingrese al sistema la nueva central generadora en mejillones (de
aprox. 600 MW), se analizará el efecto de sacar de servicio la central
Salta.
53
Con estos datos se crea el siguiente cuadro:
MEJ1‐ MEJ2 Central 600 MW L Chacaya‐GasAtacama0 0 0 0 0 1 0 1 0 0 1 1 se agregan cargas 1 0 0 1 0 1 se agregan cargas 1 1 0 se agregan cargas 1 1 1 se agregan cargas
Figura 5, Casos a Estudiar
Los 8 casos mostrados en el cuadro anterior son los que se estudiarán
con los 3 programas. Además se agregan 4 casos más:
• El caso base (sistema sin cambios).
• Una línea adicional Norgener – Tocopilla
• Una línea adicional Crucero – Encuentro
• Un caso que incluye la central de 600 MW + unidades en
Mejillones + la línea Norgener – Tocopilla + la línea Crucero –
Encuentro.
Con todos estos casos ya definidos, se calculan los flujos de potencia en
Digsilent, extrayendo manualmente solamente los datos de voltaje en las
barras, el nivel de carga de las líneas y la potencia suministrada por los
generadores para posterior comparación.
En la Figura 6 se muestran los datos de nivel de voltaje que existe en las
barras para el caso base (izquierda) y el de la línea adicional Crucero –
Encuentro (uno de los 12 casos mencionados anteriormente). Cuando se
54
realiza el caso base, existen barras que se encuentran por debajo de 0.95 en
p.u, las cuales se marcan en amarillo pues no se toman en cuenta para el
análisis (Esto porque el problema de este bajo voltaje no es el tópico en
estudio). Luego se muestran en rojo aquellas barras que tienen directa relación
con los cambios hechos y que modificaron y luego se marca en color verde
aquellas barras no están relacionadas de manera directa eléctricamente con el
sector de análisis realizado.
Caso Base Línea Crucero Encuentro
Nombre En la carpeta u, Magnitud Nombre En la carpeta u, Magnitud
p.u. p.u.
Terminal(1) rw AG Salta-Andes 0.9496783
Pozo Almonte Cerro Colorado 12
Línea crucero Encuentro 0.8695532
Andes 345 SING 0.9496636 Laberinto Oeste 13.2 Linea crucero Encuentro 0.886408
Andes Reactor Shunt 345 SING 0.9496636 Lagunas Norte 23 Linea crucero Encuentro 0.9005405
Calama Santa Margarita 23 SING 0.9486859 Parinacota 13.8 Linea crucero Encuentro 0.9183257
Tocopilla 5 E SING 0.9443493 SS/AA CTM1 4.16 Linea crucero Encuentro 0.9389611
Pozo Almonte Cerro Colorado 12 SING 0.9422563 Andes 345
Linea crucero Encuentro 0.943405
SS/AA CTM1 4.16 SING 0.9374819 Andes Reactor Shunt 345 Linea crucero Encuentro 0.943405
Lagunas Norte 23 SING 0.9222045 Terminal(1) rw AG Salta-Andes 0.9434178
Parinacota 13.8 SING 0.9188048 Tocopilla 5 E Linea crucero Encuentro 0.944683
Laberinto Oeste 13.2 SING 0.9155864
Calama Santa Margarita 23 Linea crucero Encuentro 0.9549839
Mantos Blancos 6.3 SING 0.9521913 Pozo Almonte 13.8 AT2 Linea crucero Encuentro 0.8966071
Pozo Almonte 13.8 AT2 SING 0.9531089 Pozo Almonte 13.8 AT5 Linea crucero Encuentro 0.9126411
Radomiro Tomic 220 SING 0.9549096 Radomiro Tomic 23 Linea crucero Encuentro 0.9217408
Chacaya CTM1 13.8 SING 0.9553594 Pozo Almonte 24 Linea crucero Encuentro 0.922722
Capricornio 23 SING 0.9557767 Pozo Almonte Pampino 24 Linea crucero Encuentro 0.9227982
Tocopilla 13.8 SING 0.9566233 Arica 13.2 Linea crucero Encuentro 0.8780781
Esmeralda 13.8 SING 0.9613217 Pozo Almonte Cerro Colorado 110
Linea crucero Encuentro 0.9066734
Chuquicamata GIS 13.8 SING 0.9627828 Arica Chapiquiña 3 Linea crucero Encuentro 0.911808
CD Iquique MSIQ 6.6 SING 0.963075 CD Iquique MSIQ 6.6 Linea crucero Encuentro 0.9128188
El Abra 220 SING 0.9638432 CD Arica 13.8 Linea crucero Encuentro 0.9168857
Figura 6, Datos del Sistema Extraídos Manualmente, Caso Base + Línea Crucero ‐ Encuentro
55
El mismo análisis fue hecho para cada uno de los casos, es decir, se
analizó el voltaje por barras, y adicionalmente se analizó el nivel de carga en las
líneas y se verificó la potencia entregada por cada generador.
Luego se procede a realizar las mismas comparaciones, pero ahora
adquiriendo los datos con la ayuda del script hecho para extraer datos del
Digsilent. Los datos fueron llevados a un archivo .txt, que maneja mediante
base de datos en Excel, cuyos resultados se muestran en la Figura 7, donde se
observa que los datos extraídos por el script difieren en el 6° decimal, lo que no
afecta prácticamente en nada en términos de cálculo de flujos.
Caso Base Linea Crucero Encuentro
Nombre En la Carpeta u, Magnitud Nombre En la carpeta
u, Magnitud
p.u p.u.
Terminal(1) rw AG Salta-Andes 0.949678
Pozo Almonte Cerro Colorado 12
Linea crucero Encuentro 0.869553
Andes 345 SING 0.949664 Laberinto Oeste 13.2 Linea crucero Encuentro 0.886408
Andes Reactor Shunt 345 SING 0.949664 Lagunas Norte 23 Linea crucero Encuentro 0.90054
Calama Santa Margarita 23 SING 0.948686 Parinacota 13.8 Linea crucero Encuentro 0.918326
Tocopilla 5 E SING 0.944349 SS/AA CTM1 4.16 Linea crucero Encuentro 0.938961
Pozo Almonte Cerro Colorado 12 SING 0.942256 Andes 345
Linea crucero Encuentro 0.943405
SS/AA CTM1 4.16 SING 0.937482 Andes Reactor Shunt 345 Linea crucero Encuentro 0.943405
Lagunas Norte 23 SING 0.922205 Terminal(1) rw AG Salta-Andes 0.943418
Parinacota 13.8 SING 0.918805 Tocopilla 5 E Linea crucero Encuentro 0.944683
Laberinto Oeste 13.2 SING 0.915586 Calama Santa Margarita 23 Linea crucero Encuentro 0.954984
Mantos Blancos 6.3 SING 0.952191 Pozo Almonte 13.8 AT2 Linea crucero Encuentro 0.896607
Pozo Almonte 13.8 AT2 SING 0.953109 Pozo Almonte 13.8 AT5 Linea crucero Encuentro 0.912641
Radomiro Tomic 220 SING 0.95491 Radomiro Tomic 23 Linea crucero Encuentro 0.921741
Chacaya CTM1 13.8 SING 0.955359 Pozo Almonte 24 Linea crucero Encuentro 0.922722
Capricornio 23 SING 0.955777 Pozo Almonte Pampino 24 Linea crucero Encuentro 0.922798
Tocopilla 13.8 SING 0.956623 Arica 13.2 Linea crucero Encuentro 0.878078
Esmeralda 13.8 SING 0.961322 Pozo Almonte Cerro Colorado 110
Linea crucero Encuentro 0.906673
Chuquicamata GIS 13.8 SING 0.962783 Arica Chapiquiña 3 Linea crucero Encuentro 0.911808
CD Iquique MSIQ 6.6 SING 0.963075 CD Iquique MSIQ 6.6 Linea crucero Encuentro 0.912819
El Abra 220 SING 0.963843 CD Arica 13.8 Linea crucero Encuentro 0.916886
Figura 7, Datos del Sistema Extraídos con el Script, Caso Base + Línea Crucero ‐ Encuentro
56
Se repite este proceso para los 12 casos, para barras, generadores y
líneas.
Ahora se procede a crear el archivo .raw que será leído por los
programas PowerWorld y PSS/E. Este archivo es creado para la versión raw 26,
e incluye todos los datos necesarios para hacer estudios de flujos de potencia.
Un extracto de esta etapa se muestra en la siguiente figura:
0 Barras 0 100
Name Station Grid Nom.L-L Volt.kV
Ul. Magnitude kV
Magnitude p.u
Angle deg SING
loc_name fold_id e:uknom m:Ul m:u m:phiu
num 2007
B1 Alto Norte 13.8 #1 SING 13.8 13.8464 1.00336
-11.0826 1 1 1
1 '1 ' 13.8 1 0 0 1 1 1.00336 -11.0826 1
B2 Alto Norte 13.8 #1 SING 13.8 13.8464 1.00336
-11.0826 1 2 1
2 '2 ' 13.8 1 0 0 1 1 1.00336 -11.0826 1
B1 Alto Norte 13.8 #2 SING 13.8 13.7587 0.997005
-10.4734 1 3 1
3 '3 ' 13.8 1 0 0 1 1 0.997005 -10.4734 1
B2 Alto Norte 13.8 #2 SING 13.8 13.7587 0.997005
-10.4734 1 4 1
4 '4 ' 13.8 1 0 0 1 1 0.997005 -10.4734 1
Antofagasta 13.8 A
Antofagasta 13.8 SING 13.8 13.7251 0.994572
-9.53945 1 5 1
5 '5 ' 13.8 1 0 0 1 1 0.994572 -9.53945 1
Antofagasta 13.8 B
Antofagasta 13.8 SING 13.8 13.7251 0.994572
-9.53945 1 6 1
6 '6 ' 13.8 1 0 0 1 1 0.994572 -9.53945 1
B1 Calama 23 SING 23 22.4503 0.976101
-25.0454 1 7 1
7 '7 ' 23 1 0 0 1 1 0.976101 -25.0454 1
B2 Calama 23 SING 23 22.4503 0.976101
-25.0454 1 8 1
8 '8 ' 23 1 0 0 1 1 0.976101 -25.0454 1
Chacaya 1 Chacaya 220 SING 220 220.66 1.003
27.1068 1 9 1
9 '9 ' 220 1 0 0 1 1 1.003 27.1068 1
Figura 8, Creación de formato raw 26
En las últimas dos columnas se muestra el texto que finalmente irá en el
archivo raw. Luego el archivo se abre con PowerWorld, como se ve en la Figura
9, y en donde se muestra que se han leído cada uno de los datos
satisfactoriamente.
57
Figura 9, Vista de PowerWorld
En la Figura 10 se muestran algunos datos ya ingresados en el programa.
Hay que agregar que además de los datos que se ingresan desde la base de
datos del Digsilent, hay que agregar la información de los switchs e
interruptores, que se modelan como líneas de distancia e impedancia cero, esto
se hace porque pueden existir elementos en servicio, pero que el switch que los
conecta al sistema, esta desconectado.
58
Ahora es cuando se ejecuta el cálculo de flujo de potencia, y se exportan
los resultados a Excel para hacer una tabla comparativa.
Figura 10, Datos Ingresados al Power World
En la figura 11 se muestra el resultado que entrega Digsilent después de
hacer un cálculo de flujo de potencia, y el que entrega Power World para uno de
los casos estudiados. En la última columna se muestra la diferencia que existe
entre ambos resultados, en donde se aprecia que esta diferencia nunca es
mayor al 3%, mostrando así la efectividad del programa. En la figura 12 y 13, se
muestran las comparaciones de generación y flujos por las líneas.
59
Linea Crucero Encuentro Linea Crucero EncuentroNombre En la carpeta u, Magnitud Nombre En la carpeta u, Magnitu %
p.u. p.u.Pozo Almonte Cerro Colorado Linea crucero Encu0.869553 Pozo Almonte Cerro Colorado 1Linea crucero En 0.869553 0Laberinto Oeste 13.2 Linea crucero Encu0.886408 Laberinto Oeste 13.2 Linea crucero En 0.886408 0Lagunas Norte 23 Linea crucero Encu0.900541 Lagunas Norte 23 Linea crucero En 0.891535 0.01Parinacota 13.8 Linea crucero Encu0.918326 Parinacota 13.8 Linea crucero En 0.899959 0.02SS/AA CTM1 4.16 Linea crucero Encu0.938961 SS/AA CTM1 4.16 Linea crucero En 0.95774 -0.02Andes 345 Linea crucero Encu0.943405 Andes 345 Linea crucero En 0.933971 0.01Andes Reactor Shunt 345 Linea crucero Encu0.943405 Andes Reactor Shunt 345 Linea crucero En 0.952839 -0.01Terminal(1) rw AG Salta-Andes 0.943418 Terminal(1) rw AG Salta-And 0.952852 -0.01Tocopilla 5 E Linea crucero Encu0.944683 Tocopilla 5 E Linea crucero En 0.944683 0Calama Santa Margarita 23 Linea crucero Encu0.954984 Calama Santa Margarita 23 Linea crucero En 0.983633 -0.03Pozo Almonte 13.8 AT2 Linea crucero Encu0.896607 Pozo Almonte 13.8 AT2 Linea crucero En 0.923505 -0.03Pozo Almonte 13.8 AT5 Linea crucero Encu0.912641 Pozo Almonte 13.8 AT5 Linea crucero En 0.885262 0.03Radomiro Tomic 23 Linea crucero Encu0.921741 Radomiro Tomic 23 Linea crucero En 0.921741 0Pozo Almonte 24 Linea crucero Encu0.922722 Pozo Almonte 24 Linea crucero En 0.904268 0.02Pozo Almonte Pampino 24 Linea crucero Encu0.922798 Pozo Almonte Pampino 24 Linea crucero En 0.895114 0.03Arica 13.2 Linea crucero Encu0.878078 Arica 13.2 Linea crucero En 0.886859 -0.01Pozo Almonte Cerro Colorado Linea crucero Encu0.906673 Pozo Almonte Cerro Colorado 1Linea crucero En 0.897607 0.01Arica Chapiquiña 3 Linea crucero Encu0.911808 Arica Chapiquiña 3 Linea crucero En 0.920926 -0.01CD Iquique MSIQ 6.6 Linea crucero Encu0.912819 CD Iquique MSIQ 6.6 Linea crucero En 0.903691 0.01CD Arica 13.8 Linea crucero Encu0.916886 CD Arica 13.8 Linea crucero En 0.898548 0.02La Cascada 66 Linea crucero Encu0.919984 La Cascada 66 Linea crucero En 0.910784 0.01CD Arica 66 Linea crucero Encu0.928724 CD Arica 66 Linea crucero En 0.91015 0.02ED Tap-off Quiani ED CD Arica-Arica 0.928769 ED Tap-off Quiani ED CD Arica-Aric 0.938057 -0.01Arica 66 Linea crucero Encu0.928799 Arica 66 Linea crucero En 0.919511 0.01Terminal(1) rw ED Chapiquiña- 0.929439 Terminal(1) rw ED Chapiquiñ 0.938733 -0.01Arica Cerro Chuño 13.8 Linea crucero Encu0.929503 Arica Cerro Chuño 13.8 Linea crucero En 0.948093 -0.02Iquique Cavancha 4.16 Linea crucero Encu0.930458 Iquique Cavancha 4.16 Linea crucero En 0.958371 -0.03B1 Escondida Laguna 0.930679 B1 Escondida Lagun 0.912065 0.02B2 Escondida Laguna 0.930679 B2 Escondida Lagun 0.902759 0.03B2.0 Escondida Laguna 0.930679 B2.0 Escondida Lagun 0.949292 -0.02Arica El Aguila Quiborax Linea crucero Encu0.938645 Arica El Aguila Quiborax Linea crucero En 0.910486 0.03Laberinto Minsal 110 Linea crucero Encu0.939412 Laberinto Minsal 110 Linea crucero En 0.911229 0.03Laberinto Minsal 23 Linea crucero Encu0.939588 Laberinto Minsal 23 Linea crucero En 0.920796 0.02Terminal rw ED Chapiquiña- 0.942091 Terminal rw ED Chapiquiñ 0.942091 0B1 Escondida B2 69 0.947401 B1 Escondida B2 69 0.947401 0B2 Escondida B2 69 0.947401 B2 Escondida B2 69 0.947401 0Escondida El Peñon 6.6 Linea crucero Encu0.947717 Escondida El Peñon 6.6 Linea crucero En 0.966671 -0.02Pozo Almonte Tamarugal 66 Linea crucero Encu0.948033 Pozo Almonte Tamarugal 66 Linea crucero En 0.919592 0.03
Figura 11, Comparación de Barras entre Power world y Digsilent
Linea Encuentro Crucero Linea Encuentro CruceroNombre Potencia Activa Nombre Potencia Activa
MW MWrw EA U16 265.8 rw EA U16 265.8 0rw AG Salta TG11 177 rw AG Salta TG11 177 0xrw ED CTM1 150 xrw ED CTM1 150 0rw NG NTO2 126.5 rw NG NTO2 126.5 0rw NG NTO1 125.3451 rw NG NTO1 124.091649 ‐0.01010101rw GA TV2C 124.2 rw GA TV2C 124.2 0xrw EA U14 115.8 xrw EA U14 115.8 0rw GA TG2B 102.3 rw GA TG2B 102.3 0rw GA TG2A 101.6 rw GA TG2A 101.6 0rw AG Salta TV10 97 rw AG Salta TV10 97 0rw ED CTM3-TG 97 rw ED CTM3-TG 97 0xrw EA U15 84.6 xrw EA U15 84.6 0rw ED CTM3-TV 63.7 rw ED CTM3-TV 63.7 0Quebrada Blanca UGs 34 Quebrada Blanca UGs 34 0Chuquicamata UGs 1-3 24 Chuquicamata UGs 1-3 24 0CHAP1-2 8.4 CHAP1-2 8.4 0CAVA 0.5 CAVA 0.5 0
Figura 12, Comparación de Generación enre Power World y digsilent
60
Linea Encuentro Crucero Linea Encuentro CruceroNombre Nivel de Carga Nombre Nivel de Carga
% %xrw GA Zaldívar-Escond 128.0879 xrw GA Zaldívar-Escondida B 125.526142 ‐0.020408163zrw ED Pozo Almonte-Pa 121.1255 zrw ED Pozo Almonte-Pampino 123.54801 0.019607843zrw ED Pozo Almonte-La 113.5839 zrw ED Pozo Almonte-La Casca 111.312222 ‐0.020408163xrw GA Domeyko-Lagun 107.6583 xrw GA Domeyko-Laguna Seca 109.811466 0.019607843rw GA Encuentro-Collah 105.5036 rw GA Encuentro-Collahuasi 106.558636 0.00990099
Figura 13, Comparación de Líneas entre Power World y Digsilent
En el caso de los generadores, la máquina reguladora es NT01, en la
que se ve que la diferencia es del 1%, error aceptable para el análisis de
sistema.
Estas pruebas se hacen también con PSS/E, obteniendo resultados de
diferencias menores de 3%, al igual que Power World. Se debe mencionar que
el traspaso de información entre Power World y PSS/E es directo, ya que estos
programas sí son completamente compatibles.
En cada una de las pruebas hechas, la diferencia entre los programas
Power World – PSS/E y Digsilent nunca supera el 3%, dejando claro que el
programa no es exacto, pero que sí trabaja con un bajo índice de error, creando
cálculos y estudios confiables.
61
CAPÍTULO 6.
CONCLUSIONES
El constante desarrollo y crecimiento del sector eléctrico Chileno e
Internacional, inducido por el crecimiento constante de la población, impulsa la
necesidad de contar con herramientas de análisis para la toma de decisiones
técnicas-económicas por parte de los agentes participantes en un mercado
eléctrico competitivo. Dichos agentes, tendrán que considerar la mayor cantidad
de escenarios posibles para poder tomar la mejor decisión, es por esto que las
herramientas de análisis deben ser esencialmente, rápidas y eficaces.
Hoy en día, el uso del programa computacional Power Factory – Digsilent
en el mercado Chileno, ha logrado que las distintas empresas, manejen más
adecuadamente sus bases de datos, invirtiendo principalmente tiempo. En el
presente trabajo se muestra la manera de ayudar a hacer esto mucho más
rápido, logrando utilizar Digsilent no sólo más eficazmente, si no que
complementando su uso compatibilizándolo con otros softwares utilizados
anteriormente por las empresas Edelnor y ElectroAndina (Power World o
PSS/E) para hacer análisis rápidos y eficaces.
El uso de una base de datos en Excel, es la mejor técnica para realizar
este trabajo, ya que la información necesaria de cada uno de los elementos
eléctricos, que es esencial para hacer estudios en los sistemas eléctricos de
potencia, se maneja eficazmente. Estos datos no cambian, independiente del
software utilizado, manteniendo intacta la esencia del sistema eléctrico.
62
Para probar la efectividad de esta base de datos se comprueban los
resultados obtenidos realizando pruebas sin hacer uso de la base de datos,
para luego hacer los mismos estudios, pero ahora haciendo uso de la
herramienta descrita, los resultados obtenidos son básicamente idénticos, y el
tiempo involucrado fue considerablemente menor en el caso de uso del script,
además al hacer uso de Microsoft Excel, los resultados se hacen más claros y
fáciles de chequear.
Con esto se concluye que la implementación de la herramienta
computacional descrita y explicada a lo largo de este trabajo, es un aporte para
el análisis de sistemas eléctricos de potencia, ya que no solo otorga un
instrumento técnico - económico, si no que también acorta los tiempos de
análisis, y entrega respuestas claras y precisas.
Aún así, la constante aparición de nuevas versiones de programa, hace
que este tipo de aplicación necesite evolucionar al mismo ritmo, ya que siempre
existirán cambios necesarios para que la base de datos funcione
correctamente. Además, hay que resaltar que en este trabajo se tomaron en
cuenta solamente 3 programas, y en el mercado hay una gran cantidad de
estos, por lo que el número de combinaciones es enorme, solamente hay que
tener en cuenta la forma en que los distintos softwares manipulan los datos.
Queda de manifiesto que para el desarrollo de aplicaciones futuras, el campo es
inmenso.
63
Bibliografía
1. Montalván., R. Fuentes. HERRAMIENTAS DE VISUALIZACIÓN DE ESTUDIOS DE FLUJOS DE POTENCIA PARA EL APOYOA LA TOMA DE DECISIONES EN SISTEMAS ELÉCTRICOS. Universidad de Chile. Santiago : s.n., 2005. Trabajo de Título.
2. Fast Decoupled Power Flow. B. Slott, O. Alsac. Junio de 1974, IEEE Trans. Power Apparatus and System.
3. Corporation, Power World. [En línea] http://www.powerworld.com/features/featurefaq.asp.
4. The MathWorks, Inc. [En línea] http://www.mathworks.com/products/simpower/.
5. SIEMENS. [En línea] http://pssadept.com/pti/PTI‐spanish/software/psse/index‐spanish.cfm.
6. Technologies Inc, RTDS. [En línea] http://www.rtds.com/.
7. Etap, Enterprise Solution for Electrical Power System. [En línea] http://www.etap.com/.
8. GmbH, DIgSILENT. [En línea] http://www.digsilent.com/Software/PowerFactory_Features/.
9. D. T. Risy, and R. H. Staunton. Evaluation of Distribution Analysis Software for DER Applications. s.l. : ORNL/TM‐2001/215, Sep. 30, 2002.
10. Inc., ABB. [En línea] http://www.abb.com/Industries/seitp408/05c32a23cb9548e7c1257013003bddb2.aspx.
11. A power system analysis package for students, using computer graphics. Wachal RW, Tarnawecky MZ, Swift GW. IEEE Trans PAS 1984; PAS‐103(2):445‐8.
12. COPERITE ‐ computer‐aided tool for power engineering research, instruction, training and education. Chowdhury BH, Clark DE. IEEE Trans Power Syst 1992;7(4):1565‐70.
13. J. D. Glover, M. Sarma. Power System Analysis and Design. 2nd edition. s.l. : PWS Publishing Company. pág. 253.
14. N. N. Bengiamin, and F. H. Holcomb. PC‐Based Power System Software: Comparing Functions and Features. s.l. : IEEE Trans. Computer Applications in Power, Jan. 1992. págs. 35‐40. Vol. no. 1.
15. Modeling Requirements to Study Interactions of DG and Distribution Systems. Kojovic, Ljubomir. 2002, IEEE‐PES Sumer Meeting.
64
16. Power System Analysis Software Tools. Lokendra Bam, Ward Jewell. 2005, IEEE.
17. Pérez, J. E. Flujos de Potencia Optimo con Programación Secuencial. Universidad de Chile. Santiago : s.n., 2001. Tésis de Magíster.
18. International, Electrocon. CAPE, El software de ingeniería de protección. [En línea] http://www.electrocon.com/cape/pf_sp.htm.
19. Saadat, H. Power System Analysis. New York : McGraw‐Hill, 1999.
65
ANEXOS
1. Código Script El siguiente código es el script que se hizo en este trabajo. Esta en formato DPL (Digsilent Programming Lenguage). !----------------------------------------------------------------------- set Elm,Elm2,Elm3,SBar,Conn,ref,Grids,barras,terminales,prueba; object pMaq,pStac,pBar,bar1,pGrd,pElm,pElm2,pElm3,pTyp,term,bus,bus1,bus2,bus3, bus4, bus5,bus6,bus7,bus8,bus9; string ICONTP,ICONT,TapSide,iZoneBus,IREG,IREGP,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10, s11, s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30, s31,s32,s33,s34,s35,s36,token; double ZBASE,S_hm,S_hl,S_ml,ISC_hm,ISC_hl,ISC_ml,Req_hm,Req_hl,Req_ml, Xeq_hm,Xeq_hl,Xeq_ml,Zeq_hm,Zeq_hl,Zeq_ml,RMPCT,rPS,rPT,rST,xPS,xPT, xST,PG,QG,QT,QB,MBASE,PT,PB,VS,cntrl,ii,aa,bb,cc,dd,ee,ff,MVA,r,r2,r3,x,x2,x3,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,D13,D14,D15,D16,D17,D18,D19,D20, D21,D22,D23,D24,D25,D26,D27,H,unom,unom2,unom3,min_hm,min_hl,min_ml; int CC,i,j,cont,Tmod,comp,comp2,tok_pos,tok_pos2,numero,k,sPa,c,c2,z,d,comp3, comp4,comp5; fopen('C:\Raw.txt','w',0); Grids = AllRelevant('*.ElmNet'); pGrd = Grids.First(); fprintf(0,'0\tCase Identification Data'); fprintf(0,'IC\tSBASE'); fprintf(0,'0\t100'); !Flujo.Execute(); fprintf(0,'0\tBarras'); fprintf(0,'Name\tStation\tGrid\tNom.L-L Volt.kV\tUl. Magnitude kV\tu. Magnitude p.u\t U. Angle deg'); fprintf(0,'loc_name\tfold_id\t \te:uknom\tm:Ul\tm:u\tm:phiu'); while (pGrd) { Elm = pGrd.GetContents('*.StaBar',1); pElm = Elm.First(); while (pElm) { i=pElm.IsRelevant(); if (i=1) { bus1 = pElm.GetParent(); D1 = pElm:m:phiu; !Ángulo Efectivo [º] D2 = pElm:m:u; !Voltaje Efectivo [p.u.] D3 = pElm:m:Ul; !Voltaje Efectivo en [kV] D4 = pElm:uknom; !Voltaje Nominal [kV] s4 = pElm:loc_name; !Nombre Elemento s1 = bus1:loc_name; !Nombre Parent s2 = pGrd:loc_name; !Nombre Grid fprintf(0,'%s\t%s\t%s\t%.8f\t%g\t%g\t%g',s4,s1,s2,D4,D3,D2,D1);} pElm = Elm.Next(); } pGrd = Grids.Next();} fprintf(0,'0\tTerminales'); fprintf(0,'Name\tParent\tGrid\tNom.L-L Volt.kV\tUl. Magnitude kV\tu. Magnitude p.u\t U. Angle deg\tOut of Service');
66
fprintf(0,'loc_name\tFold_id\t \te:uknom\tm:Ul\tm:u\tm:phiu\toutserv'); pGrd = Grids.First(); while (pGrd) {Elm = pGrd.GetContents('*.ElmTerm',1); Elm.SortToVar(0,'outserv'); pElm = Elm.First(); while (pElm) { j=pElm.IsRelevant(); if (j=1) {bus1 = pElm.GetParent(); if (i=0) i=1; else i=0; s4 = pElm:loc_name; !Nombre Elemento s2 = bus1:loc_name; !Nombre Parent s1 = pGrd:loc_name; !Nombre Grid i = pElm:outserv; !Estado ON/OFF if (.not.i) {D1 = pElm:m:phiu; !Ángulo [º] D2 = pElm:m:u; !Voltaje PSS [p.u.] D3 = pElm:m:Ul; !Voltaje Efectivo en [kV] D4 = pElm:uknom; !Voltaje Nominal [kV] fprintf(0,'%s\t%s\t%s\t%.8f\t%g\t%g\t%g\t%i',s4,s2,s1,D4,D3,D2,D1,i);} else fprintf(0,'%s\t%s\t%s\t%.8f\t0\t0\t0\t%i',s4,s2,s1,D4,i);} pElm = Elm.Next(); } pGrd = Grids.Next();} fprintf(0,'0\tCargas'); fprintf(0,'Name\tGrid\tType TypLod,TypLodind\tConexion\tTerminal Busbar\tOut of Service\tAct.Pow. MW\tReact.Pow. Mvar\tApp.Pow. MVA\tI kA\tPow.Fact.'); fprintf(0,'loc_name\t\ttyp_id\tParent\tbus1_bar\toutserv\tplini\tqlini\tslini\tilini\tcoslini'); pGrd = Grids.First(); while (pGrd) {Elm = pGrd.GetContents('*.ElmLod*',1); Elm.SortToVar(0,'loc_name'); pElm = Elm.First(); while (pElm) {j=pElm.IsRelevant(); if (j=1) { pTyp=pElm:typ_id; i=pElm:outserv; !Estado ON/OFF bus1 = pElm.GetNode(0,0); bus2 = bus1.GetParent(); s4 = pElm:loc_name; !Nombre Elemento s1 = pGrd:loc_name; !Nombre Grid s2 = pTyp:loc_name; !Nombre Tipo s3 = bus1:loc_name; !Nombre Barra D1=pElm:plini; !P [MW] D2=pElm:qlini; !Q [MVar] D3=pElm:slini; !S [MVA] D4=pElm:ilini; !I [kA] D5=pElm:coslini; !fp s5 = sprintf('%s\t%s\t%s\t%s\t%s',s4,s1,s2,bus2:loc_name,s3); if (i=1){fprintf(0,'%s\t0\t%f\t%f\t%f\t%f\t%f',s5,D1,D2,D3,D4,D5); } else{fprintf(0,'%s\t1\t%f\t%f\t%f\t%f\t%f',s5,D1,D2,D3,D4,D5); }} pElm = Elm.Next();} pGrd = Grids.Next();}
67
fprintf(0,'0\tGeneradores'); fprintf(0,'Nombre\tGrid\tConexion\tTerminal Busbar\tPG [MW]\tQG [Mvar]\tQT [Mvar]\tQB [Mvar]\tMBASE [MVA]\tXDSS [p.u]\tService\tPT [MW]\tPB [MW]\tVS [p.u.]\tIREG Parent\tIREG\tSlack\tRMPCT[%%]'); pGrd = Grids.First(); while (pGrd) {Elm = pGrd.GetContents('*.ElmSym',1); Elm.SortToVar(0,'outserv'); pElm = Elm.First(); while (pElm) { j=pElm.IsRelevant(); if (j=1) { i = pElm:outserv; if (i=1) i=0; else i=1; bus1 = pElm.GetNode(0,0); bus2 = bus1.GetParent(); !Folder Barra i pTyp=pElm:typ_id; pStac=pElm:c_pstac; !External Station Controller s4 = pElm:loc_name; !Nombre Elemento s1 = pGrd:loc_name; !Nombre Grid s3 = bus1:loc_name; !Nombre Barra i s7 = bus2:loc_name; !Nombre Folder Barra PT=pElm:P_max*pElm:ngnum; !MW max PB=pElm:P_min; !MW min MBASE = pTyp:sgn; !MVA Base Generador if (i=1) { PG=pElm:m:P:bus1; !MW despachados QG=pElm:m:Q:bus1; !MVar despachados = MVar max = MVar min if (pStac=NULL) { VS=1; !Voltaje deseado [p.u.] IREGP=bus2:loc_name; !Nombre Parent Barra a Regular. IREG=bus1:loc_name; !Nombre Barra a Regular. RMPCT=100; !Aporte de Reactivos [%] } else { pBar=pStac:rembar; !IREG bar1=pBar.GetParent(); !IREG Parent VS=pStac:usetp; !Voltaje a Regular [p.u.] IREG=pBar:loc_name; !Nombre Parent Barra a Regular. IREGP=bar1:loc_name; !Nombre Barra a Regular. pStac.GetSize('psym',Tmod); cont = 0; while (cont<=Tmod) { pStac.GetVal(pMaq,'psym',cont); s30=pMaq:loc_name; if (s30=s4) pStac.GetVal(RMPCT,'cvqq',cont); !Aporte de Reactivos [%] cont=cont+1; }} s5=sprintf('%s\t%s\t%s\t%s\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f',s4,s1,s7,s3,PG,QG,QG,QG,MBASE); s6=sprintf('%.4f\t%i\t%.3f\t%.3f\t%.3f\t%s\t%s',pTyp:xdss,i,PT,PB,VS,IREGP,IREG); fprintf(0,'%s\t%s\t%i\t%i',s5,s6,pElm:ip_ctrl,RMPCT);} else { if (pStac=NULL) { VS=1; !Voltaje deseado [p.u.] IREGP=bus2:loc_name; !Nombre Parent Barra a Regular.
68
IREG=bus1:loc_name; !Nombre Barra a Regular. RMPCT=100; !Aporte de Reactivos [%]} else {pBar=pStac:rembar; !IREG bar1=pBar.GetParent(); !IREG parent VS=pStac:usetp; !Voltaje a Regular [p.u.] IREG=pBar:loc_name; !Nombre Parent Barra a Regular. IREGP=bar1:loc_name; !Nombre Barra a Regular. pStac.GetSize('psym',Tmod); cont = 0; while (cont<=Tmod) { pStac.GetVal(pMaq,'psym',cont); s30=pMaq:loc_name; if (s30=s4) pStac.GetVal(RMPCT,'cvqq',cont); !Aporte de Reactivos [%] cont=cont+1; }} s1=sprintf('%s\t%s\t%s\t%s\t0\t0\t0\t0\t%.3f',s4,s1,s7,s3,MBASE); s2=sprintf('%.4f\t%i\t%.3f\t%.3f\t%.3f\t%s\t%s',pTyp:xdss,i,PT,PB,VS,IREGP,IREG); fprintf(0,'%s\t%s\t%i\t%i',s1,s2,pElm:ip_ctrl,RMPCT); }} pElm = Elm.Next(); } pGrd = Grids.Next();!-----------------------------------------------------------------LINEAS pGrd = Grids.First(); fprintf(0,'0\tLineas'); fprintf(0,'Nombre\tGrid L1\tConexion i\tTerminal i\tGrid L2\tConexion j\tTerminal j\tR [pu]\tX [pu\tB [pu]\tRateA\tRateB\tRateC\tOut of Service\tLen [KM]'); fprintf(0,'loc_name\t\tParent1\tbus1_bar\t\tParent2\tbus2_bar\tR1/dline/MVA\tX1/dline/MVA\tbline*10^-6*MVA\tMVA\tMVA\tMVA\toutserv\tdline'); while (pGrd) {Elm = pGrd.GetContents('*.ElmLneroute',1); pElm = Elm.First(); while (pElm) { pTyp = pElm.GetParent(); prueba.Add(pTyp); pElm = Elm.Next(); } pGrd = Grids.Next();} pGrd = Grids.First(); while (pGrd) { Elm = pGrd.GetContents('*.ElmLneroute',1); pElm = Elm.First(); while (pElm) { j=pElm.IsRelevant(); if (j=1) { bus4 = pElm.GetParent(); i = pElm:outserv; pTyp = pElm:typ_id; bus = pElm:bus1; bus1 = pElm.GetNode(0,0); bus2 = pElm.GetNode(1,0); unom = bus.Unom(); MVA=sqrt(3)*unom*pElm:Inom; !MVA Rating para la linea. D1 = sqr(1000*unom)/100000000; !Impedancia Base. D2 = pTyp:rline*pElm:dline/D1; !R linea en base común [p.u.]. D3 = pTyp:xline*pElm:dline/D1; !X linea en base común [p.u.]. s4 = pElm:loc_name; !Nombre del Elemento. s1 = pGrd:loc_name; !Nombre de la Grid.
69
s2 = bus1:loc_name; !Nombre de la Barra i. s3 = bus2:loc_name; !Nombre de la Barra j. D4 = pow(10,-6)*pTyp:bline*D1*pElm:dline; !B en PSS. bus3 = bus1.GetParent(); bus4 = bus2.GetParent(); bus5 = bus3.GetParent(); bus6 = bus4.GetParent(); s7 = bus3:loc_name; !Nombre Parent Barra i. s8 = bus4:loc_name; !Nombre Parent Barra j. if (i=0) {s5=sprintf('%f\t%f\t%f\t%.3f\t%.3f\t%.3f',D2,D3,D4,MVA,MVA,MVA); s6=sprintf('1\t%.2f',pElm:dline); s9 =sprintf('%s\t%s\t%s\t%s\t%s\t%s\t%s',s4,bus5:loc_name,s7,s2,bus6:loc_name,s8, s3); fprintf(0,'%s\t%s\t%s',s9,s5,s6); } else{s5=sprintf('%.4f\t%.4f\t%.4f\t%.3f\t%.3f\t%.3f',D2,D3,D4,MVA,MVA,MVA); s6=sprintf('0\t%.2f',pElm:dline); fprintf(0,'%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s',s4,s1,s7,s8,s2,s3,s5,s6);}} pElm = Elm.Next();} pGrd = Grids.Next();} pGrd = Grids.First(); while (pGrd) { Elm = pGrd.GetContents('*.ElmLne',1); pElm = Elm.First(); while (pElm) {j=pElm.IsRelevant(); if (j=1) { bus4 = pElm.GetParent(); i = pElm:outserv; c = prueba.IsIn(pElm); if(.not.c) { bus = pElm:bus1; bus1 = pElm.GetNode(0,0); bus2 = pElm.GetNode(1,0); unom = bus.Unom(); !Voltaje nominal en Barra. MVA=sqrt(3)*unom*pElm:Inom; !MVA rating para la linea. D1 = sqr(1000*unom)/100000000; !Impedancia Base [p.u.]. D2 = pElm:R1/D1; !R linea en base común. D3 = pElm:X1/D1; !X linea en base común. s4 = pElm:loc_name; !Nombre Elemento s1 = pGrd:loc_name; !Nombre Grid s2 = bus1:loc_name; !Nombre Barra i s3 = bus2:loc_name; !Nombre Barra j bus3 = bus1.GetParent(); bus4 = bus2.GetParent(); bus5 = bus3.GetParent(); bus6 = bus4.GetParent(); s7 = bus3:loc_name; !Nombre Parent Barra i s8 = bus4:loc_name; !Nombre Parent Barra j if (pTyp) { D4 = pTyp:bline*pow(10,-6)*D1*pElm:dline; !B en PSS if (i=0) {s5=sprintf('%.4f\t%.4f\t%.4f\t%.3f\t%.3f\t%.3f',D2,D3,D4,MVA,MVA,MVA); s6=sprintf('1\t%.2f',pElm:dline); s9=sprintf('%s\t%s\t%s\t%s\t%s\t%s\t%s',s4,bus5:loc_name,s7,s2,bus6:loc_name,s8,s3);
70
fprintf(0,'%s\t%s\t%s',s9,s5,s6);} else{s5=sprintf('%.4f\t%.4f\t%.4f\t%.3f\t%.3f\t%.3f',D2,D3,D4,MVA,MVA,MVA); s6=sprintf('0\t%.2f',pElm:dline); s9 =sprintf('%s\t%s\t%s\t%s\t%s\t%s\t%s',s4,bus5:loc_name,s7,s2,bus6:loc_name,s8, s3); fprintf(0,'%s\t%s\t%s',s9,s5,s6); }} else{s5=sprintf('%.4f\t%.4f\t0\t%.3f\t%.3f\t%.3f',D2,D3,MVA,MVA,MVA); s6=sprintf('1\t%.2f',pElm:dline); s9 =sprintf('%s\t%s\t%s\t%s\t%s\t%s\t%s',s4,bus5:loc_name,s7,s2,bus6:loc_name,s8, s3); fprintf(0,'%s\t%s\t%s',s9,s5,s6); }}} pElm = Elm.Next();} pGrd = Grids.Next();} pGrd = Grids.First(); fprintf(0,'0\tTrafos 2'); fprintf(0,'Nombre\tGrid T1\tConexion i\tTerminal i\tGrid T2\tConexion j\tTerminal j\tR1-2 [pu]\tX1-2 [pu]\tRated Power [MVA]\tRated Power [MVA]\tRated Power [MVA]\tWINDV1 [pu]\tAngle\tOut of Service\tTap Side'); fprintf(0,'loc_name\t\tParent 1\tbus1_bar\t\tParent 2\tbus2_bar\tuktrr/strn\tuktr/strn\tSnom\tSnom\tSnom\tutrn_h/unom\tphitr\toutserv'); pGrd = Grids.First(); while (pGrd) { Elm = pGrd.GetContents('*.ElmTr2',1); pElm = Elm.First(); while (pElm) {j=pElm.IsRelevant(); if (j=1) { i=pElm:outserv; !Estado del Trafo (ON/OFF) if (i=1) i=0; else i=1; pTyp=pElm:typ_id; x=pTyp:uktr/pTyp:strn; !X1-2 r=pTyp:uktrr/pTyp:strn; !R1-2 bus1 = pElm.GetNode(0,0); !Barra i bus2 = pElm.GetNode(1,0); !Barra j unom = bus1.Unom(); !Voltaje barra lado alta base propia unom2 = bus2.Unom(); !Voltaje barra lado alta base propia if (pElm:t:tap_side=0) { s30=sprintf('HV'); if (pTyp:nt2ag<6) D1=pTyp:utrn_h/unom+(pTyp:dutap/100); else D1=pTyp:utrn_h/unom-(pTyp:dutap/100);} else{s30=sprintf('LV'); if (pTyp:nt2ag<6) D1=pTyp:utrn_l/unom2+(pTyp:dutap/100); else D1=pTyp:utrn_l/unom2-(pTyp:dutap/100); } D2 = pTyp:nt2ag*30; !Ángulos segun conexión s4 = pElm:loc_name; !Nombre Trafo s1 = pGrd:loc_name; !Nombre Grid s2 = bus1:loc_name; !Nombre Barra i s3 = bus2:loc_name; !Nombre Barra j bus3 = bus1.GetParent(); bus4 = bus2.GetParent(); bus5 = bus3.GetParent(); bus6 = bus4.GetParent();
71
s5=sprintf('%.4f\t%.4f\t%.3f\t%.3f\t%.3f\t%g\t%f',r,x,pElm:Snom,pElm:Snom,pElm:Snom,D1,D2); s6=sprintf('%i',i); s7=sprintf('%s\t%s\t%s\t%s\t%s\t%s',s4,bus5:loc_name,bus3:loc_name,s2,bus6:loc_name,bus4:loc_name); fprintf(0,'%s\t%s\t%s\t%s\t%s',s7,s3,s5,s6,s30); } pElm = Elm.Next();} pGrd = Grids.Next();} fprintf(0,'0\tTrafos 3'); fprintf(0,'Nombre\tGrid T1\tConexion i\tTerminal i\tGrid T2\tConexion j\tTerminal j\tR1-2 [pu]\tX1-2 [pu]\tRated Power [MVA]\tRated Power [MVA]\tRated Power [MVA]\tWINDV1 [pu]\tAngle\tOut of Service'); fprintf(0,'loc_name\t\tParent 1\tbus1_bar\t\tParent 2\tbus2_bar\tuktrr/strn\tuktr/strn\tSnom\tSnom\tSnom\tutrn_h/unom\tphitr\toutserv'); pGrd = Grids.First(); while (pGrd) {Elm = pGrd.GetContents('*.ElmTr3',1); Elm.SortToVar(0,'loc_name'); pElm = Elm.First(); while (pElm) {j=pElm.IsRelevant(); if (j=1) { i = pElm:outserv; if (i=1) i=0; else i=1; pTyp = pElm:typ_id; min_hm=min(pTyp:strn3_h,pTyp:strn3_m); !Mínimo entre Alta y Media min_hl=min(pTyp:strn3_h,pTyp:strn3_l); !Mínimo entre Alta y Baja min_ml=min(pTyp:strn3_l,pTyp:strn3_m); !Mínimo entre Baja y Media x=pTyp:uktr3_h/min_hm; !X1-2 x2=pTyp:uktr3_m/min_ml; !X2-3 x3=pTyp:uktr3_l/min_hl; !X3-1 r=pTyp:uktrr3_h/min_hm; !R1-2 r2=pTyp:uktrr3_m/min_ml; !R2-3 r3=pTyp:uktrr3_l/min_hl; !R3-1 bus1 = pElm.GetNode(0,0); !Barra Alta bus2 = pElm.GetNode(1,0); !Barra Media bus3 = pElm.GetNode(2,0); !Barra Baja unom = bus1.Unom(); !Voltaje Alta unom2 = bus2.Unom(); !Voltaje Media unom3 = bus3.Unom(); !Voltaje Baja if (pElm:t3ldc=0) {if (pTyp:nt3ag_h<6) D1=pTyp:utrn3_h/unom +(pElm:n3tap_h/100); else D1=pTyp:utrn3_h/unom -(pElm:n3tap_h/100); if (pTyp:nt3ag_m<6) D2=pTyp:utrn3_m/unom2+(pElm:n3tap_m/100); else D2=pTyp:utrn3_m/unom2-(pElm:n3tap_m/100); if (pTyp:nt3ag_l<6) D3=pTyp:utrn3_h/unom +(pElm:n3tap_h/100); else D3=pTyp:utrn3_h/unom-(pElm:n3tap_h/100); } else{if (pElm:t3ldc=1) {if (pTyp:nt3ag_h<6) D1=pTyp:utrn3_m/unom2 +(pElm:n3tap_m/100); !WINDV1/RATIO (PSS) else D1=pTyp:utrn3_m/unom2 -(pElm:n3tap_m/100); if (pTyp:nt3ag_m<6) D2=pTyp:utrn3_h/unom+(pElm:n3tap_h/100);
72
else D2=pTyp:utrn3_h/unom-(pElm:n3tap_h/100); if (pTyp:nt3ag_l<6) D3=pTyp:utrn3_m/unom2 +(pElm:n3tap_m/100); else D3=pTyp:utrn3_m/unom2 -(pElm:n3tap_m/100); } else {if (pElm:t3ldc=2) {if (pTyp:nt3ag_h<6) D1=pTyp:utrn3_h/unom +(pElm:n3tap_h/100); else D1=pTyp:utrn3_h/unom -(pElm:n3tap_h/100); if (pTyp:nt3ag_m<6) D2=pTyp:utrn3_l/unom3+(pElm:n3tap_l/100); else D2=pTyp:utrn3_l/unom3-(pElm:n3tap_l/100); if (pTyp:nt3ag_l<6) D3=pTyp:utrn3_l/unom3 +(pElm:n3tap_l/100); else D3=pTyp:utrn3_l/unom3 -(pElm:n3tap_l/100); !WINDV3/RATIO (PSS) }}} D4 = pTyp:nt3ag_h*30; !Ángulo Alta D5 = pTyp:nt3ag_m*30; !Ángulo Media D6 = pTyp:nt3ag_l*30; !Ángulo Baja s4 = pElm:loc_name; !Nombre Trafo s1 = pGrd:loc_name; !Nombre Grid s2 = bus1:loc_name; !Nombre Barra i s3 = bus2:loc_name; !Nombre Barra j s7 = bus3:loc_name; !Nombre Barra k bus4 = bus1.GetParent(); bus5 = bus2.GetParent(); bus6 = bus3.GetParent(); bus7 = bus4.GetParent(); bus8 = bus5.GetParent(); bus9 = bus6.GetParent(); s5=sprintf('%f\t%f\t%.3f\t%.3f\t%.3f\t%g\t%f',r,x,pTyp:strn3_h,pTyp:strn3_h,pTyp:strn3_h,D1,D4); s6=sprintf('%i',i); s8=sprintf('%s\t%s\t%s\t%s\t%s\t%s',s4,bus7:loc_name,bus4:loc_name,s2,bus8:loc_name,bus5:loc_name); fprintf(0,'%s\t%s\t%s\t%s',s8,s3,s5,s6);! Trafo i-j s5=sprintf('%f\t%f\t%.3f\t%.3f\t%.3f\t%g\t%f',r2,x2,pTyp:strn3_m,pTyp:strn3_m,pTyp:strn3_m,D2,D5); s6=sprintf('%i',i); s8=sprintf('%s\t%s\t%s\t%s\t%s\t%s',s4,bus8:loc_name,bus5:loc_name,s3,bus9:loc_name,bus6:loc_name); fprintf(0,'%s\t%s\t%s\t%s',s8,s7,s5,s6);! Trafo j-k s5=sprintf('%f\t%f\t%.3f\t%.3f\t%.3f\t%g\t%f',r3,x3,pTyp:strn3_l,pTyp:strn3_l,pTyp:strn3_l,D3,D6); s6=sprintf('%i',i); s8=sprintf('%s\t%s\t%s\t%s\t%s\t%s',s4,bus7:loc_name,bus4:loc_name,s2,bus9:loc_name,bus6:loc_name); fprintf(0,'%s\t%s\t%s\t%s',s8,s7,s5,s6);! Trafo i-k } pElm = Elm.Next(); } pGrd = Grids.Next();} pGrd = Grids.First(); fprintf(0,'0\tTrafos 2 & 3'); fprintf(0,'Nombre\tGrid T1\tConexion i\tTerminal i\tGrid T2\tConexion j\tTerminal j\tRMA\tRMI\tVMA\tVMI\tSTEP\tTABLE\tCNTRL\tCR\tCX');
73
while (pGrd) {Elm = pGrd.GetContents('*.ElmTr2',1); pElm = Elm.First(); while (pElm) {j=pElm.IsRelevant(); if (j=1){ i = pElm:outserv; if (i=0) { i=1; pTyp = pElm:typ_id; if (pElm:t:tap_side=0) {aa=pTyp:utrn_h/unom+(pTyp:dutap/100); bb=pTyp:utrn_h/unom-(pTyp:dutap/100); cc = pElm:n:u:bushv; dd = pElm:n:u:bushm;} else{aa=pTyp:utrn_l/unom2+(pTyp:dutap/100); bb=pTyp:utrn_l/unom2-(pTyp:dutap/100); cc = pElm:n:u:bushv; dd = pElm:n:u:bushm; } ee=pTyp:dutap/100; !STEP Tap PSS cntrl=0; !CNTRL ff=0; !TABLE bus1 = pElm.GetNode(0,0); bus2 = pElm.GetNode(1,0); s1 = pGrd:loc_name; !Nombre Grid s2 = bus1:loc_name; !Nombre Barra i s3 = bus2:loc_name; !Nombre Barra j s4 = pElm:loc_name; !Nombre Trafo bus3 = bus1.GetParent(); bus4 = bus2.GetParent(); bus5 = bus3.GetParent(); bus6 = bus4.GetParent(); s6=sprintf('%.4f\t%.4f\t%.4f\t%.4f\t%.5f\t%.4f',aa,bb,cc,dd,ee,ff); s9=sprintf('%s\t%d\t%d\t%d',s6,cntrl,ff,ff); s7=sprintf('%s\t%s\t%s\t%s\t%s\t%s',s4,bus5:loc_name,bus3:loc_name,s2,bus6:loc_name,bus4:loc_name); fprintf(0,'%s\t%s\t%s',s7,s3,s9); } else i=0; } pElm = Elm.Next();} pGrd = Grids.Next();} pGrd = Grids.First(); while (pGrd) {cntrl=0; ff=0; Elm = pGrd.GetContents('*.ElmTr3',1); pElm = Elm.First(); while (pElm) {j=pElm.IsRelevant(); if (j=1) { i = pElm:outserv; if (i=0) {i=1; pTyp = pElm:typ_id; bus1 = pElm.GetNode(0,0); bus2 = pElm.GetNode(1,0); bus3 = pElm.GetNode(2,0); bus4 = bus1.GetParent();
74
bus5 = bus2.GetParent(); bus6 = bus3.GetParent(); bus7 = bus4.GetParent(); bus8 = bus5.GetParent(); bus9 = bus6.GetParent(); unom = bus1.Unom(); !Voltaje Alta unom2 = bus2.Unom(); !Voltaje Media unom3 = bus3.Unom(); !Voltaje Baja s1 = pGrd:loc_name; !Nombre Grid s2 = bus1:loc_name; !Nombre Terminal i s3 = bus2:loc_name; !Nombre Terminal j s7 = bus3:loc_name; !Nombre Terminal k s4 = pElm:loc_name; !Nombre Trafo if (pTyp:nt3ag_h<6) { aa=pTyp:utrn3_h/unom +(pElm:n3tap_h/100); bb=pTyp:utrn3_h/unom -(pElm:n3tap_h/100);} else if (pTyp:nt3ag_m<6) {aa=pTyp:utrn3_m/unom2+(pElm:n3tap_m/100); bb=pTyp:utrn3_m/unom2-(pElm:n3tap_m/100); !WINDV2/RATIO (PSS) } cc=pElm:n:u:bushv; !VMA PSS dd=pElm:n:u:bushv; !VMI PSS ee=pTyp:du3tp_h/100; !STEP Tap PSS s5=sprintf('%.4f',r); s6=sprintf('%.4f\t%.4f\t%.4f\t%.4f\t%.5f\t%.4f',aa,bb,cc,dd,ee,ff); s9=sprintf('%s\t%d\t%d\t%d',s6,cntrl,ff,ff); s8=sprintf('%s\t%s\t%s\t%s\t%s\t%s',s4,bus7:loc_name,bus4:loc_name,s2,bus8:loc_name,bus5:loc_name); fprintf(0,'%s\t%s\t%s',s8,s3,s9); if (pTyp:nt3ag_h<6) { aa=pTyp:utrn3_h/unom +(pElm:n3tap_h/100); bb=pTyp:utrn3_h/unom -(pElm:n3tap_h/100); } else if (pTyp:nt3ag_l<6) {aa=pTyp:utrn3_l/unom3+(pElm:n3tap_l/100); bb=pTyp:utrn3_l/unom3-(pElm:n3tap_l/100); !WINDV2/RATIO (PSS) } cc=pElm:n:u:busmv; !VMA PSS dd=pElm:n:u:busmv; !VMI PSS ee=pTyp:du3tp_m/100; !STEP Tap PSS s5=sprintf('%.4f',r2); s6=sprintf('%.4f\t%.4f\t%.4f\t%.4f\t%.5f\t%.4f',aa,bb,cc,dd,ee,ff); s9=sprintf('%s\t%d\t%d\t%d',s6,cntrl,ff,ff); s8=sprintf('%s\t%s\t%s\t%s\t%s\t%s',s4,bus8:loc_name,bus5:loc_name,s3,bus9:loc_name,bus6:loc_name); fprintf(0,'%s\t%s\t%s',s8,s7,s9); if (pTyp:nt3ag_m<6) {aa=pTyp:utrn3_m/unom2 +(pElm:n3tap_m/100); bb=pTyp:utrn3_m/unom2 -(pElm:n3tap_m/100); } else if (pTyp:nt3ag_l<6) {aa=pTyp:utrn3_l/unom3+(pElm:n3tap_l/100); bb=pTyp:utrn3_l/unom3-(pElm:n3tap_l/100); !WINDV2/RATIO (PSS) } cc=pElm:n:u:buslv; !VMA PSS dd=pElm:n:u:buslv; !VMI PSS ee=pTyp:du3tp_l/100; !STEP Tap PSS s5=sprintf('%.4f',r3); s6=sprintf('%.4f\t%.4f\t%.4f\t%.4f\t%.5f\t%.4f',aa,bb,cc,dd,ee,ff);
75
s9=sprintf('%s\t%d\t%d\t%d',s6,cntrl,ff,ff); s8=sprintf('%s\t%s\t%s\t%s\t%s\t%s',s4,bus7:loc_name,bus4:loc_name,s2,bus9:loc_name,bus6:loc_name); fprintf(0,'%s\t%s\t%s',s8,s7,s9);} else i=0; } pElm = Elm.Next(); } pGrd = Grids.Next();} fprintf(0,'0\tShunts'); fprintf(0,'Name\tGrid\tConexion\tTerminal BusBar\tUpper Voltage Limit [pu]\tLower Voltage Limit [pu]\tBinit\tNi\tBi'); fprintf(0,'loc_name\t\tParent\tbus1_bar\tusetp_mx\tusetp_mn\tncapa(qcapn-qrean)\tncapx\Qmax/ncapx'); pGrd = Grids.First(); while (pGrd) {Elm = pGrd.GetContents('*.ElmShnt',1); pElm = Elm.First(); while (pElm) { j=pElm.IsRelevant(); if (j=1) { bus1 = pElm.GetNode(0,0); bus2 = bus1.GetParent(); D1=pElm:n:u:bus1; !VSWHI PSS D2=pElm:n:u:bus1; !VSWLO PSS D3=pElm:ncapa*(pElm:qrean-pElm:qcapn); !BINIT en PSS/Power World D4=pElm:ncapx; !N1 en PSS D5=pElm:Qmax/pElm:ncapx; !B1 en PSS s4=pElm:loc_name; !Nombre Elemento s1=pGrd:loc_name; !Nombre Grid s2=bus1:loc_name; !Nombre Barra i s3=bus2:loc_name; !Nombre Barra j s5=sprintf('%g\t%g\t%g\t%i',D1,D2,D3,D4); if (pElm:qcapn > 0) {s6=sprintf('%g',D5); fprintf(0,'%s\t%s\t%s\t%s\t%s\t%s',s4,s1,s3,s2,s5,s6); } else {s7=sprintf('-%g',D5); fprintf(0,'%s\t%s\t%s\t%s\t%s\t%s',s4,s1,s3,s2,s5,s7); }} pElm = Elm.Next();} pGrd = Grids.Next(); } pGrd = Grids.First(); fprintf(0,'0\tSwitchs Abiertos'); fprintf(0,'Nombre\tGrid\tParent\tElemento conectado1\tGrid2\tParent2\tElemento Conectado2\tTipo de elemento\tEstado'); fprintf(0,'loc_name\t\tFold_id1\tbus1\t\tFold_id2\tbus2\tGetClass\ton_off'); while (pGrd) { Elm = pGrd.GetContents('*.ElmCoup',1); Elm.SortToVar(0,'on_off','loc_name'); pElm = Elm.First(); while (pElm) {c=pElm.IsRelevant(); if (c=1) {bus1 = pElm.GetNode(0,0); bus2 = pElm.GetNode(1,0); bus3 = bus1.GetParent(); bus4 = bus3.GetParent(); bus5 = bus2.GetParent();
76
bus6 = bus5.GetParent(); s1 = pElm:loc_name;
s2 = bus1:loc_name; s3 = bus2:loc_name; s4 = bus3:loc_name; s5 = bus4:loc_name; s6 = bus5:loc_name; s7 = bus6:loc_name; s8 = pGrd:loc_name; i = pElm:on_off; fprintf(0,'%s\t%s\t%s\t%s\t%s\t%s\t%s\t0\t%i',s1,s5,s4,s2,s7,s6,s3,i);} pElm = Elm.Next(); } pGrd = Grids.Next(); } pGrd = Grids.First(); while (pGrd) {Elm = pGrd.GetContents('*.StaSwitch',1); Elm.SortToVar(0,'on_off','loc_name'); pElm = Elm.First(); while (pElm) { c=pElm.IsRelevant(); if (c=1) {Elm2 = pElm.GetConnectedElms(1,1,1); d = Elm2.Count(); bus1 = pElm.GetParent(); bus2 = bus1.GetParent(); bus5 = Elm2.First(); cont = 0; while(bus5) {s1 = pElm:loc_name; s2 = bus2:loc_name; s4 = bus5.GetClass(); s8 = pGrd:loc_name; s9 = bus5:loc_name; bus9 =bus5.GetParent(); bus8 = bus9.GetParent(); s10 = ''; i = pElm:on_off; j = pElm:iUse; if (d=2) {if (cont = 0) {if (j = 6) {bus4 = bus2.GetParent(); s3 = bus4:loc_name; s5 = sprintf('%s\t%s\t%s\t%s',s1,s8,bus9:loc_name,s9); cont = 1; } else{ bus4 = bus2.GetParent(); s3 = bus4:loc_name; s5 = sprintf('%s\t%s\t%s\t%s',s1,s8,bus9:loc_name,s9); cont = 1;}} else {if (j = 6) {s1 = bus9:loc_name; s6 = sprintf('%s\t%s\t%s\t%i',s1,s9,s4,i); cont = 0; } else{ bus3 = bus1:obj_id; bus4 = bus3.GetParent(); bus9 = bus4.GetParent();
77
s1 = bus3:loc_name; s2 = bus4:loc_name; s3 = bus9:loc_name; if (bus3) s6= sprintf('%s\t%s\t%s\t%i',s2,s1,s4,i); else s6 = sprintf('%s\t%s\t%s\t%s\t%i',s8,s10,s10,i); cont = 0;} fprintf(0,'%s\t%s\t%s',s5,bus8:loc_name,s6);} } else fprintf(0,'%s\t%s\t%s\t%s\t0\t0\t0\t0\t0',s1,s8,bus9:loc_name,s9); bus5 = Elm2.Next();} } pElm = Elm.Next();} pGrd = Grids.Next();} fclose(0); fopen('C:\seq.txt','w',1); pGrd = Grids.First(); fprintf(1,'0\tPositive Sequence Generator Impedance Data'); fprintf(1,'Terminal Bus Bar\tName\tZRPOS [pu]\tZXPOS [pu]'); fprintf(1,'bus1_bar\tloc_name\trstr\txdss'); Elm=pGrd.GetContents('*.ElmSym',1); pElm=Elm.First(); while (pElm) { j=pElm.IsRelevant(); if (j=1) {s4 = pElm:loc_name; !Nombre Elemento pTyp = pElm:typ_id; bus1 = pElm.GetNode(0,0); if (pTyp) {s1 = bus1:loc_name; !Nombre Barra i fprintf(1,'%s\t%s\t%.5f\t%.5f',s1,s4,pTyp:rstr,pTyp:xdss); } else {fprintf(1,'%s',s4); s1 = bus1:loc_name; !Nombre Barra i fprintf(1,'%s\t%s\t###\t###',s1,s4); }} pElm = Elm.Next();} fprintf(1,'0\tNegative Sequence Generator Impedance Data'); fprintf(1,'Terminal Bus Bar\tName\tZRNEG [pu]\tZXNEG [pu]'); fprintf(1,'bus1_bar\tloc_name\tr2sy\tx2sy'); pGrd = Grids.First(); Elm = pGrd.GetContents('*.ElmSym',1); pElm = Elm.First(); while (pElm) {j=pElm.IsRelevant(); if (j=1) {pTyp = pElm:typ_id; bus1 = pElm.GetNode(0,0); s4 = pElm:loc_name; !Nombre Elemento s1 = bus1:loc_name; !Nombre Barra i if (pTyp) fprintf(1,'%s\t%s\t%.5f\t%.5f',s1,s4,pTyp:r2sy,pTyp:x2sy); else fprintf(1,'%s\t\t###\t###%s',s1,s4); } pElm = Elm.Next();} fprintf(1,'0\tZero Sequence Generator Impedance Data'); fprintf(1,'Terminal Bus Bar\tName\tRZERO [pu]\tXZERO[pu]'); fprintf(1,'bus1_bar\tloc_name\tr0sy\tx0sy'); pGrd = Grids.First(); Elm = pGrd.GetContents('*.ElmSym',1);
78
pElm = Elm.First(); while (pElm) {j=pElm.IsRelevant(); if (j=1) {pTyp = pElm:typ_id; bus1 = pElm.GetNode(0,0); s4 = pElm:loc_name; s1 = bus1:loc_name; if (pTyp) fprintf(1,'%s\t%s\t%.5f\t%.5f',s1,s4,pTyp:r0sy,pTyp:x0sy); else fprintf(1,'%s\t%s\t###\t###',s1,s4); } pElm = Elm.Next();} fprintf(1,'0\tNegative Sequence Shunt Load Data'); fprintf(1,'0\tZero Sequence Shunt Load Data'); fprintf(1,'0\tZero Sequence Branch Data'); fprintf(1,'Name\tTerminal i Bus bar\tTerminal j Bus Bar\tRLINZ\tXLINZ\tBCHZ'); fprintf(1,'loc_name\tbus1_bar\tbus2_bar\t(R0/dline)/(unom^2/MVA)\t(X0/dline)/(unom^2/MVA)\t(bline0)/(unom^2/MVA)'); pGrd = Grids.First(); Elm = pGrd.GetContents('*.ElmLne'); pElm = Elm.First(); while (pElm) { j=pElm.IsRelevant(); if (j=1) {pTyp = pElm:typ_id; bus = pElm:bus1; unom = bus.Unom(); bus1 = pElm.GetNode(0,0); bus2 = pElm.GetNode(1,0); s4 = pElm:loc_name; s1 = bus1:loc_name; s2 = bus2:loc_name; if (pTyp) {D1 = sqr(unom*1000)/100000000; D2 = pElm:R0/D1; D3 = pElm:X0/D1; D4 = pTyp:bline0/D1; fprintf(1,'%s\t%s\t%s\t%.5f\t%.5f\t%.5f',s1,s2,s4,D2,D3,D4); } else {fprintf(1,'%s\t%s\t%s\t%.5f\t%.5f\t0',s1,s2,s4,D2,D3);} } pElm = Elm.Next();} fprintf(1,'0\tZero Sequence Mutual Impedance Data'); fprintf(1,'0\tTransformer 2 Grounding Code Data'); fprintf(1,'Name\tTerminal i Bus bar\tTerminal j Bus Bar\tGrounding Code I\tGrounding Code J'); fprintf(1,'loc_name\tbus1_bar\tbus2_bar\ttr2cn:h\ttr2cn_l'); pGrd = Grids.First(); Elm = pGrd.GetContents('*.ElmTr2'); pElm = Elm.First(); while (pElm) { c=pElm.IsRelevant(); if (c=1) {pTyp = pElm:typ_id; r=pTyp:ur0tr/pTyp:strn; !R seq cero x=pTyp:uk0tr/pTyp:strn; !x seq cero s1 = pTyp:tr2cn_h; !tipo de conexion en alta s2 = pTyp:tr2cn_l; !tipo de conexion en baja
79
bus1 = pElm.GetNode(0,0); !conexion i bus2 = pElm.GetNode(1,0); !conexion j s4 = pElm:loc_name; !Nombre Trafo s5 = bus1:loc_name; !nombre barra i s6 = bus2:loc_name; !Nombre Barra j i=strcmp(s1,'Y',2); j=strcmp(s2,'Y',2); if(i=0 .or. i=1) {if (j=0 .or. j=1) fprintf(1,'%s\t%s\t%s\t1\t1',s4,s5,s6); else fprintf(1,'%s\t%s\t%s\t1\t0',s4,s5,s6); } else{if (j=0 .or. j=1) fprintf(1,'%s\t%s\t%s\t0\t1',s4,s5,s6); else fprintf(1,'%s\t%s\t%s\t0\t0',s4,s5,s6); }} pElm = Elm.Next(); } fprintf(1,'0\tTransformer 3 Grounding Code Data'); fprintf(1,'Name\tTerminal i Bus bar\tTerminal j Bus Bar\tGrounding Code I\tGrounding Code J'); fprintf(1,'loc_name\tbus1_bar\tbus2_bar\ttr2cn:h\ttr2cn_l'); pGrd = Grids.First(); while (pGrd) {Elm = pGrd.GetContents('*.ElmTr3',1); pElm = Elm.First(); while (pElm) {pTyp = pElm:typ_id; s1 = pTyp:tr3cn_h; s5 = pTyp:tr3cn_m; s6 = pTyp:tr3cn_l; i=strcmp(s1,'Y',2); j=strcmp(s5,'Y',2); k=strcmp(s6,'y',2); bus1 = pElm.GetNode(0,0); !barra alta tension bus2 = pElm.GetNode(1,0); !barra media bus3 = pElm.GetNode(2,0); !barra baja s4 = pElm:loc_name; s2 = bus1:loc_name; s3 = bus2:loc_name; s7 = bus3:loc_name; if(i=0 .or. i=1) {if (j=0 .or. j=1) fprintf(1,'%s\t%s\t%s\t1\t1',s2,s3,s4); else fprintf(1,'%s\t%s\t%s\t1\t0',s2,s3,s4); } else{if (j=0 .or. j=1) fprintf(1,'%s\t%s\t%s\t0\t1',s2,s3,s4); else fprintf(1,'%s\t%s\t%s\t0\t0',s2,s3,s4); } if(j=0 .or. j=1) {if (k=0 .or. k=1) fprintf(1,'%s\t%s\t%s\t1\t1',s3,s7,s4); else fprintf(1,'%s\t%s\t%s\t1\t0',s3,s7,s4); } else{if (k=0 .or. k=1) fprintf(1,'%s\t%s\t%s\t0\t1',s3,s7,s4); else fprintf(1,'%s\t%s\t%s\t0\t0',s3,s7,s4); } if(i=0 .or. i=1) {if (k=0 .or. k=1) fprintf(1,'%s\t%s\t%s\t1\t1',s2,s7,s4); else fprintf(1,'%s\t%s\t%s\t1\t0',s2,s7,s4); } else{if (k=0 .or. k=1) fprintf(1,'%s\t%s\t%s\t0\t1',s2,s7,s4); else fprintf(1,'%s\t%s\t%s\t0\t0',s2,s7,s4); } pElm = Elm.Next();} pGrd = Grids.Next();} fprintf(1,'0\tZero Sequence Switched Shunt Data');
80
fclose(1); fopen('C:\DYR.txt','w',2); fprintf(2,'0\tModelo Generadores'); fprintf(2,'Nombre\tTerminal Bus Bar\tH [s]\tDamp [pu]\trstr [pu]\txl [pu]\txrl [pu]\tRotor Type\txd [pu]\txq [pu]\tTd0´ [s]\tTq0´ [s]\txd´ [pu]\txq´ [pu]\tTd0´´ [s]\tTq0´´ [s]\txd´´ [pu]\txq´´ [pu]\tMain Flux Saturation\t1.0 [pu]\t1.2 [pu]'); fprintf(2,'loc_name\tbus1_bar\th\tdpu\trstr\txl\txrl\titurbo\txd\txq\ttds0\ttqs0\txds\txqs\ttdss0\ttqss0\txdss\txqss\tisat\tsg10\tsg12'); pGrd = Grids.First(); while (pGrd) { Elm = pGrd.GetContents('*.ElmSym',1); Elm.SortToVar(1,'c_pmod'); pElm = Elm.First(); while (pElm) { c=pElm.IsRelevant(); if (c=1) { pTyp = pElm:typ_id; bus1 = pElm.GetNode(0,0); s4 = pElm:loc_name; s3 = bus1:loc_name; D1 = pTyp:h; !constante de tiempo de inercia D2 = pTyp:dpu; !liberacion de carga mecanica D3 = pTyp:rstr; !resistencia estator D4 = pTyp:xl; !reactancia de fuga estator D5 = pTyp:xrl; !reactancia de fuga rotor D6 = pTyp:xd; !reactancia sincronica en eje directo D7 = pTyp:xq; !reactancia sincronica en eje quadratura D8 = pTyp:tds0; !constante de tiempo transiente eje directo D9 = pTyp:tqs0; !constante de tiempo transiente eje cuadratura D10 = pTyp:xds; !reactancia transiente eje directo D11 = pTyp:xqs; !reactancia transiente eje cuadratura D12 = pTyp:tdss0; !constante de tiempo subtransiente eje directo D13 = pTyp:tqss0; !constante de tiempo subtransiente eje cuadratura D14 = pTyp:xdss; !reactancia subtransiente eje directo D15 = pTyp:xqss; !reactancia subtransiente eje cuadratura D16 = pTyp:sg10; !parametro de stauracion 1.0 D17 = pTyp:sg12; !parametro de stauracion 1.2 i = pTyp:iturbo; !tipo de rotor (polos salientes o j = pTyp:isat; !saturacion flujo principal s5=sprintf('%s\t%s\t%g\t%g\t%g\t%g\t%g\t%i\t%g',s4,s3,D1,D2,D3,D4,D5,i,D6); s6=sprintf('%g\t%g\t%g\t%g\t%g\t%g\t%g\t%g\t%g',D7,D8,D9,D10,D11,D12,D13,D14,D15); fprintf(2,'%s\t%s\t%i\t%g\t%g',s5,s6,j,D16,D17); } pElm = Elm.Next();} pGrd = Grids.Next(); } pGrd = Grids.First(); fprintf(2,'0\tModelo VCO Generadores'); pGrd = Grids.First(); while (pGrd) { Elm = pGrd.GetContents('*.ElmSym',1); Elm.SortToVar(1,'c_pmod'); pElm = Elm.First();
81
while (pElm) { pElm2 = pElm:c_pmod; !Modelo de Planta if (pElm2) {pElm2.GetSize('pblk',Tmod); cont = 0; while (cont<Tmod) {pElm2.GetVal(pElm3,'pblk',cont); s1 = pElm3:loc_name; comp = strcmp(s1,'vco',3); comp2 = strcmp(s1,'AVR',3); token = ','; if (comp = 0 .or. comp2 = 0) {pElm2.GetVal(term,'pelm',cont); if (term) {pTyp = term:typ_id; s2 = term:loc_name; if (pTyp) {term.GetSize('params',sPa); r = 0; sPa+=1; while (r<sPa) {c = 0; s3 = pTyp:sParams; s30 = pTyp:sUpLimPar; s31 = pTyp:sLowLimPar; s32 = ''; s33 = ''; while (c<=sPa) {term.GetVal(D1,'params',c); s4 = strtok(s3,token,tok_pos,c+1); i = strcmp(s4,''); if (i=1) {s33 = sprintf('%s\t%g',s33,D1); if (c=0) s32 = sprintf('%s',s4); else s32 = sprintf('%s\t%s',s32,s4); } else break; c+=1; } c2 = c; c=0; z = strcmp(s30,''); d = strcmp(s31,''); if (d) {while (c<sPa) {term.GetVal(D1,'params',c2); s5 = strtok(s31,token,tok_pos,c+1); i = strcmp(s5,''); if (i=1) {s33 = sprintf('%s\t%g',s33,D1); s32 = sprintf('%s\t%s',s32,s5); } else break; c2+=1; c+=1; }} c=0; if (z) {while (c<sPa) {term.GetVal(D1,'params',c2); s6 = strtok(s30,token,tok_pos,c+1); i = strcmp(s6,''); if (i=1) {s33 = sprintf('%s\t%g',s33,D1); s32 = sprintf('%s\t%s',s32,s6); } else break; c2+=1;
82
c+=1; }} fprintf(2,'%s\t%s',term:loc_name,s32); fprintf(2,'%s\%s',pElm:loc_name,s33); break; r+=1; }} else{fprintf(2,'VCO_%s\ttvm\tvspp\ttspi\tur_mx\tur_mn\tterr\tvss\ttst\tefdmx\tefdmn\tkur\tkui\tkir\tkii\tib_sl',pElm:loc_name); s7 = sprintf('%s\t%g\t%g\t%g\t%g\t%g\t%g\t%g\t%g',pElm:loc_name,term:tvm, term:vspp,term:tspi,term:ur_mx,term:ur_mn,term:terr,term:vss,term:tst); fprintf(2,'%s\t%g\t%g\t%g\t%g\t%g\t%g\t%g',s7,term:efdmx,term:efdmn,term:kur,term:kui,term:kir,term:kii,term:ib_sl); }} else {fprintf(2,'%s',pElm:loc_name); fprintf(2,'Sin VCO'); }} cont +=1; } } else{fprintf(2,'Sin Modelo'); fprintf(2,'%s',pElm:loc_name); } pElm = Elm.Next();} pGrd = Grids.Next(); } pGrd = Grids.First(); fprintf(2,'0\tModelo Regulador de Turbina'); while (pGrd) {Elm = pGrd.GetContents('*.ElmSym',1); Elm.SortToVar(1,'c_pmod'); pElm = Elm.First(); while (pElm) {pElm2 = pElm:c_pmod; if (pElm2) {pElm2.GetSize('pblk',Tmod); cont = 0; while (cont<Tmod) { pElm2.GetVal(pElm3,'pblk',cont); s1 = pElm3:loc_name; comp = strcmp(s1,'pcu',3); comp2 = strcmp(s1,'pmu',3); comp3 = strcmp(s1,'pco',3); comp4 = strcmp(s1,'GT',2); comp5 = strcmp(s1,'ST',2); token = ','; if (comp=0 .or. comp2=0 .or. comp3=0 .or. comp4=0 .or. comp5=0) { pElm2.GetVal(term,'pelm',cont); if (term) {pTyp = term:typ_id; s2 = term:loc_name; if (pTyp) {term.GetSize('params',sPa); r = 0; while (r<sPa) {c = 0; s3 = pTyp:sParams; s30 = pTyp:sUpLimPar; s31 = pTyp:sLowLimPar; s32 = ''; s33 = ''; while (c<=sPa) {term.GetVal(D1,'params',c);
83
s4 = strtok(s3,token,tok_pos,c); i = strcmp(s4,''); if (i) {j = strcmp(s32,''); s33 = sprintf('%s\t%g',s33,D1); if (.not.j) s32 = sprintf('%s',s4); else s32 = sprintf('%s\t%s',s32,s4);} c+=1; } c=0; z = strcmp(s30,''); d = strcmp(s31,''); if (d) {while (c<sPa) {s5 = strtok(s31,token,tok_pos,c); i = strcmp(s5,''); if (i) {s33 = sprintf('%s\t%g',s33,D1); s32 = sprintf('%s\t%s',s32,s5); } c+=1; }} c=0; if (z) {while (c<sPa) {s6 = strtok(s30,token,tok_pos,c); i = strcmp(s6,''); if (i) {s33 = sprintf('%s\t%g',s33,D1); s32 = sprintf('%s\t%s',s32,s6); } c+=1; }} fprintf(2,'%s\t%s',term:loc_name,s32); fprintf(2,'%s\%s',pElm:loc_name,s33); break; r+=1; }} else{if (comp3 = 0) {d = term.VarExists('w_'); if (d) {fprintf(2,'PCO_%s\tw_ [pu]\tx_ [s]\ty_ [s]\tz_ [pu]\tetd\ttrate\ttdel\tpc_mx [pu]\tpc_mn [pu]\tecr\tk3 [pu]\ta_ [pu]\tb_ [s]\tc_ [pu]\ttauf [s]\tkf [pu]\tk5 [pu]\tk4 [pu]\tt3 [pu]\tt4 [pu]\ttaut [s]\tt5[pu]\taf1 [pu]\tbf1 [pu]\tthetr [s]\tk6 [pu]',pElm:loc_name); s7 = printf('%s\t%g\t%g\t%g\t%g\t%g\t%g\t%g\t%g',pElm:loc_name,term:w_,term:x_, term:y_,term:z_,term:etd,term:trate,term:tdel,term:pc_mx); s8 = sprintf('%s\t%g\t%g\t%g\t%g\t%g\t%g\t%g\t%g',s7,term:pc_mn,term:ecr,term:k3, term:a_,term:b_,term:c_,term:tauf,term:kf); s9 = sprintf('%s\t%g\t%g\t%g\t%g\t%g\t%g\t%g\t%g',s8,term:k5,term:k4,term:t3,term:t4, term:taut,term:t5,term:af1,term:bf1); fprintf(2,'%s\t%g\t%g',s9,term:thetr,term:k6); } else{d = term.VarExists('tp'); if (d) {fprintf(2,'PCO_%s\tdband [pu]\tbp [%%]\tbt [%%]\ttp [s]\ttd [s]\ttr [s]\tty [s]\tty0 [s]\ttyc [s]\tyt_mx [pu]\tyt_mn [pu]',pElm:loc_name); s7 = sprintf('%s\t%g\t%g\t%g\t%g\t%g\t%g\t%g\t%g',pElm:loc_name,term:dband, term:bp,term:bt,term:tp,term:td,term:tr,term:ty,term:tyo); fprintf(2,'%s\t%g\t%g\t%g',s7,term:tyc,term:yt_mx,term:yt_mn); } else{fprintf(2,'PCO_%s\tdband [pu]\tbp [%%]\tbt [%%]\ttf [s]\ttr [s]\tty [s]\tty0 [s]\ttyc [s]\tyt_mx [pu]\tyt_mn [pu]',pElm:loc_name); s7 = sprintf('%s\t%g\t%g\t%g\t%g\t%g\t%g\t%g',pElm:loc_name,term:dband,term:bp, term:bt,term:tf,term:tr,term:ty,term:tyo); fprintf(2,'%s\t%g\t%g\t%g',s7,term:tyc,term:yt_mx,term:yt_mn); }}}
84
if (comp2 = 0) {d = term.VarExists('tcd'); if (d) {fprintf(2,'PMU_%s\ttcd [s]\taf2 [pu]\tbf2 [pu]\tcf2 [pu]',pElm:loc_name); fprintf(2,'%s\t%g\t%g\t%g\t%g',pElm:loc_name,term:tcd,term:af2,term:bf2,term:cf2); } else{d = term.VarExists('tw'); if (d) {fprintf(2,'PMU_%s\ttw [s]',pElm:loc_name); fprintf(2,'%s\t%g',pElm:loc_name,term:tw); } else{fprintf(2,'PMU_%s\tthd [s]\ttmd [s]\ttnd [s]\talfhd [pu]\talfnd [pu]\ttisp [s]',pElm:loc_name); fprintf(2,'%s\t%g\t%g\t%g\t%g\t%g\t%g',pElm:loc_name,term:thd,term:tmd,term:tnd,term:alfhd,term:alfnd,term:tisp); }}}}} else {fprintf(2,'%s',pElm:loc_name); fprintf(2,'Sin Regulador de Turbina'); }} cont +=1; }} else{fprintf(2,'Sin Modelo'); fprintf(2,'%s',pElm:loc_name); } pElm = Elm.Next(); } pGrd = Grids.Next();} pGrd = Grids.First(); fprintf(2,'0\tModelo Estabilizadores de Potencia'); while (pGrd) {Elm = pGrd.GetContents('*.ElmSym',1); Elm.SortToVar(1,'c_pmod'); pElm = Elm.First(); while (pElm) {pElm2 = pElm:c_pmod; if (pElm2) {pElm2.GetSize('pblk',Tmod); cont = 0; while (cont<Tmod) {pElm2.GetVal(pElm3,'pblk',cont); s1 = pElm3:loc_name; comp = strcmp(s1,'pss',3); comp2 = strcmp(s1,'PSS',3); token = ','; if (comp = 0 .or. comp2 = 0) {pElm2.GetVal(term,'pelm',cont); if (term) {pTyp = term:typ_id; s2 = term:loc_name; if (pTyp) {term.GetSize('params',sPa); r = 0; while (r<sPa) {c = 0; s3 = pTyp:sParams; s30 = pTyp:sUpLimPar; s31 = pTyp:sLowLimPar; s32 = ''; s33 = ''; while (c<=sPa) {term.GetVal(D1,'params',c); s4 = strtok(s3,token,tok_pos,c); i = strcmp(s4,''); if (i) {j = strcmp(s32,''); s33 = sprintf('%s\t%g',s33,D1); if (.not.j) s32 = sprintf('%s',s4); else s32 = sprintf('%s\t%s',s32,s4); }
85
c+=1; } c=0; z = strcmp(s30,''); d = strcmp(s31,''); if (d) {while (c<sPa) {s5 = strtok(s31,token,tok_pos,c); i = strcmp(s5,''); if (i) {s33 = sprintf('%s\t%g',s33,D1); s32 = sprintf('%s\t%s',s32,s5); } c+=1; }} c=0; if (z) {while (c<sPa) {s6 = strtok(s30,token,tok_pos,c); i = strcmp(s6,''); if (i) {s33 = sprintf('%s\t%g',s33,D1); s32 = sprintf('%s\t%s',s32,s6); } c+=1; }} fprintf(2,'%s\t%s',term:loc_name,s32); fprintf(2,'%s\%s',pElm:loc_name,s33); break; r+=1; }} else{i = term.VarExists('tvm'); if (i) {fprintf(2,'VCO_%s\ttvm\tvspp\ttspi\tur_mx\tur_mn\tterr\tvss\ttst\tefdmx\tefdmn\tkur\t kui\tkir\tkii',pElm:loc_name); s7 = sprintf('%s\t%g\t%g\t%g\t%g\t%g\t%g\t%g\t%g',pElm:loc_name,term:tvm, term:vspp,term:tspi,term:ur_mx,term:ur_mn,term:terr,term:vss,term:tst); fprintf(2,'%s\t%g\t%g\t%g\t%g\t%g\t%g',s7,term:efdmx,term:efdmn,term:kur,term:kui,term:kir,term:kii); } else fprintf(2,'Sin Tipo de PSS'); }} else {fprintf(2,'%s',pElm:loc_name); fprintf(2,'Sin Estabilizador de Potencia'); }} cont +=1; } } else{fprintf(2,'Sin Modelo'); fprintf(2,'%s',pElm:loc_name); } pElm = Elm.Next();} pGrd = Grids.Next(); } fclose(2); Se termina el script y se empieza el análisis en excel 2. Datos de Reguladores de Voltaje
Existen distintos grupos de datos para los reguladores de voltaje, dependiendo del
tipo de generador, estos datos son: • Primer grupo de Datos:
o Tr [s]: Tiempo de retardo (Measurement Delay). o Ae [p.u.]: Factor proporcional de saturación (Saturation Proportional
Factor). o Be [p.u.]: Factor exponencial de saturación (Saturation Exponential
Factor).
86
o Ke [p.u.]: Ganancia de excitación (Excitor Gain). o Te [s]: Constante de tiempo de excitación (Excitor Time Constant). o Kf [p.u.]: Ganancia de trayectoria de estabilización (Stabilisation Path
Gain) o Tf1 [s]: Constante de tiempo del primer paso de la trayectoria de
estabilización (Stabilisation Path First Time Const). o Tf2 [s]: Constante de tiempo del segundo paso de la trayectoria de
estabilización (Stabilisation Path Second Time Const). o KA [p.u.]: Ganancia del regulador de voltaje (Voltage Controller Gain). o TA [s]: Constante de tiempo del regulador de voltaje (Voltage Controller
Time Constant). o Min [p.u.]: Voltaje mínimo de excitación (Excitation Minimum Voltage). o Max [p.u.]: Voltaje máximo de excitación (Excitation Maximum Voltage).
• Segundo grupo de datos: o Tr: Tiempo de retardo (Measurement Delay). o Ke: Ganancia de excitación (Excitor Gain). o Te: Constante de tiempo de excitación (Excitor Time Constant). o Ka: Ganancia del regulador de voltaje (Voltage Controller Gain). o Ta: Constante de tiempo del regulador de voltaje (Voltage Controller
Time Constant). o Tb o PSS/E_ScIngFctr o Vrmin: Voltaje mínimo de excitación (Excitation Minimum Voltage). o Vrmax: Voltaje máximo de excitación (Excitation Maximum Voltage).
• Tercer grupo de datos: o Tr: Tiempo de retardo (Measurement Delay). o Tc1, Tc2 o Tb1, Tb2 o Kr o Ts o Upmn, Upnmx
• Cuarto grupo de datos: o Kd o Ke: Ganancia de excitación (Excitor Gain). o Kc o Tr: Tiempo de retardo (Measurement Delay). o Ae: Factor proporcional de saturación (Saturation Proportional Factor). o Be: Factor exponencial de saturación (Saturation Exponential Factor). o Te: Constante de tiempo de excitación (Excitor Time Constant). o Kb o Ka: Ganancia del regulador de voltaje (Voltage Controller Gain). o Ta: Constante de tiempo del regulador de voltaje (Voltage Controller
Time Constant). o Vlr_const o Tc o Tb o Kf: Ganancia de trayectoria de estabilización (Stabilisation Path Gain)
87
o Tf o Kh o Kl o Vemin o Vamin, Vamax o Vrmin: Voltaje mínimo de excitación (Excitation Minimum Voltage). o Vrmax: Voltaje máximo de excitación (Excitation Maximum Voltage).
• Quinto grupo de datos: o prv6 o trv6 o grv1 o Trv1, Trv2 o prv1 o uex_min, uex_max o Ke: Ganancia de excitación (Excitor Gain). o Te: Constante de tiempo de excitación (Excitor Time Constant). o Ae: Factor proporcional de saturación (Saturation Proportional Factor). o Be: Factor exponencial de saturación (Saturation Exponential Factor).
• Sexto grupo de datos: o Tb o Ta: Constante de tiempo del regulador de voltaje (Voltage Controller
Time Constant). o K o Te: Constante de tiempo de excitación (Excitor Time Constant). o Switch o Emin, Emax
• Séptimo grupo de datos: o Tr: Tiempo de retardo (Measurement Delay). o Ka: Ganancia del regulador de voltaje (Voltage Controller Gain). o Kq o Te: Constante de tiempo de excitación (Excitor Time Constant). o Ta: Constante de tiempo del regulador de voltaje (Voltage Controller
Time Constant). o Upmn, Upmx
• Octavo grupo de datos: o Vmks, Vmkd, Vmkt o Kpe o Kie o rl_ki o ql_ki o qki o qkp o qmin_cnst o iemax_cnst o Switch o Vcn o Vqlmin, Vqlmax
88
o Vrlmin, Vrlmax o Vmmin, Vmmax o Vcp
3. Datos de Reguladores de Turbina
Existen distintos grupos de datos para los reguladores de turbina, dependiendo del tipo de generador, estos datos son:
• Primer grupo de Datos: o Ktc1, Ktc2 o TmpCSet o KSatTC o CnstTC o Kigv0, Kigv1, Kigv2 o Kcch_f o Tcch_f o K_valve1, K_valve2 o Tcch_t o Ttm o Tpem o Speed SP o Kdroop o Kpwr_ctrl o Kspeed_ctrl o Klsc o Const_lsc o dz1, dz2 o Ktp1, Ktp2 o TmpPSet o CnstTP o Tsrl o Td1 o IGVmin, IGVmax o Ymin_IGV, Ymax_IGV o Valve_min, Valve_max o Ymin_valve, Ymax_valve o dz1_sat_mn, dz1_sat_mx o SpdRtMin, SpdRtMax
• Segundo grupo de datos. o Khp o Kip o Klp o Tco o Trh o Thp o Est o T1: Compressor Derivative Time Constant
89
o T2: Compressor Delay Time Constant o MWb o MVAb o Kgov o Db o Lap o Pmin, Pmax o RCHmin, RCHmax
• Tercer grupo de datos: o Prx o Pcr o Drp o Dbd o Tvirt1, Tvirt2 o Tisp o Thp o Tmd o Tnd o alfHp, alfMp o db o Tyo o Tyc o Ty o Reserve o Kp o Ti: Power Gradient Limiter Time Constant o Min, Max o Tr: Rated Exhaust Temperature o Ytmin, ytmax o y_min, y_max
• Cuarto grupo de datos: o Tt [s]: Turbine Time Delay o v0 [p.u]: Turbine Factor o bf [p.u]: Turbine Controller Droop o Ti [s]: Power Gradient Limiter Time Constant o Tv [s]: Measurement Delay o T1 [s]: Compressor Derivative Time Constant o T2 [s]: Compressor Delay Time Constant o K [p.u]: Compressor Factor o y_min [p.u]: Gradient Limiter Minimum Value o GT_min [p.u]: Minimum Torque o y_max [p.u]: Gradient Limiter Maximum Value o GT_max [p.u]: Maximum Torque o Dbd [p.u]: SpCntrl Dead Band o Pres [p.u]: max. Primary Reserve
• Quinto grupo de datos: o W [p.u]: Speed Controller Gain
90
o X [s]: Speed Controller Der.Time Const. o Z [p.u]: Speed Controller Is/Dr (0/1) o Y [s]: Speed Controller Time Constant o K3 [p.u]: Turbine Factor o Ttr [s]: Transport Delay o a [p.u]: Fuel System Prop. Characteristic o b [s]: Fuel System Time Constant o c [p.u]: Fuel System I/L Factor (0/1) o Tf [s]: Fuel System Delay o Kf [p.u]: Fuel System Feed Back Factor o Ecr [s]: Fuel System Delay o Tcd [s]: Turbine Time Delay o af2 [p.u]: Turbine Characteristic, Constant o bf2 [p.u]: Turbine Characteristic, Torque o cf2 [p.u]: Turbine Characteristic, Speed o K6 [p.u]: Compressor Factor o Trate [MW]: Turbine Rated Power o Kac [p.u]: Acc. Gain o Tn [s]: Acc. Controller Diff. Constant o Etd [s]: Temperature Controller Delay o Tr [grd.C]: Rated Exhaust Temperature o af1 [grd.C]: Temperature Factor 1 (Torque) o bf1 [grd.C]: Temperature Factor 2 (Speed) o Ta [grd.C]: Ambient Temperature o K4 [p.u]: Radiation Shield Prop. Factor o K5 [p.u]: Radiation Shield Integr. Factor o T3 [s]: Radiation Shield Time Constant o T4 [s]: Thermocouple Time Constant o Tt [s]: Temperature Controller Time Constant o T5 [p.u]: Temperature Controller Gain o Min [p.u]: VCE Lower Limit o Max [p.u]: VCE Upper Limit o PRes [p.u]: Primary Reserve o Dbd [p.u]: Speed Dead Band
• Sexto grupo de datos: o K: Gain = 100/Drp [-] o T: SpCntrl Time Constant [s] o Dbd: SpCntrl Dead Band [p.u] o y_min, y_max
• Séptimo grupo de datos: o Tl o Tw o Rb
• Octavo grupo de datos: o Prx o Pcr o Drp
91
o Dbd o Tvirt1, Tvirt2 o Tisp o Thp o Tmd o Tnd o alfHp, alfMp o db o Tyo o Tyc o Ty o Reserve o Kp o Ti o Min, Max o Tr o Ytmin, ytmax o y_min, y_max
4. Datos de Estabilizadores de Potencia.
Existen distintos grupos de datos para los reguladores de turbina, dependiendo del tipo de generador, estos datos son:
• Primer grupo de datos: o T1, T2, T3, T4, T5 o Kpv o Tv o Kpss o Delta o Vrmin, Vrmax
• Segundo grupo de datos: o Tl1, Tl2, Tl3, Tl4 o TW1, TW2, TW3, TW4 o Ks1, Ks2, Ks3 o T7, T8, T9 o Ustmin, Ustmax
• Tercer grupo de datos: o Kpelec o Kfrec o SF_frec, SF_pelec o Tpss o PSSmin, PSSmax
• Cuarto grupo de datos: o T1, T2, T3, T4, T5, T6 o K1, K2, K3
Vrmin, Vrmax
92