Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Segment1 Track, 2 Contacts, 1 Signal
Segment_bid (bi-directional)1 Track, 2 Contacts, 2 Signals
Track1 Track
Track_bid1 Track
Point_in1 Point with 2 incoming and 1 outgoing tracks
Point_out1 Point with 1 incoming and 2 outgoing tracks
Point_bid1 Point, 2 to 1 bi-directional point
Cross_in1 Track, 2 Points, has 2 incoming, 1 outgoing and 1 bi-directional track where incoming trains get on the main track and outgoing come from the side track
Cross_out1 Track, 2 Points, has 1 incoming, 2 outgoing and 1 bi-directional track where outgoing trains come from the main track and incoming go to the side track

The differenciation differentiation of bi-directional and uni-directional Elements is made to have simpler parts for the unidirectional parts.

With these we can model the railway system by connecting these parts in terms of mapping input and output values according to the connections. To fullfill fulfill the tasks/rules every connection (uni-directional) has the following variables, where in and out descibes describes if it's an input/output of the previous part in travel direction:

outputint

requestLockFor > 0

id of the track to request the lock for

-1: get next lock (not supported if nondeterministic)

outputintrequestLockTrainwhen requestLockFor!=0 the id of the incoming train
inputboolLockedthe next part is locked and expects an incoming train, lock is
releaded
released when train reaches the next track
inputboolBranchedthe connection to the next "part"(save track) is branched (to set the signal)
inputboolPullSpeedthe speed to synchronize to have one speed for all used tracks

To have a dependency cycle free model there has to be a part in each cycle that writes each of these in order and first read afterwards.