Changes for page Project goals
Last modified by Alexander Schulz-Rosengarten on 2025/01/30 12:05
Summary
-
Page properties (2 modified, 0 added, 0 removed)
-
Objects (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki.c sp1 +XWiki.cbu - Content
-
... ... @@ -91,7 +91,7 @@ 91 91 92 92 == **Implementation in short:** == 93 93 94 -The main idea is, that we have a universal model of the track segments. From these single track segments, track sections, that connect train stations are modeled and from those track sections, all final schedules for the trains should be build. On each track segment, there should be at most one train: In order to drive over a track, a train must request this track, and afterwards it must free it again (details below). If two trains request the same track section, the priority, which is derived from the train number, decides, which train gets the track section. A train must request all tracks until the next possibility to stop an dwait in order to avoid collisions. If the train does not get all track segments, it must free them again in order to avoid deadlocks or delays of other trains. Deadlocks might occur at the exits of all train stations, and additionally, if one train with a low priority exits the Kicking-Horse-path while another train with a higher priority sends an entry-request. It remains to be seen, if additional deadlocks occur. Deadlocks can be resolved by using a superior Mutex-Controller.94 +The main idea is, that we have a universal model of the track segments. From these single track segments, track sections, that connect train stations are modeled and from those track sections, all final schedules for the trains should be build. On each track segment, there should be at most one train: In order to drive over a track, a train must request this track, and afterwards it must free it again (details below). If two trains request the same track section, the priority, which is derived from the train number, decides, which train gets the track section. A train must request all tracks until the next possibility to stop an wait in order to avoid collisions. If the train does not get all track segments, it must free them again in order to avoid deadlocks or delays of other trains. Deadlocks might occur at the exits of all train stations, and additionally, if one train with a low priority exits the Kicking-Horse-path while another train with a higher priority sends an entry-request. It remains to be seen, if additional deadlocks occur. Deadlocks can be resolved by using a superior Mutex-Controller. 95 95 96 96 == **Implementation in detail:** == 97 97 ... ... @@ -102,45 +102,35 @@ 102 102 **Sample Pass for one Track (in pseudocode)** 103 103 104 104 {{code linenumbers="true"}} 105 -scchart Default_Pass { 106 - bool perm_next_Segment; 107 - initial state prev 108 - --> Gleissegment with 'contact(Segment,0)'; 109 - state Gleissegment { 110 - entry / 'req(next_Segment)'; 111 - entry / 'setSignal(prevSegment, red)'; 112 - initial state Entry 113 - --> Continue with 'contact(Segment,0)' & perm_next_Segment 114 - --> Slowdown with 'contact(Segment,0)'; 115 - state Slowdown { 116 - entry / 'setSpeed(Segment,SLOW)'; 117 - } 118 - --> Waiting with 'contact(Segment,1)' 105 +state Foo 106 +--> Gleissegment with contact(Segment,0) 107 +state Gleissegment { 108 + entry / req(next_Segment); 109 + entry / setSignal(prevSegment, red); 110 + 111 + inital state Entry 112 + --> Continue with contact(Segment,0) & perm_next_Segment 113 + --> Slowdown with contact(Segment,0); 114 + 115 + state Slowdown { 116 + entry / setSpeed(Segment,SLOW); 117 + } --> Waiting with contact(Segment,1) 119 119 --> Continue with perm_next_Segment; 120 - state Waiting { 121 - entry / 'setSpeed(Segment,BRAKE)'; 122 - } 123 - --> Continue with perm_next_Segment; 124 - state Continue { 125 - entry / 'setSignal(Segment,green)'; 126 - entry / 'setSpeed(Segment,full)'; 127 - entry / 'setSpeed(nextSegment,full)'; 128 - entry / 'setSignal(nextSegment, red)'; 129 - } 130 - --> leave immediate; 131 - final state leave; 132 - region: 133 - initial state Entry 134 - --> cleanup with 'contact(Segment, 0)'; 135 - state cleanup { 136 - entry / 'free(prevSegment)'; 137 - entry / 'setSpeed(prevSegment,OFF)'; 138 - } 139 - --> done immediate; 140 - final state done; 141 - } 142 - >-> next with 'contact(nextSegment, 0)'; 143 - state next; 119 + 120 + state Waiting { 121 + entry / setSpeed(Segment,BRAKE); 122 + } --> Continue with perm_next_Segment; 123 + 124 + state Continue { 125 + entry / setSignal(Segment,green); 126 + entry / setSpeed(Segment,full); 127 + entry / setSpeed(nextSegment,full); 128 + entry / setSignal(nextSegment, red); 129 + entry / free(prevSegment) 130 + entry / setSpeed(prevSegment,OFF); 131 + }--> leave immediate; 132 + 133 + final state leave; 144 144 } 145 145 {{/code}} 146 146
- Confluence.Code.ConfluencePageClass[0]
-
- Id
-
... ... @@ -1,1 +1,1 @@ 1 -947078 41 +9470782 - URL
-
... ... @@ -1,1 +1,1 @@ 1 -https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/SS14Railway/pages/947078 4/Project goals1 +https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/SS14Railway/pages/9470782/Project goals