Está en la página 1de 9

!

===================================================================================
================================================================|
! UNIVERSIDAD DE ANTOFAGASTA
|
! SISTEMAS ELECTRICOS DE POTENCIA
|
! Profesor: Mauricio Vallejos
|
! Segundo Semestre 2018
|
!
===================================================================================
================================================================|
!Script: DPL_Flujo
|
!Fecha Actualizacion: 29-05-2018
|
!----------------------------------------------------------------------------------
-----------------------------------------------------------------|
|
! ESTRUCTURA DE ACCIONES EJECUTADAS POR SCRIPT
|
!----------------------------------------------------------------------------------
-----------------------------------------------------------------|
! 0. DEFINICION DE VARIABLES
|
!
|
! 3. EJECUTA FLUJO DE POTENCIA Y EXPORTA RESULTADOS A EXCEL
|
! 3.1 Obtiene resultados en líneas y los guarda en Excel
|
! 3.1.1 Crea nueva hoja y escribe los encabezados de fila
|
! 3.1.2 Cambia el formato de encabezado de columna
|
! 3.1.3 Exporta datos de lineas a Excel
|
! 3.2 Obtiene resultados en barras y los guarda en Excel
|
! 3.2.1 Crea nueva hoja y escribe los encabezados de fila
|
! 3.2.2 Cambia el formato de encabezado de columna
|
! 3.2.3 Exporta datos de barras a Excel
|
! 3.3 Obtiene resultados en transf de 2 dev y los guarda en Excel
|
! 3.3.1 Crea nueva hoja y escribe los encabezados de fila
|
! 3.3.2 Cambia el formato de encabezado de columna
|
! 3.3.3 Exporta datos de transf de2 dev a Excel
|
!
|
!
===================================================================================
===============================================================|
! 0. DEFINICION DE VARIABLES
|
!
-----------------------------------------------------------------------------------
---------------------------------------------------------------|
string
ElmLne,ElmTerm,ElmTr2,ElmTr3,ElmLod,varLne,varTerm,varTr2,varTrhoja,Scen,case,Cpta;
! |
string separador,ruta,File ;!
|
string delim,cl3, s, type, sval, numberFormat,conduc,Tr01_tap ;!
|
string Uxnet,Linea,Fslod,hoja;
!|
object obj, oval, aFold, aCase,
ldf,oFold_Scen,oScen,oFold_Stdy,Stdy_Set,oStdy,oLod;
!|
double dval,FsLod;
!|
set objs, aCases,oFold,Scen_Set,Lod_Set ;
!|
int iCases, error, pos, i, h, t, row, col, maxRow,
maxCol,NEsOp,count,countSheet,p;
!|
int NLne, NTerm, IdxLne, IdxTerm,ldf_ex,NTr2;
!|
!
===================================================================================
================================================================|
! 1. DEFINE ELEMENTOS Y VARIABLES A EXTRAER
|
!----------------------------------------------------------------------------------
-----------------------------------------------------------------|
ElmLne = '*.ElmLne'
;! Asigna la clase ElmLne como variable tipo string |
ElmTerm = '*.ElmTerm'
;! Asigna la clase ElmTrm como variable tipo string |
ElmTr2 = '*.ElmTr2'
;! Asigna la clase ElmTr2 como variable tipo string |
!ElmTr3 = '*.ElmTr3'
;! Asigna la clase ElmTr2 como variable tipo string |
ElmLod = '*.ElmLod'
;! Asigna la clase ElmTr2 como variable tipo string |
varLne =
'loc_name,c:loading,m:P:bus1,m:Q:bus1,m:P:bus2,m:Q:bus2,m:I:bus1,Tap_Tr01' ;!
Vector de variables de linea a extraer |
varTerm = 'loc_name,e:uknom,m:u,m:phiu,Tap_Tr01'
;! Vector de variables de barras a extraer |
varTr2 =
'loc_name,c:loading,m:Psum:bushv,m:Qsum:bushv,m:Psum:buslv,m:Qsum:bushv,Tap_Tr01';!
Vector de variables de Transformadores a extraer |
!varTr3 =
'loc_name,c:loading,m:Psum:bushv,m:Qsum:bushv,m:Psum:buslv,m:Qsum:bushv,Tap_Tr01';!
Vector de variables de Transformadores a extraer |

!----------------------------------------------------------------------------------
-----------------------------------------------------------------|
! 2. CREA LIBRO EXCEL PARA GUARDAR RESULTADOS
!----------------------------------------------------------------------------------
-----------------------------------------------------------------|
! 2.1 Inicia Excel
|
error = xlStart() ;!Inicia MS Excel
|
if (error)
{
Error('No se puede iniciar la aplicacion MS Excel');! Entrega mensaje de error en
caso de no poder ejecutar Excel |
exit() ;
}
!----------------------------------------------------------------------------------
-----------------------------------------------------------------|
! 2.2 Obtiene el separador decimal y construye formato para numero
|
separador = xlGetDecimalSeparator() ;! Identifica el separador decimal
utilizado en Excel |
numberFormat = sprintf('0%s000', separador);! Formato a utilizar para resultados
|
!----------------------------------------------------------------------------------
-----------------------------------------------------------------|
! 2.3 Crea nuevo libro
|
xlNewWorkbook() ;! Crea un nuevo libro Excel
|
input(dval, 'Please enter a number') ;! Se debe ingresar numero luego de
desactivar advertencia de excel sin licencia |
!----------------------------------------------------------------------------------
-----------------------------------------------------------------|
! 3. EJECUTA FLUJO DE POTENCIA Y EXPORTA RESULTADOS A EXCEL
|
!----------------------------------------------------------------------------------
-----------------------------------------------------------------|
! 3.1 Toma los elementos de la estructura del Proyecto
|
oFold_Scen = GetProjectFolder('scen') ;! Toma carpeta de Operation Scenarios del
proyecto |
Scen_Set = oFold_Scen.GetContents() ;! Crea un set con los Operation Scenarios
del proyecto |
ldf = GetCaseObject('ComLdf') ;! Toma el objeto ComLdf
|
delim = '.' ;! Establece delimitador para estructura de
nombres de objetos |
!----------------------------------------------------------------------------------
-----------------------------------------------------------------|
! 3.2 Inicializa los elementos de proyecto a utilizar para la ejecucion de las
tareas |
NEsOp = oFold.Count() ;! Numero de escenarios de operacion en
carpeta |
oScen = Scen_Set.First() ;! Toma el primer Operation Scenario del set
creado |
oStdy = GetActiveStudyCase() ;! Toma el Study Case activo
|
File = oStdy:loc_name ;! Toma el nombre del Study Case activo
|
count = 0 ;! Inicia un contador para las ejecuciones
de Flujos de Potencia |
countSheet = 0 ;! Inicia un contador para las ejecuciones
de Flujos de Potencia |
!----------------------------------------------------------------------------------
-----------------------------------------------------------------|
! 3.3 Ejecuta ciclo de calculo para cada Factor de Carga
|
h = 1 ;! Establece valor para variable
auxiliar "h" |
for (p=0; p<21; p+=1)
{
printf(' Cuenta %10f',p) ;
FsLod = 0.05*p ;
Lod_Set = AllRelevant(ElmLod) ;
for (oLod=Lod_Set.First();oLod;oLod=Lod_Set.Next())
{
oLod.SetVal(FsLod,'e:scale0',1) ;
}
ldf = GetCaseObject('ComLdf') ;! Toma el objeto ComLdf del
Study Case activo
ldf_ex = ldf.Execute() ;! Ejecuta Flujo de Potencia
!----------------------------------------------------------------------------------
-----------------------------------------------------------------|
! 3.2.1 Crea Hojas y encabezados
|
if(count=0)! Si es el primer Operation Scenario del Ciclo, entonces crea
hojas excel y sus encabezados... |
{
! Hoja para lineas
hoja = strtok(ElmLne,delim,pos,2) ;! Toma nombre del ElmLne
para poner nombre a hoja |
printf(hoja) ;
xlSetWorksheetName(1,hoja) . ;! Agrega una hoja al
libro Excel |
row = 1 ;! Establece valor de fila
para la posicion en la planilla Excel |
col = 1 ;! Establece valor de
columna para la posicion en la planilla Excel |
s = strtok(varLne,',',pos,col) ;! Toma el primer elemento
de
while(pos > -1)
{
xlSetValue(col, row, s) ;!Pone nombre a los
encabezados de columnas |
col+=1 ;
s = strtok(varLne,',',pos,col) ;!Toma nombre de
variables desde vector de variables |
}
maxCol = col-1 ;
xlSetTextStyle(1,1,maxCol,1, 1) ;! Negrita
xlSetFillColor(1,1,maxCol,0,0,0,0) ;! Blanco
xlSetBorder(1,1,maxCol,1,1,1,2,0,0,0) ;! Fondo inferior
countSheet += 1 ;
! Hoja para Barras
xlAddWorksheet() ;! Agrega una hoja al
libro Excel |
hoja = strtok(ElmTerm,delim,pos,2) ;! Toma la posicion del
cambiador de tap desde el nombre del Operation Scenario |
printf(hoja) ;
xlSetWorksheetName(1,hoja) ;! Agrega una hoja al
libro Excel |
row = 1 ;! Establece valor de fila
para la posicion en la planilla Excel |
col = 1 ;! Establece valor de
columna para la posicion en la planilla Excel |
s = strtok(varTerm,',',pos,col) ;! Toma el primer elemento
de
while(pos > -1)
{
xlSetValue(col, row, s) ;!Pone nombre a los
encabezados de columnas |
col+=1 ;
s = strtok(varTerm,',',pos,col) ;
}
maxCol = col-1 ;
xlSetTextStyle(1,1,maxCol,1, 1) ;! Negrita
xlSetFillColor(1,1,maxCol,0,0,0,0) ;! Blanco
xlSetBorder(1,1,maxCol,1,1,1,2,0,0,0) ;! Fondo inferior
countSheet += 1 ;
! Hoja para Transformadores de dos devanados
|
xlAddWorksheet() ;! Agrega una hoja al
libro Excel |
hoja = strtok(ElmTr2,delim,pos,2) ;! Toma la posicion del
cambiador de tap desde el nombre del Operation Scenario |
printf(hoja) ;
xlSetWorksheetName(1,hoja) ;! Agrega una hoja al
libro Excel |
row = 1 ;! Establece valor de fila
para la posicion en la planilla Excel |
col = 1 ;! Establece valor de
columna para la posicion en la planilla Excel |
s = strtok(varTr2,',',pos,col) ;! Toma el primer elemento
de
while(pos > -1)
{
xlSetValue(col, row, s) ;!Pone nombre a los
encabezados de columnas |
col+=1 ;
s = strtok(varTr2,',',pos,col) ;
}
maxCol = col-1 ;
xlSetTextStyle(1,1,maxCol,1, 1) ;! Negrita
xlSetFillColor(1,1,maxCol,0,0,0,0) ;! Blanco
xlSetBorder(1,1,maxCol,1,1,1,2,0,0,0) ;! Fondo inferior
countSheet += 1 ;
! Hoja para Transformadores de tres devanados
! xlAddWorksheet() ;! Agrega una hoja al
libro Excel |
! hoja = strtok(ElmTr3,delim,pos,2) ;! Toma la posicion del
cambiador de tap desde el nombre del Operation Scenario |
! printf(hoja) ;
! xlSetWorksheetName(1,hoja) ;! Agrega una hoja al
libro Excel |
! row = 1 ;! Establece valor de fila
para la posicion en la planilla Excel |
! col = 1 ;! Establece valor de
columna para la posicion en la planilla Excel |
! s = strtok(varTr3,',',pos,col) ;! Toma el primer elemento
de
! while(pos > -1)
! {
! xlSetValue(col, row, s) ;!Pone nombre a los
encabezados de columnas |
! col+=1 ;
! s = strtok(varTr3,',',pos,col) ;
! }
! maxCol = col-1 ;
! xlSetTextStyle(1,1,maxCol,1, 1) ;! Negrita
! xlSetFillColor(1,1,maxCol,0,0,0,0) ;! Blanco
! xlSetBorder(1,1,maxCol,1,1,1,2,0,0,0) ;! Fondo inferior
! countSheet += 1 ;
}
!----------------------------------------------------------------------------------
-----------------------------------------------------------------|
! 3.2.2 Escribe resultados de Flujos
|
!----------------------------------------------------------------------------------
-----------------------------------------------------------------|
! 3.2.2.1 Lineas
|
objs = AllRelevant(ElmLne) ;!
NLne = objs.Count() ;!
row = 2+count*NLne ;!
xlActivateWorksheet (countSheet) ;!
for(obj = objs.First(); obj; obj = objs.Next())
{
col = 1 ;!
s = strtok(varLne,',',pos,col) ;!
while(pos > -1)
{
obj.GetVarType(s, type) ;! Obtiene el tipo de
variable
t = strcmp(type, 'string') ;!
if (t=0)
{
obj.GetVal(sval, s) ;!
xlSetValue(col, row, sval) ;!
}
t = strcmp(type, 'object') ;!
if (t=0)
{
obj.GetVal(oval, s) ;!
sval = oval:loc_name ;!
xlSetValue(col, row, oval) ;!
}
t = strcmp(type, 'double') ;!
if (t=0)
{
obj.GetVal(dval, s) ;!
xlSetValue(col, row, dval) ;!
xlSetNumberFormat(col, row, numberFormat);!
}
col+=1 ;!
s = strtok(varLne,',',pos,col) ;!
}
xlSetValue(col-1, row, FsLod) ;!
row += 1 ;!
}
!----------------------------------------------------------------------------------
-----------------------------------------------------------------|
! 3.2.2.2 Barras
|
objs = AllRelevant(ElmTerm) ;!
NTerm = objs.Count() ;!
row = 2+count*NTerm ;!
xlActivateWorksheet (countSheet-1) ;!
for(obj = objs.First(); obj; obj = objs.Next())
{
col = 1 ;!
s = strtok(varTerm,',',pos,col) ;!
while(pos > -1)
{
obj.GetVarType(s, type) ;! Obtiene el tipo de
variable
t = strcmp(type, 'string') ;!
if (t=0)
{
obj.GetVal(sval, s) ;!
xlSetValue(col, row, sval) ;!
}
t = strcmp(type, 'object') ;!
if (t=0)
{
obj.GetVal(oval, s) ;
sval = oval:loc_name ;
xlSetValue(col, row, oval) ;
}
t = strcmp(type, 'double') ;
if (t=0)
{
obj.GetVal(dval, s) ;
xlSetValue(col, row, dval) ;
xlSetNumberFormat(col, row, numberFormat);
}
col+=1 ;
s = strtok(varTerm,',',pos,col) ;
}
xlSetValue(col-1, row, FsLod) ;
row += 1 ;
}
!----------------------------------------------------------------------------------
-----------------------------------------------------------------|
! 3.2.2.3 Transformadores de dos devanados
|
objs = AllRelevant(ElmTr2) ;!
NTr2 = objs.Count() ;!
row = 2+count*NTr2 ;!
xlActivateWorksheet (countSheet-2) ;!
for(obj = objs.First(); obj; obj = objs.Next())
{
col = 1 ;!
s = strtok(varTr2,',',pos,col) ;!
while(pos > -1)
{
obj.GetVarType(s, type) ;! Obtiene el tipo de
variable
t = strcmp(type, 'string') ;!
if (t=0)
{
obj.GetVal(sval, s) ;!
xlSetValue(col, row, sval) ;!
}
t = strcmp(type, 'object') ;!
if (t=0)
{
obj.GetVal(oval, s) ;
sval = oval:loc_name ;
xlSetValue(col, row, oval) ;
}
t = strcmp(type, 'double') ;
if (t=0)
{
obj.GetVal(dval, s) ;
xlSetValue(col, row, dval) ;
xlSetNumberFormat(col, row, numberFormat);
}
col+=1;
s = strtok(varTr2,',',pos,col) ;
}
xlSetValue(col-1, row, FsLod) ;
row += 1 ;
}
!----------------------------------------------------------------------------------
-----------------------------------------------------------------|
! 3.2.2.4 Transformadores de tres devanados
|
! objs = AllRelevant(ElmTr3) ;!
! NTr3 = objs.Count() ;!
! row = 2+count*NTr3 ;!
! xlActivateWorksheet (countSheet-2) ;!
! for(obj = objs.First(); obj; obj = objs.Next())
! {
! col = 1 ;!
! s = strtok(varTr3,',',pos,col) ;!
! while(pos > -1)
! {
! obj.GetVarType(s, type) ;! Obtiene el tipo de
variable
! t = strcmp(type, 'string') ;!
! if (t=0)
! {
! obj.GetVal(sval, s) ;!
! xlSetValue(col, row, sval) ;!
! }
! t = strcmp(type, 'object') ;!
! if (t=0)
! {
! obj.GetVal(oval, s) ;
! sval = oval:loc_name ;
! xlSetValue(col, row, oval) ;
! }
! t = strcmp(type, 'double') ;
! if (t=0)
! {
! obj.GetVal(dval, s) ;
! xlSetValue(col, row, dval) ;
! xlSetNumberFormat(col, row, numberFormat);
! }
! col+=1;
! s = strtok(varTr3,',',pos,col) ;
! }
! xlSetValue(col-1, row, FsLod) ;
! row += 1 ;
! }
! count+= 1 ;
}
!----------------------------------------------------------------------------------
-----------------------------------------------------------------|
! 4. GUARDA Y CIERRA ARCHIVO EXCEL
|
!----------------------------------------------------------------------------------
-----------------------------------------------------------------|
Cpta = 'C:\Users\Mauro\Desktop\Taller\' ;
File = 'FlujoCarga' ;
ruta = sprintf('%s %s %s',Cpta,File,'.xlsx') ;
error = xlSaveWorkbookAs(ruta) ;
if (error)
{
Error('Workbook could not be saved') ;
}
xlTerminate() ;
!----------------------------------------------------------------------------------
-----------------------------------------------------------------|
! FIN
|
!
===================================================================================
================================================

También podría gustarte