Vous êtes sur la page 1sur 2

EPF-Lausanne - LABORATOIRE DE MODELISATION SYSTEMTIQUE

Temps rel - manipulation

Gestion de feux de carrefour


Introduction
Cette manipulation va vous permettre de faire la conception d'un
systme de commande en temps rel en utilisant le formalisme
GRAFCET. Vous allez pratiquer la traduction en un langage de
programmation et voir que lon peut implanter du paralllisme
sous forme dun programme squentiel. Ceci sera illustr par
lautomatisation des feux d'un carrefour en grant les squences
des feux et les dtections de vhicules et de pitons.

d.

La mthode NorthSouthVehicleDetected vous indique si, au


moment o vous linvoquez, le bouton gauche de la souris
est appuy alors que le curseur est sur un des deux
dtecteurs de la voie nord-sud.
public static boolean NorthSouthVehicleDetected()

e.

La mthode EastWestVehicleDetected vous indique si, au


moment o vous linvoquez, le bouton gauche de la souris
est appuy alors que le curseur est sur un des deux
dtecteurs de la voie est ouest (horizontale).
public static boolean EastWestVehicleDetected()

f.

La mthode PedestrianRequest vous indique si, au moment


o vous linvoquez, le bouton gauche de la souris est
appuy alors que le curseur est sur le bouton de demande
ct du passage piton
public static boolean PedestrianRequest()

g.

La mthode SetLights vous permet dallumer les diverses


lampes du panneau (les prfixes ont la signification
suivante : ns : north-south, ew : east-west, p : pedestrian)
public static void SetLights(
boolean nsred, boolean nsyellow, boolean nsgreen,
boolean ewred, boolean ewyellow, boolean ewgreen,
boolean pred, boolean pgreen);

h.

La mthode Timeout donne ltat du temporisateur


priodique (priode 100ms). Ltat passe 1 tous les
100ms. Il y reste tant quil na pas t mis zro par
invocation de la mthode ClearTimeout()
public static int Timeout()
public static void ClearTimeout()

i.

Le fichier TrafficLightController.java contient un exemple


dimplantation dun GRAFCET purement squentiel en
Java (dans la mthode run de la classe AutoThread. Je vous
recommande de vous en inspirer.

Description du matriel

Le carrefour contrler possde deux voies (nord-sud, est-ouest)


protges par des feux tricolores et un passage pour piton.
Chacune des voies possde un dispositif de dtection de vhicule.
Le passage pour piton comporte un dispositif de demande de
passage. La manipulation ne ncessite pas de matriel externe. Le
feu de carrefour est mul par une applet (TrafficLights) qui met
disposition une mthode pour modifier ltat des feux et 3
mthodes pour connatre ltat des dtecteurs de vhicules et du
bouton de demande. Finalement, deux mthodes sont votre
disposition pour la gestion du temps. (voir plus loin)

Informations
a.

Un code source dexemple vous est fourni. Il contient deux


fichiers, TrafficLights.java et TrafficLightController.java.
Vous disposer en outre du fichier Traffic.htm qui vous
permet de lancer lapplet obtenues aprs compilation
(TrafficLights.class).

b.

Le fichier TrafficLights.java ne doit pas tre modifi. Il


contient toutes les mthodes que vous appellerez depuis
TrafficLightController.

c.

Le fichier TrafficLightController devra contenir le code du


contrleur du carrefour. Ce fichier dfinit la classe
AutoThread. La mthode run de cette classe correspond
limplantation du contrleur. Elle est appel lorsque lon
clique sur auto . C'est la seule partie que vous avez
modifier.

Travail effectuer
a.

On veut une squence tournante qui donne successivement


le passage aux voies PIETONS, EST-OUEST et NORDSUD pendant 20 secondes chacune (vert: 17s., orange: 2s.,
rouge: 1s.). Il est ncessaire de prvoir une priode de
transition (temps de scurit = 1s.) entre le blocage d'une
voie et la libration de la suivante. Donner la reprsentation
GRAFCET de cette squence et la programmer (conseil:
utiliser le fichier de base donn).

b.

On modifie la squence prcdente de faon accepter les


demandes de passage (bouton enfonc) des pitons.
L'autorisation de passage doit tre donne au plus tard 10
secondes aprs la demande. Lide est raccourcir la dure
du vert lorsquil y a demande. On considre que, lors d'une
demande, le bouton reste enfonc jusqu' ce que les pitons
aient le passage. Une fois libre, le passage doit le rester au
moins 7 secondes. Etablir la reprsentation GRAFCET de
cet automatisme et le programmer.

c.

On dsire maintenant qu'il ne soit plus ncessaire de presser


le bouton jusqu' ce que les pitons aient le passage, mais
qu'une simple impulsion (un click) soit suffisante. Modifier
la reprsentation GRAFCET prcdente et votre
programme de faon correspondante.

d.

Pour la beaut de l'automatisme, le vert des pitons doit


clignoter avant de passer au rouge.

EPF-Lausanne - LABORATOIRE DE MODELISATION SYSTEMTIQUE

Compilation
Le compilateur utilis est celui de SUN Microsystems.

Appel : Il peut tre appel dans la fentre de texte de


windows (start/program/accessories/command_prompt) par
la commande javac

Toujours indiquer lextension du nom de fichier (.java) lors


de lappel du compilateur.

Mettre les fichiers sources TrafficLightController.java et


TrafficLights.java dans le mme rpertoire.

Ne pas oublier dindiquer o se trouvent les fichiers sources


avec loption sourcepath repertoire

Excution

Lexcution de lapplet se fait laide de la commande


appletviewer avec pour argument le nom dun ficher html
qui appelle lapplet. Le plus simple est de prendre celui qui
est sur le site du LAMS comme page pour la manipulation
(lamspeople.epfl.ch/decotignie/Manips/traffic.htm).

Conseil

Mieux vaut diminuer les temporisations pour le test (sinon


vous risquez d'attendre longtemps).
Voici titre d'information le GRAFCET qui correspond
l'exemple qui vous est donn

RS RE RP T=1
t/1/1s

RS RE VP T=1
t/2/1s

RS RE RP T=1
t/3/1s

RS VE RP T=1
t/4/1s

RS OE RP T=1
t/5/1s

RS RE RP T=1
t/6/1s

VS RE RP T=1
t/7/1s

OS RE RP T=1
t/8/1s

Enonc Feux de Carrefour - page 2