DEADLINE 13.05.
At the end of this summer term a railway controller modelled in SCCharts should exist that is able to control the model railway installation. What exactly control means is up to you!
Define your project goals! Therefore...
- Define the desired capabilities of your controller.
- Devide your project in several subprojects. Organize the whole team in subteams and determine who is responsible for what.
- Define interfaces between the subteams and/or components the subteams are responsible of.
- Create a detailed roadmap with milestones for each subproject.
You are going to present your plan in a short presentation (latex beamer preferred) in the following week, 13.05. 12:30. The presentation should last 30 min.
Remember, you are going to present your controller at the end of the summer term! Getting this task done right is a very important step to succeed with your controller and this project!
The following goals were defined:
- At least 5 trains can drive on the track at the same time
- A "cleanup" function for trains should drive all trains to their original position
- Our test scenarios should work (see Test-Scenarios)
- The trains slow down before braking
- All signals are working correctly
- Gates should close, when a train is coming, and open again afterwards
Additionally the following optional goals were defined:
- Deadlock avoidance: Trains should never run into a deadlock
- Cleanup function: All Trains which are still on the track travel to their next destination and afterwards they take the shortest way home
- Trains should drive slowly at the points
Sample Pass for one Track
state Foo --> Gleissegment with contact(Segment,0) state Gleissegment { entry / req(next_Segment); entry / setSignal(prevSegment, red); inital state Entry --> Continue with contact(Segment,0) & perm_next_Segment --> Slowdown with contact(Segment,0); state Slowdown { entry / setSpeed(Segment,SLOW); } --> Waiting with contact(Segment,1) --> Continue with perm_next_Segment; state Waiting { entry / setSpeed(Segment,BRAKE); } --> Continue with perm_next_Segment; state Continue { entry / setSignal(Segment,green); entry / setSpeed(Segment,full); entry / setSpeed(nextSegment,full); entry / setSignal(nextSegment, red); entry / free(prevSegment) entry / setSpeed(prevSegment,OFF); }--> leave immediate; final state leave; }
Roadmap
13.5. Präsentation Annahme: Wir bekommen Interface für Module 27.5. Station-Station Controller + C-Interface 17.6. Integrationstests 24.6. Definierte Testfälle mit Stoppflag 01.7. Fahrpläne KW 34 Abschlusspräsentation KW 35 Exkursion Miniatur Wunderland
Interfaces
C-Interface
klar
Station-Station Module
Input: Zugnummer, Startgleis, Zielgleis, Cleanup, (Mutex Variablen?)
Output: "Echtes" Zielgleis (Ausweichgleis?)
Organisation
Regelmäßiges Treffen Mittwochs 16:00