Attribute VB_Name = "Campo" Option Explicit Const pi As Single = 3.14159 Public conductoresActivos() As conductorFase Public conductores As Integer Dim i As Integer Dim contador As Integer Type conductorFase Xi As Single Yi As Single linea As Integer intensidad As Single desfase As Single End Type Dim ficheropas As Integer Dim ficheroact As Integer Dim ficherom As Integer Dim cadena As String Dim cadenapas As String Dim cadenaact As String Dim contadorPasivo As Integer Dim contadorActivo As Integer Public SacaGraficas As Boolean Sub ficherosm() ' Aqui creamos los ficheros que se pasaran a las funciones de ' Matlab para calcular las gráficas. ' Primero nos creamos las fases equivalentes Campo.conductoresEquivalentes Dim contador As Integer ficherom = FreeFile ' Fichero 'fases.txt' ' Contiene una fase equivalente en cada fila ' Borramos fichero previo si es que existía If Len(Dir$(App.Path & "\calculos\fases.txt")) > 0 Then Kill (App.Path & "\calculos\fases.txt") ' Creamos el nuevo Open (App.Path & "\calculos\fases.txt") For Output As ficherom ' Grabamos todas las fases equivalentes, por filas contador = 1 While (contador <= conductores) cadena = conductoresActivos(contador).Xi & ";" cadena = cadena & conductoresActivos(contador).Yi & ";" cadena = cadena & conductoresActivos(contador).intensidad & ";" cadena = cadena & conductoresActivos(contador).desfase & ";" cadena = Replace(cadena, ",", ".") Print #ficherom, cadena contador = contador + 1 Wend Close ficherom ' Borramos los ficheros de lazos anteriores si existen If Len(Dir$(App.Path & "\calculos\activo.txt")) > 0 Then Kill (App.Path & "\calculos\activo.txt") If Len(Dir$(App.Path & "\calculos\pasivo.txt")) > 0 Then Kill (App.Path & "\calculos\pasivo.txt") contadorPasivo = 0 contadorActivo = 0 ' Si hay lazos pasivos seleccionados se copian a su archivo. If Module1.totalLazos > 0 Then Dim n As Integer n = 1 ficheropas = FreeFile Open (App.Path & "\calculos\pasivo.txt") For Output As ficheropas ' Recorremos todos los lazos que nos han marcado While (n <= UBound(Lazos)) ' Ahora escribimos 'pasivo.txt' con los lazos pasivos que se hayan dicho If (Lazos(n).pasivo = True And Lazos(n).Calcular = True) Then contadorPasivo = contadorPasivo + 1 cadenapas = Lazos(n).tipo & ";" ' Conductores que siempre aparecen cadenapas = cadenapas & Lazos(n).x1 & ";" & Lazos(n).y1 & ";" cadenapas = cadenapas & Lazos(n).x2 & ";" & Lazos(n).y2 & ";" ' Tercer conductor If (Lazos(n).tipo = "3" Or Lazos(n).tipo = "4") Then cadenapas = cadenapas & Lazos(n).x3 & ";" & Lazos(n).y3 & ";" Else cadenapas = cadenapas & "0;0;" End If ' Cuarto conductor If Lazos(n).tipo = "4" Then cadenapas = cadenapas & Lazos(n).x4 & ";" & Lazos(n).y4 & ";" Else cadenapas = cadenapas & "0;0;" End If ' R' y rgm cadenapas = cadenapas & CStr(CSng(Lazos(n).RConductor) / 1000) & ";" & _ Lazos(n).rgmConductor & ";" ' Valor de Xc1 cadenapas = cadenapas & Lazos(n).xc1 & ";" ' Valor de Xc2 If Lazos(n).tipo = "3" Then cadenapas = cadenapas & Lazos(n).xc2 & ";" Else cadenapas = cadenapas & "0;" End If ' Valor de Xc3 If (Lazos(n).tipo = "4" Or Lazos(n).tipo = "3") Then cadenapas = cadenapas & Lazos(n).xc3 & ";" Else cadenapas = cadenapas & "0;" End If ' Ahora grabaremos un 1 si Xc es en p.u. y 0 si no If Lazos(n).usaFc = True Then cadenapas = cadenapas & "1;" Else cadenapas = cadenapas & "0;" End If cadenapas = Replace(cadenapas, ",", ".") Print #ficheropas, cadenapas End If n = n + 1 Wend If contadorPasivo <> 0 Then Close ficheropas Else Close ficheropas Kill (App.Path & "\calculos\pasivo.txt") End If ficheroact = FreeFile Open (App.Path & "\calculos\activo.txt") For Output As ficheroact n = 1 While (n <= UBound(Lazos)) If (Lazos(n).pasivo = False And Lazos(n).Calcular = True) Then contadorActivo = contadorActivo + 1 cadenaact = Lazos(n).tipo & ";" ' Coordenadas conductores cadenaact = cadenaact & Lazos(n).x1 & ";" & Lazos(n).y1 & ";" cadenaact = cadenaact & Lazos(n).x2 & ";" & Lazos(n).y2 & ";" If (Lazos(n).tipo = "3" Or Lazos(n).tipo = "4") Then cadenaact = cadenaact & Lazos(n).x3 & ";" & Lazos(n).y3 & ";" Else cadenaact = cadenaact & "0;0;" End If If Lazos(n).tipo = "4" Then cadenaact = cadenaact & Lazos(n).x4 & ";" & Lazos(n).y4 & ";" Else cadenaact = cadenaact & "0;0;" End If ' R' y rgm ' cadena = cadena & Lazos(1).RConductor & ";" & _ Lazos(1).rgmconductor & ";" ' Intensidades y desfases cadenaact = cadenaact & Lazos(n).I1 & ";" & Lazos(n).theta1 & ";" If (Lazos(n).tipo = "3" Or Lazos(n).tipo = "4") Then cadenaact = cadenaact & Lazos(n).I2 & ";" & Lazos(n).theta2 & ";" Else cadenaact = cadenaact & "0;0;" End If cadena = Replace(cadenaact, ",", ".") Print #ficheroact, cadenaact End If n = n + 1 Wend If contadorActivo <> 0 Then Close ficheroact Else Close ficheroact Kill (App.Path & "\calculos\activo.txt") End If End If ' Finalmente el fichero datos.txt ' Nos cargamos uno anterior si lo hubiera If Len(Dir$(App.Path & "\calculos\datos.txt")) > 0 Then Kill (App.Path & "\calculos\datos.txt") ' Abrimos el fichero nuevo ficherom = FreeFile Open (App.Path & "\calculos\datos.txt") For Output As ficherom ' Primero frecuencia cadena = CStr(Principal.frecuencia) & ";" ' Ahora altura a la que se obtiene el campo cadena = cadena & FormCampo.Text1 & ";" ' Ahora ponemos los limites de calculo cadena = cadena & FormCampo.Text2 & ";" & FormCampo.Text3 & ";" & _ FormCampo.Text4.Text & ";" cadena = Replace(cadena, ",", ".") Print #ficherom, cadena Close ficherom Unload FormCampo ' Me cargo los ficheros 'campo.txt' y 'fa.txt' que pudiera haber If Len(Dir$(App.Path & "\calculos\campo.txt")) > 0 Then Kill (App.Path & "\calculos\campo.txt") If Len(Dir$(App.Path & "\calculos\fa.txt")) > 0 Then Kill (App.Path & "\calculos\fa.txt") ' Una vez guardados todos los datos llamo a la funcion que me dibuja las graficas Shell (App.Path & "\calculos\micampo.exe") End Sub Function conductoresEquivalentes() ' Aqui obtenemos una array de conductores equivalentes ' y se devuelven en el array conductoresEquivalentes Dim miconductor As conductorFase Dim total As Integer total = 0 conductores = 0 ' Conductores normales i = 1 If (Module1.totalcond > 0) Then While (i <= totalcond) With miconductor .Xi = Module1.conductoresPictureBox(i).coordx .Yi = Module1.conductoresPictureBox(i).altura .intensidad = Module1.conductoresPictureBox(i).intensidad .desfase = Module1.conductoresPictureBox(i).desfase .linea = Module1.conductoresPictureBox(i).linea End With total = añadeConductor(miconductor) i = i + 1 Wend End If ' Grupos de dos conductores i = 1 If (Module1.totalcondmultiples > 0) Then While (i <= Module1.totalcondmultiples) If (Module1.conductoresMultiples(i).tipo = "2condhoriz") Then With miconductor .Xi = (Module1.conductoresMultiples(i).coordx + _ Module1.conductoresMultiples(i).separacion / 2) .Yi = Module1.conductoresMultiples(i).coordy .intensidad = Module1.conductoresMultiples(i).intensidad1 .desfase = Module1.conductoresMultiples(i).desfase1 .linea = Module1.conductoresMultiples(i).linea End With total = añadeConductor(miconductor) i = i + 1 Else With miconductor .Xi = Module1.conductoresMultiples(i).coordx .Yi = Module1.conductoresMultiples(i).coordy + _ Module1.conductoresMultiples(i).separacion / 2 .intensidad = Module1.conductoresMultiples(i).intensidad1 .desfase = Module1.conductoresMultiples(i).desfase1 .linea = Module1.conductoresMultiples(i).linea End With total = añadeConductor(miconductor) i = i + 1 End If Wend End If ' Grupos de 3 conductores i = 1 If (Module1.total3cond > 0) Then While (i <= Module1.total3cond) If Module1.tresConductores(i).unoarriba = True Then With miconductor .Xi = Module1.tresConductores(i).coordx + _ Module1.tresConductores(i).d / 2 .Yi = Module1.tresConductores(i).coordy + _ Module1.tresConductores(i).h / 3 .intensidad = Module1.tresConductores(i).intensidad .desfase = Module1.tresConductores(i).desfase .linea = Module1.tresConductores(i).linea End With Else With miconductor .Xi = Module1.tresConductores(i).coordx .Yi = Module1.tresConductores(i).coordy + _ Module1.tresConductores(i).h * 2 / 3 .intensidad = Module1.tresConductores(i).intensidad .desfase = Module1.tresConductores(i).desfase .linea = Module1.tresConductores(i).linea End With End If total = añadeConductor(miconductor) i = i + 1 Wend End If ' Grupos de 4 conductores i = 1 If (Module1.total4cond > 0) Then While (i <= Module1.total4cond) ' conductor 1 With miconductor .Xi = Module1.cuatroConductores(i).coordx .Yi = Module1.cuatroConductores(i).coordy + _ Module1.cuatroConductores(i).distv .linea = Module1.cuatroConductores(i).linea .intensidad = Module1.cuatroConductores(i).intensidad1 .desfase = Module1.cuatroConductores(i).desfase1 End With total = añadeConductor(miconductor) i = i + 1 Wend End If End Function Function añadeConductor(unconductor As conductorFase) As Integer If (conductores = 0) Then ReDim conductoresActivos(1) conductoresActivos(1) = unconductor conductores = 1 Else conductores = conductores + 1 ReDim Preserve conductoresActivos(conductores) conductoresActivos(conductores) = unconductor End If añadeConductor = conductores End Function Sub ficherosMicampoNoGraficas() ' Primero nos creamos las fases equivalentes Campo.conductoresEquivalentes Dim contador As Integer ficherom = FreeFile ' Fichero 'fases.txt' ' Contiene una fase equivalente en cada fila ' Borramos fichero previo si es que existía If Len(Dir$(App.Path & "\calculos\fases.txt")) > 0 Then Kill (App.Path & "\calculos\fases.txt") ' Creamos el nuevo Open (App.Path & "\calculos\fases.txt") For Output As ficherom ' Grabamos todas las fases equivalentes, por filas contador = 1 While (contador <= conductores) cadena = conductoresActivos(contador).Xi & ";" cadena = cadena & conductoresActivos(contador).Yi & ";" cadena = cadena & conductoresActivos(contador).intensidad & ";" cadena = cadena & conductoresActivos(contador).desfase & ";" cadena = Replace(cadena, ",", ".") Print #ficherom, cadena contador = contador + 1 Wend Close ficherom ' Borramos los ficheros de lazos anteriores si existen If Len(Dir$(App.Path & "\calculos\activo.txt")) > 0 Then Kill (App.Path & "\calculos\activo.txt") If Len(Dir$(App.Path & "\calculos\pasivo.txt")) > 0 Then Kill (App.Path & "\calculos\pasivo.txt") contadorPasivo = 0 contadorActivo = 0 ' Si hay lazos pasivos seleccionados se copian a su archivo. If Module1.totalLazos > 0 Then Dim n As Integer n = 1 ficheropas = FreeFile Open (App.Path & "\calculos\pasivo.txt") For Output As ficheropas ' Recorremos todos los lazos que nos han marcado While (n <= UBound(Lazos)) ' Ahora escribimos 'pasivo.txt' con los lazos pasivos que se hayan dicho If (Lazos(n).pasivo = True And Lazos(n).Calcular = True) Then contadorPasivo = contadorPasivo + 1 cadenapas = Lazos(n).tipo & ";" ' Conductores que siempre aparecen cadenapas = cadenapas & Lazos(n).x1 & ";" & Lazos(n).y1 & ";" cadenapas = cadenapas & Lazos(n).x2 & ";" & Lazos(n).y2 & ";" ' Tercer conductor If (Lazos(n).tipo = "3" Or Lazos(n).tipo = "4") Then cadenapas = cadenapas & Lazos(n).x3 & ";" & Lazos(n).y3 & ";" Else cadenapas = cadenapas & "0;0;" End If ' Cuarto conductor If Lazos(n).tipo = "4" Then cadenapas = cadenapas & Lazos(n).x4 & ";" & Lazos(n).y4 & ";" Else cadenapas = cadenapas & "0;0;" End If ' R' y rgm cadenapas = cadenapas & CStr(CSng(Lazos(n).RConductor) / 1000) & ";" & _ Lazos(n).rgmConductor & ";" ' Valor de Xc1 cadenapas = cadenapas & Lazos(n).xc1 & ";" ' Valor de Xc2 If Lazos(n).tipo = "3" Then cadenapas = cadenapas & Lazos(n).xc2 & ";" Else cadenapas = cadenapas & "0;" End If ' Valor de Xc3 If (Lazos(n).tipo = "4" Or Lazos(n).tipo = "3") Then cadenapas = cadenapas & Lazos(n).xc3 & ";" Else cadenapas = cadenapas & "0;" End If ' Ahora grabaremos un 1 si Xc es en p.u. y 0 si no If Lazos(n).usaFc = True Then cadenapas = cadenapas & "1;" Else cadenapas = cadenapas & "0;" End If cadenapas = Replace(cadenapas, ",", ".") Print #ficheropas, cadenapas End If n = n + 1 Wend If contadorPasivo <> 0 Then Close ficheropas Else Close ficheropas Kill (App.Path & "\calculos\pasivo.txt") End If ficheroact = FreeFile Open (App.Path & "\calculos\activo.txt") For Output As ficheroact n = 1 While (n <= UBound(Lazos)) If (Lazos(n).pasivo = False And Lazos(n).Calcular = True) Then contadorActivo = contadorActivo + 1 cadenaact = Lazos(n).tipo & ";" ' Coordenadas conductores cadenaact = cadenaact & Lazos(n).x1 & ";" & Lazos(n).y1 & ";" cadenaact = cadenaact & Lazos(n).x2 & ";" & Lazos(n).y2 & ";" If (Lazos(n).tipo = "3" Or Lazos(n).tipo = "4") Then cadenaact = cadenaact & Lazos(n).x3 & ";" & Lazos(n).y3 & ";" Else cadenaact = cadenaact & "0;0;" End If If Lazos(n).tipo = "4" Then cadenaact = cadenaact & Lazos(n).x4 & ";" & Lazos(n).y4 & ";" Else cadenaact = cadenaact & "0;0;" End If ' R' y rgm ' cadena = cadena & Lazos(1).RConductor & ";" & _ Lazos(1).rgmconductor & ";" ' Intensidades y desfases cadenaact = cadenaact & Lazos(n).I1 & ";" & Lazos(n).theta1 & ";" If (Lazos(n).tipo = "3" Or Lazos(n).tipo = "4") Then cadenaact = cadenaact & Lazos(n).I2 & ";" & Lazos(n).theta2 & ";" Else cadenaact = cadenaact & "0;0;" End If cadena = Replace(cadenaact, ",", ".") Print #ficheroact, cadenaact End If n = n + 1 Wend If contadorActivo <> 0 Then Close ficheroact Else Close ficheroact Kill (App.Path & "\calculos\activo.txt") End If End If ' Finalmente el fichero datos.txt ' Nos cargamos uno anterior si lo hubiera If Len(Dir$(App.Path & "\calculos\datos.txt")) > 0 Then Kill (App.Path & "\calculos\datos.txt") ' Abrimos el fichero nuevo ficherom = FreeFile Open (App.Path & "\calculos\datos.txt") For Output As ficherom ' Primero frecuencia cadena = CStr(Principal.frecuencia) & ";" ' Ahora altura a la que se obtiene el campo cadena = cadena & "1" & ";" ' Ahora ponemos los limites de calculo cadena = cadena & "-100" & ";" & "100" & ";" & _ "0.25" & ";" cadena = Replace(cadena, ",", ".") Print #ficherom, cadena Close ficherom End Sub e-REdING. Biblioteca de la Escuela Superior de Ingenieros de Sevilla.


PROGRAMA DE DISEÑO DE LAZOS ACTIVOS/PASIVOS PARA AMORTIGUAMIENTO DEL CAMPO MAGNÉTICO EN LÃNEAS ELÉCTRICAS AÉREAS DE ALTA TENSIÓN

: Casas Pérez, José Eduardo De Las
: Ingeniería Industrial
Contenido del proyecto:
Directorio raíz  >  Programa  >  Codigo  >  Campo.bas