Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Carvajal FZ
Carvajal FZ
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 alegra 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 ensearon con su infinito amor a ser
mas humano, sencillo y sensible, a conseguir lo que en algn momento pareci
casi imposible: a cambiar, crecer y madurar. Me ensearon 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 niez y
juventud, a ser el hermano chico y mayor despus, mis momentos de juegos y
de apoyo.
A mis familiares, abuelita, tos, tas, primos que a lo largo de los aos me
han hecho sentir parte de una familia grande y cariosa, sin obligacin.
A mis amigos que con el correr de los aos 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, cario y paciencia, en el
mbito personal, con su ejemplo y dedicacin en el trabajo, me dieron el
impulso necesario para concretar los ltimos pasos de esta titulacin.
Finalmente quisiera agradecer a mi profesor gua, ya que no solo me
apoyo en el transcurso de esta etapa , sino tambin lleno de dudas las cuales
lograron hacer que este trabajo finalizara de manera correcta y satisfactoria.
Adems quisiera agradecerle por el echo de que sin querer me hizo formar
parte de un equipo en el que no solo encontrare jefes y compaeros de trabajo,
sino tambin amigos y personas admirables que no solo perduran en mi
memoria como los que me ayudaron es este pequeo paso final en mi titilacin ,
sino tan bien por la admiracin que lograron producir en mi no solo por sus
capacidades laborares sino tambin 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
CAPTULO 1. .................................................................................................................. 8
INTRODUCCIN............................................................................................................. 8
1.1 Generalidades ................................................................................................... 8
1.2 Objetivos ........................................................................................................... 9
1.2.1 Objetivos Generales.......................................................................................... 9
1.2.2 Objetivos Especficos ........................................................................................ 9
1.3 Estructura del Trabajo ....................................................................................... 9
CAPTULO 2. ................................................................................................................ 11
ASPECTOS GENERALES ........................................................................................... 11
2.1 Resumen ......................................................................................................... 11
2.2 Introduccin .................................................................................................... 11
2.3 Herramientas Usadas Para el Anlisis de Sistemas de Potencia ................... 12
2.4 Mtodos Para Realizar el Clculo de Flujo de Potencia ............................ 16
2.4.1 Mtodo de Gauss Seidel..............................................................................20
2.4.2 Mtodo de Newton Raphson........................................................................21
2.4.3 Mtodo Desacoplado Rpido..........................................................................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
CAPTULO 3. ................................................................................................................ 30
DATOS PARA DISTINTOS TIPOS DE ANLISIS DE SISTEMAS ELCTRICOS. .... 30
5
TABLA DE ILUSTRACIONES
Figura 1, Evolucin de las herramientas computacionales utilizadas en estudios de
sistemas elctricos (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 Extrados Manualmente, Caso Base +Lnea Crucero -
Encuentro ...................................................................................................................... 55
Figura 7, Datos del Sistema Extrados con el Script, Caso Base +Lnea Crucero -
Encuentro ...................................................................................................................... 56
Figura 8, Creacin de formato raw 26 .......................................................................... 57
Figura 9, Vista de PowerWorld ..................................................................................... 58
Figura 10, Datos Ingresados al Power World ............................................................... 59
Figura 11, Comparacin de Barras entre Power world y Digsilent ............................... 60
Figura 12, Comparacin de Generacin enre Power World y digsilent ........................ 60
Figura 13, Comparacin de Lneas entre Power World y Digsilent .............................. 61
7
CAPTULO 1.
INTRODUCCIN
1.1 Generalidades
En Chile, el uso de la computacin en los estudios de operacin y
contingencia son empleados por la gran mayora de las empresas elctricas,
principalmente en los departamentos encargados de estudios, departamentos
tcnicos y comerciales. Tambin son utilizados por los organismos de
coordinacin de la operacin de sistemas, Centro de Despacho Econmico de
Carga (CDEC), y por los organismos gubernamentales encargados de la
regulacin legal de la operacin del sistema elctrico, CNE, SEC.
Dichas herramientas computacionales son utilizadas tambin para realizar
distintas investigaciones, como por ejemplo, estudios especficos de operacin,
o tambin pueden ser utilizados por los departamentos de ingeniera elctrica
de las universidades, en donde se realiza uso docente e investigativo.
En este trabajo se mencionar brevemente la evolucin de programas
computacionales para el uso en clculos o estudios de sistemas elctricos de
potencia, junto con los distintos mtodos de modelacin utilizados. Luego se
mostrar una metodologa para crear una base de datos, con toda la
informacin necesaria para hacer un anlisis de sistema, con la finalidad de
crear archivos utilizables simultneamente 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 creacin de una base de datos
que sea capaz de reunir toda la informacin necesaria de un sistema elctrico
de potencia para lograr realizar estudios varios.
1.2.2 Objetivos Especficos
Los objetivos especficos corresponden a la creacin de una base de
datos que contenga la informacin necesaria para realizar clculos de flujo de
potencia, que contenga los datos de secuencia de la red y que contenga la
informacin necesaria para realizar anlisis dinmicos de un sistema elctrico
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 informacin e
infraestructura para realizar este trabajo.
1.3 Estructura del Trabajo
Esta memoria consta de seis captulos, el primero de ellos consta de una
introduccin a la utilizacin de software computacional para el estudio de
sistemas elctricos en Chile. En este captulo se muestran, tambin, los
objetivos generales y especficos del trabajo.
9
CAPTULO 2.
ASPECTOS GENERALES
2.1 Resumen
En este captulo se comentar de la evolucin que ha tenido el desarrollo
de softwares computacionales, la metodologa utilizada para el estudio y
algunos ejemplos de programas computacionales que existen en el mercado.
2.2 Introduccin
En los aos cincuenta y sesenta, era comn encontrar en los laboratorios
de las universidades modelos estticos de los sistemas elctricos, utilizando
modelos simplificados de los generadores y reduciendo los elementos del
sistema utilizando componentes RLC (1). En los aos 70 estos mtodos fueron
reemplazados con el uso de computadores, los cuales eliminaron este tedioso
trabajo, pero introdujeron nuevos problemas tpicos de stos, por ejemplo,
problemas de accesibilidad, requerimientos mnimos de sistema, problemas de
aprendizaje de los sistemas operativos, costos propios de los computadores, y
grandes gastos de tiempo en el clculo mientras ms complejas eran las redes
elctricas (2).
En el presente, el rpido progreso de la tecnologa de los computadores
(hardware y software) a hecho que el problema del anlisis de sistemas sea
realizado por un simple PC. Las tcnicas ya se han desarrollado para
aprovechar al mximo las tecnologas, las cuales permiten al usuario gastar
11
Figura2,ModeloGeneraldeunaBarra(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 lneas modeladas como admitancias a la barra en estudio:
16
= I
]
n
]=0
-
]
I
]
n
]=1
] = u (cc. 1)
En donde
Ij
representa la matriz admitancia entre la barra en estudio i y
la barra j, y I
]
= |I|zo
]
, es el voltaje en la barra j del sistema.
La ecuacin anterior puede ser escrita en trminos de los elementos de
la matriz de admitancia nodal, la cual resume la informacin de la topologa 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) y
= |y
|z0
=
k
n
k
Elementos fuera de la diagonal (ec.3) y
]
= |y
]
|z0
]
= -
]
Con la definicin de la matriz de admitancia nodal y considerando que
y
]
= |y
]
|z0
]
y I
]
= |I|z] son nmeros complejos, la ec. 1 puede ser escrita
como:
I
= y
]
I
]
n
]=1
= |y
]
| |I
]
|z0
]
+o
]
n
]=1
(cc. 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:
P
-]
= I
-
I
(cc. S)
17
= |I
||I
]
||y
]
| cos(0
]
-o
+o
]
)
n
]=1
Potencia Reactiva: (ec.7)
= -|I
||I
]
||y
]
| sen(0
]
-o
+o
]
)
n
]=1
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 mdulo 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
caractersticas 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 ms
generadores conectados directamente a ellas. Al tener esta
configuracin, se considera como conocidos las variables de la
18
Con esta clasificacin, y dado que la relacin 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 mtodos numricos iterativos para encontrar la
solucin del problema mediante un proceso de convergencia.
Como se mencion en el punto anterior, estos mtodos son:
2.4.1 Mtodo de Gauss Seidel.
Este mtodo calcula el voltaje en mdulo y ngulo de una barra, en
funcin de los voltajes en todas las barras obtenidos en una iteracin anterior
del modelo.
De las ecuaciones 1 y 5, se obtiene una expresin para el voltaje de la
barra genrica i, que es calculado en forma iterativa.
I
k+1
=
_
P
-]
k
_
-
+ y
]
I
]
k n
]
y
] = i (cc. 8)
Se considera que el mtodo converge si el mdulo 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 mtodo se puede calcular el voltaje en
las barras i en la iteracin k+1, utilizando los voltajes en la barra j, calculados
dentro de la misma iteracin k+1 (mtodo con variables actualizadas). Tambin
20
k
+o|I
k+1
-I
k
] (cc. 9)
En general el mtodo de Gauss Seidel no exhibe buenas caractersticas
de convergencias en sistemas elctricos de tamao real. Generalmente
necesita una cantidad mayor de iteraciones que las utilizadas por otros mtodos
para el clculo de flujos de potencia.
2.4.2 Mtodo de Newton Raphson.
Este mtodo constituye el mtodo numrico iterativo base para las
aplicaciones computacionales que calculan flujos de potencia.
Este mtodo consiste en expandir en serie de Taylor las ecuaciones 6 y 7
en torno a un punto inicial despreciando los trminos de segundo orden de la
serie. De esta forma se deduce un sistema de ecuaciones lineales que
relacionan las potencias con el mdulo y ngulo del voltaje, que puede ser
escrita como:
_
P
_ =
l
l
l
l
oP
oo
oP
o|I|
o
oo
o
o|I|1
1
1
1
_
o
|I|
_ (cc. 1u)
Considerando el error entre dos sucesiones sucesivas ngulo y mdulo
de voltaje como:
21
o = o
k+1
-o
k
|I| = |I
k+1
| -|I
k
|
(cc. 11)
Este mtodo concluye cuando el mdulo del error de potencia activa y
reactiva para la siguiente iteracin es menor a una tolerancia definida para
todas las barras del sistema incluidas en el mtodo, por ejemplo |P
k
| =
u.uu1 y |
k
| = u.uu1.
La matriz de derivadas parciales de la ecuacin 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 nmero de iteraciones para obtener la solucin es independiente al
tamao del sistema. Adems el error del mdulo de potencia converge en forma
cuadrtica a cero; mientras que el mtodo de Gauss Seidel lo hace en forma
lineal. El contra que tiene este mtodo es que generalmente se hacen ms
clculos numricos por iteracin.
2.4.3 Mtodo Desacoplado Rpido.
Cuando el sistema elctrico tiene un gran nmero de barras, el mtodo
de Newton Raphson usa demasiados recursos de cmputo y memoria del
computador en donde se estn haciendo los clculos, ya que se esta
calculando, almacenando y factorizando en cada iteracin la matriz jacobiana
del sistema. El mtodo Desacoplado Rpido (2), es una variante que introduce
aproximaciones deducidas de la topologa de la red y las condiciones de
22
operacin normales del sistema. Este mtodo genera una matriz jacobiana,
pero no necesita actualizar sus valores en cada aproximacin, lo que reduce la
cantidad de clculos necesarios.
Las simplificaciones son aplicables si el sistema elctrico cumple con:
En las lneas de transmisin, el siguiente coeficiente
X
R
, tiene que
ser un valor elevado, siendo X la reactancia serie, y R la
resistencia de la lnea.
En una condicin de operacin normal del sistema la diferencia
entre el ngulo de voltajes en barras adyacentes es pequea.
En una condicin de operacin normal del sistema el mdulo 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
]
-o
+o
]
) = u =
oP
o|I|
= u y
o
oo
= u (cc. 12)
De estas relaciones se puede demostrar que el sistema de ecuaciones
definido por la ecuacin 10 se desacopla dando lugar a dos ecuaciones
matriciales independientes que describen la otra versin del mtodo
desacoplado rpido. La primera relaciona la variacin de potencia activa con la
variacin en los ngulos de los voltajes, mientras que la segunda relaciona la
variacin de la potencia reactiva con la variacin en los mdulos de ls voltajes:
23
|P
k
] = -|B
i
] |o
k+1
]
|
k
] = -|B
ii
] ||I
k+1
|]
(cc. 1S)
En donde los elementos de las matrices B
i
y B
ii
quedan definidos por:
B
]
i
=
1
X
]
(X
]
cs lo rcoctoncio cntrc borro i y ])
B
i
= -B
]
i
]=
(cc. 14)
B
ii
= 2 b
-B
]
ii
]=
(con b
que existen en una red elctrica. El programa contiene distintos mdulos que
hacen posible estudiar y disear cualquier tipo de sistema elctrico (T & D,
parques elicos, redes AC/DC), analizando sistemas de potencia desde
distintas perspectivas (sistemas balanceados, PQ, confiabilidad de sistemas,
anlisis dinmico, etc.), importando/exportando datos, y siendo compatible cien
porciento con Auto CAD. Otras caractersticas estn 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
energtico, contiene herramientas de anlisis y diseo, usadas para la toma de
decisiones en asuntos del mercado industrial elctrico. GridView, utiliza
metodologas avanzadas para el estudio de generacin, transmisin, cargas,
combustible, y mercado econmico, integrando todo en un programa que
entrega indicadores econmicos de los distintos lugares, medidas de utilizacin
en el sistema de transmisin, medidas de estabilidad en el sistema de potencia,
e ndices de comportamiento del mercado. Produce despachos econmicos que
respetan las leyes de flujo de potencia y requerimientos en los sistemas de
transmisin.
29
CAPTULO 3.
DATOS PARA DISTINTOS TIPOS DE ANLISIS DE SISTEMAS
ELCTRICOS.
3.1 Resumen
En este captulo se detallan los tipos de archivos necesarios para los
diferentes anlisis que se realizan en los sistemas elctricos de potencia.
3.2 Introduccin
Se necesita desarrollar una base de datos que sea capaz de crear
archivos utilizables por programas destinados al anlisis de sistemas elctricos
de potencia (SEP).
En primera instancia se necesitan los parmetros elctricos del SEP para
poder hacer un flujo de potencia y poder estudiar la estabilidad esttica del
sistema.
Los parmetros de secuencia son necesarios para el anlisis de fallas
que pueden ocurrir en el sistema, como por ejemplo las fallas monofsicas,
bifsicas o trifsicas, ocasionadas por ejemplo, por un cortocircuito en alguna
lnea del sistema.
El ltimo conjunto de datos son los datos necesarios para realizar un
estudio de comportamiento dinmico del sistema.
30
Etc.
3.4 Datos de Secuencia
Los datos de secuencia (positiva, negativa y cero) son necesaria para
realizar un anlisis de fallas en sistemas balanceado/des balanceados.
Los datos mnimos 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 lneas de transmisin:
o Se necesitan las barras donde esta conectada la lnea, 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 estn conectados los elementos,
por ejemplo en el caso de los transformadores se especifica el tipo
de conexin que cada uno tiene, por ejemplo el lado de alta esta
33
El Script genera tres archivos, el primero utilizado para el clculo del flujo
de potencia, el segundo contiene los datos de secuencia, y el tercero tiene los
datos para clculos dinmicos del sistema.
El algoritmo del script, es el siguiente:
Set: Con este comando se definen las variables que contendrn un listado de
parmetros, 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 alfabticas que se encuentran en los
objetos, como por ejemplo, el nombre de la barra.
double: Se utiliza para definir variables numricas 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 clculo de flujo de potencia, el segundo contiene los datos de
secuencia del sistema, y el tercero contiene los datos para el clculo
dinmico.
36
CAPTULO 4.
BASE DE DATOS PARA CREAR ARCHIVOS GENERALES DE
SISTEMAS ELCTRICOS.
4.1 Resumen
En este captulo se mostrar el origen y el manejo de los datos
recopilados para el anlisis y clculo de los sistemas elctricos.
4.2 Introduccin
En el captulo 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
elctrico contiene parmetros fsicos, tcnicos y elctricos que son necesarios
para realizar anlisis de estabilidad. Esta extensa informacin es manejada de
forma particular por cada uno de los softwares del mercado, es decir, cada
programa tiene sus propias libreras, herramientas, entornos grficos y forma en
47
Figura3,TabladeScriptVistoenNotepad
Este archivo generado se abre con Excel, lo que se ve en la siguiente
figura:
Figura4,TabladeScriptVistoenExcel
Este formato se repite para cada tipo de dato, y para cada archivo, esto
se hace para facilitar la creacin de una macro de Excel.
Cuando Excel genera los archivos raw, estos estn en formato raw tipo
26, que es el formato que lee Power World, PSS/E y Digsilent.
51
CAPTULO 5.
CASOS PRCTICOS DE ANLISIS
5.1 Resumen
En este captulo se analizarn estudios reales en el sistema. Entre estos
estudios, se pueden considerar la inclusin de generadores, lneas y cargas al
sistema, y comparacin de los resultados obtenidos con los softwares.
5.2 Introduccin
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 estudiarn los efectos
sistmicos, la necesidad de incluir nuevas lneas, con lo cual estos anlisis se
extendern a los efectos en el sistema de transmisin. Esto llevar al segundo
caso a estudiar, la inclusin de nuevas lneas de transmisin.
Los anlisis en general consisten en hacer flujos de potencias y anlisis
estticos de fallas, analizando variables principales. Se analizan los efectos en
el sistema, antes y despus de la central, se realizan comparaciones con cada
uno de los softwares computacionales, mediante la base de datos creada.
52
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
anlisis (Esto porque el problema de este bajo voltaje no es el tpico en
estudio). Luego se muestran en rojo aquellas barras que tienen directa relacin
con los cambios hechos y que modificaron y luego se marca en color verde
aquellas barras no estn relacionadas de manera directa elctricamente con el
sector de anlisis realizado.
Caso Base Lnea 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
Lnea 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 Chapiquia 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
Figura6,DatosdelSistemaExtradosManualmente,CasoBase+LneaCruceroEncuentro
55
El mismo anlisis 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
lneas 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 extrados por el script difieren en el 6 decimal, lo que no
afecta prcticamente en nada en trminos de clculo 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 Chapiquia 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
Figura7,DatosdelSistemaExtradosconelScript,CasoBase+LneaCruceroEncuentro
56
Figura9,VistadePowerWorld
En la Figura10 se muestran algunos datos ya ingresados en el programa.
Hay que agregar que adems de los datos que se ingresan desde la base de
datos del Digsilent, hay que agregar la informacin de los switchs e
interruptores, que se modelan como lneas 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
CAPTULO 6.
CONCLUSIONES
El constante desarrollo y crecimiento del sector elctrico Chileno e
Internacional, inducido por el crecimiento constante de la poblacin, impulsa la
necesidad de contar con herramientas de anlisis para la toma de decisiones
tcnicas-econmicas por parte de los agentes participantes en un mercado
elctrico competitivo. Dichos agentes, tendrn que considerar la mayor cantidad
de escenarios posibles para poder tomar la mejor decisin, es por esto que las
herramientas de anlisis deben ser esencialmente, rpidas y eficaces.
Hoy en da, el uso del programa computacional Power Factory Digsilent
en el mercado Chileno, ha logrado que las distintas empresas, manejen ms
adecuadamente sus bases de datos, invirtiendo principalmente tiempo. En el
presente trabajo se muestra la manera de ayudar a hacer esto mucho ms
rpido, logrando utilizar Digsilent no slo ms eficazmente, si no que
complementando su uso compatibilizndolo con otros softwares utilizados
anteriormente por las empresas Edelnor y ElectroAndina (Power World o
PSS/E) para hacer anlisis rpidos y eficaces.
El uso de una base de datos en Excel, es la mejor tcnica para realizar
este trabajo, ya que la informacin necesaria de cada uno de los elementos
elctricos, que es esencial para hacer estudios en los sistemas elctricos de
potencia, se maneja eficazmente. Estos datos no cambian, independiente del
software utilizado, manteniendo intacta la esencia del sistema elctrico.
62
Bibliografa
1.Montalvn.,R.Fuentes.HERRAMIENTASDEVISUALIZACINDEESTUDIOSDEFLUJOSDE
POTENCIAPARAELAPOYOALATOMADEDECISIONESENSISTEMASELCTRICOS.Universidad
deChile.Santiago:s.n.,2005.TrabajodeTtulo.
2.FastDecoupledPowerFlow.B.Slott,O.Alsac.Juniode1974,IEEETrans.PowerApparatus
andSystem.
3.Corporation,PowerWorld.[Enlnea]
http://www.powerworld.com/features/featurefaq.asp.
4.TheMathWorks,Inc.[Enlnea]http://www.mathworks.com/products/simpower/.
5.SIEMENS.[Enlnea]http://pssadept.com/pti/PTIspanish/software/psse/indexspanish.cfm.
6.TechnologiesInc,RTDS.[Enlnea]http://www.rtds.com/.
7.Etap,EnterpriseSolutionforElectricalPowerSystem.[Enlnea]http://www.etap.com/.
8.GmbH,DIgSILENT.[Enlnea]http://www.digsilent.com/Software/PowerFactory_Features/.
9.D.T.Risy,andR.H.Staunton.EvaluationofDistributionAnalysisSoftwareforDER
Applications.s.l.:ORNL/TM2001/215,Sep.30,2002.
10.Inc.,ABB.[Enlnea]
http://www.abb.com/Industries/seitp408/05c32a23cb9548e7c1257013003bddb2.aspx.
11.Apowersystemanalysispackageforstudents,usingcomputergraphics.WachalRW,
TarnaweckyMZ,SwiftGW.IEEETransPAS1984;PAS103(2):4458.
12.COPERITEcomputeraidedtoolforpowerengineeringresearch,instruction,trainingand
education.ChowdhuryBH,ClarkDE.IEEETransPowerSyst1992;7(4):156570.
13.J.D.Glover,M.Sarma.PowerSystemAnalysisandDesign.2ndedition.s.l.:PWSPublishing
Company.pg.253.
14.N.N.Bengiamin,andF.H.Holcomb.PCBasedPowerSystemSoftware:Comparing
FunctionsandFeatures.s.l.:IEEETrans.ComputerApplicationsinPower,Jan.1992.pgs.35
40.Vol.no.1.
15.ModelingRequirementstoStudyInteractionsofDGandDistributionSystems.Kojovic,
Ljubomir.2002,IEEEPESSumerMeeting.
64
16.PowerSystemAnalysisSoftwareTools.LokendraBam,WardJewell.2005,IEEE.
17.Prez,J.E.FlujosdePotenciaOptimoconProgramacinSecuencial.UniversidaddeChile.
Santiago:s.n.,2001.TsisdeMagster.
18.International,Electrocon.CAPE,Elsoftwaredeingenieradeproteccin.[Enlnea]
http://www.electrocon.com/cape/pf_sp.htm.
19.Saadat,H.PowerSystemAnalysis.NewYork:McGrawHill,1999.
65
ANEXOS
1. Cdigo Script
El siguiente cdigo 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,M
BASE);
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
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 conexin
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_na
me,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); !Mnimo entre Alta y Media
min_hl=min(pTyp:strn3_h,pTyp:strn3_l); !Mnimo entre Alta y Baja
min_ml=min(pTyp:strn3_l,pTyp:strn3_m); !Mnimo 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_na
me,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:str
n3_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_na
me,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_na
me,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
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_na
me,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_na
me,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_na
me,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
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\ttds
s0\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,D
15);
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
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\t
kui\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:k
ui,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
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,ter
m: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 anlisis 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 saturacin (Saturation Proportional
Factor).
o Be [p.u.]: Factor exponencial de saturacin (Saturation Exponential
Factor).
86
o Tf
o Kh
o Kl
o Vemin
o Vamin, Vamax
o Vrmin: Voltaje mnimo de excitacin (Excitation Minimum Voltage).
o Vrmax: Voltaje mximo de excitacin (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 excitacin (Excitor Gain).
o Te: Constante de tiempo de excitacin (Excitor Time Constant).
o Ae: Factor proporcional de saturacin (Saturation Proportional Factor).
o Be: Factor exponencial de saturacin (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 excitacin (Excitor Time Constant).
o Switch
o Emin, Emax
Sptimo 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 excitacin (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
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.
93