Changes for page Interfaces and Rulesets
Last modified by cbu on 2025/01/30 12:05
From version 4.1
edited by nbw
on 2014/06/22 18:25
on 2014/06/22 18:25
Change comment:
There is no comment for this version
Summary
-
Page properties (3 modified, 0 added, 0 removed)
-
Objects (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Parent
-
... ... @@ -1,0 +1,1 @@ 1 +SS14Railway.Railway Project (summer term 2014).Documentation.SCChart Controller.WebHome - Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. nbw1 +XWiki.cbu - Content
-
... ... @@ -9,8 +9,8 @@ 9 9 * Each train has a trainnumber.\\ 10 10 ** Apart from identification the trainnumber is used for prioritization, when multiple trains compete for the same track. 11 11 ** Lower numbers mean higher priorities, e.g. train 0 has the highest priority. 12 -** Priorities can't be changed dynamicly. 13 -* Each train has one home-track at each station.12 +** Priorities can't be changed dynamically. 13 +* Each train has one home-track. 14 14 * For binding purposes the variable should have the name **trainNum**. 15 15 16 16 The numbering is derived from the initial positions of the trains. ... ... @@ -78,7 +78,7 @@ 78 78 79 79 === Tracks === 80 80 81 -* Stopping on tracks without contacts is permitted.81 +* Stopping on tracks without contacts is **not** allowed! 82 82 * Tracks without contacts must be reserved and used with an adjacent "safe" track. 83 83 * When requesting multiple locks, deadlocks must be prevented 84 84 * Three different speed settings are available, adjusted to the individual trains: ... ... @@ -93,44 +93,47 @@ 93 93 94 94 === Stations === 95 95 96 -* Each station has one drive-through track for each possible direction: 96 +* --Each station has one drive-through track for each possible direction:-- 97 97 98 98 |=(% style="margin-left: 60.0px;" %)(% style="margin-left: 60.0px;" %) 99 99 ((( 100 -station 100 +--station-- 101 101 )))|=(% style="margin-left: 30.0px;" %)(% style="margin-left: 30.0px;" %) 102 102 ((( 103 -drive-through track 103 +--drive-through track-- 104 104 ))) 105 105 (% style="margin-left: 30.0px;" %)|(% style="margin-left: 30.0px;" %)(% style="margin-left: 30.0px;" %) 106 106 ((( 107 -IC_station 107 +--IC_station-- 108 108 )))|(% style="margin-left: 30.0px;" %)(% style="margin-left: 30.0px;" %) 109 109 ((( 110 -IC_ST_1 110 +--IC_ST_1-- 111 111 ))) 112 112 (% style="margin-left: 30.0px;" %)|(% style="margin-left: 30.0px;" %)(% style="margin-left: 30.0px;" %) 113 113 ((( 114 -OC_station 114 +--OC_station-- 115 115 )))|(% style="margin-left: 30.0px;" %)(% style="margin-left: 30.0px;" %) 116 116 ((( 117 -OC_ST_3 117 +--OC_ST_3-- 118 118 ))) 119 119 (% style="margin-left: 30.0px;" %)|(% style="margin-left: 30.0px;" %)(% style="margin-left: 30.0px;" %) 120 120 ((( 121 -KH_station 121 +--KH_station-- 122 122 )))|(% style="margin-left: 30.0px;" %)(% style="margin-left: 30.0px;" %) 123 123 ((( 124 -KH_ST_5 124 +--KH_ST_5-- 125 125 ))) 126 126 (% style="margin-left: 30.0px;" %)|(% colspan="1" style="margin-left: 30.0px;" %)(% colspan="1" style="margin-left: 30.0px;" %) 127 127 ((( 128 -KH_station(r) 128 +--KH_station(r)-- 129 129 )))|(% colspan="1" style="margin-left: 30.0px;" %)(% colspan="1" style="margin-left: 30.0px;" %) 130 130 ((( 131 -KH_ST_1 131 +--KH_ST_1-- 132 132 ))) 133 133 134 +* If the preferred station track is blocked the trains can switch to any other free track. 135 +While **cleanup** is active the trains on IC_ST_1, OC_ST_3 or KH_ST_1 circle until all tracks are done. 136 + 134 134 == Rulesets == 135 135 136 136 === Logging === ... ... @@ -149,9 +149,11 @@ 149 149 150 150 === Deadlock Prevention === 151 151 152 -* When attempting to reserve more than one segment ( Entering a station, passing a junction) a separate protocol for deadlock prevention must be adhered to.155 +* When attempting to reserve more than one segment (entering a station, passing a junction) a separate protocol for deadlock prevention must be adhered to. 153 153 * In each tick the controller must check if only partial permissions were granted. 154 154 * If partial permission was granted the train waits for one tick and releases all locks. 155 155 * In the following tick the locks are requested again. 156 156 * As a special case the controllers passing through KIO_LN_0 or KIO_LN_1 must wait an additional tick after releasing the requests. 157 -* A sample controller can be found in the repository at [[/doc/deadlocks/resolve_deadlock.sct>>url:https://git.rtsys.informatik.uni-kiel.de/projects/PRAK/repos/14ss-railway/browse/doc/deadlocks/resolve_deadlock.sct||shape="rect"]] 160 +* Another special case for the KHIC-Controller: A train is at KIO_LN_0 and requests OC_ST_4, IC_ST_0 and the tracks of the IC-Station. If the train gets the permission for OC_ST_4 but not for IC_ST_0 and any of the tracks of the IC-Station, the controller waits for an additional tick before re-requesting, so that a train with a lower priority, which travels along the OC-Circle, can pass. It was observed, that this change makes the traffic more fluent. 161 +* A sample controller can be found in the repository at [[/doc/deadlocks/resolve_deadlock.sct>>url:https://git.rtsys.informatik.uni-kiel.de/projects/PRAK/repos/14ss-railway/browse/doc/deadlocks/resolve_deadlock.sct||shape="rect"]] 162 +* Further deadlock avoidance is implemented in the ICKHS and OCKHS controllers. If the circle ICKH-KHIC-Circle (OCKH-KHOC-Circle) is full (which means, that all trains have the status "brake"), then one of the trains travels the IC-Circle (OC-Circle), to unlock the deadlock. Our tests have shown, that it is still possible, that the same train has to unlock the deadlock again, so that it never reaches its destination, but at least the other trains reach their destination. This concept could also be adapted to the OCOC and ICIC controllers. Use with care, as these controllers have not been tested to exhaust. Basically the controller wraps the ICKH and ICIC (OCKH and OCOC) controller. If the circle is full (checked at hostcode.c), the slightly changed ICKH (OCKH) controller is aborted or not even started, and instead, the ICIC (OCOC) controller is started. At the hostcode.c file, there is an array, which keeps track of the status of all tracks, where 0 means OFF, 1 means REV or FWD and 2 means BRAKE. To keep it simple, the tracks, where the 11-trains are initially standing are initialized with 2.
- Confluence.Code.ConfluencePageClass[0]
-
- Id
-
... ... @@ -1,1 +1,1 @@ 1 -9471 2851 +9471016 - URL
-
... ... @@ -1,1 +1,1 @@ 1 -https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/SS14Railway/pages/9471 285/Interfaces and Rulesets1 +https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/SS14Railway/pages/9471016/Interfaces and Rulesets