In other languages: Deutsch 日本語 Русский

Tutorial:Train signals

From Official Factorio Wiki
Revision as of 21:28, 7 October 2018 by Unique 2 (talk | contribs)
Jump to navigation Jump to search


This tutorial explains why and when signals are used and how deadlocks can be avoided. Good practices and examples of frequent use cases are shown.

Regular Signals

Whenever there is more than one train on a track, there is the possibility that trains can crash into one another. To prevent trains from doing this, we place signals at intervals along the track and at crossings. A regular signal protects the rail block behind it, up to the next signal or the end of the track. Rail blocks are shown with colors when a player has a signal in hand, as in the picture. Signals ensure that only one train can be in any block. Whenever a second train would enter a block that already has a train in it, the train will wait at the signal leading into the block instead.

Rail blocks example.png

A regular signal is green when there is no train on the block behind it. When a train enters the block, all signals going into the block will turn red. When a train is in the process of entering the block, the signal turns yellow for a short time before turning red.

Signals are placed on the right side of the track. Trains are only allowed to go past signals that are on the right hand side from direction of travel. A train in automatic mode will not drive on a track if it would pass a signal on the left side unless there is also a signal on the right side at that signal. This can sometimes cause a "no path" error where the track appears to be connected, but part of the connection is a one way track.

In the image, the tracks are from top to bottom:

1. left to right, 2. right to left, 3. bidirectional, 4. bidirectional, 5. bidirectional on the left side, splitting into a right to left (upper) and a left to right track (lower).

Signal directions.png

Chain Signals

Using signals prevents trains from crashing into each other but brings with itself other potential issues. Every train will wait until the block in front of it is cleared, so trains are waiting for other trains. This becomes a problem when a train starts waiting on an intersection. In that case other trains will have to wait even if they are not going in the same direction. These trains may in turn cause other trains to wait, resulting in a slowdown of the entire system. Traffic systems should avoid having trains waiting on intersections. In Factorio, chain signals are used to ensure that this cannot happen.

Chain-signal-guards-crossroad.png

The most important rule is that a train cannot wait for an extended period of time in a block after a chain signal, whereas it can wait in a block after a regular signal. Since trains should not wait on crossings, this leads to the commonly stated rule: Use chain signals on and before crossings and use regular signals at the exits of crossings. In general, whenever a waiting train would block another train that is going on a different track, a chain signal should be used to prevent the train from waiting.

Double-crossing.gif

How do chain signals work? To determine if a train is allowed to drive past a chain signal, consider the path the train will take from that signal up to the next regular signal or until it reaches the station, whichever comes first. The train is only allowed to go through if all rail blocks on this path are free. If the train goes through, it will reserve all blocks on this path and not allow other trains to pass through a block until it leaves the block. A chain signal which leads to a block that has only one outgoing signal will always have the same color as that signal. If a rail line splits up, it can happen that one outgoing signal is red and the other is green. In that case the chain signal leading into the block will turn blue to indicate that some paths are free while others are not.

Chain signal colors.png

If the rail network contains many chain signals it is possible that a very large number of blocks is reserved when a train drives by a chain signal. This would restrict other trains, reducing throughput in general. Hence it is often suggested to use regular signals whenever possible and chain signals only where they are necessary.

Deadlocks

Using signals can lead to trains waiting for other trains. As a consequence, there might be a chain of trains, each waiting for the next, with the last waiting for the first. This situation is called a deadlock, because the trains will wait forever or until the situation is resolved manually. It should be avoided and resolved as soon as possible because every train going through the area will get stuck. The most frequent causes of deadlocks are 1) trains waiting on intersections and 2) a rail network that does not allow enough space for trains.

Signal deadlock.png

The image above shows a deadlock caused by missing chain signals since only regular rail signals were used. As a result trains can wait on a crossing which leads to a deadlock. Note that a deadlock can happen with as few as two trains. The positions where the regular signals should be replaced by chain signals are marked with hazard concrete.

Deadlock too many trains.png

