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

martes, 8 de mayo de 2012

Software de control (II)


Para aquellos lectores que se hayan quedado con la curiosidad de saber para qué sirven el resto de las columnas de la ventana de definición de rutas presentada en el artículo anterior, voy a explicar aquí su funcionamiento.

En la figura del encabezado podemos ver la "estación de montaña" de mi maqueta, tal como la vemos en la pantalla del ordenador. He incluido una rotulación en rojo que muestra los nombres de unos cuantos elementos, tal como están definidos en el sistema. Los nombres que empiezan por F se refieren a semáforos, los que empiezan por D a desvíos, los que empiezan por B a balizas y los que empiezan por T a tramos aislados.  Respecto de estos últimos, aclaro que los cantones se denominan T1, T2... T8 y se dibujan en colores diferentes. El color rojo corresponde al cantón 2, el naranja al cantón 3, el amarillo al 4 etc (a los conocedores de las claves de colores para el marcado de resistencias les sonará esa nomenclatura) Dentro de un cantón puede haber un número indefinido de sectores o tramos aislados, que son los segmentos de vía que pueden ser conectados o desconectados mediante un relé. En la imagen vemos T3P1 y T3P2  Ambos empiezan por T3 porque pertenecen al cantón T3 y el resto P1 y P2 indica que son respectivamente el sector 1 y el sector 2 del cantón 3. Estos sectores los vemos en color gris, como indicación de que están inactivos, es decir, que su relé lo mantiene desconectado de la alimentación de su cantón.

La nomenclatura como se ve es bastante sistemática, precisamente para facilitar la definición de las rutas, pero eso no es una exigencia del programa. Podemos denominar cada elemento como queramos. El que yo haya rotulado la figura con esos nombre es para facilitar la explicación pero la imagen de pantalla no tiene esas indicaciones porque si apareciesen los nombres de todos los elementos en la pantalla tendríamos una imagen muy abigarrada, salvo que los rótulos fuesen muy pequeños, pero entonces resultarían invisibles. En lugar de eso, lo que se tiene es que simplemente pasando el cursor de ratón sobre un elemento, aparece  una ventanita con su nombre

Pues con esta explicación previa puedo pasar a demostrar como funciona la columna "Condición" de la ventana de rutas. (Posiblemente se necesitará ampliar esa imagen, haciendo click en ella)

Lo que he tratado de hacer es demostrar como se puede hacer una gestión automática de la estación, concretamente en este caso de las dos vías T3P1 y T3P2. Los trenes circulan por la derecha, de modo que en las vías de color naranja, van de izquierda a derecha, así que la señal F13 es la señal de entrada en la estación, y F04 y F06 son las señales de salida de las vías  T3P1 y T3P2 respectivamente.

La baliza B35 no aparece en la imagen porque está a la salida de la estación anterior. La idea es que cuando el tren sale de la estación anterior, prepare las señales y los desvíos para cuando llegue a esta estación. Por eso todas las acciones que aquí vemos se ordenan al activarse la baliza B35

Lo primero que se hace es poner la señal de entrada en rojo. Si al final del proceso el sistema puede dar paso al tren, esta señal se pondrá en verde, si no es así, porque ambas vías T3P1 y T3P2 están ocupadas, la señal quedará en rojo. impidiendo el acceso del tren a la estación. En las siguientes lineas aparece la expresión "T3P2  Libre" en la columna "Condición" . Esto quiere decir que el  programa comprueba si esa expresión se cumple, y solo si es así se ejecuta la orden expresada en la columna "Acción"

Así, en este caso, si esta vía está libre se ejecutan las cinco instrucciones indicadas, es decir en este caso, poner el desvío D41 en curva, el D15 recto y el D14 en curva. Es decir hemos hecho un itinerario para que el tren atraviese la estación por la vía T3P2 Además ponemos la señal de entrada F13 en verde y activamos el tramo T3P2 para que la vía tenga corriente cuando llegue el tren.

Pero eso no es todo: a continuación se hace un intento de hacer un itinerario por la vía T3P1 que sería más favorable. Para ello se incluyen cuatro instrucciones más condicionadas a que el tramo T3P1 esté libre, así que ponemos en la condición "T3P1  libre"

Si esta condición se cumple, de ponen rectos los desvíos D41 y D14, y lo mismo que antes, se pone verde la señal de entrada y se activa el tramo T3P1. Como esta secuencia se ejecuta después, el itinerario queda efectuado por la vía T3P1 aunque ambas estuviesen libres.

O sea, que eso tan discutido en los foros acerca de los complicados circuitos a base de relés para automatizar una estación, se puede hacer también perfectamente por software. Evidentemente con más lineas, se pueden automatizar estaciones de más vías.

