ESTE BLOG COMENZÓ A PUBLICARSE EN 2008, POR LO TANTO MUCHOS DE LOS TEMAS HAN QUEDADO DESACTUALIZADOS U OBSOLETOS. LOS LECTORES QUE DESEEN UTILIZAR ALGUNO DE LOS ELEMENTOS AQUI DESCRITOS DEBERÏAN ASEGURARSE DE BUSCAR LAS REFERENCIAS MAS MODERNAS DE LOS TEMAS DE SU INTERÉS. EL BUSCADOR INCLUIDO SERÄ UNA AYUDA PARA ESA BÚSQUEDA

viernes, 11 de mayo de 2012

Software de control (y III)


En el artículo anterior, mostraba una imagen de la pantalla del programa ControlZ mostrando un zona correspondiente a la estación de montaña de mi maqueta. Decía que para permitir una explicación, había introducido manualmente una rotulación sobre la imagen original, rotulación que el programa no presenta realmente en esa forma, sino que aparece para cada elemento su nombre según pasa el cursor del ratón por encima.

Vuelo a traer aquí una imagen de esa estación de montaña, pero ahora sin ningún retoque, precisamente porque voy a referirme a las indicaciones que el programa si presenta en la pantalla. Vuelvo a recordar que los colores con que se representa cada vía corresponde al cantón al que pertenece de manera que aquí vemos parte del cantón 1 en marrón, del cantón 2 en rojo, del cantón 3 en naranja del cantón 4 en amarillo y del cantón 5 en verde.

Por supuesto, tenemos indicación visual en la pantalla de la posición de cada desvío, de forma que vemos claramente como tenemos hecho un itinerario para que el tren circule de izquierda a derecha por la vía naranja, con sus correspondientes señales abiertas. El que en este cantón 3 de color naranja se vea la linea continua de ese color indica que ese cantón está libre, es decir no hay ningún tren en ese cantón.

Por el contrario en la vía de arriba, la roja del cantón 2 vemos que la linea es de trazos negros y rojos. Eso indica que el cantón está ocupado, esto es, que hay una locomotora moviéndose en ese cantón. En definitiva la linea continua indica cantón o sector libre y la linea de trazos indica cantón o sector ocupado.

En la vía central tenemos un sector que está ocupado y desconectado, es decir tiene cortada la alimentación por el correspondiente relé. Por eso se ve de color gris. Además la linea es de trazos. o sea que está ocupado.

Efectivamente hay una locomotora parada en ese sector y por eso vemos el rótulo BR 003 sobre fondo rojo. BR 003 es por supuesto la identificación de la locomotora que está en ese sector y el fondo rojo indica que está parada.

En la primera vía vemos también el rótulo BR 85 sobre fondo verde. Esto indica que sobre la baliza que hay junto al rótulo acaba de pasar la locomotora BR 85, que está circulando por ese cantón. Por eso todo el cantón rojo aparece como ocupado. El rótulo verde aparece cada vez que una locomotora pasa sobre una baliza, y permanece visible junto a la baliza hasta que la misma locomotora pasa sobre otra baliza.

En definitiva,  la pantalla del ordenador va presentando dinámicamente toda la información sobre qué cantones o sectores se ocupan y liberan y también la información de la posición de todas las locomotoras presentes en la maqueta. En la siguiente imagen vemos otro ejemplo, esta vez correspondiente a la estación principal:


Aquí vemos como hay cuatro locomotoras estacionadas en cuatro vías de la estación principal, que vemos indicadas con su rótulo rojo. Esas cuatro locomotoras están sobre sectores inactivos (color gris) y por eso están paradas. La segunda vía desde abajo está vacía así que no se visualiza con trazos ni tiene etiqueta de locomotora, pero está aislada y por eso la vemos gris. En la vía cuarta desde abajo, está entrando la locomotora BR 003, que acaba de pasar sobre la baliza de esa vía. Por eso vemos ya su rótulo en esa vía, pero como todavía ese tramo está bajo tensión el rótulo está en verde y el color de la vía es violeta, lo que corresponde al cantón 7. La locomotora puede estar todavía moviéndose (posiblemente al pasar sobre la baliza de la vía se habrá ordenado una parada suave) o estar ya parada, pero el relé de ese sector sigue conectado y por lo tanto da ocupación a todo el cantón 7. Por eso vemos todo el cantón siete, violeta, de trazos.

