Quelqu'un peut m'aider pour cette application
Application : Pilotage d’une expérience de dosage
On considère un système de pilotage d’expérience de dosage. Un calculateur commande un moteur pas à pas pour abaisser le piston d’une burette dans laquelle se trouve un produit chimique. A l’aide d’un capteur spécifique plongé dans le bac de dosage, on veut y mesurer la concentration de ce produit chimique. Une mesure est effectuée périodiquement grâce à une horloge temps réel fournissant les instants de mesure. Une imprimante est prévue pour éditer les résultats de traitement.
Plusieurs variables d’entrée sont fournies au calculateur via des boutons-poussoirs, elles permettent d’agir sur le fonctionnement du calculateur :
Mode = 0 pas de calcul de concentration ni impression
Mode = 1 calcul de concentration et impression des résultats.
Debut = 0 les activités de gestion dosage ne sont pas lancées.
Debut = 1 les tâches de gestion dosage sont lancées.
Arrêt = 0 les tâches de gestion du dosage continuent à s’effectuer.
Arrêt =1 les tâches de gestion du dosage sont terminées, retour au système
d’exploitation après destruction contrôlée des différentes ressources logicielles prises au système d’exploitation.
La description des activités de gestion du dosage se traduit par le grafcet figure 2.2. En examinant ce grafcet, on peut faire émerger les différentes tâches qui piloteront le système. Les activités de contrôle du dosage, rythmé par une horloge temps réel htr peuvent être regroupées puisque ces activités convergent vers le même but. Ces activités de dosage et de contrôle représentées par les étapes P1, P2, P3, P4, P6, P7, P10, P12 sont donc regroupées dans une seule tâche : TACHE1.
Les activités de calcul et d’édition sont suffisamment indépendantes du « control process » pour être traitées séparément. En outre, les calculs et l’affichage peuvent se faire simultanément aux activités de contrôle. Les étapes P5, P8, P9 sont donc regroupées dans la tâche : TACHE2.
L’étape P11 peut être associée à la TACHE1 ou à la TACHE2 ; on choisit TACHE1.
L’étape d’initialisation, P0 est marquée (ou active) en premier lieu et constitue la tâche de fond. C’est cette tâche qui effectue l’initialisation des variables, des objets de coopération et lance le noyau et les tâches.
Les étapes P5, P9, P7, P12 apparaissent comme des étapes de synchronisation et sont matérialisées par des mécanismes de synchronisation par sémaphore.
La procédure IT_htr produit une signalisation par sémaphore chaque fois quelle est activée.
1. Dans la tâche de fond pourquoi doit-on lancer TACHE1 et TACHE2 dans une section critique.
2. On définie trois sémaphore pour la synchronisation S_tache1, S_tache2 et S_htr. Donner la valeur initiale de chaque sémaphore.
3. Déterminer la procédure IT_htr et les tâches TACHE1et TACHE2 en remplaçant les instructions de synchronisation < synchro > par les fonctions P et V des sémaphores qui sont déjà définis.
Partager