Repeater For Common Exit Signal
At Riffelberg on the Gornergrat Railway, there is the usual Swiss arrangement of a common exit signal for trains descending towards Zermatt. However, the loop has been extended and the exit signal is difficult to see from the end of the platforms because of a gallery structure protecting the line from a ski-lift crossing.
Consequently, there is a repeater, placed between the tracks on the uphill side of the ski-lift, to show drivers when the exit signal is clear. The repeater shows two greens if the exit signal is clear, and two yellows if it is not (there is no need for speed-signalling on the ggb: the speed limit for descending trains is 15km/hr).
The departure signal in the foreground illuminates when the train has permission to depart (“right-away”) from the stationmaster.
There is also a ground signal on the left track just before the gallery, not visible in the picture above. Another interesting local touch is the triangular “road works” sign attached to the repeater signal post. As far as I know this is not foreseen in the official Swiss signalling rules, but its meaning is pretty obvious!
For more on the ggb see Gornergrat
Modelling this in Rail3D
What you see in the screenshot above should not be possible in Rail3D — the “distant” on the right track and the ground signal on the left track are both cleared to the same exit signal. It is possible in real life because the “distant” is actually a repeater, and applies to both tracks. Rail3D doesn’t allow you to attach a signal to more than one track, so you have to “cheat”…
The solution I came up with is to use a script to address the repeater directly from the exit signal. Giving the repeater the id “RbgDR”, you can use the OnSetLamps() function for the exit signal to set the lamps of the repeater whenever it changes state. As there are no speed aspects involved, there are only two possible states, so the script is quite short. Notice that, even though we only need the lamps with id 6,7,9 and 10, I’m also setting lamp 8 to black each time — this lamp is used in the repeater’s own Junction and Clear states, so we need to prevent it eing switched on independently of the exit signal.
OnSetLamps()
{
//script to set repeater
signal Repeater=GetSigByID(“RbgDR”); //enter correct id here
if(Signal.IsOn())
{
//stop
Repeater.SetLamp(6,255,225,0,0); //Yellow
Repeater.SetLamp(7,255,225,0,0); //Yellow
Repeater.SetLamp(8,0,0,0,0); //Green (middle)
Repeater.SetLamp(9,0,0,0,0); //Green
Repeater.SetLamp(10,0,0,0,0); //Green
}
else
{
//clear
Repeater.SetLamp(6,0,0,0,0); //Yellow
Repeater.SetLamp(7,0,0,0,0); //Yellow
Repeater.SetLamp(8,0,0,0,0); //Green (middle)
Repeater.SetLamp(9,0,255,100,0); //Green
Repeater.SetLamp(10,0,255,100,0); //Green
}
}
import