diff options
Diffstat (limited to 'assets/interlocking.html.LyXconv/interlocking.tex')
-rw-r--r-- | assets/interlocking.html.LyXconv/interlocking.tex | 576 |
1 files changed, 576 insertions, 0 deletions
diff --git a/assets/interlocking.html.LyXconv/interlocking.tex b/assets/interlocking.html.LyXconv/interlocking.tex new file mode 100644 index 0000000..87ef235 --- /dev/null +++ b/assets/interlocking.html.LyXconv/interlocking.tex @@ -0,0 +1,576 @@ +\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} + +This section is supposed to show some examples on how you should set +up track sections on certain track configurations. + +\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 Variable 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 ``Sneak'' +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{Main and Shunt signals} + +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. + +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{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. +To show a ``free'' aspect here would be wrong, because that would +mean that the track is free until the next main signal, which it is +clearly not. + +\textit{Note that advtrains\_interlocking currently does not allow +to set individual aspects for routes, this is a feature still to be +implemented soon.} + +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 one turnout should be locked by more than one section, set the +lock only in the \texttt{\textbf{last}} of those sections. Locking +the same turnout in multiple sections of a single route results in +undefined behavior! +\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} + +\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. + +As of now, changing the driving direction of a train always clears +any imposed speed restrictions. + +\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. + +\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 Individual signal aspects for routes +\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} |