ESCUELA POLITÉCNICA NACIONAL ESCUELA DE INGENIERÍA ELÉCTRICA SIMULACIÓN E IMPLEMENTACIÓN DE UN SISTEMA DE ESTABILIDAD EN BARCOS MEDIANTE UN MICROCONTROLADOR. PROYECTO PREVIO A LA OBTENCIÓN DEL TÍTULO DE INGENIERO EN ELECTRÓNICA Y CONTROL ANTONIO XAVIER REDÍN MUÑOZ DIRECTOR: MSc. RAMIRO VALENZUELA QUITO, FEBRERO DEL 2007 DECLARACIÓN Yo, Antonio Xavier Redín Muñoz, declaro que el trabajo aquí descrito es de mi autoría; que no ha sido previamente presentada para ningún grado o calificación profesional; y, que he consultado las referencias bibliográficas que se incluyen en este documento. La Escuela Politécnica Nacional, puede hacer uso de los derechos correspondientes a este trabajo, según lo establecido por la Ley de Propiedad Intelectual, por su Reglamento y por la normatividad institucional vigente. Antonio Xavier Redín Muñoz CERTIFICACIÓN Certifico que el presente trabajo fue desarrollado por Antonio Xavier Redín Muñoz, bajo mi supervisión. MSc. Ramiro Valenzuela DIRECTOR DEL PROYECTO AGRADECIMIENTO Más que un agradecimiento es una eterna gratitud a las personas que estuvieron junto a mí en todo este tiempo de desarrollo de mi proyecto de graduación, existen muchas personas que día a día me apoyaron, me presionaron para llegar este punto. Mi padre, es una de esas personas, es la que más molesto y molesto para que termine, para ser ahora padre, amigo y compañero de profesión, listo padre lo logré, muchas gracias, este triunfo es nuestro. Mi madre, quien con su preocupación me alentó a seguir, a luchar como lo hicimos hace algún tiempo y como lo hacemos ahora gracias. A la familia de mi padre, Mónica, Katty y mi hermano Alejito por soportarme durante un año día a día, gracias. A mis hermanos Mauricio, Estefanía y Sebastián quien entre chiste y chiste me dieron fuerzas para superarme, gracias. A mi novia Vero, que puedo decir gracias por aguantar mis mal genios, malas caras, gracias por compartir conmigo como lo hice contigo, te amo y gracias. A mi abuelita Normi quien siempre me dio su apoyo y rezó por mí para que todo salga bien, mis abuelitos desde el cielo Achito, Olguita y Alfonso, también la fuerza que me dieron desde el cielo me sirvió, gracias a ustedes. A Ramiro Valenzuela que con sus jalones de oreja y preocupación me ayudó en mucha medida a terminar esta gradita de mi vida, gracias. Antonio Xavier Redín Muñoz DEDICATORIA Es difícil dedicar este proyecto a una sola persona, siento en mi corazón que sin ti padre no lo hubiera logrado, gracias por tu presión, tu apoyo, tu ayuda y tus muecas, como lo dije este triunfo es nuestro, te quiero mucho. Vero, ahora entendí la preocupación por la que pasaste, y sé que me entendiste mejor, gracias por tu apoyo; también va para ti, entre tú y yo, se acabo la tesis, seguimos al siguiente paso. Madre, este es el fruto de tu esfuerzo durante años, gracias por esforzarte para siempre estar a nuestro lado, te quiero mucho, gracias por llevarme a ser lo que soy. No puedo dejar a toda mi familia directa e indirecta de lado, este trabajo es para ustedes, gracias. Los quiero mucho. I CONTENIDO RESUMEN…………………………………………………………………………………….X PRESENTACIÓN…………………………………………………………………………...XII CAPÍTULO 1 INTRODUCCIÓN 1. INTRODUCCIÓN ................................................................................................. 1 1.1. FUNDAMENTO TEÓRICO (PRINCIPIOS FÍSICOS) .................................... 1 1.1.1. HIDROSTÁTICA .................................................................................... 2 1.1.1.1. PRESIÓN HIDROSTÁTICA ............................................................ 3 1.1.1.2. VASOS COMUNICANTES ............................................................. 4 1.1.2. PRINCIPIO DE ARQUÍMIDES ............................................................... 5 1.1.2.1. PESO APARENTE ......................................................................... 6 1.1.2.2. CENTRO DE GRAVEDAD (C.G.)................................................... 8 1.1.2.3. CENTRO DE EMPUJE ................................................................... 8 1.1.3. EQUILIBRIO DE CUERPOS SUMERGIDOS Y FLOTANTES ............. 10 1.1.4. BARCOS, ESTABILIDAD Y FLOTABILIDAD....................................... 12 1.2. 1.1.4.1. CAPACIDAD Y PESO .................................................................. 13 1.1.4.2. EQUILIBRIO Y FLOTABILIDAD ................................................... 14 1.1.4.3. ESTRUCTURA ............................................................................. 14 1.1.4.4. ESTANQUEIDAD ......................................................................... 15 1.1.4.5. ESTABILIDAD .............................................................................. 15 CONOCIMIENTOS BÁSICOS DE INGENIERÍA NAVAL ............................ 16 II 1.3. ESTIBA ....................................................................................................... 18 CAPÍTULO 2 SIMULACIÓN DEL SISTEMA 2. SIMULACIÓN DEL SISTEMA ............................................................................ 20 2.1. NORMAS DE CARGA................................................................................. 20 2.2. CASOS EXTREMOS DE ESCORAMIENTO .............................................. 22 2.3. PANTALLA DE SIMULACIÓN .................................................................... 23 2.4. PROCESO MANUAL .................................................................................. 26 2.5. CASOS ESPECIALES ................................................................................ 28 2.5.1. PROCESO AUTOMÁTICO .................................................................. 29 2.5.2. ESCORAR A POPA............................................................................. 30 2.5.3. ESCORAR A PROA............................................................................. 32 CAPÍTULO 3 DISEÑO Y CONSTRUCCIÓN DEL HARDWARE 3. DISEÑO Y CONSTRUCCIÓN DEL HARDWARE .............................................. 34 3.1. CONSTRUCCIÓN DEL BARCO ................................................................. 34 3.1.1. DISEÑO DE LOS TANQUES DE LASTRE.......................................... 36 3.1.2. CONSTRUCCIÓN DE LOS TANQUES DE LASTRE .......................... 37 3.1.3. TANQUE CENTRAL DE ABASTECIMIENTO...................................... 38 3.1.4. BOMBAS DE SUCCIÓN DE AGUA ..................................................... 39 3.1.5. CAÑERÍAS........................................................................................... 39 III 3.2. HARDWARE ELECTRÓNICO .................................................................... 41 3.2.1. SENSORES DE INCLINACIÓN ........................................................... 41 3.2.2. CIRCUITO DE ENCENDIDO Y APAGADO DE LAS BOMBAS ........... 44 3.2.3. SENSORES DE VACÍO....................................................................... 46 3.2.4. SENSORES DE LLENO ...................................................................... 47 3.2.5. LEDS INDICADORES.......................................................................... 49 3.2.6. HARDWARE DE COMUNICACIÓN (MAX232).................................... 51 3.2.6.1. PANTALLA DE VISUALIZACIÓN ................................................. 52 3.2.7. CABLEADO ......................................................................................... 54 3.2.8. PIC....................................................................................................... 59 3.3. 3.2.8.1. LA ALIMENTACIÓN ..................................................................... 63 3.2.8.2. EL RELOJ..................................................................................... 63 CONTENEDORES DE CARGA .................................................................. 66 CAPÍTULO 4 DESARROLLO DEL SOFTWARE 4. DESARROLLO DEL SOFTWARE ..................................................................... 68 4.1. CONFIGURACIÓN DE LOS PUERTOS ..................................................... 68 4.2. IDENTIFICADORES DE VARIABLES DEL PROGRAMA........................... 72 4.3. FLUJOGRAMA GENERAL DEL PROGRAMA............................................ 74 4.4. SUBRUTINAS PRIMARIAS DE NIVELACIÓN............................................ 77 4.5. SUBRUTINAS SECUNDARIAS DE NIVELACIÓN...................................... 80 4.6. OTRAS SUBRUTINAS UTILIZADAS EN EL PROGRAMA......................... 91 4.6.1. APAGA: ............................................................................................... 91 IV 4.6.2. VACIA_TANQUES:.............................................................................. 91 4.6.3. SUBRUTINAS QUE CAPTURAN LOS DATOS ANALÓGICOS .......... 92 4.6.4. COMP_OK Y COMP_NOK .................................................................. 93 4.6.5. ESTADO_BOMBAS............................................................................. 93 4.6.6. SUBRUTINAS DE INFORMACIÓN DE LA CANTIDAD DE LASTRE EN LOS TANQUES.................................................................................................. 94 CAPÍTULO 5 PRUEBAS Y RESULTADOS 5. PRUEBAS Y RESULTADOS ............................................................................. 96 5.1. TIEMPOS DE LLENADO Y VACIADO........................................................ 96 5.2. ÁNGULOS DE ACTIVACIÓN DE LOS SENSORES DE INCLINACIÓN..... 98 5.3. GRADOS DE INCLINACIÓN CON CARGAS ESPECÍFICAS..................... 99 5.4. OTROS FACTORES A CONSIDERAR..................................................... 106 5.5. COMPARACIÓN DEL COMPORTAMIENTO DEL BARCO CONSTRUIDO RESPECTO A LA SIMULACIÓN REALIZADA. ................................................... 107 CAPÍTULO 6 CONCLUSIONES Y RECOMENDACIONES 6. CONCLUSIONES Y RECOMENDACIONES ................................................... 109 6.1. CONCLUSIONES ..................................................................................... 109 6.2. RECOMENDACIONES ............................................................................. 112 V ÍNDICE DE FIGURAS CAPÍTULO 1 Fig. 1. 1 Sistema de Vasos Comunicantes, la presión en el punto A es igual que la del punto B. .......................................................................................................... 5 Fig. 1. 2 Ubicaciones del centro de empuje (c) y centro de gravedad (C.G.) ............ 10 Fig. 1. 3 Buque en equilibrio, y buque enderezándose ............................................. 11 Fig. 1. 4 Popa, Proa, Estribor y Babor....................................................................... 18 Fig. 1. 5 Línea de flotación, obra viva y muerta......................................................... 18 CAPÍTULO 2 Fig. 2. 1 Estibas mal realizadas................................................................................. 22 Fig. 2. 2 Escora a babor 22 grados ........................................................................... 23 Fig. 2. 3 Pantalla de simulación................................................................................. 24 Fig. 2. 4 Al hecer click en botón “Inicio de Operación” .............................................. 27 Fig. 2. 5 Colocada la carga y click en el botón “Evaluar”........................................... 27 Fig. 2. 6 Una vez hecho click en “Nivelar”, barco nivelado........................................ 28 Fig. 2. 7 Pantalla de proceso automático .................................................................. 29 Fig. 2. 8 Escorar a popa, carga normal ..................................................................... 30 Fig. 2. 9 Escorar a popa, carga extra ........................................................................ 31 Fig. 2. 10 Escora a proa, carga normal ..................................................................... 32 VI Fig. 2. 11 Escora a proa, carga extra ........................................................................ 33 CAPÍTULO 3 Fig. 3. 1 Barco construido.......................................................................................... 35 Fig. 3. 2 Tanques de lastre y abastecimiento ............................................................ 37 Fig. 3. 3 Diagrama del tanque de lastre con su tapa ................................................. 38 Fig. 3. 4 Tanque de abastecimiento central............................................................... 38 Fig. 3. 5 Bombas de succión de agua ....................................................................... 39 Fig. 3. 6 Cañería desde tanque de abasto a tanques de lastre ................................. 40 Fig. 3. 7 Cañerías para el desfogue de agua de los tanques de lastre ..................... 40 Fig. 3. 8 Ampollas de mercurio.................................................................................. 41 Fig. 3. 9 Circuito de sensores de inclinación ............................................................. 42 Fig. 3. 10 Ubicación de los sensores de inclinación .................................................. 43 Fig. 3. 11 (a) Sensor de inclinación Babor y Estribor (b) Sensor de Proa (c) Sensor de Popa.............................................................................................................. 43 Fig. 3. 12 Circuito de detección de inclinación .......................................................... 44 Fig. 3. 13 Circuito de control de bombas................................................................... 44 Fig. 3. 14 Circuito de funcionamiento de la bomba con sensor de vacío .................. 46 Fig. 3. 15 Sensores infrarrojos .................................................................................. 47 Fig. 3. 16 Circuito de control de sensores de lleno.................................................... 48 Fig. 3. 17 Hardware diseñado para tapar la luz infrarroja del sensor de lleno........... 49 Fig. 3. 18 LEDS indicadores...................................................................................... 50 Fig. 3. 19 LED Azul indicador de compensación ....................................................... 50 Fig. 3. 20 Circuito electrónico del MAX232 ............................................................... 51 VII Fig. 3. 21 Pantalla de bienvenida .............................................................................. 52 Fig. 3. 22 Pantalla de visualización cuando no existe comunicación serial............... 53 Fig. 3. 23 Pantalla de visualización con comunicación establecida........................... 54 Fig. 3. 24 Cables de 40 hilos ..................................................................................... 55 Fig. 3. 25 (a) Tipo de entradas en la placa (b) Conexión de cables tipo sánduche ... 56 Fig. 3. 26 Adaptador donde se encuentran dos conectores machos de 40 pines ..... 58 Fig. 3. 27 Puente principal de control ........................................................................ 58 Fig. 3. 28 Distribución de pines del PIC .................................................................... 62 Fig. 3. 29 Conexión del Reloj .................................................................................... 64 Fig. 3. 30 Diagrama del circuito de control completo................................................. 65 Fig. 3. 31 Contenedor estándar................................................................................. 66 Fig. 3. 32 Contenedores en plataforma vista lateral .................................................. 67 Fig. 3. 33 Contenedores en plataforma vista superior............................................... 67 Fig. 3. 34 Contenedores en plataforma interna proa y popa ..................................... 67 CAPÍTULO 5 Fig. 5. 1 Inclinación para activación de los sensores de babor y estribor................. 98 Fig. 5. 2 Inclinación para activación de los sensores de popa y proa....................... 99 Fig. 5. 3 Distribución de filas y columnas en la nave.............................................. 100 Fig. 5. 4 Cálculo de ángulo de inclinación .............................................................. 101 VIII ÍNDICE DE TABLAS CAPÍTULO 2 Tabla 2. 1 Contenedores........................................................................................... 24 CAPÍTULO 3 Tabla 3. 1 Distribución de señales en el cable plano ................................................ 55 Tabla 3. 2 Conexiones de la placa de las bombas de los tanques de lastre ............. 56 Tabla 3. 3 Conexiones de la placa de las bombas de suministro.............................. 57 Tabla 3. 4 Conexiones de los sensores de inclinación.............................................. 57 Tabla 3. 5 Entradas de sensores de lleno en la placa............................................... 57 Tabla 3. 6 Características del PIC 16F877A ............................................................. 59 Tabla 3. 7 Puertos de las bombas de desfogue ........................................................ 60 Tabla 3. 8 Puertos de las bombas de suministro....................................................... 60 Tabla 3. 9 Puertos de las entradas de los sensores de lleno .................................... 61 Tabla 3. 10 Puertos de los sensores de vacío........................................................... 61 Tabla 3. 11 Puertos de sensores de viraje, leds e interrupción ................................. 62 CAPÍTULO 4 Tabla 4. 1 Puerto B ................................................................................................... 70 Tabla 4. 2 Puerto C ................................................................................................... 71 IX Tabla 4. 3 Puerto D ................................................................................................... 72 Tabla 4. 4 Variables usadas en el programa ............................................................. 73 Tabla 4. 5 Primera Opción......................................................................................... 89 Tabla 4. 6 Segunda Opción....................................................................................... 89 Tabla 4. 7 Tercera Opción......................................................................................... 90 Tabla 4. 8 Cuarta Opción .......................................................................................... 90 Tabla 4. 9 Cadena de Estado de Bombas................................................................. 93 Tabla 4. 10 Cadena de información del estado de tanques de lastre........................ 94 CAPÍTULO 5 Tabla 5. 1 Tiempos de llenado .................................................................................. 97 Tabla 5. 2 Tiempos de vaciado ................................................................................. 97 Tabla 5. 3 Grados de inclinación en la línea de crujía (Plataforma Popa)............... 101 Tabla 5. 4 Grados de inclinación en la línea de crujía (Plataforma Proa)................ 102 Tabla 5. 5 Grados de inclinación en punto medio entre línea de crujía y banda (Plataforma Popa) ............................................................................................ 103 Tabla 5. 6 Grados de inclinación en punto medio entre línea de crujía y banda (Proa) ......................................................................................................................... 103 Tabla 5. 7 Grados de inclinación en las bandas (Plataforma Proa)......................... 104 Tabla 5. 8 Grados de inclinación en las bandas (Plataforma Proa)......................... 105 X RESUMEN El presente proyecto de titulación SISTEMA DE “SIMULACIÓN E IMPLEMENTACIÓN DE UN ESTABILIDAD EN BARCOS MEDIANTE UN MICROCONTROLADOR”, consta de seis capítulos, los cuales se detallan a continuación. En el primer capítulo, Introducción, se plantea el problema de estabilidad en barcos de carga, explicando los conceptos físicos que intervienen en este proceso, además se exponen normas importantes de los principios de estabilidad y carga de buques en puerto, también se incluyen conceptos básicos de ingeniería naval que se utilizarán en el presente proyecto. Para el segundo capítulo se ha destinado la simulación, se propone dar una explicación teórica del funcionamiento del sistema de compensación de estabilidad, para luego poner en marcha una simulación, acorde con las respectivas normas y reglas estipuladas en el primer capítulo. En el tercer capítulo se encuentra el desarrollo del hardware, donde se explica cómo se realizó la construcción del barco, debido a que no se pudo comprar uno hecho con las medidas necesarias, las adecuaciones que se realizaron, el funcionamiento de los sensores, bombas y tanques, además del circuito de control. El desarrollo del software se presenta en el cuarto capítulo, en éste se detallan los comandos, rutinas, puertos utilizados por el pic; dando, claro está, una explicación XI de los distintos casos de inclinación que se pueden producir en la embarcación durante la estiba y cuáles son las acciones a tomar. Además los resultados de las pruebas de llenado y vaciado de tanques, ángulos de inclinación con ciertas cargas, ángulo en el cual los sensores de nivelación se activan y una comparación entre la simulación y la nave construida, se encuentra en el capítulo quinto titulado Pruebas y Resultados. En el capítulo 6 se presentan las conclusiones y recomendaciones del proyecto, una vez realizadas las pruebas. XII PRESENTACIÓN En la Ingeniería Naval siempre ha sido una preocupación grande la estabilidad de los barcos, sin importar el tipo de embarcación que sea; la idea general se ha mantenido en construir naves en las cuales el centro de gravedad se encuentre lo más bajo posible, para asegurar la horizontalidad, con este propósito toda la maquinaria pesada se trata de colocar lo más cercano posible al suelo. En las embarcaciones de carga, se tienen normas, las cuales ayudan a mantener la estabilidad, como: colocar siempre primero la carga de las bodegas internas, al ubicar cargas tratar de realizar entre ellas una compensación autónoma, es decir ubicarlas de tal forma que anulen el ángulo de inclinación que produjo una de éstas, sin embargo a pesar de cumplir con todas las normas, no siempre la nave queda nivelada, por lo que es necesario un sistema de control de estabilidad, que asegure a la embarcación salir de puerto sin escorar. En los barcos de carga se tienen tanques ubicados en el casco de la nave y a través de cañerías o ductos, se hace el traslado de lastre (agua de mar, combustible, aceite) desde o hacia un determinado tanque para lograr a la nivelación. Este proceso se lo realiza abriendo o cerrando válvulas (automáticas y manuales). En el presente Proyecto de Titulación, se hace el trabajo de compensación con un tanque central de abastecimiento, el mismo que está suministrado siempre con agua (simulando lastre), además se encuentran cuatro tanques ubicados en cada extremo del barco, éstos reciben agua desde el tanque central y desfogan el lastre hacia el XIII mar, hasta lograr la compensación. Para poder introducir o desfogar agua de los tanques se tienen 8 bombas de succión de agua, cuatro de las cuales se encuentran en el tanque central y las restantes en los 4 tanques de lastre. El control de nivelación automático se lo realiza a través del PIC 16F877A, en él se toman las acciones a realizar al receptar la señal que provienen de los sensores de lleno y vacio de los tanques de lastre; así como de los sensores de inclinación. Dentro de las rutinas de acción se encuentra el encender o apagar las bombas necesarias hasta llegar a la horizontalidad. Se dispone de una simulación la cual pretende dar una idea clara del objetivo del proyecto, además una pantalla de visualización en la cual se pueden observar el accionamiento de las bombas y la inclinación que se ha producido. Para poder medir la inclinación, se usan sensores de mercurio normalmente abiertos; al momento en que se produce el desnivel, uno o dos sensores se activan indicando hacia donde es la desviación, se habla de dos sensores activados por los casos combinados por ejemplo, proa-estribor. Se realiza además la detección de lleno y vacío de los tanques, en el primer caso con sensores infrarrojos, que al subir una bandera debido al aumento de agua cortan la señal, enviando la instrucción de lleno y para el segundo caso, se lo realiza por diferencia de voltaje que producen las bombas al trabajar con y sin agua. Esta señal llegará al puerto analógico del PIC y al realizar una comparación se indica si existe o no agua en el tanque. XIV Las desviaciones se las realiza colocando pesos (simulando contenedores) en distintas posiciones de la embarcación, para poder observar los distintos casos de inclinación que normalmente se dan en las embarcaciones. XV CAPÍTULO 1 INTRODUCCIÓN 1 1. INTRODUCCIÓN Los líquidos no presentan ninguna resistencia a cambiar de forma y adoptar la del recipiente que los contiene, pero sí presentan una gran resistencia a variar su volumen por la acción de una fuerza que actúe sobre ellos. En este capítulo se trata de dar una idea general de los principios básicos que se necesitan saber para entender el por qué los barcos flotan, cómo estabilizarlos, equilibrarlos, etc. Además dar una breve explicación de ciertos términos empleados en la ingeniería naval y por supuesto normas de carga en las naves. 1.1. FUNDAMENTO TEÓRICO (PRINCIPIOS FÍSICOS) Los barcos flotan gracias al principio de Arquímedes, ley física que establece que cuando un objeto se sumerge total o parcialmente en un líquido, éste experimenta un empuje hacia arriba igual al peso del líquido desalojado. La mayoría de las veces se aplica al comportamiento de los objetos en agua, y explica por qué los objetos flotan o se hunden y por qué parecen ser más ligeros en este medio. El concepto clave de este principio es el empuje, que es la fuerza que actúa hacia arriba reduciendo el peso aparente del objeto cuando éste se encuentra en el agua. 2 Un objeto flota si su densidad1 media es menor que la densidad del agua. Si éste se sumerge por completo, el peso del agua que desplaza (y, por tanto, el empuje) es mayor que su propio peso, y el objeto es impulsado hacia arriba y hacia fuera del agua hasta que el peso del agua desplazada por la parte sumergida sea exactamente igual al peso del objeto flotante. Así, un bloque de madera cuya densidad sea 1/6 de la del agua, flotará con 1/6 de su volumen sumergido dentro del agua, ya que en este punto el peso del fluido desplazado es igual al peso del bloque. Por el principio de Arquímedes, los barcos flotan más bajos en el agua cuando están muy cargados (ya que se necesita desplazar mayor cantidad de agua para generar el empuje necesario). Además, si van a navegar en agua dulce no se pueden cargar tanto como si van a navegar en agua salada, ya que el agua dulce es menos densa que el agua de mar y, por tanto, se necesita desplazar un volumen de agua mayor para obtener el empuje necesario (el barco se hunde más). 1.1.1. HIDROSTÁTICA El término hidrostática se refiere al estudio de los fluidos en reposo. Un fluido (líquido o gas) es una sustancia que puede escurrir fácilmente y que puede cambiar de forma debido a la acción de pequeñas fuerzas. Los fluidos que existen en la naturaleza siempre presentan una especie de fricción interna o viscosidad2 que complica un poco el estudio de su movimiento. Sustancias 1 Es la relación entre su masa y su volumen, o sea, ρ=m/V. 2 Rozamiento interno de las capas líquidas al deslizarse unas respecto a otras. 3 como el agua y el aire presentan muy poca viscosidad, mientras que la miel y la glicerina tienen una viscosidad elevada. 1.1.1.1. Presión Hidrostática Primero, se mencionará que la presión P es producida por una fuerza F, perpendicular a una superficie y distribuida sobre su área A, es decir, presión es la relación entre la magnitud de F y el valor del área A: P=F/A Con respecto a la hidrodinámica, se analiza un recipiente que contiene un líquido en equilibrio, donde todos los puntos en el interior del líquido están sometidos a una presión cuyo valor depende exclusivamente de su profundidad o distancia vertical a la superficie libre del líquido. Por lo tanto, se supone un punto a la profundidad h en un líquido cuya densidad es ρ, la presión hidrostática en dicho punto es: P = ρgh. Por tanto, la presión hidrostática sólo depende de la profundidad y es independiente de la orientación de la superficie. Para calcular la presión total en cualquier punto del interior del líquido, es necesario añadir a la presión hidrostática cualquier presión P que se ejerza sobre la superficie del líquido, o sea: P(total) = P + ρgh Por la definición de presión, vemos que su unidad debe estar dada por la relación entre una unidad de fuerza y una unidad de área. En el sistema internacional (S.I.) la 4 unidad de presión será N/m2 = Pa, en el sistema C.G.S., la presión viene dada en dinas/cm2 = bar. Frecuentemente se usan el gf/cm2, la lbf/pulg2 y mm de Hg.3 Con respecto a la presión atmosférica, el aire, como cualquier sustancia cercana a la Tierra, es atraído por ella; es decir, el aire tiene peso. Debido a esto, la capa atmosférica que envuelve a la Tierra y que alcanza una altura de decenas de kilómetros, ejerce una presión sobre los cuerpos sumergidos en ella. En todos los planetas con atmósfera existe una presión atmosférica con cierto valor; en la luna, como no hay atmósfera, no existe presión atmosférica, en la tierra esta presión tiene un valor de 76 cm Hg = 1.01 * 105 N/m2 = 1 atmósfera. En el presente Proyecto de Titulación, se trabaja con un barco de carga (a escala) que realiza un proceso de nivelación automática, que se acciona al colocar la carga sobre la superficie del barco en diferentes zonas del mismo, razón por la cual, se ha creído necesario mencionar que la máxima presión que el buque soporta es de [Pa], valor que depende de la carga máxima que soporta el buque; en la vida real, cada barco posee valores de presión máxima o carga máxima para agua dulce y para agua salada, dato que es proporcionado por el fabricante. 1.1.1.2. Vasos Comunicantes Para la explicación se consideran dos recipientes que no necesitan ser del mismo tamaño, ni poseer la misma forma y cuyas bases se encuentran unidas por un tubo 3 1Pa = 1 Pascal, 1bar =1 baria 5 Fig.1.1. Se dice que tales vasijas son “vasos comunicantes”. Al colocar cualquier líquido en estos vasos, se observará que ambos vasos serán llenados hasta el mismo nivel. Los puntos A y B, situados en un mismo nivel horizontal, estarán sometidos a presiones iguales (equilibrio). Fig. 1. 1 Sistema de Vasos Comunicantes, la presión en el punto A es igual que la del punto B. Siendo ρ la densidad del líquido, hA y hB alturas, pa presión atmosférica y PA y PB las presiones sobre los puntos A y B, podemos escribir: PA = pa + ρghA PB = pa + ρghB 1.1.2. PRINCIPIO DE ARQUÍMIDES Cuando sumergimos un cuerpo sólido en un líquido, éste ejerce sobre el cuerpo una fuerza de sustentación, es decir, una fuerza dirigida hacia arriba que tienda a impedir 6 que el cuerpo se hunda en el líquido. Esta fuerza es también la que hace que una piedra parezca más ligera cuando la sumergimos en el agua o en algún otro líquido. Tal fuerza que es vertical y está dirigida hacia arriba, se denomina empuje ascendente del líquido sobre el cuerpo sumergido. El empuje es igual al peso del volumen de líquido desplazado, y se supone está aplicado en un punto llamado centro de empuje, que coincide con el centro de gravedad (C.G.) del sólido, cuando el cuerpo está en reposo. El empuje se calcula por la fórmula: E = Vc dl g = Vc ρl Donde Vc es el volumen del cuerpo sumergido, dl la densidad del líquido y ρl es el peso específico4 del líquido. 1.1.2.1. Peso Aparente Todo cuerpo en contacto con un líquido está siempre sometido a la acción de dos fuerzas por lo menos, que tienen direcciones opuestas, su peso P hacia abajo y el empuje E del líquido. El peso aparente (R) del cuerpo cuando se encuentra totalmente sumergido es la fuerza resultante hacia abajo sobre el cuerpo, o sea: R=P–E 4 El peso específico de una sustancia se define como el peso por unidad de volumen, se calcula al dividir el peso de la sustancia entre el volumen que está ocupa (Pe=W/V). 7 Un cuerpo en el interior de un líquido irá al fondo (R>0) si su peso es mayor que el empuje (P>E), lo cual ocurre siempre que el cuerpo tenga una densidad mayor que el líquido. Quedará en equilibrio en el interior del líquido (R=0) si su peso es igual al empuje (P=E), lo cual ocurre cuando la densidad del cuerpo es igual a la del líquido. Finalmente el cuerpo tenderá a moverse hacia arriba, acercándose a la superficie libre (R<0), si su peso es menor que el empuje (P<E) lo cual ocurre cuando el cuerpo tiene una densidad menor que el líquido. En los cuerpos flotantes el empuje debido a la porción sumergida es igual al peso del cuerpo (P=E) y por tanto, el peso aparente es cero. Así, por ejemplo, como la densidad del hielo es menor que la del agua, flota en ella de manera que en un témpano de hielo los 9/10 de su volumen están sumergidos y sólo emerge 1/10 del mismo lo cual hace que sea tan extremadamente peligrosa la navegación en las regiones donde hay témpanos. El buque a escala utilizado en el presente Proyecto de Titulación, posee un peso aparente de [N], dato encontrado a partir de los valores del peso del buque y del empuje (fuerza producida al ser introducido el barco en la piscina de prueba). El valor del peso es de [N] (medido con el tanque central lleno de agua), mientras que el empuje es de [N] (valor encontrado a partir del volumen desalojado por la piscina al introducir el barco, la densidad del líquido que es de 1 g/cm3 y la gravedad que es de 9,8 m/s2). 8 1.1.2.2. Centro de Gravedad (C.G.) Centro de gravedad (C.G.), es el punto de aplicación del peso del cuerpo (es como que la Tierra pescara al cuerpo de ese punto para atraerlo hacia su centro), y que es el mismo, sea cual sea la posición del cuerpo. Para determinar el centro de gravedad hay que tener en cuenta que toda partícula de un cuerpo situada cerca de la superficie terrestre está sometida a la acción de una fuerza, dirigida verticalmente hacia el centro de la Tierra, llamada fuerza gravitatoria. La ubicación del centro de gravedad (C.G.) depende de la forma del cuerpo, pudiendo estar también fuera o dentro del cuerpo. Por ejemplo, el centro de gravedad de una esfera maciza o hueca está en el centro de la esfera; el centro de gravedad de un triángulo está en la intersección de las medianas de gravedad; mientras que el centro de gravedad de un anillo está en el centro del anillo. 1.1.2.3. Centro de Empuje La flotabilidad está relacionada con desplazamiento (el cual está relacionado con el volumen externo de un objeto tridimensional). Considere un cubo con paredes que tiene una masa X. El centro de gravedad está en el centro del cubo. En este caso, el centro de flotabilidad del cubo es realmente el mismo que el centro de gravedad. Si se coloca una chapa metálica gruesa, de masa X, en el interior del cubo (de igual masa X), ahora, el centro de gravedad se mueve para abajo. Sin embargo, el centro de empuje depende del volumen, y no de la masa, por eso el centro de empuje 9 permanece en el centro del cubo. Esto demuestra la importancia de mantener el centro de gravedad debajo del centro de empuje para evitar que zozobre. Si considera un barco, la forma (y por lo tanto el volumen) es mucho más complicada que la del cubo. El barco se asienta más abajo en el agua a medida que se le adiciona más masa, pero si la masa no es agregada en el centro de empuje (o centro del volumen) cambiará la estiba (o actitud del barco al nivel del agua). Como ya se mencionó anteriormente, el empuje es la fuerza que todo fluido ejerce sobre un cuerpo cuando éste se sumerge en él (su valor es el peso de fluido desalojado). Si se llena de un fluido (agua) la parte sumergida, el cuerpo formado (imaginariamente) tendría un centro de gravedad, ése es el punto de aplicación del empuje. Nótese que no tiene por qué coincidir con el centro de gravedad del cuerpo real (sobre el cuerpo actúan dos fuerzas el empuje y el peso del cuerpo, que no tienen en principio el mismo valor ni están aplicadas en el mismo punto). Por ejemplo, considérese una esfera con la mitad superior de madera y la inferior de plomo. El centro de gravedad del cuerpo estaría en el interior de la zona de plomo mientras que el centro de empuje estaría en el centro de la esfera. Esto es importante a la hora de construir los barcos, pues si el centro de gravedad estuviera por encima del centro de empuje, cualquier ola haría volcar el barco. Si, por el contrario, está por debajo, ambas fuerzas, empuje y peso, crearían un par de fuerzas restauradoras que enderezaría la nave. Por esta razón se ha de procurar que los motores, carga, etc. (partes pesadas del barco) estén lo más abajo posible. 10 1.1.3. EQUILIBRIO DE CUERPOS SUMERGIDOS Y FLOTANTES Todo cuerpo en el interior de un líquido en equilibrio está sometido a dos fuerzas, su peso y el empuje, que tienen direcciones opuestas. Para que el cuerpo esté en equilibrio, las dos fuerzas deben ser iguales y directamente opuestas (E=P) lo cual requiere que el centro de empuje c y el centro de gravedad C.G. se encuentren en una misma vertical (Fig. 1.2). Si el centro de empuje está más alto que el de gravedad, el equilibrio es estable, si ambos coinciden es indiferente y si está más bajo es inestable. Fig. 1. 2 Ubicaciones del centro de empuje (c) y centro de gravedad (C.G.) Aún cuando en los cuerpos flotantes también es necesario para el equilibrio que ambos centros estén en la misma vertical, la estabilidad no requiere a veces que el empuje esté más alto que el de gravedad. En la figura Fig. 1.3 se ha representado un buque en equilibrio, se observará que el centro de gravedad está más alto que el de empuje, lo cual es común a todos los buques en los que la superestructura u obra muerta eleva extraordinariamente el centro de gravedad. No obstante el equilibrio es estable. Supongamos en efecto, que el buque se inclina con relación a la vertical. Como la forma geométrica de la porción sumergida ha variado, el centro de empuje se ha desplazado a la posición c´. En estas condiciones el barco está sometido a un 11 par de fuerzas (P, E) que tiende a poner su eje de simetría nuevamente vertical llevándolo a su posición de equilibrio. E Fig. 1. 3 Buque en equilibrio, y buque enderezándose5 Se llama metacentro al punto de intersección, cuando el cuerpo está inclinado, de la vertical que pasa por el centro de empuje con una recta que pasando por el centro de gravedad del cuerpo es vertical cuando está en equilibrio. En la figura es m. Se nota entonces que el par (P, E) tiende a enderezar el buque únicamente porque m está más alto que C.G. Si m estuviera más bajo que el centro de gravedad el par (P, E) haría que el barco se inclinara más aún hasta que diera una vuelta completa. Un cuerpo flotante, tal como un barco, está en equilibrio estable si el metacentro está más alto que el centro de gravedad. En un barco la distancia metacéntrica (distancia medida del metacentro hacia el C.G.) debe tener el menor valor posible para que el balanceo sea lento obteniéndose así el máximo de comodidad. 5 ACOSTA, Alonso, “Introducción a la Física”, Tomo 1. 12 Es decir, un cuerpo flotante está en equilibrio estable, inestable o indiferente cuando su metacentro cae sobre, debajo o coincide con el centro de gravedad, respectivamente. Es debido a este motivo que en los buques se colocan las maquinarias en el fondo y se cargan primero las maquinarias en el fondo y se cargan primero las bodegas inferiores, pues así el centro de gravedad queda más abajo, con lo cual aumenta la estabilidad del navío. Si se echa la carga en cubierta y se dejan vacías las bodegas el barco fácilmente se da vuelta de campana. 1.1.4. BARCOS, ESTABILIDAD Y FLOTABILIDAD Barcos menores, son aquellos cuya eslora es menor de 26 m; los que superan esta cantidad se denominan barcos mayores. Sin embargo, la frontera entre barcos y buques no se pueden definir con precisión, pues barco es genérico, mientras que los buques son siempre barcos de grandes dimensiones. Los barcos se clasifican sobre todo por su método de propulsión; por ejemplo, barco de vela, barco de motor o barco de remos. Se clasifican también de acuerdo a su uso, métodos de construcción y materiales empleados, como los aparejos6 (en veleros) y otros factores que se describen a continuación. Algunos componentes básicos son comunes a la mayoría de los barcos convencionales. La quilla es un elemento de madera u otro material, situado en el 6 Sistema de poleas compuestas. Conjunto de palos, jarcias y velas de un buque. 13 centro del fondo del barco y que recorre en sentido longitudinal la embarcación de proa a popa. Ésta sirve como cimiento para el armazón, el cual se cubre con un material impermeable para formar el casco o cuerpo del barco. Estos términos también se utilizan para describir barcos modernos que se moldean de una sola pieza. Los barcos con alguna utilidad pueden construirse con el diseño más elemental; unos cuantos troncos caídos recogidos a la orilla de un riachuelo y atados para formar una balsa pueden ser un ejemplo extremo. A lo largo de muchos siglos de construcción y navegación, se utilizaron una serie de técnicas complejas y satisfactorias que se desarrollaron por intuición y en función de la experiencia fundada en la prueba y el error. 1.1.4.1. Capacidad y Peso Cualquier objeto que flote sobre la superficie del agua se hunde hasta que desplaza un volumen de agua equivalente a su peso. Así, cuando un barco tiene que llevar a tres personas, sus aperos7 de pesca, un motor fueraborda8 y una provisión de combustible (con un total de 500 Kg), el barco tendrá entonces que confeccionarse con el suficiente largo y ancho para desplazar 500 Kg de agua sin hundirse por debajo de la línea de flotación. El diseño debe valorar que el barco tiene su propio peso, el cual tiene también que ser desplazado; por tanto, cuanto mayor sea el peso del material utilizado para construir el barco, más grande habrá de ser el mismo. 7 8 Conjunto de instrumentos y cosas necesarias para la pesca. Pequeña embarcación propulsada por un motor situado fuera del caso. 14 1.1.4.2. Equilibrio y flotabilidad Cuando el volumen sumergido del barco ha sido diseñado para cumplir el requisito de que el peso del barco y su contenido sea igual al peso del agua desplazada, la distribución debe ser establecida de modo apropiado. El peso de un motor fueraborda en la popa de un barco pequeño tiende a hundirlo más por ese extremo. Si esa tendencia no puede ser compensada colocando un peso equivalente a proa, la realimentación deberá obtenerse ensanchando el casco en la zona de popa de tal forma que una gran parte del desplazamiento tenga lugar cerca del exceso de peso. Deberá establecerse un equilibrio de pesos de un lado a otro. Además, para disminuir el riesgo de hundimiento, el centro de gravedad de todos los pesos debe de estar lo bastante bajo en el barco. Si otros factores requieren que el centro de gravedad esté alto, entonces el riesgo de hundimiento deberá contrarrestarse aumentando el ancho del casco. 1.1.4.3. Estructura Un barco debe mantener su forma mientras soporta pesos locales internos, como el motor o una carga pesada, y cuando es golpeado por las olas. Si el barco tiene la consistencia necesaria para resistir graves deformaciones, será entonces fuerte en la medida conveniente para soportar diversas fracturas. Por otro lado, ya que un casco 15 de suficiente resistencia puede construirse con material fino, el riesgo de perforaciones locales puede aumentarse en una nave aunque ésta sea bastante fuerte. Un modelo primitivo hecho de pieles o cortezas, o los modernos botes inflables pueden ser ejemplos de esta característica. 1.1.4.4. Estanqueidad Parte del problema estructural es la estanqueidad, que consiste en la prevención o reparación de fugas a través de las juntas de piezas adyacentes. En barcos hechos de tablas, éstas se impermeabilizan o calafatean9 entre sí. En los barcos de pieles o de corteza era común rellenar los intersticios con brea. En la actualidad, el moldeado del casco evita algunos de los problemas tradicionales. Sin costuras no hay posibilidad de fugas. 1.1.4.5. Estabilidad Estabilidad es la propiedad de los cuerpos a tender a volver a su posición original cuando la nave se aparta de la situación de equilibrio uniforme, como resultado de la acción de unas fuerzas o momentos recuperadores. En un sistema móvil como es un cuerpo dentro del agua, la estabilidad suele exigir tanto una fuerza recuperadora como un factor de amortiguación. 9 Cerrar las junturas de las maderas de las naves con estopa y brea. 16 En el funcionamiento de una embarcación de carga hay que tomar en cuenta distintos tipos de estabilidad, considerando: la estabilidad inherente, que es la capacidad de la nave de regresar a la posición original después de sufrir una pequeña fuerza, sin necesidad de apoyo externo. La estabilidad longitudinal, es la que impide que la parte delantera cabecee arriba y abajo; la estabilidad direccional, que produce resistencia a los movimientos laterales y por último la estabilidad lateral, que impide el balanceo en torno al eje del fuselaje. 1.2. CONOCIMIENTOS BÁSICOS DE INGENIERÍA NAVAL Al tratarse de terminología comúnmente no usada, es imprescindible realizar una breve descripción de los términos más usados en el ámbito naval10, refiérase a las Figuras 1.4 y 1.5. Adrizar: Enderezar una embarcación que iba escorada. Astillero: Lugar donde se construyen y reparan las embarcaciones. Babor: La banda o costado izquierdo del barco mirando de popa a proa. Bandas: Son las partes que quedan a uno y otro lado del plano de crujía. Buque: Todo objeto que pueda utilizarse como medio de transporte sobre el agua, y que bajo condiciones normales pueda ser comandado a voluntad por su tripulación. Carena: Obra viva. Crujía, eje de: Impropiamente denominado eje, es el plano que divide de proa a popa la embarcación en dos mitades simétricas (bandas de babor y estribor). 10 http://www.capitanes.org.ar/Index_Set.htm 17 Escora: Angulo formado por el plano de crujía con respecto a un plano vertical. Escorar: Inclinar el velero hacia una banda. Eslora: Longitud del barco tomada del extremo de la roda al extremo del codaste. Estabilidad: Es la mayor o menor capacidad del barco de adrizarse por si mismo, cuando por cualquier causa momentánea es escorado. Estiba: Distribución de la carga. Estibar: Guardar ordenadamente cosas sueltas para que ocupen el menor espacio posible. * Distribuir convenientemente los pesos del buque. Estribor: Costado derecho, mirando de popa a proa. Flotabilidad: Cualidad de sobrenadar en la superficie de un líquido. Guiñada: Movimiento de un buque que cae sucesivamente de una banda a la otra, ya sea por marejada, mal gobierno, etc. Lastre: Material pesado que se suspende de la quilla o en el fondo de la sentina para dar estabilidad al barco. Línea: Línea de flotación: Línea que separa la obra viva de la obra muerta. Manga: Ancho máximo de una embarcación. Nave: Buque Obra muerta: La parte del casco que va de la borda a la línea de flotación. Obra viva: La parte del casco que va sumergida. Popa: Parte posterior de una embarcación. Proa: Parte anterior de una embarcación. Puente: Plataforma estrecha y con baranda colocada a cierta altura sobre la cubierta más alta. Quilla: Pieza que va de proa a popa por la parte inferior del barco, donde asienta toda su armazón. * Quilla de balance: Cada una de las piezas longitudinales y 18 salientes de la obra viva paralelas a la quilla, que sirven para amortiguar los balances. * Quilla limpia: Dícese de la medida de longitud de un buque, contada solamente por su quilla. Roda: Pieza gruesa y curva, que forma el remate de proa de las naves. Fig. 1. 4 Popa, Proa, Estribor y Babor Fig. 1. 5 Línea de flotación, obra viva y muerta 1.3. ESTIBA Se debe realizar una estiba o carga adecuada debido a que mucho depende de esto la estabilidad y flotabilidad de la nave, claro está no siempre se va a poder 19 compensar la nave sólo con la correcta puesta de la carga, por esto es necesario tener un sistema de control de estabilidad, sin embargo es importante seguir ciertas normas de carga.11 • Es preferible dibujar un plano de estiba en papel cuadriculado, para lograr una carga máxima de los contenedores además de bien distribuida. • La carga debe ser distribuida uniformemente en el piso del contenedor, para prevenir desequilibrio y poner en peligro la seguridad del personal y de la embarcación. El centro de gravedad longitudinal no deberá ocasionar un momento horizontal superior a 10 toneladas-metro. Este es el límite máximo dentro del que puede operar la mayoría de las grúas. • Es siempre importante tener el centro de gravedad lo más bajo posible. 11 http://bibliotecnica.upc.es/bib280/examens/ApEstiba-1.pdf 1 CAPÍTULO 2 SIMULACIÓN DEL SISTEMA 20 2. SIMULACIÓN DEL SISTEMA Para tener una idea clara del objetivo de este Proyecto, se ha creído necesario realizar una simulación del proceso, en el cual se pueden establecer normas de carga (ubicación y número máximo de contenedores), casos extremos de escoramiento. Se debe acotar que la simulación se la realiza de una manera completa para los casos de escoramiento a babor y a estribor, debido a que la estabilidad de proa a popa o viceversa (estabilidad longitudinal) es difícil que se produzca, ya que los barcos son más largos que anchos, y es estable en este sentido por su construcción. Sin embrago para efectos de demostración se han realizado casos especiales de escora tanto a popa y como a proa, claro está, colocando un número importante de contenedores de tal forma que puedan darse la inclinación hacia los extremos antes mencionados. 2.1. NORMAS DE CARGA Para evitar cualquier problema de escoramientos no recuperables (Compensación Imposible) se debe tomar en cuenta la ubicación de los contenedores, para esto se ha diseñado la forma de acomodarlos (Figuras 3.32, 3.33 y 3.34). Otro punto muy importante es recordar que no se puede colocar toda la carga en un solo lado de la nave, ya que esto puede producir inclinaciones muy grandes, para esto se recomienda colocar cargas del mismo peso una en estribor y otra en babor 21 en la misma fila y columna, consiguiendo de esta manera que el barco siga estable. Al ser complicado cumplir siempre con esta regla, se diseña el control de estabilidad, para poder salir de puerto sin escoramiento. Se recomienda siempre llenar primero las bodegas interiores, debido a que aumenta la estabilidad del barco al bajar el centro de gravedad. Se ha dispuesto un mayor número de contenedores en la popa debido a que siempre un barco va apopado (es decir levantado la proa), además hacia la proa es muy importante la línea de vista al extremo del barco, por efectos de navegación. Es siempre importante tener los contenedores o pesos dentro de la nave, ya que al colocar uno de estos parcialmente fuera de banda de estribor, babor, proa o popa el sistema de estabilidad pierde las dimensiones para las cuales fue construido, siendo bastante difícil la recuperación. En el extremo máximo de proa no se colocan contenedores ya que en esta parte se encuentran ubicadas las máquinas que manejan las anclas. Si se siguen a cabalidad estas normas es seguro un viaje sin problemas tanto como para la tripulación, mercancía y embarcación. A continuación se muestran fotos de estibas mal realizadas y sus respectivas consecuencias. 22 Fig. 2. 1 Estibas mal realizadas 2.2. CASOS EXTREMOS DE ESCORAMIENTO Para efectos de la simulación y de la práctica, se toma en cuenta la regla de tener 22° de escoramiento máximo ya sea hacia estribor o babor; esto hace que el barco esté a punto de tener agua en la plataforma con lo que podría producirse un colapso en la nave (Figura 2.2). 23 Fig. 2. 2 Escora a babor 22 grados 2.3. PANTALLA DE SIMULACIÓN En la Figura 2.3 se muestra la pantalla que se dispone para realizar la simulación, en ella se puede elegir realizar el procedimiento manual u optar por casos especiales como procedimiento automático, escoramiento hacia popa con carga normal o extra y escoramiento hacia proa con carga normal y extra. En el lado izquierdo de la pantalla se explica los colores que indican la cantidad de contenedores que se han colocado en tal fila y columna (Tabla 2.1), dependiendo está claro de la distribución antes hecha. Si se desea retirar carga de una coordenada específica se debe llegar primero al máximo de contenedores para luego empezar a bajar. 24 COLOR CONTENEDORES Café • 1 Rojo • 2 Naranja • 3 Amarillo • 4 Tabla 2. 1 Contenedores Fig. 2. 3 Pantalla de simulación 25 A continuación se tiene una vista superior de la nave, con la cuadrícula que nos indica las posiciones donde pueden ir los contenedores. En la parte central se observa una vista lateral de la embarcación, que indica las desviaciones existentes hacia proa o popa. Se pueden observar los tanques de lastre distribuidos en los extremos de la nave, los mismos que se llenarán o vaciarán dependiendo del caso. Para la visualización de las escoraciones ya sea estribor o babor, se tienen dos gráficos que representan las vistas posterior y frontal del barco, se ubican en la parte superior de la pantalla. Se dispone de tres botones importantes, éstos son: • Inicio de Operación: Con este botón se realiza un vaciado completo de los tanques de lastre, y se introduce agua hasta llegar a la mitad. Una vez concluida esta operación el barco simula estar nivelado. • Evaluar: Terminada la primera fase, se puede empezar a colocar contenedores, realizando un doble click sobre la fila y columna deseadas, tomando en cuenta que para colocar dos contenedores serán dos doble clicks y así hasta llegar a cuatro (en los casos que se pueda), luego para bajar la carga de igual manera se va haciendo la misma acción. Concluido el proceso de carga, se da click en Evaluar, mostrándose la desviación causada. • Nivelar: Este botón realiza la compensación perfecta, es decir no se tiene rebotes, para esto se desaloja agua de los tanques de lastre involucrados en el escoramiento, en el caso de dar vacío, se procede a introducir agua en los tanques opuestos. 26 Los casos especiales se explicarán más adelante. 2.4. PROCESO MANUAL Los pasos para realizar la simulación manual son los siguientes: 1. Hacer un click en botón “Inicio de Operación”, si no se lo hace, el sistema no empieza y no se puede proceder a la operación de carga. 2. Empezar a realizar la carga haciendo doble click en las filas y columnas deseadas. 3. Al Hacer click en “Evaluar”, se muestra la desviación que se ha producido. 4. Al Hacer click en “Nivelar”, el proceso de nivelación empieza, dependiendo del caso, se saca agua de los tanques donde se produjo el escoramiento, mientras se introduce lastre en los tanques contrarios y de no llegar a la compensación a pesar de estar vacíos los tanques directamente involucrados se sigue introduciendo agua en los tanques contrarios. 5. El proceso ha concluido, la embarcación se encuentra nivelada, y lista para la siguiente carga. En las siguientes Figuras (2.4, 2.5 y 2.6) se muestra el proceso. 27 Fig. 2. 4 Al hacer click en botón “Inicio de Operación” Fig. 2. 5 Colocada la carga y click en el botón “Evaluar” 28 Fig. 2. 6 Una vez hecho click en “Nivelar”, barco nivelado Cabe resaltar que tanto para este caso como para los siguientes, para mostrar el estado de la nivelación se toma en cuenta tanto los contenedores como el agua que se encuentra en los tanques de lastre. 2.5. CASOS ESPECIALES Como se dijo anteriormente, se tienen casos especiales: escoramiento a proa o a popa, además un proceso automático, los cuales serán detallados a continuación. 29 2.5.1. PROCESO AUTOMÁTICO Este caso permite visualizar el proceso completo de nivelación sin la intervención del usuario, para esto se da un click en el botón “Proceso Automático” (Figura 2.7). Se toman las siguientes acciones: 1. Empieza la operación de inicio normal, desfogar toda el agua de los tanques y llenar hasta la mitad de capacidad. 2. Coloca un número de contenedores entre cinco y veinte al azar, tanto en cantidad como en posición. 3. Procede a evaluar el ángulo de escoramiento. 4. Nivela la embarcación. 5. Empieza nuevamente la secuencia. Fig. 2. 7 Pantalla de proceso automático 30 Para salir del proceso automático se lo hace con la tecla ESC. 2.5.2. ESCORAR A POPA Para este caso se toma en cuenta dos alternativas: carga normal (Figura 2.7), considerándola como la colocación de las filas completas correspondientes a esta posición; y, extra (Figura 2.8) en la que al caso anterior se le añade una fila completa, la más cercana a popa con todas sus columnas llenas de contenedores. Fig. 2. 8 Escorar a popa, carga normal 31 Fig. 2. 9 Escorar a popa, carga extra Proceso que cumple escorar a popa: 1. Inicio de operación 2. Colocación de carga en las filas de popa en ambos casos, y la adicional enunciada anteriormente cuando se tiene carga extra. 3. Evaluar lo que produce el escoramiento de la nave hacia popa, obviamente es mayor si se usa la opción de carga extra. 4. Nivelación, se empieza el desfogue de lastre de popa y se introduce agua en proa para mejorar la respuesta, en el caso de carga extra se vacían completamente los tanques de popa y culmina la compensación colocando más agua en proa. 32 2.5.3. ESCORAR A PROA El proceso es similar al de escoramiento a popa, excepción hecha, de que los tanques a desfogar son los de proa, claro está, mientras se inserta agua en los tanques de popa y en caso de terminar el agua en proa, se seguirán llenando de lastre los tanques de popa. Se pueden observar los casos: carga normal (Figura 2.10) y carga extra (Figura 2.11) a continuación: Fig. 2. 10 Escora a proa, carga normal 33 Fig. 2. 11 Escora a proa, carga extra Con esto se cumplen los casos posibles, que servirán de base para la realización del proyecto, las comparaciones entre la simulación y la práctica, se puede revisar en el Capítulo 5 del presente Proyecto de Titulación. 34 CAPÍTULO 3 DISEÑO Y CONSTRUCCIÓN DEL HARDWARE 34 3. DISEÑO Y CONSTRUCCIÓN DEL HARDWARE 3.1. CONSTRUCCIÓN DEL BARCO Desde un punto de vista estructural, un barco es una viga hueca sometida a flexión y a torsión mientras navega a través de las olas y cambiando su peso. En sí la estructura es igual para un velero como para un carguero. La columna vertebral de casi todas las naves es la quilla, una viga longitudinal situada en el fondo y que se extiende de popa a proa. En el extremo de la proa, la quilla se une a un elemento vertical denominado roda, que es parte de la proa, en la popa se llama codaste. Normalmente el buque adquiere su típica forma gracias a unas costillas transversales llamadas cuadernas, curvadas según un orden simétrico y sujetadas a la quilla en los centros. Las cuadernas se mantienen en la posición adecuada mediante tirantes longitudinales que recorren el barco de proa a popa, y se curvan para ajustarse a la forma del casco. Un último aditamento son los baos que son piezas que van de banda a banda uniendo las cuadernas. El forro del barco se monta sobre el armazón. En barcos de acero, el forro se forma mediante una serie de chapas metálicas remachadas o soldadas al armazón. Los muros transversales de madera o de chapa metálica, según el tipo de buque, se denominan mamparos. Afirman la solidez del armazón y son utilizadas para dividir el casco en compartimentos herméticos, como medida de seguridad. Para efectos de las pruebas prácticas se construyó un barco a escala siguiendo el modelo del barco carguero Post-PanaMax cuyas dimensiones pueden variar entre: 35 longitud de 284 a 318 metros, altura de 39,20 a 42 metros y un ancho de 20 a 30 metros. Este barco está en la capacidad de carga de 5000 a 6000 TEU (Twenty-Foot Equivalent Units), lo cual se define como el número de contenedores de 20 pies X 8 pies X 8 pies 6 pulgadas, que puede llevar, éste es un barco elaborado desde 1992, para el uso sobre todo en el canal de Panamá; por lo que el barco a escala tendrá las siguientes dimensiones en longitud 64 centímetros, en altura 9 centímetros y en su ancho 10,5 centímetros, cabe anotar que el ancho está aumentado debido a la implementación de los tanques de lastre, además de dar mayor estabilidad; el material usado es hojalata, debido a su fácil manipulación y resistencia, Figura 3.1. Fig. 3. 1 Barco construido 36 3.1.1. DISEÑO DE LOS TANQUES DE LASTRE Normalmente la compensación en los buques se realiza a través de tanques de lastre, entendiéndose por tal: agua salada o aceite y o combustible; y en ocasiones aún agua dulce. La distribución del lastre, cualquiera que sea éste, se lo realiza a través de cañerías que recorren todo el barco, mediante el uso de válvulas se permite o no el paso hacia los tanques que lo almacenan, produciéndose así la compensación para conseguir la estabilidad de la nave. En el modelo a escala se obtendrá el lastre mediante un tanque central de abastecimiento, teniendo en cuenta que se utilizará agua de mar simulada por el agua de la piscina de prueba, y de aquí será distribuida a 4 tanques colocados de tal manera que se pueda eliminar el vector fuerza que provoca el colocar una carga en un cierto punto del barco, haciendo que cada uno de estos tanques pueda tanto llenarse así como vaciarse, para lograr la estabilidad. Los tanques de almacenamiento de lastre y el tanque de abastecimiento se muestran en la Figura 3.2 37 Fig. 3. 2 Tanques de lastre y abastecimiento 3.1.2. CONSTRUCCIÓN DE LOS TANQUES DE LASTRE La compensación se da ya sea introduciendo o sacando lastre (agua) de los referidos tanques. Para poder llevar lastre hacia los tanques se dispone de cuatro bombas capaces de succionar y elevar agua, están ubicadas en el tanque de abastecimiento y su función es tomar agua de este tanque y conducirla hacia el tanque de lastre donde se necesita la compensación. Para efecto de desplazar o retirar agua de los tanques de lastre se dispone de 4 bombas de iguales características, ubicadas una en cada tanque. Tomando en cuenta estos criterios se ha decidido construir los tanques de lastre con las siguientes dimensiones, Figura 3.3. Cabe resaltar que el tanque tiene un espacio más grande para poder colocar la bomba de desfogue, caso contrario el ancho sería 1.5 centímetros todo el tanque, por lo que los tanques pueden llevar una cantidad de 84 ml de lastre. 38 Fig. 3. 3 Diagrama del tanque de lastre con su tapa 3.1.3. TANQUE CENTRAL DE ABASTECIMIENTO El tanque de abastecimiento o tanque central, es diseñado de tal forma que pueda contener las cuatro bombas en su interior, además de tener la suficiente carga de agua para abastecer a los 4 tanques de lastre en la peor de las condiciones. Teniendo así las siguientes dimensiones 10.5 centímetros de ancho, 14 centímetros de longitud y 5 centímetros de alto, Figura 3.4, su capacidad es de 735 ml. Tanque central de Abastecimiento Fig. 3. 4 Tanque de abastecimiento central 39 3.1.4. BOMBAS DE SUCCIÓN DE AGUA Estas bombas tienen la característica de succionar agua y levantarla desde el tanque de abastecimiento hacia los tanques de lastre o para el desfogue de agua de los mismos; mediante el uso de un motor encapsulado que se alimenta con aproximadamente 3 voltios de corriente continua, este motor hace girar una veleta exterior provocando el levantamiento del agua. Figura 3.5 Fig. 3. 5 Bombas de succión de agua 3.1.5. CAÑERÍAS Para conducir el agua o lastre desde el tanque de abastecimiento hacia los tanques de lastre se utilizó cañería de 4.5 mm de diámetro interior y 5 mm de diámetro exterior, refiérase a la Figura 3.2 cañerías color café. 40 A continuación se muestra la cañería usada, Figura 3.6. Fig. 3. 6 Cañería desde tanque de abasto a tanques de lastre Para el desfogue de agua de los tanques de lastre se utiliza cañerías de 0.9 mm de diámetro exterior y 0.7 mm de diámetro interior, refiérase a la Figura 3.2 cañerías color verde. En la Figura 3.7 se muestra la cañería para este propósito. Fig. 3. 7 Cañerías para el desfogue de agua de los tanques de lastre 41 3.2. HARDWARE ELECTRÓNICO Para producir la estabilización de la nave se hace necesario un sistema micro controlado que usa como unidad central el PIC 16F877A. Su objetivo básico corresponde a determinar las acciones que debe tomarse con el lastre, ya sea ordenar el transferir agua desde el tanque de abastecimiento hacia uno o algunos de los tanques de lastre o producir el desfogue de uno o más tanques de lastre, esto en tanto recibe información de los sensores de inclinación. 3.2.1. SENSORES DE INCLINACIÓN Estos sensores son los que indican el escoramiento (desviación del plano horizontal) del barco hacia uno a varios lados, enviando una señal de activación. Figura 3.8. Fig. 3. 8 Ampollas de mercurio Se utiliza para el efecto, ampollas de mercurio que actúan como interruptores normalmente abiertos, ubicados de tal forma que al escorar cierran los dos terminales lo que produce el cierre del interruptor que mediante un circuito genera una señal de 5 voltios que es considerada un puerto de entrada del PIC. Figura 3.9. 42 5V +V 5V +V R2 1k U1A R1 1k SHg1 ENTRADA DEL PIC Y OR Q1 2N3904 Fig. 3. 9 Circuito de sensores de inclinación El funcionamiento del circuito es el siguiente: el sensor de mercurio inicia normalmente abierto, con uno de sus pines conectado a una resistencia de 1 kΩ que está conectada a la fuente de 5 voltios, en este momento el transistor 2N3904 no conduce por lo tanto en el colector tenemos + 5 V DC apoyado con una resistencia de pull-up, al pasar este nivel por la compuerta inversora produce 0 voltios a la entrada del PIC, lo que indica que no hay inclinación. En el caso de inclinación, el sensor se cierra, por lo que se aplican los 5 voltios de la fuente a la base del transistor provocando su conducción, con lo que el colector toma el nivel de tierra; la compuerta lógica invierte el estado poniendo la entrada del PIC en un nivel lógico alto. La ubicación de los sensores se observa en las Figuras 3.10, 3.11 (a, b y c) a continuación: 43 Sensores de Estribor y Popa Sensor de Proa Sensor de Popa Fig. 3. 10 Ubicación de los sensores de inclinación Sensor Babor Sensor Proa Sensor Estribor (a) (b) Sensor de Popa (c) Fig. 3. 11 (a) Sensor de inclinación Babor y Estribor (b) Sensor de Proa (c) Sensor de Popa 44 La interrupción del PIC se origina por el accionamiento de cualquiera de los sensores de inclinación, para lo cual las salidas de las compuertas inversoras además de ir al PIC también van conectadas hacia 3 compuertas OR, para poder activar la interrupción. Figura 3.12 U1A SENSOR ESTRIBOR SENSOR BABOR SENSOR PROA SENSOR POPA U1C INTERRUPCIÓN DEL PIC U1B Fig. 3. 12 Circuito de detección de inclinación 3.2.2. CIRCUITO DE ENCENDIDO Y APAGADO DE LAS BOMBAS Una vez detectado el escoramiento de la nave se inicia el accionamiento de la o las bombas de alimentación o desfogue de lastre, esto se lo hace con el siguiente circuito electrónico comandado por el PIC. Figura 3.13 5V +V D2 5V +V ON/OFF BOMBA PIC 5V +V 5V +V R1 1k R2 3.3 R2 1k D1 D3 C1 33uF D1933 U1A U1B Fig. 3. 13 Circuito de control de bombas 45 Dependiendo de la inclinación, el PIC ordena el encendido enviando 5 voltios, los mismos que pasan por dos compuertas NOT para asegurar niveles lógicos que puedan llegar a la base del transistor darlington D1933, al conducir se tiene la tierra en el colector lo que se aplica al terminal negativo de la bomba; el terminal positivo de la bomba se halla conectado a + 5 V DC a través de una resistencia de potencia de 3.3 Ω , razones por las cuales se activa la bomba. Si el PIC envía la señal de apagado tendremos que el terminal negativo de la bomba no tiene conexión a tierra por encontrarse abierto el transistor D1933, debido a ello la bomba no enciende. Para el correcto funcionamiento de las bombas se ha conectado un capacitor en paralelo para eliminar los picos que puedan existir; además dos diodos, los mismos que están colocados el ánodo a tierra y el cátodo a cada uno de los terminales de la bomba para aumentar el funcionamiento, desempeño y seguridad. La activación de las bombas está sujeta a la detección de dos estados extremos de trabajo del tanque. El primero corresponde a que de requerirse evacuar lastre y el tanque no disponer de agua se detecta la condición de vacío mediante un circuito anexo a la bomba; y el segundo, de requerirse introducir lastre en un tanque cuya capacidad está completa, estado que es detectado por un sensor llamado de lleno. Condiciones que se detallan a continuación. 46 3.2.3. SENSORES DE VACÍO En la circunstancia en la cual se desea evacuar lastre de un tanque y éste carece de ella se ha diseñado sensores de vacío para detectar e informar de esta situación al PIC. Cabe indicar que estos sensores no son considerados para las bombas que se encuentran en el tanque central de almacenamiento ya que éste tiene una entrada directa de agua que proviene de la piscina de prueba. Figura 3.14 Fig. 3. 14 Circuito de funcionamiento de la bomba con sensor de vacío Para el funcionamiento de estos sensores se han aprovechado los niveles de voltaje con los que trabajan las bombas ya sea con agua o sin ella. En el punto positivo de este dispositivo, por ejemplo; se tiene que en una de las bombas al trabajar con agua se mide 3.7 voltios DC mientras que al activársela sin agua el voltaje medido es de 4.1 voltios DC, esta señal es sensada en una entrada analógica del PIC; el programa del microcontrolador compara el valor adquirido de la bomba con un valor programado y susceptible de ajuste en el programa del PIC. Si el valor adquirido en el puerto analógico es mayor que el programado entonces se determina que la 47 bomba está trabajando sin agua se apagará inmediatamente la bomba y se tomarán distintas opciones de compensación. 3.2.4. SENSORES DE LLENO Estos sensores están diseñados para detectar que el tanque de lastre se encuentra lleno, por lo que no se puede establecer la acción de compensación de introducir lastre desde el tanque central de abastecimiento. Esto se lo hace mediante sensores infrarrojos (Figura 3.15) y un circuito electrónico de control (Figura 3.16). Fig. 3. 15 Sensores infrarrojos 48 5V +V 5V +V 5V +V R1 R2 U1 220 2N3100 3.9K R3 1k PIC Q5 2N3904 Fig. 3. 16 Circuito de control de sensores de lleno El funcionamiento de los sensores es de la siguiente manera: el ánodo del diodo emisor va conectado a la fuente 5 VDC a través de una resistencia de 220 Ω y el cátodo hacia la tierra, por lo tanto siempre está enviando una señal al transistor receptor, éste está conectado de igual manera a la fuente pero a través de una resistencia de 3.9 KΩ en el colector, mientras que el emisor va a tierra, por lo tanto mientras el diodo emite la señal a la base del transistor receptor éste conduce teniendo en el colector un nivel cercano a tierra, señal que llega a la base del transistor 2N3904 poniéndolo en corte. En el caso contrario mediante un hardware diseñado (Figura 3.17) sube una bandera la cual impide el paso de la luz infrarroja con lo cual el transistor receptor no conduce, por lo que en el colector se tienen 5 VDC, los que pasan a la base del transistor 2N3904 haciéndolo conducir, provocando que en el colector se tenga un voltaje cercano 0 VDC que van al PIC, indicando la existencia de lleno en uno de los tanques. 49 Fig. 3. 17 Hardware diseñado para tapar la luz infrarroja del sensor de lleno Cabe anotar que la esfera es hueca, por lo que al subir el agua sube la esfera y sin el apoyo del agua vuelve a su estado natural. 3.2.5. LEDS INDICADORES En la placa principal se disponen de 3 leds indicadores (Figura 3.18) cuya función es: LED VERDE, al encenderse indica que el sistema se encuentra estable. LED ROJO, encendido indica que la placa tiene energía. LED AMARILLO, indica al encenderse que se está procediendo al desfogue completo de los tanques de lastre. 50 LEDS Fig. 3. 18 LEDS indicadores También se dispone de un led que se encuentra en el puente de la nave, de color azul, al encenderse indica que el sistema se encuentra en proceso de estabilización, Figura 3.19. Fig. 3. 19 LED Azul indicador de compensación 51 3.2.6. HARDWARE DE COMUNICACIÓN (MAX232) Para realizar la captura de datos en la interfaz hombre máquina se va a utilizar el puerto serial del computador (comunicación RS232), el componente electrónico MAX232 (Figura 3.20), además de los puertos RC.6 y RC.7 del PIC. Esta comunicación es utilizada para proveer una visualización del comportamiento de la nave al momento de compensar, como son: los estados de los tanques de lastre, vacíos o llenos y el escoramiento o no que presenta la embarcación. C8 1uF 1 2 3 4 5 6 7 8 16 15 14 13 12 11 10 9 5V COMPUTADOR 23 5 +V + C7 1uF + C5 1uF + +V 5V C61uF U24 + U25 RX PIC TX PIC MAX232 Fig. 3. 20 Circuito electrónico del MAX232 Los datos enviados por el PIC se manejan con un nivel TTL, en tanto que el computador espera los datos según la norma RS-232, para esto es necesario la utilización del MAX232. Este es un dispositivo electrónico de doble canal, receptor y transmisor; que incluye un generador de voltaje capacitivo para proporcionar niveles de voltaje EIA-232 desde una fuente de 5 VDC. Cada receptor convierte las entradas EIA-232 a niveles TTL los mismos que llegan al PIC. Estos receptores tienen un típico umbral de 1.3 VDC y su histéresis de 0.5 VDC. Los transmisores realizan la 52 función de pasar de niveles TTL a EIA-232, todo esto mediante la conexión especial de los capacitores, refiérase a la Figura 3.20. 3.2.6.1. Pantalla de visualización Con el objetivo de poder realizar una visualización de lo que ocurre durante el escoramiento de la embarcación, se ha realizado una pantalla en la cual se reflejan los datos de los sensores de inclinación, vacío y lleno; así como que bombas están funcionando. Al iniciar el programa se dispone de una pantalla de bienvenida (Figura 3.21) en la cual se tiene dos opciones: salir o continuar, para poder observar la pantalla de visualización se da click en continuar. Fig. 3. 21 Pantalla de bienvenida 53 A continuación se tiene la ventana donde se encuentran la vista posterior y lateral de la embarcación, las mismas que se inclinan dependiendo del escoramiento de la nave, indica también que bombas están funcionando, tanto del tanque central de abastecimiento como de los tanques de lastre, además del estado de agua en los mismos. Si no existe comunicación aparecerá en la pantalla la leyenda “No existe comunicación serial ……” (Figura 3.22), al momento de tener una inclinación la comunicación se establece, comenzando así la visualización de los eventos que se producen en el barco (Figura 3.23). Fig. 3. 22 Pantalla de visualización cuando no existe comunicación serial 54 Fig. 3. 23 Pantalla de visualización con comunicación establecida Como se muestra en la figura anterior, se observa que el tanque central de abastecimiento se encuentra completamente lleno con las cuatro bombas que pasan agua hacia los tanques de lastre, además los cuatro tanques de lastre con sus respectivas de bombas de desfogue. Cabe indicar que esta pantalla permite únicamente visualizar lo que ocurre en la nave. 3.2.7. CABLEADO Para lograr realizar la comunicación del PIC hacia los elementos de control que se encuentran en el barco, se disponen de dos cables de 40 hilos (Figura 3.24) unidos a 55 través de un adaptador, enviando y recibiendo, desde la placa y hacia el puente principal y viceversa, las señales de control de los distintos componentes antes mencionados. Conectores tipo Conector de 40 hilos Sánduche hembra Fig. 3. 24 Cables de 40 hilos La distribución de las señales de control en el cable plano de 40 hilos es la siguiente: BOMBAS DE TANQUES DE LASTRE BOMBAS DE SUMINISTRO DE LASTRE 1 3 5 7 9 11 13 15 17 EPROA BPROA EPOPA BPOPA EPROA EPOPA NC BPROA BPOPA Terminal + Terminal + Terminal + Terminal + Terminal + Terminal + Terminal + Terminal + 2 4 6 8 10 12 14 16 18 EPROA BPROA EPOPA BPOPA EPROA EPOPA NC BPROA BPOPA Terminal - Terminal - Terminal - Terminal - Terminal - Terminal - Terminal - Terminal - SENSORES DE INCLINACIÓN SENSORES DE LLENO 19 21 23 25 27 29 31 33 35 37 39 POPA PROA ESTRIBOR BABOR GND LED LED BPROA BPOPA EPROA EPOPA AZUL AZUL Diodo Diodo Diodo Diodo 20 22 24 26 28 30 32 34 36 38 40 POPA PROA ESTRIBOR BABOR GND GND GND BPROA BPOPA EPROA EPOPA Transist. Transist. Transist. Transist. Tabla 3. 1 Distribución de señales en el cable plano 56 En la placa se dispone de entradas superiores e inferiores (Figura 3.25), debido a esto se elaboró terminaciones tipo sánduche para la placa (Figura 3.24), conservándose los conectores hembras en sus otros extremos. Podemos ver el tipo de entradas que se tienen en la placa en la Figura 3.25 (a) y su conexión completa en la Figura 3.25 (b) Sección Sección Sección Sección Azul Amarilla Naranja Roja Entradas de la placa (a) (b) Fig. 3. 25 (a) Tipo de entradas en la placa (b) Conexión de cables tipo sánduche Se tiene la siguiente distribución de los cables a la entrada de la placa: BOMBAS TANQUES DE LASTRE (Sus entradas se encuentran en la sección roja) ESTRIBOR PROA BABOR PROA ESTRIBOR POPA BABOR POPA 1er entrada 2da entrada 3era entrada 4ta entrada superior superior superior superior 1er entrada inferior 2da entrada inferior 3era entrada 4ta entrada inferior inferior Tabla 3. 2 Conexiones de la placa de las bombas de los tanques de lastre 57 BOMBAS DE SUMINISTRO DE LASTRE (Sus entradas se encuentran en la sección naranja) ESTRIBOR PROA ESTRIBOR POPA BABOR PROA BABOR POPA 1er entrada 2da entrada 4ta entrada 5ta entrada superior superior superior superior 1er entrada inferior 2da entrada inferior 4ta entrada inferior 5ta entrada inferior Tabla 3. 3 Conexiones de la placa de las bombas de suministro SENSORES DE INCLINACIÓN (Se encuentran en las entradas de la sección amarilla) POPA PROA ESTRIBOR BABOR 1er entrada 2da entrada 3era entrada 4ta entrada superior superior superior superior 1er entrada inferior 2da entrada inferior 3 era entrada 4ta entrada inferior inferior Tabla 3. 4 Conexiones de los sensores de inclinación SENSORES DE LLENO (Sección azul) ESTRIBOR POPA ESTRIBOR PROA ESTRIBOR POPA 9na entrada 8va entrada 7ma entrada 6ta entrada superior (diodo) superior (diodo) superior (diodo) superior (diodo) 7ma entrada 6ta entrada inferior inferior (transistor) (transistor) 9na entrada inferior 8va entrada inferior (transistor) (transistor) BABOR POPA Tabla 3. 5 Entradas de sensores de lleno en la placa 58 Las entradas inferiores: quinta, cuarta y tercera, son dedicadas a la tierra de estos sensores. Las entradas superiores: quinta y cuarta son conectadas al led azul y la tercera superior también es la tierra de los sensores. Debido a que la posición del cable produce en ciertos casos un escoramiento, se buscó la manera de tener el menor impacto posible, por esto se construyó un adaptador, donde se encuentran dos conectores machos de 40 pines (Figura 3.26), de esta manera el cable que viene desde la placa se conecta en uno de estos conectores, y en el otro se conecta el inicio del segundo cable de 40 hilos que termina en el puente principal de control (Figura 3.27). Fig. 3. 26 Adaptador donde se encuentran dos conectores machos de 40 pines Fig. 3. 27 Puente principal de control 59 3.2.8. PIC Para el control de todos los elementos electrónicos incluidos en la nave se utiliza el PIC 16F877A, que tiene las siguientes características: Frecuencia de operación DC-20MHz Reset (y retardos) POR,BOR (PWRT, OST) Memoria Programable flash 8K Memoria de datos (bytes) 368 Memoria de datos EEPROM (bytes) 256 Interrupciones 15 Puertos E/S Puertos A, B, C, D, E Timers 3 Captura/Comparaciones/PWM 2 Comunicación serial MSSP, USART Comunicación Paralela PSP Módulo A/D 10’bits 8 canales de entrada Comparadores Análogos 2 Set de instrucciones 35 instrucciones Tabla 3. 6 Características del PIC 16F877A Se usan los siguientes puertos del PIC (Figura 3.28) 60 Control de bombas de desfogue, salidas digitales: BOMBAS PUERTO DEL PIC PE_PROA RD.2 PE_POPA RD.3 PB_PROA RC.4 PB_POPA RC.5 Tabla 3. 7 Puertos de las bombas de desfogue Control de bombas de suministro de lastre, salidas digitales BOMBAS PUERTO DEL PIC S_E_PROA RD.4 S_E_POPA RD.5 S_B_PROA RD.6 S_B_POPA RD.7 Tabla 3. 8 Puertos de las bombas de suministro En este caso se va a realizar una visualización de los estados del barco por lo que no se necesita recibir información proveniente del computador, por lo que se usa sólo el pin RC.6 para la transmisión. 61 La entrada de los sensores de lleno se lo hace digitalmente con los siguientes pines: SENSOR PUERTO DEL PIC SLE_PROA RC.0 SLE_POPA RC.1 SLB_PROA RC.2 SLKB_POPA RC.3 Tabla 3. 9 Puertos de las entradas de los sensores de lleno Configurado el puerto A como entradas analógicas, se usan para los sensores de vacío, al ser cuatro bombas de desfogue se utilizan los pines: SENSORES PUERTO DEL PIC SVE_PROA RA.0 SVE_POPA RA.1 SVB_PROA RA.2 SVB_POPA RA.3 Tabla 3. 10 Puertos de los sensores de vacío En el puerto B, se encuentra la interrupción RB.0 que llega desde las compuertas lógicas OR explicadas previamente, los leds indicadores amarillo RB.3, verde RB.2 y rojo RB.1, y las entradas de los sensores de inclinación, así: 62 SENSOR DE PUERTO DEL PIC INCLINACIÓN SB RB.7 SE RB.6 S_PROA RB.5 S_POPA RB.4 LEDS PUERTO DEL PIC AMARILLO RB.3 VERDE RB.2 ROJO RB.1 INTERRUPCIÓN RB.0 AZUL RD.1 Tabla 3. 11 Puertos de sensores de viraje, leds e interrupción U1 MCLR SB RAO SVE_PROA SE RA1 SVE_POPA S_PROA RA2 SVB_PROA S_POPA RA3 SVB_POPA LEDAMAR RA4 LEDVERDE RA5 LEDROJO RE0 INT RE1 RE2 VDD S_B_POPA VSS S_B_PROA OSC1 S_E_POPA OSC2 S_E_PROA RC0 SLE_PROA RX RC1 SLE_POPA TX RC2 SLB_PROA PB_POPA RC3 SLB_POPA PB_PROA RD0 PE_POPA RD1 PE_PROA RB7 RB6 RB5 RB4 RB3 RB2 RB1 RBO VDD VSS RD7 RD6 RD5 RD4 RC7 RC6 RC5 RC4 RD3 RD2 PIC16F877A Fig. 3. 28 Distribución de pines del PIC 63 3.2.8.1. La alimentación Cuatro pines del PIC están destinados para la alimentación tanto del voltaje VDC como para la tierra, los terminales 11 y 32 dedicados para los 5 VDC, y 12 y 31 para la tierra. El reset del PIC se produce al poner un nivel lógico bajo en el pin 1, con lo cual el microcontrolador se direcciona a la primera instrucción del programa, retornando algunos registros al valor predeterminado. 3.2.8.2. El reloj Para la sincronización del trabajo del PIC es importante la acción que realiza el reloj. El microcontrolador puede recibir distintos tipos de estímulos dependiendo de la fuente, una de ellas puede ser un circuito RC, pero el más usado es el oscilador de cristal que opera a distintas frecuencias desde 4 Mhz hasta 40 Mhz. Para el reloj se usan las patas 13 y 14, conectadas a tierra mediante capacitores de 47 pF, cabe indicar que se usa un reloj de 10 MHZ, refiérase a la Figura 3.29. 64 C9 47pF C10 47pF X1 OSC1 OSC2 Fig. 3. 29 Conexión del Reloj El diagrama completo del circuito se presente en la Figura 3.30. 65 5V +V R35 R36 U21 220 2N3100 3.9K 5V +V 5V +V Q6 2N3904 5V +V R32 R33 U22 220 2N3100 3.9K 5V +V 5V +V R29 R30 U23 220 2N3100 3.9K 5V +V 5V +V 5V +V Q8 2N3904 +V MAX232 R10 1k MCLR SB RAO SVE_PROA SE RA1 SVE_POPA S_PROA RA2 SVB_PROA S_POPA RA3 SVB_POPA LEDAMAR RA4 LEDVERDE RA5 LEDROJO RE0 INT RE1 RE2 VDD S_B_POPA VSS S_B_PROA OSC1 S_E_POPA OSC2 S_E_PROA RC0 SLE_PROA RX RC1 SLE_POPA TX RC2 SLB_PROA PB_POPA RC3 SLB_POPA PB_PROA RD0 PE_POPA RD1 LED AZUL PE_PROA RB7 RB6 RB5 RB4 RB3 RB2 RB1 RBO VDD VSS RD7 RD6 RD5 RD4 RC7 RC6 RC5 RC4 RD3 RD2 U11B R7 1k U2F R15 1k U11F R16 1k U11E Q4 2N3904 R4 1k T6 LEDAMARI LEDROJO LEDAZUL D18 LEDVERDE D19 D20 D17 U2D C3 33uF D6 5V +V R43 330 5V +V R22 4.7 R44 330 R45 330 C2 33uF 5V +V U2C R2 10 5V +V 5V +V R1 1k U2A R14 1k U11D C13 10uF D2 R46 330 R6 10K D5 D13 5V +V R9 10 5V +V R5 1k T2 5V +V +V 5V C12 10uF 5V +V 5V +V R51 1k R9 10K D8 D4 R26 4.7 R21 1k D9 R8 1k T3 U2E U18B 5V +V 5V +V R50 1k R14 6.8 5V +V 5V +V 5V +V U18C +V 5V 5V +V U11A D7 U18A D14 C11 10uF D11 C4 33uF 5V PIC16F877A +V T7 5V +V D12 R11 1k T4 5V +V R12 10K 5V +V 5V +V + + +V R6 330 R17 1k U15B R18 1k U15A 5V +V R22 1k U19B SHg4 X1 5V +V 5V +V Q3 2N3904 SHg3 C10 47pF +V 5V R29 4.7 R49 R24 1k 1k U19A 5V +V R31 1k 5V +V R23 1k Q7 2N3904 C9 47pF D16 5V +V 5V +V T8 Q2 2N3904 SHg2 R34 1k R19 1k U15D R20 1k U15C R25 1k 5V +V 5V +V R32 5.6 5V +V R48 1k R26 1k U15F R19 10 D10 5V +V U1 5V +V 5V +V Q1 2N3904 SHg1 R37 1k C8 1uF 5V +V R27 1k 5V +V 5V +V R47 1k R28 1k U15E C7 1uF R2 1k T1 U2B R13 1k U11C T5 D15 +V 5V Fig. 3. 30 Diagrama del circuito de control completo R3 10K + Q5 2N3904 R41 100 5V +V U25 16 15 14 13 12 11 10 9 + 5V +V 5V +V 1 2 3 4 5 6 7 8 23 5 5V U24 + R38 R39 U20 220 2N3100 3.9K 5V +V C5 1uF + R40 1k 5V + 5V +V R42 10K +V 5V +V 5V C61uF + S1 5V +V D1 C14 10uF D3 C1 33uF 66 3.3. CONTENEDORES DE CARGA Los contenedores de carga son aquellos que provocan el escoramiento de la nave, dependiendo de la posición donde se los coloque. El barco Post-PanaMax está diseñado para cargar 5000 contenedores estándar de: 5.8 metros de largo, 2.3 metros de ancho y 2.3 metros de alto (Figura 3.31). Fig. 3. 31 Contenedor estándar Para efectos de demostración se tienen barras de hierro de: 2 centímetros de largo, 0.9 centímetros de ancho y 0.9 centímetros de alto; que equivalen a 7 contenedores, debido a que un solo contenedor no produce efecto de desviación de la embarcación. En las Figuras 3.32, 3.33 y 3.34 se muestra la distribución de los contenedores tanto en las bodegas internas como en la plataforma, para llevar la carga máxima del barco, resaltando que siempre se debe llenar primero las bodegas internas sobre todo para lograr una mayor estabilidad. 67 Fig. 3. 32 Contenedores en plataforma vista lateral Fig. 3. 33 Contenedores en plataforma vista superior Fig. 3. 34 Contenedores en plataforma interna proa y popa 68 CAPÍTULO 4 DESARROLLO DEL SOFTWARE 68 4. DESARROLLO DEL SOFTWARE El control del proyecto se encuentra a cargo del PIC 16F877, dispositivo que administra la información que recibe de los sensores y dispone las acciones que deben tomarse para cumplir el objetivo final que corresponde a mantener la estabilidad de la nave durante el proceso de estiba. 4.1. CONFIGURACIÓN DE LOS PUERTOS Con el objetivo de obtener la diferencia de potencial existente en las terminales positivas de las bombas de desfogue de lastre y establecer, según el valor adquirido en ese punto, si las referidas bombas al momento de activarlas se encuentran trabajando con un nivel apropiado de agua o sin líquido, se ha destinado el Puerto A del PIC para recibir esa información, obviamente y dada la naturaleza de los datos se han configurado las entradas como analógicas. Las líneas de programa correspondientes a estas acciones son las siguientes: TRISA = ADCON1 = %11111111 ' PortA como entrada %00000010 ' PortaA como análogo y el resultado con justificación ' izquierda La utilización de los puertos se la describe en la Tabla 3.10 69 En el Puerto B, RB.0 se lo utiliza para la detección de la interrupción, situación presente cuando uno o algunos de los sensores de mercurio son activados por la escoración de la nave. La interrupción se activa con el flanco positivo en el pórtico RB.0 por lo que el registro de opciones se modifica de la siguiente forma: OPTION_REG.6=1 Desde PortB.1 a PortB.3 se ha configurado el puerto como salidas en razón de que allí se han conectado los leds que permiten conocer el estado de operación del programa. Los restantes puertos, esto es desde RB.4 a RB.7 se han destinado a la recepción de los sensores de inclinación, por lo tanto la línea de programa correspondiente a la configuración del Puerto B es la siguiente: TRISB=%11110001 La Tabla 4.1 a continuación muestra el destino dado a cada uno de los componentes del Puerto B. 70 PUERTO B Puerto Función Nemónico RB.0 Interrupción RB.1 Led Rojo rojo RB.2 Led Verde verde RB.3 Led Amarillo amarillo RB.4 Sensor de inclinación a Popa S_POPA RB.5 Sensor de inclinación a Proa S_PROA RB.6 Sensor de inclinación a Estribor S_E RB.7 Sensor de inclinación Babor S_B Tabla 4. 1 Puerto B En el Puerto C, sus 4 bits más bajos se han destinado para la recepción de los sensores de lleno de los tanques de lastre, en tanto que RC.4 y RC.5 colaboran con la activación de las bombas de desfogue de Babor por lo que constan como salidas. Finalmente se utiliza el pórtico RC.6 para la transmisión serial desde el PIC hacia el computador del estado de nivelación de la nave y del nivel de lastre en los respectivos tanques. Por lo tanto su configuración es la siguiente: TRISC=%10001111 La Tabla 4.2 indica el destino de los referidos pórticos. 71 PUERTO C Puerto Función Nemónico RC.0 Sensor de lleno Tanque Estribor-Proa SLE_PROA RC.1 Sensor de lleno Tanque Estribor-Popa SLE_POPA RC.2 Sensor de lleno Tanque Babor-Proa SLB_PROA RC.3 Sensor de lleno Tanque Babor-Popa SLB_POPA RC.4 Bomba de desfogue Babor-Proa PB_PROA RC.5 Bomba de desfogue Babor-Popa PB_POPA RC.6 Transmite la información del estado - Tabla 4. 2 Puerto C En el Puerto D se utiliza RD.1 como salida ya que mantiene el control del led azul que indica que una operación de nivelación se encuentra en proceso. Los pórticos RD.2 a RD.7 se destinan al encendido o apagado de las bombas de suministro de lastre y a dos bombas de desfogue, según se detalla en la Tabla 4.3 a continuación. 72 PUERTO D Puerto Función Nemónico RD.0 - - RD.1 Led Azul azul RD.2 Bomba de desfogue Estribor-Proa PE_PROA RD.3 Bomba de desfogue Estribor-Popa PE_POPA RD.4 Bomba de suministro a Estribor-Proa P_S_E_PROA RD.5 Bomba de suministro a Estribor-Popa P_S_E_POPA RD.6 Bomba de suministro a Babor-Proa P_S_B_PROA RD.7 Bomba de suministro a Babor-Popa P_S_B_POPA Tabla 4. 3 Puerto D La configuración consecuente en el Puerto D es la siguiente: TRISD=%00000001 El Puerto E se encuentra disponible. 4.2. IDENTIFICADORES DE VARIABLES DEL PROGRAMA La Tabla 4.4 a continuación, muestra las variables utilizadas en el programa, su propósito y el nemómico correspondiente: 73 Variables del programa Identificador Tipo Propósito BANDERA BYTE Auxiliar para reconocer vacíos BBP BYTE Auxiliar indica si se vació el tanque babor-popa BBR BYTE Auxiliar indica si se vació el tanque babor-proa BEP BYTE Auxiliar indica si se vació el tanque estribor-popa BER BYTE Auxiliar indica si se vació el tanque estribor-proa VADQUIRIDO WORD Valor adquirido en el conversor A/D VB_POPA WORD Valor de calibración sensor vacío babor-popa VB_PROA WORD Valor de calibración sensor vacío babor-proa VE_POPA WORD Valor de calibración sensor vacío estribor-popa VE_PROA WORD Valor de calibración sensor vacío estribor-proa Tabla 4. 4 Variables usadas en el programa Cabe destacar que aunque VB_POPA, VB_PROA, VE_POPA y VE_PROA se declaran variables, realmente actúan como constantes en el programa ya que al iniciar éste son cargadas con los valores de calibración necesarios para la detección del estado en el cual la bomba de desfogue de lastre se encuentra trabajando sin líquido, condición que se ha denominado vacío. Los valores cargados en estas variables son los siguientes: VE_PROA = %1001111010110111 ; 9EB7 3.1 VDC VE_POPA = %1001100110011001 ; 9999 3 VDC VB_PROA = %1011111111111111 ; BFFF 3.75 VDC 74 VB_POPA = %1100001010001110 ; C28E 3.8 Estos valores son comparados con el valor adquirido en el respectivo pórtico análogo / digital, en la variable VADQUIRIDO, para establecer el hecho de que la bomba está trabajando con o sin líquido. Para establecer el valor de calibración deben tomarse las medidas de voltaje en el terminal positivo de la bomba cuando ésta se encuentra trabajando sin líquido. Este valor debe convertirse en el hexadecimal correspondiente luego de realizar una sencilla regla de tres simple, en la cual participan los máximos valores a alcanzarse que son de 5 V DC equivalentes a FFFFh o 65535d y el valor medido. 4.3. FLUJOGRAMA GENERAL DEL PROGRAMA Luego de establecer las definiciones básicas de los puertos del PIC y de establecer las variables del programa se procede a ejecutar rutinas básicas previas a establecer el control automático de la estabilización. En primer lugar y como precaución se realiza el apagado de todas las bombas del sistema mediante el procedimiento APAGA, igualmente se apagan los leds indicadores de situación. Posteriormente y encendiendo el led amarillo se realiza el vaciado de lastre de los respectivos tanques, ésta operación es realizada por la subrutina VACIA_TANQUES cuya descripción se realiza posteriormente. 75 Efectuada la operación de vaciar los tanques, se apaga el led amarillo, y con el objeto de proveer una cantidad igual de lastre a todos los tanques, se procede a ingresar lastre a los cuatro tanques durante 3.5 segundos, tiempo aproximado para obtener la mitad de los tanques con líquido. Estas acciones las toma la subrutina MEDIO_TANQUE. Con el propósito de dejar la nave estabilizada para el proceso de estiba, se procede a realizar una primera nivelación llamando a PRIMERA, subrutina que en su código es similar al código de atención de la interrupción, variando únicamente el hecho de que el procedimiento PRIMERA retorna mediante la instrucción RETURN que lo lleva a ejecutar la siguiente instrucción desde donde se llamó a la subrutina, en tanto que, las instrucciones de atención a la interrupción finalizan con RESUME lo que permite que una vez concluido el proceso se regrese a la misma instrucción que se estaba ejecutando cuando se produjo la interrupción. Finalizado el proceso de nivelación inicial, recién se activa la interrupción y se ingresa en el programa principal que únicamente consiste en producir el parpadeo del led verde y esperar que se produzca una interrupción disparada por los sensores de mercurio al detectarse una desviación del plano de la nave. De producirse la interrupción se la atiende mediante la subrutina Interrupcion de la que no se retornará en tanto exista alguno de los sensores de estabilidad activados. El Flujograma a continuación resume la operación del programa. 76 Inicio Definiciones básicas Apagar bombas Apagar leds Enciende led amarillo Vaciar tanques de lastre Apaga led amarillo Ingresa medio tanque de lastre Realiza primera nivelación Parpadea led verde NO Interrupción? SI Proceso de Nivelación SI Desnivel? NO 77 4.4. SUBRUTINAS PRIMARIAS DE NIVELACIÓN Inicio Apaga led verde Apaga bombas Pausa 800 ms Mientras A un sensor esté activo SI Si es Babor y no Proa Prende led azul ni Popa Subrutina BABOR NO SI Si es Babor y Proa Prende led azul Subrutina BABOR_PROA NO SI Si es Babor y Popa Prende led azul Subrutina BABOR_POPA NO B 78 B SI Si es Estribor y no Prende led azul Proa ni Popa Subrutina ESTRIBOR NO SI Si es Estribor y Proa Prende led azul Subrutina ESTRIBOR_PROA NO SI Si es Estribor y Popa Prende led azul Subrutina ESTRIBOR_POPA NO SI Prende led azul Si es Proa Subrutina PROA NO SI Si es Popa Prende led azul Subrutina POPA NO A Apaga led azul Fin 79 El Flujograma que antecede ilustra el trabajo a realizarse cuando se produce ya sea la primera nivelación del barco o el llamado a la interrupción debido a la activación de uno o varios de los sensores de nivel. Otro pequeño detalle en el que se diferencian es que en la interrupción luego de la pausa de 800 ms para permitir asegurar el estado, se consulta si persiste el estado de interrupción, esto ya que podría tratarse de un cierre momentáneo de un sensor que desaparece en ese lapso ya no requiriéndose del proceso de estabilización. Entendiéndose que no es posible tener al mismo tiempo desviaciones hacia Proa y Popa al mismo tiempo, e igualmente no es posible desviaciones hacia Estribor y Babor al mismo tiempo, entonces existen ocho posibles situaciones que se pueden producir al desnivelarse la nave y éstas son: Hacia Proa únicamente; hacia Popa únicamente; hacia Estribor únicamente; hacia Babor únicamente; y, las combinaciones hacia Proa y Estribor al mismo tiempo; hacia Proa y Babor al mismo tiempo; hacia Popa y Estribor al mismo tiempo; y finalmente hacia Popa y Babor al mismo tiempo. Por ello en el algoritmo de los procedimientos de nivelación se examinan todas estas posibilidades y en el caso de incidir en una de ellas se llama al procedimiento apropiado para efectuar la corrección. 80 Cabe anotar que el código se encuentra inmerso en un gran lazo WHILE que examina los sensores de mercurio, si al menos uno de ellos continúa cerrado entonces persiste el proceso de nivelación. La actividad de estos procedimientos, a más de ser perceptible en la búsqueda de nivel de la nave, está anunciada con el encendido del led color azul sobre el puente de mando. 4.5. SUBRUTINAS SECUNDARIAS DE NIVELACIÓN Los procesos anteriores llaman, según el caso de desviación, a rutinas secundarias que efectúan el trabajo de encender y/o apagar las bombas ya sean de suministro de lastre o de evacuación del mismo con el objetivo principal de producir la nivelación del barco. Estas subrutinas son similares en su accionar básico, difieren en cuanto a las bombas que activan o desactivan y por supuesto en cuanto a los sensores que examinan para determinar las acciones a tomar. Como regla general, en todos los casos se ha tomado como primera opción el retirar lastre de los tanques en donde se produjo la desviación a la vez que se introduce agua en los tanques diametralmente opuestos, esto con los objetivos de disminuir el tiempo tomado en la nivelación y reducir el rebote producido al ingresar o evacuar líquido de los tanques. Sólo si esta acción se ve interrumpida por el vaciado de uno 81 de los tanques en que se produjo la escoración se continua tratando de ingresar lastre en los tanques opuestos para producir la compensación; sin embargo al depositar lastre en estos tanques se podría producir la señal de lleno, situación en la cual se procede a acciones combinadas entre los tanques disponibles, esto es aquellos en los que aún se puede evacuar agua y los que todavía pueden recibir líquido. El diagrama de flujo a continuación refleja la subrutina Babor que se desarrolla cuando se ha producido una inclinación hacia ese lado. 82 A Inicio Pausa SI Se 80ms Llame Compensación OK compensó? NO Sensor Proa o SI Sensor Proa o Popa? SI Popa? Return NO Return NO Transmite Pausa 80ms Mientras Babor y no Proa ni Popa Mientras Babor y no Active bombas de Babor y suministro de Estribor lleno Proa ni lleno Popa, ni Popa ni Proa Informe estado de bombas Active bombas de suministro de Estribor Adquiera y compare valores para determinar si tanques Babor están vacíos y Estribor no llenos Informe estado de bombas Informe estado de tanques Informe estado de tanques Apague bombas Babor y suministro Estribor Informe estado de bombas Apague bombas de suministro de Estribor A Informe estado de bombas B 83 B C Llame Compensación OK SI Se Se compensó compensó? NO Llame Compensación OK Llame Compensación OK Sensor Proa o Popa? Return Return Pausa 80ms Estribor Proa SI NO Estribor Popa aún no lleno? aún no lleno? SI Mientras Babor y no lleno Estribor- Mientras Babor y no lleno Estribor- Popa , ni Popa ni Proa Proa , ni Popa ni Proa Active bombas: Babor-Proa, Active bombas: Babor-Popa, suministro de Estribor-Popa suministro de Estribor-Proa Informe estado de bombas Informe estado de bombas Adquiera y compare valores para Adquiera y compare valores para determinar si Babor-Proa está vacío determinar si Babor-Popa está vacío Informe estado de tanques Informe estado de tanques Apague bombas: Babor-Proa, Apague bombas: Babor-Popa, suministro de Estribor-Popa suministro de Estribor-Proa Informe estado de bombas C Informe estado de bombas 84 Al ingresar al procedimiento y luego de una pequeña pausa, se muestrean los sensores de Proa y Popa con el objetivo de determinar si tardíamente se activó uno de ellos. Esta acción es necesaria ya que de haberse producido una inclinación adicional a Proa o Popa, a más de la Babor que está en proceso, se debería procesar el caso combinado correspondiente por lo que siendo ésta la situación se termina la subrutina. Una vez verificado el caso estudiado, se envía hacia el computador vía serial un texto codificado indicando el ingreso a la subrutina, el programa del computador reflejará en los gráficos la escora producida. A continuación se toman las acciones para estabilizar el barco. Tratándose de una inclinación a Babor, la acción lógica primaria es la de eliminar lastre de esa área por lo que en tanto persista la inclinación a Babor y no se hayan activado ninguno de los sensores de Proa o Popa se encienden las bombas de desfogue de lastre de BaborProa y Babor-Popa, apoyando este proceso con la activación de las bombas de suministro hacia Estribor. Con el objetivo de detectar la condición de vacío en los tanques que se encuentran desfogando se produce una pausa de 300 ms, tiempo mínimo requerido para producir la estabilización de la condición de trabajo de la bomba ya sea que lo esté haciendo en el medio líquido o esté trabajando sin él. Al mismo tiempo se sensa los estados de lleno en los tanques que están recibiendo lastre. Se informa a través del puerto serial el estado actual de las bombas para que se refleje en la pantalla del computador el hecho de que se encuentran trabajando las 85 bombas que se activaron previamente, el procedimiento encargado de esta acción se denomina ESTADO_BOMBAS. Considerando que las bombas se encuentran estables, se adquiere el voltaje de trabajo en el correspondiente puerto análogo-digital, tanto para la bomba de BaborProa como para la de Babor-Popa, las subrutinas a cargo de tomar los valores son ADBR y ADBP correspondientemente. En el caso de que uno o ambos de los valores adquiridos sean mayores que los valores fijados en la calibración para muestreo de vacíos se cambia la variable BANDERA al valor 1 que ocasionará el término del lazo While. Mediante las subrutinas TANQUE_BR, TANQUE_BP, TANQUE_ER y TANQUE_EP se transmite el estado de los tanques hacia el computador. El abandonar el lazo implica que una o varias de las siguientes condiciones ha cambiado: el sensor de Babor ya no se encuentra cerrado lo que indicaría que se produjo la estabilización; BANDERA ha adquirido el valor 1 determinando que uno o ambos de los tanques involucrados se encuentra vacío; uno de los sensores de Proa o Popa se encuentran activos indicando el cambio de caso en la inclinación. Cuando ha salido del lazo, se apagan las bombas, se actualiza en la pantalla del computador el estado de las bombas. A continuación se consulta si el sensor de Babor ya no está cerrado, lo que se comprendería como que se alcanzó la compensación y en cuyo caso se abandonaría el procedimiento. 86 Si se continúa en la misma subrutina, nuevamente, se consulta si se encuentra activo uno de los sensores de Proa o Popa, hecho que de producirse originaría la salida de la subrutina para que se procese el caso correspondiente. Si no se alcanzó la compensación y se ha llegado a este punto se entiende que uno de los tanques de lastre involucrados en la operación anterior fue vaciado por lo que no es posible retirar más peso del lado de babor, la acción a tomarse corresponde a incrementar lastre en el lado opuesto, en este caso Estribor, para producir el efecto contrario al de la desviación original. Entonces se ingresa en un lazo que persiste en tanto el sensor de Babor se encuentre cerrado y los sensores de lleno de los tanques de lastre de Estribor-Proa y Estribor-Popa no indiquen que uno o los dos tanques se han llenado; además se controla en la misma condición que no se haya producido inclinación hacia Proa o Popa. Para el ingreso de lastre en los tanques opuestos se activan las bombas de suministro de estribor, se transmite el estado de las bombas e igualmente se informa el estado de los tanques involucrados mediante llamados a las subrutinas TANQUE_ER y TANQUE_EP. El abandonar el lazo implica o que ya no existe la señal de Babor entendiéndose que se produjo la nivelación; o que alguno o los dos tanques de lastre se encuentran en situación de lleno por lo que no es posible continuar en este proceso; o que se produjo una de las señales ya sea de inclinación a Proa o Popa. 87 En todo caso, finalizado el lazo, se apagan las bombas de suministro; se informa el estado de las bombas y se interroga si ya no existe la señal de Babor que establecería que se produjo el control esperado y marcaría el retorno de la subrutina. Nuevamente, de llegar a este punto, se muestrean los sensores de Proa y Popa, en el caso de ser positivo se retorna para procesar el nuevo caso. De haberse alcanzado este punto, implica que uno o los dos tanques de lastre de estribor se llenaron por lo que deben tomarse otras acciones para conseguir la estabilización. Las posibles acciones, una vez reducidas las posibilidades son las siguientes: a) Si no se encuentra vacío el tanque de lastre Proa-Babor y no está lleno el tanque Popa-Estribor, entonces con algoritmos similares a los descritos anteriormente se evacuará lastre del tanque Proa-Babor en tanto se introduce lastre en el tanque Popa-Estribor controlando los respectivos sensores e informando vía serial el estado de las bombas y tanques participantes. b) De no darse las condiciones del ítem anterior entonces se pasa a verificar si no se encuentra vacío el tanque de lastre Popa-Babor y no está lleno el tanque Proa-Estribor, entonces con algoritmos similares a los descritos anteriormente se evacuará lastre del tanque Popa-Babor en tanto se introduce lastre en el tanque Proa-Estribor controlando los respectivos 88 sensores e informando vía serial el estado de las bombas y tanques participantes. Al llegar a este punto se verifica si se dio o no la estabilización, y según sea el caso se transmite el código correspondiente. Cabe indicar que si no se llegara a compensar, al retornar hacia la llamada de interrupción o primera nivelación nuevamente se intentará solucionar el desnivel ya que estas rutinas se ejecutan en tanto exista uno o más sensores de estabilidad activos. Las restantes subrutinas que engloban los ocho casos posibles en que puede incurrir un estado inestable, son similares en su accionar. Para ilustrar el trabajo de estos procedimientos se presenta a continuación las tablas (4.5, 4.6, 4.7, 4.8) que muestran los casos, las acciones posibles y las bombas involucradas. 89 PRIMERA OPCIÓN Bombas de desfogue de tanques de Bombas de suministro a tanques de lastre lastre Inclinación Estribor- Estribor- BaborBaborEstribor- Estribor- BaborBaborhacia Proa Popa Proa Popa Proa Popa Proa Popa Babor ON ON ON ON Estribor ON ON ON ON Proa ON ON ON ON Popa ON ON ON ON Babor-Proa ON ON BaborPopa ON ON EstriborProa ON ON EstriborPopa ON ON - Tabla 4. 5 Primera Opción SEGUNDA OPCIÓN Bombas de suministro a tanques de lastre Inclinación hacia Estribor-Proa Estribor-Popa Babor-Proa Babor-Popa Babor ON ON - - Estribor - - ON ON Proa - ON - ON Popa ON - ON - Babor-Proa - ON - - Babor-Popa ON - - - Estribor-Proa - - - ON Estribor-Popa - - ON - Tabla 4. 6 Segunda Opción 90 TERCERA OPCIÓN (acciones combinadas) Bombas de desfogue de tanques de Bombas de suministro a tanques de lastre lastre Inclinación Estribor- Estribor- Babor- Babor- Estribor- Estribor- Babor- Babor- hacia Proa Popa Proa Popa Proa Popa Proa Popa Babor - - ON - - ON - - Estribor ON - - - - - - ON Proa - - ON - - ON - - Popa - - - ON ON - - - Babor-Proa - - - - ON - - ON Babor-Popa - - - - - ON ON - Estribor-Proa - - - - - ON ON - Estribor-Pop - - - ON - - ON - Tabla 4. 7 Tercera Opción CUARTA OPCIÓN (acciones combinadas) Bombas de desfogue de tanques de Bombas de suministro a tanques de lastre lastre Inclinación Estribor- Estribor- Babor- Babor- Estribor- Estribor- Babor- Babor- hacia Proa Popa Proa Popa Proa Popa Proa Popa Babor - - - ON ON - - - Estribor - ON - - - - ON - Proa ON - - - - - - ON Popa - ON - - - - ON - Babor-Proa - - - - - - - - Babor-Popa - - - - - - - - Estribor-Proa - - - - - - - - Estribor-Pop - - - - - - - - Tabla 4. 8 Cuarta Opción 91 4.6. OTRAS SUBRUTINAS UTILIZADAS EN EL PROGRAMA 4.6.1. APAGA: Desde varios puntos del programa cuando se desea garantizar el apagado de todas las bombas, ya sean de suministro o evacuación de lastre, se llama a la subrutina APAGAR cuyo código únicamente consiste en hacer LOW a los pines del PIC que controlan las bombas. 4.6.2. VACIA_TANQUES: Se utiliza al iniciar el programa con el objetivo de evacuar todo el lastre existente en los tanques respectivos. El código consiste en un lazo que se repetirá en tanto no se haya detectado el vacío de todos los tanques de lastre. Para ello y en tanto no se ha sensado el vacío de cada uno de los tanques, se prende la bomba respectiva para retirar el agua, estando encendida la bomba se realiza la comparación por el respectivo canal analógicodigital, si se detecta el vacío se cambiarán las condiciones para apagar la bomba en cuestión. Una vez detectado el vacío en los cuatro tanques se abandona el procedimiento. 92 4.6.3. SUBRUTINAS QUE CAPTURAN LOS DATOS ANALÓGICOS La captura de datos del voltaje en las bombas que evacuan el lastre se realiza mediante sendas rutinas llamadas: ADBR, ADBP, ADER y ADEP; nemónicos correspondientes a adquisición (AD) y la ubicación del tanque; B por babor, E por estribor, P por popa, y, R por proa. El código correspondiente a ADBR, que sirve como ejemplo, realiza las siguientes actividades: - Se configura el registro ADCON0 preparándolo para el canal correspondiente, en el caso de babor-proa es el canal 2 (bits 3,4 y 5). La conversión del reloj se hace dividiendo la frecuencia de oscilación para 8; y, se activa el módulo de conversión mediante el bit 0. - Para anunciar que el proceso de conversión está en proceso, se prende el bit 2 de ADCON0. - Luego, en tanto se mantenga el valor de 1 en el bit 2 repetidamente se consulta si se produce el cambio a 0, indicativo de que concluyó el proceso. - Una vez realizada la captura y conversión se ubica la información en variable VADQUIRIDO, valor que servirá para realizar la comparación y detectar si se produjo o no el vacío en el tanque de lastre. Las rutinas de los otros tanques son similares, excepto que activan diferentes canales según la asignación de pines realizada en el hardware. 93 4.6.4. COMP_OK Y COMP_NOK Únicamente transmiten vía serial un código a ser interpretado por el programa de computador indicando si se alcanzó o no la estabilización de la nave. 4.6.5. ESTADO_BOMBAS La subrutina forma una cadena de caracteres a transmitirse hacia el computador para informar en la pantalla qué bombas se encuentran activas y cuáles no lo están. La cadena transmitida inicia con un asterisco y la letra I mayúscula que será detectado como información del estado de las bombas (Tabla 4.9). Luego en un orden preestablecido en la cadena consta un 1 o un 0 según la bomba se encuentre activa o no. Se cierra la transmisión con I y un asterisco. Cadena de información del estado de bombas Bombas de desfogue Bombas de abasto B = Babor * I BR ER BP EP BR ER BP EP I * P = Popa E = Estribor R = Proa Tabla 4. 9 Cadena de Estado de Bombas 94 4.6.6. SUBRUTINAS DE INFORMACIÓN DE LA CANTIDAD DE LASTRE EN LOS TANQUES Las subrutinas TANQUE_BR, TANQUE_BP, TANQUE_ER y TANQUE_EP tienen a cargo informar sobre el contenido de lastre en los respectivos tanques. Los estados posibles de detección corresponden a: tanque lleno mediante el respectivo sensor; tanque vacío mediante la conversión análogo-digital; y, si no se detecta ninguno de los casos anteriores se asume que el tanque tiene lastre aunque no es posible señalar la cantidad (Tabla 4.10) Cadena de información del estado de tanques de lastre tt n BR = BaborProa * T tt n T * 0 = Vacío BP = Babor- 1 Popa lastre ER = Estribor-Proa = Con 2 = Lleno EP= EstriborPopa Tabla 4. 10 Cadena de información del estado de tanques de lastre 95 Para indicar el inicio de la cadena se envía asterisco y T, luego se tienen dos caracteres que identifican el tanque al que se refiere la información (tt), a continuación con un dígito (n) se indica el estado del lastre en el tanque. Para cerrar la cadena se envía T y asterisco. . 96 CAPÍTULO 5 PRUEBAS Y RESULTADOS 96 5. PRUEBAS Y RESULTADOS En el presente capítulo se mostrarán variables que influyeron en el desarrollo del proyecto, como son: tiempos de llenado y vaciado, ángulo de activación de los sensores de inclinación y grados de inclinación con cargas específicas. Además se realizará una comparación del comportamiento del barco construido respecto a la simulación realizada. 5.1. TIEMPOS DE LLENADO Y VACIADO A pesar de que las bombas son de iguales características y su circuito de activación es idéntico, su funcionamiento es desigual, al momento de expulsar agua, por lo que para ciertas rutinas como MEDIO_TANQUE, fue necesario realizar un promedio de los tiempos de llenado, para tener aproximadamente la misma cantidad de lastre en los tanques, cabe indicar que las cañerías son importantes en este punto, puesto que una tubería estrangulada dificulta el paso del agua, haciendo más lento sobretodo el tiempo de llenado. De igual forma en la rutina en la cual se vacían los tanques, existen bombas que hacen el trabajo más rápido que otras, considerando claro que los tanques tienen la misma cantidad de agua. 97 En la Tabla 5.1 se muestran los valores de llenado y de vaciado de las bombas, tomando en cuenta que el llenado se lo hace desde las bombas ubicadas en el tanque central de abastecimiento. TIEMPOS LLENADO 1 2 3 4 5 6 7 8 9 10 EPROA 13”6 13”0 13”1 13”1 13”1 13”1 13”1 13”6 13”6 13”6 EPOPA 6”3 6”1 6”2 6”1 6”1 6”1 6”1 6”1 6”2 6”1 BPROA 9”2 9”8 9”8 9”3 9”3 9”4 9”5 9”3 9”4 9”4 BPOPA 12”7 12”8 12”6 12”7 12”6 12”6 12”7 12”6 12”7 12”7 BOMBA Tabla 5. 1 Tiempos de llenado TIEMPOS VACIADO 1 2 3 4 5 6 7 8 9 10 EPROA 5”2 5”3 5”1 5”13 5”15 5”2 5”1 5”0 5”2 5”1 EPOPA 6”23 6”2 6”1 5”9 6”2 6”0 6”1 6”0 6”22 6”1 BPROA 6”1 6”4 6”2 6”0 6”05 6”07 6”0 6”2 6”2 6”3 BPOPA 5”1 5”0 5”2 5”12 5”4 5”24 5”1 5”3 5”22 5”19 BOMBA Tabla 5. 2 Tiempos de vaciado 98 5.2. ÁNGULOS DE ACTIVACIÓN DE LOS SENSORES DE INCLINACIÓN Tomando en cuenta que ante mínimas desviaciones no es necesario tomar acciones de control puesto que la nave sigue dentro de los límites de estabilidad, se han calibrado los sensores de estribor y babor para activarse al tener 6 grados (Figura 5.1) de escoramiento, medidos desde el punto central transversal de la embarcación, siendo la base el agua de mar; esto se produce al poner 5 contenedores de los antes ya explicados, en cada una de las bandas. Fig. 5. 1 Inclinación para activación de los sensores de babor y estribor Como se explicó anteriormente es más difícil lograr un escoramiento a popa o a proa, sin embargo el ángulo en el cual empieza el control por la activación de cualquiera de estos sensores es de 3 grados (Figura 5.2). 99 Fig. 5. 2 Inclinación para activación de los sensores de popa y proa Para realizar un escoramiento hacia proa o popa se debe utilizar toda la carga admitida posible en los extremos longitudinales de la embarcación, usando incluso si es necesario las filas 0 (Figura 5.3) ya sea de la plataforma de popa o de proa, dependiendo de la inclinación que se desee. 5.3. GRADOS DE INCLINACIÓN CON CARGAS ESPECÍFICAS Se realizaron pruebas de escoramiento y recuperación de la nave, colocando contenedores en cada una de las filas y columnas, claro está, con las respectivas limitaciones de carga, para el correcto entendimiento de las ubicaciones de la carga, se hace referencia a la Fig. 5.3. 100 Fig. 5. 3 Distribución de filas y columnas en la nave Al colocar contenedores en la línea de crujía o cerca de ella (Columnas 4 y 5 Fig 5.3) ya sea en la plataforma de proa o popa, la desviación es mínima y en muchos casos inexistente, como lo muestra la tabla 5.4 para plataforma de popa y 5.5 para plataforma de proa. Para realizar el cálculo del ángulo, se tomó en cuenta la fila y columna en la cual se coloca la carga, el número de contenedores que se va a apilar, la distancia vertical que se tiene entre el punto sin inclinación y el punto con inclinación, como se muestra en la Figura 5.4. 101 Fig. 5. 4 Cálculo de ángulo de inclinación (fila,columna) Contenedor Distancia 1 2 (7,5) 3 4 1 2 (6,5) 3 4 0 Ángulo 0 0.15 0.48830334 0.15 0.48830334 0.25 0.81380387 0 0 0.15 0.48830334 0.15 0.48830334 0.25 0.81380387 (fila,columna) Contenedor Distancia 1 2 (5,5) 3 4 1 2 (4,5) 3 4 0 Ángulo 0 0.15 0.48830334 0.15 0.48830334 0.25 0.81380387 0 0 0.15 0.48830334 0.15 0.48830334 0.25 0.81380387 Tabla 5. 3 Grados de inclinación en la línea de crujía (Plataforma Popa) 102 (fila,columna) Contenedor Distancia 0 1 2 (3,5) 3 Ángulo 0 0 0 0.2 0.65105886 (fila,columna) Contenedor Distancia 1 (1,5) 3 12 2 (2,5) 3 4 0 0 0.15 0.48830334 0.15 0.48830334 NA 0 0.2 0.65105886 0.3 0.97653575 0 0 0 0 0.2 0.65105886 0.3 0.97653575 1 2 (0,5) 3 4 Ángulo 0 0 2 NA 1 0 Tabla 5. 4 Grados de inclinación en la línea de crujía (Plataforma Proa) En el punto central, comprendido entre las bandas de estribor o babor y la línea de crujía la desviación empieza a notarse (Columnas 2 y 7 Fig. 5.3), pero todavía sin dar motivos para que se activen ya sea el sensor de estribor o babor, como se puede observar en la tabla 5.6 para popa y 5.7 para proa. 12 NA= No Admite ese número de contenedores 103 (fila,columna) Contened Distancia Ángulo 1 2 (7,7) 3 4 1 2 (6,7) 3 4 0.15 0.4883033 0.35 1.1392518 0.65 2.115071 0.8 2.6025561 0.15 0.4883033 0.35 1.1392518 0.65 2.1150710 0.8 2.6025561 (fila,columna) Contened Distancia Ángulo 1 2 (5,7) 3 4 1 2 (4,7) 3 4 0.15 0.4883033 0.35 1.1392518 0.65 2.1150710 0.8 2.6025561 0.15 0.4883033 0.35 1.1392518 0.65 2.1150710 0.8 2.6025561 Tabla 5. 5 Grados de inclinación en punto medio entre línea de crujía y banda (Plataforma Popa) (fila,columna) Contened Distancia 1 2 0.2 Ángulo 0.6510589 0.4 1.3019496 (6,7) (fila,columna) Contened Distancia Ángulo 1 2 0.2 0.6510589 0.4 1.3019496 0.2 0.6510589 0.5 1.6272795 0.8 2.6025561 (4,7) NA NA NA NA 1 2 (5,7) 0.2 0.6510589 0.4 1.3019496 1 2 (3,7) NA 3 NA NA Tabla 5. 6 Grados de inclinación en punto medio entre línea de crujía y banda (Proa) 104 Para el siguiente caso se toman en cuenta las cargas que se colocan en la banda de estribor o popa (Columna 0 y 9 Fig. 5.3), las cuales dan origen al escoramiento mayor de la nave, provocando incluso la activación de los sensores, como se muestra en las tablas 5.8 para la plataforma de proa y 5.9 para la plataforma de popa. (fila,columna) Contened Distancia 1 2 (3,9) 3 0.3 Ángulo 0.9765357 0.7 2.2776036 1.45 4.7097432 (fila,columna) Contened Distancia 1 2 (1,9) 3 NA 1 2 (2,9) 3 NA 4 0.5 1.6272795 0.9 2.927341 1.7 5.5171230 1 2 (0,9) 3 4 0.5 Ángulo 1.6272795 0.9 2.9273411 1.7 5.5171230 2.1 6.8042436 0.5 1.6272795 0.9 2.9273411 1.7 5.5171230 2.1 6.8042436 Tabla 5. 7 Grados de inclinación en las bandas (Plataforma Proa) 105 (fila,columna) Contened 1 2 (3,9) 3 4 1 2 (2,9) 3 4 Distancia 0.6 Ángulo 1.95250448 0.9 2.92734115 1.1 3.57632601 1.8 5.83947866 0.35 1.13925188 0.75 2.44009951 1.1 3.57632601 1.8 5.83947866 (fila,columna) Contened 1 Distancia 0.35 2 (1,9) 3 4 1 2 (0,9) 3 4 Ángulo 1.13925188 0.75 2.44009951 1.1 3.57632601 1.8 5.83947866 0.6 1.95250448 1.1 3.57632601 1.8 5.83947866 2.4 7.76514786 Tabla 5. 8 Grados de inclinación en las bandas (Plataforma Proa) Dando a demostrar que mientras más cerca esté la carga de la línea de crujía el desnivel que provoca es mínimo, mientras que en las bandas el escoramiento es importante, el desnivel mayor se da al colocar 4 contenedores en las coodernadas (0,0) o (0,9) para proa y (7,0) o (7,9) para popa (Fig. 5.3), esto es debido a que sólo se está aplicando una fuerza en el eje transversal (sentido estribor-babor); se pensaría que el mayor grado debería darse en las coordenadas (0,0) o (0,9) para popa y (6,0) o (6,9) para proa (Fig. 5.3), pero se debe considerar que en este caso ya existe una fuerza en el eje longitudinal (sentido proa-popa) que trata de nivelar el barco en el sentido horizontal. Como se explicó anteriormente no se hicieron pruebas en las bodegas internas debido a que al estar cerca de la línea de crujía no producen escoramiento, 106 ayudando a mejorar la estabilidad de la embarcación, las columnas (Fig. 5.3)1, 3, 6 y 8 tienen mucha similitud con 0, 2, 7 y 9 respectivamente; por lo que no se ha creído necesario la exposición de sus ángulos. 5.4. OTROS FACTORES A CONSIDERAR Para lograr la estabilidad inicial de la embarcación, sin la intervención del programa, se debe tomar muy en cuenta todos los elementos que conforman la embarcación, por ejemplo, colocar los tanques de lastre diagonalmente opuestos para anular los vectores fuerza que se produzcan; de igual manera con las bodegas internas. El tanque central de abastecimiento, debe ser construido o colocado de tal forma que 107 5.5. COMPARACIÓN DEL COMPORTAMIENTO DEL BARCO CONSTRUIDO RESPECTO A LA SIMULACIÓN REALIZADA. Una de las diferencias que se marca en cuanto a la compensación de la nave, es que en la simulación no existe rebote, es decir, en la práctica al momento de compensar se desaloja o introduce agua en los tanques de lastre, esta acción produce que la embarcación trate de alcanzar la horizontalidad, sin embargo existen casos en los cuales el agua fue demasiada, lo que conlleva una inclinación hacia la otra banda de la embarcación, activándose el sensor opuesto y por lo tanto su compensación. Es por eso importante tener las bodegas internas con carga para aumentar la estabilidad y disminuir el tiempo de vaivén que se produce. En la práctica dependiendo de la bomba y su cañería, el agua entra más rápido o lento hacia los tanques, por lo cual el nivel de agua no siempre es el mismo, provocando tener inclinaciones al inicio de la operación, no siendo así en la simulación. Otro punto importante son las compensaciones de proa y popa, en la simulación los tanques desalojan la misma cantidad de agua en un tiempo determinado, en cambio en la práctica, como se mencionó anteriormente no siempre es así, produciendo en ocasiones escoramientos hacia babor o estribor, cambiando a un caso combinado, por lo que la compensación se vuelve complicada. Para efectos de la simulación, los grados de inclinación a considerarse empezaron desde 1, sólo para efectos de visualización, en el caso práctico como se ha 108 mencionado la activación de los sensores de inclinación se calibró a los 6 grados en estribor y babor; y 3 en los casos de proa y popa. Los casos combinados, por ejemplo proa-estribor, no fueron considerados para la simulación, debido a que el efecto de dar proa o popa es complicado. La simulación, se basa en compensar el ángulo producido por la colocación de cargas; en la embarcación a escala, el proceso se lo realiza hasta que el sensor activado se apague, logrando claro está la nivelación. El funcionamiento de la simulación mostró que al sacar agua de los tanques involucrados en el escoramiento mientras se coloca lastre en los tanques opuestos hace que el nivel de agua permanezca estable, es decir no se llega a tener llenos o vacíos, al trabajar con bombas buenas en la vida real se debería tener el mismo efecto. 109 CAPÍTULO 6 CONCLUSIONES Y RECOMENDACIONES 109 6. CONCLUSIONES Y RECOMENDACIONES 6.1. CONCLUSIONES Al considerar un cuerpo en un líquido, resulta difícil trabajar sobre este medio, por lo que al tratarse de un barco carguero es importante la estabilidad, estanqueidad, equilibrio, flotabilidad y estructura para la seguridad de la tripulación, de la carga y de la nave; para esto se recopilan datos importantes propios de la embarcación como es el centro de gravedad, empuje, peso de la embarcación, distribución de la sala de máquinas y tanques de lastre; además de factores externos como el peso de la carga a colocar, viento y densidades del agua (salada y dulce). El objetivo de nivelar la embarcación de forma automática se cumple de una manera eficiente, aumentando incluso casos de compensación que no se encuentran en la simulación, realizando así cuatro alternativas para siempre llegar a la compensación. El centro de gravedad es lo que permite tener más estable o no a la embarcación, es decir mientras más bajo se encuentre más estable será la nave, para complementar el estudio de nivelación, es importante también considerar al empuje (fuerza que tiende a impulsar a la nave hacia arriba), debido a que si el centro de empuje está más alto que el de gravedad, el equilibrio es estable, si ambos coinciden es indiferente y si está más bajo es inestable. 110 Para lograr la estabilidad se debe tomar muy en cuenta las normas que rigen la estiba, es decir no colocar cargas en un solo lado de la embarcación para no provocar escoramiento no recuperable, siempre colocar primero las cargas que van en los contenedores internos para lograr mejorar la estabilidad y tener una línea de vista al extremo de proa que asegure una correcta conducción del barco en mar abierto. La estabilidad de proa a popa o viceversa (estabilidad longitudinal) es difícil que se produzca, ya que los barcos son más largos que anchos, y es estable en este sentido por su construcción; por lo que se hace un estudio más completo de la estabilidad transversal (estribor-babor). A pesar de que las bombas que se usaron en el proyecto son de igual características su desempeño es distinto, lo que produce en ciertas ocasiones tener rebotes de estribor a babor o viceversa. Si bien el barco que se usó fue hecho a escala, la distribución de los tanques de lastre es distinta a la realidad, ya que en embarcaciones reales los tanques son distribuidos en todo el casco del barco, teniendo mayor acción de control en cualquier punto; cabe anotar que la forma de los tanques de lastre fue diseñada especialmente para poder colocar la bomba respectiva. Al momento de realizar la compensación, existen dos acciones que conciernen a los tanques de lastre, esto es sacar o meter lastre en ellos, con la primera acción el barco se nivela compensando el peso que se adquirió al colocar la carga, por lo tanto 111 vuelve a su horizontalidad inicial; pero si el agua se acabó en uno de los tanque empieza la segunda alternativa, haciendo hundir la nave buscando un nuevo plano de horizontalidad; en los dos casos llegando a la nivelación. El tanque central de abastecimiento fue colocado en la parte central longitudinal de la nave para mejorar la estabilidad, la altura de este tanque es inferior a la que tiene la banda de babor o estribor, para que pueda ingresar el lastre a este tanque se ha incluido una cañería vertical que permite la salida del aire que es reemplazado por el lastre. Cuando el nivel del agua exterior del barco sobrepasa la altura del tanque central esta cañería recibirá agua hasta el mismo nivel exterior. El desempeño de los sensores marca la eficiencia del proyecto, por lo cual los circuitos de control están diseñados de tal manera que permitan la seguridad de envío y recepción de datos desde y hacia el PIC. Un caso especial son los sensores de vacío los cuales dependen del funcionamiento de las bombas; por esto los valores calculados para la comparación en el conversor a/d son únicos para cada bomba. Si se llegase a trabajar con bombas que aseguren un funcionamiento ideal, es decir introducir y desfogar la misma cantidad de lastre, el nivel de agua en los tanques permanecería casi constante sin llegar a tener llenos o vacíos. La parte mecánica en cuanto a los sensores tuvo ciertas variaciones durante el proceso, los sensores de lleno fueron modificados para trabajar fuera del tanque, en un inicio lo hacían dentro del él, provocando en ocasiones que se mojen; los sensores de vacío sufrieron algunos cambios para la obtención de los datos, se 112 empezó usando comparadores de voltaje con amplificadores operacionales, pero los datos adquiridos variaban mucho, por lo que el control no era consistente; al trabajar con el conversor a/d la adquisición del dato mejora y permanece estable. 6.2. RECOMENDACIONES Si bien se ha tomado en cuenta el ángulo de activación de los sensores de inclinación de estribor y babor en seis grados, se lo podría hacer más sensible, sin embargo no es recomendable ya que podría producirse continuos balanceos de la nave hacia las bandas. Las bombas de succión son una parte muy importante en la eficiencia del control, por lo que para mejorar el rendimiento se recomienda cambiar por bombas que ofrezcan mayor seguridad, no necesiten mantenimiento y desfoguen la misma cantidad de agua. Para poner en marcha el sistema en la vida real, se necesitan hacer cambios sobre todo en lo que se refiere al sistema de control de las bombas, se añadiría así un sistema de potencia que pueda manejar de una manera adecuada bombas de mayor fuerza. Modificando la simulación se lograría realizar un diagrama preciso de colocación de contenedores teniendo un grado de inclinación mínimo e incluso la estabilidad perfecta, logrando de esta manera que la embarcación navegue con seguridad llevando su máxima carga y por consiguiente mejorando el aspecto económico. 113 Una variación interesante para realizar en barcos reales, sería cambiar los sensores de mercurio por sensores láser que darían una mayor capacidad de control. Con éstos se podría conocer con mayor precisión y seguridad el grado de nivelación de la nave. REFERENCIAS BIBLIOGRÁFICAS 1. ECG SEMICONDUCTORS, “Master Replacement Guide”, Philips ECG, Barcelona 1981. 2. GRAN ENCICLOPEDIA SALVAT, El Mar. Tomo 2, 3 y 4. Salvat S.A. de Ediciones, Pamplona. 1976 3. ANGULO, José, ROMERO Susana, ANGULO Ignacio, MICROCONTROLADORES <<PIC>>. Diseño práctico de aplicaciones. Segunda Parte: PIC 16F87X. Segunda Edición. McGRAW-HILL. España. 2000 4. MICROCHIP Technology Inc, 28/40-pin-8-Bit CMOS FLASH Microcontrollers, 1998 5. REYES, Carlos, Aprenda rápidamente a programar Microcontroladores PIC 16F87X. Primera Edición. Gráficas Ayerve C.A.. 2004 REFERENCIAS BIBLIOGRÁFICAS ELECTRÓNICAS 1. Centro de Capitanes de Ultramar, Estabilidad en buques cargueros http://www.capitanes.org.ar/asuntos_tecnicos/apuntes/estabilidad/estabilidad_ del_buque.htm 2. La Biblioteca Digital de la UPC, Estiba, http://bibliotecnica.upc.es/bib280/examens/ApEstiba-1.pdf 3. Centro de Capitanes de Ultramar, Reglas de estiba, http://www.capitanes.org.ar/Index_Set.htm 4. Club del Mar, términos marítimos y principios físicos http://www.clubdelamar.org/per.htm 5. Wikipedia, Estiba http://es.wikipedia.org/wiki/Estiba 6. Centro de empuje www.acienciasgalilei.com/fis/fis-recreativa/hidrostatica.htm#centroempuje 7. Wikipedia, Peso Específico http://es.wikipedia.org/wiki/Peso_espec%C3%ADfico 8. Anónimo, Estabilidad en buques http://www.seed.slb.com/qa2/FAQView.cfm?ID=586&Language=ES 9. Anónimo, Normas de carga y descarga www.portovilagarcia.com/castellano/ archivos_pdf/normascarga_descarga.pdf ANEXOS ANEXO CAPÍTULO 2 PROGRAMA DE SIMULACIÓN 'DECLARACIÓN DE VARIABLES GENERALES Dim I As Integer Dim Old_FB1 As Integer Dim LLenando As Boolean Dim Escora_Babor, Escora_Estribor As Currency Dim SubirFI, Finalizar As Boolean Dim Contador As Integer Dim Escora As Integer Dim Subir4, Subir3, Subir2 As Boolean Dim Seguir_T3 As Boolean 'PROCESO AUTOMÁTICO 'DECLARACIÓN DE VARIABLES Private Sub Automatico_Click() Dim NalAzar As Integer 'VARIABLE QUE GUARDA EL VALOR RANDÓMICO Dim Suma As Integer 'UBICACIÓN DE LA CARGA Dim FlexN As Integer 'LUGAR DONDE SE ALAMACENA LA MATRIZ DE CARGA DE CONTENEDORES Dim Fila As Integer Dim Columna As Integer Dim X_por_Pos As Integer Randomize Escora = 0 Label5.Visible = True Finalizar = False Call Inicio_Click Do While 1 = 1 And Not Finalizar ' NÚMERO DE PAQUETES A PONER NalAzar = 0 Do While NalAzar < 5 Or NalAzar > 20 'ELECCIÓN DEL VALOR RANDÓMICO NalAzar = (Rnd()) * 100 Loop Suma = 0 Do While Suma < NalAzar ' UBICACIÓN EN FLEX FlexN = 0 Do While FlexN < 1 Or FlexN > 2 FlexN = (Rnd()) * 10 Loop ' ' LA COLUMNA EN AMBOS CASOS ES DE 0 A 9 Columna = 11 Do While Columna > 9 Columna = (Rnd()) * 10 Loop ' If FlexN = 1 Then Fila = 9 Do While Fila > 7 Fila = (Rnd()) * 10 Loop X_por_Pos = 0 Do While X_por_Pos < 1 Or X_por_Pos > 4 X_por_Pos = (Rnd()) * 10 Loop ' MFlexI(Fila, Columna) = X_por_Pos FlexI.Row = Fila 'FLEXI, REFIERE A PLATAFORMA DE POPA FlexI.Col = Columna 'SELECCIÓN DE COLOR DEPENDIENDO DEL NÚMERO DE CONTENEDORES Select Case X_por_Pos Case Is = 1 FlexI.CellBackColor = &HC7ACB ' CAFÉ Case Is = 2 FlexI.CellBackColor = &HFF& 'ROJO Case Is = 3 FlexI.CellBackColor = &H80FF& 'NARANJA Case Is = 4 FlexI.CellBackColor = &HFFFF& 'AMARILLO End Select Suma = Suma + X_por_Pos Else ' PARA FLEXII, SE REFIERE A PLATAFORMA DE PROA Fila = 9 Do While Fila > 6 Fila = (Rnd()) * 10 Loop ' SEGÚN LA FILA SE DEBE GENERAR EL NÚMERO DE PAQUETES A PONER Select Case Fila Case Is = 0, 1 X_por_Pos = 0 Do While X_por_Pos < 1 Or X_por_Pos > 4 X_por_Pos = (Rnd()) * 10 Loop Case Is = 2, 3 X_por_Pos = 0 Do While X_por_Pos < 1 Or X_por_Pos > 3 X_por_Pos = (Rnd()) * 10 Loop Case Is = 4, 5, 6 X_por_Pos = 0 Do While X_por_Pos < 1 Or X_por_Pos > 2 X_por_Pos = (Rnd()) * 10 Loop End Select MFlexII(Fila, Columna) = X_por_Pos FlexII.Row = Fila FlexII.Col = Columna ' SELECCIÓN DE COLOR DEPENDIENDO DEL NÚMERO DE CONTENEDORES Select Case X_por_Pos Case Is = 1 FlexII.CellBackColor = &HC7ACB ' CAFÉ Case Is = 2 FlexII.CellBackColor = &HFF& 'ROJO Case Is = 3 FlexII.CellBackColor = &H80FF& 'NARANJA Case Is = 4 FlexII.CellBackColor = &HFFFF& 'AMARILLO End Select Suma = Suma + X_por_Pos End If ' FLEX N Loop ' SUMA < NalAzar Call Evaluar_Click Timer3.Interval = 800 Timer3.Enabled = True Seguir_T3 = False DoEvents Do While Not Seguir_T3 DoEvents Loop Call Nivelar_Click 'SE PROCEDE A NIVELAR LA NAVE Timer3.Interval = 800 Timer3.Enabled = True Seguir_T3 = False DoEvents Do While Not Seguir_T3 DoEvents Loop Loop End Sub 'CASO ESPECIAL ESCORACIÓN A POPA Private Sub Escora_Popa_Click() Frame2.Visible = True Option1.Value = False Option2.Value = False End Sub 'CASO ESPECIAL ESCORACIÓN A PROA Private Sub Escora_Proa_Click() Frame3.Visible = True Option3.Value = False Option4.Value = False End Sub 'SE PRESIONA ESC PARA SALIR DEL PROCESO AUTOMÁTICO Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = 27 Then 'ESCape Finalizar = True Label5.Visible = False End If End Sub 'CASO ESPECIAL DE POPA Private Sub Option1_Click() Dim K As Long Dim T As Integer If Option1.Value = False Then Exit Sub Call Inicio_Click ' PONER LA CARGA EN POPA K=1 Timer3.Interval = 180 For I = 0 To 1 For J = 0 To 5 Timer3.Enabled = True Seguir_T3 = False DoEvents FlexIII.Row = I FlexIII.Col = J FlexIII.CellBackColor = &HC7ACB Do While Not Seguir_T3 DoEvents Loop 'CAMBIO DE IMAGEN DEPENDIENDO DEL GRADO DE INCLINACIÓN Select Case K Case Is = 4 Proa_popa.Picture = Un_grado_P.Picture Case Is = 8 Proa_popa.Picture = dos_grados_p.Picture Case Is = 12 Proa_popa.Picture = tres_grados_p.Picture End Select K=K+1 Next J Next I ' UN TIEMPO DoEvents Timer3.Interval = 2000 Timer3.Enabled = True Seguir_T3 = False Do While Not Seguir_T3 DoEvents Loop ' LLAMAR A NIVELAR SIMULADO ESCORA A POPA DoEvents Timer3.Interval = 200 Contador = 0 Do While Contador < 12 Timer3.Enabled = True Seguir_T3 = False Do While Not Seguir_T3 DoEvents Loop TPopa_B.Value = TPopa_B.Value - 5 'RUTINA CON LA CUAL SE QUITA AGUA DE LOS TANQUES TPopa_E.Value = TPopa_E.Value - 5 TProa_B.Value = TProa_B.Value + 5 'RUTINA CON LA CUAL SE QUITA AGUA DE LOS TANQUES TProa_E.Value = TProa_E.Value + 5 DoEvents Contador = Contador + 1 'CAMBIO DE IMAGEN DEPENDIENDO DEL GRADO DE INCLINACIÓN Select Case Contador Case Is = 4 Proa_popa.Picture = dos_grados_p.Picture Case Is = 8 Proa_popa.Picture = Un_grado_P.Picture Case Is = 12 Proa_popa.Picture = Proa_Popa_Normal.Picture End Select If Contador = 12 Then Exit Do Loop Frame2.Visible = False End Sub 'RUTINA DE EVALUAR Private Sub Evaluar_Click() Dim I, J As Integer Escora_Babor = 0 Escora_Estribor = 0 For I = 0 To 7 For J = 0 To 9 If MFlexI(I, J) <> 0 Then ' NÚMERO DE CONTENEDORES EN ESA POSICIÓN If (J >= 0 And J <= 4) Then ' ESTRIBOR Escora_Estribor = Escora_Estribor + MV_P(I, J, MFlexI(I, J)) Else ' BABOR Escora_Babor = Escora_Babor + MV_P(I, J, MFlexI(I, J)) End If End If Next J Next I ' For I = 0 To 6 For J = 0 To 9 If MFlexII(I, J) <> 0 Then ' NÚMERO DE CONTENEDORES EN ESA POSICIÓN If (J >= 0 And J <= 4) Then ' ESTRIBOR Escora_Estribor = Escora_Estribor + MV_R(I, J, MFlexII(I, J)) Else ' BABOR Escora_Babor = Escora_Babor + MV_R(I, J, MFlexII(I, J)) End If End If Next J Next I ' For I = 0 To 1 For J = 0 To 5 If MFlexIII(I, J) <> 0 Then ' NÚMERO DE CONTENEDORES EN ESA POSICIÓN If (J >= 0 And J <= 2) Then ' ESTRIBOR Escora_Estribor = Escora_Estribor + MV_PP(I, J, MFlexIII(I, J)) Else ' BABOR Escora_Babor = Escora_Babor + MV_PP(I, J, MFlexIII(I, J)) End If End If Next J Next I ' For I = 0 To 1 For J = 0 To 4 If MFlexIV(I, J) <> 0 Then ' NÚMERO DE CONTENEDORES EN ESA POSICIÓN If (J >= 0 And J <= 1) Then ' ESTRIBOR Escora_Estribor = Escora_Estribor + MV_RR(I, J, MFlexIV(I, J)) Else ' BABOR If (J >= 3 And J <= 4) Then Escora_Babor = Escora_Babor + MV_RR(I, J, MFlexIV(I, J)) End If End If End If Next J Next I 'AQUI DEBEN SUMARSE TAMBIEN LAS DEL FLEXIII Y FLEXIV If CInt(Round(Escora_Estribor)) * 5 + TPopa_E.Value <> CInt(Round(Escora_Babor)) * 5 + TPopa_B.Value Then 'COMPARACIÓN DE VALORES DE TANQUES Y CARGA PARA TENER EL VALOR DE ESCORACIÓN If CInt(Round(Escora_Estribor)) * 5 + TPopa_E.Value - (CInt(Round(Escora_Babor)) * 5 + TPopa_B.Value) > 0 Then Text1.Text = CStr((CInt(Round(Escora_Estribor)) * 5 + TPopa_E.Value - (CInt(Round(Escora_Babor)) * 5 + TPopa_B.Value)) / 5) Escora = CInt(Text1.Text) 'VALOR DE LA ESCORACIÓN Label4.Caption = "E" Estado.Text = "ESTADO: ESCORA A ESTRIBOR" 'CAMBIO DE IMÁGENES DEPENDIENDO DEL GRADO DE INCLINACIÓN Select Case Escora Case Is = 1 Estribor_Babor_Popa.Picture = Un_Grado_B.Picture Estribor_Babor_Proa.Picture = Un_grado_E.Picture Case Is = 2 Estribor_Babor_Popa.Picture = Dos_Grados_B.Picture Estribor_Babor_Proa.Picture = Dos_Grados_E.Picture Case Is = 3 Estribor_Babor_Popa.Picture = Tres_Grados_B.Picture Estribor_Babor_Proa.Picture = Tres_Grados_E.Picture Case Is = 4 Estribor_Babor_Popa.Picture = Cuatro_Grados_B.Picture Estribor_Babor_Proa.Picture = Cuatro_Grados_E.Picture Case Is = 5 Estribor_Babor_Popa.Picture = Cinco_Grados_B.Picture Estribor_Babor_Proa.Picture = Cinco_Grados_E.Picture Case Is = 6 Estribor_Babor_Popa.Picture = Seis_Grados_B.Picture Estribor_Babor_Proa.Picture = Seis_Grados_E.Picture Case Is = 7 Estribor_Babor_Popa.Picture = Siete_Grados_B.Picture Estribor_Babor_Proa.Picture = Siete_Grados_E.Picture Case Is = 8 Estribor_Babor_Popa.Picture = Ocho_Grados_B.Picture Estribor_Babor_Proa.Picture = Ocho_Grados_E.Picture Case Is = 9, 10 Estribor_Babor_Popa.Picture = Diez_Grados_B.Picture Estribor_Babor_Proa.Picture = Diez_Grados_E.Picture Case Is = 11, 12 Estribor_Babor_Popa.Picture = Doce_Grados_B.Picture Estribor_Babor_Proa.Picture = Doce_Grados_E.Picture Case Is = 13, 14 Estribor_Babor_Popa.Picture = Catorce_Grados_B.Picture Estribor_Babor_Proa.Picture = Catorce_Grados_E.Picture Case Is = 15, 16 Estribor_Babor_Popa.Picture = Dieciseis_Grados_B.Picture Estribor_Babor_Proa.Picture = Dieciseis_Grados_E.Picture Case Is = 17, 18 Estribor_Babor_Popa.Picture = Dieciocho_Grados_B.Picture Estribor_Babor_Proa.Picture = Dieciocho_Grados_E.Picture Case Is = 19, 20 Estribor_Babor_Popa.Picture = Veinte_Grados_B.Picture Estribor_Babor_Proa.Picture = Veinte_Grados_E.Picture Case Is = 21, 22 Estribor_Babor_Popa.Picture = Veintidos_Grados_B.Picture Estribor_Babor_Proa.Picture = Veintidos_Grados_E.Picture 'Else: ' MsgBox "Se hundio!!" End Select Else Text1.Text = (CInt(Round(Escora_Babor)) * 5 + TPopa_B.Value - (CInt(Round(Escora_Estribor)) * 5 + TPopa_E.Value)) / 5 ' COMPRACIÓN DE VALORES DE CARGA Y TANQUES PARA TENER VALOR DE ESCORACIÓN Escora = CInt(Text1.Text) ' VALOR DE LA ESCORACIÓN Estado.Text = "ESTADO: ESCORA A BABOR" Label4.Caption = "B" 'CAMBIO DE IMÁGENES DEPENDIENDO DEL GRADO DE INCLINACIÓN Select Case Escora Case Is = 1 Estribor_Babor_Popa.Picture = Un_grado_E.Picture Estribor_Babor_Proa.Picture = Un_Grado_B.Picture Case Is = 2 Estribor_Babor_Popa.Picture = Dos_Grados_E.Picture Estribor_Babor_Proa.Picture = Dos_Grados_B.Picture Case Is = 3 Estribor_Babor_Popa.Picture = Tres_Grados_E.Picture Estribor_Babor_Proa.Picture = Tres_Grados_B.Picture Case Is = 4 Estribor_Babor_Popa.Picture = Cuatro_Grados_E.Picture Estribor_Babor_Proa.Picture = Cuatro_Grados_B.Picture Case Is = 5 Estribor_Babor_Popa.Picture = Cinco_Grados_E.Picture Estribor_Babor_Proa.Picture = Cinco_Grados_B.Picture Case Is = 6 Estribor_Babor_Popa.Picture = Seis_Grados_E.Picture Estribor_Babor_Proa.Picture = Seis_Grados_B.Picture Case Is = 7 Estribor_Babor_Popa.Picture = Siete_Grados_E.Picture Estribor_Babor_Proa.Picture = Siete_Grados_B.Picture Case Is = 8 Estribor_Babor_Popa.Picture = Ocho_Grados_E.Picture Estribor_Babor_Proa.Picture = Ocho_Grados_B.Picture Case Is = 9, 10 Estribor_Babor_Popa.Picture = Diez_Grados_E.Picture Estribor_Babor_Proa.Picture = Diez_Grados_B.Picture Case Is = 11, 12 Estribor_Babor_Popa.Picture = Doce_Grados_E.Picture Estribor_Babor_Proa.Picture = Doce_Grados_B.Picture Case Is = 13, 14 Estribor_Babor_Popa.Picture = Catorce_Grados_E.Picture Estribor_Babor_Proa.Picture = Catorce_Grados_B.Picture Case Is = 15, 16 Estribor_Babor_Popa.Picture = Dieciseis_Grados_E.Picture Estribor_Babor_Proa.Picture = Dieciseis_Grados_B.Picture Case Is = 17, 18 Estribor_Babor_Popa.Picture = Dieciocho_Grados_E.Picture Estribor_Babor_Proa.Picture = Dieciocho_Grados_B.Picture Case Is = 19, 20 Estribor_Babor_Popa.Picture = Veinte_Grados_E.Picture Estribor_Babor_Proa.Picture = Veinte_Grados_B.Picture Case Is = 21, 22 Estribor_Babor_Popa.Picture = Veintidos_Grados_E.Picture Estribor_Babor_Proa.Picture = Veintidos_Grados_B.Picture 'Else: ' MsgBox "Se hundio!!" End Select End If Nivelar.Visible = True Else Estado.Text = "ESTADO: NIVELADO" Label4.Caption = "N" Estribor_Babor_Popa.Picture = Sin_Desnivel_EB.Picture Estribor_Babor_Proa.Picture = Sin_Desnivel_EB.Picture Text1.Text = 0 End If End Sub 'RUTINA CON LA CUAL SE INCREMENTA O DECREMENTA LOS CONTENEDORES PARA POPA Private Sub FlexI_DblClick() Nivelar.Visible = False FlexI.Row = FlexI.RowSel FlexI.Col = FlexI.ColSel 'CAMBIO DE COLORES DEPENDIENDO DEL NÚMERO DE CONTENEDORES Select Case MFlexI(FlexI.Row, FlexI.Col) Case Is = 0 FlexI.CellBackColor = &HC7ACB ' CAFÉ MFlexI(FlexI.Row, FlexI.Col) = MFlexI(FlexI.Row, FlexI.Col) + 1 SubirFI = True Case Is = 1 If SubirFI Then FlexI.CellBackColor = &HFF& ' ROJO MFlexI(FlexI.Row, FlexI.Col) = MFlexI(FlexI.Row, FlexI.Col) + 1 Else FlexI.CellBackColor = &H8000000E ' BLANCO MFlexI(FlexI.Row, FlexI.Col) = MFlexI(FlexI.Row, FlexI.Col) - 1 End If Case Is = 2 If SubirFI Then FlexI.CellBackColor = &H80FF& ' NARANJA MFlexI(FlexI.Row, FlexI.Col) = MFlexI(FlexI.Row, FlexI.Col) + 1 Else FlexI.CellBackColor = &HC7ACB ' CAFÉ MFlexI(FlexI.Row, FlexI.Col) = MFlexI(FlexI.Row, FlexI.Col) - 1 End If Case Is = 3 If SubirFI Then FlexI.CellBackColor = &HFFFF& ' AMARILLO MFlexI(FlexI.Row, FlexI.Col) = MFlexI(FlexI.Row, FlexI.Col) + 1 SubirFI = False Else FlexI.CellBackColor = &HFF& ' ROJO MFlexI(FlexI.Row, FlexI.Col) = MFlexI(FlexI.Row, FlexI.Col) - 1 End If Case Is = 4 FlexI.CellBackColor = &H80FF& ' NARANJA MFlexI(FlexI.Row, FlexI.Col) = MFlexI(FlexI.Row, FlexI.Col) - 1 End Select End Sub 'RUTINA CON LA CUAL SE INCREMENTA O DECREMENTA LOS CONTENEDORES PARA PROA Private Sub FlexII_DblClick() Nivelar.Visible = False FlexII.Row = FlexII.RowSel FlexII.Col = FlexII.ColSel Select Case MFlexII(FlexII.Row, FlexII.Col) Case Is = 0 FlexII.CellBackColor = &HC7ACB ' CAFÉ MFlexII(FlexII.Row, FlexII.Col) = MFlexII(FlexII.Row, FlexII.Col) + 1 Subir4 = True Subir3 = True Subir2 = True Case Is = 1 Select Case FlexII.Row Case Is = 0, 1 If Subir4 Then FlexII.CellBackColor = &HFF& ' ROJO MFlexII(FlexII.Row, FlexII.Col) = MFlexII(FlexII.Row, FlexII.Col) + 1 Else FlexII.CellBackColor = &H8000000E ' BLANCO MFlexII(FlexII.Row, FlexII.Col) = MFlexII(FlexII.Row, FlexII.Col) - 1 End If Case Is = 2, 3 If Subir3 Then FlexII.CellBackColor = &HFF& ' ROJO MFlexII(FlexII.Row, FlexII.Col) = MFlexII(FlexII.Row, FlexII.Col) + 1 Else FlexII.CellBackColor = &H8000000E ' BLANCO MFlexII(FlexII.Row, FlexII.Col) = MFlexII(FlexII.Row, FlexII.Col) - 1 End If Case Is = 4, 5, 6 If Subir2 Then FlexII.CellBackColor = &HFF& ' ROJO MFlexII(FlexII.Row, FlexII.Col) = MFlexII(FlexII.Row, FlexII.Col) + 1 Subir2 = False Else FlexII.CellBackColor = &H8000000E ' BLANCO MFlexII(FlexII.Row, FlexII.Col) = MFlexII(FlexII.Row, FlexII.Col) - 1 End If End Select Case Is = 2 Select Case FlexII.Row Case Is = 0, 1 If Subir4 Then FlexII.CellBackColor = &H80FF& ' NARANJA MFlexII(FlexII.Row, FlexII.Col) = MFlexII(FlexII.Row, FlexII.Col) + 1 Else FlexII.CellBackColor = &HC7ACB ' CAFE MFlexII(FlexII.Row, FlexII.Col) = MFlexII(FlexII.Row, FlexII.Col) - 1 End If Case Is = 2, 3 If Subir3 Then FlexII.CellBackColor = &H80FF& ' NARANJA MFlexII(FlexII.Row, FlexII.Col) = MFlexII(FlexII.Row, FlexII.Col) + 1 Subir3 = False Else FlexII.CellBackColor = &HC7ACB ' CAFÉ MFlexII(FlexII.Row, FlexII.Col) = MFlexII(FlexII.Row, FlexII.Col) - 1 End If Case Is = 4, 5, 6 FlexII.CellBackColor = &HC7ACB ' CAFÉ MFlexII(FlexII.Row, FlexII.Col) = MFlexII(FlexII.Row, FlexII.Col) - 1 End Select Case Is = 3 Select Case FlexII.Row Case Is = 0, 1 If Subir4 Then FlexII.CellBackColor = &HFFFF& 'AMARILLO MFlexII(FlexII.Row, FlexII.Col) = MFlexII(FlexII.Row, FlexII.Col) + 1 Subir4 = False Else FlexII.CellBackColor = &HFF& ' ROJO MFlexII(FlexII.Row, FlexII.Col) = MFlexII(FlexII.Row, FlexII.Col) - 1 End If Case Is = 2, 3 FlexII.CellBackColor = &HFF& ' ROJO MFlexII(FlexII.Row, FlexII.Col) = MFlexII(FlexII.Row, FlexII.Col) - 1 End Select Case Is = 4 FlexII.CellBackColor = &H80FF& ' NARANJA MFlexII(FlexII.Row, FlexII.Col) = MFlexII(FlexII.Row, FlexII.Col) - 1 End Select End Sub 'CONTENEDORES DE POPA Private Sub FlexIII_DblClick() Nivelar.Visible = False FlexIII.Row = FlexIII.RowSel FlexIII.Col = FlexIII.ColSel If MFlexIII(FlexIII.Row, FlexIII.Col) = 0 Then FlexIII.CellBackColor = &HC7ACB MFlexIII(FlexIII.Row, FlexIII.Col) = MFlexIII(FlexIII.Row, FlexIII.Col) + 1 Else FlexIII.CellBackColor = &H8000000E MFlexIII(FlexIII.Row, FlexIII.Col) = MFlexIII(FlexIII.Row, FlexIII.Col) - 1 End If End Sub 'CONTENEDORES DE PROA Private Sub FlexIV_DblClick() Nivelar.Visible = False FlexIV.Row = FlexIV.RowSel FlexIV.Col = FlexIV.ColSel If MFlexIV(FlexIV.Row, FlexIV.Col) = 0 Then FlexIV.CellBackColor = &HC7ACB MFlexIV(FlexIV.Row, FlexIV.Col) = MFlexIV(FlexIV.Row, FlexIV.Col) + 1 Else FlexIV.CellBackColor = &H8000000E MFlexIV(FlexIV.Row, FlexIV.Col) = MFlexIV(FlexIV.Row, FlexIV.Col) - 1 End If End Sub Private Sub Form_Activate() Timer1.Enabled = False End Sub 'CONFIGURACIÓN DE LAS MATRICES QUE VAN A CONTENER LOS CONTENEDORES Private Sub Form_Load() Me.Left = 0 Me.Top = 0 Timer2.Enabled = False Timer1.Enabled = False TPopa_B.Value = 20 Old_FB1 = 0 For I = 0 To 9 FlexI.ColWidth(I) = 178 FlexII.ColWidth(I) = 178 Next I For I = 0 To 5 FlexIII.ColWidth(I) = 300 Next I For I = 0 To 4 FlexIV.ColWidth(I) = 300 Next I For I = 0 To 7 FlexI.RowHeight(I) = 225 Next I For I = 0 To 6 FlexII.RowHeight(I) = 210 Next I For I = 0 To 1 FlexIII.RowHeight(I) = 170 Next I For I = 0 To 1 FlexIV.RowHeight(I) = 170 Next I Limpiar_Matrices TPopa_B.Value = 0 TPopa_E.Value = 0 TProa_B.Value = 0 TProa_E.Value = 0 Estribor_Babor_Popa.Picture = Sin_Desnivel_EB.Picture Estribor_Babor_Proa.Picture = Sin_Desnivel_EB.Picture Proa_popa.Picture = Sin_desviacion_PR.Picture LLenar_Matriz_V SubirFI = True Subir4 = True Subir3 = True Subir2 = True Nivelar.Visible = False I=1 End Sub 'RUTINA DE INICIO Private Sub Inicio_Click() Timer1.Enabled = False Limpiar_Cubierta Evaluar_Click Escora = 0 DoEvents LLenando = False Timer1.Enabled = True Do While 1 = 1 DoEvents If (TProa_E.Value = 0) And (TProa_B.Value = 0) And (TPopa_E.Value = 0) And (TPopa_B.Value = 0) Then Timer1.Enabled = False Exit Do End If Loop LLenando = True 'MEDIO TANQUE Timer1.Enabled = True Do While 1 = 1 DoEvents If TProa_E.Value = 500 Then Timer1.Enabled = False Exit Do End If Loop FlexI.Enabled = True FlexII.Enabled = True FlexIII.Enabled = True FlexIV.Enabled = True Evaluar_Click Estado.Text = "Estado: NIVELADO" Escora_Popa.Visible = True End Sub 'RUTINA NIVELAR Private Sub Nivelar_Click() Contador = 0 Timer2.Enabled = True Do While True DoEvents If Contador >= Escora Then Exit Do Loop Timer2.Enabled = False Estribor_Babor_Popa.Picture = Sin_Desnivel_EB.Picture Estribor_Babor_Proa.Picture = Sin_Desnivel_EB.Picture Estado.Text = "ESTADO: NIVELADO" Nivelar.Visible = False End Sub 'RUTINA DE CASO CARGA NORMAL EN POPA Private Sub Option2_Click() Dim K As Long Dim T As Integer If Option2.Value = False Then Exit Sub Call Inicio_Click ' PONER LA CARGA EN POPA Timer3.Interval = 180 K=1 For I = 0 To 1 For J = 0 To 5 Timer3.Enabled = True Seguir_T3 = False DoEvents FlexIII.Row = I FlexIII.Col = J FlexIII.CellBackColor = &HC7ACB Do While Not Seguir_T3 DoEvents Loop Select Case K Case Is = 4 Proa_popa.Picture = Un_grado_P.Picture Case Is = 8 Proa_popa.Picture = dos_grados_p.Picture Case Is = 12 Proa_popa.Picture = tres_grados_p.Picture End Select K=K+1 Next J Next I ' PONER CARGA EXTRA K=1 For I = 0 To 0 For J = 0 To 9 Timer3.Enabled = True Seguir_T3 = False DoEvents FlexI.Row = I FlexI.Col = J FlexI.CellBackColor = &HFFFF& Do While Not Seguir_T3 DoEvents Loop Select Case K Case Is = 5 Proa_popa.Picture = cuatro_grados_p.Picture Case Is = 10 Proa_popa.Picture = cinco_grados_p.Picture End Select K=K+1 Next J Next I ' UN TIEMPO DoEvents Timer3.Interval = 2000 Timer3.Enabled = True Seguir_T3 = False Do While Not Seguir_T3 DoEvents Loop ' LLAMAR A NIVELAR SIMULADO ESCORA A POPA DoEvents Timer3.Interval = 200 Contador = 0 Do While Contador < 50 Timer3.Enabled = True Seguir_T3 = False Do While Not Seguir_T3 DoEvents Loop 'DISMINUCIÓN DE AGUA EN LOS TANQUES DE LASTRE TPopa_B.Value = TPopa_B.Value - 10 TPopa_E.Value = TPopa_E.Value - 10 TProa_B.Value = TProa_B.Value + 5 TProa_E.Value = TProa_E.Value + 5 DoEvents Contador = Contador + 1 Select Case Contador Case Is = 17 Proa_popa.Picture = cuatro_grados_p.Picture Case Is = 34 Proa_popa.Picture = tres_grados_p.Picture Case Is = 50 Proa_popa.Picture = dos_grados_p.Picture End Select If Contador = 50 Then Exit Do Loop ' INTRODUCE AGUA A PROA Contador = 0 Do While Contador < 25 Timer3.Enabled = True Seguir_T3 = False Do While Not Seguir_T3 DoEvents Loop TProa_B.Value = TProa_B.Value + 5 TProa_E.Value = TProa_E.Value + 5 DoEvents Contador = Contador + 1 Select Case Contador Case Is = 12 Proa_popa.Picture = Un_grado_P.Picture Case Is = 25 Proa_popa.Picture = Proa_Popa_Normal.Picture End Select If Contador = 25 Then Exit Do Loop ' Frame2.Visible = False End Sub 'CASO ESPECIAL CARGA EN PROA Private Sub Option3_Click() Dim K As Long Dim T As Integer If Option3.Value = False Then Exit Sub Call Inicio_Click ' PONER LA CARGA EN POPA Timer3.Interval = 180 K=1 For I = 0 To 1 For J = 0 To 4 Timer3.Enabled = True Seguir_T3 = False DoEvents FlexIV.Row = I FlexIV.Col = J FlexIV.CellBackColor = &HC7ACB Do While Not Seguir_T3 DoEvents Loop Select Case K Case Is = 4 Proa_popa.Picture = un_grado_r.Picture Case Is = 8 Proa_popa.Picture = dos_grados_r.Picture Case Is = 12 Proa_popa.Picture = tres_grados_r.Picture End Select K=K+1 Next J Next I ' PONER CARGA EXTRA K=1 For I = 6 To 6 For J = 0 To 9 Timer3.Enabled = True Seguir_T3 = False DoEvents FlexII.Row = I FlexII.Col = J FlexII.CellBackColor = &HFF& Do While Not Seguir_T3 DoEvents Loop Select Case K Case Is = 5 Proa_popa.Picture = cuatro_grados_r.Picture Case Is = 10 Proa_popa.Picture = cinco_grados_r.Picture End Select K=K+1 Next J Next I ' UN TIEMPO DoEvents Timer3.Interval = 2000 Timer3.Enabled = True Seguir_T3 = False Do While Not Seguir_T3 DoEvents Loop ' LLAMAR A NIVELAR SIMULADO ESCORA A POPA DoEvents Timer3.Interval = 200 Contador = 0 Do While Contador < 50 Timer3.Enabled = True Seguir_T3 = False Do While Not Seguir_T3 DoEvents Loop TProa_B.Value = TProa_B.Value - 10 TProa_E.Value = TProa_E.Value - 10 TPopa_B.Value = TPopa_B.Value + 5 TPopa_E.Value = TPopa_E.Value + 5 DoEvents Contador = Contador + 1 Select Case Contador Case Is = 17 Proa_popa.Picture = cuatro_grados_r.Picture Case Is = 34 Proa_popa.Picture = tres_grados_r.Picture Case Is = 50 Proa_popa.Picture = dos_grados_r.Picture End Select If Contador = 50 Then Exit Do Loop ' INTRODUCE AGUA A PROA Contador = 0 Do While Contador < 25 Timer3.Enabled = True Seguir_T3 = False Do While Not Seguir_T3 DoEvents Loop TPopa_B.Value = TPopa_B.Value + 5 TPopa_E.Value = TPopa_E.Value + 5 DoEvents Contador = Contador + 1 Select Case Contador Case Is = 12 Proa_popa.Picture = un_grado_r.Picture Case Is = 25 Proa_popa.Picture = Proa_Popa_Normal.Picture End Select If Contador = 25 Then Exit Do Loop ' Frame3.Visible = False End Sub Private Sub Option4_Click() ' ESCORA EN PROA CON CARGA NORMAL Dim K As Long Dim T As Integer If Option4.Value = False Then Exit Sub Call Inicio_Click ' PONER LA CARGA EN PROA K=1 Timer3.Interval = 180 For I = 0 To 1 For J = 0 To 4 Timer3.Enabled = True Seguir_T3 = False DoEvents FlexIV.Row = I FlexIV.Col = J FlexIV.CellBackColor = &HC7ACB Do While Not Seguir_T3 DoEvents Loop Select Case K Case Is = 3 Proa_popa.Picture = un_grado_r.Picture Case Is = 6 Proa_popa.Picture = dos_grados_r.Picture Case Is = 10 Proa_popa.Picture = tres_grados_r.Picture End Select K=K+1 Next J Next I ' UN TIEMPO DoEvents Timer3.Interval = 2000 Timer3.Enabled = True Seguir_T3 = False Do While Not Seguir_T3 DoEvents Loop ' LLAMAR A NIVELAR SIMULADO ESCORA A POPA DoEvents Timer3.Interval = 200 Contador = 0 Do While Contador < 12 Timer3.Enabled = True Seguir_T3 = False Do While Not Seguir_T3 DoEvents Loop TProa_B.Value = TProa_B.Value - 5 TProa_E.Value = TProa_E.Value - 5 TPopa_B.Value = TPopa_B.Value + 5 TPopa_E.Value = TPopa_E.Value + 5 DoEvents Contador = Contador + 1 Select Case Contador Case Is = 4 Proa_popa.Picture = dos_grados_r.Picture Case Is = 8 Proa_popa.Picture = un_grado_r.Picture Case Is = 12 Proa_popa.Picture = Proa_Popa_Normal.Picture End Select If Contador = 12 Then Exit Do Loop Frame3.Visible = False End Sub 'PROCESO DE LLENO DE TANQUES DEPENDIENDO DEL TIMER Private Sub Timer1_Timer() Timer1.Enabled = False If LLenando Then If TPopa_B.Value < 1000 Then TPopa_B.Value = TPopa_B.Value + 5 If TPopa_E.Value < 1000 Then TPopa_E.Value = TPopa_E.Value + 5 If TProa_B.Value < 1000 Then TProa_B.Value = TProa_B.Value + 5 If TProa_E.Value < 1000 Then TProa_E.Value = TProa_E.Value + 5 Else 'PROCESO DE VACÍADO DE TANQUES DEPENDIENDO DEL TIMER If TPopa_B.Value >= 5 Then TPopa_B.Value = TPopa_B.Value - 5 Else TPopa_B.Value = 0 End If If TPopa_E.Value >= 5 Then TPopa_E.Value = TPopa_E.Value - 5 Else TPopa_E.Value = 0 End If If TProa_B.Value >= 5 Then TProa_B.Value = TProa_B.Value - 5 Else TProa_B.Value = 0 End If If TProa_E.Value >= 5 Then TProa_E.Value = TProa_E.Value - 5 Else TProa_E.Value = 0 End If End If Timer1.Enabled = True End Sub 'RUTINA CON LA CUAL SE LIMPIAN LOS CONTENEDORES DE LA PLATAFORMA Private Sub Limpiar_Cubierta() Limpiar_Matrices Limpiar_Flexs End Sub Private Sub Limpiar_Matrices() ' ENCERAR MATRICES For I = 0 To 7 For J = 0 To 9 MFlexI(I, J) = 0 Next J Next I For I = 0 To 6 For J = 0 To 9 MFlexII(I, J) = 0 Next J Next I For I = 0 To 1 For J = 0 To 5 MFlexIII(I, J) = 0 Next J Next I For I = 0 To 1 For J = 0 To 4 MFlexIV(I, J) = 0 Next J Next I End Sub 'COLOCAR EN COLOR BLANCO LA CUADRÍCULA DE LA MATRIZ Private Sub Limpiar_Flexs() For I = 0 To 7 For J = 0 To 9 FlexI.Row = I FlexI.Col = J FlexI.CellBackColor = vbWhite Next J Next I For I = 0 To 6 For J = 0 To 9 FlexII.Row = I FlexII.Col = J FlexII.CellBackColor = vbWhite Next J Next I For I = 0 To 1 For J = 0 To 5 FlexIII.Row = I FlexIII.Col = J FlexIII.CellBackColor = vbWhite Next J Next I For I = 0 To 1 For J = 0 To 4 FlexIV.Row = I FlexIV.Col = J FlexIV.CellBackColor = vbWhite Next J Next I End Sub 'TIMER 2 PARA CAMBIAR IMÁGENES MIENTRAS DURA LA COMPENSACIÓN YA SEA A BABOR O ESTRIBOR Private Sub Timer2_Timer() Dim Imagen As Integer Timer2.Enabled = False If Label4.Caption = "E" Then If (TProa_E.Value = 0) Or (TPopa_E.Value = 0) Then If TProa_B.Value + 2.5 < 1000 Then TProa_B.Value = TProa_B.Value + 2.5 TPopa_B.Value = TPopa_B.Value + 2.5 Else MsgBox "Tanques de Babor: llenos. Imposible continuar!" + vbCrLf + "Reinicie la operacion..", , "Simulacion" Timer2.Enabled = False Exit Sub End If Else TProa_E.Value = TProa_E.Value - 2.5 TPopa_E.Value = TPopa_E.Value - 2.5 TProa_B.Value = TProa_B.Value + 2.5 TPopa_B.Value = TPopa_B.Value + 2.5 End If Contador = Contador + 1 Imagen = Escora - Contador Select Case Imagen Case Is = 1 Estribor_Babor_Popa.Picture = Un_Grado_B.Picture Estribor_Babor_Proa.Picture = Un_grado_E.Picture Case Is = 2 Estribor_Babor_Popa.Picture = Dos_Grados_B.Picture Estribor_Babor_Proa.Picture = Dos_Grados_E.Picture Case Is = 3 Estribor_Babor_Popa.Picture = Tres_Grados_B.Picture Estribor_Babor_Proa.Picture = Tres_Grados_E.Picture Case Is = 4 Estribor_Babor_Popa.Picture = Cuatro_Grados_B.Picture Estribor_Babor_Proa.Picture = Cuatro_Grados_E.Picture Case Is = 5 Estribor_Babor_Popa.Picture = Cinco_Grados_B.Picture Estribor_Babor_Proa.Picture = Cinco_Grados_E.Picture Case Is = 6 Estribor_Babor_Popa.Picture = Seis_Grados_B.Picture Estribor_Babor_Proa.Picture = Seis_Grados_E.Picture Case Is = 7 Estribor_Babor_Popa.Picture = Siete_Grados_B.Picture Estribor_Babor_Proa.Picture = Siete_Grados_E.Picture Case Is = 8 Estribor_Babor_Popa.Picture = Ocho_Grados_B.Picture Estribor_Babor_Proa.Picture = Ocho_Grados_E.Picture Case Is = 9, 10 Estribor_Babor_Popa.Picture = Diez_Grados_B.Picture Estribor_Babor_Proa.Picture = Diez_Grados_E.Picture Case Is = 11, 12 Estribor_Babor_Popa.Picture = Doce_Grados_B.Picture Estribor_Babor_Proa.Picture = Doce_Grados_E.Picture Case Is = 13, 14 Estribor_Babor_Popa.Picture = Catorce_Grados_B.Picture Estribor_Babor_Proa.Picture = Catorce_Grados_E.Picture Case Is = 15, 16 Estribor_Babor_Popa.Picture = Dieciseis_Grados_B.Picture Estribor_Babor_Proa.Picture = Dieciseis_Grados_E.Picture Case Is = 17, 18 Estribor_Babor_Popa.Picture = Dieciocho_Grados_B.Picture Estribor_Babor_Proa.Picture = Dieciocho_Grados_E.Picture Case Is = 19, 20 Estribor_Babor_Popa.Picture = Veinte_Grados_B.Picture Estribor_Babor_Proa.Picture = Veinte_Grados_E.Picture Case Is = 21, 22 Estribor_Babor_Popa.Picture = Veintidos_Grados_B.Picture Estribor_Babor_Proa.Picture = Veintidos_Grados_E.Picture 'Else: ' MsgBox "Se hundio!!" End Select DoEvents Else ' ESCORADO A BABOR If (TProa_B.Value = 0) Or (TPopa_B.Value = 0) Then If TProa_E.Value + 2.5 < 1000 Then TProa_E.Value = TProa_E.Value + 2.5 TPopa_E.Value = TPopa_E.Value + 2.5 Else MsgBox "Tanques de Estribor: llenos. Imposible continuar!" + vbCrLf + "Reinicie la operacion..", , "Simulacion" Timer2.Enabled = False Exit Sub End If Else TProa_B.Value = TProa_B.Value - 2.5 TPopa_B.Value = TPopa_B.Value - 2.5 TProa_E.Value = TProa_E.Value + 2.5 TPopa_E.Value = TPopa_E.Value + 2.5 End If Contador = Contador + 1 DoEvents Imagen = Escora - Contador Select Case Imagen Case Is = 1 Estribor_Babor_Popa.Picture = Un_grado_E.Picture Estribor_Babor_Proa.Picture = Un_Grado_B.Picture Case Is = 2 Estribor_Babor_Popa.Picture = Dos_Grados_E.Picture Estribor_Babor_Proa.Picture = Dos_Grados_B.Picture Case Is = 3 Estribor_Babor_Popa.Picture = Tres_Grados_E.Picture Estribor_Babor_Proa.Picture = Tres_Grados_B.Picture Case Is = 4 Estribor_Babor_Popa.Picture = Cuatro_Grados_E.Picture Estribor_Babor_Proa.Picture = Cuatro_Grados_B.Picture Case Is = 5 Estribor_Babor_Popa.Picture = Cinco_Grados_E.Picture Estribor_Babor_Proa.Picture = Cinco_Grados_B.Picture Case Is = 6 Estribor_Babor_Popa.Picture = Seis_Grados_E.Picture Estribor_Babor_Proa.Picture = Seis_Grados_B.Picture Case Is = 7 Estribor_Babor_Popa.Picture = Siete_Grados_E.Picture Estribor_Babor_Proa.Picture = Siete_Grados_B.Picture Case Is = 8 Estribor_Babor_Popa.Picture = Ocho_Grados_E.Picture Estribor_Babor_Proa.Picture = Ocho_Grados_B.Picture Case Is = 9, 10 Estribor_Babor_Popa.Picture = Diez_Grados_E.Picture Estribor_Babor_Proa.Picture = Diez_Grados_B.Picture Case Is = 11, 12 Estribor_Babor_Popa.Picture = Doce_Grados_E.Picture Estribor_Babor_Proa.Picture = Doce_Grados_B.Picture Case Is = 13, 14 Estribor_Babor_Popa.Picture = Catorce_Grados_E.Picture Estribor_Babor_Proa.Picture = Catorce_Grados_B.Picture Case Is = 15, 16 Estribor_Babor_Popa.Picture = Dieciseis_Grados_E.Picture Estribor_Babor_Proa.Picture = Dieciseis_Grados_B.Picture Case Is = 17, 18 Estribor_Babor_Popa.Picture = Dieciocho_Grados_E.Picture Estribor_Babor_Proa.Picture = Dieciocho_Grados_B.Picture Case Is = 19, 20 Estribor_Babor_Popa.Picture = Veinte_Grados_E.Picture Estribor_Babor_Proa.Picture = Veinte_Grados_B.Picture Case Is = 21, 22 Estribor_Babor_Popa.Picture = Veintidos_Grados_E.Picture Estribor_Babor_Proa.Picture = Veintidos_Grados_B.Picture 'Else: ' MsgBox "Se hundio!!" End Select End If Timer2.Enabled = True End Sub 'TIMER 3 Private Sub Timer3_Timer() Timer3.Enabled = False Seguir_T3 = True DoEvents End Sub ANEXO CAPÍTULO 3 DATOS TÉCNICOS DE LOS CIRCUITOS INTEGRADOS PRINCIPALES UBICACIÓN DE LOS ELEMENTOS EN LA PLACA Para efectos de mantenimiento de la placa se ha determinado el sitio exacto donde se encuentran los componentes electrónicos, así. Los transistores darlington usados son los D1933 y se encuentran ubicados: TRANSISTOR UBICACIÓN DARLINGTON T1 4L1-4L2-4L3 T2 4L5-4L6-4L7 T3 4K1-4K2-4K3 T4 4K5-4K6-4K7 T5 4J1-4J2-4J3 T6 4J5-4J6-4J7 T7 4H5-4H6-4H7 T8 4H1-4H2-4H3 Tabla 3. 12 Ubicación en la placa de los transistores darlington Los transistores 2N3904 para sensores, se ubican en TRANSISTOR UBICACIÓN Q1 3L1-3L2-3L3 Q2 3L5-3L6-3L7 Q3 3K1-3K2-3K3 Q4 3K5-3K6-3K7 Q5 3H1-3H2-3H3 Q6 3H5-3H6-3H7 Q7 3J5-3J6-3J7 Q8 3J1-3J2-3J3 Tabla 3. 13 Ubicación de los transistores 2N3904 en la placa Los capacitores utilizados, su capacidad y ubicación de la placa, a continuación: C FARADIOS UBICACIÓN C FARADIOS UBICACIÓN C1 33u 3G1-3G2 C8 1u 1C2-1C1 C2 33u 4P1-4P2 C9 47p 1K6-1L6 C3 33u 3P1-3P2 C10 47p 1K5-1L5 C4 33u 2A1-2ª2 C11 10u 0C1-0C2 C5 1u 1C8-1C7 C12 10u 0C3-0C4 C6 1u 1C6-1C5 C13 10u 0C5-0C6 C7 1u 1C4-1C3 C14 10u 0C7-0C8 Las compuertas lógicas inversoras se ubican de la siguiente manera: COMPUERTA UBICACIÓN COMPUERTA UBICACIÓN U2A 2K1-2K2 U2C 2L3-2L4 U2B 2K3-2K4 U2D 2L1-2L2 U2E 2H3-2H4 U11A 2J3-2J4 U2F 2H1-2H2 U11B 2J1-2J2 U11C 2G2-2G3 U11E 2D5-2D6 U11D 2G4-2G5 U11F 2G6-2G7 U15A 2D3-2D4 U15C 2E6-2E7 U15B 2D1-2D2 U15D 2E4-2E5 U15E 2F1-2F2 U19A 2F5-2F6 U15F 2F3-2F4 U19B 2E2-2E3 Tabla 3. 14 Disposición de las compuertas inversoras La compuerta OR, se encuentra en la siguiente posición: COMPUERTA UBICACIÓN U18A 0D1-0D2-0D3 U18B 0D4-0D5-0D6 U18C 0E4-0E3-0E2 Tabla 3. 15 Ubicación compuerta OR Los circuitos integrados se los hace con referencia al pin 1: CIRCUITO INTEGRADO UBICACIÓN PIC 16F877A 0M1 MAX232 3D1 Tabla 3. 16 Ubicación de los circuitos integrados Los diodos zener que se conectan paralelos a las bombas de desfogue se ubican en los siguientes puntos: DIODOS ZENER UBICACIÓN D2 3G3-3G5 D3 3G6-3G7 D4 4O8-4O6 D5 4O3-405 D7 3O2-3O4 D8 3O5-3O7 D10 2A3-2A5 D11 2A6-2A8 Tabla 3. 17 Ubicación de diodos zener La ubicación de las resistencias según el diagrama se encuentran de la siguiente manera en la placa: RESISTENCIA VALOR k R1 1 0K6-0L6 R2 1 R3 UBICACIÓN RESISTENCIA VALOR k UBICACIÓN R26 1 3M3-3N3 4E1-4F1 R27 1 3M2-3N2 10 1H7-1J7 R28 1 3M1-3N1 R4 1 1E3-1D3 R29 220 Ω 4M4-4N4 R5 1 4E2-4F2 R30 3.9 4M3-4N3 R6 10 1H4-1J4 R31 1 3K7-3L7 R7 1 1E7-1D7 R32 220 Ω 4M2-4N2 R8 1 4E3-4F3 R33 3.9 4M1-4N1 R9 10 1F4-1G4 R34 1 3K3-3L3 R10 1 1F0-1G0 R35 220 Ω 4M8-4N8 R11 1 4E4-4F4 R36 3.9 4M7-4N7 R12 10 1F7-1G7 R37 1 3H7-3J7 R13 1 4C4-4D4 R38 220 Ω 4M6-4N6 R14 1 3E3-3F3 R39 3.9 4M5-4N5 R15 1 4D5-4C5 R40 1 3H3-3J3 R16 1 3E2-3F2 R41 100 Ω 0K4-0L4 R17 1 4C6-4D6 R42 10 0K3-0L3 R18 1 4E0-4F0 R43 330 Ω 1F6-1G6 R19 1 4C7-4D7 R44 330 Ω 0H6-0J6 R20 1 4E1-4F1 R45 330 Ω 1H0-1J0 R21 1 3M6-3N6 R46 330 Ω 1H2-1J2 R22 1 3M7-3N7 R47 1 3A3-3B3 R23 1 3M4-3N4 R48 1 3A4-3B4 R24 1 3M5-3N5 R49 1 3A5-3B5 R25 1 3M0-3N0 R50 1 3A6-3B6 Tabla 3. 18 Ubicación de las resistencias en la placa ANEXO CAPÍTULO 4 PROGRAMA DEL MICROCONTROLADOR '**************************************************************** '* Name : Estabilizador1.BAS * '* Author : Antonio Redin * '* Notice : Copyright (c) 2506 [select VIEW...EDITOR OPTIONS] * '* : All Rights Reserved * '* Date : 7/25/2506 * '* Version : 1.0 * '* Notes : * '* : * '**************************************************************** INCLUDE "modedefs.bas" DEFINE OSC 10 TRISA = %11111111 ADCON1 = %00000010 ' PortA como entrada ' PortaA como análogo y el resultado con justificación izquierda TRISB=%11110001 TRISC=%10001111 TRISD=%00000001 TRISE=%00000011 'DEFINICIÓN DE LOS PINES DEL PIC ' SENSORES (INPUTS) S_B VAR PortB.7 S_E VAR PortB.6 S_PROA VAR PortB.5 S_POPA VAR PortB.4 ; SENSOR DE INCLINACIÓN A BABOR ; SENSOR DE INCLINACIÓN A ESTRIBOR ; SENSOR DE INCLINACIÓN A PROA ; SENSOR DE INCLINACIÓN A POPA SLE_PROA VAR PortC.0 SLE_POPA VAR PortC.1 SLB_PROA VAR PortC.2 SLB_POPA VAR PortC.3 ; SENSOR DE LLENO TANQUE ESTRIBOR-PROA ; SENSOR DE LLENO TANQUE ESTRIBOR-POPA ; SENSOR DE LLENO TANQUE BABOR-PROA ; SENSOR DE LLENO TANQUE BABOR-POPA VALOR var word VE_PROA VAR WORD VE_POPA VAR WORD VB_PROA VAR WORD VB_POPA VAR WORD BANDERA VAR BYTE BBP VAR BYTE BBR VAR BYTE BEP VAR BYTE BER VAR BYTE ; VALOR ADQUIRIDO EN A/D ; CALIBRACIÓN PARA ESTRIBOR PROA ; CALIBRACIÓN PARA ESTRIBOR POPA ; CALIBRACIÓN PARA BABOR PROA ; CALIBRACIÓN PARA BABOR POPA ; AUXILIAR PARA RECONOCER VACÍOS VADQUIRIDO VAR WORD ; VALOR ADQUIRIDO EN EL CONVERSOR A/D ' ACCIONAMIENTO (OUTPUTS) PE_PROA VAR PortD.2 PE_POPA VAR PortD.3 PB_PROA VAR PortC.4 PB_POPA VAR PortC.5 P_S_E_PROA VAR PortD.4 P_S_E_POPA VAR PortD.5 P_S_B_PROA VAR PortD.6 P_S_B_POPA VAR PortD.7 ; BOMBA DE DESFOGUE ESTRIBOR-PROA ; BOMBA DE DESFOGUE ESTRIBOR-POPA ; BOMBA DE DESFOGUE BABOR-PROA ; BOMBA DE DESFOGUE BABOR-POPA ; BOMBA DE SUMINISTRO A TANQUE ESTRIBOR-PROA ; BOMBA DE SUMINISTRO A TANQUE ESTRIBOR-POPA ; BOMBA DE SUMINISTRO A TANQUE BABOR-PROA ; BOMBA DE SUMINISTRO A TANQUE BABOR-POPA amarillo var portb.3 verde var portb.2 rojo var portb.1 azul var portd.1 INFORMA_T VAR BYTE OPTION_REG.6=1 ; bit 6 del registro Option, activa en flanco de subida a b.0 ; ; VALORES DE CALIBRACIÓN DE SENSORES DE VACÍO VE_PROA = %1001100110011001 ; 9999 3 VE_POPA = %1001100110011001 ; 9999 3 VB_PROA = %1011111111111111 ; BFFF 3.75 VB_POPA = %1100001010001110 ; C28E 3.8 low verde low amarillo low azul high rojo ' APAGAR TODAS LAS BOMBAS CALL APAGA ' VACIAR TODOS LOS TANQUES (la nave sin carga es estable) high amarillo CALL VACIA_TANQUES low amarillo ' 3.5 SEGUNDOS DE AGUA CALL MEDIO_TANQUE ' PRIMERA NIVELACIÓN call PRIMERA On Interrupt Goto Interrupcion INTCON=%10010000 ; SE HABILITA LA INTERRUPCIÓN B.O PRINCIPAL: high verde PAUSE 150 LOW VERDE PAUSE 150 GOTO PRINCIPAL disable ' RUTINAS DE MANEJO ' DE SITUACIONES POSIBLES DE INCLINACIÓN '******************************************************************************** ' BABOR BABOR-PROA ' ESTRIBOR BABOR-POPA ' PROA ESTRIBOR-PROA ' POPA ESTRIBOR-POPA '******************************************************************************** ' VACIO NORMALMENTE CERO ; CUANDO ESTA FUNCIONANDO Y HAY VACÍO DA 1 LÓGICO ' SENSOR DE LLENO: NO CUBIERTO ES 1 LÓGICO; CUANDO SE TAPA ES 0 LÓGICO BABOR: ' OPCION 1: RETIRAR AGUA DE LOS TANQUES DONDE SE PRODUJO LA INCLINACIÓN ' MIENTRAS INDIQUE INCLINACIÓN A BABOR y LAS BOMBAS DE BABOR PROA Y POPA TENGAN AGUA PAUSE 80 if (S_PROA = 1) or (S_POPA = 1) then RETURN ' ES EL CASO COMBINADO LLEGO TARDE EL 2DO SENSOR endif BANDERA = 0 SEROUT portc.6,N9600,[" *EBB*"] WHILE ((S_B=1) AND BANDERA = 0 ) AND (S_PROA = 0) AND (S_POPA = 0) HIGH PB_PROA HIGH PB_POPA ; RETIRE AGUA DE LOS TANQUES DE BABOR IF SLE_PROA=1 AND SLE_POPA=1 THEN HIGH P_S_E_POPA HIGH P_S_E_PROA ELSE LOW P_S_E_POPA LOW P_S_E_PROA ENDIF PAUSE 300 CALL ESTADO_BOMBAS BANDERA = 0 GOSUB ADBR IF VADQUIRIDO > VB_PROA THEN BANDERA = 1 SEROUT portc.6,N9600,[" *TBR0T*"] ELSE SEROUT portc.6,N9600,[" *TBR1T*"] ENDIF GOSUB ADBP IF VADQUIRIDO > VB_POPA THEN BANDERA = 1 SEROUT portc.6,N9600,[" *TBP0T*"] ELSE SEROUT portc.6,N9600,[" *TBP1T*"] ENDIF CALL TANQUE_ER CALL TANQUE_EP WEND ' if (S_PROA = 1) or (S_POPA = 1) then RETURN ' ES EL CASO COMBINADO LLEGO TARDE EL 2DO SENSOR endif ' LOW PB_PROA LOW PB_POPA LOW P_S_E_POPA LOW P_S_E_PROA CALL ESTADO_BOMBAS IF S_B = 0 THEN ; SE ALCANZÓ LA COMPENSACIÓN gosub COMP_OK ENDIF ' ' LLEGÓ AQUÍ: SE AGOTÓ EL AGUA EN UNO O EN DOS DE LOS TANQUES DE BABOR ' ' OPCION 2: CARGAR CON AGUA LOS TANQUES OPUESTOS HASTA COMPENSAR O SE LLENE UNO DE ELLOS ' MIENTRAS INDIQUE INCLINACIÓN A BABOR y LOS SENSORES DE LLENO DE ESTRIBOR PROA Y POPA NO MARQUEN LLENO 'GOSUB ESTADO_BOMBAS PAUSE 80 WHILE (S_B=1) AND (SLE_PROA=1) AND (SLE_POPA=1) AND (S_PROA = 0) AND (S_POPA = 0) HIGH P_S_E_PROA HIGH P_S_E_POPA ; INGRESE AGUA EN LOS TANQUES DE ESTRIBOR CALL ESTADO_BOMBAS PAUSE 300 CALL TANQUE_ER CALL TANQUE_EP WEND ' if (S_PROA = 1) or (S_POPA = 1) then RETURN ' ES EL CASO COMBINADO LLEGO TARDE EL 2DO SENSOR endif ' LOW P_S_E_PROA LOW P_S_E_POPA CALL ESTADO_BOMBAS IF S_B = 0 THEN ; SE ALCANZÓ LA COMPENSACIÓN gosub COMP_OK ENDIF ' ' LLEGÓ AQUÍ: SE LLENÓ UNO O DOS DE LOS TANQUES DE ESTRIBOR ' ' OPCION 3: a)SI NO ESTÁ VACÍO EL TANQUE PROA-BABOR Y NO ESTA LLENO EL TANQUE PROA ESTRIBOR 'GOSUB ESTADO_BOMBAS PAUSE 80 BANDERA = 0 IF (BANDERA = 0) AND (SLE_POPA=1) THEN PAUSE 80 WHILE (S_B=1) AND (BANDERA = 0) AND (SLE_POPA=1) AND (S_PROA = 0) AND (S_POPA = 0) HIGH PB_PROA HIGH P_S_E_POPA PAUSE 300 CALL ESTADO_BOMBAS BANDERA = 0 GOSUB ADBR IF VADQUIRIDO > VB_PROA THEN BANDERA = 1 SEROUT portc.6,N9600,[" *TBR0T*"] ELSE SEROUT portc.6,N9600,[" *TBR1T*"] ENDIF CALL TANQUE_EP WEND LOW PB_PROA LOW P_S_E_POPA CALL ESTADO_BOMBAS ELSE ' OPCION 3: b)SI NO ESTÁ VACÍO EL TANQUE POPA-BABOR Y NO ESTA LLENO EL TANQUE POPA ESTRIBOR PAUSE 80 IF (BANDERA = 0) AND (SLE_PROA=1) THEN PAUSE 80 WHILE (S_B=1) AND (BANDERA = 0) AND (SLE_PROA=1) AND (S_PROA = 0) AND (S_POPA = 0) HIGH PB_POPA HIGH P_S_E_PROA PAUSE 300 CALL ESTADO_BOMBAS BANDERA = 0 GOSUB ADBP IF VADQUIRIDO > VB_POPA THEN BANDERA = 1 SEROUT portc.6,N9600,[" *TBP0T*"] ELSE SEROUT portc.6,N9600,[" *TBP1T*"] ENDIF CALL TANQUE_ER WEND LOW PB_POPA LOW P_S_E_PROA CALL ESTADO_BOMBAS ENDIF ENDIF ' IF S_B = 0 THEN ; SE ALCANZÓ LA COMPENSACIÓN gosub COMP_OK ELSE GOSUB COMP_NOK ; NO LO LOGRO ENDIF RETURN '******************************************************************************** ESTRIBOR: ' OPCION 1: RETIRAR AGUA DE LOS TANQUES DONDE SE PRODUJO LA INCLINACIÓN ' MIENTRAS INDIQUE INCLINACIÓN A ESTRIBOR y LAS BOMBAS DE ESTRIBOR PROA Y POPA TENGAN AGUA PAUSE 80 if (S_PROA = 1) or (S_POPA = 1) then RETURN ' ES EL CASO COMBINADO LLEGO TARDE EL 2DO SENSOR endif BANDERA = 0 SEROUT portc.6,N9600,[" *EEE*"] WHILE ((S_E=1) AND BANDERA = 0 ) AND (S_PROA = 0) AND (S_POPA = 0) HIGH PE_POPA HIGH PE_PROA ; RETIRE AGUA DE LOS TANQUES DE ESTRIBOR IF SLB_PROA=1 AND SLB_POPA=1 THEN HIGH P_S_B_POPA HIGH P_S_B_PROA ELSE LOW P_S_B_POPA LOW P_S_B_PROA ENDIF PAUSE 300 CALL ESTADO_BOMBAS BANDERA = 0 GOSUB ADER IF VADQUIRIDO > VE_PROA THEN BANDERA = 1 SEROUT portc.6,N9600,[" *TER0T*"] ELSE SEROUT portc.6,N9600,[" *TER1T*"] ENDIF GOSUB ADEP IF VADQUIRIDO > VE_POPA THEN BANDERA = 1 SEROUT portc.6,N9600,[" *TEP0T*"] ELSE SEROUT portc.6,N9600,[" *TEP1T*"] ENDIF CALL TANQUE_BR CALL TANQUE_BP WEND ' LOW PE_PROA LOW PE_POPA LOW P_S_B_POPA LOW P_S_B_PROA CALL ESTADO_BOMBAS ' if (S_PROA = 1) or (S_POPA = 1) then RETURN ' ES EL CASO COMBINADO LLEGO TARDE EL 2DO SENSOR endif ' IF S_E = 0 THEN ; SE ALCANZÓ LA COMPENSACIÓN gosub COMP_OK ENDIF ' ' LLEGO AQUI: SE AGOTÓ EL AGUA EN UNO O EN DOS DE LOS TANQUES DE ESTRIBOR ' ' OPCION 2: CARGAR CON AGUA LOS TANQUES OPUESTOS HASTA COMPENSAR O SE LLENE UNO DE ELLOS ' MIENTRAS INDIQUE INCLINACIÓN A ESTRIBOR y LOS SENSORES DE LLENO DE BABOR PROA Y POPA NO MARQUEN LLENO 'GOSUB ESTADO_BOMBAS PAUSE 80 WHILE (S_E=1) AND (SLB_PROA=1) AND (SLB_POPA=1) AND (S_PROA = 0) AND (S_POPA = 0) HIGH P_S_B_PROA HIGH P_S_B_POPA ; INGRESE AGUA EN LOS TANQUES DE BABOR PAUSE 300 CALL ESTADO_BOMBAS CALL TANQUE_BR CALL TANQUE_BP WEND ' LOW P_S_B_PROA LOW P_S_B_POPA CALL ESTADO_BOMBAS ' if (S_PROA = 1) or (S_POPA = 1) then RETURN ' ES EL CASO COMBINADO LLEGO TARDE EL 2DO SENSOR endif ' IF S_E = 0 THEN ; SE ALCANZÓ LA COMPENSACIÓN GOSUB COMP_OK ENDIF ' ' LLEGÓ AQUÍ: SE LLENÓ UNO O DOS DE LOS TANQUES DE BABOR ' ' OPCION 3: a)SI NO ESTA VACÍO EL TANQUE PROA-ESTRIBOR Y NO ESTA LLENO EL TANQUE PROA BABOR 'GOSUB ESTADO_BOMBAS BANDERA = 0 PAUSE 80 IF (BANDERA = 0) AND (SLB_POPA=1) THEN PAUSE 80 WHILE (S_E=1) AND (BANDERA = 0) AND (SLB_POPA=1) AND (S_PROA = 0) AND (S_POPA = 0) HIGH PE_PROA HIGH P_S_B_POPA PAUSE 300 CALL ESTADO_BOMBAS BANDERA = 0 GOSUB ADER IF VADQUIRIDO > VE_PROA THEN BANDERA = 1 SEROUT portc.6,N9600,[" *TER0T*"] ELSE SEROUT portc.6,N9600,[" *TER1T*"] ENDIF CALL TANQUE_BP WEND LOW PE_PROA LOW P_S_B_POPA CALL ESTADO_BOMBAS ELSE ' OPCION 3: b)SI NO ESTÁ VACÍO EL TANQUE POPA-ESTRIBOR Y NO ESTA LLENO EL TANQUE POPA BABOR PAUSE 80 IF (BANDERA = 0) AND (SLB_PROA=1) THEN PAUSE 80 WHILE (S_E=1) AND (BANDERA = 0) AND (SLB_PROA=1) AND (S_PROA = 0) AND (S_POPA = 0) HIGH PE_POPA HIGH P_S_B_PROA PAUSE 300 CALL ESTADO_BOMBAS BANDERA = 0 GOSUB ADEP IF VADQUIRIDO > VE_POPA THEN BANDERA = 1 SEROUT portc.6,N9600,[" *TEP0T*"] ELSE SEROUT portc.6,N9600,[" *TEP1T*"] ENDIF CALL TANQUE_BR WEND LOW PE_POPA LOW P_S_B_PROA CALL ESTADO_BOMBAS ENDIF ENDIF ' IF S_E = 0 THEN ; SE ALCANZÓ LA COMPENSACIÓN GOSUB COMP_OK ELSE GOSUB COMP_NOK ; NO LO LOGRO ENDIF RETURN '******************************************************************************** PROA: ' OPCION 1: RETIRAR AGUA DE LOS TANQUES DONDE SE PRODUJO LA INCLINACIÓN ' MIENTRAS INDIQUE INCLINACIÓN A PROA y LAS BOMBAS DE PROA: ESTRIBOR Y BABOR TENGAN AGUA PAUSE 80 ' if (S_E = 1) or (S_B = 1) then RETURN ' ES EL CASO COMBINADO LLEGO TARDE EL 2DO SENSOR endif ' BANDERA = 0 SEROUT portc.6,N9600,[" *ERR*"] WHILE ((S_PROA=1) AND BANDERA = 0) AND (S_E = 0) AND (S_B = 0) HIGH PE_PROA HIGH PB_PROA ; RETIRE AGUA DE LOS TANQUES DE ESTRIBOR Y BABOR IF SLB_POPA=1 AND SLE_POPA=1 THEN HIGH P_S_E_POPA HIGH P_S_B_POPA ELSE LOW P_S_E_POPA LOW P_S_B_POPA ENDIF PAUSE 300 CALL ESTADO_BOMBAS BANDERA = 0 GOSUB ADBR IF VADQUIRIDO > VB_PROA THEN BANDERA = 1 SEROUT portc.6,N9600,[" *TBR0T*"] ELSE SEROUT portc.6,N9600,[" *TBR1T*"] ENDIF GOSUB ADER IF VADQUIRIDO > VE_PROA THEN BANDERA = 1 SEROUT portc.6,N9600,[" *TER0T*"] ELSE SEROUT portc.6,N9600,[" *TER1T*"] ENDIF CALL TANQUE_EP CALL TANQUE_BP WEND ' LOW PE_PROA LOW PB_PROA LOW P_S_E_POPA LOW P_S_B_POPA CALL ESTADO_BOMBAS ' if (S_E = 1) or (S_B = 1) then RETURN ' ES EL CASO COMBINADO LLEGO TARDE EL 2DO SENSOR endif ' IF S_PROA = 0 THEN ; SE ALCANZÓ LA COMPENSACIÓN GOSUB COMP_OK ENDIF ' ' LLEGÓ AQUÍ: SE AGOTÓ EL AGUA EN UNO O EN DOS DE LOS TANQUES DE PROA ' ' OPCION 2: CARGAR CON AGUA LOS TANQUES OPUESTOS HASTA COMPENSAR O SE LLENE UNO DE ELLOS ' MIENTRAS INDIQUE INCLINACIÓN A PROA y LOS SENSORES DE LLENO DE POPA: ESTRIBOR Y POPA NO MARQUEN LLENO PAUSE 80 WHILE ((S_PROA=1) AND (SLB_POPA=1) AND (SLE_POPA=1) ) AND (S_E = 0) AND (S_B = 0) HIGH P_S_E_POPA HIGH P_S_B_POPA ; INGRESE AGUA EN LOS TANQUES DE POPA PAUSE 300 CALL ESTADO_BOMBAS CALL TANQUE_BP CALL TANQUE_EP WEND ' LOW P_S_E_POPA LOW P_S_B_POPA CALL ESTADO_BOMBAS ' if (S_E = 1) or (S_B = 1) then RETURN ' ES EL CASO COMBINADO LLEGO TARDE EL 2DO SENSOR endif ' IF S_PROA = 0 THEN ; SE ALCANZÓ LA COMPENSACIÓN GOSUB COMP_OK ENDIF ' ' LLEGÓ AQUÍ: SE LLENO UNO O DOS DE LOS TANQUES DE POPA ' ' OPCION 3: a)SI NO ESTA VACÍO EL TANQUE PROA-BABOR Y NO ESTA LLENO EL TANQUE POPA BABOR 'GOSUB ESTADO_BOMBAS PAUSE 80 BANDERA = 0 IF ((BANDERA = 0) AND (SLE_POPA=1)) THEN PAUSE 80 WHILE ((S_PROA=1) AND (BANDERA = 0) AND (SLE_POPA=1) ) AND (S_E = 0) AND (S_B = 0) HIGH PB_PROA HIGH P_S_E_POPA PAUSE 300 CALL ESTADO_BOMBAS BANDERA = 0 GOSUB ADBR IF VADQUIRIDO > VB_PROA THEN BANDERA = 1 SEROUT portc.6,N9600,[" *TBR0T*"] ELSE SEROUT portc.6,N9600,[" *TBR1T*"] ENDIF CALL TANQUE_EP WEND LOW PB_PROA LOW P_S_E_POPA CALL ESTADO_BOMBAS ELSE ' OPCION 3: b)SI NO ESTÁ VACÍO EL TANQUE PROA-ESTRIBOR Y NO ESTA LLENO EL TANQUE POPA ESTRIBOR PAUSE 80 IF ((BANDERA = 0) AND (SLB_POPA=1)) THEN PAUSE 80 WHILE ((S_PROA=1) AND (BANDERA = 0) AND (SLB_POPA=1)) AND (S_E = 0) AND (S_B = 0) HIGH PE_PROA HIGH P_S_B_POPA PAUSE 300 CALL ESTADO_BOMBAS BANDERA = 0 GOSUB ADER IF VADQUIRIDO > VE_PROA THEN BANDERA = 1 SEROUT portc.6,N9600,[" *TER0T*"] ELSE SEROUT portc.6,N9600,[" *TER1T*"] ENDIF CALL TANQUE_BP WEND LOW PE_PROA LOW P_S_B_POPA CALL ESTADO_BOMBAS ENDIF ENDIF ' IF S_PROA = 0 THEN ; SE ALCANZÓ LA COMPENSACIÓN GOSUB COMP_OK ELSE GOSUB COMP_NOK ; NO LO LOGRO ENDIF RETURN '******************************************************************************** POPA: ' OPCION 1: RETIRAR AGUA DE LOS TANQUES DONDE SE PRODUJO LA INCLINACION ' MIENTRAS INDIQUE INCLINACIÓN A POPA y LAS BOMBAS DE POPA: ESTRIBOR Y BABOR TENGAN AGUA PAUSE 80 ' if (S_E = 1) or (S_B = 1) then RETURN ' ES EL CASO COMBINADO LLEGO TARDE EL 2DO SENSOR endif ' BANDERA = 0 SEROUT portc.6,N9600,[" *EPP*"] WHILE ((S_POPA=1) AND (BANDERA = 0 )) AND (S_E = 0) AND (S_B = 0) HIGH PE_POPA HIGH PB_POPA ; RETIRE AGUA DE LOS TANQUES DE POPA IF SLB_PROA=1 AND SLE_PROA=1 THEN HIGH P_S_E_PROA HIGH P_S_B_PROA ELSE LOW P_S_E_PROA LOW P_S_B_PROA ENDIF PAUSE 300 CALL ESTADO_BOMBAS BANDERA = 0 GOSUB ADBP IF VADQUIRIDO > VB_POPA THEN BANDERA = 1 SEROUT portc.6,N9600,[" *TBP0T*"] ELSE SEROUT portc.6,N9600,[" *TBP1T*"] ENDIF GOSUB ADEP IF VADQUIRIDO > VE_POPA THEN BANDERA = 1 SEROUT portc.6,N9600,[" *TEP0T*"] ELSE SEROUT portc.6,N9600,[" *TEP1T*"] ENDIF CALL TANQUE_ER CALL TANQUE_BR WEND ' LOW PE_POPA LOW PB_POPA LOW P_S_E_PROA LOW P_S_B_PROA CALL ESTADO_BOMBAS ' if (S_E = 1) or (S_B = 1) then RETURN ' ES EL CASO COMBINADO LLEGO TARDE EL 2DO SENSOR endif ' IF S_POPA = 0 THEN ; SE ALCANZÓ LA COMPENSACIÓN GOSUB COMP_OK ENDIF ' ' LLEGÓ AQUÍ: SE AGOTÓ EL AGUA EN UNO O EN DOS DE LOS TANQUES DE POPA ' ' OPCION 2: CARGAR CON AGUA LOS TANQUES OPUESTOS HASTA COMPENSAR O SE LLENE UNO DE ELLOS ' MIENTRAS INDIQUE INCLINACIÓN A POPA y LOS SENSORES DE LLENO DE PROA: ESTRIBOR Y POPA NO MARQUEN LLENO 'GOSUB ESTADO_BOMBAS PAUSE 80 WHILE ((S_POPA=1) AND (SLB_PROA=1) AND (SLE_PROA=1) ) AND (S_E = 0) AND (S_B = 0) HIGH P_S_E_PROA HIGH P_S_B_PROA ; INGRESE AGUA EN LOS TANQUES DE PROA PAUSE 300 CALL TANQUE_ER CALL TANQUE_BR WEND ' LOW P_S_E_PROA LOW P_S_B_PROA CALL ESTADO_BOMBAS ' if (S_E = 1) or (S_B = 1) then RETURN ' ES EL CASO COMBINADO LLEGO TARDE EL 2DO SENSOR endif ' IF S_POPA = 0 THEN ; SE ALCANZO LA COMPENSACIÓN GOSUB COMP_OK ENDIF ' ' LLEGÓ AQUÍ: SE LLENÓ UNO O DOS DE LOS TANQUES DE PROA ' ' OPCION 3: a)SI NO ESTÁ VACÍO EL TANQUE POPA-BABOR Y NO ESTA LLENO EL TANQUE PROA BABOR 'GOSUB ESTADO_BOMBAS BANDERA = 0 PAUSE 80 IF ((BANDERA = 0) AND (SLE_PROA=1)) THEN PAUSE 80 WHILE ((S_POPA=1) AND (BANDERA = 0) AND (SLE_PROA=1) ) AND (S_E = 0) AND (S_B = 0) HIGH PB_POPA HIGH P_S_E_PROA PAUSE 300 BANDERA = 0 GOSUB ADBP IF VADQUIRIDO > VB_POPA THEN BANDERA = 1 SEROUT portc.6,N9600,[" *TBP0T*"] ELSE SEROUT portc.6,N9600,[" *TBP1T*"] ENDIF CALL TANQUE_ER WEND LOW PB_POPA LOW P_S_E_PROA CALL ESTADO_BOMBAS ELSE ' OPCION 3: b)SI NO ESTÁ VACIO EL TANQUE POPA-ESTRIBOR Y NO ESTA LLENO EL TANQUE PROA ESTRIBOR PAUSE 80 IF ((BANDERA = 0) AND (SLB_PROA=1)) THEN PAUSE 80 WHILE ((S_POPA=1) AND (BANDERA = 0) AND (SLB_PROA=1) ) AND (S_E = 0) AND (S_B = 0) HIGH PE_POPA HIGH P_S_B_PROA PAUSE 300 CALL ESTADO_BOMBAS BANDERA = 0 GOSUB ADEP IF VADQUIRIDO > VE_POPA THEN BANDERA = 1 SEROUT portc.6,N9600,[" *TEP0T*"] ELSE SEROUT portc.6,N9600,[" *TEP1T*"] ENDIF CALL TANQUE_BR WEND LOW PE_POPA LOW P_S_B_PROA CALL ESTADO_BOMBAS ENDIF ENDIF ' IF S_POPA = 0 THEN ; SE ALCANZÓ LA COMPENSACIÓN GOSUB COMP_OK ELSE GOSUB COMP_NOK ; NO LO LOGRO ENDIF RETURN '******************************************************************************** BABOR_PROA: ' OPCION 1: RETIRAR AGUA DE LOS TANQUES DONDE SE PRODUJO LA INCLINACIÓN ' MIENTRAS INDIQUE INCLINACIÓN A BABOR-PROA y LA BOMBA DE BABOR PROA TENGA AGUA PAUSE 80 SEROUT portc.6,N9600,[" *EBR*"] BANDERA = 0 WHILE ((S_B=1) AND (S_PROA=1) AND (BANDERA = 0)) HIGH PB_PROA IF SLE_POPA=1 THEN HIGH P_S_E_POPA ELSE LOW P_S_E_POPA ENDIF PAUSE 300 CALL ESTADO_BOMBAS BANDERA = 0 GOSUB ADBR IF VADQUIRIDO > VB_PROA THEN BANDERA = 1 SEROUT portc.6,N9600,[" *TBR0T*"] ELSE SEROUT portc.6,N9600,[" *TBR1T*"] ENDIF CALL TANQUE_EP WEND ' LOW PB_PROA LOW P_S_E_POPA CALL ESTADO_BOMBAS IF ((S_B=0) AND (S_PROA=0)) THEN ; SE ALCANZÓ LA COMPENSACIÓN GOSUB COMP_OK ENDIF ' ' LLEGÓ AQUÍ: SE AGOTÓ EL AGUA EN EL TANQUE DE BABOR-PROA ' ' OPCION 2: CARGAR CON AGUA EL TANQUE OPUESTO HASTA COMPENSAR O SE LLENE ' MIENTRAS INDIQUE INCLINACIÓN BABOR-PROA y EL SENSOR POPA-ESTRIBOR DE LLENO NO MARQUE LLENO 'GOSUB ESTADO_BOMBAS PAUSE 80 WHILE ((S_B=1) AND (S_PROA=1) AND (SLE_POPA=1) ) HIGH P_S_E_POPA ; INGRESE AGUA EN EL TANQUE DE POPA-ESTRIBOR PAUSE 300 CALL ESTADO_BOMBAS CALL TANQUE_EP WEND ' LOW P_S_E_POPA CALL ESTADO_BOMBAS IF ((S_B=0) AND (S_PROA=0)) THEN ; SE ALCANZÓ LA COMPENSACIÓN GOSUB COMP_OK ENDIF ' ' LLEGO AQUÍ: SE LLENÓ EL TANQUE DE POPA-ESTRIBOR ' ' OPCION 3: COMPENSAR CON LOS DOS TANQUES RESTANTES, MIENTRAS NO SE LLENEN PAUSE 80 WHILE ((S_B=1) AND (S_PROA=1) AND (SLE_PROA=1) AND (SLB_POPA=1) ) HIGH P_S_E_PROA HIGH P_S_B_POPA PAUSE 300 CALL ESTADO_BOMBAS CALL TANQUE_ER CALL TANQUE_BP WEND LOW P_S_E_PROA LOW P_S_B_POPA CALL ESTADO_BOMBAS ' IF ((S_B=0) AND (S_PROA=0)) THEN ; SE ALCANZÓ LA COMPENSACIÓN GOSUB COMP_OK ELSE GOSUB COMP_NOK ; NO LO LOGRO ENDIF RETURN '******************************************************************************** BABOR_POPA: ' OPCION 1: RETIRAR AGUA DE LOS TANQUES DONDE SE PRODUJO LA INCLINACIÓN ' MIENTRAS INDIQUE INCLINACION A BABOR-POPA y LA BOMBA DE BABOR POPA TENGA AGUA PAUSE 80 SEROUT portc.6,N9600,["EBP"] BANDERA = 0 WHILE (S_B=1) AND (S_POPA=1) AND (BANDERA = 0) HIGH PB_POPA IF SLE_PROA=1 THEN HIGH P_S_E_PROA ELSE LOW P_S_E_PROA ENDIF PAUSE 300 CALL ESTADO_BOMBAS BANDERA = 0 GOSUB ADBP IF VADQUIRIDO > VB_POPA THEN BANDERA = 1 SEROUT portc.6,N9600,[" *TBP0T*"] ELSE SEROUT portc.6,N9600,[" *TBP1T*"] ENDIF CALL TANQUE_ER WEND ' LOW PB_POPA LOW P_S_E_PROA CALL ESTADO_BOMBAS IF ((S_B=0) AND (S_POPA=0)) THEN ; SE ALCANZÓ LA COMPENSACIÓN GOSUB COMP_OK ENDIF ' ' LLEGÓ AQUÍ: SE AGOTÓ EL AGUA EN EL TANQUE DE BABOR-POPA ' ' OPCION 2: CARGAR CON AGUA EL TANQUE OPUESTO HASTA COMPENSAR O SE LLENE ' MIENTRAS INDIQUE INCLINACIÓN BABOR-POPA y EL SENSOR PROA-ESTRIBOR DE LLENO NO MARQUE LLENO PAUSE 80 WHILE ((S_B=1) AND (S_POPA=1) AND (SLE_PROA=1) ) HIGH P_S_E_PROA ; INGRESE AGUA EN EL TANQUE DE PROA-ESTRIBOR PAUSE 300 CALL ESTADO_BOMBAS CALL TANQUE_ER WEND ' LOW P_S_E_PROA CALL ESTADO_BOMBAS IF ((S_B=0) AND (S_POPA=0)) THEN ; SE ALCANZÓ LA COMPENSACIÓN GOSUB COMP_OK ENDIF ' ' LLEGÓ AQUÍ: SE LLENÓ EL TANQUE DE PROA-ESTRIBOR ' ' OPCION 3: COMPENSAR CON LOS DOS TANQUES RESTANTES, MIENTRAS NO SE LLENEN 'GOSUB ESTADO_BOMBAS PAUSE 80 WHILE ((S_B=1) AND (S_POPA=1) AND (SLB_PROA=1) AND (SLE_POPA=1) ) HIGH P_S_B_PROA HIGH P_S_E_POPA PAUSE 300 CALL ESTADO_BOMBAS CALL TANQUE_BR CALL TANQUE_EP WEND LOW P_S_B_PROA LOW P_S_E_POPA CALL ESTADO_BOMBAS ' IF ((S_B=0) AND (S_POPA=0)) THEN ; SE ALCANZÓ LA COMPENSACIÓN GOSUB COMP_OK ELSE GOSUB COMP_NOK ; NO LO LOGRO ENDIF RETURN '******************************************************************************** ESTRIBOR_PROA: ' OPCION 1: RETIRAR AGUA DE LOS TANQUES DONDE SE PRODUJO LA INCLINACIÓN ' MIENTRAS INDIQUE INCLINACIÓN A ESTRIBOR-PROA y LA BOMBA DE ESTRIBOR PROA TENGA AGUA PAUSE 80 SEROUT portc.6,N9600,[" EER"] BANDERA = 0 WHILE ((S_E=1) AND (S_PROA=1) AND (BANDERA = 0)) HIGH PE_PROA IF SLB_POPA=1 THEN HIGH P_S_B_POPA ELSE LOW P_S_B_POPA ENDIF PAUSE 300 BANDERA = 0 CALL ESTADO_BOMBAS GOSUB ADER IF VADQUIRIDO > VE_PROA THEN BANDERA = 1 SEROUT portc.6,N9600,[" *TER0T*"] ELSE SEROUT portc.6,N9600,[" *TER1T*"] ENDIF CALL TANQUE_BP WEND ' LOW PE_PROA LOW P_S_B_POPA CALL ESTADO_BOMBAS IF ((S_E=0) AND (S_PROA=0)) THEN ; SE ALCANZÓ LA COMPENSACIÓN GOSUB COMP_OK ENDIF ' ' LLEGÓ AQUÍ: SE AGOTÓ EL AGUA EN EL TANQUE DE ESTRIBOR-PROA ' ' OPCION 2: CARGAR CON AGUA EL TANQUE OPUESTO HASTA COMPENSAR O SE LLENE ' MIENTRAS INDIQUE INCLINACIÓN ESTRIBOR-PROA y EL SENSOR POPA-BABOR DE LLENO NO MARQUE LLENO PAUSE 80 WHILE ((S_E=1) AND (S_PROA=1) AND (SLB_POPA=1) ) HIGH P_S_B_POPA ; INGRESE AGUA EN EL TANQUE DE POPA-BABOR PAUSE 300 CALL ESTADO_BOMBAS CALL TANQUE_BP WEND ' LOW P_S_B_POPA CALL ESTADO_BOMBAS IF ((S_E=0) AND (S_PROA=0)) THEN ; SE ALCANZÓ LA COMPENSACIÓN GOSUB COMP_OK ENDIF ' ' LLEGO AQUI: SE LLENÓ EL TANQUE DE POPA-BABOR ' ' OPCION 3: COMPENSAR CON LOS DOS TANQUES RESTANTES, MIENTRAS NO SE LLENEN 'GOSUB ESTADO_BOMBAS PAUSE 80 WHILE ((S_E=1) AND (S_PROA=1) AND (SLB_PROA=1) AND (SLE_POPA=1) ) HIGH P_S_B_PROA HIGH P_S_E_POPA PAUSE 300 CALL TANQUE_BR CALL TANQUE_EP WEND LOW P_S_B_PROA LOW P_S_E_POPA CALL ESTADO_BOMBAS ' IF ((S_E=0) AND (S_PROA=0)) THEN ; SE ALCANZÓ LA COMPENSACIÓN GOSUB COMP_OK ELSE GOSUB COMP_NOK ; NO LO LOGRO ENDIF RETURN '******************************************************************************** ESTRIBOR_POPA: ' OPCION 1: RETIRAR AGUA DE LOS TANQUES DONDE SE PRODUJO LA INCLINACIÓN ' MIENTRAS INDIQUE INCLINACIÓN A ESTRIBOR-POPA y LA BOMBA DE ESTRIBOR POPA TENGA AGUA PAUSE 80 SEROUT portc.6,N9600,[" *EEP*"] BANDERA = 0 WHILE ((S_E=1) AND (S_POPA=1) AND (BANDERA = 0)) HIGH PE_POPA IF SLB_PROA=1 THEN HIGH P_S_B_PROA ELSE LOW P_S_B_PROA ENDIF PAUSE 300 CALL ESTADO_BOMBAS BANDERA = 0 GOSUB ADEP IF VADQUIRIDO > VE_POPA THEN BANDERA = 1 SEROUT portc.6,N9600,[" *TEP0T*"] ELSE SEROUT portc.6,N9600,[" *TEP1T*"] ENDIF CALL TANQUE_BR WEND ' LOW PE_POPA LOW P_S_B_PROA CALL ESTADO_BOMBAS IF ((S_E=0) AND (S_POPA=0)) THEN ; SE ALCANZÓ LA COMPENSACIÓN GOSUB COMP_OK ENDIF ' ' LLEGÓ AQUÍ: SE AGOTÓ EL AGUA EN EL TANQUE DE ESTRIBOR-POPA ' ' OPCION 2: CARGAR CON AGUA EL TANQUE OPUESTO HASTA COMPENSAR O SE LLENE ' MIENTRAS INDIQUE INCLINACIÓN ESTRIBOR-POPA y EL SENSOR PROA-BABOR DE LLENO NO MARQUE LLENO 'GOSUB ESTADO_BOMBAS PAUSE 80 WHILE ((S_E=1) AND (S_POPA=1) AND (SLB_PROA=1)) HIGH P_S_B_PROA ; INGRESE AGUA EN EL TANQUE DE PROA-BABOR PAUSE 300 CALL ESTADO_BOMBAS CALL TANQUE_BR WEND ' LOW P_S_B_PROA CALL ESTADO_BOMBAS IF ((S_E=0) AND (S_POPA=0)) THEN ; SE ALCANZO LA COMPENSACIÓN GOSUB COMP_OK ENDIF ' ' LLEGÓ AQUÍ: SE LLENÓ EL TANQUE DE PROA-BABOR ' ' OPCION 3: COMPENSAR CON LOS DOS TANQUES RESTANTES, MIENTRAS NO SE LLENEN 'GOSUB ESTADO_BOMBAS PAUSE 80 WHILE ((S_E=1) AND (S_POPA=1) AND (SLE_PROA=1) AND (SLB_POPA=1)) HIGH P_S_E_PROA HIGH P_S_B_POPA PAUSE 300 CALL ESTADO_BOMBAS CALL TANQUE_ER CALL TANQUE_BP WEND LOW P_S_E_PROA LOW P_S_B_POPA CALL ESTADO_BOMBAS ' IF ((S_E=0) AND (S_POPA=0)) THEN ; SE ALCANZÓ LA COMPENSACIÓN GOSUB COMP_OK ELSE GOSUB COMP_NOK ; NO LO LOGRO ENDIF RETURN '******************************************************************************** COMP_OK: SEROUT portc.6,N9600,[" *ENN*"] RETURN COMP_NOK: SEROUT portc.6,N9600,[" *EXX*"] RETURN ;************************************************************** APAGA: LOW PE_PROA LOW PE_POPA LOW PB_PROA LOW PB_POPA LOW P_S_E_PROA LOW P_S_E_POPA LOW P_S_B_PROA LOW P_S_B_POPA RETURN ;************************************************************** ADBR: ; ANÁLOGO DIGITAL BABOR PROA ADCON0 = %1010001 ADCON0.2 = 1 'Empieza la conversión ADBR1: pause 5 if ADCON0.2 = 1 Then ADBR1 VADQUIRIDO.highbyte = ADRESH 'move HIGH byte of result to adval VADQUIRIDO.lowbyte = ADRESL 'move LOW byte of result to adval RETURN ;************************************************************** ADBP: ; ANÁLOGO DIGITAL BABOR POPA ADCON0 = %1011001 ADCON0.2 = 1 'Empieza la conversion ADBP1: pause 5 if ADCON0.2 = 1 Then ADBP1 VADQUIRIDO.highbyte = ADRESH 'move HIGH byte of result to adval VADQUIRIDO.lowbyte = ADRESL 'move LOW byte of result to adval RETURN ;************************************************************** ADER: ; ANÁLOGO DIGITAL ESTRIBOR PROA ADCON0 = %1000001 ADCON0.2 = 1 'Empieza la conversión ADER1: pause 5 if ADCON0.2 = 1 Then ADER1 VADQUIRIDO.highbyte = ADRESH 'move HIGH byte of result to adval VADQUIRIDO.lowbyte = ADRESL 'move LOW byte of result to adval RETURN ;************************************************************** ADEP: ; ANÁLOGO DIGITAL ESTRIBOR POPA ADCON0 = %1001001 ADCON0.2 = 1 'Empieza la conversión ADEP1: pause 5 if ADCON0.2 = 1 Then ADEP1 VADQUIRIDO.highbyte = ADRESH 'move HIGH byte of result to adval VADQUIRIDO.lowbyte = ADRESL 'move LOW byte of result to adval RETURN ;************************************************************** ESTADO_BOMBAS: SEROUT portc.6,N9600,[" *"] SEROUT portc.6,N9600,["I"] ' BOMBAS DE DESFOGUE IF PB_PROA=1 THEN SEROUT portc.6,N9600,["1"] ; BOMBA DE BABOR PROA PRENDIDA ELSE SEROUT portc.6,N9600,["0"] ; BOMBA DE BABOR PROA APAGADA ENDIF IF PE_PROA=1 THEN SEROUT portc.6,N9600,["1"] ; BOMBA DE ESTRIBOR PROA PRENDIDA ELSE SEROUT portc.6,N9600,["0"] ; BOMBA DE ESTRIBOR PROA APAGADA ENDIF IF PB_POPA=1 THEN SEROUT portc.6,N9600,["1"] ; BOMBA DE BABOR POPA PRENDIDA ELSE SEROUT portc.6,N9600,["0"] ; BOMBA DE BABOR POPA APAGADA ENDIF IF PE_POPA=1 THEN SEROUT portc.6,N9600,["1"] ; BOMBA DE ESTRIBOR POPA PRENDIDA ELSE SEROUT portc.6,N9600,["0"] ; BOMBA DE ESTRIBOR POPA APAGADA ENDIF ' ' BOMBAS DE SUMINISTRO IF P_S_B_PROA = 1 THEN SEROUT portc.6,N9600,["1"] ; BOMBA DE BABOR PROA PRENDIDA ELSE SEROUT portc.6,N9600,["0"] ; BOMBA DE BABOR PROA APAGADA ENDIF IF P_S_E_PROA = 1 THEN SEROUT portc.6,N9600,["1"] ; BOMBA DE ESTRIBOR PROA PRENDIDA ELSE SEROUT portc.6,N9600,["0"] ; BOMBA DE ESTRIBOR PROA APAGADA ENDIF IF P_S_B_POPA = 1 THEN SEROUT portc.6,N9600,["1"] ELSE SEROUT portc.6,N9600,["0"] ENDIF IF P_S_E_POPA = 1 THEN SEROUT portc.6,N9600,["1"] ELSE SEROUT portc.6,N9600,["0"] ENDIF ; BOMBA DE BABOR POPA PRENDIDA ; BOMBA DE BABOR POPA APAGADA ; BOMBA DE ESTRIBOR POPA PRENDIDA ; BOMBA DE ESTRIBOR POPA APAGADA SEROUT portc.6,N9600,["I"] SEROUT portc.6,N9600,["*"] RETURN ;************************************************************** TANQUE_BR: IF SLB_PROA=0 THEN ; INFORMACION DEL TANQUE BABOR PROA SEROUT portc.6,N9600,[" *TBR2T*"] ENDIF RETURN ;************************************************************** TANQUE_ER: ; INFORMACIÓN DEL TANQUE ESTRIBOR PROA IF SLE_PROA=0 THEN SEROUT portc.6,N9600,[" *TER2T*"] ENDIF RETURN ;************************************************************** TANQUE_BP: ; INFORMACIÓN DEL TANQUE BABOR POPA IF SLB_POPA=0 THEN SEROUT portc.6,N9600,[" *TBP2T*"] ENDIF RETURN ;************************************************************** TANQUE_EP: ; INFORMACIÓN DEL TANQUE ESTRIBOR POPA IF SLE_POPA=0 THEN SEROUT portc.6,N9600,[" *TEP2T*"] ENDIF RETURN ;************************************************************** VACIA_TANQUES: BBP = 0 BBR = 0 BEP = 0 BER = 0 WHILE (BBP=0) OR (BBR=0) OR (BEP=0) OR (BER=0) IF BBP=0 THEN HIGH PB_POPA ENDIF IF BBR=0 THEN HIGH PB_PROA ENDIF IF BEP=0 THEN HIGH PE_POPA ENDIF IF BER=0 THEN HIGH PE_PROA ENDIF PAUSE 1300 IF BBP=0 THEN GOSUB ADBP IF VADQUIRIDO > VB_POPA THEN BBP = 1 LOW PB_POPA ENDIF ENDIF IF BBR=0 THEN GOSUB ADBR IF VADQUIRIDO > VB_PROA THEN BBR = 1 LOW PB_PROA ENDIF ENDIF IF BER=0 THEN GOSUB ADER IF VADQUIRIDO > VE_PROA THEN BER = 1 LOW PE_PROA ENDIF ENDIF IF BEP=0 THEN GOSUB ADEP IF VADQUIRIDO > VE_POPA THEN BEP = 1 LOW PE_POPA ENDIF ENDIF WEND call APAGA RETURN ;************************************************************** MEDIO_TANQUE: high VERDE HIGH P_S_E_POPA HIGH P_S_E_PROA HIGH P_S_B_PROA HIGH P_S_B_POPA PAUSE 3500 LOW P_S_E_PROA LOW P_S_E_POPA LOW P_S_B_PROA LOW P_S_B_POPA LOW VERDE RETURN ;************************************************************** PRIMERA: low verde CALL APAGA pause 800 ; PERMITE ESTABILIZACIÓN DEL ESTADO ACTUAL WHILE ( S_B = 1 OR S_E = 1 OR S_PROA = 1 OR S_POPA = 1) IF ((S_B = 1) AND (S_PROA = 0) AND (S_POPA = 0)) THEN HIGH azul GOSUB BABOR ENDIF IF ((S_B = 1) AND (S_PROA = 1)) THEN HIGH azul GOSUB BABOR_PROA ENDIF IF ((S_B = 1) AND (S_POPA = 1)) THEN HIGH azul GOSUB BABOR_POPA ENDIF ' IF ((S_E = 1) AND (S_PROA = 0) AND (S_POPA = 0)) THEN HIGH azul GOSUB ESTRIBOR ENDIF IF ((S_E = 1) AND (S_PROA = 1)) THEN HIGH azul GOSUB ESTRIBOR_PROA ENDIF IF ((S_E = 1) AND (S_POPA = 1)) THEN HIGH azul GOSUB ESTRIBOR_POPA ENDIF ' IF (S_PROA = 1) THEN HIGH azul GOSUB PROA ENDIF ' IF (S_POPA = 1) THEN HIGH azul GOSUB POPA ENDIF wend low azul RETURN ' FIN DE PRIMERA Interrupcion: low verde CALL APAGA pause 600 ; PERMITE ESTABILIZACIÓN DEL ESTADO ACTUAL if portb.0=0 then resume endif WHILE ((S_B=1)OR S_E = 1 ) OR (S_PROA = 1) OR (S_POPA = 1) IF ((S_B = 1) AND (S_PROA = 0) AND (S_POPA = 0)) THEN HIGH azul GOSUB BABOR ENDIF IF ((S_B = 1) AND (S_PROA = 1)) THEN HIGH azul GOSUB BABOR_PROA ENDIF IF ((S_B = 1) AND (S_POPA = 1)) THEN HIGH azul GOSUB BABOR_POPA ENDIF ' IF ((S_E = 1) AND (S_PROA = 0) AND (S_POPA = 0)) THEN HIGH azul GOSUB ESTRIBOR ENDIF IF ((S_E = 1) AND (S_PROA = 1)) THEN HIGH azul GOSUB ESTRIBOR_PROA ENDIF IF ((S_E = 1) AND (S_POPA = 1)) THEN HIGH azul GOSUB ESTRIBOR_POPA ENDIF ' IF (S_PROA = 1) THEN HIGH azul GOSUB PROA ENDIF ' IF (S_POPA = 1) THEN HIGH azul GOSUB POPA ENDIF WEND low azul INTCON=%10010000 ; SE HABILITA LA INTERRUPCIÓN B.0 Resume ' FIN DE LA INTERRUPCIÓN enable END