<
From version < 17.1 >
edited by nbw
on 2014/06/22 18:54
To version < 16.1 >
edited by krat
on 2014/06/18 15:19
>
Change comment: There is no comment for this version

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.nbw
1 +XWiki.krat
Content
... ... @@ -1,5 +1,187 @@
1 -To get informations about general controller design and composition of the different SCCharts please refer to [[doc:Basic design]].
1 +== Trains ==
2 2  
3 -For more informations about the defined Interfaces and the rulesets, the group has agreed upon, see [[doc:Interfaces and Rulesets]].
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.
4 4  
5 -Informations about building the controller and the C interface are presented at [[doc:Interfacing and Building]].
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 +
Confluence.Code.ConfluencePageClass[0]
Id
... ... @@ -1,1 +1,1 @@
1 -9471515
1 +9471043
URL
... ... @@ -1,1 +1,1 @@
1 -https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/SS14Railway/pages/9471515/Documentation
1 +https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/SS14Railway/pages/9471043/Documentation