Changes for page Basic design

Last modified by nfl on 2025/01/30 12:05

From version 9.1
edited by csp
on 2014/06/23 14:18
Change comment: updated figure of Mutex_KH, fixed typo
To version 13.1
edited by sna
on 2014/08/06 03:51
Change comment: There is no comment for this version

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.csp
1 +XWiki.sna
Content
... ... @@ -54,3 +54,879 @@
54 54  When arriving on a station the train controller **must** first call the function //void railArrival(int train, int station)//. This starts the waiting timer for the train.
55 55  Next the train **must** wait for// int railDeparture(int train)// to return 1.
56 56  After the waiting has finished the controller can reach a final state and pass the control back to the train controller.
57 +
58 +=== Structure   ===
59 +
60 +|=(((
61 +{{{input int *_perm;}}}
62 +
63 +{{{output bool *_req[11];}}}
64 +
65 +{{{input int trainNum;}}}
66 +
67 +{{{input int depTrack;}}}
68 +
69 +{{{input int destTrack;}}}
70 +
71 +{{{input bool cleanup;}}}
72 +
73 +{{{input bool debug;}}}
74 +
75 +{{{output int arrTrack;}}}
76 +
77 +{{{int i_arrOnTrack;}}}
78 +
79 +{{{ }}}
80 +
81 +{{{initial state *_ST {}}}
82 +
83 +{{{    entry debug / 'println([trainNum][ST-ST] ... )';}}}
84 +
85 +{{{ }}}
86 +
87 +{{{    initial state waitForPerm {}}}
88 +
89 +{{{        entry / *_ST_4_req[trainNum] = true;}}}
90 +
91 +{{{        entry / *_LN_0_req[trainNum] = true;}}}
92 +
93 +{{{    }}}}
94 +
95 +{{{    --> gotPerm with (*_ST_4_perm == trainNum) & (*_LN_0_perm == trainNum)}}}
96 +
97 +{{{    --> backOff with (*_ST_4_perm == trainNum) | (*_LN_0_perm == trainNum);}}}
98 +
99 +{{{ }}}
100 +
101 +{{{    state backOff}}}
102 +
103 +{{{    --> backOff1;}}}
104 +
105 +{{{ }}}
106 +
107 +{{{    state backOff1 {}}}
108 +
109 +{{{ entry / *_ST_4_req[trainNum] = false;}}}
110 +
111 +{{{ entry / *_LN_0_req[trainNum] = false;}}}
112 +
113 +{{{    }}}}
114 +
115 +{{{    --> waitForPerm;}}}
116 +
117 +{{{ }}}
118 +
119 +{{{ final state gotPerm;}}}
120 +
121 +{{{}}}}
122 +
123 +{{{>-> Dep_*_ST;}}}
124 +
125 +{{{ }}}
126 +
127 +{{{state Dep_*_ST {}}}
128 +
129 +{{{    entry / 'railPoint(*,STRAIGHT)';}}}
130 +
131 +{{{    entry / 'railSignal(*_LN_0, FWD, RED)';}}}
132 +
133 +{{{    entry / 'railTrack(*_LN_0,FWD,trainNum,NORMAL)';}}}
134 +
135 +{{{    entry / 'railTrack(*_ST_4,FWD,trainNum,NORMAL)';}}}
136 +
137 +{{{    entry depTrack == 1 / 'railSignal(*_ST_1, FWD, GREEN)';}}}
138 +
139 +{{{    entry depTrack == 2 / 'railSignal(*_ST_2, FWD, GREEN)';}}}
140 +
141 +{{{    entry depTrack == 3 / 'railSignal(*_ST_3, FWD, GREEN)';}}}
142 +
143 +{{{    ..........}}}
144 +
145 +{{{  } --> *_LN_0 with 'railContact(*_LN_0,0)';}}}
146 +
147 +{{{ }}}
148 +
149 +{{{  state *_LN_0 {}}}
150 +
151 +{{{    entry / 'println("[trainNum][ST-ST] Entering *_LN_0")';}}}
152 +
153 +{{{    entry debug / 'println("[trainNum][ST-ST] Requesting permission for *_LN_1")';}}}
154 +
155 +{{{    entry depTrack == 1 / 'railSignal(*_ST_1, FWD, RED)';}}}
156 +
157 +{{{    entry depTrack == 2 / 'railSignal(*_ST_2, FWD, RED)';}}}
158 +
159 +{{{    entry depTrack == 3 / 'railSignal(*_ST_3, FWD, RED)';}}}
160 +
161 +{{{    entry / *_LN_1_req[trainNum] = true;}}}
162 +
163 +{{{ }}}
164 +
165 +{{{    region Travel:}}}
166 +
167 +{{{      initial state Entry}}}
168 +
169 +{{{      --> Continue with 'railContact(*_LN_0,0)' & (*_LN_1_perm == trainNum)}}}
170 +
171 +{{{      --> Slowdown with 'railContact(*_LN_0,0)';}}}
172 +
173 +{{{ }}}
174 +
175 +{{{      state Slowdown {}}}
176 +
177 +{{{        entry debug / 'println("[trainNum][ST-ST] Slowing down on *_LN_0")';}}}
178 +
179 +{{{        entry / 'railTrack(*_LN_0,FWD,trainNum,CAUTION)';}}}
180 +
181 +{{{      }}}}
182 +
183 +{{{      --> Waiting with 'railContact(*_LN_0,1)'}}}
184 +
185 +{{{      --> Continue with *_LN_1_perm == trainNum;}}}
186 +
187 +{{{ }}}
188 +
189 +{{{      state Waiting {}}}
190 +
191 +{{{        entry debug / 'println("[trainNum][ST-ST] Stopping on *_LN_0")';}}}
192 +
193 +{{{        entry / 'railTrackBrake(*_LN_0)';}}}
194 +
195 +{{{      }}}}
196 +
197 +{{{      --> Continue with *_LN_1_perm == trainNum;}}}
198 +
199 +{{{ }}}
200 +
201 +{{{      final state Continue {}}}
202 +
203 +{{{        entry debug / 'println("[trainNum][ST-ST] Continuing on *_LN_0")';}}}
204 +
205 +{{{        entry / 'railSignal(*_LN_0,FWD,GREEN)';}}}
206 +
207 +{{{        entry / 'railTrack(*_LN_0,FWD,trainNum,NORMAL)';}}}
208 +
209 +{{{        entry / 'railTrack(*_LN_1,FWD,trainNum,NORMAL)';}}}
210 +
211 +{{{        entry / 'railSignal(*_LN_1, FWD, RED)';}}}
212 +
213 +{{{      };}}}
214 +
215 +{{{ }}}
216 +
217 +{{{    region Cleanup:}}}
218 +
219 +{{{      initial state Entry}}}
220 +
221 +{{{      --> cleanup with 'railContact(*_LN_0,0)';}}}
222 +
223 +{{{ }}}
224 +
225 +{{{      final state cleanup {}}}
226 +
227 +{{{      entry debug / 'println("[trainNum][ST-ST] Entered *_LN_0 completely")';}}}
228 +
229 +{{{      entry / 'railTrackOff(*_ST_4)';}}}
230 +
231 +{{{      entry / *_ST_4_req[trainNum] = false;}}}
232 +
233 +{{{      };}}}
234 +
235 +{{{  }>-> *_LN_0_*_LN_1;}}}
236 +
237 +{{{ }}}
238 +
239 +{{{  state *_LN_0_*_LN_1}}}
240 +
241 +{{{  --> *_LN_1 with 'railContact(*_LN_1,0)';}}}
242 +
243 +{{{ }}}
244 +
245 +{{{// ...................}}}
246 +
247 +{{{// Set of track segment controlling states such as before}}}
248 +
249 +{{{// ...................}}}
250 +
251 +{{{ }}}
252 +
253 +{{{state *_LN_5 {}}}
254 +
255 +{{{    int perm_all_next_segments = false;}}}
256 +
257 +{{{    entry / 'println("[trainNum][ST-ST] Entering *_LN_5")';}}}
258 +
259 +{{{    entry / 'railSignal(*_LN_4, FWD, RED)';}}}
260 +
261 +{{{ }}}
262 +
263 +{{{    region Travel:}}}
264 +
265 +{{{      initial state Entry}}}
266 +
267 +{{{      --> Continue with 'railContact(*_LN_5,0)' & perm_all_next_segments}}}
268 +
269 +{{{      --> Slowdown with 'railContact(*_LN_5,0)';}}}
270 +
271 +{{{ }}}
272 +
273 +{{{      state Slowdown {}}}
274 +
275 +{{{        entry debug / 'println("[trainNum][ST-ST] Slowing down on *_LN_5")';}}}
276 +
277 +{{{        entry / 'railTrack(*_LN_5,FWD,trainNum,CAUTION)';}}}
278 +
279 +{{{      }}}}
280 +
281 +{{{      --> Waiting with 'railContact(*_LN_5,1)'}}}
282 +
283 +{{{      --> Continue with perm_all_next_segments;}}}
284 +
285 +{{{ }}}
286 +
287 +{{{      state Waiting {}}}
288 +
289 +{{{        entry debug / 'println("[trainNum][ST-ST] Stopping on *_LN_5")';}}}
290 +
291 +{{{        entry / 'railTrackBrake(*_LN_5)';}}}
292 +
293 +{{{      }}}}
294 +
295 +{{{      --> Continue with perm_all_next_segments;}}}
296 +
297 +{{{ }}}
298 +
299 +{{{      final state Continue {}}}
300 +
301 +{{{        entry debug / 'println("[trainNum][ST-ST] Continuing on *_LN_5")';        }}}
302 +
303 +{{{        entry i_arrOnTrack == 1 / 'railTrack(*_ST_1,FWD,trainNum,NORMAL)';}}}
304 +
305 +{{{        entry i_arrOnTrack == 2 / 'railTrack(*_ST_2,FWD,trainNum,NORMAL)';}}}
306 +
307 +{{{        entry i_arrOnTrack == 3 / 'railTrack(*_ST_3,FWD,trainNum,NORMAL)';}}}
308 +
309 +{{{        ----------}}}
310 +
311 +{{{        entry / arrTrack = i_arrOnTrack;}}}
312 +
313 +{{{      };}}}
314 +
315 +{{{ }}}
316 +
317 +{{{    region Cleanup:}}}
318 +
319 +{{{      initial state Entry}}}
320 +
321 +{{{      --> cleanup with 'railContact(*_LN_5,0)';}}}
322 +
323 +{{{ }}}
324 +
325 +{{{      final state cleanup {}}}
326 +
327 +{{{        entry debug / 'println("[trainNum][ST-ST] Entered *_LN_5 completely")';}}}
328 +
329 +{{{        entry / 'railTrackOff(*_LN_4)';}}}
330 +
331 +{{{        entry / *_LN_4_req[trainNum] = false;}}}
332 +
333 +{{{      };}}}
334 +
335 +{{{ }}}
336 +
337 +{{{    region Permissions:}}}
338 +
339 +{{{      initial state checking {}}}
340 +
341 +{{{        entry / *_ST_0_req[trainNum] = true;}}}
342 +
343 +{{{        entry destTrack == 1 | !cleanup / *_ST_1_req[trainNum] = true;}}}
344 +
345 +{{{        entry destTrack == 2 | !cleanup / *_ST_2_req[trainNum] = true;}}}
346 +
347 +{{{        entry destTrack == 3 | !cleanup / *_ST_3_req[trainNum] = true;}}}
348 +
349 +{{{      }}}}
350 +
351 +\\
352 +
353 +{{{      --> success with destTrack == 1 & *_ST_0_perm == trainNum & *_ST_1_perm == trainNum / i_arrOnTrack = 1}}}
354 +
355 +\\
356 +
357 +{{{      --> success with destTrack == 2 & *_ST_0_perm == trainNum & *_ST_2_perm == trainNum / i_arrOnTrack = 2}}}
358 +
359 +\\
360 +
361 +{{{      --> success with destTrack == 3 & *_ST_0_perm == trainNum & *_ST_3_perm == trainNum / i_arrOnTrack = 3}}}
362 +
363 +{{{      --> success with *_ST_0_perm == trainNum & *_ST_1_perm == trainNum / i_arrOnTrack = 1}}}
364 +
365 +{{{      --> success with *_ST_0_perm == trainNum & *_ST_2_perm == trainNum / i_arrOnTrack = 2}}}
366 +
367 +{{{      --> success with *_ST_0_perm == trainNum & *_ST_3_perm == trainNum / i_arrOnTrack = 3}}}
368 +
369 +
370 +\\
371 +
372 +{{{      --> resolving with *_ST_0_perm == trainNum | *_ST_3_perm == trainNum | *_ST_2_perm == trainNum | *_ST_1_perm == trainNum;}}}
373 +
374 +{{{ }}}
375 +
376 +{{{      state resolving}}}
377 +
378 +{{{      --> resolving1;}}}
379 +
380 +{{{ }}}
381 +
382 +{{{      state resolving1 {}}}
383 +
384 +{{{        entry / *_ST_0_req[trainNum] = false;}}}
385 +
386 +{{{        entry / *_ST_1_req[trainNum] = false;}}}
387 +
388 +{{{        entry / *_ST_2_req[trainNum] = false;}}}
389 +
390 +{{{        entry / *_ST_3_req[trainNum] = false;}}}
391 +
392 +{{{      }}}}
393 +
394 +{{{      --> checking;}}}
395 +
396 +{{{ }}}
397 +
398 +{{{      state success}}}
399 +
400 +{{{      --> success1;}}}
401 +
402 +{{{ }}}
403 +
404 +{{{      final state success1 {}}}
405 +
406 +{{{        entry !(i_arrOnTrack == 1) / *_ST_1_req[trainNum] = false;      }}}
407 +
408 +{{{        entry !(i_arrOnTrack == 2) / *_ST_2_req[trainNum] = false;}}}
409 +
410 +{{{        entry !(i_arrOnTrack == 3) / *_ST_3_req[trainNum] = false;}}}
411 +
412 +{{{        entry / perm_all_next_segments = true;}}}
413 +
414 +{{{      };}}}
415 +
416 +{{{  }>-> *_LN_5_*_ST;}}}
417 +
418 +{{{ }}}
419 +
420 +{{{  state *_LN_5_*_ST}}}
421 +
422 +{{{  --> Arr_*_ST with i_arrOnTrack == 1 & 'railContact(*_ST_1,0)'}}}
423 +
424 +{{{  --> Arr_*_ST with i_arrOnTrack == 2 & 'railContact(*_ST_2,0)'}}}
425 +
426 +{{{  --> Arr_*_ST with i_arrOnTrack == 3 & 'railContact(*_ST_3,0)';}}}
427 +
428 +{{{ }}}
429 +
430 +{{{  state Arr_*_ST {}}}
431 +
432 +{{{    entry / 'railSignal(*_LN_5, FWD, RED)';}}}
433 +
434 +{{{    entry / 'railTrackOff(*_LN_5)';}}}
435 +
436 +{{{    entry / 'railTrack(*_ST_0,FWD,trainNum,SLOW)';}}}
437 +
438 +{{{    entry i_arrOnTrack == 1 / 'railTrack(*_ST_1,FWD,trainNum,SLOW)';}}}
439 +
440 +{{{    entry i_arrOnTrack == 2 / 'railTrack(*_ST_2,FWD,trainNum,SLOW)';}}}
441 +
442 +{{{    entry i_arrOnTrack == 3 / 'railTrack(*_ST_3,FWD,trainNum,SLOW)';}}}
443 +
444 +{{{    entry / *_LN_5_req[trainNum] = false;}}}
445 +
446 +{{{ }}}
447 +
448 +{{{    initial state SlowEntry}}}
449 +
450 +{{{    --> Slow with i_arrOnTrack == 1 & 'railContact(*_ST_1,0)'}}}
451 +
452 +{{{    --> Slow with i_arrOnTrack == 2 & 'railContact(*_ST_2,0)'}}}
453 +
454 +{{{    --> Slow with i_arrOnTrack == 3 & 'railContact(*_ST_3,0)';}}}
455 +
456 +{{{ }}}
457 +
458 +{{{    state Slow {}}}
459 +
460 +{{{      entry / 'railTrackOff(*_ST_0)';}}}
461 +
462 +{{{      entry / *_ST_0_req[trainNum] = false;}}}
463 +
464 +{{{    }}}}
465 +
466 +{{{    --> Halt with i_arrOnTrack == 1 & 'railContact(*_ST_1,1)'}}}
467 +
468 +{{{    --> Halt with i_arrOnTrack == 2 & 'railContact(*_ST_2,1)'}}}
469 +
470 +{{{    --> Halt with i_arrOnTrack == 3 & 'railContact(*_ST_3,1)';}}}
471 +
472 +{{{ }}}
473 +
474 +{{{    final state Halt {}}}
475 +
476 +{{{      entry i_arrOnTrack == 1 / 'railTrackBrake(*_ST_1)';}}}
477 +
478 +{{{      entry i_arrOnTrack == 2 / 'railTrackBrake(*_ST_2)';}}}
479 +
480 +{{{      entry i_arrOnTrack == 3 / 'railTrackBrake(*_ST_3)';}}}
481 +
482 +{{{      entry i_arrOnTrack == 1 / 'railArrival(trainNum, *_ST_1)';}}}
483 +
484 +{{{      entry i_arrOnTrack == 2 / 'railArrival(trainNum, *_ST_2)';}}}
485 +
486 +{{{      entry i_arrOnTrack == 3 / 'railArrival(trainNum, *_ST_3)';}}}
487 +
488 +{{{    };}}}
489 +
490 +{{{  }}}}
491 +
492 +{{{  >-> done;}}}
493 +
494 +{{{ }}}
495 +
496 +{{{  state done}}}
497 +
498 +{{{  --> reallyDone with 'railDeparture(trainNum)';}}}
499 +
500 +{{{ }}}
501 +
502 +{{{  final state reallyDone;}}}
503 +)))|=(((
504 +~/~/ All permissiions variables
505 +
506 +~/~/ All request variables
507 +
508 +~/~/ Train number
509 +
510 +~/~/ Departure track number
511 +
512 +~/~/ Destination track number
513 +
514 +~/~/ Cleanup flag for selecting the track of destination
515 +
516 +~/~/ Debug flag for additional output
517 +
518 +~/~/ Arrival track
519 +
520 +~/~/ Variable (arrival track) for selecting correct station elements
521 +
522 +
523 +
524 +~/~/ Handles departing from a station
525 +
526 +~/~/ Additional output for debugging
527 +
528 +
529 +
530 +~/~/ State, which set requests for needed tracks
531 +
532 +
533 +
534 +
535 +
536 +
537 +
538 +~/~/ Transition for received **all** needed permissions
539 +
540 +~/~/ Tranisition for received **some** needed permissions
541 +
542 +
543 +
544 +~/~/ State for waiting an additional Tick
545 +
546 +
547 +
548 +
549 +
550 +~/~/ State, which releases the requests for needed tracks
551 +
552 +
553 +
554 +
555 +
556 +
557 +
558 +~/~/ Transition to trying the requesting again
559 +
560 +
561 +
562 +
563 +
564 +
565 +
566 +~/~/ Transition to the departure state
567 +
568 +
569 +
570 +~/~/ State, which handles the train departure
571 +
572 +~/~/ Set of entry-Actions to set tracks, points and signals according to depTrack
573 +
574 +
575 +
576 +
577 +
578 +
579 +
580 +
581 +
582 +
583 +
584 +
585 +
586 +
587 +~/~/ Transition to next track segment, if contact is readed
588 +
589 +
590 +
591 +~/~/ State for handling the train on track *_LN_0
592 +
593 +~/~/ Outputs for debugging
594 +
595 +
596 +
597 +~/~/ Entry-Actions to set the previous signals to RED
598 +
599 +
600 +
601 +
602 +
603 +~/~/ Requesting the next segment
604 +
605 +
606 +
607 +~/~/ Region for handling train driving
608 +
609 +
610 +
611 +~/~/ Transition to continuing state, if permitted
612 +
613 +~/~/ Transition to slowing down else
614 +
615 +
616 +
617 +~/~/ State for slowing down
618 +
619 +~/~/ Addtitional output for debugging
620 +
621 +~/~/ Entry-Action for slowing down the train
622 +
623 +
624 +
625 +~/~/ Transition to waiting state
626 +
627 +~/~/ Transition to continuing state, if permitted
628 +
629 +
630 +
631 +~/~/ Waiting state
632 +
633 +~/~/ Addtitional output for debugging
634 +
635 +~/~/ Entry-Action for stopping the train
636 +
637 +
638 +
639 +~/~/ Tranisition to continuing state
640 +
641 +
642 +
643 +~/~/ State to continuing driving on the track
644 +
645 +~/~/ Addtitional output for debugging
646 +
647 +~/~/ Entry-Actions to set tracks and signals for driving
648 +
649 +
650 +
651 +
652 +
653 +
654 +
655 +
656 +
657 +
658 +
659 +~/~/ Region for handling cleanup-functionalities
660 +
661 +
662 +
663 +~/~/ Transition to cleanup state
664 +
665 +
666 +
667 +~/~/ Cleanup state
668 +
669 +~/~/ Addtitional output for debugging
670 +
671 +~/~/ Entry-Action to switching off the previous track
672 +
673 +~/~/ Entry-Action to release the previous track
674 +
675 +
676 +
677 +~/~/ Transition to transitional state
678 +
679 +
680 +
681 +~/~/ Transitional state
682 +
683 +~/~/ Transition to next track segment, if contact is readed
684 +
685 +
686 +
687 +
688 +
689 +
690 +
691 +
692 +
693 +
694 +
695 +~/~/ State for entering a station
696 +
697 +~/~/ Variable for checking all needed permissions
698 +
699 +~/~/ Output
700 +
701 +~/~/ Setting signal to RED
702 +
703 +
704 +
705 +~/~/ Region for handling train driving
706 +
707 +
708 +
709 +~/~/ Transition to continuing state, if permitted
710 +
711 +~/~/ Transition to slowing down else
712 +
713 +
714 +
715 +~/~/ State for slowing down
716 +
717 +~/~/ Addtitional output for debugging
718 +
719 +~/~/ Entry-Action for slowing down the train
720 +
721 +
722 +
723 +~/~/ Transition to waiting state
724 +
725 +~/~/ Transition to continuing state, if permitted
726 +
727 +
728 +
729 +~/~/ Waiting state
730 +
731 +~/~/ Addtitional output for debugging
732 +
733 +~/~/ Entry-Action for stopping the train
734 +
735 +
736 +
737 +~/~/ Tranisition to continuing state
738 +
739 +
740 +
741 +~/~/ State to continuing driving on the track
742 +
743 +~/~/ Addtitional output for debugging
744 +
745 +~/~/ Set of entry-Actions for setting tracks, points and signals according to i_arrOnTrack
746 +
747 +
748 +
749 +
750 +
751 +
752 +
753 +~/~/ Setting the arrival track (output)
754 +
755 +
756 +
757 +
758 +
759 +~/~/ Region for handling cleanup-functionalities
760 +
761 +
762 +
763 +~/~/ Transition to cleanup state
764 +
765 +
766 +
767 +~/~/ Cleanup state
768 +
769 +~/~/ Addtitional output for debugging
770 +
771 +~/~/ Entry-Action to switching off the previous tracks
772 +
773 +~/~/ Entry-Action to release the previous tracks
774 +
775 +
776 +
777 +
778 +
779 +~/~/ Region for handling permissions of all needed tracks
780 +
781 +~/~/ State for requesting all needed tracks according to destination track and cleanup-Flag
782 +
783 +
784 +
785 +
786 +
787 +
788 +
789 +
790 +
791 +
792 +
793 +~/~/ Transitions for permitted tracks match wished tracks
794 +
795 +
796 +
797 +
798 +
799 +~/~/ Transitions for permitted tracks don't match wished tracks
800 +
801 +
802 +
803 +
804 +
805 +~/~/ Transition for not all tracks permitted
806 +
807 +
808 +
809 +~/~/ State for waiting an additional tick
810 +
811 +
812 +
813 +
814 +
815 +~/~/ State for releasing track requests
816 +
817 +
818 +
819 +
820 +
821 +
822 +
823 +
824 +
825 +
826 +
827 +~/~/ Transition for trying the requesting again
828 +
829 +
830 +
831 +~/~/ State for waiting an additional tick
832 +
833 +
834 +
835 +
836 +
837 +~/~/ State for releasing not used track requests and
838 +
839 +
840 +
841 +
842 +
843 +
844 +
845 +~/~/ Settting perm_all_next_segments to true
846 +
847 +
848 +
849 +~/~/ Transition to station entry states
850 +
851 +
852 +
853 +~/~/ State waiting for station entry
854 +
855 +
856 +
857 +
858 +
859 +
860 +
861 +
862 +
863 +~/~/ State for setting tracks, points and signals according to i_arrOnTrack
864 +
865 +~/~/ and releasing previous track request
866 +
867 +
868 +
869 +
870 +
871 +
872 +
873 +
874 +
875 +
876 +
877 +
878 +
879 +
880 +
881 +~/~/ State for slowing down, if train completely on track
882 +
883 +
884 +
885 +
886 +
887 +
888 +
889 +
890 +
891 +~/~/ State for switching off previous track and releasing the request
892 +
893 +
894 +
895 +
896 +
897 +
898 +
899 +~/~/ Transitions to halt states, if train at second contact of a track
900 +
901 +
902 +
903 +
904 +
905 +
906 +
907 +
908 +
909 +~/~/ Entry-Actions for braking the train on correct track
910 +
911 +
912 +
913 +
914 +
915 +~/~/ Entry-Actions for waiting for timer on correct track
916 +
917 +
918 +
919 +
920 +
921 +
922 +
923 +
924 +
925 +
926 +
927 +
928 +
929 +
930 +
931 +~/~/ Transition to final state, if timer is ready
932 +)))
Confluence.Code.ConfluencePageClass[0]
Id
... ... @@ -1,1 +1,1 @@
1 -9471637
1 +9471652
URL
... ... @@ -1,1 +1,1 @@
1 -https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/SS14Railway/pages/9471637/Basic design
1 +https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/SS14Railway/pages/9471652/Basic design