INICIO > Software  > > Control ferroviario >  
SistemaFerroviarioDCC_001.jpg

SOFTWARE DE CONTROL FERROVIARIO

  • MOTIVACIONES
  • Una de mis primeras aficiones fue la de jugar con trenes a escala que aunque no siempre la he practicado siempre a estado hay, debido a que hace ya algunos años me oriente profesionalmente a el desarrollo de sistemas electronicos y especialmente al trabajar en el Instituto de Magnetismo Aplicado "Salvador Velayos" desarrollando diversos sistemas para el mundo ferroviario se me volvio a despertar el interes por los trenes y poco a poco fui retomando el hobby de los trenes, pero con la particularidad de compartirla con mi gran pasion por el desarrollo de sistemas electronicos. Por lo que este proyecto me permite disfrutar de ambas aficiones al mismo tiempo.

    El proyecto esta dividido en varias partes, por un lado hay un software en el PC que es el tratado en este apartado, por otro lado y tratado en otros apartados hay hardware de control, de potencia y un firmware que lleva el control de toda la electrónica. Con todo esto consigo crear un sistema de gestion de maquetas ferroviarias a escala.



  • PLANTEAMIENTO DEL PROYECTO
  • El proyecto presenta varios retos bien diferenciados ya que me he impuesto que mi sistema sea compatible con los sistemas comerciales y que además disponga de una cierta calidad para en un futuro poder compartir con otros aficionados.

    • Estándar DCC. Para poder usar este software con otros software o hardware comerciales uso este estándar que define los protocolos que debe de tener para poder comunicarse con los decoders instalados en la vía, como son los instalados en locomotoras o accesorios como desvíos, semáforos etc.

    • Interfaz grafico de usuario. Esta parte del programa se encarga de visualizar el estado de la maqueta, las locomotoras, semáforos, desvíos, etc. Además de dispone de los mandos necesarios para que el usuario pueda configurar todos los parámetros de control que requiera la maqueta.

    • Para organizar y gestionar todos los recursos de los que dispone el software se usa un modelo de programación adecuado y además que se ofrezca a un fácil mantenimiento.

  • OBJETIVOS
  • Los objetivos que me propongo en este proyecto no son solo son los concernientes a su implementación sino también a otros como son el estudio de normativas:

  • Estudio del estándar DCC.

  • Diseño del programa con Visual Basic. La decisión de usar VB es que es un entorno de programación orientado a la programación de interfaces de usuario.

  • Estudio de sistemas de localización de trenes. Para que el software pueda ubicar trenes en la maqueta debe de definirse algún sistema, esto da como resultado el uso de sensores ópticos que realizan la función de balizas.

  • Comunicación con hardware. El software que corre en el PC se comunica con el hardware diseñado a través de un puerto serie, intercambiando información en ambas direcciones.

  • DESARROLLO DEL PROYECTO
  • En primer, lo primero que hago es documentarme sobre el estándar DCC, ya que es la parte que me va ha permitir poder usar este software con decoders comerciales. Una vez dispongo de los conocimientos necesarios paso a hacer las primeras pruebas del software para que envíe datos al modulo de control, este modulo es el que energiza la via con la señal que manda el software.

    Cuando ya consigo controlar los trenes desde el software, se amplia el software para que contenga las funciones mas importantes como son selección de locomotora (decoder), maniobras de las locomotoras (sentido, velocidad, etc.).

    Después, paso a implementar la parte de localización de los trenes en la vía, para ello uso otro proyecto llamado "Gestor de balizas" que entrega a el modulo de control el estado de las balizas, este modulo envía al software que he diseñado el estado de las balizas (o sensores) que indican cuando pasa un tren sobre ellas.

    Llegado a este punto, puedo controlar trenes desde el PC y además saber cual es la posición en la maqueta de cada tren. En este punto se amplia el software con varias funciones como por ejemplo control de desvíos, control automático de trenes, etc.



  • IMÁGENES DEL PROYECTO
  • Panel de control de las locomotoras

    Esta imagen muestra el panel del control con el que se pueden configurar y conducir locomotoras. Dispone de accesos rápidos a todo los controles del interfaz, pudiendo seleccionar la locomotora a controlar, el sentido de conducción, la velocidad, las luces de la locomotora, el freno de emergencia de la loco o el general de la maqueta entre otros. También, esta pantalla nos da información sobre el estado de la locomotora seleccionada como es si esta parada o en marcha, si esta en conducción manual o automática, la velocidad actual, etc.

    softwareControlFerroviaria_001.jpg


    Panel central de la maqueta

    Este es el panel que representa mi maqueta, desde el, visualizo todos los recursos de los que dispone, como son las estaciones con sus andes, semáforos, desvíos, balizas, etc. Esta primera versión de panel, visualiza el estado de las balizas, es decir, al pasar una locomotora por encima de ellas, estas se vuelven de color morado.

    softwareControlFerroviaria_002.jpg


    2º version del panel central de la maqueta

    Pues poquito a poquito en ratos libres voy ampliando la funcionalidad, en esta segunda version han sido varias cosas;

    • He habilitado el control de los semaforos, asi puedo visualizar el estado en el que esta (rojo o verde) y ademas pulsando sobre el semaforo deseado lo conmuto de color.
    • Control de los desvios y visulizacion, al igual que los semaforos, tambien visualizo el estado en el que esta el desvio y ademas pulsando sobre el mismo lo puedo cambiar.

    softwareControlFerroviaria_004.jpg


    Ventana de configuración de las locomotoras

    Desde el menú principal que esta en el panel de control de locomotoras se puede acceder a esta ventana donde se puede configurar determinados parámetros de cada locomotora como son

    • Imagen de la locomotora
    • Nombre de la locomotora
    • El tipo de servicio para el que se configura la locomotora
    • El lugar de la maqueta donde esta situada la locomotora, como nota aclaratoria de este parámetro, es usado para que la inteligencia que gestiona la maqueta sea capaz de administrar los recursos (desvíos, semáforos, cantones, etc.) para que tanto en modo de conducción manual o en automático la locomotora llegue al destino de una ruta.
    • Numero de decorrer asignado a la locomotora. Es el numero que tiene asignado el decodificador que lleva la locomotora en su interior y es único.
    • Toda esta configuración es guarda en un fichero y puede ser usada cada vez que se inicia una nueva sesión de juego.

    softwareControlFerroviaria_006.jpg


