Trainsim

Simulation environment for railway equipment testing in safety

Railway equipment testing
The request

GE Transportation, the division dedicated to railway signaling systems of the well-known multinational corporation, had the necessity to implement a complex scenario simulation system for safely testing railway equipment.

The simulator would have to run on more nodes (industrial PCs and/or on devices) with very strict requirements for simulation status synchronization (synchronization latencies of less than 10 ms).

Moreover, it was necessary for the simulator nodes to also work on Windows computers, and that the library could be used by C++, Python, and LISP.

Challenges faced
Solutions implemented

Requirements
  • Simulate scenarios between multiple nodes
  • Linux and Windows support
  • Synchronization between nodes within 10ms
Develer’s contribution
  • Used ZeroMQ as a transport
  • Optimized systems by using C++, multithreading, and zero-copy techniques
  • Binding from C++ to Python and LISP
Results
  • Extremely low latencies in compliance with system requirements
  • Cross-platform software
Advantages introduced

We used the ZeroMQ library to implement the transport protocol for synchronization between nodes. The publish/subscribe and request/reply mechanisms implemented by ZeroMQ proved to be very efficient. During the initial phase of architectural study, we made important optimizations by using a completely multithreaded approach with lock-less and zero-copy data synchronization.

The use of C++ also proved to be advantageous while writing the bindings since we could easily connect it to Python and LISP, the client’s preferred languages for writing the nodes at the application level.

Partner with us to overcome your IT challenges.

Ask for a quote
Advantages of our approach

We’ve chosen a performance-oriented approach: starting from a clean slate, we first worked to obtain the performance requirements for the easy situations, and then during development, each performance regression caused by new features was considered a block to overcome before moving on.

Advantages of open source

The ZeroMQ library was an important element which proved to be a perfect transport for the application in question, combining low latencies, a thread-safe architecture, and full portability between the Linux world and the Windows world.

Client

General Electric, multinational manufacturer of railway signaling systems

Staff

“The use of ZeroMQ and multithreading has allowed us to reach and maintain important performance targets regarding communication latency between the nodes right from the start.”

Mirko Damiani Embedded developer @Develer