The deadlock in the image happened because there was a circle in the network which was used by more trains than can fit into the circle. Such circles should be avoided. A related example occurs when a station does not have enough space for all trains going there so the trains will wait on the main line - see the example waiting area below.

Signal Spacing

Deadlock signal space.png

The image shows a deadlock between two T-junctions. It happened because while a train was waiting at the intersection, its tail end was still in the last intersection. The junctions when taken individually are signalled correctly, however they are too close to each other. One might argue that they form a single big intersection. There are two ways to fix this: the regular signals between the two junctions could be turned into chain signals or the junctions could be moved further away from each other.

After an exit signal of a junction, the next signal must be at least far enough away to fit the longest train in the rail system between the signals. In general, after every regular signal there should be at least that much space.

Splitting Rail Blocks

The following aims to explain where signals should be placed. Long uninterrupted rail tracks should have signals at regular intervals because this allows more trains to move on the track simultaneously leading to higher throughput. Crossings should be separated from uninterrupted rails with signals. Inside crossings, signals should be used so that multiple trains can pass through the crossing without slowing down - for example trains going in opposite directions should not have to slow down for each other, so they need to pass through different blocks inside an intersection. The examples below all follow these rules.


Examples

The most common way to build a rail system is using two parallel rails, one for each direction. The examples mostly follow this architecture. A single bidirectional rail line should not be used for 'main' rail lines in most situations.

T-Junction

This is the most common variation of the three way junction. Rail signals have been placed inside the junction to ensure that more than one train can enter the junction in some cases. For example for one train going left to right and one going right to left, the trains will pass through different blocks: the first will go through the left yellow, the blue and the lower right yellow block; the second will use the upper yellow and upper red blocks. Because they use different blocks, they can use the junction simultaneously. While this is not strictly necessary for a junction to work, it will allow better throughput at a low cost.

Single Split Off

Stations should never be on a main rail line as trains waiting there would block other trains for extended periods of time. So usually a single line is split off from the main line to make a station there. The focus of this section is on the rail intersection. If a station is used by more than one train, it should have a waiting area - as will be explained in the example later.

File:Rail split double.png

Blueprint of the junction:

Blueprint.png  Copy blueprint string

0eNqV2N1uozAQBeB38TVUjH8w8CrVqkoTq7WUkAhItVHEuxdCNlvoRJy5TFu+DozHx+Gq3vfncGpi3anqquL2WLeqer2qNn7Um/34s+5yCqpSsQsHlah6cxg/NZu4V32iYr0Lf1VF/Z9EhbqLXQzT9bcPl7f6fHgPzfAHsyvTu56o07EdrjnW4z8anOzFJeqiqrR8cYO+i03YTr/WffIL1Q+07Qb247NLb3X9YlPSE1uso+aBbs/NV9g9I/0k+rloGNHiZWZwmQ5GC9jMYTOHTQ+bFjYL2MTbXqIm3qKxm5iJl0mELU9+deacCE8R3iAyqIkvJILHCF/wBE+RYDIJHiPBrkTiObJzlDi0wHblVP/blt1yW+b2Oyrn7PZzE+un+HObK1lnwtW6eAyeM8GZSmkiqecQjSEPY/1W0SQqWZLrjLbixNRADDtxwCFqLk04BPXSiEPQQjqbCFpKQw5ATSZMOcQkYcohpjSTEFOaSYhpsRHlJ5RLY+OEKYdUmUtTDkG9NOUQtBCOp17fRo0ojf5HXbaMI65dNsMS1MpUki1VvZ5xVgv3qIXpONMITeBIYi14JKH7Ex36xcWxdZKu/8RmJVqOzmWbE3ACsV5GauBLJ3q2c/d7N8t7ZwstRUclz7XGZZKTkl9fM45kqWbZqjT2vJ4+Lm5CnJFVlrOVWRlSsIiTIZT14yud20uf6sc7okR9haaddq7Ca11QmXnd9986QP+/

In the image above, a train can enter and leave the station through the same junction. The train will need to have locomotives facing in both directions for this to work. The following image shows a variation where the train enters and leaves via different junctions.

