<
From version < 16.1 >
edited by krat
on 2014/06/18 15:19
To version < 19.2 >
edited by Alexander Schulz-Rosengarten
on 2023/07/13 12:23
>
Change comment: Update document after refactoring.

Summary

Details

Page properties
Parent
... ... @@ -1,0 +1,1 @@
1 +SS14Railway.Railway Project (summer term 2014).WebHome
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.krat
1 +XWiki.als
Content
... ... @@ -1,187 +1,4 @@
1 -== Trains ==
1 +The documentation of the Railway-Project is separated into two parts.
2 2  
3 -Each train has a trainnumber. The trainnumber is for prioritization, when multiple trains compete for the same track. Lower numbers mean higher priorities, e.g. train 0 has the highest priority. Priorities can't be changed dynamicly.
4 -Each train has one home-track at each station.
5 -
6 -=== Train numbering ===
7 -
8 -Variable **trainNum** is used to identify trains.
9 -
10 -The assignment of numbers to trains is chosen as followed
11 -
12 -|=(((
13 -trainNum
14 -)))|=(((
15 -Starting track
16 -)))
17 -|(((
18 -0
19 -)))|(((
20 -KH_ST_1
21 -)))
22 -|(((
23 -1
24 -)))|(((
25 -KH_ST_2
26 -)))
27 -|(((
28 -2
29 -)))|(((
30 -KH_ST_3 (r)
31 -)))
32 -|(((
33 -3
34 -)))|(((
35 -KH_ST_4 (r)
36 -)))
37 -|(((
38 -4
39 -)))|(((
40 -IC_ST_3
41 -)))
42 -|(((
43 -5
44 -)))|(((
45 -IC_ST_2
46 -)))
47 -|(((
48 -6
49 -)))|(((
50 -OC_ST_2
51 -)))
52 -|(((
53 -7
54 -)))|(((
55 -OC_ST_1
56 -)))
57 -|(((
58 -8
59 -)))|(((
60 -KH_ST_5
61 -)))
62 -|(((
63 -9
64 -)))|(((
65 -IC_ST_1
66 -)))
67 -|(((
68 -10
69 -)))|(((
70 -OC_ST_3
71 -)))
72 -
73 -== Logging ==
74 -
75 -Variable **debug** indicates verbose logging.
76 -
77 -Prefix of all log messages must be :** [trainnum][ST-ST]**
78 -
79 -Use **println** function to produce textual output. Do not use printf or other io functions, because output may not be flushed correctly.
80 -
81 -== Tracks ==
82 -
83 -Stopping on tracks without contacts is permitted. Therefore they must be reserved and used with an adjacent track.
84 -Each station has one drive-through track for each possible direction:
85 -
86 -|=(((
87 -station
88 -)))|=(((
89 -drive-through track
90 -)))
91 -|(((
92 -IC_station
93 -)))|(((
94 -IC_ST_1
95 -)))
96 -|(((
97 -OC_station
98 -)))|(((
99 -OC_ST_3
100 -)))
101 -|(((
102 -KH_station
103 -)))|(((
104 -KH_ST_5
105 -)))
106 -|(% colspan="1" %)(% colspan="1" %)
107 -(((
108 -KH_station(r)
109 -)))|(% colspan="1" %)(% colspan="1" %)
110 -(((
111 -KH_ST_1
112 -)))
113 -
114 -=== Station-to-Station ===
115 -
116 -Fuctions **void railArrival(int train, int station)** and **int railDeparture(int train)** should be used at the end of every Station-to-Station-Controller.
117 -
118 -At the end of every Station-to-Station-Controller the trains should stand in one station, because every controller starts with the train in standstill.
119 -
120 -Contact reading in triggers should only used when it is clearly determined which train will fire the contact.
121 -
122 -=== TrainController ===
123 -
124 -Train-Schedules should be modelled by putting together the Station-to-Station-Controllers for every train in individual regions.
125 -
126 -=== Speed: ===
127 -
128 -* SLOW: for the stations
129 -* CAUTION: for slowdown (and optional points)
130 -* NORMAL: for the other tracks
131 -
132 -== Codestyle ==
133 -
134 -Use entry-/exit-actions instead of actions on transitions, if possible.
135 -If using hostcode, only use functions delivered by our own C-Interface and not the Höhrmann-API.
136 -
137 -== Mutual Exclusion ==
138 -
139 -bool <track>_req[<trainAmount>] contains the requests for each track and train. Before the availability of arrays, we used bool <train>_<track>_req.
140 -int <track>_perm contains the trainnumber of the train, who is allowed to drive on <track>.
141 -
142 -== Deadlock Prevention ==
143 -
144 -An example controller for deadlock prevention is located in// rail-repo: docs/deadlocks/resolve_deadlock.sct//
145 -
146 -Sidings should only be used in one direction.
147 -
148 -Trains trying to leave a station in order to use KIO_LN_0 or KIO_LN_1 should, if they do not receive the locks for all segments, release them for two ticks.
149 -
150 -= C Controller =
151 -
152 -The C controller wraps the basic railway interface and creates an correct environment to run the generated controller.
153 -
154 -== Make Script ==
155 -
156 -A make script written in Python is located in rail-repo: code/make.py
157 -
158 -This script will compiel the whole controller for simulation or real railway and optionally executes it.//
159 -//
160 -
161 -Calling**// python// //make.py//** without further command-line arguments will print a help message with all available command line options.
162 -
163 -Make Script Features:
164 -
165 -* Header-file will be included automatically
166 -
167 -Results are located in //rail-repo: code/build///
168 -
169 -== Railway Interface ==
170 -
171 -Provided functions are defined in// rail-repo: code/hostcode/controller.h//
172 -
173 -== Interaction ==
174 -
175 -=== Quit, Pause and Cleanup ===
176 -
177 -Quit, pause and cleanup functionality is handled in the c interface.
178 -
179 -**CTRL+C** (SIGINT)** **quits the controller
180 -
181 -**CTRL+\** (SIGQUIT)** **cleans up
182 -
183 -**CTRL+Z **(SIGSTP) pauses and continues
184 -
185 -
186 -
187 -
3 +1. [[Modelling of the controller logic in SCCharts>>doc:SCChart Controller]].
4 +1. [[C code environment to connect to the railway and execute the compiled SCChart controller>>doc:C Controller]].
Confluence.Code.ConfluencePageClass[0]
Id
... ... @@ -1,1 +1,1 @@
1 -9471043
1 +9470891
URL
... ... @@ -1,1 +1,1 @@
1 -https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/SS14Railway/pages/9471043/Documentation
1 +https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/SS14Railway/pages/9470891/Documentation