746 lines
33 KiB
TeX
746 lines
33 KiB
TeX
|
\batchmode
|
||
|
\makeatletter
|
||
|
\def\input@path{{/home/moritz/Home/Projekte/Minetest/minetest/mods/advtrains/assets/}}
|
||
|
\makeatother
|
||
|
\documentclass[english]{paper}
|
||
|
\usepackage[T1]{fontenc}
|
||
|
\usepackage[latin9]{inputenc}
|
||
|
\usepackage{geometry}
|
||
|
\geometry{verbose,tmargin=1cm,bmargin=1cm,lmargin=1cm,rmargin=1cm}
|
||
|
\setlength{\parindent}{0bp}
|
||
|
\usepackage{graphicx}
|
||
|
\usepackage{babel}
|
||
|
\begin{document}
|
||
|
|
||
|
\title{Minetest Mod - Advanced Trains {[}advtrains{]}}
|
||
|
|
||
|
\title{Interlocking System Guide}
|
||
|
\maketitle
|
||
|
|
||
|
\section{Introduction}
|
||
|
|
||
|
In real-world railways, a so-called interlocking system is a set of
|
||
|
railway signals and trackside equipment. Its purpose is to prevent
|
||
|
conflicting train movements which otherwise could result in derailing
|
||
|
or colliding trains. If you want more information, just search for
|
||
|
``railway interlocking'' on the internet.
|
||
|
|
||
|
Real-world interlocking systems perform this task by setting routes.
|
||
|
A route is a path along a track that a train can safely pass. To set
|
||
|
a route for a train, the signalman (the operator of a signal box)
|
||
|
has to set switches (turnouts) to the correct position and lock them
|
||
|
in order to make a signal for a train show ``Proceed''. In newer
|
||
|
systems, this is done automatically by the interlocking system. A
|
||
|
route can not be set if switches are locked to a wrong position by
|
||
|
another route or if any portion of the route is occupied by a train.
|
||
|
|
||
|
The interlocking system in this Minetest mod tries to follow real-world
|
||
|
interlocking systems as far as applicable. It divides tracks into
|
||
|
track sections and implements a route setting mechanism following
|
||
|
the same principle.
|
||
|
|
||
|
However, for the sake of simplicity of implementation and usage, not
|
||
|
all concepts of real-world interlocking have been taken over. Especially,
|
||
|
there is no mechanism for overlap.
|
||
|
|
||
|
If you are looking for a place to learn how real-world interlocking
|
||
|
systems work, have a look at ``SimSig''. By looking at their simulations,
|
||
|
you can obtain experience on how to set up your own interlocking systems
|
||
|
in AdvTrains. The SimSig glossary is a good place to look up unknown
|
||
|
terms in this document.
|
||
|
|
||
|
\section{Setting up track sections}
|
||
|
|
||
|
In the real world, a line of track is divided into so-called track
|
||
|
sections, or track circuits. Those systems often can not tell where
|
||
|
exactly a train is, but only which track sections it occupies. A route
|
||
|
can never be set through an occupied track section.
|
||
|
|
||
|
A track section often covers:
|
||
|
\begin{itemize}
|
||
|
\item A section on a main running line, between two signals
|
||
|
\item A single turnout
|
||
|
\item A rail crossing, or a set of turnouts acting as a double/single slip
|
||
|
switch
|
||
|
\item A siding
|
||
|
\end{itemize}
|
||
|
You will find some examples on how to interlock certain patterns later.
|
||
|
|
||
|
\subsection{Track Circuit Breaks}
|
||
|
|
||
|
In this mod, you will not directly configure the locations of track
|
||
|
sections. Instead, you designate the borders of each track section
|
||
|
using a special node, the Track Circuit Break, abbreviated TCB.
|
||
|
|
||
|
For example, if you want to create a track section for a piece of
|
||
|
a main running line, you set up two TCBs at the ends of this track
|
||
|
circuit.
|
||
|
|
||
|
Setting up a TCB works as follows:
|
||
|
\begin{enumerate}
|
||
|
\item Place a TCB node somewhere near the place where the circuit break
|
||
|
is going to be located.
|
||
|
\item Right-click the TCB node
|
||
|
\item Punch the rail which should act as TCB
|
||
|
\end{enumerate}
|
||
|
The result should look like this:
|
||
|
|
||
|
\includegraphics[width=10cm]{0_home_moritz_Home_Projekte_Minetest_minetest_m___s_assets_lyx_img_screenshot_20180830_142551.png}
|
||
|
|
||
|
Now you have assigned the TCB node to a rail. Right-click the TCB
|
||
|
node once again. This will bring up a form which looks as follows:
|
||
|
|
||
|
\includegraphics[width=10cm]{1_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-26-35.png}
|
||
|
|
||
|
You see that the form is divided in side A and side B. To designate
|
||
|
where each side is, a marker is displayed on the rail. You can always
|
||
|
make this marker show up by punching the TCB node, and remove it by
|
||
|
punching the marker. Both sides are shown as ``End of interlocking''.
|
||
|
This means that there is no track section set up at this place.
|
||
|
|
||
|
You should repeat this procedure once again a few meters away from
|
||
|
the first TCB to create a second TCB on the same track.
|
||
|
|
||
|
\includegraphics[width=10cm]{2_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-32-48.png}
|
||
|
|
||
|
Once you have both bordering TCBs set up, you can now create the actual
|
||
|
track section. To do this:
|
||
|
\begin{enumerate}
|
||
|
\item Right-click one of the TCBs
|
||
|
\item Locate the correct side (A or B) to create the track section
|
||
|
\item Click ``Create interlocked Track Section'' in the formspec on the
|
||
|
chosen side.
|
||
|
\end{enumerate}
|
||
|
Now, the text on the formspec has changed. It shows something like
|
||
|
this:
|
||
|
|
||
|
\includegraphics[width=5cm]{3_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-27-25.png}
|
||
|
|
||
|
Clicking ``Show Track Section'' brings up another formspec:
|
||
|
|
||
|
\includegraphics[width=5cm]{4_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-28-32.png}
|
||
|
|
||
|
On the top, you see a list of all TCBs that border this track section.
|
||
|
In your case, there should be two TCBs listed. If there's only one,
|
||
|
head over to \ref{subsec:Long-track-sections,}. You should now select
|
||
|
a name for the track section, to identify it later.
|
||
|
|
||
|
The same procedure is applicable when you create a turnout track section,
|
||
|
except that you have to set up three or more TCBs.
|
||
|
|
||
|
The AdvTrains interlocking system allows you to add more TCBs after
|
||
|
you have created a track section. This works without problems in most
|
||
|
cases. For example, you can easily insert a turnout into an already
|
||
|
set-up track section and create another TCB behind it, and AdvTrains
|
||
|
will automatically detect the existing track section. Problems arise
|
||
|
only if you try to insert a TCB in-between a section, in which case
|
||
|
both sides of the TCB will end up assigned to the same section. The
|
||
|
code currently does not handle this case properly, so try to avoid
|
||
|
this situation by all means. As a last resort, you can always dissolve
|
||
|
a faulty track section, as described in the next chapter.
|
||
|
|
||
|
\subsection{Long track sections, crossings and other edge cases\label{subsec:Long-track-sections,}}
|
||
|
|
||
|
\subsubsection{Very long track sections}
|
||
|
|
||
|
If you try to set up a track section that is longer than 1000 nodes,
|
||
|
advtrains won't recognize the TCB at the other end because of a safety
|
||
|
limit in the traverser function, which is supposed to prevent deadlocks.
|
||
|
This case has happened when the Track Section overview screen only
|
||
|
shows one TCB in the list. The procedure for this is as follows:
|
||
|
\begin{enumerate}
|
||
|
\item Go to the second TCB (the one that wasn't recognized). It should show
|
||
|
``End of Interlocking'' on the relevant side.
|
||
|
\item Click ``Create interlocked track section''. The section created
|
||
|
will be different from the one that is already present.
|
||
|
\item In the track section overview, click ``Join into other section''
|
||
|
\item Go back to the first TCB, bring up the Track Section overview screen
|
||
|
of the first track section and click ``Join with ???''
|
||
|
\end{enumerate}
|
||
|
The other, missing TCB should now appear in the list. If you accidentally
|
||
|
started such a joining procedure, click the ``X'' button on the
|
||
|
right.
|
||
|
|
||
|
\subsubsection{Rail crosses}
|
||
|
|
||
|
Since rail crosses are created by laying tracks across each other
|
||
|
without logical connection, there's no way for advtrains to know whether
|
||
|
rails cross each other.
|
||
|
|
||
|
Rail crossings in interlocking systems are always one single track
|
||
|
section, which in most cases has 4 TCBs adjacent.
|
||
|
|
||
|
\includegraphics[width=5cm]{5_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-51-25.png}
|
||
|
|
||
|
The procedure is quite similar to the one for long sections: First,
|
||
|
create two track sections for the branches, and then use the ``Join''
|
||
|
function to merge both sections into one.
|
||
|
|
||
|
\subsubsection{Deleting and re-adding single TCBs to a section}
|
||
|
|
||
|
In some occasions, for example when you remove a siding or a crossover,
|
||
|
it can be necessary to unassign a TCB from a track section. There
|
||
|
are multiple ways to do this:
|
||
|
\begin{itemize}
|
||
|
\item In the TCB form, click the ``Remove from section'' button
|
||
|
\item In the track section form, first select the TCB in the list and then
|
||
|
click ``Unlink selected TCB''
|
||
|
\end{itemize}
|
||
|
The result is that the TCB shows ``End of Interlocking'' and the
|
||
|
section does not list the TCB as an endpoint anymore.
|
||
|
|
||
|
The other case is adding a siding or a crossover, in which case one
|
||
|
or more TCBs still show ``End of Interlocking'' although they should
|
||
|
be part of a section:
|
||
|
\begin{itemize}
|
||
|
\item Go to another TCB that is registered in the track section and click
|
||
|
``Update near TCBs''
|
||
|
\item If that did not work, follow the procedure of creating a long track
|
||
|
section
|
||
|
\end{itemize}
|
||
|
|
||
|
\subsubsection{Dissolving sections}
|
||
|
|
||
|
If you made a mistake setting up something and you don't see any other
|
||
|
way to fix a misconfigured track section, you can always delete it
|
||
|
using the ``Dissolve section'' button. This operation removes the
|
||
|
track section and sets all TCBs that previously belonged to the section
|
||
|
as ``End of Interlocking''. This will always work and lets you start
|
||
|
over new with setting up track sections.
|
||
|
|
||
|
\subsection{Interlocking patterns}
|
||
|
|
||
|
Have a look at the following images. They show you how you can set
|
||
|
up sections so that reasonable train moves are possible.
|
||
|
|
||
|
You should settle on a naming scheme for your sections. This way,
|
||
|
you can determine the source of an issue faster
|
||
|
|
||
|
\section{Signals and routes}
|
||
|
|
||
|
Signals are appliances that can give instructions to trains. That
|
||
|
can be the permission to proceed, a speed restriction, or other information.
|
||
|
|
||
|
There are 2 types of signals:
|
||
|
\begin{itemize}
|
||
|
\item Static signals always display the same information to the train. This
|
||
|
can be a speed restriction (or the end of one), a disallowal to proceed
|
||
|
as shunt move or similar things. In most cases, these are signs.
|
||
|
\item Dynamic signals are what most people would call a ``signal''. Its
|
||
|
function is to inform trains about whether and at which speed they
|
||
|
can proceed into the next section safely.
|
||
|
\end{itemize}
|
||
|
|
||
|
\subsection{Signal Influence Point}
|
||
|
|
||
|
Every signal is associated to a track on which the instruction should
|
||
|
be followed. Signals are usually placed right next to the track on
|
||
|
the right side. Human observers do know then that the signal belongs
|
||
|
to the track left of it, however, train safety systems (like the one
|
||
|
in advtrains) can not.
|
||
|
|
||
|
This is the reason why a so-called ``influence point'' needs to
|
||
|
be assigned to any signal that should actually give instructions to
|
||
|
trains, should the driver (if even there is one) fail to recognize
|
||
|
the instructions.
|
||
|
|
||
|
Depending on the signal and the mod that adds the signal, there are
|
||
|
different ways to configure this. Signals integrated into advtrains
|
||
|
behave as follows:
|
||
|
\begin{itemize}
|
||
|
\item Static signals and all red-green light signals from core advtrains
|
||
|
that are not assigned to a TCB can be configured by holding the ``Use''
|
||
|
key and then right-clicking the signal
|
||
|
\item All signals that are assigned to a TCB can be configured by first
|
||
|
right-clicking them, then selecting ``Influence Point'' in the signalling
|
||
|
formspec.
|
||
|
\end{itemize}
|
||
|
The small formspec that opens allows you to set and later view or
|
||
|
clear the Influence Point. To set the influence point, click the ``Set''
|
||
|
button, face towards the signal and punch a rail about 2m in front
|
||
|
of the signal. A small marker will be shown, indicating success. To
|
||
|
cancel setting an influence point, punch anything other. (note that
|
||
|
then the influence point remains unset, regardless of its previous
|
||
|
state)
|
||
|
|
||
|
The advtrains-internal train safety system ensures that the train
|
||
|
always obeys any restrictions imposed by signals, if (and only if)
|
||
|
the influence point is set properly.
|
||
|
|
||
|
\subsection{Signal Aspects}
|
||
|
|
||
|
While static signals are mainly used for speed restrictions, the interesting
|
||
|
ones are variable signals. Of course, you can always control any variable
|
||
|
signal by traditional means (mesecons, digiline, right-click) if the
|
||
|
signal allows it, but that misses the point of this interlocking system.
|
||
|
|
||
|
A signal aspect is a piece of information that a signal shows to the
|
||
|
train driver. It contains information about whether and at what speed
|
||
|
the driver may proceed at the signal.
|
||
|
|
||
|
Every signal, both static and dynamic ones, imposes a certain aspect
|
||
|
to trains passing the signal. For static signals, this is always the
|
||
|
same aspect, such as ``Proceed at speed of 8'' or ``Shunt moves
|
||
|
may not pass''. Dynamic signals, however, can display multiple different
|
||
|
aspects. The default for them is always as restrictive as possible,
|
||
|
mostly ``Halt!''.
|
||
|
|
||
|
You should know that both static and dynamic signals use exactly the
|
||
|
same properties for signal aspects. There is no difference in the
|
||
|
meaning of the aspect definitions.
|
||
|
|
||
|
In the following sections, we will talk about main signals. By this,
|
||
|
we mean a variable signal that can display both a ``Danger'' aspect
|
||
|
(trains are not allowed to proceed) and at least one ``Proceed''
|
||
|
aspect (train may proceed as train/shunt move, with optional speed
|
||
|
restriction), which act as an ``entry signal'' for one or multiple
|
||
|
routes.
|
||
|
|
||
|
\subsection{Train moves and Shunt Moves}
|
||
|
\begin{itemize}
|
||
|
\item A ``Train move'' is a train that is running, going to run on or
|
||
|
coming from a main line between stations, passing through or stopping
|
||
|
at a station. Train moves can expect that there are no obstacles on
|
||
|
the route and they can proceed at the maximum permitted speed of the
|
||
|
line. This is the regular operation mode for trains. Shunt signals
|
||
|
have no meaning for train moves.
|
||
|
\item A ``Shunt move'' is a train that moves within a station and/or is
|
||
|
coupling or decoupling wagons or engines. A shunt move may never leave
|
||
|
a station except into a siding. Also, shunt moves may drive at a maximum
|
||
|
speed of 6 speed units, because it is usually not ensured that the
|
||
|
path is free of obstacles. (however, advtrains ensures that every
|
||
|
route is free of railway vehicles, even shunt routes)
|
||
|
\end{itemize}
|
||
|
There are also 2 general types of signals: Main signals and Shunt
|
||
|
signals. While main signals have a meaning for all types of trains,
|
||
|
Shunt signals only have to be followed by shunt moves. Usually, Shunt
|
||
|
signals that are on a train move route are set to a Proceed aspect
|
||
|
as well.
|
||
|
|
||
|
When a train reverses, its mode automatically changes to ``shunt
|
||
|
move'' until it passes a main signal that shows ``Proceed as train
|
||
|
move'', which is usually designated by a green light. From this point
|
||
|
on, it can accelerate to maximum permitted speed.
|
||
|
|
||
|
Some main signals, like the ones from the Ks signals mod included
|
||
|
by default, can also display ``Proceed as shunt move'', which is
|
||
|
designated by 2 white lights along with the red light. Once a train
|
||
|
passes this signal, it becomes a shunt move.
|
||
|
|
||
|
\subsection{The concept of routes}
|
||
|
|
||
|
A so-called route is a locked path between two main signals, which
|
||
|
locks all turnouts in the correct position. Its purpose is to offer
|
||
|
a train a path on which it can safely proceed without interfering
|
||
|
with any other train. A route always incorporates and locks one to
|
||
|
multiple track sections, starting with the one that lies directly
|
||
|
behind the ``entry'' signal.
|
||
|
|
||
|
Example: Imagine a station with 2 platforms on a single track running
|
||
|
line. We are looking at signal A. You probably want trains coming
|
||
|
from the right to go into platform 1 or into platform 2, so you need
|
||
|
to program 2 routes.
|
||
|
|
||
|
\includegraphics[width=7cm]{6_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_route_ex1.png}
|
||
|
|
||
|
This leads us to the most important aspect of route programming: Routes
|
||
|
always start at a signal (A) and end at a signal facing in the \textbf{same
|
||
|
direction} (D and E), not at an opposite-facing signal (B and C).
|
||
|
There are only few exceptions, we'll cover this later.
|
||
|
|
||
|
When you set a route to make a train proceed on it, the interlocking
|
||
|
system ensures that:
|
||
|
\begin{itemize}
|
||
|
\item There are no rail vehicles on the route
|
||
|
\item All turnouts are set to the correct position and it is impossible
|
||
|
to move them
|
||
|
\item No other routes can be set that would in any way conflict with this
|
||
|
route
|
||
|
\end{itemize}
|
||
|
For this to work, you need to specify all track sections the train
|
||
|
will pass along, as well as the positions of all turnouts that need
|
||
|
to be locked. Those are not only the turnouts that lay directly on
|
||
|
the train's route, but also some turnouts on adjacent tracks, the
|
||
|
so-called flank protection.
|
||
|
|
||
|
The purpose of flank protection is to prevent runaway trains and/or
|
||
|
wagons to pass into a route. This is achieved by setting nearby turnouts
|
||
|
to a position that points ``away'' from the route. Example:
|
||
|
|
||
|
\includegraphics[width=7cm]{7_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_route_ex2.png}
|
||
|
|
||
|
The upper turnout, of course, needs to be locked in straight (normal)
|
||
|
position, while the lower one is not relevant for the route itself.
|
||
|
But what if the lower turnout was set to the diverging (reverse) position
|
||
|
and the driver of another train approaching signal B fails to see
|
||
|
the red light? This train would crash into the first one. To minimise
|
||
|
danger, that other train would need to be routed towards signal D.
|
||
|
|
||
|
There are, of course, situations, where both positions of a turnout
|
||
|
would conflict with a route equally. In those situations, there's
|
||
|
nothing you can do and no flank lock needs to be set.
|
||
|
|
||
|
\subsection{Assigning main signals to TCBs}
|
||
|
|
||
|
Main signals in the advtrains interlocking system are positioned -
|
||
|
like in real life - at the border of track sections, because routes
|
||
|
also start and end there. For advtrains to know from which signal
|
||
|
which routes can be set, you need to assign the signal to a TCB.
|
||
|
|
||
|
To do this, perform the following steps:
|
||
|
\begin{enumerate}
|
||
|
\item If not already happened, set up a TCB (you don't need to, but are
|
||
|
advised to, configure track sections there)
|
||
|
\item Place the signal a few meters in front of the TCB, so that trains
|
||
|
stopping at the signal do never pass the TCB
|
||
|
\item Locate the side of the TCB which points in the direction that trains
|
||
|
will proceed past the signal, as shown in the figure below.
|
||
|
\item Right-click the TCB, and click ``Assign a signal'' on this side.
|
||
|
\item Punch the signal.
|
||
|
\end{enumerate}
|
||
|
\includegraphics[width=8cm]{8_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_assign_signal.png}
|
||
|
|
||
|
If you haven't set an influence point for the signal yet, the influence
|
||
|
point formspec automatically opens.
|
||
|
|
||
|
You can assign a signal to each side of a TCB. This is, for example,
|
||
|
useful when creating block sections on a bi-directional main running
|
||
|
line.
|
||
|
|
||
|
Only main signals can ever be assigned to TCBs, because static ones
|
||
|
can either not display ``Danger'' or do not permit to proceed at
|
||
|
all.
|
||
|
|
||
|
\subsection{Shunt routes}
|
||
|
|
||
|
\textbf{The information in this section is subject to future change
|
||
|
because of safety issues!}
|
||
|
|
||
|
Operating railways is not all about driving trains around. Coupling,
|
||
|
decoupling and moving single engines, wagons or groups of wagons across
|
||
|
a station, called shunting, also plays an important role.
|
||
|
|
||
|
Remember what we said about routes: There must be no rail vehicles
|
||
|
on the route. So what if you have some goods wagons ready on a siding,
|
||
|
and want to couple an engine to it? You can not set a regular route
|
||
|
into the siding, because it is occupied.
|
||
|
|
||
|
The solution is to program a second route into the siding, but with
|
||
|
the difference that it already ends at the rear-facing signal of it,
|
||
|
so it doesn't include the siding section itself:
|
||
|
|
||
|
\includegraphics[width=7cm]{9_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_route_ex3.png}
|
||
|
|
||
|
The Sht2 route then needs to show a shunt aspect, which instructs
|
||
|
the driver to proceed slowly and watch out for vehicles on the route.
|
||
|
See later on for how to set this up.
|
||
|
|
||
|
Shunt routes like this are, so far, the only exception to the ``Routes
|
||
|
should end at a signal facing the same direction'' rule.
|
||
|
|
||
|
\subsection{Route Release}
|
||
|
|
||
|
In early real-life interlocking systems, routes either had to be cancelled
|
||
|
by the signalman after the train had passed the route, or there was
|
||
|
a single release contact at the end of the route. However, as interlocking
|
||
|
systems evolved and the position of trains is now roughly known by
|
||
|
the track sections, portions of the route can be freed as soon as
|
||
|
the train has left the corresponding section.
|
||
|
|
||
|
AdvTrains has chosen a modern approach to route releasing. Each turnout
|
||
|
lock is associated to a track section belonging to the route's path.
|
||
|
Once the train leaves this section, all assigned locks are also freed.
|
||
|
|
||
|
Please note that reversing a train outside of stations is not only
|
||
|
discouraged, but also very dangerous, because even real-world interlocking
|
||
|
system do not expect this. There is a clear, human-sense rule that
|
||
|
you should never reverse the driving direction of a train while on
|
||
|
a main line or on a turnout. Else, you can be considered a terrorist.
|
||
|
(quote from professional!)
|
||
|
|
||
|
\subsection{Programming a route}
|
||
|
|
||
|
The route programming procedure is quite straightforward if you've
|
||
|
read the previous sections and understood how routes should be set.
|
||
|
|
||
|
Routes always start at a main signal. You must have assigned the signal
|
||
|
to a TCB, as described earlier.
|
||
|
|
||
|
When you right-click the main signal, it no longer changes its aspect.
|
||
|
Instead, a formspec pops up, showing you an (empty) list of routes
|
||
|
with the possibility to set them or to create new routes. Click the
|
||
|
``Create new route'' button to start programming a new route.
|
||
|
|
||
|
The form closes, and an arrow is displayed on the TCB. You are now
|
||
|
in ``Route Programming'' mode, programming the first track section
|
||
|
of the route. Now:
|
||
|
\begin{itemize}
|
||
|
\item Put any turnouts you need to lock in the correct position (e.g. by
|
||
|
right-clicking them). This includes flank protection.
|
||
|
\item Punch them. This makes a marker with a blue lock symbol appear.
|
||
|
\item If you punch a turnout again, or punch the marker, you can remove
|
||
|
the lock again.
|
||
|
\item When you've locked all turnouts in the current section, go to and
|
||
|
punch the TCB that is the border to the next track section the train
|
||
|
proceeds into.
|
||
|
\end{itemize}
|
||
|
Depending on the situation, you are now offered some possibilities
|
||
|
to proceed:
|
||
|
\begin{itemize}
|
||
|
\item Click the ``Advance to next section'' button if your route consists
|
||
|
of more sections with turnouts to lock, and you need to continue programming.
|
||
|
Follow the above steps to set locks for the next section.
|
||
|
\end{itemize}
|
||
|
Once you've clicked the ``Advance'' button, the lock markers change
|
||
|
to a red lock symbol, telling they can't be changed anymore. Repeat
|
||
|
the above procedure until you are ready to complete the programming
|
||
|
procedure:
|
||
|
\begin{itemize}
|
||
|
\item Click the ``Finish route HERE'' button when you've set up the locks
|
||
|
for the last track section of the route and punched the final TCB
|
||
|
(the one with the next signal). You will be asked for a route name
|
||
|
and your route will be saved.
|
||
|
\item The ``Finish route at end of NEXT section'' button (third button)
|
||
|
is an useful quickhand to make the route proceed one more section.
|
||
|
Using this button is equivalent to first clicking the ``Advance''
|
||
|
button, then flying to the end of the next track section and finishing
|
||
|
the route there. You can not (officially) set turnout locks in the
|
||
|
final section using this method.
|
||
|
\end{itemize}
|
||
|
A few hints:
|
||
|
\begin{itemize}
|
||
|
\item If you accidentally advanced the route wrongly, you can use the ``Step
|
||
|
back one section'' button to undo this.
|
||
|
\item If you want to stop programming the entire route without saving it,
|
||
|
use the ``Cancel route programming'' button.
|
||
|
\item The third button is especially useful for programming simple block
|
||
|
sections on a main running line, since you can stay at the starting
|
||
|
signal (punch starting TCB and select third button).
|
||
|
\item If a route should end in a dead end, you MUST use the ``Finish in
|
||
|
NEXT section'' button, because there is no final TCB that you could
|
||
|
punch.
|
||
|
\item The third button does NOT work on sections with more than 2 exits,
|
||
|
because the system won't be able to determine the final TCB of the
|
||
|
route then.
|
||
|
\end{itemize}
|
||
|
|
||
|
\subsection{Route information screen}
|
||
|
|
||
|
\includegraphics[width=10cm]{10_home_moritz_Home_Projekte_Minetest_minetest_____lyx_img_Bildschirmfoto_2019-01-15_19-28-09.png}
|
||
|
|
||
|
This is the screen that appears when you click ``Edit Route''. It
|
||
|
lets you change the route name and delete the route. Also, it shows
|
||
|
a summary of the route and its elements.
|
||
|
|
||
|
The route summary lists information per track section on the route,
|
||
|
so the line starting with ``1'' is the first section of the route.
|
||
|
|
||
|
The ARS rule list and its purpose is explained later.
|
||
|
|
||
|
\subsection{Specifying signal aspects}
|
||
|
|
||
|
By default, newly programmed routes show an aspect that comes closest
|
||
|
to ``Proceed at maximum speed''. However, it can be desirable to
|
||
|
change this behavior, like when the route passes a diverging turnout,
|
||
|
the train should be signalled to drive slower, or the route is a shunt
|
||
|
route and therefore only ``Shunting allowed'' should be shown.
|
||
|
|
||
|
This is the purpose of the ``Change Aspect'' button in the route
|
||
|
info screen.
|
||
|
|
||
|
Signal aspects in advtrains consist of 4 sections: main (Information
|
||
|
for train moves), dst (Distant signal information, not implemented
|
||
|
yet), shunt (Information for shunt moves) and info (additional information,
|
||
|
currently not in use).
|
||
|
\begin{itemize}
|
||
|
\item Train may proceed as train move at maximum speed: ``main: free, speed
|
||
|
-1''
|
||
|
\item Train may proceed as train move at speed of 8: ``main: free, speed
|
||
|
8''
|
||
|
\item Train may proceed as shunt move: ``shunt: free''
|
||
|
\end{itemize}
|
||
|
There's a field in the ``shunt'' part of signal aspects that is
|
||
|
not displayed in the GUI, but is of potential interest to developers
|
||
|
of signal addons: shunt.proceed\_as\_main.
|
||
|
\begin{itemize}
|
||
|
\item A train move can always become a shunt move by passing a signal that
|
||
|
shows ``Halt for train moves, shunting permitted''
|
||
|
\item A shunt move can only pass a signal saying ``Proceed as train move,
|
||
|
shunting not permitted'' when proceed\_as\_main is true.
|
||
|
\end{itemize}
|
||
|
The property is used by the Limit Of Shunt sign, where proceed\_as\_main
|
||
|
is set to false. Shunt moves have to stop in front of it, while train
|
||
|
moves are signalled ``Proceed''. Regular main signals that show
|
||
|
``green'' have the field set to true, so that all trains can pass
|
||
|
it.
|
||
|
|
||
|
\section{Interlocking system operation}
|
||
|
|
||
|
Setting up the interlocking for a portion of a railway network requires
|
||
|
some time, experience and planning, but once done, there's not much
|
||
|
to do anymore to make trains run on your, now safer, railway. This
|
||
|
section covers some useful practices to route trains across your network.
|
||
|
|
||
|
At the moment, routes can either be set by clicking the signal or
|
||
|
via LuaATC, or by using the ``Remote Routesetting'' button from
|
||
|
the Onboard Computer. It is planned to control this via a ``signal
|
||
|
box'' view based on the currently broken itrainmap.
|
||
|
|
||
|
\subsection{Train Safety System}
|
||
|
|
||
|
The Train Safety System, called ``LZB'' in the code (from the german
|
||
|
term Linienzugbeeinflussung, although this is a completely different
|
||
|
system), ensures that trains obey any restrictions imposed by signals
|
||
|
when influence points are set. This way, it is not possible to pass
|
||
|
signals at danger or to bypass speed restrictions.
|
||
|
|
||
|
It is possible to overrun red signals, if a route is cancelled while
|
||
|
a train is approaching. Real interlocking systems use a mechanism
|
||
|
called Approach locking for this, however, as of now, there's no similar
|
||
|
system in this mod. If a red signal is overrun, the train brakes using
|
||
|
emergency brake (``BB'') and can not be moved any further. You should
|
||
|
then examine the situation and drive the train backwards out of the
|
||
|
section.
|
||
|
|
||
|
\subsection{Simple route setting and cancelling}
|
||
|
|
||
|
To set a route, simply right-click the signal, select a route and
|
||
|
click ``set route''. If there are no conflicts, the signal turns
|
||
|
green and the train is allowed to proceed.
|
||
|
|
||
|
It may be possible that the route can not be set, because one or more
|
||
|
other routes conflict with the current one, or a section is blocked.
|
||
|
In this case, the signal stays red, and the conflicting item is shown
|
||
|
in the formspec. As soon as the conflict is resolved (by cancellation
|
||
|
or release of the conflicting route, or the section becoming free),
|
||
|
the requested route will be set and the signal turns green.
|
||
|
|
||
|
If a route is either requested or set, it can be cancelled from the
|
||
|
signalling formspec. This means that all turnouts and sections are
|
||
|
released, and the signal reverts back to red. This of course only
|
||
|
works when the train has not passed the signal yet. There is no mechanism
|
||
|
for Approach Locking.
|
||
|
|
||
|
\subsection{Automatic Working}
|
||
|
|
||
|
Block signals on main running lines usually only have a single route
|
||
|
to set, the one proceeding along the main line. Their purpose is only
|
||
|
to show whether there are trains in the next section. So, it would
|
||
|
be convenient if this only route would set itself again after a train
|
||
|
passed.
|
||
|
|
||
|
This is what Automatic Working is for. Set a route, click ``Enable
|
||
|
Automatic Working'', and as soon as a train passes, the route is
|
||
|
automatically re-set.
|
||
|
|
||
|
This function is nearly identical to SimSig automatic signals. It
|
||
|
can also be useful on a line with high traffic, when there's a low-frequented
|
||
|
access to a siding. You'd enable automatic working for the main route
|
||
|
and cancel it only when you need a train to go into the siding.
|
||
|
|
||
|
\subsection{Automatic Route Setting (ARS)}
|
||
|
|
||
|
As interlocking systems evolved, the goal always was to offload work
|
||
|
from the human to the system, automating things. Modern interlocking
|
||
|
systems can automatically set routes based on a pre-programmed routing
|
||
|
table for each particular train. Since one outstanding feature of
|
||
|
Advtrains is it's high degree of automation, it has a similar system
|
||
|
to automatically set routes for a train depending on certain parameters.
|
||
|
|
||
|
Every train in Advtrains has 2 internal properties that can be set
|
||
|
through the Onboard Computer of every engine in the train, the ``Line''
|
||
|
and the ``Routing Code''
|
||
|
\begin{itemize}
|
||
|
\item The ``Line'' property is supposed to distinguish trains of multiple
|
||
|
lines that share a track.
|
||
|
\item The ``Routing Code'' property is supposed to tell the target of
|
||
|
a train or which route it should take to reach the target
|
||
|
\end{itemize}
|
||
|
Examples:
|
||
|
|
||
|
\includegraphics{11_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_arslin_ex1.png}
|
||
|
|
||
|
Both lines share the section between Blackbirdshire and Parktown.
|
||
|
To divert them again, they can save their line number in the ``Line''
|
||
|
field.
|
||
|
|
||
|
\includegraphics{12_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_arslin_ex2.png}
|
||
|
|
||
|
Some trains should go to B, some to C, the direction can be set with
|
||
|
a routing code.
|
||
|
|
||
|
One single routing code should not contain spaces. You can set multiple
|
||
|
routing codes by just separating them with spaces in the Routing Code
|
||
|
field. So, ``Stn Ori'' would be matched by ARS rules either containing
|
||
|
``Stn'' or ``Ori''. This does not work for lines.
|
||
|
|
||
|
\subsubsection{Writing ARS Rules}
|
||
|
|
||
|
Every route of every signal can be given a set of ARS rules. A single
|
||
|
ARS rule can either match a line or a routing code (combinations,
|
||
|
e.g. and's, are not yet supported). The first rule in the first route
|
||
|
that matches any of the properties of the train is selected, and that
|
||
|
route is set for the train.
|
||
|
|
||
|
\includegraphics{13_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_ars_ex1.png}
|
||
|
|
||
|
You can add an asterisk (``{*}'') to the ARS rules of one route.
|
||
|
That route then becomes the default route.
|
||
|
|
||
|
If no explicit ARS rule matches the train, then the default route
|
||
|
is chosen and set. If there is no default route, nothing happens and
|
||
|
the signal remains red.
|
||
|
|
||
|
\subsubsection{Using ARS}
|
||
|
|
||
|
In contrast to Automatic working, where the route is re-set immediately
|
||
|
after the train passed, ARS sets the route only when the train approaches
|
||
|
the signal, e.g. is just about to start braking in front of it.
|
||
|
|
||
|
At any place where one of the following things take place, you should
|
||
|
use the ARS system in favor of Automatic Working:
|
||
|
\begin{itemize}
|
||
|
\item A main line diverts into 2 or more lines: Using ARS, you can direct
|
||
|
the trains along the line where they should go
|
||
|
\item Two or more main lines join into one: You cannot use automatic working
|
||
|
here, because all routes are tried to be set at the same time and
|
||
|
it is a matter of luck which one ``wins''. In a bad situation, you
|
||
|
have a train coming from A, but it cannot proceed because Signal B
|
||
|
has won the ``route race'' into the shared section, even if there's
|
||
|
no train coming from B. Using ARS, by just specifying the ``default
|
||
|
route'' by a {*}, the inward route is only set when a train approaches.
|
||
|
\item Complex intersections, which are probably a combination of the above
|
||
|
two
|
||
|
\item sometimes-used branching tracks on which only certain trains (with
|
||
|
certain routing code or line) should head off, like the entrance to
|
||
|
a factory where only one specific goods train should drive in.
|
||
|
\end{itemize}
|
||
|
In the route overview, you can see some information on the ARS settings:
|
||
|
All routes that have ARS rules are highlighted red, the ``default
|
||
|
route'' is highlighted green.
|
||
|
|
||
|
ARS does not affect signals which already have a route set, and signals
|
||
|
which are operating under ``Automatic Working''.
|
||
|
|
||
|
\section{Final notes}
|
||
|
|
||
|
The interlocking system is mainly finished, though there are still
|
||
|
some plans and ideas. They include:
|
||
|
\begin{itemize}
|
||
|
\item Signalbox panels, as revival of itrainmap
|
||
|
\item Distant signals
|
||
|
\item On-Train head-up display for oncoming signals (they have something
|
||
|
like this in Czech Republic, I forgot how it's called.)
|
||
|
\end{itemize}
|
||
|
Apart from this, there's the large oncoming project of a new timetable-based
|
||
|
train automation system, but this will take some time to evolve and
|
||
|
is out of the scope of this document.
|
||
|
|
||
|
If you have any suggestions, corrections, improvements, criticism
|
||
|
or cute kittens and stuff, you can always contact me by various means
|
||
|
(Forum PM, E-Mail (orwell@bleipb.de), Linuxworks server chat a.s.o.).
|
||
|
Have fun!
|
||
|
|
||
|
- orwell
|
||
|
\end{document}
|