The signals in all the examples are done according to the 'chain before, regular after' rule.

File:Rail splits.png

Upper Junction (entering main line):

Blueprint.png  Copy blueprint string

0eNqV192OgjAQBeB36TUapi0UeJXNZoPYaBOtBtCsMbz78qNmxRrP3Inaj0mnPZSrWO1O9lg734riKlx18I0ovq6icRtf7obv2svRikK41u5FJHy5H67q0u1EFwnn1/ZXFNR9R8L61rXOTuPHi8uPP+1Xtu7/8DRycdMjcTw0/ZiDH27UO4tkmUTi0n/Il0nPr11tq+l32UUvqnyo1ak+2/ViLOtVzSfTPIsqIKqH2LQ9ttm270ySE5p9LlPjaAyjCYxmsJnCZgqbBjY1bGawiTcpR028RUM3MRMvkwg18ekkiZp42wneSfjyJHgjMfYRJdxoSufRFAoSYu8l/YxSCDVg4KmJpC6EZOyMk8A05uyQA1QZc1MOQYnbGgSV3JxDUMUNOgTVzKRDzISZdIiZYovd3Nf6k5iGRMPMTqTKjJmdiJkzsxMwVczNTgSdHeuqben8+wTV9wSN5wka6paSvG7N6jUhUmFZT7xCNW/xa6DQhDWx8a1eOS9Xh+yUV64ETs3oc4lG0Xx+0inuEU+HHnUqx/qtbvOn5vOXhE7zMbO0NFSaJqaSBRXJVCjuhle18WWu+PfuF4mzrZtpiWdGyozy2Miu+wPUsqK7

Lower Junction (leaving main line):

Blueprint.png  Copy blueprint string

0eNqV19uOgjAQBuB3mWsw9ESBV9lsNh4abaLVAJo1hndfENYsWrP/XKL2s7Qzf+FGq/3ZnWofWqpu5NfH0FD1caPGb8NyP3zWXk+OKvKtO1BCYXkYruql31OXkA8b902V6D4TcqH1rXfj+PvF9SucDytX9z+YjUwnPaHTsenHHMPwR72TLUxCV6rScmF6feNrtx6/ll3ygsoH2rQ9u9216X1eL2wq5MgW/6MKRzMY1TBawKaBzRw2c9jUsGlhE9+kAjXxLSpREp/lUCCTuT7XF7d5I9pRtHMxj4kCnSW+PwJuI7yOBNxFeL0LuIkYjSnMPJjWu6UPb+NJ/saTeY4nEbNz5mbpuWljpsVKSoyiAGZZYGJaRkkVI0t2MEsg7TN2MiOq4EYzgkpuNiOo4oYzgmpuOiOoYcYzYubMfEZMy2xQxCyYaYqYJTNNAVNl3DRFUMGse/l/PinJSej0EdHZc0THzlOlsOdSzVM1s1OflsHETMM0NbC0OXb3qZhuv1/cLuZY0DGTo55XMXbUKfRgGs86G51ZyUsiHUN0xkPyKCJ4SBFFJA8RWTe8mN1f3ao/b3oJXVzdjPVbWCkLUWZWdt0PlkGdWQ==


Waiting area

If multiple trains use the same station, the trains might wait on the main rail line, blocking other trains. One way to avoid this is to add waiting areas for trains at each station.

Train waiting area.png

There are two ways to design waiting areas, parallel and sequential. The parallel variation is extendable, takes less space and multiple stations can share a parallel waiting area. The sequential variation as shown below is easier to set up but cannot be shared by multiple stations (and has very minor UPS benefits). Waiting areas are often referred to as (train) stackers.

Train waiting area sequential.png

Four Way Junctions

Roundabouts are a very convenient way to make an extendable intersection. However compared to other intersections they only allow lower throughput and in rare scenarios they can cause deadlocks. The four way junction shown here is serviceable and has decent throughput. There are other designs with more throughput, however the size of the junction goes up by an order of magnitude. There is a forum post where a number of four way junctions and their throughput parameters are collected.


See also