Imagen de como se visualiza el interfaz completo en la pantalla

Podeis observa como se ven los dos interfaces de control en la pantalla. Un interfaz sirve para conducir locomotoras y el otro para ir visualizando y controlando el estado de la maqueta.


Videos de ejemplo

Para que veáis como se maneja este software, he subido algunos videos en GIF.

  • Video 1
  • softwareControlFerroviaria_001.gif
  • Video 2
  • softwareControlFerroviaria_002.gif
  • Video 3
  • softwareControlFerroviaria_003.gif

  • CONCLUSIONES
  • Aunque todavía es muy pronto para hablar de conclusiones, ya que esta todavía en una fase inicial de desarrollo puedo llegar a unas conclusiones:

    • El cumplimiento de los estándares o normativas existentes permiten a este software a través de un hardware de diseño especifico, poder manejar diversos decodificadores de distintos fabricantes, esto era al inicio del proyecto uno de mis mas importantes objetivos.
    • Este software esta basado en el diseño modular y en el uso de autómatas de estado, asi con estas técnicas me facilito la depuración del código y la ampliación del código con nuevas funciones.

  • LÍNEAS FUTURAS
  • Puesto que este proyecto es un diseño a medida, es decir, lo hago a mi gusto, podré ir ampliándolo tal como vaya viendo nuevas necesidades, algunas de ellas podían ser las siguientes.

    • Ampliación de código con nuevas funciones, como por ejemplo la gestión de rutas, etc. Este tipo de ampliaciones daría mas juego a la maqueta pudiendo así automatizarla con rutas pre-programadas y a su vez conducir trenes de un modo manual.
    • Sustitución del puerto serie de comunicación usado entre el software y el hardware por un puerto USB, no supone una mejora en las funcionalidades del software pero seria un reto interesante de realizar.
    • Comunicación e interacción del software con el multiMAUS de ROCO, ya que es el que tengo y no estaría mal poder usar los controles, el teclado del ordenador y la botonera de ROCO.