Se puede ver también el itinerario de desvíos que la han llevado desde la señal de entrada abajo a la izquierda, hasta la vía de andén donde está entrando.

Las posiciones de ocupación y las etiquetas de locomotora, se conservan de sesión a sesión aunque el ordenador se apague, así que si no movemos los trenes, al volver a encender el programa, se mostrarán las posiciones y ocupación de todos los elementos tal como quedaron al cerrar el ordenador en la sesión previa.

Pero claro, en una maqueta de trenes tenemos que prever las intervenciones manuales, para quitar manualmente un tren de las vías o para ponerlo. Estos casos están previstos de una manera bastante simple: Si manualmente hacemos click sobre una baliza de un sector se pondrá la locomotora que digamos en ese sector, y el programa mostrará la etiqueta en esa posición. Análogamente, al hacer click en una de las etiquetas la locomotora se elimina de ese sector dejándolo libre.

Creo que con esto, están cubiertas todas las necesidades en cuanto al programa de control. Ahora por supuesto falta por probar todo esto, empezando por situar las balizas en la maqueta, con el correspondiente cableado, cosa que todavía no he hecho, y que me va a llevar unos cuantos días de un trabajo bastante delicado. El consuelo es que será la última actuación que afecte a la vía

Es curioso que prácticamente todo esto puede funcionar aún manteniendo el control manual de los trenes. Las señales se moverán y los sectores y cantones cambiarán sus indicaciones de libre a ocupado, y todo ello simplemente por la actuación de los sensores de la vía, con independencia de que la corriente de tracción sea todavía manual. Incluso los relés que activan o desactivan los sectores funcionarán sobre la corriente de tracción aunque el control de tracción siga siendo manual.

Las únicas cosas que no van a funcionar bajo control del programa, hasta que la tracción tenga control por programa, son las paradas y arranques suaves. Así que aunque parezca sorprendente, todo lo que se ha visto aquí en los tres últimos artículos puede aplicarse prácticamente al cien por cien a una maqueta estrictamente analógica con mando manual de los trenes