Pero todavía podemos hacer mucho más. La pantalla de rutas tiene dos columnas más que son muy interesantes: Se denominan "%Velocidad" y "Retardo" veamos como funcionan:

La siguiente imagen recoge la continuación de la anterior dentro de la misma ruta, ya que ahora vemos las líneas 11 a 18


Aquí definimos qué pasa cuando el tren llega a la estación. Si entra por la vía T3P1 activará la baliza B31, así que se ejecutarán las instrucciones 11 12 y 13. En la primera ponemos la señal de entrada F13 en rojo y también la señal de salida F04

La línea 13 es muy interesante porque hace dos cosas: Primero pone el sector T3P1 en situación de ocupado y a continuación ejecuta la instrucción "T3 0" Esto ordena que el cantón 3 haga una parada progresiva hasta parar el tren.

Obsérvese que la orden es al cantón "T3" completo. Como saben mis lectores mi sistema se basa en que en cada cantón sólo puede haber una locomotora activa  así que esta orden afecta a la locomotora que acaba de accionar la baliza B32.

O sea que la columna % Velocidad ordena simplemente que el cantón indicado cambie la "Velocidad Objetivo" a un porcentaje de la velocidad máxima indicado por la cifra que aparece en la columna. Un cero, como en este caso, hace que la velocidad objetivo sea 0 así que la locomotora decelerará hasta pararse. Si ponemos por ejemplo T3 50 ordenaremos que la velocidad objetivo pase a ser el 50% de la velocidad máxima de la locomotora.

Aunque todavía no he llegado a ello, está claro que el control de tracción funciona haciendo que la locomotora tienda siempre a la velocidad que se le marca como velocidad objetivo desde su velocidad actual en cada instante. El que alcance esa velocidad objetivo más o menos rápidamente dependerá de como se programe la simulación de inercia.

Adviértase que con este sistema, el control de que una locomotora pase más o menos rápida por una zona, no está asociada a un bloque o cantón, sino al hecho de activar una baliza. Podríamos cambiar la velocidad de la locomotora por cada baliza que pase. Recuérdese que esta orden está en la definición de la ruta de manera que otra locomotora que pase por la misma baliza pero siguiendo otra ruta no tiene porqué obedecer al mismo ajuste de velocidad.

Naturalmente con velocidad objetivo 0 la locomotora acaba por detenerse, pero esta parada es siempre una parada suave de acuerdo con la programación del control de tracción. Realmente existen dos formas más de parar una locomotora: Una es la instrucción de tramo inactivo Por ejemplo "T3P1 Inactivo" lo que hace es ordenar que el relé del tramo T3P1 desconecte la corriente de ese tramo. Por supuesto, si hay una locomotora en ese tramo se parará inmediatamente. Como esta parada es brusca normalmente solo la emplearemos en estaciones ocultas o para dejar "aparcada" la locomotora en ese tramo.

La otra forma de detener el tren es la instrucción Stop. Por ejemplo la instrucción "T3 Stop" lleva el regulador del cantón T3 inmediatamente a cero.

Veamos ahora algo particularmente interesante, recogido en las líneas 14 a 17 de la última pantalla de ruta, y que corresponden a la baliza B32, es decir, al caso de que el tren haya entrado por la vía T3P2.

Las tres primeras son análogas a las tres primeras de la baliza 31, es decir, se pone a rojo la señal de entrada F13, se pone a rojo la señal de salida F06, el sector se marca como ocupado, y se fija la velocidad objetivo en cero, con lo que el tren se parará suavemente en la estación.

Pero en la línea 17, vemos como asociada a la misma baliza B32 se ordena poner la señal de salida en verde y arrancar suavemente hasta el 80% de velocidad, lo cual sería contradictorio con lo indicado en la linea anterior. La clave está en la cifra 30 incluida en la columna "Retard". Lo que esto hace es que esa instrucción se ejecute 30 segundos después de la activación de la baliza. Es decir, en definitiva, al pasar por la baliza B32 el tren hace una parada suave en la vía T3P2, espera 30 segundos, y realiza un arranque suave hasta alcanzar la velocidad 80% de su máxima.

Para dejar el tema terminado:

La columna "R" indica que cuando se cambie la velocidad a la velocidad objetivo ordenada, se haga hacia delante o hacia atrás.

Las dos columnas "Transición" ordenan que cuando se active esa baliza se haga una transición de cantones desde el indicado en la primera de estas columnas al indicado en la segunda. Es lo que hará funcionar el "conmutador de cantones" descrito en "CabControl" Como complemento a esas dos columnas, la marcada como "X" indica si esa transición hay un cambio de polaridad en la vía.

