铁路信号 (Rail signals)

铁路信号是用于控制铁路交通的 节点 类型。

加载铁路信号#

只需定义一个节点,将其 type 设置为 rail_signal,如下例所示:

<nodes> <!-- 开始标签 -->

    <node id="1" x="-500.0" y="0.0" type="rail_signal"/>
    <node id="2" x="+500.0" y="0.0" type="rail_signal"/>

</nodes> <!-- 结束标签 -->

用法#

如果在仿真中使用铁路网络(这里指的是完全由只允许列车通行的边组成的网络),则不需要使用铁路信号。相反,可以选择该网络中的所有交叉路口为 priority(优先级)类型,但这会导致铁路交通行为不真实。为了实现更真实的行为,可以使用铁路信号。为此,可以通过选择该路段内的节点作为铁路信号,将一段较长的、中间没有任何交叉路口的铁路路段分割成所谓的“闭塞(blocks)”。然后,闭塞 是两个铁路信号之间的边的集合。如果铁路信号后的闭塞中没有列车,铁路信号将显示绿灯(我们像交通灯一样使用绿灯和红灯)。列车将从一个闭塞移动到下一个闭塞,每次它想进入一个闭塞时,铁路信号会指示该闭塞是否空闲并允许列车进入,或者该闭塞是否被占用以及列车必须等待直到该闭塞清空。

如果在仿真中使用了一个铁路信号,则必须为每一个连接到现有铁路信号的、且拥有多于两条轨道的交叉路口/道岔使用铁路信号。否则,将发出警告。这是必须的,因为铁路信号依赖于其相邻的铁路信号(或者更准确地说,是依赖于相邻铁路信号与其之间的闭塞)。对于没有交叉路口/道岔的铁路路段,可以将其分割成任意数量的闭塞,但几百米的闭塞长度可能是合理的尺寸。过大的闭塞长度可能导致等待进入闭塞的列车等待时间过长。过短的闭塞长度可能导致列车跟行距离过近。

行为#

铁路信号本质上是交通灯,但它们的状态不依赖于 TLS(交通灯系统)程序。相反,铁路信号的状态取决于特定闭塞的占用情况。在每个仿真步长,铁路信号的状态将根据占用情况进行更新。

铁路信号的逻辑应保证以下几点:

  • 铁路网络的每个闭塞最多被一列列车占用。
  • 如果多列列车从不同的车道/边接近同一个交叉路口/道岔,并且想进入同一条车道,那么这些列车中最多只有一列获得绿灯信号,而所有其他列车获得红灯信号,甚至在其中一列列车进入目标车道之前。这将避免列车高速接近铁路信号时突然收到红灯信号,而没有足够的空间在铁路信号前刹车。

铁路信号为节点的每个连接单独指示绿灯或红灯。一个连接 c 由一条入向车道 i 和一条出向车道 o 组成。c 的信号取决于以下占用情况:

  • 出向闭塞。即从当前铁路信号经由 o 到下一个铁路信号的闭塞。
  • 所有通向 o 的闭塞。通向 o 的闭塞是指通向当前铁路信号的闭塞,且该闭塞的最后一车道存在到 o 的连接。显然,i 所属的闭塞是通向 o 的闭塞之一。我们将通向 o 的闭塞集合记为 O

如果只有一条通向 o 的闭塞,即 i 所属的那条,那么 c 的信号为绿当且仅当 c 的出向闭塞没有被列车占用。如果有多条通向 o 的闭塞,即 |O|>1,我们考虑所有到 o 的连接。这些连接正好对应于 O 中的闭塞,我们将这些连接的集合记为 C。此外,我们将 C 中那些对应的接近闭塞被占用的连接集合记为 D。如果 c 的出向闭塞被列车占用,则 C 中所有连接的信号均为红。如果 c 的出向闭塞没有被列车占用,且所有通向 o 的闭塞均未被占用,即 |D|=0,则 C 中所有连接的信号均为绿。如果 c 的出向闭塞没有被列车占用,且至少有一条通向 o 的闭塞被列车占用,即 |D|>0,则 D 中恰好有一个连接显示绿灯,而 C 中的所有其他连接显示红灯。

图 1: 一个用于道岔的铁路信号,有一条来自左侧的入向车道和三条通往右侧的出向车道。被占用的出向闭塞的信号为红,其他所有信号为绿。

图 2: 一个用于道岔的铁路信号,有三条来自左侧的入向车道和一条通往右侧的出向车道。由于所有接近闭塞均被占用,只有一个信号为绿。

输出#

要记录铁路信号的状态,可以使用与记录交通灯的 TLS 状态相同的方法。属性 source 必须是该铁路信号所属交叉路口的 ID。