4 comentarios:

  1. Hola Ignacio,

    Creo que me he leido ya todo tu blog, y te comento en éste artículo como podría comentarte en cualquier otro, todos geniales y muy bién explicados. Tengo en mente elaborar una maqueta con un sistema similar al tuyo, intentado conseguir el mismo objetivo, aunque haciendo algunas cosas de forma distinta. Será en escala N, con un Arduino mega como "cerebro" de la maqueta, controlando la tracción con los integrados l298n en lugar de montar yo los controladores y alguna pequeña diferencia más.

    El caso es que quiero por un lado un sistema de control totalmente automático de la maqueta, el cual programaré en el Arduino, pero también quiero un sistema de control manual, que pensaba en implementarlo o montando un panel de control con interruptores, potenciómetros, leds y demás y conectándolo todo al Arduino, o con una aplicación para el ordenador que se comunique por el puerto serie con el Arduino. Después de toda la tarde, he conseguido una pequeña aplicación con interfaz de usuario para que presionando un botón se mande un 1 por el puerto de serie y se encienda un led conectado al arduino, y con otro botón, se manda un 0 se apague. De ésto al control total de la maqueta, sólo parece haber una cuestión de escala, pero que escala... Me preguntaba si estarías dispuesto a compartir tu increible trabajo con el software "control z" para que pueda adaptarlo a mi maqueta y adaptar el protocolo de comunicación para que hable con el Arduino, por supuesto me comprometo a no distribuir ni hacer nada con tu software ni mi modificación sin tu permiso expreso.

    Muchas gracias, y un saludo desde Valencia!

    P.D: no veo qu tengas botón de contactar ni mail a la vista. En mi blog; http://www.masqfoto.blogspot.com hay arriba una pestaña con un formulario de contacto, así puedes contactar conmigo de forma privada sin que tengamos que hacer públicos correos electrónicos.

    ResponderEliminar
    Respuestas
    1. Hola Jorge

      Empezando por el final, si que hay una forma de contactar conmigo de forma privada. En el margen derecho hay un epigrafe "CONTACTO" con la indicación de la forma de hacerlo. De hecho recibo muchísimas comunicaciones por ese medio.

      Y yendo al grano, yo veo una cosa bastante liada en tu exposición: Por un lado hablas de tener un Arduino Mega con un programa capaz de controlar toda la maqueta automáticamente. y por otro lado hablas de tener un programa como el mio para interactuar con el Arduino,

      Yo ahí veo una duplicidad porque mi programa es ya un programa total de control de la maqueta tanto en automático como en manual, asi que si hicieras eso tendrias duplicada la función de control. Si haces esa solución tendrías dos "cerebros" peleándose por hacer lo mismo.

      Yo creo que te has fijado en que mi programa tiene una atractiva interfase gráfica, y te has quedado en eso, y es lo que quieres hacer en lugar de un cuadro de control fisico, pero es que mi programa es mucho más que la interfase visual, yo diría que la interfase visual es menos del 5% del programa.

      Si te fijas en este blog en Julio de 2010 ya estaba terminada la interfase gráfica,(aunque luego he hecho algunos retoques, fundamentalmente el pasar de fondo claro a fondo oscuro) y apenas hay comentarios sobre su desarrollo, porque no me debíó llevar mas allá de quince días su desarrollo. Desde entonces hasta ahora he seguido desarrollando el programa, y sólamente el año pasado llegué al punto de que se controla todo el tema de circulación, lo que yo llamo el "Electronic Progressive Cab Control" y desde luego no he llegado todavía ni mucho menos al punto de considerarlo acabado.

      Asi que respecto de tu petición de compartir el ControlZ le veo algunos inconvenientes: El primero que no es ni mucho menos un programa acabado de manera que hay cosas que no funcionan, cosas que funcionan mal, coas que faltan, etc. Por otro lado esto no es un software comercial que tiene un proceso de instalación automatizado, sino que para que funcione el ordenador tiene que tener instalado una serie de componentes que problamente no vas a tener disponibles y sin los cuales no podría funcionar.

      Pero sobre todo, es que lo que el programa es en este momento, resulta absolutamente desproporcionado para lo que entiendo que pretendes en este momento. Es como si necesitas una caseta para el perro y te compras Torre Picaso.

      No si eres programador en Visual Basic (Control Z está hecho en VisualBasic 6.0). Si es asi, lo que si me ofrezco es a explicarte como hice la interfase gráfica, e incluso a pasarte subrutinas del programa para el manejo de los símbolos de la pantalla. En ese aspecto puedes contar con toda mi colaboración, pero creo que tratar de lanzarte a por el programa entero, te iba a dar un montón de problemas (me los da a mi, asi que....) y creo que no es lo que necesitas.

      Un Saludo




      Eliminar
    2. No había visto el epígrafe de contacto, disculpa, te habría mandado lo mismo por email ;)

      Efectivamente desde el ordenador sólo pretendo mandar las órdenes y visualizar el estado de las vías, y que sea el propio Arduino el encargado de gestionar toda la automatización de la maqueta; como tu bien dices, sustituir un cuadro de control físico por un programa.

      Soy estudiante de ingeniería electrónica, y algo de Visual Basic se. También me he planteado Python o directamente Processing, pero con lo sencillo que es hacer interfaces gráficas con Visual Studio, parece ideal para ésto. Efectivamente he visto tu programa, con esa bonita interfaz y he pensado que sería genial poder aprovechar algo ya hecho en lugar de hacerlo yo todo de cero.

      Efectivamente todo salvo la interfaz serían distintos para lo que yo necesito, que es simplemente mandar órdenes al Arduino en función de mi interacción con el programa y recibir información del Arduino, con el estado de los desvío y ocupación de vías y mostrarlo todo en pantalla.

      Teniendo ésto en cuenta, creo que estás en lo cierto, lo que necesito es una interfaz, y te estaría muy agradecido si me explicaras como la has hecho y más aún si me pasarás las subrutinas de las que hablas.

      Un saludo, y muchas gracias por el interés.

      Eliminar
    3. Hola.

      Mándame un correo a mimaquetaz@gmail.com para poder enviarte documentacion

      Un Saludo

      Ignacio

      Eliminar

Gracias por expresar tus opiniones.

Los comentarios aparecerán en el blog normalmente en unos pocos segundos