Elvas Tower: Update Timetable Mode & Signalling - Elvas Tower

Jump to content

Posting Rules

All new threads will be started by members of the Open Rails team, Staff, and/or Admins. Existing threads started in other forums may get moved here when it makes sense to do so.

Once a thread is started any member may post replies to it.
  • 5 Pages +
  • 1
  • 2
  • 3
  • Last »
  • You cannot start a new topic
  • You cannot reply to this topic

Update Timetable Mode & Signalling Update now committed Rate Topic: -----

#1 User is offline   roeter 

  • Vice President
  • Group: Status: Elite Member
  • Posts: 2,419
  • Joined: 25-October 11
  • Gender:Male
  • Country:

Posted 30 May 2017 - 06:50 AM

The first phase for the update for Timetable mode and Signalling as announced in the series of proposals and blueprints has now been committed (version 3863).

The following blueprints have been fully included :

Blueprints for signalling update :
Additional Signal Script Functions
Adjustable Glow Settings
Common Script for Signal Types
Additional Signal Function Types
Signal Variables

Blueprints for timetable mode update :
Additional Timetable Functions
Attach & Detach functions in Timetable Mode
Timetable Pools
Random Restart Delays
Speed setting for trains in timetable mode

The following blueprint has been partially included :
Weather File
For this blueprint, the processing has been included but the reading of the file has been postponed while waiting for JSON functions to become available.

The following blueprints have not yet been included :
Print Position
Timetable Evaluation Functions

Also, the menu update for timetable is not yet available.

Note that this is a pretty extensive update, in particular for timetable mode. It is also still very much a work in progress.
A preliminary document detailing changes to the timetable mode is added to this post. A document for signalling changes will follow soon.
The overall OR documentation will be updated in due course, but it will take some time.

IMPORTANT NOTE.
It is well known that MSTS wasn't very good at handling AI trains - in particular, it could not handle multiple AI trains near to each other on the same track. Therefor, most signalling systems do not allow for AI trains to obtain access to tracks occupied by other trains - so called 'call on' permission. But without such permission for AI trains, the $attach, $pickup and $transfer functions now available for timetable mode cannot work.
There is an easy check to test if signalling on a route can handle these functions. Just create a timetable with two trains only - one stopping in a station, the other terminating on that same location, with an $attach command defined in the #dispose field to attach to the first train.
Select the second train as player train. If the signalling allows this train to run upto the first train, the signalling will support 'call on'. If you have to use the 'tab' function to obtain permission, the signalling does not support 'call on' and it will not be possible to run a timetable which includes attach functions.

Some further notes :
  • Work is at hand on a demonstration timetable for a freeware route which includes almost all new functions.
    This timetable was used for testing these new functions.
    It just needs a finishing touch, and permission from the route owners. Watch this space.

  • Included in the commit are changes to the handling of trains approaching station stops (timetable mode only).
    This has been improved making the approach more realistic and also improves the timekeeping.
    But (a lot of) more work is needed to improve the overall train control function for AI trains.

  • With proper detach and attach functions now available, support for the /runround option in the #dispose field will be withdrawn.
    This function is no longer required as the same can now be done much better using $detach and $attach (or $pickup) commands.
    Withdrawing this option simplifies the commands, and also simplifies the program.


Preliminary document for timetable mode changes : Attached File  TimetableChanges.pdf (61.7K)
Number of downloads: 1968

Regards,
Rob Roeterdink

#2 User is offline   conductorchris 

  • Vice President
  • Group: Status: First Class
  • Posts: 2,339
  • Joined: 24-March 10
  • Gender:Male
  • Simulator:Open Rails - MSTS
  • Country:

Posted 30 May 2017 - 09:54 AM

Rob, thanks for all your work on this. I am looking forward to trying this out, and have for some time!
Christopher

#3 User is offline   m61 

  • Fireman
  • PipPipPip
  • Group: Status: Fired
  • Posts: 163
  • Joined: 12-May 14
  • Gender:Male
  • Location:Bialobrzegi
  • Simulator:Open Rails
  • Country:

Posted 31 May 2017 - 03:29 AM

First test of new timetable features - attach function .

https://youtu.be/Zu8E7RglZzM

