Rail3D*

   

 

Another Passing Loop


 


Another approach to single track passing loops.

See Also [Passing Loops On Single Lines]

 

I’m considering a simple passing loop with distant signals (A0/B0), Home signals (A1/B1) and starters (A2, A3 etc). The idea is that trains will normally run through the through line, but when required to cross, the first train will run into the loop line for the other to pass.

Basic setup.

  • Create layout as shown.
  • Place signals.
  • Set points to “Free Route” with the default route for the through line.
  • All signals are “controlled”
  • Home signals are set to “Hold” and linked to releases triggered by approaching trains. Thus home signal “A1″ is released by a train appraoching (left to right) triggering released “Rel A”. Similalry for “B1″. The purpose of this is to prevent the route into the loop being set up too early, if the releases are a similar distance from the loop, the first train to arrive will release the home first and be routed into the loop.
  • Through line starting signals (A3/B3) are “Lock Through”, thus a train will only be routed into the through line if the line can be cleared ahead and the train is passing straight through. If the line cannot be cleared ahead, the route cannot be cleared to the through line and instead the “Free route” setting of the points routes the train into the loop.

So far so good - this basically works and will pass trains and cross trains, only routing trains into the loop when required to cross.

However it has some limitations, primarily that it can lock up under certain circumstances. Most commonly when two trains follow each other to pass a third train. Consider:

  • Train 1 runs from left and pulls into the loop to allow train 2 to pass from right.
  • Before train 2 arrives, train 3 is signalled from the left and pulls up to the home signal A1.
  • Train 2 arrives from the right, and reaches home B1 but B1 cannot clear since the loop is occupied and starter B3 (whcih is lock through) cannot clear because there is a train at A1.

So, a simple script addition allows train 2 to pull into the through line and let the other two trains pass. I did this with two scripts (for each direction) one on the home signal, and one on the starter:

 

Home signal script

OnTrain()
{
	if(Signal.IsJct())
	{
		signal LoopSig;
		LoopSig=GetSigByID("DU1S");
		LoopSig.SetLockThrough(0);
	}
}

Basically, this script triggers when a train passes, and if the signal is routed for the junction (ie into the loop), it removes the lock through on the opposing starter. So if this was the script for home signal A1, the GetSigByID would refernce starter “B3″. In other words, once a train enters the loop, a train coming the other way can enter the through line without having to lock through.

The other script simply puts the lock through back:

 

Starter signal script

OnTrain()
{
	signal LoopSig;
	LoopSig=GetSigByID("DU1S");
	LoopSig.SetLockThrough(1);		
}

This script applies to the loop starter (eg A2) and when a train passes the signal (leaving the loop), resets the Lock Through flag on the opposing through line starter (B3) returning the loop to its default state.

 

 


MRG 05/06/2013 16:49:21