AGRÉGATION D INFORMATIQUE session 2001 Admission Épreuve de Travaux Pratiques Option : Informatique des systèmes industriels (préparation : 7 heures, Exposé et discussion : 1 heure dont 20 à 30 min d'exposé) Mise en œuvre de la commande d un distributeur de boîtes de boissons gazeuses à l'aide d'un exécutif temps réel Objet de la manipulation Il s'agit d'implémenter la commande d un distributeur de boîtes de boissons gazeuses à partir d une spécification fournie, en utilisant les services d'un exécutif temps réel. Environnement de travail - Un PC de type Pentium - Une carte d'interface entrées/sorties (type 8112 HG) avec sa documentation - Une carte d'entrées protégées et une carte de sorties avec relais - Un environnement de développement Turbo C++ - Un exécutif temps réel NTR installé - Boîtiers de simulation des entrées/sorties TOR - La documentation relative aux cartes et à l'exécutif utilisé Description du distributeur de boissons Il s'agit d'un distributeur de boissons simplifié constitué de (voir figure 1) : 1 fente d'introduction des pièces de monnaies, 1 clavier de commande et de visualisation de la disponibilité des boissons, 1 module de test des pièces de monnaies, 1 réceptacle pour récupération des boissons et des pièces rendues, 1 magasin contenant 4 types de boîtes de boissons qui peuvent être relâchées une par une. Ce distributeur sera simulé par un PC et le boîtier d'entrées/sorties TOR. 1/9
Etiquettes indiquant le type de boisson Led rouge : boisson non disponible Led Verte : boisson disponible Boutons de choix des boissons Fente d'introduction des pièces Réceptacle de réception des pièces et des boîtes de boisson Figure 1 Schéma de la façade du distributeur de boissons Description générale du fonctionnement Le distributeur gère 4 type de boissons. Pour chaque type, deux leds permettent d'indiquer au client la disponibilité de la boisson : - Led rouge allumée = boisson non disponible, - Led verte allumée = boisson disponible. Toutes les boissons ont le même prix (500 Millimes). Le client doit introduire suffisamment de pièces de monnaie dans la fente puis appuyer sur le bouton correspondant à la boisson désirée. Si la boisson est disponible et la somme d'argent introduite est suffisante, le distributeur libère une boîte de la boisson désirée et rend éventuellement le reste de la monnaie. Si la boisson n'est pas disponible ou si la somme d'argent introduite n'est pas suffisante, le distributeur rend la totalité des pièces introduites. Le distributeur contient un module de test des pièces de monnaie qui teste la validité des pièces introduites en comparant leurs dimensions et leurs résistivités par rapport aux spécifications mémorisées. Seules les pièces de 100 Millimes, 500 Millimes et un Dinar sont acceptées. Toute autre pièce ou leurre sera rejeté immédiatement. Vérification des pièces de monnaies Le schéma de la figure 2 montre le chemin suivi par les pièces de monnaies introduites dans le distributeur. 2/9
Introduction des pièces 1 Module de Test Aiguillage 1 Caisse intermédiaire Aiguillage 2 Caisse Rejet Figure 2 Cheminement des pièces de monnaies Le système de commande détecte l'introduction d'une pièce grâce à un capteur disposé sur la fente qui émet le signal "piece". Cette pièce tombe automatiquement dans le module de test de pièces de monnaie. Le système de commande émet le signal "test" vers ce module de test pour vérifier la pièce introduite et déterminer sa valeur. Après avoir effectué sa tâche, le module de test émet l'un des signaux "100M", "500M", "1D" ou "non_reconnue" et le système de commande agit en conséquence : - la pièce est rejetée, en activant le premier aiguillage avec le signal "Rejet_1", - la pièce est acceptée momentanément, en activant le premier aiguillage avec le signal "Accept_1". La pièce sera retenue dans un stockage intermédiaire jusqu'au dénouement de la transaction. Quand l'utilisateur appuie sur l'un des boutons de choix, le système de commande vérifie que la somme de monnaie introduite est suffisante, que le produit demandé est disponible. - Si toutes les conditions sont réunies, il active alors le curseur correspondant pour libérer une boîte du type de boisson demandé, et active le second aiguillage avec le signal "Accept_2" pour encaisser l'argent. - Dans le cas contraire, le système de commande active le second aiguillage avec le signal "Rejet_2" pour restituer les pièces introduites au client. Tableau des entrées - sorties Entrées Description Sorties Description Choix_1 Boisson de type 1 choisie Led_Rouge_1 Boisson 1 non disponible Choix_2 Boisson de type 2 choisie Led_Verte_1 Boisson 1 disponible Choix_3 Boisson de type 3 choisie Led_Rouge_2 Boisson 2 non disponible Choix_4 Boisson de type 4 choisie Led_Verte_2 Boisson 2 disponible 3/9
Détecteur_1 Boisson de type 1 disponible dans le magasin Led_Rouge_3 Boisson 3 non disponible Détecteur_2 Boisson de type 2 disponible dans le magasin Led_Verte_3 Boisson 3 disponible Détecteur_3 Boisson de type 3 disponible dans le magasin Led_Rouge_4 Boisson 4 non disponible Détecteur_4 Boisson de type 4 disponible dans le magasin Led_Verte_4 Boisson 4 disponible Pièce Pièce détectée à l'entrée du distributeur Curseur_1 Libérer une boîte de boisson de type 1 100M Pièce de 100 M identifiée Curseur_2 Libérer une boîte de boisson de type 2 500M Pièce de 500 M identifiée Curseur_3 Libérer une boîte de boisson de type 3 1D Pièce de 1D identifiée Curseur_4 Libérer une boîte de boisson de type 4 Non_reconnue Pièce non reconnue Accept_1 Premier aiguillage pièce retenue Accept_2 Second aiguillage pièce retenue Rejet_1 Premier aiguillage pièce rejetée Rejet_2 Second aiguillage pièce rejetée Test Activer le module de test Les sorties Curseur_i, Accept_i, Rejet_i doivent être maintenues pendant une seconde. Description de la maquette Les capteurs du distributeur seront simulés à l aide de la boîte à boutons, les actionneurs seront simulés par les leds de la carte de sortie. Sorties Calculateur PC Carte interface TOR Entrées OFF ON Boîte à boutons Figure 2 - Structure matérielle Spécification du système Un début de spécification du système par SA-RT est fourni. Pour cette première partie, nous supposerons que le distributeur ne rend pas le reste de la monnaie. Nous nous intéressons essentiellement à l'implémentation du système. 4/9
Entree piece Magasin Boissons Detecteur_i Piece Led_Rouge_i Clavier Curseur_i Led_Verte_i Gerer distributeur de boissons Choix_i Rejet_2 Test Rejet_1 Accept_2 Resultat Accept_1 Module de test Aiguillages Diagramme de contexte Rejet_1 Accept_1 Piece Resultat Identifier piece valeur 1 Test Porte monnaie Curseur_i Servir Client 2 Accept_2 Choix_i Rejet_2 Stock Boissons Gérer Stock Detecteur_i 3 Led_Rouge_i Led_Verte_i Schéma préliminaire ST0 "Gérer Distributeur de Boisson" 5/9
Resultat valeur Incrémenter 100M 1D 2 100M 500M Non_reconnue T T Incrémenter 500M 3 Controler Verification Piece 1 T Test Rejet_1 Accept_1 Incrémenter 1D 4 Schéma de transformation ST 0.1 "Identifier piece" Attente "1D" T: "Incrémenter 1D" "Accept_1" "Piece" "Test" "100M" T: "Incrémenter 100M" "Accept_1" "Non_reconnue" "Rejet_1" Verification "500M" T: "Incrémenter 500M" "Accept_1". Diagramme Etats-transitions de la Transformation 1.1 "controler verification" 6/9
Dictionnaire de données partiel Name: 100M Comment: Pièce reconnue de valeur 100 Millimes Name: 1D Comment: Pièce reconnue de valeur 1 Dinar Name: 500M Comment: Pièce reconnue de valeur 500 Millimes Name: Accept_1 Comment: permet d'activer le premier aiguillage pour retenir momentanément les pièces de monnaies Name: Accept_2 Comment: permet d'activer le second aiguillage pour encaisser les pièces de monnaie Name: choix_1 Name: choix_2 Name: choix_3 Name: choix_4 Name: Choix_i Bnf: [choix_1 choix_2 choix_3 choix_4 ] Comment: Type de boisson choisie par l'utilisateur Name: Curseur_1 Name: Curseur_2 Name: Curseur_3 Name: Curseur_4 Name: Curseur_i Bnf: [ Curseur_1 Curseur_2 Curseur_3 Curseur_4 ] Comment: Signal de commande déclenché chaque fois que le distributeur doit servir une boisson de type i. Ce signal va faire avancer d'un cran le curseur qui va libérer la boite de boisson commandée. Name: Detecteur_1 Name: Detecteur_2 Name: Detecteur_3 Name: Detecteur_4 Name: Detecteur_i Bnf: [ Detecteur_1 Detecteur_2 Detecteur_3 Detecteur_4 ] Comment: Détecteur_i de présence indiquant la disponibilité des boissons de type i Name: Led_Rouge_1 Name: Led_Rouge_2 Name: Led_Rouge_3 Name: Led_Rouge_4 Name: Led_Rouge_i Bnf: [ Led_Rouge_1 Led_Rouge_2 Led_Rouge_3 Led_Rouge_4 ] Comment: Led Rouge indiquant que le produit de type i est indisponible Name: Led_Verte_1 Name: Led_Verte_2 Name: Led_Verte_3 Name: Led_Verte_4 Name: Led_Verte_i Bnf: [ Led_Verte_1 Led_Verte_2 Led_Verte_3 Led_Verte_4 ] 7/9
Comment: Signal de commande des led du clavier indiquant à l'utilisateur la présence de la boisson de type i Name: Non_reconnue Comment: pièce non reconnue Name: Piece Comment: Pièce de monnaie introduite par l'utilisateur. Peut être bonne ou fausse Name: Porte monnaie Type: Discrete flow Name: Rejet_1 Comment: Permet d'activer le premier aiguillage pour rejeter la pièce non reconnue Name: Rejet_2 Comment: Permet d'activer le second aiguillage pour rejeter les pièces de monnaies Name: Resultat Bnf: [ 100M 500M 1D Non_reconnue] Comment: résultat de la vérification de la pièce de monnaie introduite Name: Stock Boissons Type: Discrete flow Name: Test Comment: Active le module de test des pièces de monnaies Name: valeur Type: Discrete flow Comment: Valeur de la pièce de monnaie si elle est reconnue 8/9
Travail demandé Première partie A) Etude de la commande du distributeur de boissons 1) Rajouter à la spécification fournie les processus qui permettent de prendre en compte les Entrées/Sorties en fonction de la maquette de simulation utilisée. 2) Identifier les tâches qui permettent d'implémenter le système décrit ainsi que les différentes communications entre les tâches. 3) Réaliser les modules logiciels qui implémentent l'architecture logicielle identifiée précédemment. L'implémentation sera faite en utilisant les services de l'exécutif temps réel NTR. On veillera à réaliser des modules indépendants que l'on pourra tester progressivement et individuellement. B) Prise en compte d'un magasin de pièces de monnaie Dans cette partie le distributeur doit gérer les pièces de monnaies à rendre à l'utilisateur et ne doit pas accepter de commande s'il n'a pas la possibilité de rendre la monnaie des pièces introduites. 1) Introduisez les modifications nécessaires au niveau des spécifications du système pour prendre en compte ce nouveau fonctionnement. 2) Effectuer les modifications nécessaires au niveau des modules logiciels réalisés pour prendre en compte ce nouveau fonctionnement. Deuxième partie En vous inspirant des développements réalisés dans cette application, élaborer un sujet de travaux pratiques destinés à des étudiants de deuxième année de formation technologique. Proposer le texte à fournir, les pré requis supposés ainsi que les composants matériels et logiciels à mettre à leur disposition. 9/9