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
- speed limits
- light signals
- train type (speed and acceleration)
- block (length and speed)
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:

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:
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.
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.
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.