#4 User is offline   VicenteIR 

  • Fireman
  • Group: Status: Active Member
  • Posts: 149
  • Joined: 24-April 15
  • Gender:Male
  • Location:Dimona, Israel
  • Simulator:Open Rails
  • Country:

Posted 31 May 2017 - 11:12 AM

Rob, first of all, thank you for your work!
Please, post an examples of a signal script which uses new functions and variables.

#5 User is offline   Genma Saotome 

  • Owner Emeritus and Admin
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • Group: ET Admin
  • Posts: 15,307
  • Joined: 11-January 04
  • Gender:Male
  • Location:United States
  • Simulator:Open Rails
  • Country:

Posted 31 May 2017 - 05:57 PM

A couple of thoughts on terminology -- for future changes.

I read your document Rob, nicely done (wish other programs were documented as well).

Professionally speaking here (data modeller)... when terms and their definitions no longer match reality but are still used anyway the resulting convoluted workarounds add complexity, expand room for error, and create confusion. Hanging on to KUJU's terms and definitions no longer matches the reality you are attempting to code and the mismatch is evident in you documentation.

OR doesn't have the objects you need, nor do we have a set of terms all can understand and use consistently. There is an obvious need to clearly distinguish between a trains as any railroad would define it -- one or more powered units with 0 to n cars, often blocked* from other collections of rolling stock; to know that a string of 1-n cars and no locomotive is quite different than a train; to know that a steam locomotive usually, but not always, has its tender(s); to know there is a set of adjacent (coupled) locomotives (the word consist is often used here in the US, sometimes lashup); and that cars come in sets too, we call them blocks of cars -- that set of contiguously coupled cars that will all move from point A to B as a set where A and B are some combination of terminal yards and/or interchange points w/ other railroads; That several blocks are often contained in a train; And then perhaps some number of "trash" cars that are dropped or picked up along the way which, by definition, were not part of the blocks present when the train departed it's starting location.

Seems to me that having the right terms defined, with corresponding objects in the code, would be helpful to both code and end user.

#6 User is offline   rickloader 

  • Conductor
  • Group: Status: First Class
  • Posts: 479
  • Joined: 05-February 13
  • Gender:Male
  • Location:Southampton uk
  • Simulator:Open Rails
  • Country:

Posted 01 June 2017 - 01:33 AM

Magnificent work, eagerly awaited and exceeding expectations! It must represent an enormous commitment of time and effort .
The commands $attach $detach and $transfer give huge scope, and the /qualifiers give the timetable designer powerful control.
I have only just started, but it is evident the operations of a traditional railway can be replicated.
For example, I have the station pilot leaving the depot light engine, collecting empty coaching stock, and drawing them into the terminal station. Meanwhile the train engine leaves the depot light engine, backs onto the train at the terminus ,couples and leaves with the complete train. The pilot (blocked in at the end of the terminal platform) can now leave for further duty.
I particularly value the way the way the block occupied state is over- ridden to allow 2 trains together without deadlock.

Regarding Dave`s post above, the difficulties in catering for terminology and practices in US/Europe/ rest of world/ ancient and modern are very great, and it seems to me that these timetable functions do cover a very wide range.of possibilities
I too was pleasantly surprised by the good documentation.
So thanks Rob for this wonderful addition.
rick

#7 User is offline   Genma Saotome 

  • Owner Emeritus and Admin
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • Group: ET Admin
  • Posts: 15,307
  • Joined: 11-January 04
  • Gender:Male
  • Location:United States
  • Simulator:Open Rails
  • Country:

Posted 01 June 2017 - 08:59 AM

View Postrickloader, on 01 June 2017 - 01:33 AM, said:


Regarding Dave`s post above, the difficulties in catering for terminology and practices in US/Europe/ rest of world/ ancient and modern are very great....

rick


I agree. The terms used are always problematic... we're already stuck with the never-before-heard bogie and wagon -- such is life. What is important is the concept behind the terms, which is why I tried to give a bit of a description for each. Whatever they ultimately get called, the concepts are important. As an example, perhaps the concept I called blocks is completely irrelevant to railroading in the UK whereas it has been the standard here in the US for about 60 years, roughly the time span of intended for virtually all US routes. In practical terms a block could be one .con file which in turn could mean a train could have multiple .con files (which also means a train in OR is no longer a .con). A couple of extra attributes, such as Block( Y | N ) and BlockName(), to be displayed instead of car id's, would probably be enough to get it going. Don't need it? Well, it's easy to ignore. Need it? It isn't there.

