ETCS in Open Rails

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Quacking Duck
    New Member
    • Dec 2024
    • 11
    • MSOR

    #1

    ETCS in Open Rails

    In the Open Rails documentation, there are some discussions of an ETCS DMI display which can be incorporated into cabs[1]. There is some limited discussion of how to interact with such a display from a train control system script[2]. Some recent entries in the Open Rails changelog[3] refer to the DMI. There additionally appear to exist some videos[4][5] depicting such a display in operation.

    However, beyond this, I cannot easily find discussions of the capabilities or usage of such displays, or of ETCS more broadly, within Open Rails. Do there currently exist any routes and locomotives properly equipped with ETCS, implemented as intended using the Open Rails DMI and related features[6]? If yes, where may such content be found?

    I am somewhat interested in creating such content myself, most likely through the conversion of existing non-ETCS locomotives and routes. The documentation pages which I cited above do not appear to describe how such a thing should be done in full detail. For example, how should I make the planning area of the ETCS display show the train's movement authority according to the Open Rails signalling system? Where should I find the relevant documentation?

    Than you in advance for your patience and knowledge.

    [1] https://open-rails.readthedocs.io/en...ar-speed-gauge
    [2] https://open-rails.readthedocs.io/en...-and-variables
    [3] https://www.openrails.org/download/changes/
    [4] https://www.youtube.com/watch?v=56ZCHbcQd3Q
    [5] https://www.youtube.com/watch?v=89DkJFUBALk
    [6] This phrasing is intended to distinguish what I am asking about from locomotives which happen to show ETCS displays as textures or simple gauges, or which use the DMI purely as a speedometer display.
  • kapitaen
    Senior Member

    • May 2010
    • 331
    • Germany
    • German + a little bit English
    • MSOR

    #2
    As far as I know, there are example files on Carlo's homepage.


    Jan

    Comment

    • Quacking Duck
      New Member
      • Dec 2024
      • 11
      • MSOR

      #3
      After an entire day of trial and error, I was able to get some of the routes and trains from the page you linked successfully working. Some of those trains are supposedly capable of operating in ETCS. However, it appears that none of the route patches on that page actually add ETCS capability to any route.

      In the description of the second video I linked in my original post, there are links to a route and a patch which supposedly have ETCS. However, after installing that route and the patch, I found that attempting to use the route causes a crash. Below are some of the last lines of the resulting log file.

      Code:
      Warning: Incomplete crossover : indices 1639 and 1644
      
      Warning: Expected end of file in C:\quack_open_rails\content_collections\etcs_italy\ORTSContent\ROUTES\ITALIA28\openrails\turntables.dat:line 19
      
      Error: System.IO.InvalidDataException: ShapeIndex not found
         at Orts.Formats.Msts.TrackShapes.Get(UInt32 targetShapeIndex) in C:\Jenkins\jobs\Open Rails Testing\workspace\Source\Orts.Formats.Msts\TrackSectionsFile.cs:line 280
         at Orts.Simulation.Turntable.InitializeAnglesAndTrackNodes() in C:\Jenkins\jobs\Open Rails Testing\workspace\Source\Orts.Simulation\Simulation\Turntables.cs:line 443
         at Orts.Simulation.Turntable.<>c__DisplayClass20_0.<.ctor>b__6() in C:\Jenkins\jobs\Open Rails Testing\workspace\Source\Orts.Simulation\Simulation\Turntables.cs:line 393
         at Orts.Parsers.Msts.STFReader.ParseBlock(IEnumerable`1 processors) in C:\Jenkins\jobs\Open Rails Testing\workspace\Source\Orts.Parsers.Msts\STFReader.cs:line 1560
         at Orts.Simulation.TurntableFile.<>c__DisplayClass0_0.<.ctor>b__0() in C:\Jenkins\jobs\Open Rails Testing\workspace\Source\Orts.Simulation\Simulation\Turntables.cs:line 57
         at Orts.Parsers.Msts.STFReader.ParseBlock(IEnumerable`1 processors) in C:\Jenkins\jobs\Open Rails Testing\workspace\Source\Orts.Parsers.Msts\STFReader.cs:line 1560
         at Orts.Simulation.TurntableFile..ctor(String filePath, String shapePath, List`1 movingTables, Simulator simulator) in C:\Jenkins\jobs\Open Rails Testing\workspace\Source\Orts.Simulation\Simulation\Turntables.cs:line 66
         at Orts.Simulation.Simulator.Start(CancellationToken cancellation) in C:\Jenkins\jobs\Open Rails Testing\workspace\Source\Orts.Simulation\Simulation\Simulator.cs:line 450
         at Orts.Viewer3D.Processes.GameStateRunActivity.Start(UserSettings settings, String acttype, String[] args) in C:\Jenkins\jobs\Open Rails Testing\workspace\Source\RunActivity\Viewer3D\Processes\GameStateRunActivity.cs:line 339
         at Orts.Viewer3D.Processes.GameStateRunActivity.Load() in C:\Jenkins\jobs\Open Rails Testing\workspace\Source\RunActivity\Viewer3D\Processes\GameStateRunActivity.cs:line 249
         at Orts.Viewer3D.Processes.LoaderProcess.Load() in C:\Jenkins\jobs\Open Rails Testing\workspace\Source\RunActivity\Viewer3D\Processes\LoaderProcess.cs:line 160
         at Orts.Viewer3D.Processes.LoaderProcess.DoLoad() in C:\Jenkins\jobs\Open Rails Testing\workspace\Source\RunActivity\Viewer3D\Processes\LoaderProcess.cs:line 140
         at Orts.Viewer3D.Processes.LoaderProcess.LoaderThread() in C:\Jenkins\jobs\Open Rails Testing\workspace\Source\RunActivity\Viewer3D\Processes\LoaderProcess.cs:line 111
         at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
         at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
         at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
         at System.Threading.ThreadHelper.ThreadStart()
      
      
      Loader: Time       = 00:00:20.1055672 ms
      Loader: Expected   = 34,316,980 bytes
      Loader: Actual     = 34,332,131 bytes
      Loader: Difference = 15,151 bytes (0.0%)
      
      Information: Game.PopState()
      I immediately checked the "turntables.dat" file, but it did not look incomplete as the log had suggested: for example, all parentheses appeared to be closed.

      What should be done next to diagnose the problem?

      Do there exist any other working routes which have ETCS?

      Comment

      • Quacking Duck
        New Member
        • Dec 2024
        • 11
        • MSOR

        #4
        After making the previous post, I was able to get the route working, though I am not sure, even now, exactly how my actions accomplished that. My best guess is that the thing which fixed it was adding "YOffset ( 0 )" to the second turntable in that turntable file, which appeared to be missing that field.

        Over the next hours, I tried to identify and fix various problems with the train control script, which, even with the patch applied[1], did not work as presumably intended.

        I have successfully fixed the transition between voltage levels. The problem was that the script called "SetPantographsDown()", which appears to have no actual effect in my testing. This caused all the subsequent steps of the transition to never be executed. I fixed this by replacing that call with the following:
        Code:
        SetPantographDown(1);
        SetPantographDown(2);
        SetPantographDown(3);
        SetPantographDown(4);
        The next significant problem, which I do not yet understand, is that the train control system uses the wrong speed limits under certain conditions. Specifically, though it works as expected when going from Rome to Naples along the high-speed line in "explore in activity mode", the speed limit enforced by the train protection system never goes above 80 km/h in timetable mode, despite the correct speed limits being shown in the track monitor. I expect this to take much more effort to diagnose and fix, as this does not appear to be a simple state machine like the voltage transition logic.

        [1] I have already tried both the original and patched versions of the script. Both versions have the problems I am referring to.

        Comment

        Working...