Display orario

Un display orario sincronizzato

L’ idea ci è arrivata quando un nostro amico, in visita, ci ha ripetutamente chiesto quale treno stesse per transitare durante una sessione di marcia. Non era stato l’unico a porre la domanda, anzi, la domanda è ricorrente fra amici e visitatori, partendo spesso i convogli dalle stazioni nascoste.

Il pannello di controllo di Traincontroller è scarsamente visibile se non si è in postazione davanti ai monitor e, inoltre, non è semplice capire quale treno sta per partire o dove sia diretto.

Per permettere all’osservatore di sapere cosa sta per transitare, da dove parte e dove si fermerà, ci serve un display orario simile a quello in uso nelle stazioni ferroviarie.

La cosa è realizzabile scrivendo un apposito software che sia in qualche modo collegato all’orario in esecuzione in Traincontroller e che mostri un elenco di partenze più comprensibile all’osservatore.

Da qui in poi la descrizione è decisamente tecnica e ci scusiamo se non sarà immediatamente comprensibile, restando a disposizione per qualunque chiarimento.

IL SOFTWARE

Con scarsa fantasia esso è stato denominato TPTrainDisplay

Si appoggia su un DB Sqlite che contiene più tabelle:
1) la tabella degli orari
2) la tabella dei tipi di treno (merci, intercity, ecc.)
3) la tabella delle locomotive (E.656, E.464) in esercizio nel plastico
4) la tabella delle partenze e delle destinazioni (Stazione+binario)

Tabelle del DB
Tabelle del DB

All’avvio della programmazione oraria il display rimane in attesa della prima invocazione, cioè del primo convoglio in partenza.

Schermata inziale display orario
Schermata inziale display orario

Non appena il primo convoglio parte il display mostra una lista di treni in partenza originata tramite la tabella.

Display orario inizializzato
Display orario inizializzato

Sono evidenziati i treni partiti e quelli in partenza, mentre un timer indica il tempo per la prossima esecuzione. Da notare che, sebbene in Traincontroller l’orario sia definito in maniera statica e il tempo sia, per nostra scelta più veloce di 4 volte, TPTrainDisplay converte questi valori in tempi reali. Per esigenze pratiche un minuto corrisponde a 15 secondi, questo ci permette di avere frazioni minime di tempo pari a 1/4 di minuto, più facili da gestire in quanto in Traincontroller non è possibile gestire i secondi. Il display ci mostra, come detto, il tempo reale di esecuzione. Se abbiamo inserito un testo per gli annunci TPTrainDisplay li eseguirà nei tempi indicati in tabella (vedi sotto)

Se la programmazione oraria viene interrotta il display ci indicherà che il prossimo convoglio è in ritardo.

Evidenziazione del ritardo
Evidenziazione del ritardo

Se un itinerario non viene automaticamente invocato o se eseguito manualmente al di fuori dell’orario di Traincontroller, il display lo indicherà come soppresso.

Cancellazione dell'itinerario
Cancellazione dell’itinerario

Quando il treno è giunto a destinazione TrainController inviare il comando di itinerario concluso e nel display comparirà la scritta “ARRIVATO”.

indicazione dell'arrivo effettivo del treno
indicazione dell’arrivo effettivo del treno

Vediamo ora come viene popolata la tabella:
Cliccando su una delle righe il software mette a disposizione due opzioni: la modifica o l’inserimento di una nuova voce. I campi da popolare sono l’orario definito in TrainController, il progressivo di esecuzione, il tipo di treno, la locomotiva titolare, i binari di partenza e di arrivo, il numero del treno e l’amministrazione. A disposizione due altri campi per inserire il testo dell’annuncio di partenza/arrivo e del ritardo. Se popolati il programma genererà un file audio che verrà eseguito dagli altoparlanti di sistema quando verrà invocata l’esecuzione; il file utilizza tutti i dati inseriti precedentemente.

Popolamento del database
Popolamento del database

Ma vediamo ora come Traincontroller interagisce con il nostro software…

Premesso che Traincontroller offre la possibilità di invocare qualsiasi programma esterno, sia questo un .exe o un file batch, dobbiamo trovare un punto dal quale sia possibile inviare al nostro programma l’informazione che attivi l’orario corrispondente a quello inserito nella programmazione

Il punto più ovvio per entrambe le operazioni è la tabella degli orari di Traincontroller.

Tabella orario TrainController
Tabella orario TrainController

In questa tabella abbiamo inserito i nostri itinerari per ognuno dei quali abbiamo definito un orario di partenza.
Per poter inviare l’informazione a TPTrainDisplay , dobbiamo far ricorso ad una macro:

Tabella Macro TrainController
Tabella Macro TrainController

Inseriamo una nuova macro, nominandola esattamente come l’itinerario per il quale vogliamo creare l’istruzione che attiverà la riga corrispondente nel nostro display con la seguente sintassi:

[appdir]\ start.bat [sort]
Es. [appdir]\ start.bat 1

dove [appdir] è la cartella di installazione del software e:
sort è il progressivo da invocare per evidenziare la riga della partenza.

Creata la macro la sostituiamo nell’orario di Traincontroller all’itinerario e così via per tutte le voci.

Sostituzione Itinerario con Macro
Sostituzione Itinerario con Macro

Da qui in avanti ogni modifica all’orario di Traincontroller seguirà questa regola.

Ogni itinerario contiene anche l’istruzione, da eseguire al termine, che segnalerà che il treno è arrivato a destinazione. L’istruzione ha la seguente sintassi:

[appdir]\ end.bat [sort]
Es. [appdir]\ end.bat 1

Per favorire la visibilità del display abbiamo installato un nuovo monitor ad altezza osservatore nel quale si trovano la griglia delle Cam di controllo, la finestra dell’itinerario in esecuzione e il nostro display.

Display orario
Display orario

Qui sotto il video dimostrativo

2 commenti su “Un display orario sincronizzato”

  1. Buongiorno Giulio,
    sono Luigi Cesana fermodellista e plasticista da sempre.
    Lo scorso anno a causa della ristrutturazione di casa ho smantellato il mio ultimo plastico “Canterana & Loghetto” che era gestito in digitale con TrainController 7 Gold e nel quale facevo uso degli annunci di stazione gestiti dallo stesso TC.
    Ho letto con vivo interesse quanto hai fatto per il tuo display orario e mi piacerebbe farmelo per conto mio utilizzando come database SQL e come linguaggio C#.
    E’ per questo che ti chiedo se ti fosse possibile darmi qualche info supplementare soprattutto per quanto riguarda il contenuto delle tabelle del DB e se credi di quant’altro possa essermi utile.
    La mia richiesta è volta solo allo scopo di cimentarmi con questa nuova sfida e senza alcun risvolto commerciale, nel pieno rispetto della riservatezza dei contenuti.
    Ti ringrazio fin d’ora per quanto vorrai condividere con me.
    Cordialmente
    Luigi

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *