Cours informatique industrielle (Les automates)

Formation informatique industrielle (Les automates), tutoriel & guide de travaux pratiques en pdf.

La gestion des ressources

Une autre application classique des automates est d’aider à la gestion d’une ressource, c’est à dire à surveiller le bon usage d’un élément qui ne peut pas être utilisé n’importe comment. Les exemples abondent dans le domaine informatique : accès à un réseau, à un périphérique partagé comme une imprimante, ou contrôle d’une zone mémoire organisée en file (fifo, pour first in first out) ou tampon. Prenons à titre d’illustration ce dernier exemple. Une mémoire FIFO est une zone mémoire de taille généralement fixe destinée à assurer la synchronisation des échanges de données entre une source (le producteur) et un destinataire (le consommateur) dont les vitesses de transfert ne sont pas égales à chaque instant. Le rôle de l’automate est justement d’assurer une vitesse moyenne de transfert égale de chaque côté :
Producteur Consommateur Tampon (Fifo)
Automate
données données
adresses wr rd
Plein, ninit Vide, ninit
Init, reset
En simplifiant notablement, on peut résumer le fonctionnement comme suit : − Une commande init permet d’initialiser l’automate en lui fournissant la taille de la zone mémoire, son adresse etc. Tout accès au tampon avant l’initialisation provoque un message d’erreur ninit. Reset provoque le retour à l’état non initialisé. − L’automate tient à jour les adresses d’accès en écriture et en lecture (elles sont généralement différentes) et un compteur interne qui indique le nombre d’octets présents dans le tampon. − L’écriture (wr) dans un tampon plein provoque l’émission d’un message d’erreur « plein », la lecture dans un tampon vide celle du message d’erreur « vide ». Charge au producteur et au consommateur d’attendre en conséquence. Le rôle de l’automate n’est pas ici de commander une application au sens propre du terme, mais de faciliter l’utilisation d’une ressource. Un exemple de diagramme de transitions réalisant un automate simplifié pourrait être :
non_init
rd & compteur = 0
reset
init
T_plein
T_v ide
wr & compteur = max
rd
wr
reset
reset
wr
rd
Dans ce type de problème l’usage d’un automate, qui pourrait être ici purement logiciel, peut sembler plus lourde qu’une gestion directe du tampon. Cela serait vrai si le producteur et le consommateur appartenaient au même programme séquentiel. Cette situation n’est évidemment jamais le cas, producteur et consommateur sont deux programmes indépendants, voire deux machines indépendantes. L’utilisation d’un automate facilite alors la gestion du parallélisme (fonctionnement indépendant de chacune des parties), c’est pour répondre à ce type de difficulté qu’ils ont été inventés. Pour ceux qui souhaiteraient un exemple du même ordre mais non informatique, la situation ressemble à la gestion des barrières d’accès à un parking : il faut éviter de mettre plus de voitures que le parking n’en contient (le parking vide ne pose guère de problème).

La conception des circuits numériques
Dernier domaine évoqué dans cette introduction : la conception des circuits numériques eux mêmes.
( Machines de Mealy uniquement ) Le schéma bloc qui précède donne la structure générale de pratiquement n’importe quelle fonction logique séquentielle synchrone. Il suffit de dire que le registre d’état, une assemblée de bascules D, passe d’un état à un autre à chaque front du signal d’horloge, en fonction des entrées extérieures. Nous n’avons là rien d’autre que la matérialisation d’un automate dont les transitions sont conditionnées par l’horloge. Mais n’anticipons pas.

Etat et transitions, conditions et actions

Les diagrammes de transitions constituent un langage ; bien que graphique, ce langage doit être dépourvu de toute ambiguïté, il doit donc respecter une grammaire. Ce langage graphique est utile à la compréhension si on en possède bien la signification. Grammaire et sens sont l’objet des quelques précisions qui suivent.

L’état : la mémoire du système
L’état d’un automate constitue la mémoire du système, il contient le résultat des événements précédents et de leur chronologie ; pour reprendre l’exemple du digicode, chaque état (sauf le premier) contient le fait que l’utilisateur a jusqu’ici appuyé sur les bonnes touches, dans le bon ordre. De façon générale, l’intérêt de l’approche « automate » est que l’on mémorise de façon explicite l’historique des entrées d’un système, la longueur des séquences mémorisées apparaît directement sur le diagramme de transitions. Les différentes valeurs possibles de l’état du système sont matérialisées par une variable discrète : un nombre entier ou un type énuméré. Peu importe pour l’instant le détail du codage, l’essentiel est que toutes les valeurs possibles de l’état soient distinctes, cela exclut notamment l’emploi d’un nombre flottant pour représenter l’état de l’automate.

Les transitions : l’évolution du système
Le passage d’un état à un autre est une transition. Une transition matérialise une relation entre l’état actuel, l’état futur et une condition. On peut formellement résumer ceci par une équation de récurrence, en notant Etat(t) la valeur de l’état actuel, celle qui précède une transition, et Etat(t + 1) la valeur de l’état futur, celle qui suit une transition : Etat(t + 1) = fonction(Etat(t), conditions(t)) Bien qu’un peu vague, l’introduction du temps sous forme d’une variable symbolique ‘t’ illustre le lien entre l’évolution du système et les transitions. Il est essentiel de noter qu’une transition peut s’effectuer si, simultanément : 1. L’automate est dans l’état de départ de la transition considérée, 2. La condition de franchissement est vérifiée.

Les conditions : les événements du monde extérieur
Les conditions dépendent du monde extérieur, elles sont liées aux entrées que surveille l’automate. Il est clair que si n’importe quelle entrée peut provoquer une transition n’importe quand, on se heurte à une difficulté non négligeable qui est que la variable « t » précédente, qui symbolise le temps, n’a pas d’unité de mesure fixe. Pire, si plusieurs entrées pilotent le système, on peut assister à des évolutions radicalement différentes pour des écarts de chronologies minimes entre deux suites d’événements extérieurs. Une façon simple de contrôler (pas de supprimer) cette difficulté est d’introduire un cadencement régulier : on impose à l’automate de ne pouvoir changer d’état qu’à des instants prédéterminés par une horloge extérieure. On définit ainsi un automate synchrone. Les signaux en provenance du monde extérieur n’ont pas toujours le bon goût d’être cohérents entre eux, ils proviennent généralement de sources indépendantes qui ne sont pas coordonnées, qui peuvent même être contradictoires ; le but de l’automate est justement de lever les ambiguïtés, d’imposer une coordination.

Où l’on retrouve le monte-charge
Pour illustrer ce qui précède, modifions un peu notre exemple du monte-charge pour le rapprocher d’une commande d’ascenseur : l’automate qui pilote les moteurs reçoit deux ordres en provenance de l’extérieur, « haut » et « bas », qui indiquent respectivement qu’il y a un appel en provenance d’un étage supérieur à celui où est la cabine, ou un appel en provenance d’un étage inférieur. Quand la cabine atteint le niveau appelant, ces deux entrées reviennent à 0. Le diagramme de transitions associé pourrait être :
arret
bas = 1
bas = 0
haut = 1
m=0 d=0 m=0 d=0
m=0 d=1 m=0 d=1
m=1 d=0 m=1 d=0
haut = 0
Ce diagramme est faux : quand l’ascenseur est arrêté on ne sait pas ce qu’il doit faire si les deux conditions « haut » et « bas » deviennent vraies simultanément. La situation est certes rare dans le cas d’un ascenseur, mais il faut lever le doute, en imposant, par exemple, une priorité : on privilégie la descente.

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *