VERSION 5.00 Begin VB.Form SelLazo AutoRedraw = -1 'True BorderStyle = 1 'Fixed Single Caption = "Tipo de lazo" ClientHeight = 4935 ClientLeft = 45 ClientTop = 435 ClientWidth = 4665 LinkTopic = "Form1" LockControls = -1 'True MaxButton = 0 'False MinButton = 0 'False ScaleHeight = 4935 ScaleWidth = 4665 StartUpPosition = 2 'CenterScreen Begin VB.Frame Frame2 Caption = "Frecuencia de la red" Height = 735 Left = 120 TabIndex = 12 Top = 3600 Width = 4455 Begin VB.OptionButton Option7 Caption = "60 Hz." Height = 375 Left = 2760 TabIndex = 14 Top = 300 Width = 1095 End Begin VB.OptionButton Option6 Caption = "50 Hz." Height = 255 Left = 960 TabIndex = 13 Top = 360 Value = -1 'True Width = 1215 End End Begin VB.Frame Frame1 Caption = "Tipo" Height = 735 Left = 120 TabIndex = 9 Top = 120 Width = 4455 Begin VB.OptionButton Option5 Caption = "Pasivo" Height = 375 Left = 2640 TabIndex = 11 Top = 240 Value = -1 'True Width = 1695 End Begin VB.OptionButton Option4 Caption = "Activo" Height = 255 Left = 960 TabIndex = 10 Top = 300 Width = 1215 End End Begin VB.Frame Frame3 Caption = "Geometría" Height = 2535 Left = 120 TabIndex = 2 Top = 960 Width = 4455 Begin VB.OptionButton Option3 Height = 375 Left = 3550 TabIndex = 8 Top = 2100 Width = 375 End Begin VB.OptionButton Option2 Height = 375 Left = 2130 TabIndex = 7 Top = 2100 Width = 375 End Begin VB.OptionButton Option1 Height = 255 Left = 700 TabIndex = 6 Top = 2160 Value = -1 'True Width = 375 End Begin VB.PictureBox Picture3 Height = 1575 Left = 3000 Picture = "SelLazo.frx":0000 ScaleHeight = 1515 ScaleWidth = 1275 TabIndex = 5 Top = 360 Width = 1335 End Begin VB.PictureBox Picture2 Height = 1575 Left = 1560 Picture = "SelLazo.frx":13D5A ScaleHeight = 1515 ScaleWidth = 1275 TabIndex = 4 Top = 360 Width = 1335 End Begin VB.PictureBox Picture1 Height = 1575 Left = 120 Picture = "SelLazo.frx":27AB4 ScaleHeight = 1515 ScaleWidth = 1275 TabIndex = 3 Top = 360 Width = 1335 End End Begin VB.CommandButton Command2 Caption = "Cancelar" Height = 375 Left = 2640 TabIndex = 1 Top = 4440 Width = 1215 End Begin VB.CommandButton Command1 Caption = "Aceptar" Height = 375 Left = 840 TabIndex = 0 Top = 4440 Width = 1335 End End Attribute VB_Name = "SelLazo" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Option Explicit Dim mensaje As String Public conductor As String Public poste As String Private Sub Command1_Click() ' Comprobar que las fases estén bien definidas, y si es así ' hacer lo que proceda. En caso contrario construir ' un mensaje que informe de lo que falta por hacer. ' Comprobamos que las lineas son correctas (al menos deben ' tener 2 fases cada una). Dim condlinea1 As Integer Dim condlinea2 As Integer Dim i As Integer condlinea1 = 0 condlinea2 = 0 i = 1 If Module1.totalcond <> 0 Then While (i <= UBound(conductoresPictureBox)) If conductoresPictureBox(i).linea = 1 Then condlinea1 = condlinea1 + 1 Else condlinea2 = condlinea2 + 1 End If i = i + 1 Wend End If i = 1 If Module1.totalcondmultiples <> 0 Then While (i <= UBound(conductoresMultiples)) If conductoresMultiples(i).linea = 1 Then condlinea1 = condlinea1 + 1 Else condlinea2 = condlinea2 + 1 End If i = i + 1 Wend End If i = 1 If Module1.total3cond <> 0 Then While (i <= UBound(tresConductores)) If (tresConductores(i).linea = 1) Then condlinea1 = condlinea1 + 1 Else condlinea2 = condlinea2 + 1 End If i = i + 1 Wend End If i = 1 If Module1.total4cond <> 0 Then While (i <= UBound(cuatroConductores)) If (cuatroConductores(i).linea = 1) Then condlinea1 = condlinea1 + 1 Else condlinea2 = condlinea2 + 1 End If i = i + 1 Wend End If If Principal.manual = True Then ' Estamos en optimizacion manual. Da igual si hay líneas o no. ' Comprobar si existen lazos previos, y si es asi preguntar si se quieren borrar o no. If Module1.totalLazos > 0 Then Dim boton As Integer If Principal.idioma = "Español" Then mensaje = "Existen lazos en el proyecto. ¿Desea borrarlos?" Else mensaje = "There are loops already. Do you want to delete them?" End If boton = MsgBox(mensaje, vbQuestion + vbYesNo, "MitLoop") If boton = 6 Then ' Borrar Module1.totalLazos = 0 Erase Module1.Lazos End If End If ' Añadimos el lazo actual. If SelLazo.Option4.Value = True Then ' Si es activo If Option1.Value = True Then FormLazoActivo.tipo = 2 ElseIf Option2.Value = True Then FormLazoActivo.tipo = 3 ElseIf Option3.Value = True Then FormLazoActivo.tipo = 4 End If FormLazoActivo.conductor = conductor FormLazoActivo.poste = poste FormLazoActivo.Show vbModal Else ' Si es pasivo If Option1.Value = True Then FormLazoPasivo.tipo = 2 ElseIf Option2.Value = True Then FormLazoPasivo.tipo = 3 ElseIf Option3.Value = True Then FormLazoPasivo.tipo = 4 End If FormLazoPasivo.conductor = conductor FormLazoPasivo.poste = poste FormLazoPasivo.Show vbModal End If Else ' Ahora tenemos en condlinea1 y condlinea2 el total de ' fases que hay en cada una de las lineas. ' Si son cero o mayor que uno se puede llamar a la funcion ' de optimizacion ya que las configuraciones son en principio ' correctas If ((condlinea1 = 0 Or condlinea1 > 1) And (condlinea2 = 0 Or _ condlinea2 > 1) And Not (condlinea1 = 0 And condlinea2 = 0)) Then ' Creamos el fichero que va a usarse para pasar los datos a Pedro. Dim ficheroSalida As Integer ficheroSalida = FreeFile Open App.Path & "\optimizar.txt" For Output As ficheroSalida ' Grabamos la frecuencia de la red. Print #ficheroSalida, "f=" & Principal.frecuencia & ":" ' Ahora la configuracion de las fases originales. Dim conduct As Variant Dim yyy As Integer Dim linea As String yyy = 1 Campo.conductoresEquivalentes Print #ficheroSalida, "Conductores:" While (yyy <= UBound(Campo.conductoresActivos)) linea = CStr(Campo.conductoresActivos(yyy).Xi) & ";" linea = linea & CStr(Campo.conductoresActivos(yyy).Yi) & ";" linea = linea & CStr(Campo.conductoresActivos(yyy).intensidad) & ";" linea = linea & CStr(Campo.conductoresActivos(yyy).desfase) & ";" linea = linea & CStr(Campo.conductoresActivos(yyy).linea) & ":" Print #ficheroSalida, linea yyy = yyy + 1 Wend Print #ficheroSalida, "Obstaculos:" ' Y la configuracion de los obstaculos, pero pasamos solo las zonas prohibidas. ' Lineas Horizontales yyy = 1 If Module1.totalLineasHorizontales > 0 Then While (yyy <= UBound(Module1.LineasHorizontales)) linea = Module1.LineasHorizontales(yyy).altura Print #ficheroSalida, "Horizontal;" & CStr(linea) & ":" yyy = yyy + 1 Wend End If ' Obstaculos normales yyy = 1 If Module1.totalnorm > 0 Then While (yyy <= UBound(Module1.NormalesPictureBox)) linea = CStr(Module1.NormalesPictureBox(yyy).coordx _ - Module1.NormalesPictureBox(yyy).izquierda) & ";" linea = linea & CStr(Module1.NormalesPictureBox(yyy).coordx _ + Module1.NormalesPictureBox(yyy).anchura _ + Module1.NormalesPictureBox(yyy).derecha) & ";" linea = linea & "0;" linea = linea & CStr(Module1.NormalesPictureBox(yyy).altura _ + Module1.NormalesPictureBox(yyy).arriba) & ":" Print #ficheroSalida, linea yyy = yyy + 1 Wend End If ' Obstaculos elevados yyy = 1 If (Module1.totalelevados > 0) Then While (yyy <= UBound(ElevadosPictureBox)) linea = CStr(Module1.ElevadosPictureBox(yyy).coordx _ - Module1.ElevadosPictureBox(yyy).izda) & ";" linea = linea & CStr(Module1.ElevadosPictureBox(yyy).coordx _ + Module1.ElevadosPictureBox(yyy).anchura _ + Module1.ElevadosPictureBox(yyy).dcha) & ";" linea = linea & CStr(Module1.ElevadosPictureBox(yyy).distanciaAlSuelo) _ & ";" linea = linea & CStr(Module1.ElevadosPictureBox(yyy).distanciaAlSuelo _ + Module1.ElevadosPictureBox(yyy).inferior _ + Module1.ElevadosPictureBox(yyy).altura _ + Module1.ElevadosPictureBox(yyy).alturaprohibida) & ":" Print #ficheroSalida, linea yyy = yyy + 1 Wend End If Close ficheroSalida ' Borramos el fichero que devuelve la funcion de optimizacion ' si es que existe. If (Len(Dir$(App.Path & "\optimo.txt")) > 0) Then Kill (App.Path & "\optimo.txt") End If ' Llamamos a Pedro y esperamos su respuesta. 'Shell (App.Path & "\opt\optimiza.exe") ' Quitar la siguiente linea en el programa definitivo MsgBox "La funcion de optimización ha devuelto el óptimo.", vbInformation, "MitLoop" ' Nos quedamos esperando a que el proceso de optimizacion termine. While (Len(Dir$(App.Path & "\lazocond.txt")) = 0) Wend ' Una vez la funcion de optimización ha terminado, añadimos el lazo ' que nos proporciona a nuestro problema. ' Abrimos el fichero devuelto y copiamos su contenido a conductor. Dim fu As Integer Dim cond As String fu = FreeFile Open (App.Path & "\optimo.txt") For Input As fu Line Input #fu, cond ' En cond tenemos la configuración completa del lazo: posicion y conductor ' La sintaxis será: ' nºlazo;nºcond;x1;y1;...;xn;yn;usaFc;xc1;...;xc3:nombreconductor;R';rgm ' Se ponen los ":" para separar geometria de conductor Dim coma As Integer Dim comaanterior As Integer Dim parametro As String Dim iii As Integer Dim lazoOpt As lazo lazoOpt.numero = Module1.totalLazos + 1 lazoOpt.pasivo = True lazoOpt.automatico = True ' Obtenemos el numero de conductores coma = InStr(1, cond, ";") parametro = Trim(Mid(cond, 1, coma - comaanterior - 1)) Select Case parametro Case Is = 2 ' Lazo simple lazoOpt.tipo = "2" ' Obtenemos y grabamos coordenadas comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.x1 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.y1 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.x2 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.y2 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) If (parametro = True) Then lazoOpt.usaFc = True Else lazoOpt.usaFc = False End If comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.xc1 = parametro ' Nos vamos a por los datos del conductor comaanterior = InStr(comaanterior, cond, ":") + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.nombreConductor = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.RConductor = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.rgmConductor = parametro ' Añadimos el lazo al array ReDim Preserve Module1.Lazos(Module1.totalLazos + 1) Lazos(UBound(Lazos)) = lazoOpt Module1.totalLazos = Module1.totalLazos + 1 Case Is = 3 ' Lazo doble con conductor común lazoOpt.tipo = "3" ' Obtenemos y grabamos coordenadas comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.x1 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.y1 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.x2 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.y2 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.x3 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.y3 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) If (parametro = True) Then lazoOpt.usaFc = True Else lazoOpt.usaFc = False End If comaanterior = coma + 1 coma = InStr(comaanterior, cond, ":") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.xc1 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ":") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.xc2 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ":") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.xc3 = parametro ' Nos vamos a por los datos del conductor comaanterior = InStr(comaanterior, cond, ":") + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.nombreConductor = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.RConductor = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.rgmConductor = parametro ' Añadimos el lazo al array ReDim Preserve Module1.Lazos(Module1.totalLazos + 1) Lazos(UBound(Lazos)) = lazoOpt Module1.totalLazos = Module1.totalLazos + 1 Case Is = 4 ' Lazo doble lazoOpt.tipo = "4" ' Obtenemos y grabamos coordenadas comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.x1 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.y1 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.x2 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.y2 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.x3 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.y3 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.x4 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.y4 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) If (parametro = True) Then lazoOpt.usaFc = True Else lazoOpt.usaFc = False End If comaanterior = coma + 1 coma = InStr(comaanterior, cond, ":") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.xc1 = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ":") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.xc3 = parametro ' Nos vamos a por los datos del conductor comaanterior = InStr(comaanterior, cond, ":") + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.nombreConductor = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.RConductor = parametro comaanterior = coma + 1 coma = InStr(comaanterior, cond, ";") parametro = Trim(Mid(cond, comaanterior, coma - comaanterior)) lazoOpt.rgmConductor = parametro ' Añadimos el lazo al array ReDim Preserve Module1.Lazos(Module1.totalLazos + 1) Lazos(UBound(Lazos)) = lazoOpt Module1.totalLazos = Module1.totalLazos + 1 End Select Else If Principal.idioma = "Español" Then mensaje = "La configuración de las líneas no es correcta." Else mensaje = "Please correct lines configuration." End If MsgBox mensaje, vbExclamation, "MitLoop" End If End If Unload Me End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() If Principal.idioma = "Español" Then SelLazo.Caption = "Tipo de lazo" Frame1.Caption = "Tipo" Frame2.Caption = "Frecuencia de la red." Frame3.Caption = "Geometría" Else SelLazo.Caption = "Loop type" Frame1.Caption = "Type" Frame2.Caption = "Frequency." Frame3.Caption = "Geometry" End If ' Si hemos elegido optimizacion no podemos escoger lazo activo If Principal.manual = False Then Option5.Value = True Option4.Enabled = False End If 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: