The Train Succession Time Project


This is a project that have carried out at The Hague University For Professional Education at the Micro Electronics and System Design department (Dutch: MESO). MESO is part of the Bachelor of Electronics Engineering course.

The main goal of MESO is to give students the opportunity to do projects for real companies. For me this sounds very logical, but there seem to be universities that to fictional projects.

This project consists of software only. I choose to do this project because this gave me a change to work on a higher level of software programming. (I was more experienced with low level embedded programming)

This project is assigned by Verebus Engineering. Verebus is a company that helps maintaining the dutch railway infrastructure. The main task of Verebus is to provide advise, calculations and designs to ProRail. ProRail is responsible for the maintenance and updating of the dutch railway infrastructure. 


What is this project


Whenever modifications are made to the railway system, it is important to see what the consequences are for the railway capacity. One way of measuring capacity is the use of the train succession time. (dutch: opvolgtijd)

The train succession time is defined as the time that passes on a location between two passing trains on the same track. We do not use the term train succession time if there is more than one track. Because in this case succession time is not a restricting factor.

Train succession time is depending mostly on

To understand more about this software it is good to know the dutch railway system
uses a block security system. This image will clarify that:

TosBlockSigns
If a train passes signal 104, the signal 102 will show yellow and signal 100 will show green. Imagine that there would also be a signal 106, then signal 104 would show yellow upon passing 106 and 102 would show green.

If a signal is green the train may accelerate to the block speed. If a signal is yellow there is lower speed applicable. Basically the speed valid for a yellow signal is such that the train can stop for the next signal if it shows red.

Moving signals from one place to another and changing the lengths of the blocks is a way to improve the succession time. On the right side of this page the most important speed signs are shown. There are a lot of rules that define what a train driver should do when passing them. But I am simplifying things on this page to keep it brief.


Why this project


Exploring the best way to modify tracks is an activity with a highly experimental character. Before this project Verebus outsourced the succession time calculation. This was a very expensive and time consuming activity. Because Verebus had to pay for each variation that they had designed. And then wait for the results.


The main goal of this project is to create an application that allows
Verebus to easily insert a railway section (with all it's elements).
And then calculate the succession time.


In this project the emphasis is laid on presenting the results in a graph.
Some screenshots of the GUI and the results page:


TOS Frontend   Verebus TOS Print Preview


This project is written in C++ and made so that it can easily be extended with new features. The link between the GUI Input window and the calculator uses an XML interface. This also gives the opportunity to create a new drag-and-drop GUI without rewriting the calculator module.

I also used some UML to document the classes. More information about this project is available upon request. Though not released on line due to the competitive nature of this project.


References in dutch:
Block security 
Signals
More about signals on Rail1435 mirror.


GingerTerminal (gambas2)


GingerTerminal is a serial port terminal program. This allows you to use the serial port of your PC to communicate with for example microcontroller systems. GingerTerminal is meant for electronic developers. And is unlike HyperTerminal, free and open source.

GNUGingerTerminal

Now updated for Gambas 2
Linux Packages


Data Parser for University of Leuven (vb)


I also wrote a data parser for the University of Leuven. This program is used to parse data from output that has been generated from database queries.

A part of raw data looks like this:
>pen|XY_0123456.1| BGG0023: Molecular Electrolyt , E8031 [Arcus
Vertebrae 4321]
       
Length = 123
 Score = 55.3 bits (111), Expect = 9e-09
 Identities = 34/100 (69%), Positives = 34/100 (69%)
 Frame = -2

Query: 123 SDFJHGSKJHGFSJHRGWYERGSBVYURGWHJEBVEYYE 55          
STJWHGKJW           WEJHRGFWJEHRGWJRJR
Sbjct: 345 SKJGHWITUYGERHJSLKJFDGYWIURTHGWKJEFHGLS 555

This is raw data is then pasted into the data parser. The parser then generates a CSV file with specific data that is used to visualize the gene data.


GUI Parser  KUL Analyse

Note that the data has been obfuscated



Online Gerber Viewer (PHP)

This is actually a tool to show PCB layers exported by gerbv. The link will take you to my backup server where PHP renders faster.
Online Gerber Viewer 2.0 or you can download the Gerber Viewer source.


Downloads


Looking for other projects?

GingerTerminal
Serial Port Terminal for
Linux


Leuven University
Data Parser for division
of gene technology


Online Gerber Viewer
Web application
for viewing PCB's



Barry's first
computing experience

A page on software history









Some railway elements



Hoofdsein
Main signal


Midget signal

'Midget' signal


Blockspeed

Block speed
indication x10 km/h


Reduce speed

Reduce speed
indication x10 km/h


Increase speed

Increase speed
(ProRail depreciated)