Automatisme : norme 1131-3 et GRAFCET/Le langage FBD de la norme 1131-3

Leçons de niveau 14
Une page de Wikiversité, la communauté pédagogique libre.
Début de la boite de navigation du chapitre
Le langage FBD de la norme 1131-3
Icône de la faculté
Chapitre no 2
Leçon : Automatisme : norme 1131-3 et GRAFCET
Chap. préc. :Introduction
Chap. suiv. :Retour sur le graphe d'état – Langage LD de la norme 1131-3
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « Automatisme : norme 1131-3 et GRAFCET : Le langage FBD de la norme 1131-3
Automatisme : norme 1131-3 et GRAFCET/Le langage FBD de la norme 1131-3
 », n'a pu être restituée correctement ci-dessus.

Le langage FBD (Function Block Diagram)[modifier | modifier le wikicode]

Function Block Diagram est traduit par Boîtes fonctionnelles dans wikipédia.

Le langage FBD (Function Block Diagram) est un langage graphique qui ressemble à la schématique en électronique numérique. Il y a quand même quelques différences :

Exemple de programme FBD

Cela signifie que l’on peut donner un nom à un sous-graphe et que celui-ci peut être exécuté de manière conditionnelle. Par exemple dans la partie gauche de la figure ci-dessus, le OU du bas (nommé NOMMODIF) n'est exécuté que si "manual" et "b1" sont à un simultanément. Nous trouvons cependant la sémantique de ce genre de chose très peu claire : que se passe-t-il sur la sortie "cmd10" si manual" et "b1" ne sont pas simultanément à un ?

Il faut d’autre part éviter les boucles car il n'y a aucune information sur l’ordre d'exécution dans le réseau dessiné et certains programmes (comme à la figure ci-dessous) donnent un résultat différent suivant leur ordre d'exécution.

Boucle en FBD et ses interprétations

Il faut donc garder à l'esprit qu’il s'agit d'un programme et non d'un schéma destiné à être implanter matériellement comme en électronique.

Une autre différence est qu’il est possible de faire des liaisons entre blocs qui ont plusieurs fils. Cela ressemble à un bus mais les données transportées peuvent avoir une signification (nombre flottant ou temps par exemple).

Quelques blocs fonctionnels standards (de la norme 1131-3)[modifier | modifier le wikicode]

Détecteurs de fronts[modifier | modifier le wikicode]

Les détecteurs de front

Il existe deux blocs fonctionnels destinés à détecter des fronts : un pour les fronts montants (R_TRIG), un pour les fronts descendants (F_TRIG). Les voici présentés en image ci-contre.

Ils sont simples, une entrée "CLK" et une sortie "Q".

Les compteurs[modifier | modifier le wikicode]

Il existe trois sortes de compteurs que l’on présente maintenant :

Les compteurs de la norme 1131-3

Dans l'esprit de la norme, les compteurs comptent ou décomptent toujours : PV n’est pas un max mais un seuil qui, quand il est dépassé, passe la sortie à 1. Mais l'envoi d'un front augmentera toujours CV (Current Value) pour CTU (U=Up) et diminuera CV pour CTD (D=Down).

En ce qui concerne CTUD, on remarquera une entrée "LD" qui charge la valeur présente sur "PV".

Les timers[modifier | modifier le wikicode]

Les timers sont des dispositifs destinés à mesurer un temps. Il existe trois sortes de timer.

Diagramme fonctionnel des trois timers

Comme nous pouvons le remarquer, les trois timers ont les mêmes entrées et les mêmes sorties. Puisque ces timers peuvent être utilisés avec d'autres langages (présentés plus loin), nous allons nous contenter d'une description du timer "TON".

Diagramme temporel du timer TON

Nous présentons le diagramme destiné à expliquer le fonctionnement du timer appelé TON.

"ET" Ellapsed Time (temps écoulé) varie sans arrêt quand les conditions nécessaires à son évolutions sont satisfaites. "PT" est un temps qui doit être choisi et entré dans le timer.

Autres blocs fonctionnels[modifier | modifier le wikicode]

Citons d'autres blocs fonctionnels : bistable RS et SR, sémaphore (claim:BOOL,release:Bool;Busy:BOOL). Puisque le lecteur est sensé connaître la logique séquentielle, nous ne détaillerons pas ces blocs. Notons quand même que le sémaphore ne fait pas partie de la logique séquentielle standard mais nous ne l’utiliserons pas dans la suite de ce document (en tout cas sous forme de bloc).