A close reading of Rob's documentation will reveal issues he had to work around because the needed concept was not present in the OR code (or was inferred from other things that might see their own changes over time). It's always best to have the real data you need and always dangerous to assume some values you borrowed but have no control over will remain as they were*. He clearly had enough to do this time w/o changing those things in OR; my point is at some future date the OR code needs to catch up and properly address the concepts so the timetable methods have the data integrity it needs.


* Do understand that the meaning of any data in the program is not really controlled. Anybody can come along and apply a change that upsets some other part of the application. It's happened lots of times already. Getting the right concepts into the code buffers the necessary concepts for signalling from everything else going on and will protect the integrity of what's been recorded in the spreadsheet.

#8 User is offline   rickloader 

  • Conductor
  • Group: Status: First Class
  • Posts: 479
  • Joined: 05-February 13
  • Gender:Male
  • Location:Southampton uk
  • Simulator:Open Rails
  • Country:

Posted 01 June 2017 - 12:23 PM

Well Dave, I always enjoy reading your posts! they are so thought provoking, especially to me, muddling along.....! Yes,"Blocks" only became relevant to uk railways recently, when attempts were made to reduce the costs of shunting by running block trains in a fixed formation.
I suppose an example of concept constraints is timetables using the platform as a location descriptor. This may have been unavoidable, but I think it is a major hurdle to Timetable mode gaining acceptance. Perhaps what is needed is a utility to convert existing sidings to platforms. Or an overlay to existing routes to enable timetable locations, without modifying the authors work and raising permissions issues.
Returning to this timetable update. For those with imperfect vision, watch out for white spaces. I suggest copy and paste from the documentation. I`m sure white spaces are needed, but it would be great if they could be highlighted by a red spot or something.
In the $detach command you will most likely want the detached units to be formed into another train, and be $pickup later. It is easy to forget the detached new trains need a path and a timetable column. Otherwise they will just disappear.

Here is my $detach for a station. It is well documented, but maybe some extra info might help?

04:29$detach^/units=^-5^/forms^=^240NewsPmth
where: ^ is a white space
04:29 the station arrival time
units= -5 is 5 coaches detached from the back ( a +ve number= front)
/forms makes a new train from the detached coaches
240NewsPmth the name of the new train. It needs a timetable column of the same name, and a path.
Hope this is some help. Really enjoying this update!
rick




#9 User is offline   eugenR 

  • Conductor
  • Group: Status: Contributing Member
  • Posts: 472
  • Joined: 15-April 13
  • Gender:Male
  • Simulator:MSTS
  • Country:

Posted 02 June 2017 - 12:32 AM

Hi Rob Röterdink,
Many Thanks for the new Signal Script Function
approach_control_position_forced(distance)
It permit to much better organize passing's, if the Entrance-Signal of a station is using this function. The signals thru the station will open only if the Train is a short distance before the Distance-Signal of the Entrance-Signal of the station (independent of other signals in the controlled distance), and the Track to the next Station is much longer time free for opposite trains.
The function works perfect.

EugenR

#10 User is online   James Ross 

  • Open Rails Developer
  • Group: Status: Elite Member
  • Posts: 5,488
  • Joined: 30-June 10
  • Gender:Not Telling
  • Simulator:Open Rails
  • Country:

Posted 04 June 2017 - 04:41 AM

View Postroeter, on 30 May 2017 - 06:50 AM, said:

The first phase for the update for Timetable mode and Signalling as announced in the series of proposals and blueprints has now been committed (version 3863).

Thanks for the update, and all the new features! :)

View Postroeter, on 30 May 2017 - 06:50 AM, said:

Weather File
For this blueprint, the processing has been included but the reading of the file has been postponed while waiting for JSON functions to become available.

Do you have an example weather file demonstrating all the features, so that someone can work on the JSON loading needed?

  • 5 Pages +
  • 1
  • 2
  • 3
  • Last »
  • You cannot start a new topic
  • You cannot reply to this topic

2 User(s) are reading this topic
0 members, 2 guests, 0 anonymous users