Simplex Train Detection System

This repository contains the implementation work of my Master's thesis, The Simplex Architecture in Practice - Runtime Assurance for Safety-Critical Railway Systems. It presents an implementation of the Simplex Architecture for train detection systems.

Instructions

This application is the decision module of the Simplex system. It sits between the subsystems (trusted and untrusted controller) and the interlocking. For communication with all participants it uses the EULYNX Live Lab gRPC-RaSTA bridge. In the config, you need to specify:

  • the address of the interlocking
  • the IP and port on which the subsytems connect
  • A decision strategy (unless you are debugging something, you should leave it as "TryUnreliable")
  • RaSTA ID: This parameter is required for the RaSTA bridge
  • two timeouts: The general message timeout and the interlocking connection timeout

The connection process is as follows:

  • Start the Decision Module
  • Start the subsystems, so they connect to the decision module
  • Start the interlocking, so the decision module connects to it after the ixl_timeout

These dependencies could probably be resolved by running the decision module in a container setup with the other applications.