Examen de Langages synchrones du 26 mars 2001


Tous documents autorisés. Durée 2h.


Exercice 1 (3 points)

Donnez un exemple de suite () définie par une équation u = f(x) et vérifiant les conditions suivantes : Justifier la réponse.
Donner un exemple de suite suivant les mêmes contraintes mais où f n'est pas nécessairement synchrone.

Exercice 2 (4 points)

L'objectif de cet exercice est de modéliser le fonctionnement d'une machine à café en ESTEREL. Cette machine dispose de divers boutons d'entrés :
cafe, grand_cafe, the permettent de selectionner une boisson.
annuler ce bouton permet d'annuler la commande.
pieces permet d'introduire des pièces de monnaie. On supposera ici que les seules pièces disponibles sont des pièces de 1 franc et de 2 francs.

Les sorties de cette machine sont les suivantes :
boisson indique que la boisson est prète.
sonnerie lorsque la sonnerie est prète, un signal sonore est émis.
monnaie permet de rendre la monnaie d'une consommation.

Le prix des consommations est le suivant :
un café coûte 2 francs, un grand café coûte 3 francs et un thé coûte 2 francs.

Le fonctionnement de cette machine est le suivant : le consommateur introduit des pièces dans la machine puis sélèctionne sa boisson. Le voyant boisson est alors allumé et le signal sonore sonnerie est émis pendant 5 secondes. Ces signaux indiquent que la boisson est prète. Si le consommateur appuie sur le bouton annuler avant d'avoir sélectionné sa boisson, samonnaie lui est rendue. Si les boutons cafe, grand_cafe ou the sont enfoncés avant que l'utilisateur ait introduitsa monnaie, le signal sonnerie est émis pendant seconde.

Modéliser ce système en ESTEREL.

Exercice 3 : Alarme de maison(5 points)

Il s'agit de protéger une habitation divisée en deux parties : le garage et la maison. La maison est toujours sous surveillance ès que le dispositif de protection est mis sous tension. Le garage n'est sous protection qu'au bout d'un temps "délai-vigilence" à partir du moment où le dispositif est sous tension; ce délai permet au propriétaire d'avoir le temps de sortir du garage après avoir armé son dispositif de protection.

fonctionnement de l'alarme à partir du moment où elle sonne, elle le fait pendant "délai-alarme" puis s'arrète pendant "délai-reprise" et à la fin de ce dernier délai, selon la situation (présence ou non d'un intrus dans l'habitation) sonne à nouveau ou non.

arrêt du dispositif lorsque celui-ci est sous tension, on ne peut l'arrêter qu'après avoir founi le code d'entrée. On dispose alors le "délai-vigilence" entre le moment où un code est fourni et la mise hors circuit pendant lequel une présence dans le garage est tolérée.

entrées et sorties les entrées et sorties du systèeme sont les suivantes :
MA bouton de mise en marche ou d'arrêt. Chaque pression sous le bouton fait changer d'étatle dispositif, qui est supposé arrêté initialement.
code signal booléen devenant vrai lorsqu'un code correct a été fourni.
pb-gar signal vrai lorsqu'une résence est détectée dans le garage.
pb-hab signal vrai lorsqu'une résence est détectée dans la maison.
en-marche témoin de l'état du dispositif.
alarme sans commentaire.

Modéliser le système.

Problème (9 points)

On souhaite modéliser un système commandant des aiguillages permettant à des trains circulant sur une voie unique à double sens de se croiser. Le système est décrit par le schéma suivant :

Chacun des composants de ce système est décrit ci-dessous. On s'intéresse au contrôle des aiguillages et des feux de signalisations. L'objectif est de définir dans un premier temps, un module ayant l'interface suivante :

node system
(demande_actionner_aig1_haut, demande_actionner_aig1_bas,
demande_actionner_aig2_haut, demande_actionner_aig2_bas : bool)
returns (aiguillage1_haut, aiguillage1_ bas, aiguillage2_haut, aiguillage2_bas,
feu1, feu2, feu_gare1, feu_gare2 :bool);


et envoyant des commandes aux deux aiguillages ainsi qu'aux quatre feux de position.

Question 1 Dans un premier temps, on souhaite seulement commander les deux aiguillages aiguillage1 et aiguillage2 sans se préoccuper des feux. Définir le corps de ce système à partir d'un module de commande d'un aiguillage.

Question 2 On ajoute les feux feu1 et feu2. Le feu feu1 doit être allumé tant que l'aiguillage aiguillage1 est vers le haut. De même pour le feu feu2.

Question 3 On ajoute les deux feux feu_gare1 et feu_gare2. Le feu feu_gare1 doit être allumé lorsque l'aiguillage aiguillage1 est en bas.

Question 4 Vous devez maintenant tenir compte de la contrainte suivante : un seul train (au plus) peut être pésent dans la section gare1 ou dans la section gare2. Pour cela, vous supposerez que le système system est connecté aux divers capteurs résents sur les voies. Changez l'interface et la définition de system en conséquence.

Question 5 Même question en tenant compte cettefois de la contrainte suivante : un seul train (au plus) peut être présent dans la section d'un aiguillage. On ne peut donc changer d'état de l'aiguillage que s'il n'y a pas déjà de train dans la zone de l'aiguillage.

Question 6 On veut introduire du temps dans la commande de l'aiguillage. On souhaite émettre un signal de debut_de_demande_aiguillage_haut et que la demande soit maintenue jusqu'à ce qu'éventuellement, un signal de fin_de_demande_aiguillage_haut soit émis. Modifiez le système en conséquence.

Question 7 On souhaite maintenant implanter un autre système de contrôle de la présence dans la section gare1. Pour cela on suppose qu'il y a deux capteurs presence_gare1_debut et presence_gare1_fin, placés en début et en fin. Définisser un noeud :

node PresenceGare1(presence_gare1_debut, presence_gare1_fin : bool)
return (presence_gare1 : bool)


qui in dique si un train est résent dans la gare. Ajoutez ce module au système déjà défini.