The version 2 is on the DLS, when it works. (The DLS that is). It's v3.0 I am working on. The original started life on ts2006, AND I haven't changed much of the structure.
I have made use of available material and upgraded it all to ts2009 that's all. At potential points of conflict at crossovers, I have introduced catch points and double point motors, where programmed trains have to control the junction and the associated catch point in the FALSE fashion before proceeding. In the contra direction if the catch point is TRUE then the other junction cannot be set for a train to cross the path of a train controlling the through route. Note: where there was an available track plan, I have used it and the associated labelling designation, so they are typical.
For Routes I have used the Schedule Library, and broken it down into segments, so that I can place trains around the CIRCLE for example, and select the schedules in order of procession for each of them.
For DISTRICT Trains, It it essential to control the portals, so that the DOWN portal is set to return trains through the UP portal alongside at a set delay, by including the name of the UP portal in the parameters. Make sure that it is spelled correctly even to Miniscule or Majiscule (Capital Letters)characters.
The DOWN portal can only accept trains, and the UP portal can only generate trains, but none of the parameters are set.
Any commands issued to a driver will be carried through the portal when it emerges. I will use West Brompton as an example. The train departs Platform 1, and instructed to call at, drive to, or navigate to the DOWN portal, but in the driver instructions, there is a "call at West Brompton" and a "load command" as well. The Train will exit the DOWN portal into limbo for the set time period, then return at the UP portal to carry out the remaining instructions, however many there may be. I try not to use the portals to generate new trains, as the system can become overloaded. I park all the trains in the Sidings and commence the days duty by calling them into service. All you need to do then is set a timetable, and entry points to schedules. "Schedule at Trigger" is a useful instruction too. A known train can have a schedule in place already but on hitting the trigger can have another schedule appended or inserted to add to or replace the current schedule.
All you have to do is remember who you have instructed and when it happens, and is there going to be a mess? I have had up to 10 trains a minute through Earls Court, and that exceeds The Real District line norm. It is interesting to watch the Circle Line trains interact with the District Line just west of Gloucester Road, as they enter the area of Triangle Sidings.
I have only fleeting experience of the District Line, hence the absence of scenery, and the tunnels are not very typical. There are many gaps to the open air in the real world. I have tried to view the route on Google earth, to verify both the position and orientation of the stations, particularly for v3.0 so watch out for it, probably in the new year.