Si algún lector ha conseguido llegar hasta aquí, aparte de manifestarle mi agradecimiento, seguramente tendrá conocimientos más que medianos de programación, así que comprenderá que programar todo esto es un esfuerzo bastante importante, ya que no solo estamos hablando de una ventana donde se pueda definir toda esta parametrización, sino que cada dato que introducimos es validado, y almacenado en la base de datos con los correspondientes enlaces a todos los datos relacionados, más toda la programación correspondiente para que todo esto actúe, produciendo las correspondientes señales de salida y el reflejo visual en la pantalla del ordenador.  Está claro que no me aburro.

A propósito del tema, parece interesante hacer una reflexión, Como se puede apreciar por todo lo visto, el programa está hecho como para venderlo. Quiero decir que todos los datos se introducen en pantallas y ventanas con los correspondientes rótulos y las oportunas validaciones, aparte del hecho de que se pueda partir de cero y definir cualquier trazado de vías. Aparentemente esto es un trabajo inútil puesto que probablemente parece que es mucho más fácil hacer un programa que sólo tenga la parte operativa, de modo que los datos están, o bien definidos en la propia programación, o en algunos archivos externos que se rellenan manualmente con datos fuera del control del programa.

Seguramente el actuar así procede de una deformación profesional. Me he pasado mi vida laboral diseñando programas para que los manejen otros, así que se me va la mano a esa forma de programación. Por otra parte las otras alternativas solo aparentemente son más rápidas de desarrollar, porque aunque al principio se obtienen resultados más rápidamente, la desorganización lógica que supone esa forma de actuar hace que cualquier modificación sea cada vez más compleja.  Evidentemente, aunque mi objetivo no sea la venta, este programa podrá ser utilizado en el futuro por otras personas que se atrevan a seguir esta línea.

4 comentarios:

  1. Sr. Ignacio:
    Me quedo simplemente patidifuso con cada uno de sus artículos. Vd. alude a deformación profesional en el tema de programación y a mi me sale siempre la vena profesional cuando veo una maqueta, y es que llevo casi 38 años dedicándome al control de tráfico ferroviario. Es inevitable. Por eso no solo me fijo en los trenes o en realismo de un paisaje o de algún quehacer ferroviario, mi vista se va siempre al realismo en el control. Estos dos últimos artículos me han parecido fascinantes en ese aspecto. Es cierto que en la realidad se controlan algunos otros aspectos, pero ciertamente Vd. hace que se asemeje notablemente y es un auténtico placer el ver estas cosas. Si me permite una anotación,simplemente como curiosidad, los desvios en cuanto a su posición, nosotros los denominamos de dos formas, a normal (recto) y a imvertido (curvo) o simplemente a (+) o a (-).
    Espero ansiosamente su siguiente artículo.

    Luis Ruiz Salas

    ResponderEliminar
    Respuestas
    1. Amigo Luis:

      La verdad es que recibir un comentario asi, procedente de un profesional del control de tráfico ferroviario, no puede sino llenarme de satisfacción y agradecimiento.

      Espero seguir contando con tu "tutela" profesional en el futuro. De momento, acojo tu sugerencia, y voy a cambiar ahora mismo los rótulos que indican la posición de los desvíos, para utilizar las palabras normal e invertido

      Gracias y un saludo

      Eliminar
  2. No era mi intención corregir ningún término utilizado y máxime tratándose de palabras técnicas. Era solo por curiosidad, si la hubiera, de los lectores. Para nosotros la posición "normal" es la aquí llamada "recto", y se llama así porque es la posición que normalmente se mantiene sobre todo en vías generales. Se me ocurre además el ejemplo de situar un desvío en una curva, cual de las dos posiciones sería la recta??? En el argot ferroviario se utilizaría también "vía directa" o "vía desviada" que en el caso de las curvas, vía directa sería la de mayor radio.

    Bueno, por aquí me hallo Sr. Ignacio para lo que necesite.

    Un saludo.

    Luis

    ResponderEliminar
  3. modelismoferroviario8 de junio de 2012, 9:21

    Hola Ignacio:

    Yo que he visto el programa doy fe de que todo funciona tal y como lo comentas. El desarrollo es simplemente impresionante.

    Estoy deseando ordenarme para poder charlar contigo.

    Respecto a la nomenclatura de los desvíos, creo que para los profanos en el control del tráfico ferroviario resulta mucho más claro de entender (y por lo tanto mucho más rápido y ágil el tomar decisiones al controlar un tren) el usar las palabras recto y curvo.

    Un saludo

    Rafael

    ResponderEliminar

Gracias por expresar tus opiniones.

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