Post on 26-Sep-2015
description
Problema cu 3 gari
1. Desen
2. Arhitectura software
3. Arhitectura RMI
4. Diagrama secventiala
5. Diagrama de clase
6. Cod
Import java.io.*;
Import java.net.*;
Public class ServerMultifir{
Public static final int PORT=1900;
Void StartServer(){
ServerSocket ss=null;
Try{
Ss=new ServerSocket(Port);
While(true)
{
Socket socket=ss.accept();
New Tratare Client(Socket);
} } } }
FOR each segment DO {segment.trafficLight=false; segment.state=false;}
outputLine.state=true;
inputLine.trafficLight=false;
outputLine.senzor=false;
inputLine.senzor=flase;
WHILE (currentTime < ) DO {
Input: outputLine.inputSenzor, inputLine.outputSenzor, currentTime, trainList;
Output: segment.trafficLight, interlocking.switch, inputLine.trafficLight
La fiecare secund aplic urmtoarele reguli de control:
//plecarea unui tren
MainClass
+main()
Thread
+run()
Controller
+run()+sendMessage()
Structure
Line
+trafficLight+sensor
Interlocking
+state+linkedLineList+switch
TrafficLight
+state
+set()+reset()
Switch
+state
+set()+reset()
Train
+departuretLine+arrivalLine+departureTime
Server
+run()+receiveMessage()+getMessage()
Senzor
+state
+signal()
Clock
+Attribute1
+getCurrentTime()
Class Diagram of the Railway Traffic Control System
FOR (each train trainList) DO { //control rules:
IF((tren.startTimecurentTime) AND (interlocking.state==free) AND (outputLine.state==free)) THEN
{
interlocking.state=false;
outputLine.state=false;
IF (train.departureSegment==s0) THEN {
interlocking.switch1=true ;
interlocking.switch2=true;}
IF (train.departureSegment==s1) THEN interlocking.switch2=true;
train.departureSegment.trafficLight=true;
} //eliberarea interlocking-ului
IF((interlocking.state==false) AND (outputLine.inputSezor==true)) THEN interlocking.state=true;
//eliberarea liniei de ieire
IF(outputLine.state==false) AND (receivedMessage()==lineFree) THEN outputLine.state==true;
//acceptarea sosirii unui tren
IF((inputLine.inputSenzor==true) AND (interlocking.state==free) AND (train.arivalSegment==free)) THEN
{
inputLine.trafficLight=true;
interlocking.state=false;
train.arivalSegment.state=false;
}
//semnalizarea eliberrii linie de intrare
IF (train.arrivalSegment.senzor==true) THEN {
sendMessage(lineFree);
inputLine.trafficLight=false;
interlocking.state=true;
}
output: apply control signals;
wait(1 sec.);//wait for next period
}//endFOR
}//endWHILE
7. Explicatie schema
G1-Nod : se considera tren I G1: T1
T1 pleaca din G1 daca Si14 si S1 si S3 verde, daca nu asteapta
T1 pe langa linie externa => se elibereaza peron=> semafor S1 sau S3-rosu => semaforul devine verde
T1-verifica daca S2 sau S4 verde si Si1..Si4 verde=> daca intra in Nod pe la peronul liber, S1 si semaforul afferent liniei
se face rosu, semaforul liniei verde=> daca nu, asteapta pe linie
8. Diagrama clasa
9. Retea Petri pr client-server
(control 2 gari, 2 linii sens unic)
P1-Prezenta tren G1
T1-pleaca tren din gara G1=> jeton in P6-trece pe linie jeton in P2- semnalizeaza gara libera
T2-intarziere calatorie
Pe, P7, Pj, P15, P16, P17-semafor linie. Daca exista jeton in P8 si P14 inseamna ca avem tren pe linie si gara G2 este
libera, deci trenul poate intra
Jeton P9, tren in G2,
P10, P22, P12-> plimbam trenul in gara P-P12 P2=P13 P3=P15 P13=P14
10.