s
-
Upload
alex-balan -
Category
Documents
-
view
215 -
download
1
description
Transcript of s
-
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.