12.07.2015 Views

Feux Carrefour-05.pdf - EPFL

Feux Carrefour-05.pdf - EPFL

Feux Carrefour-05.pdf - EPFL

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

EPF-Lausanne - LABORATOIRE DE MODELISATION SYSTEMTIQUETemps réel - manipulationGestion de feux de carrefourIntroductionCette manipulation va vous permettre de faire la conception d'unsystème de commande en temps réel en utilisant le formalismeGRAFCET. Vous allez pratiquer la traduction en un langage deprogrammation et voir que l’on peut implanter du parallélismesous forme d’un programme séquentiel. Ceci sera illustré parl’automatisation des feux d'un carrefour en gérant les séquencesdes feux et les détections de véhicules et de piétons.Description du matérielLe carrefour à contrôler possède deux voies (nord-sud, est-ouest)protégées par des feux tricolores et un passage pour piéton.Chacune des voies possède un dispositif de détection de véhicule.Le passage pour piéton comporte un dispositif de demande depassage. La manipulation ne nécessite pas de matériel externe. Lefeu de carrefour est émulé par une applet (TrafficLights) qui metà disposition une méthode pour modifier l’état des feux et 3méthodes pour connaître l’état des détecteurs de véhicules et dubouton de demande. Finalement, deux méthodes sont à votredisposition pour la gestion du temps. (voir plus loin)Informationsa. Un code source d’exemple vous est fourni. Il contient deuxfichiers, TrafficLights.java et TrafficLightController.java.Vous disposer en outre du fichier Traffic.htm qui vouspermet de lancer l’applet obtenues après compilation(TrafficLights.class).b. Le fichier TrafficLights.java ne doit pas être modifié. Ilcontient toutes les méthodes que vous appellerez depuisTrafficLightController.c. Le fichier TrafficLightController devra contenir le code ducontrôleur du carrefour. Ce fichier définit la classeAutoThread. La méthode « run » de cette classe correspondà l’implantation du contrôleur. Elle est appelé lorsque l’onclique sur « auto ». C'est la seule partie que vous avez àmodifier.d. La méthode NorthSouthVehicleDetected vous indique si, aumoment où vous l’invoquez, le bouton gauche de la sourisest appuyé alors que le curseur est sur un des deuxdétecteurs de la voie nord-sud.public static boolean NorthSouthVehicleDetected()e. La méthode EastWestVehicleDetected vous indique si, aumoment où vous l’invoquez, le bouton gauche de la sourisest appuyé alors que le curseur est sur un des deuxdétecteurs de la voie est ouest (horizontale).public static boolean EastWestVehicleDetected()f. La méthode PedestrianRequest vous indique si, au momentoù vous l’invoquez, le bouton gauche de la souris estappuyé alors que le curseur est sur le bouton de demande àcôté du passage piétonpublic static boolean PedestrianRequest()g. La méthode SetLights vous permet d’allumer les diverseslampes du panneau (les préfixes ont la significationsuivante : 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 méthode Timeout donne l’état du temporisateurpériodique (période 100ms). L’état passe à 1 tous les100ms. Il y reste tant qu’il n’a pas été mis à zéro parinvocation de la méthode ClearTimeout()public static int Timeout()public static void ClearTimeout()i. Le fichier TrafficLightController.java contient un exempled’implantation d’un GRAFCET purement séquentiel enJava (dans la méthode run de la classe AutoThread. Je vousrecommande de vous en inspirer.Travail à effectuera. On veut une séquence tournante qui donne successivementle passage aux voies PIETONS, EST-OUEST et NORD-SUD pendant 20 secondes chacune (vert: 17s., orange: 2s.,rouge: 1s.). Il est nécessaire de prévoir une période detransition (temps de sécurité = 1s.) entre le blocage d'unevoie et la libération de la suivante. Donner la représentationGRAFCET de cette séquence et la programmer (conseil:utiliser le fichier de base donné).b. On modifie la séquence précédente de façon à accepter lesdemandes de passage (bouton enfoncé) des piétons.L'autorisation de passage doit être donnée au plus tard 10secondes après la demande. L’idée est raccourcir la duréedu vert lorsqu’il y a demande. On considère que, lors d'unedemande, le bouton reste enfoncé jusqu'à ce que les piétonsaient le passage. Une fois libre, le passage doit le rester aumoins 7 secondes. Etablir la représentation GRAFCET decet automatisme et le programmer.c. On désire maintenant qu'il ne soit plus nécessaire de presserle bouton jusqu'à ce que les piétons aient le passage, maisqu'une simple impulsion (un click) soit suffisante. Modifierla représentation GRAFCET précédente et votreprogramme de façon correspondante.d. Pour la beauté de l'automatisme, le vert des piétons doitclignoter avant de passer au rouge.


EPF-Lausanne - LABORATOIRE DE MODELISATION SYSTEMTIQUE Enoncé <strong>Feux</strong> de <strong>Carrefour</strong> - page 2CompilationLe compilateur utilisé est celui de SUN Microsystems.• Appel : Il peut être appelé dans la fenêtre de texte dewindows (start/program/accessories/command_prompt) parla commande javac• Toujours indiquer l’extension du nom de fichier (.java) lorsde l’appel du compilateur.• Mettre les fichiers sources TrafficLightController.java etTrafficLights.java dans le même répertoire.• Ne pas oublier d’indiquer où se trouvent les fichiers sourcesavec l’option –sourcepath repertoireExécution• L’exécution de l’applet se fait à l’aide de la commandeappletviewer avec pour argument le nom d’un ficher htmlqui appelle l’applet. Le plus simple est de prendre celui quiest 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 (sinonvous risquez d'attendre longtemps).• Voici à titre d'information le GRAFCET qui correspond àl'exemple qui vous est donné1RS RE RP T=1t/1/1s2RS RE VP T=1t/2/1s3RS RE RP T=1t/3/1s4RS VE RP T=1t/4/1s5RS OE RP T=1t/5/1s6RS RE RP T=1t/6/1s7VS RE RP T=1t/7/1s8OS RE RP T=1•t/8/1s

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!