UNIVERSITE APUL SABATIER acultéF Sciences et...

50

Transcript of UNIVERSITE APUL SABATIER acultéF Sciences et...

Page 1: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UNIVERSITE PAUL SABATIER

Faculté Sciences et Ingénierie

Département EEA

Automatique à événements discrets

notes de cours de M. COMBACAU

Licence E.E.A. - Réorientation vers les Etudes Longues

1er février 2018

Page 2: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

Table des matières

Introduction - Historique des automatismes 3

1 Modèle d'un système à événements discrets séquentiel 51.1 Système séquentiel : notion d'état et modèle . . . . . . . . . . . . . . . . . . . . . . 51.2 Mode Synchrone, Mode Asynchrone . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.3 Exemples de systèmes séquentiels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.3.1 Asynchrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.3.2 Synchrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.4 Notations et Hypothèses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.5 Représentation des systèmes à événements discrets séquentiels . . . . . . . . . . . . . 8

1.5.1 Graphe d'état . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.5.2 Représentations tabulaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.5.3 Représentation algébrique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2 Modélisation et commande à événements discrets 162.1 Démarche générale de synthèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.2 Modélisation par diagramme réduit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.2.1 Concept de réceptivité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.2.2 Démarche de modélisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.3 Les temporisations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3 Mise en ÷uvre et norme IEC 1131-3 213.1 Mise en ÷uvre sur support non dédié . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.1.1 Programmation en langage structuré . . . . . . . . . . . . . . . . . . . . . . . 233.1.2 Réalisation par circuits logiques programmables . . . . . . . . . . . . . . . . . 26

3.2 Mise en ÷uvre sur API - Norme IEC 1131-3 . . . . . . . . . . . . . . . . . . . . . . . 313.2.1 Les types et objets manipulés . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.2.2 Présentation des langages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4 Rappels : algèbre de Boole 394.1 Dé�nitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.2 Opérations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.2.1 Négation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.2.2 Opérations OU, ET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.3 Propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.3.1 Propriétés de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4.4 Algèbre de Commutation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.4.1 Algèbre de Boole : Dé�nition . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.4.2 Remarque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4.5 Expressions logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.5.1 Dé�nition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.5.2 Expressions logiques remarquables . . . . . . . . . . . . . . . . . . . . . . . . 414.5.3 Valeur d'une expression logique . . . . . . . . . . . . . . . . . . . . . . . . . . 414.5.4 Propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

1

Page 3: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 2

4.6 Relations d'ordre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.7 Les fonctions logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4.7.1 Fonctions logiques simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424.7.2 Fonctions d'une variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424.7.3 Fonctions de deux variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424.7.4 Fonctions remarquables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424.7.5 Opérateur complet, groupe complet d'opérateurs . . . . . . . . . . . . . . . . 424.7.6 Fonction logique multiple ou fonctions simultanées . . . . . . . . . . . . . . . 434.7.7 Fonction incomplètement spéci�ées : Borne inférieure et Borne supérieure . . 43

4.8 Représentation des fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444.8.1 Représentation tabulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444.8.2 Représentation numérique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444.8.3 Représentation graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444.8.4 Formes algébriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4.9 Formes algébriques remarquables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454.9.1 Théorème de Shannon : cas d'une fonction d'une variable . . . . . . . . . . . 454.9.2 Théorème de Shannon : cas général . . . . . . . . . . . . . . . . . . . . . . . . 454.9.3 Théorème d'expansion de Shannon . . . . . . . . . . . . . . . . . . . . . . . . 454.9.4 Dé�nitions - Terminologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

5 Simpli�cation et Minimisation de fonctions logiques 475.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475.2 Méthode de la table de Karnaugh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

5.2.1 Reconnaître les adjacences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475.2.2 Fonctions incomplètement spécifées. . . . . . . . . . . . . . . . . . . . . . . . 48

5.3 Minimisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495.3.1 Cas des fonctions incomplètement spéci�ées . . . . . . . . . . . . . . . . . . . 49

Page 4: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

Introduction - Historique des

systèmes automatiques

Les automates programmable industriels constituent un support de mise en ÷uvre des"automatismes" industriels logiques ou analogiques.Leur constitution et leur mode de fonctionnement résultent d'une évolution de la technologie etdes concepts de l'informatique temps réel. Ils couvrent aujourd'hui une bonne partie del'informatique industrielle sur le terrain de la commande industrielle.Les premiers systèmes programmables destinés à e�ectuer une action de commande datent dudébut du 19ême sciècle. Ils étaient tous mécaniques et le métier à tisser de Joseph-Marie Jacquarden est certainement la plus belle illustration. Le principe repose sur une rangée de palpeursmécaniques (les aiguilles de Basile Bouchon) capables de détecter les perforations d'un rubanperforé glissant sous cette rangée d'aiguilles. Chaque aiguille est donc animée de mouvementslinéaires de faible amplitude dont la succession dépend en particulier de la disposition desperforations du ruban. Ces mouvements sont utilisés pour commander un système mécaniqueégalement, un métier à tisser en l'occurrence. Pour chaque ruban, un motif di�érent est tissé, ils'agit donc bien d'un système de commande programmable dont le programme est inscrit dans ladisposition des perforations sur le ruban.http ://phototheque.arts-et-metiers.net/ ?idPageWeb=95Ces automatismes sont des pièces de musée de nos jours, mais toutefois, sur les gros engins dechantier, des automatismes hydrauliques, pneumatiques et même mécaniques existent encore. Enparticulier, dans les milieux explosifs (gaz, ra�neries, pyrotechnie...) la technologie pneumatiqueest utilisée pour d'évidentes raisons de sécurité.Toujours au début du 19ême siècle, l'électricité commence à être mieux comprise. Les travauxd'Ampère mirent en évidence la relation entre le magnétisme et le courant électrique(électroaimant). Cette découverte est le préambule à l'invention des moteurs électriques et derelais électromécaniques. Ce n'est qu'à partir du début du 20ême siècle que le relaisélectromécanique prendra sa place dans la conception d'automatismes électromécaniquesdébouchant rapidement sur les "armoires à relais" très en vogue jusqu'aux années 1960.En e�et un peu avant 1950, le transistor a été inventé et son utilisation est venu rapidementsupplanter celles des relais mécaniques. Tension d'alimentation plus faible, consommation moinsimportante, temps de réponse bien meilleur (plus de mouvement mécanique). Les automatismescâblés, circuits électroniques spécialisés conçus pour une tâche donnée ont remplacé rapidementles relais électromécaniques.La création de circuits logiques programmables, des PLD 22V10 jusqu'aux FPGA actuels àrévolutionné les automatismes câblés. La capacité de ces circuits permet d'envisager desapplications extrêmement complexes, en taille et en algorithmique.L'intégration des composants électroniques à rapidement débouché sur la création du microprocesseur. Circuit électronique standard capable d'interpréter une liste de code machines (valeurbinaires) représentant un programme.Notons au passage que le concept de processeur "softcore" programmé sur un FPGA rassemble lesavantages de la logique câblée et de la logique programmée.A ce sujet, l'évolution des microprocesseurs, chez Intel du 4040 (1971) au Core I7 actuel a étéspectaculaire sur bien des plans. Si l'on mesure la puissance d'un micro processeur par le produit

3

Page 5: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 4

(fréquence d'horloge x taille du bus de données x taille mémoire vive) le rapport entre le 4004(F < 1 Mhz, 4 bits de données, 1 ko, demi octet en fait) et un I7 6700 (4 Ghz, 64 bit de données,16 Go) est de 1O9... Il su�t de se remémorer que le programme apollo s'est terminé en 1972, pourcomprendre que les "ordinateurs" de guidage de ces véhicules spatiaux avaient une puissance decalcul ridicule en regard de celle dont nous disposons aujourd'hui pour la commande, même si leI7 n'a pas cette vocation(http ://blog.museeinformatique.fr/Le-premier-ordinateur-sur-la-lune-il-y-a-40-ans_a210.html).La navette spatiale qui volait il y a encore quelques années ne possédait que 5 ordinateursgénéraux de type BM AP-10I13 doté chacun d'un processeur comparable au 8086 d'Intel (premier16 bits). Pourtant le guidage d'un tel engin délivrant une poussée au décollage de plus de 3000tonnes et rentrant dans les couches hautes de l'atmosphère à plus de 28000km/h n'est pas unequestion simple en terme de commande.Il faut donc garder en mémoire qu'aujourd'hui la principale problématique de commande concerneles techniques de modélisation, de véri�cation et de mise en ÷uvre sur le support choisi oudisponible pour l'application à développer. Ce n'est que très rarement qu'une question depuissance de calcul est abordée. Les principaux cas où ces contraintes doivent être prises encompte sont les cas de mise sur le marché grand public (le prix doit être minimal) et le cas desapplications embarquées (où la puissance de calcul peut être limitée).

Page 6: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

Chapitre 1

Modèle d'un système à événements

discrets séquentiel

1.1 Système séquentiel : notion d'état et modèle

Combinatoire ou séquentiel ?

Système combinatoire : les sorties à l'instant t ne sont fonction que des valeurs desentrées à cet instant t.Système séquentiel : les sorties à l'instant t dépendent des valeurs des entrées à t et del'état antérieur du système (des événements passés, du temps ...).Dans un système séquentiel, il existe au moins une sortie dont la valeur à l'instant tdépend

� de la combinaison appliquée sur les entrées à l'instant t� de la séquence des combinaisons appliquées sur les entrées jusqu'à l'instant t

Un système séquentiel conserve une trace de la séquence appliquée sur ses entrées parle biais de variables internes ou variables d'état.

L'étude d'un système séquentiel consiste à prévoir l'évolution des variables d'état et des variablesde sortie.A une variable d'état notée Xi correspond la variable état suivant xi.En notant

� E : le vecteur d'entrée� S : le vecteur de sortie� X = {X1, . . . Xn} : le vecteur état présent (l'état est caractérisé par une valeur de X)� x = {x1, . . . xn} : le vecteur état suivant, sa valeur est celle vers laquelle l'état évoluera.

Ce modèle est représenté �gure 1.1 dans laquelle E,S, x,X repésentent des vecteurs booléens.

Figure 1.1 � Modèle d'un système séquentiel

- F et G sont des blocs combinatoires purs- M est le bloc mémoire, il transforme l'état suivant en état présent : X(t+∆t) = x(t)

5

Page 7: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 6

Illustrons ces concepts par un exemple de la vie courante : un poussoir ma permet d'allumer et demettre en veille un écran (d'ordinateur de bureau par exemple). L'analyse du fonctionnement estici rapide. Quand l'écran est en veille un appui sur ma l'allume et quant il est allumé un appui surle même poussoir ma le place en veille. On pourrait également exprimer qu'à partir d'un étatinitial éteint (mise sous tension) chaque appui de rang impair allume l'écran tandis qu'un appui derang pair le met en veille.On remarque qu'il est impossible de spéci�er le comportement de l'écran sans y faire référence ousans faire référence à la séquence appliquée à ma depuis la mise sous tension. C'est unecaractéristique d'un système séquentiel.Le schéma bloc de ce système de commande peut être représenté comme suit (�gure 1.2).

Figure 1.2 � Modèle FMG de la commande d'écran

Au regard de la �gure 1.1, il apparaît donc qu'un système séquentiel peut également êtrereprésenté par deux fonctions combinatoires multiples F et G. C'est cette représentation qui donneson caractère formel à la description d'un comportement séquentiel car elle s'appuie sur un algèbrede Boole, la structure mathématique ({0,1},ou, et) bien connue...{

x = F (E,X)S = G(E,X)

Cette représentation ne tolère aucune approximation et n'est pas immédiate à déterminer sansméthode rigoureuse.Pour illustrer cette di�culté, cherchons à écrire la représentation algébrique du système decommande d'allumage de l'écran. On peut écrire intuitivement, et naïvement, en utilisant lethéorème d'expansion de Shannon et en convenant sans perte de généralité que X = 0 quandl'écran est en veille, écrire

x = X.F (0,ma) +X.F (1,ma)

Il est toutefois impossible d'aller plus loin car il apparaît immédiatement que F (0,ma) etF (1,ma) sont des fonctions d'une seule variable (ma) c'est à dire l'identité F (ma) = ma, lecomplément F (ma) = ma ou une des fonctions constantes (0 ou 1). Les fonctions constantes sontimmédiatement rejetées car sinon ma n'apparaîtrait plus dans la représentation de F, il reste donc4 cas :

x = X.ma +X.ma = ma ⇒ combinatoire : (ecran = ma)x = X.ma +X.ma = X ⊕ma ⇒ oscillations quand ma = 0x = X.ma +X.ma = X ⊕ma ⇒ oscillations quand ma = 1x = X.ma +X.ma = ma ⇒ combinatoire : (ecran = ma)

Il ressort de cette analyse que, me si la représentation FMG et le texte expliquant lefonctionnement sont simples à comprendre intuitivement, le passage au formalisme qui permettra,en autres, une mise en ÷uvre sans erreur nécessite une démarche structurée. C'est l'objet de cecours !Remarquons également que la constitution du bloc M n'est jamais détaillée, ni décritealgébriquement. En e�et, d'une part, M n'est pas combinatoire et, d'autre part, ne prend quedeux formes di�érentes : retard pur ou échantillonneur-bloqueur.

Page 8: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 7

Constitution des blocs FMG d'une machine à états �nis

� F : combinatoire, calcule la valeur de l'état suivant� M : mémoire élémentaire, retard pur ou échantillonneur-bloqueur� G : combinatoire, calcule la valeur des sorties

1.2 Mode Synchrone, Mode Asynchrone

Le mode de fonctionnement asynchrone ou synchrone (synchronisé par horloge) est lié à laconstitution du bloc M .

Asynchrone : l'élément mémoire est un retard pur M = ∆t le système est ditasynchrone car il réagit (évolue) en réponse à une variation des entrées (voir exemplesection suivante).

Synchrone : M=échantillonneur bloqueur Il existe une entrée supplémentaire ditehorloge appliquée directement sur le bloc M qui rythme les changements d'état du système.Une variation des entrées ne sera prise en compte qu'en présence du signal d'horloge.Un échantillonneur bloqueur élémentaire transfère en sortie Xi la valeur présente surl'entrée xi au front actif de l'horloge.

1.3 Exemples de systèmes séquentiels

1.3.1 Asynchrone

Considérons le circuit électroniqueélémentaire ci-contre, avec initialement

� e = 0 et x = X = S = 0� Après une durée ∆t ⇒ X = 1 et S = 1� Lorsque e repasse

à 0, x = X + e vaut 1⇒ X = 1 et S = 1

Pour une même combinaison des entrées, ici e = 0la sortie peut prendre deux valeurs di�érentesS = 0 initialement et S = 1 en fonction dupassé enregistré dans la variable d'état X valant 0

initialement, puis 1. Ces éléments sont caractéristiques d'un système séquentiel, ici :{x = Mu+XS = X

M peut être vu comme le retard ∆t introduit par l'opérateur OU.

Ce circuit d'auto-maintien permet de mémoriser une information fugitive ou un événement(fonction mémoire). Nous allons le modi�er en introduisant une entrée de mise à zéro, Mz, pourpouvoir le réinitialiser et obtenir le fonctionnement suivant :une impulsion sur Mu conduit à X = 1 et S = 1.une impulsion sur Mz conduit à X = 0 et S = 0.{

x = Mz.(Mu+X)S = X

Mise à zéro prioritaire

{x = Mu+Mz.XS = X

Mise à un prioritaire

Ces circuits constituent des bascules RS avec Mu = S (S pour Set) et Mz = R (R pour Reset).

Page 9: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 8

1.3.2 Synchrone

Considérons une bascule synchrone dite Bascule T (Toggle).

C'est une bascule synchrone pour laquelle :� si l'entrée T = 1 , il y a changement d'état à chaque

front d'horloge,� si l'entrée T = 0, la bascule conserve son état.

Table de vérité :

T x

0 X1 X

Equation fondamentale : x = XT +XT = T ⊕X

1.4 Notations et Hypothèses

� X : état présent� x : état suivant� lorsque X = x le système est dans un état stable� lorsque X = x le système est dans un état transitoire� pour que ce modèle fonctionne, il faut admettre qu'aucune variation d'entrée ne se produit

au moment de l'échantillonnage.Si on ne considère pas les états transitoires on peut dé�nir le système séquentiel par

Xn+1 = F (e,Xn)

s = G(e,Xn)

Pour les réalisations considérées précédemment on aura� RS Mise à zéro prioritaire{

Xn+1 = Mz.(Mu+Xn)s = Xn

x = R.(S +X)s = X

� RS Mise à un prioritaire{Xn+1 = Mu+Mz.Xn

s = Xn

x = S +R.Xs = X

� basculeT{Xn+1 = XnT +XnT = T ⊕Xn

s = Xn

x = XT +XT = T ⊕Xs = X

1.5 Représentation des systèmes à événements discrets

séquentiels

A des �ns d'analyse ou de synthèse, la représentation d'un système séquentiel s'appuie sur 3représentations complémentaires :

1. graphique - la plus abstraite et la plus lisible ;

2. tabulaire - représentation intermédiaire et la plus complète ;

3. algébrique - c'est une forme utilisée pour certaines mises en ÷uvre.

1.5.1 Graphe d'état

Page 10: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 9

Constitution d'un graphe d'état

un sommet correspond à un état et est donc caractérisé par une valeur du vecteurd'état X.

un arc orienté reliant l'état i à l'état j correspond à un changement d'état. Il estétiqueté par une expression logique formée sur les entrées qui en prenant la valeur"1" déclenche l'évolution i → j. Cette expression logique est appelée événement

signi�catif ou encore condition d'évolution.

Les arcs représentent graphiquement le bloc F.

A chaque sommet, est associée la liste des sorties dont la valeur est di�érente de"0". Ces valeurs des sorties peuvent être conditionnées par les entrées. Elles sontalors exprimées par des expressions logiques formées sur les entrées.On n'écrit jamais Sk = 0, c'est une convention, quand une sortie n'est pas associéeà un état, elle vaut 0 dans cet état.

Les listes de sorties associées aux états représentent le bloc G.

Figure 1.3 � graphe d'état du problème de l'allumage de l'écran

La �gure 1.3 montre (à gauche) le graphe d'état correspondant à ce système d'allumage/veilled'écran qui nous a déjà servi d'exemple.On y remarque qu'entre deux arcs portant la condition d'allumage/mise en veille de l'écran (ma),s'interpose un arc portant cette condition complémentée (ma). Sans ceci (à droite), lorsque lacondition ma est vraie, la machine à états �nis change d'état en permanence entre les états 1 et 2pour ne se stabiliser qu'au moment du relâchement du poussoir ma. Ceci ne constitue évidemmentpas le fonctionnement désiré et explique également pourquoi il était di�cile "intuitivement" detrouver une représentation algébrique de "appui sur ma" du début de ce chapître.On y remarque également que la sortie ecran apparaît sur le graphe quand la variable de sortievaut "1". Dans le cas de cet exemple, on écrit ecran tout court plutôt que ecran =′ 1′.

1.5.2 Représentations tabulaires

La représentation tabulaire est constituée par des tableaux de Karnaugh représentant les fonctionsF et G. La présentation de ces tableaux est standardisée, ce qui rend leur lecture plus aisée. Deuxtypes de représentation sont rencontrés correspondant à une représentation exhaustive et unereprésentation plus compacte.

Page 11: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 10

Tables des états, tables des états codés et tables des sorties

Il s'agit de tableaux de Karnaugh classiques pour lesquels on trouve :� en entrée de colonnes : les combinaisons E (entrées) dans l'ordre binaire ré�échi,� en entrée de lignes : les valeurs de X (vecteur d'état).

Deux classes de tables sont nécessaires :- la table des états, représentation tabulaire de la fonction F , contient les valeurs duvecteur état suivant x- la table des sorties, représentation tabulaire de la fonction G, contient les valeurs dessorties S.

Exemple : Système d'allumage/veille de l'écran

X\ ma 0 11 1⃝ 22 3 2⃝3 3⃝ 44 1 4⃝

X\ ma 0 11 0 02 1 13 1 14 0 0

table d'états table des sorties

Construction des tables d'états et de sorties

1. Un arc portant une condition Ck joignant l'état i à l'état j se traduit par la valeurj à l'intersection de la ligne de l'état i et des colonnes dans lesquelles Ck est vraie.Par exemple, l'arc 1

ma→ 2 est représenté par la valeur 2 à l'intersection de la ligne1 et de la colonne ma.

2. Quand tous les arcs sont représentés, la table est complétée en inscrivant dans lescellules vides le nom de l'état apparaissant en entrée de la ligne (raisonnement pardichotomie, il n'y a pas d'évolution pour ces con�gurations).

3. Une valeur de sortie associée à un état i sous la forme suivante S = gi(E) se traduitdans la table des sorties par des points vrais à l'intersection de la ligne de l'état iet dans les colonnes où gi(E) est vraie.

Ces tables prennent également la forme des tables des états codées lorsque la valeur de l'état estreprésentée par la valeur d'un vecteur booléen. Dans ce cas, les combinaisons du vecteur d'étatsuivent l'ordre binaire ré�échi. Les tables (des état et des sorties) sont donc des tableaux deKarnaugh àpartir desquels il est aisé de déterminer la représentation algébrique des blocs F et G. LLe passage des noms d'états symboliques à leur représentation booléenne est appelé le codage. Cecodage peut être quelconque pouvu qu'il a�ecte une valeur distincte à chaque état.En licence EEA, l'utilisation de tables pour déterminer la représentation algébriques de F et Gs'appuyera systématiquement sur un codage minimal en nombre de variables.

Caractéristique du codage minimal

Pour un graphe comportant k états, on choisit n le nombre de composantes de X de tellesorte que

2n−1 < k ≤ 2n

L'application a�ectant un code à chaque état est arbitraire, mais elle est injective, c'està dire que deux états n'ont jamais le même code.

Page 12: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 11

En pratique, on détermine d'abord n, puis on choisit l'a�ectation des états qui simpli�e le plus letravail à faire.Exemple : tables pour le problème de l'écran

Dans notre exemple, on peut choisir le codage suivant sur deux variables puisque le modèlecomporte quatre états :

i 1 2 3 4X1X2 00 01 11 10

Voici les tables qui en découlent (on remplace juste les valeurs de l'état par leur code).

X1X2\ ma 0 100 00 0101 11 0111 11 1010 00 10

X1X2\ ma 0 100 0 001 1 011 1 110 0 1

X1X2\ ma 0 100 0 101 1 111 1 010 0 0

table des états codés table de x1 table de x2

On tire rapidement de ces deux tables :{x1 = X2.ma+X1.max2 = X2.ma+X1.ma

et ecran = X2

L'examen de ces tables permet de retrouver le fonctionnement de la machine à états expliquéprécédemment sur le schéma bloc FMG.

1. Il s'agit de la représentation de la fonction F (table des états) et de la fonction G (tablesdes sorties) donc l'horloge n'apparaît pas dans ces tables.

2. Dans la table d'état, un changement de colonne correspond à la réponse du bloc F et adonc lieu immédiatement lors de la variation d'une entrée.

3. En revanche, le changement de ligne qui correspond à un changement du vecteur d'état Xet donc à la réponse du bloc M (X prend la valeur de x) n'a lieu que lors de l'occurrencede l'événement d'horloge.

La terminologie portant sur les tables des états est très précise car cette représentation est la plus�ne que l'on connaisse pour un système séquentiel.

Une ligne de la table ≡ un état (parfois nommé état interne)Une cellule de la table ≡ un état total

un état total stable est dé�ni par X = xun état total transitoire est dé�ni par X = x

Dans une table des états, en général, on entoure les états stables. Ceci favorise la lecture de latable mais n'a rien d'obligatoire.

Table de Karnaugh à Variables Introduites (TKVI)

La taille de la table d'état devient rapidement prohibitive lorsque le nombre d'entrées croît. Si l'onreprend le problème de la commande d'un ascenseur à 4 étages, le bilan des entrées faitapparaître :

- 4 appels palier

- 4 poussoirs destination dans la cabine

- 4 contacts de position (un à chaque étage)

Ce problème simple possède donc un vecteur d'entrée à 12 composantes, et vouloir dresser unetable des états dans ce cas conduirait à une table possédant 212 = 4069 colonnes... Il n'est pasbesoin de commenter le réalisme d'une telle approche. La TKVI permet de traiter ce type deproblème

Page 13: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 12

Caractéristique d'une TKVI en AED

C'est une table de Karnaugh en entrée de laquelle on ne place que les valeurs du vecteurd'état X.

Dans une cellule de la TKVI (représentative d'un état), on trouve une expression logiqueformée sur les entrées (E) donnant la valeur, dans cet état, de la variable décrite par laTKVI (xi ou Sk).

Remarques :

1. La taille de la table ne dépend que du nombre d'états nécessaires pour décrire lecomportement du système séquentiel.

2. n variables d'états et k sorties ⇒ n+ k TKVI pour résoudre le problème.

3. Cette représentation est plus compacte que les tables des états mais moins précise : leconcept d'état total n'y existe pas.

4. C'est la seule solution applicable en pratique lorsque le système considéré possède plus de 3ou 4 entrées.

5. Cette technique permet de rechercher la représentation algébrique d'une machine à étatsquel que soit le nombre d'entrées.

6. Au dela de 16 états, elle est di�cilement applicable, la taille des TKVI générées devenantprohibitive.

Utilisation des TKVI sur un graphe d'état

Il s'agit donc de déterminer la valeur à inscrire dans une cellule donnée de la TKVI. On procèdenaturellement variable par variable.

Figure 1.4 � Arcs de mise à 1 de la variable Xi

Mise à "1" Considérons un état Qk pour lequel la variable Xi considérée vaut 0. Désignons parQa = {Qa1, ..., Qan} l'ensemble des états accessibles à partir de Qk et pour lesquels Xi vaut "1".En Qk, la variable xi doit passer à 1 dès qu'un arc menant vers un état de Qa est franchissable.Par exemple, si la condition Cs1 devient vraie (préparation du changement d'état vers Qa1), alorsxi = 1. Si nous convenons d'appeler "Condition de Mise à 1" la somme logique CMu =

∑nj=1 Csj

alors, la valeur de xi dans cet état est donnée par CMu. C'est donc CMu qui est portée dans lacellule correspondant à Qk à l'intérieur de la TKVI de xi.

Mise à "0" Considérons maintenant un état Qk pour lequel la variable Xi considérée vaut 1.L'ensemble Ea est l'ensemble des états accessibles à partir de Qk et dans lesquels Xi vaut 0.En Qk, la variable xi doit passer à 0 dès qu'un arc menant vers Ea est franchissable. Par exemple,si la condition Cs1 devient vraie (préparation du changement d'état vers Qa1), alors xi = 0. Sinous convenons d'appeler "Condition de Mise à 0" la somme logique CMz =

∑nj=1 Csj alors, la

valeur de xi dans cet état est donnée par CMz. C'est donc CMz qui est portée dans la cellulecorrespondant à Qk à l'intérieur de la TKVI de xi.

Page 14: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 13

Figure 1.5 � Arcs de mise à 0 de la variable Xi

TKVI de la variable d'état xi et de la sortie Sk

- Les cellules dans lesquelles la variable Xi vaut '0' reçoivent la condition de mise àun (CMu) de cette variable dans cet état.

- Les cellules dans lesquelles la variable Xi vaut '1' reçoivent le complément de lacondition de mise à zéro (CMz) de cette variable dans cet état.

Pour la sortie Sk, chaque cellule reçoit la valeur de la sortie Sk associée à l'état corres-pondant.

Application à l'exemple de l'écran

X1\X2 0 10 0 ma1 ma 1

X1\X2 0 10 ma 11 0 ma

X1\X2 0 10 0 11 0 1

TKVI pour x1 TKVI pour x2 TKVI pour ecran

Il est facile de constater que ce type de représentation, contrairement à une table d'état classique,ne permet pas de visualiser aisément les changements d'état du système séquentiel. Il s'agit doncbien ici d'une étape intermédiaire de recherche des expressions logiques de la réalisation envisagée.

Extraction d'une expression algébrique d'une TKVI

Nous prenons un cas général dans lequel nous supposons que la table contient, outre des1, des 0,des ∗ et n expressions logiques ELi formées sur les entrées.

1. Considérer toutes les ELi comme des 0, chercher les implicants premiers du tableaude Karnaugh. On obtient l'expression logique F0.

2. Pour chaque expression logique ELi

(a) Considérer les 1 de la TKVI initiale (ou de F0) comme des ∗(b) Remplacer les occurrences ELi par des 1

(c) Remplacer les occurrences ELj = Eli par des 0

(d) On obtient ainsi une nouvelle table de Karnaugh d'où l'on extrait Fi.

L'expression contenue dans la table à variables introduites s'écrit alors

F0 +n∑

i=1

ELi.Fi

Exemple :

Page 15: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 14

X1

X2X3 00 01 11 10

0 1 0 0 *1 ELi Elj * *

Recherche de F0 : on remplace ELi et ELj par des 0

X1

X2X3 00 01 11 10

0 1 0 0 *1 0 0 * *

F0 = X1.X3Recherche de Fi : le "1" en [000] est remplacé par "*", ELi par 1 et ELj par 0.

X1

X2X3 00 01 11 10

0 * 0 0 *1 1 0 * *

Fi = X3Recherche de Fj : le 1 en [000] est remplacé par "*", ELj par 1 et ELi par 0.

X1

X2X3 00 01 11 10

0 * 0 0 *1 0 1 * *

Fj = X1.X3On a donc

x1 = F0 + ELi.Fi + ELj .Fj

d'où :

x1 = X1.X3 + ELi.X3 + ELj .X1.X3

L'application aux trois TKVI de l'exemple de l'écran conduit à :{x1 = X1.X2 +X2.ma +X1.max2 = X1.X2 +X1.ma +X2.ma

et ecran = X2

Cette représentation n'est pas identique à celle trouvée à l'aide de tables d'états codés. Toutefois,on peut remarquer que la seule di�érence concerne les termes consensus, illustrant ainsi, sur cetexemple, l'équivalence des deux méthodes.

1.5.3 Représentation algébrique

Il s'agit de deux fonctions logiques multiples F et G.Nous avons vu comment déterminer cette représentation à l'aide de table des états codés et àl'aide de TKVI.Il est parfois plus e�cace d'utiliser un codage 1 parmi n pour déterminer cette représentation, iln'est alors pas nécessaire de passer par des tables des états.

Caractéristique du codage 1 parmi n

Pour un graphe comportant n états, on choisit un vecteur X à n composantes

Les seuls codes utilisés sont ceux pour lesquels une et une seule variable est à '1'

Page 16: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 15

Figure 1.6 � Cas général du codage 1 parmi n

Ce codage permet de déterminer les expressions logiques des variables d'état par lecture du graphed'état.

Recherche de la représentation algébrique avec un codage 1 parmi n

La variable Xi (�gure 1.6) doit être mise à 1 lorsqu'un arc d'un état Xpk vers Xi estfranchissable. La condition Cpk doit aussi être évaluée à vrai. La condition de mise à1 pour cet arc s'écrit donc Xpk.Cpk et pour l'ensemble des états à partir desquels une

transition est possible vers Xi, elle s'écrit :n∑

j=1

Xpj .Cpj

La variable Xi doit repasser à 0 dès qu'un arc quittant l'état Xi est franchissable. Pour

l'ensemble des arcs quittant l'état Xi, la condition de mise à 0 s'écrit donc :m∑

k=1

Csk

L'expression algébrique de la variable xi s'écrit donc en�n :

xi =n∑

j=1

Xpj .Cpj +Xi.m∑

k=1

Csk

et doit être interprétée comme

xi = Condition de mise à "1" de Xi +Xi.Condition de mise à "0" de Xi

Pour les sorties, on écrira que

Si =

n∑k=1

Xk.gk(E)

gk(E) étant la valeur de Si dans l'état caractérisé par Xk = 1.

Dans l'exemple du système d'allumage/veille de l'écran, en a�ectant à l'état i le code pour lequelseule la variable Xi est à '1', on obtient :

x1 = X4.ma +X1.[ma]x2 = X1.ma +X2.[ma]x3 = X2.ma +X3.[ma]x4 = X3.ma +X4.[ma]

et ecran = X2 +X3

Quel que soit le nombre d'états, cette démarche est plus rapide pour obtenir une représentationalgébrique d'une machine à états �nis. Toutefois, le nombre de variables est plus important et lareprésentation plus lourde à mettre en ÷uvre.

Page 17: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

Chapitre 2

Modélisation et commande à

événements discrets

Introduction

Nous ne nous intéressons dans ce cours qu'aux systèmes à événements discrets dont l'évolution estrythmée par un signal d'horloge appliqué directement sur l'échantillonneur-bloqueur du bloc deretour d'état M .Ce signal n'apparaît pas pendant la conception (qui porte sur les blocs F et G) car il s'agit d'uneparticularité de la mise en ÷uvre. Le mode asynchrone introduit des contraintes supplémentairesde réalisation et n'est pas au programme de licence EEA.

2.1 Démarche générale de synthèse

Nous pouvons résumer les diverses étapes de la synthèse sur le schéma ci-dessous.

Figure 2.1 � démarche générale de synthèse d'un système de commande séquentiel

2.2 Modélisation par diagramme réduit

Contrairement à la démarche d'Hu�man, seules les combinaisons d'entrée devant produire uneévolution seront prises en compte dans la représentation du système séquentiel. Ainsi, les limitesdu pouvoir de description (quelques entrées pour la méthode d'Hu�man) sont repoussées. Cettedémarche s'appuie sur le concept de réceptivité.

16

Page 18: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 17

2.2.1 Concept de réceptivité

A un instant donné, un système séquentiel n'est généralement sensible qu'à un faible nombre decombinaisons du vecteur d'entrée. Dans notre modèle, ceci se traduit par le fait qu'à partir d'unétat donné, peu de combinaisons du vecteur d'entrée doivent être prises en compte.Exemple : ascenseur à n étages.

A partir d'un état "arrêt à l'étage 1", seul les appels vers les n− 1 autres étages doivent être prisen compte. Par ailleurs, il est inutile d'envisager, à partir de cet état d'arrêt, une quelconqueévolution de la partie du vecteur d'entrée correspondant aux capteurs de position de la cabine(celle-ci étant à l'arrêt sur la capteur "étage 1").Il en résulte une simpli�cation du graphe d'état, mais cette simpli�cation se paye au prix de laperte de l'aspect systématique de la méthode d'Hu�man.

2.2.2 Démarche de modélisation

La modélisation est également incrémentale. On part d'un état dont on pressent fortementl'existence à la lecture du cahier des charges.

Modélisation par graphe d'état réduit

1. Identi�er un état de départ

2. Pour chaque état non encore examiné

(a) Rechercher les réceptivités

(b) Créer les états cibles si nécessaire

(c) Attribuer les valeurs des sorties

3. Supprimer les indéterminismes.Il s'agit de véri�er que les arcs sortant d'un état portent bien des réceptivitésexclusives. Si ce n'est pas le cas, une priorité linéaire est introduite sur les arcspour supprimer l'indéterminisme.

4. Supprimer les instabilités.Il s'agit de véri�er qu'il n'existe pas de cycle dont toutes les réceptivités pourraientêtre évaluées à "1" en même temps. Si un tel cycle existe, il convient de modi�erau moins une des réceptivités du cycle pour éviter cette instablité.

Exemple : four de traitement thermique

Il s'agit de commander un four de traitement thermique. Ce four est équipé des capteurs T100,T800 et T1000 (Tx = 1 quand T�>x), des poussoirs pupitre m(arche) et a(rrêt) et desactionneurs P(réchau�e), C(hau�e) et V(errouillage porte).L'appui sur m lance un cycle de traitement. Tant que la température n'a pas atteint 800�, P et Csont mis à "1".

Figure 2.2 � Graphe d'état réduit pour le four de traitement thermique

Page 19: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 18

La température est ensuite régulée entre 800� et 1000� par une commande "tout ou rien". Quelleque soit la phase de fonctionnement, dès que l'opérateur appuie sur a, les résistances de chau�esont coupées a�n de permettre au four de refroidir. En�n, la porte doit être verrouillée tant que latempérature dépasse 100�. Une solution à ce cahier des charges est donnée par la �gure 2.2. Lesconditions a apparaissant en rouge sur le graphe garantissent le déterminisme de la réalisation(exclusion des arcs avec ceux étiquetés a) et correspondent au traitement 3 de l'encadré"Modélisation par graphe d'état réduit".Exemple : recherche de la représentation algébrique

Il s'agit juste d'un exemple d'application, choisissons d'abord le codage minimal indiquéci-dessous.

i 1 2 3 4 5X1X2X3 000 001 011 010 110

Y1Y2Y3

00 01 11 10

0 0 a a a

1 * * * A = A

X1X2X3

00 01 11 10

0 0 T800.A+A 1 1

1 * * * A = A

Y1Y2Y3

00 01 11 10

0 M.A A T1000.A+A T800.A

1 * * * 0

D'où les expressions suivantes :x1 = a.X2 + a.X3

x2 = X1.X2 +A.X2 + (T800.A+A).X3

x3 = M.A.X2.X3 +A.X2.X3 + (T1000.A+A).X2.X3 + T800.A.X1.X2.X3

Toujours à titre d'exemple, voici la représentation algébrique obtenue avec un codage 1 parmi n.

i 1 2 3 4 5X1X2X3X4X5 10000 01000 00100 00010 00001

Ce codage est souvent dé�ni par "l'état i est codé par la variable Xi".

x1 = X5.A+X1.M.A

x2 = X1.M.A+X2.(T800.A+A)

x3 = X2.T800.A+X4.T800.A+X3.(T1000.A+A)

x4 = X3.T1000.A+X4.(T800.A+A)

x5 = X2.A+X3.A+X4.A+X5.A

V = X1.T100 +X2.T100

+X3 +X4 +X5.T100P = X2

C = X2 +X3

Cette méthode convient bien lorsque le nombre de variables d'état n'est pas réellement limité(FPGA ou mise en ÷uvre logicielle).

Page 20: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 19

2.3 Les temporisations

Les machines à états �nis ne disposent d'aucun moyen de gestion des durées, elles ne représententque le comportement logique de la commande.Or dans bien des cas, il est nécessaire de gérer une durée : gestion d'un cycle de feux tricolores,distinction appui court/appui long sur un poussoir, etc.

Un temporisateur

Le rôle du temporisateur est de retarder le passage à '1' d'un signal. Ce type de tem-porisateur est nommé "TON" pour "Temporisation à la montée (ON)".Il faut admettre une fois pour toutes que ce temporisateur est extérieur au modèlemachine à états décrivant la commande.L'interaction du modèle de commande avec un temporisateur est donc similaire à l'inter-action avec le système à commander.

La réprésentation symbolique d'un système de commande disposant d'un temporisateur est lasuivante (�gure 2.3).

Figure 2.3 � Système de commande avec temporisateur

Dans la majorité des cas, le temporisateur est implanté sur le support de mise en ÷uvre (API,microcontrolleurs) mais ce n'est pas une nécessité.Vu de la machine à états, chaque temporisateur utilisé est assorti de deux signaux : Tempoi unesortie qui permettra à la MEF de déclencher l'exécution du temporisateur et FinTempoi uneentrée qui passera à '1' quand le signal Tempoi est resté actif pendant la durée du temporisateur.La remise à '0' du signal FinTempoi est e�ectuée par le temporisateur lorsque le signal Tempoipasse à '0' (�gure 2.4).

Figure 2.4 � fonctionnement d'un temporisateur "TON"

Remarque, lorsqu'un temporisateur doit être déclenché deux fois par une machine à états, il estimpératif de s'assurer que le signal tempoi passe à '0' entre les deux déclenchements.Exemple : clignotement d'une led (c'est plus écologique)

Le cahier des charges est très simple : la led led doit clignoter avec un rapport cyclique 0,5 et unepériode de 1 seconde. Ceci nécessite la création de deux temporisateurs de durée 0,5 seconde quenous nommerons Tempo1 et Tempo2. Le �gure 2.5 montre le modèle de cette commande.La nécessité d'utiliser deux temporisateurs apparaît clairement sur ce graphe. Si le signal de sortietempo1 était associé aux deux états, d'une part, il ne passerait jamais à '0' donc le temporisateur

Page 21: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 20

Figure 2.5 � Clignotement d'une led

ne fonctionnerait qu'une fois et, d'autre part, après passage à '1' de FinTempo1, une instabilitéapparaîtrait dans le modèle.La discrimination d'appui court/appui long sur un poussoir est très utilisée dans les dispositifsmodernes : arrêt ou marche d'un smartphone, répétition d'une touche sur un clavier, etc. Deuxexercices touchant cette catégorie de problèmes seront traités en TD.

Page 22: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

Chapitre 3

Mise en ÷uvre et norme IEC 1131-3

Introduction

La mise en ÷uvre consiste dans la plupart des cas à implanter les expressions logiques sur lesupport de réalisation choisi, à implanter une mise en ÷uvre par description comportementaledans un langage structuré (VHDL, C ou ST), ou à utiliser un environnement de programmationgraphique adapté à la mise en ÷uvre du GRAFCET (SFC). Nous considérerons ici desréalisations :

� sur automates programmables bien sûr !� par circuits logiques programmables en VHDL,� logicielles en langage C.

Pour chaque support la technique de mise en ÷uvre des expressions logiques et la mise en ÷uvredirecte du graphe seront décrites. La �gure 3.1 résume tous les cas de �gure ayant unesigni�cation.

Figure 3.1 � Les solutions de mise en ÷uvre pour les commandes séquentielles

Il faut rappeler que la mise en ÷uvre d'un GRAFCET nécessite un langage approprié (SFC surAPI, par exemple) et que sans outil particulier de traduction en code standard, la mise en ÷uvren'est pas possible directement. Dans cette partie, nous montrons comment mettre en ÷uvre unemachine à états �nis sur des supports di�érents de l'API : calculateur standard, microcontrôleuret circuit logiques programmable (CPLD, FPGA).L'idée sous-jacente est que n'importe quel GRAFCET peut être facilement représenté par unemachine à états dans laquelle chaque état est associé à une situation du GRAFCET et chaque

21

Page 23: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 22

transition correspond au franchissement d'une transition (ou d'un groupe de transition franchiessimultanément). Cette partie donne donc une méthode générale et systématique de mise en ÷uvredu GRAFCET sur des support variés. Les cas de mise en ÷uvre répertoriés dans la �gure 3.1 sontcommentés ci-dessous :

1. GRAFCET DIRECT sur API en SFC. C'est le cas standard

2. GRAFCET DIRECT sur API en ST. Compte tenu de l'évolution synchrone sous-jacente duGRAFCET et de la possibilité du parallélisme, ceci n'est pas immédiat. La solutiongénérique passe par une description des étapes et des transitions. Non vu dans ce cours carsi ST existe, il est fort probable que SFC existe, il est donc préférable de se ramener au cas 1.

3. GRAFCET DIRECT sur microcontrôleur en langage structuré (C, C++...). Solution toutà fait envisageable aussi. La solution est similaire à celle proposée pour le cas No2.

4. GRAFCET DIRECT sur FPGA en VHDL. C'est une solution tout à fait possible qui permetla mise en ÷uvre câblée d'une spéci�cation GRAFCET. Non vue dans ce cours, traité audeuxième semestre en M1 ISTR.

5. GRAFCET EXPRESSIONS ALGEBRIQUES sur API en ST. Même si cela estenvisageable, le langage ST n'est pas le mieux adapté à la description d'expressionslogiques. Possible donc, mais non vu dans ce cours.

6. GRAFCET EXPRESSIONS ALGEBRIQUES sur API en LD ou IL. Il faut donc passer parune représentation booléenne du GRAFCET. Ceci est possible en considérant uneextension du codage 1 parmi n vu pour les machines à états. Non vu dans ce cours.Constitue une solution pour la mise en ÷uve d'un GRAFCET sur un automate n'o�rantpas le SFC (nano-automates par exemple).

7. GRAFCET EXPRESSIONS ALGEBRIQUES sur FPGA en VHDL. Comme dans le casprécédent, nécessite une description booléenne du GRAFCET. La mise en ÷uvre desexpressions logiques en VHDL est possible. Toutefois, la mise en ÷uvre n'étant pas directe,nous utiliserons une autre technique si l'on doit utiliser GRAFCET et FPGA.

8. GRAFCET EXPRESSIONS ALGEBRIQUES sur microcontrôleur en langage structuré.Possible, avec les mêmes réserves que dans le cas No2.

9. MEF DIRECT sur API en SFC. C'est un cas particulier d'un GRAFCET ne comportantaucun parallélisme.

10. MEF DIRECT sur API en ST. Cas très intéressant car permet d'e�ectuer la programmationhors de l'environnement graphique SFC du logiciel de programmation d'un automate.

11. MEF DIRECT sur FPGA en VHDL. Cas idéal. Le langage VHDL propose l'environnement"PROCESS" permettant de décrire le comportement d'une machine à états. Lecompilateur VHDL prend en charge toutes les autres étapes de la synthèse.

12. MEF DIRECT sur microcontrôleur en langage structuré. Cas idéal également car lelangage permet une description comportementale de la MEF. La aussi le compilateur prenden charge toutes les autres étapes.

13. MEF EXPRESSIONS ALGEBRIQUES sur API en LD ou IL. Cas le plus courant deréalisation des automatismes séquentiels. La technique de codage 1 parmi n ou parminimisation du nombre de variables internes permet obtenir les expressions algébriquesdes blocs F et G.

14. MEF EXPRESSIONS ALGEBRIQUES sur FPGA en VHDL. Une telle réalisation seraitassez maladroite. En e�et, comme nous l'avons vu dans le cas No11, le compilateur VHDLprend en charge le calcul des expressions logiques. Pourquoi le faire à la main ?

15. MEF EXPRESSIONS ALGEBRIQUES sur microcontrôleur en langage structuré. C'estune très bonne solution pour des applications critiques et/ou embarquées dans lesquelles lapuissance de calcul est un critère important. En e�et, avec une mise en ÷uvre directe (casNo12) le processeur exécute bien plus de code que lorsqu'il s'agit de mettre en ÷uvre desexpressions logiques.

Page 24: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 23

Après cette description, voyons maintenant les techniques permettant ces di�érentes formes deréalisation. Dans la suite de cette partie, nous utiliserons l'exemple du four de traitementthermique et son codage 1 parmi n tel qu'il a été dé�ni au chapitre précédent (Figure 2.2 et� 2.2.2) pour illustrer toutes les méthodes.On obtient les expressions logiques suivantes :

x1 = X5.A+X1.M.A

x2 = X1.M.A+X2.(T 800.A+A)

x3 = X2.T 800.A+X4.T800.A+X3.(T 1000.A+A)

x4 = X3.T1000.A+X4.(T800.A+A)

x5 = (X2 +X3 +X4).A+X5.A

3.1 Mise en ÷uvre sur support non dédié

3.1.1 Programmation en langage structuré

Programmation des expressions logiques F et G

Algorithme général :

Début

Déclarations

Initialisations

Répéter

Lecture des entrées

Bloc F : calcul de Ysuivant,

Bloc M : Xpresent <- Xsuivant

Bloc G : calcul des sorties

Validation des sorties

jusqu'à fin

Fin

Notons que sur un calculateur non spécialisé, la boucle sans �n de commande doit être gérée parl'utilisateur. Si le système d'exploitation le permet (c'est généralement le cas avec un systèmed'exploitation multitâches) le programme de commande peut être déclenché périodiquement. Il necomporte donc pas de boucle explicite.Si l'implantation doit être e�ectuée sur une cible ne comportant pas cette fonctionnalité, c'est auprogrammeur d'écrire une boucle sans �n, par exemple grâce à l'instruction C

while (1)

{

/* lecture entrées */

/* calcul F, M, G */

/* écriture des sorties */

}

Les exemples ci-dessous sont traités dans ce cadre. Exemple de réalisation :Xi et xi représentent la valeur de la variable d'état i à l'état présent et à l'état suivant.Les expressions logiques sont calculées à partir des opérateurs ET (&&), OU(||) et NON ( !)

#include <stdio.h>

#include ``bibli.h'' /* bibli.h à remplacer par le nom de la bibliothèque */

/* donnant accès aux fonctions d'entrée et de sortie */

void main(void)

{

/* déclarations et initialisations */

Page 25: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 24

int M, A, T100, T800, T1000;

int X1=1, X2=0, X3=0, X4=0, X5=0, x1, x2, x3, x4, x5;

int V, P, C;

while (1) /* boucle infinie */

{

/* lecture des entrées */

M =entree(bitM); /* bitx : adresse de l'entree x */

A =entree(bitA);

T100 =entree(bitT100);

T800 =entree(bitT800);

T1000=entree(bitT1000);

/* bloc F */

x1 = (X5&&!A)||(X1&&!(M&&!A)) ;

x2 = (!X1&&M&&!A)||(X2&&!(T800&&!A||A));

x3 = (X2&&M&&!A)||(X4&&!T800&&!A)||(X3&&!(T1000&&!A||A));

x4 = (X3&&T1000&&!A)||(X4&&!(!T800&&!A||A);

x5 = ((X2||X3||X4)&&A)||(X5&&A);

/* bloc M */

X1 = x1 ;

X2 = x2 ;

X3 = x3 ;

X4 = x4 ;

X5 = x5 ;

/* bloc G */

V = T100&&(X1||X2||X5) || X3 ||X4;

P = X2;

C = X2 || X3;

/* ecriture des sorties */

sortie(bitV,V);

sortie(bitP,P);

sortie(bitC,C);

} /* fin du while */

}

Programmation directe du graphe d'état

On réalise un codage 1 parmi n (logiciel) c'est à dire que l'état est codé par une variable entièrequi prend donc une valeur parmi n.Deux variables EtatPresent et EtatSuivant prenant leur valeur dans l'énumération des étatssont nécessaires.La technique de mise en ÷uvre s'appuie sur l'instruction de choix multiple : le switch du C.On retrouve les trois blocs du modèle des systèmes séquentiels :

� F : détermination de l' état suivant� M : mémorisation,� G : calcul des sorties

Dans cet exemple, Etati est le nom de l'état pour lequel Yi = 1 dans le codage 1 parmi n duparagraphe précédent.

#include <stdio.h>

Page 26: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 25

#include ``bibli.h'' /* bibli.h à remplacer par le nom de la bibliothèque */

/* donnant accès aux fonctions d'entrée et de sortie */

void main(void)

{

/* déclarations et initialisations */

enum etat{ Etat1, Etat2, Etat3, Etat4, Etat5} EtatPresent=Etat1, EtatSuivant=Etat1;

int M, A, T100, T800, T1000;

int V, P, C;

while (1) /* boucle infinie */

{

/* lecture des entrées */

M =entree(bitM); /* bitx : adresse de l'entree x */

A =entree(bitA);

T100 =entree(bitT100);

T800 =entree(bitT800);

T1000=entree(bitT1000);

/* Evolution du graphe */

switch (EtatPresent )

{

case Etat1 : if (M&&!A) EtatSuivant=Etat2;

break;

case Etat2 : if (A) EtatSuivant = Etat5;

else if(T800) EtatSuivant=Etat3;

break;

case Etat3 : if (A) EtatSuivant = Etat5;

else if (T1000) EtatSuivant = Etat4;

break;

case Etat4 : if (A) EtatSuivant=Etat5;

else if(!T800) EtatSuivant = Etat3;

break;

case Etat5 : if (!A) EtatSuivant=Etat1;

break;

default : EtatSuivant = Etat1;

} /* fin switch */

/* bloc M */

EtatPresent=EtatSuivant;

/* bloc G */

V = T100;

P = (EtatPresent==Etat2);

C = (EtatPresent==Etat2) || (EtatPresent==Etat3);

/* ecriture des sorties */

sortie(bitV,V);

sortie(bitP,P);

sortie(bitC,C);

} /* fin du while */

}

Page 27: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 26

3.1.2 Réalisation par circuits logiques programmables

Circuits logiques programmables : PLD

Couramment appelés PLD (Programmable Logic Device), ces circuits sont, avec les mémoiresprogrammables, les prédécesseurs des familles de circuits logiques modernes. Les plus courantssont les circuits de type X22V10 (PLD22V10, GAL22V10, . . . ).Un circuit logique programmable est constitué d'une matrice ET programmable (précédée d'unecouche de NON) et suivie d'une matrice de OU �xe. Les expressions logiques calculées (Eli) sont

S10

S1El1

El10

H

D

Cellule de sortie

OUMatrice

πs

π1

Matrice ET programmable

e12e1

Figure 3.2 � Structure d'un PLD

de la forme somme de produits ΣΠ où Πi est un produit de variables d'entrée (e1 . . . e12,S1 . . . S10).Par programmation Eli est connecté à Si

� à travers une bascule D,� directement,� déconnecté et alors Si est une entrée.

Dans le cas de la réalisation d'un système séquentiel synchrone, les blocs F et G sont mis en÷uvre par les matrices ET, OU, le bloc M est réalisé par la cellule de sortie, et le rebouclage estalors réalisé à travers une bascule D.

Circuits logiques programmables complexes : CPLD

Un CPLD (Complex Programmable Logic Device) intègre plusieurs PLD et les interconnecte parun commutateur.Chaque LAB (Logic Array Block) est équivalent à un PLD.Le réseau d'interconnexion est noté PIA (Programmable Interconnect Array).Le circuit utilisé en TP est un ALTERA de la série MAX7000S (EPM7128SLC84-6).

Circuits logiques programmables à très forte intégration : FPGA

Un circuit FPGA (Field Programmable Gate Array) peut être vu comme un circuit programmableà deux couches.

Page 28: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 27

E

S

LAB

E

S

LAB

E

S

LAB

E

S

LAB

PIA

...

PIA : Programmable Interconnect Array

LAB : Logic Array Block

Figure 3.3 � structure d'un CPLD

Une couche opérationnelle comportant des macro-cellules (CLB pour Con�gurable Logic Bloc - enFrançais CLC pour Cellule Logique Con�gurable), des matrices d'interconnexion (Switch Matrix -en français Cellule d'Interconnexion) et des groupes de lignes horizontaux et verticaux.Une couche de con�guration constituée d'un ensemble de bascules D pour un FPGA SRAM oud'un ensemble d'antifusibles pour un FPGA de type PROM. La programmation du FPGAconsiste à inscrire des informations dans la couche de con�guration de manière à connecter entreeux les CLC de la couche opérationnelle a�n de réaliser le fonctionnement désiré. Une CLCcontient, outre la partie combinatoire pure, une ou plusieurs bascules D.Fonctionnellement, les circuits logiques programmables peuvent être utilisés indi�éremment pourréaliser un système séquentiel. Il faut tout de même signaler que la majorité des FPGA sontcon�gurés par le contenu d'une SRAM perdu à chaque coupure d'alimentation. A la mise soustension, ces FPGA SRAM rechargent leur con�guration à partir d'une mémoire externe appelée"mémoire de con�guration" qui ne doit pas être volatile.

Chaîne de développement

A partir d'une description, si possible de haut niveau, le système de commande est synthétisé (leséquations logiques sont calculées). Le �chier résultant peut être téléchargé sur une cible et leséquations résultant de l'étape de synthèse sont réalisées. Il s'agit d'une réalisation matérielle.En TP programmation peut être faite avec le logiciel Quartus d'Altera .

Le langage VHDL

VHDL est l'acronyme de Very (high scale Integrated circuit) High-level Description Language.C'est donc, comme son nom l'indique, un langage de description de haut niveau.

Page 29: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 28

Figure 3.4 � Structure d'un FPGA

La paire entité/architecture En VHDL un système est décrit par une paireentité/architecture.Mots clefs : entity/architecture.

- entity : description de l'interface, vision externe de l'application- architecture : description du fonctionnement interne

Pour un système de commande ces deux visions donnent lieu à deux descriptions regroupées dansle même �chier.Chaque signal se voit obligatoirement attribuer :

� un nom,� un mode (IN, OUT )� un type ( bool, bit, std_logic . . . )

Pour notre exemple la paire entity/architecture est de la forme :

library ieee;

use ieee.std_logic_1164.all;

entity exempleFour is

PORT (M,A,T100,T800,T1000 : IN std_logic ;

horloge : IN std_logic ;

V, P, C : OUT std_logic

);

end exempleFour;

architecture commande of exempleFour IS

...

end commande;

Modes de fonctionnement Deux modes de fonctionnement, concurrent (ou parallèle) etséquentiel, sont possibles.

1. mode concurrentLes instructions d'une architecture sont (sauf exception) évaluées en permanence et toutessimultanément.

A <= B; A prend la valeur de B

B <= C ; et B prend la valeur de C

A tout moment A, B, C ont la même valeur, l'ordre des instructions n'a pas d'importance.

Page 30: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 29

De même A <= B and C ;B <= D and E ;

est équivalent à

B <= D and E ;A <= B and C ;et probablement mis en ÷uvre par le synthétiseur en A = C.D.E

Ce fonctionnement concurrent est le fonctionnement par défaut. Le fonctionnementséquentiel est explicite.

2. mode séquentielPour décrire un fonctionnement séquentiel il faut construire un processus, mot cléPROCESS.Un PROCESS est un groupe délimité d'instructions, ses caractéristiques sont :� le processus s'exécute à chaque changement d'état des signaux auxquels il est déclaré

sensible ;� les instructions s'exécutent séquentiellement ;� les modi�cations apportées aux valeurs des signaux par les instructions ne prennent

e�et qu'à la �n du processus.Structure d'un processus :

PROCESS (liste de sensibilités)

-- partie déclarative : variables locales du process

begin

-- corps du process

end PROCESS;

Exemple : Bascule D - Description incomplète-

PROCESS (horloge)

if (horloge='1') then

X<=D;

end if;

end PROCESS;

Les instructions sont exécutées séquentiellement et Y ne prend vraiment sa nouvelle valeurque lorsque le PROCESS s'achève.

Pour des informations sur VHDL consulter les nombreux ouvrages disponible à la bibliothèqueuniversitaire sur le sujet.

Exemple de mise en ÷uvre : description directe du graphe

Il est nécessaire de déclarer des variables qui prennent leur valeur dans une liste de valeurs

TYPE etat IS (etat0, etat1, etat2, etat3);

SIGNAL EtatPresent, EtatSuivant : etat;

Les variables EtatPresent et EtatSuivant qui sont internes sont déclarées SIGNAL.Le bloc F décrit l'évolution du graphe d'état et est décrit avec une instruction de choix multiple(CASE).

library ieee;

use ieee.std_logic_1164.all;

entity exempleFour is

PORT (M,A,T100,T800,T1000 : IN std_logic ;

horloge : IN std_logic ;

V, P, C : OUT std_logic

);

end exempleFour;

Page 31: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 30

architecture commande of exempleFour IS

type etat IS (etat1, etat2, etat3, etat4, etat5);

signal EtatPresent, EtatSuivant : etat;

begin

--------- bloc F

PROCESS(EtatPresent, M, A, T100, T800, T1000)

begin

case EtatPresent IS

when etat1 =>

if ((M = '1') and (A='0')) then EtatSuivant <= etat5;

else EtatSuivant <= EtatPresent;

end if;

when etat2 =>

if (A = '1') then EtatSuivant <= etat5;

elsif (T800 = '1') then EtatSuivant <= etat3;

else EtatSuivant <= EtatPresent;

end if;

when etat3 =>

if (A = '1') then EtatSuivant <= etat5;

elsif (T1000='1') then EtatSuivant <= etat4;

else EtatSuivant <= EtatPresent;

end if;

when etat4 =>

if (A = '1') then EtatSuivant <= etat5;

elsif (T800='0') then EtatSuivant <= etat3;

else EtatSuivant <= EtatPresent;

end if;

when etat5 =>

if (A = '0') then

EtatSuivant <= etat1;

else EtatSuivant <= EtatPresent;

end if;

end PROCESS;

------- bloc M

PROCESS ( horloge)

begin

if (horloge'event and horloge='1')

then EtatPresent <= EtatSuivant;

end if;

end PROCESS;

------- bloc G

V <= T100;

with (EtatPresent) select

P <= '1' when Etat2,

'0' when others;

Page 32: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 31

with (EtatPresent) select

C <= '1' when Etat2 | Etat3,

'0' when others;

end commande;

Il est tout à fait possible, comme en langage C sur calculateur, de coder le graphe en 1 parmi npuis de programmer les expressions logiques du bloc F et du bloc G qui en résultent. Toutefois, lecompilateur VHDL e�ectuant lui même automatiquement une réalisation de type 1 parmi n à partirdu �chier source, il est complètement inutile de faire le travail "à la main" sur le papier...

3.2 Mise en ÷uvre sur API - Norme IEC 1131-3

introduction

La norme IEC 61131-3 dé�nit cinq langages de programmation destinés aux automatesprogrammables. On y trouve :

� Deux langages booléens, le LD (LADDER) diagramme à relais, langage graphique et le IL,liste d'instructions, langage textuel.

� Un langage structuré, le ST, texte structuré, langage textuel proche du pascal et du C.� Un langage basé sur les schémas blocs, le FBD (Functional Bloc Diagram)� Un langage graphique, SFC, Sequential Function Chart, qui est très proche du GRAFCET.

Utilisé en dehors de sa spéci�cité, chacun des ces langages peut conduire à une application peuélégante et/ou peu lisible. Par exemple l'utilisation de SFC pour la description d'une applicationcombinatoire serait extrêmement maladroite...

3.2.1 Les types et objets manipulés

Ils sont classiques pour un langage structuré.Les types de base sont les suivants :

� booléen : BOOL valeur logique (TRUE ou FALSE) ;� entier : DINT valeur continue entière ;� réel : REAL valeur continue réelle ;� temporisation : TIME valeur de temps ;� chaîne : STRING chaîne de caractères.

Deux types structurés complètent ceci :� array : tableau de valeurs de type identique ;� struct : collection de champs de type pouvant être di�érents ;

La norme dé�nit des étiquettes absolues pour désigner des objets manipulés dans le programme(variables, constantes, etc.). La forme générale est : % classe type [AdresseCarte].AdresseVoieAvec Classe :

� I : entrée� Q : sortie� M : mot mémoire interne� C : compteur� TM : temporisateur� X : étape GRAFCET

et Type :� X : bit� W : entier (Word)� D : entier (double Word)

Exemple : %Q3.0 adresse de la sortie N�0 sur la carte N�3

Page 33: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 32

3.2.2 Présentation des langages

IL (liste d'instructions)

Nous utiliserons son caractère langage booléen pour programmer des machines à états.L'automate peut être considéré comme un processeur booléen possédant un accumulateur booléen(acc) auquel se rapportent toutes les instructions du langage.Instructions de modi�cation de la valeur de l'accumulateur (l'opérande x est une variablebooléenne)Chargement LD x acc← xOU Logique OR x acc← acc+ xET logique AND x acc← acc.xOU EXCLUSIF XOR x acc← acc⊕ x

Ces quatre instructions peuvent s'appliquer à un opérande complémenté.Chargement LDN x acc← xOU Logique ORN x acc← acc+ xET logique ANDN x acc← acc.xOU EXCLUSIF XORN x acc← acc⊕ x

Instructions de stockage de la valeur de l'accumulateur (l'opérande x est une variable booléenne)ST x x← accSTN x x← acc

Instructions de saut ( non utilisées dans ce cours)JMP %Lx (saut inconditionnel à l'étiquette Lx)JMPC %Lx (saut conditionnel (acc = vrai) à l'étiquette Lx)JMPCN %Lx (saut conditionnel (acc = faux) à l'étiquette Lx)

Remarque : les instructions ST, STN, JMP, JMPC et JMPNC ne modi�ent pas la valeur del'accumulateur

Structure d'un programme IL Un programme IL est composé d'une succession de phrasesqui sont exécutées séquentiellement dans l'ordre où elles sont programmées. Une phrase estelle-même structurée en plusieurs blocs

� un commentaire (* ceci est un commentaire *)� une étiquette symbolique %Lx : non utilisé en licence EEA� une liste d'instructions dont la première doit être, dans ce cours un chargement (LD ou

LDN)Une phrase est en général associée à une structure logique de l'application comme, par exemple,une expression logique.Exemple : soit à programmer l'expression logique y = x1.(x2.x3)

(* calcul de l'expression logique de y *)

LD x1

AND (x2

NOT

OR x3

)

ST y

Notez l'utilisation des parenthèses qui permettent d'exprimer des formes produit de sommes sansles développer. De même, notez que le complément d'une variable apparaissant au début d'uneparenthèse se fait en faisant suivre son identi�cateur du mot clé NOT à la ligne suivante. Il s'agitd'une spéci�cité du logiciel que vous utiliserez en Travaux pratiques (Unity Pro de Schneider). Ilest possible de faire des appels à des blocs fonctionnels (comme les temporisateurs par exemple)dans un programme IL. Vous trouverez des précisions dans le cahier de manipulations qui voussera remis pour les travaux pratiques.

Page 34: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 33

Programmation d'une machine à états Il s'agit de la programmation des expressionslogiques des variables internes et des sorties.La structure du programme sera toujours la suivante (ici avec une entrée d'initialisation "init",l'état initial choisi étant toujours celui pour lequel x1 = 1).

(* programmation des expressions logiques du bloc F de la machine à états *)

LD Xp5

ANDN A

OR (Xp1

AND (M

NOT

OR A

)

)

ST Xs1

...

...

ST Xs5

(* programmation du bloc M *)

LD Xs1

or init

ST Xp1

LD Xs2

ANDN init

ST Xp2

...

LD Xs5

ANDN init

ST Xp5

(* programmation du bloc G *)

LD T100

ST V

...

Vous remarquerez que l'initialisation des variables internes est faite dans le bloc M au moment dela mise à jour du vecteur d'état :

� mise à 1 : Xi = xi + init� mise à 0 : Xj = xj .init

De même la programmation des expressions logiques en IL ne permet pas de calculer lecomplément d'une expression logique exp1 au sein d'une autre expression exp2. Si ledéveloppement de l'expression exp2 est trop délicat (ce n'est jamais le cas, mais bon...) alors ilfaut d'abord calculer exp1 et stocker son complément avec STN dans une variable temporaire(%Mx) qui est ensuite utilisée dans exp2. C'est la seule véritable contrainte existant dans celangage pour la programmation d'expressions logiques.

le langage LD

Ce langage a été inventé au tout début de l'existence des API pour permettre une transition endouceur des automatismes câblés vers les API. Il est donc certainement intéressant de le connaîtreet de l'avoir pratiqué au moins une fois.

Page 35: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 34

Le principe du langage LD est de décrire les expressions logiques sous la forme d'un circuitélectro-mécanique : les bobines des relais sont les récepteurs et les contacts sont les variables del'application de commande. La programmation se fait à l'aide d'une interface graphique et estbasée sur les trois opérateurs de base de l'algèbre de Boole : NON, OU et ET.Le ET est obtenu en plaçant en série deux contacts, le OU est obtenu en les plaçant en parallèle.Un contact "barré" permet d'obtenir l'opérateur complément. En�n comme avec IL, le récepteur(Bobine du relais) peut lui-même être complémenté (voir �gure 3.2.2).

Figure 3.5 � Structures de base en LD

Les expressions programmées dans ce schéma sont les suivantes :� M1 = a, opérateur complément,� M2 = a.b, opérateur ET,� M3 = a+ b, opérateur OU,� M4 = a.b, récepteur (bobine) complémentée.

Bien que le schéma LD ressemble à un schéma électromécanique, il faut toujours avoir présent àl'esprit que le processeur de l'API n'exécute qu'une seule instruction à la fois. Le programme LDs'exécute du haut en bas et de la gauche vers la droite.La programmation d'une machine à états �nis en LD va donc comporter les trois zones habituelles :

� F : détermination de l'état suivant (calcul des variables Y Xsi)� M : mémorisation, (Xpi reçoit Xsi)� G : calcul des sorties (sortie fonction des Xpi et des entrées)

Vous traiterez un problème de programmation LD en travaux pratiques. Ce langage ne fera pasl'objet d'autre développement dans ce polycopié.

Le langage ST

Il s'agit d'un langage structuré, comme le C, permettant de traduite aisément tout algorithmecomportant des choix, des itérations, etc. Nous l'utiliserons bien en deça de ses capacités dedescription pour e�ectuer une programmation directe (comportementale) des graphes d'état.

les instructions du langage� A�ectation

A := expression

� Choix

IF condition1 THEN action_if1;

ELSEIF condition2 THEN action_if2;

...

Page 36: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 35

ELSEIF conditionk THEN action_ifk;

ELSE action_else ;

END_IF ;

Les conditions peuvent être multiples. Chaque action représente une liste d'instructions.Plusieurs IF peuvent être imbriqués, le nombre de ELSEIF est en théorie illimité (enpratique, il est forcément limité) mais il y a au maximum une partie ELSE (il peut ne pas yen avoir).

� SélectionCette instruction de sélection permet d'éviter des constructions lourdes impliquant ungrand nombre de ELSEIF. Elle est très similaire à l'instruction switch du langage C. Nousl'utiliserons pour la programmation des machines à états �nis.

CASE ValeurEntiere OF

valeur1 : instruction1; (* une valeur particulière *)

valeurb, valeurd : instruction2; (* un ensemble de valeurs non consécutives *)

valeurn..valeurm : instruction3; (* un intervalle de valeurs *)

else : instruction else;

END_CASE;

� Boucles

FOR indice:= valeurinitiale TO valeurfinale DO

action ;

END_FOR ;

L'action représente une liste d'instructions. L'incrémentation de l'indice se faitautomatiquement. Plusieurs FOR peuvent être imbriqués (jusqu'à 8 en pratique).

WHILE condition DO

action ;

END_WHILE;

La condition peut être aussi complexe que le permet le langage. L'action représente uneliste d'instructions. Plusieurs WHILE peuvent être imbriqués (jusqu'à 8 en pratique)..

REPEAT

action ;

UNTIL condition

END_REPEAT;

La condition peut être multiple. L'action représente une liste d'instructions. PlusieursREPEAT peuvent être imbriqués.L'instruction EXIT permet d'arrêter l'exécution d'une boucle et de continuer surl'instruction suivant l'instruction �n de boucle. Cette instruction est rattachée à la boucleenglobante la plus proche, elle n'arrête pas toutes les boucles qui l'englobent.

� OpérateursLOGIQUE : and, not, or, xor

RELATIONNEL : <, >, <=, >=, =, <>

mise en ÷uvre d'une machine à états Compte tenu de la structure du langage, unprogramme mettant en ÷uvre une machine à états �nis aura une structure très similaire à celledécrite pour la programmation en C. Les variables EtatPresent et EtatSuivant doivent être detype DWord dans l'environnement que vous utiliserez en TP.Exemple du four

(*bloc F*)

Page 37: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 36

Case EtatPresent of

Etat1 : IF ((not A) and M) THEN EtatSuivant:= Etat2 ;

END_IF;

Etat2 : IF (A) THEN EtatSuivant:= Etat5;

ELSEIF (T800) THEN EtatSuivant:= Etat3;

END_IF ;

Etat3 : IF (A) THEN EtatSuivant:= Etat5;

ELSEIF (T1000) THEN EtatSuivant := Etat4;

END_IF ;

Etat4 : IF (A) THEN EtatSuivant:= Etat5;

ELSEIF (NOT T800) THEN EtatSuivant := Etat3;

END_IF ;

Etat5 : IF (NOT A) THEN EtatSuivant:= Etat1;

END_IF ;

ELSE : EtatSuivant := Etat1;

END_IF ;

(*bloc M*)

IF (NOT Reset) THEN

EtatPresent:= EtatSuivant;

ELSE

EtatPresent := Etat1 ;

END_IF ;

(*bloc G*)

V:= T100;

...

Il serait bien sûr possible, mais maladroit, de calculer les expressions logiques des Xsi et de lesprogrammer en ST. Le langage dispose en e�et de tous les opérateurs nécessaires au calculbooléen. A l'évidence la programmation directe du graphe d'état est à la fois plus simple et pluslisible ce qui est un atout considérable lorsqu'il s'agit de reprendre un programme pour le modi�erou pour le mettre au point.

Le langage SFC

Ce langage est directement inspiré du GRAFCET. Il est d'ailleurs exclusivement réservé à laprogrammation de GRAFCET. On y retrouve les étapes, les transitions, les structures divergenceET, convergence ET, divergence OU et convergence OU. La programmation du GRAFCET estprincipalement e�ectuée à l'aide d'une interface graphique.Il convient toutefois de s'attarder sur les détails qui di�érencient GRAFCET et SFC.

Structure du programme SFC Il est composé de trois parties distinctes qui sont exécutéesséquentiellement :

� Le traitement préliminaire (PREL) : il comprendra tous les traitements liés à l'initialisationet à la reprise d'un programme interrompu. On peut aussi y calculer les réceptivités lesplus complexes pour stocker le résultat dans une variable booléenne de l'automate (%Mx).Ce dernier cas est toutefois très rarement nécessaire.Dans la pratique, vous n'utiliserez que très rarement le traitement préliminaire.

� Le traitement séquentiel (CHART) : c'est dans ce traitement que l'on programme leGRAFCET généralement sous forme graphique.Les réceptivités sont généralement programmées à partir de cette page dans un langage devotre choix : LD, IL ou ST. En toute logique, le langage IL devrait être préféré pourprogrammer les réceptivités. Cela n'est toutefois pas une obligation.

Page 38: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 37

Trois types d'actions peuvent être associés à une étape à partir de la page deprogrammation séquentielle :

1. les actions ponctuelles à l'activation : actions ponctuelles de la norme GRAFCET.

2. les actions ponctuelles à la désactivation : duales des précédentes, elles ne sontexécutées que lorsque l'étape est désactivée.

3. les actions continues qui sont exécutés uniquement lorsque l'étape est active. Il ne fautpas les confondre avec les actions maintenues décrites au chapitre précédent. Une actioncontinue n'est pas remise à 0 quand l'étape est désactivée. En e�et, l'étape n'étant plusactive, le traitement associé à l'action continue n'est plus exécuté et la variable sujet del'action reste dans l'état que lui a imposé la dernière a�ectation avant que l'étape nesoit désactivée.

� le traitement postérieur (POST) : il est exécuté après la mise à jour de la situation duGRAFCET par l'API. C'est dans cette section qu'il convient de programmer toutes lesactions maintenues. Attention, comme dans tout programme de commande, chaque sortiene doit recevoir qu'une seule a�ectation. Dans le cas contraire, la dernière a�ectation e�aceles précédentes. Il y a donc une adaptation entre la spéci�cation GRAFCET des sorties etla programmation dans le traitement POST.Dans la spéci�cation, nous avons vu que chaque étape actionnait un ensemble de sorties,alors que lors de la programmation, c'est chaque sortie qui reçoit la somme logique desétapes qui l'activent.

Cas des temporisations En spéci�cation, une temporisation est dé�nie par une réceptivitéparticulière : (Tx/durée/condition de déclenchement). En programmation, la durée est �xée aumoment de la con�guration de l'automate, le nom du temporisateur %Tx est considéré comme unesortie du GRAFCET alors que dans la réceptivité de la transition temporisée, le signal de �n detempo est constitué par la sortie du bloc temporisateur (%Tx.Q). Il ne faut donc pas oublier deprogrammer l'activation du temporisateur Tx dans la zone POST du programme.

Contraintes liées aux environnements de programmation Comme vous le constaterezchaque fois que vous programmerez un automate programmable industriel, chaque constructeur aadapté la norme IEC à sa façon. Il faut tenir compte de ces spéci�cités pour écrire un programmeGRAFCET. Toutefois, un e�ort de normalisation est en cours pour dé�nir un standard basé sur lelangage XML pour la description des applications ciblées API (voir http ://www.plcopen.org/).

Page 39: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

Annexes - Rappels de combinatoire

38

Page 40: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

Chapitre 4

Rappels : algèbre de Boole

4.1 Dé�nitions

Une variable booléenne binaire (logique), notée x, ne peut prendre que deux états : 0 et 1.Axiomex = 0 si et seulement si x = 1x = 1 si et seulement si x = 0.x ∈ B2 = {0, 1}x scalaire (par opposition à vectoriel)Soit x une variable à n composantes :x = (xn−1, . . . , x1, x0)xi composante de x a pour domaine de dé�nition B2 = {0, 1}.x a pour domaine de dé�nition Bn

2 .Une valeur x0 de Bn

2 est appelée combinaison ou point de Bn2 .

Bn2 comprend 2n points.

4.2 Opérations

4.2.1 Négation

Opération unaire. NON, PAS, COMPLEMENTATIONApplication qui à tout élément de B2 fait correspondre l'autre élément de B2 (noté x, ou ¬x).

4.2.2 Opérations OU, ET

Opérations binaires.Applications qui à tout élément de B2 ×B2 font correspondre un élément de B2.Opération OU ou DISJONCTION (réunion dans le domaine des ensembles)(a, b) ∈ B2 ×B2 → a+ b ∈ B2 (a+ b = 0⇔ a = b = 0)Opération ET ou CONJONCTION (intersection dans le domaine des ensembles)(a, b) ∈ B2 ×B2 → a.b ∈ B2 (a.b = 1⇔ a = b = 1)

Tables de vérité

a a0 11 0

a b a+b0 0 00 1 11 0 11 1 1

a b a.b0 0 00 1 01 0 01 1 1

Logigrammes

39

Page 41: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 40

Ou EtComplément

Figure 4.1 � logigrammes des opérateurs de base

4.3 Propriétés

4.3.1 Propriétés de base

P1 : involution ¯x = x

P2 : idempotence x+ x = x et x.x = x

P3 : commutativité x+ y = y + x et x.y = y.x

P4 : associativité (x+ y) + z = x+ (y + z) et (x.y).z = x.(y.z)

P5 : Complémentarité x+ x = 1 et x.x = 0

P6 : Eléments neutres et absorbants x+ 0 = x, x.1 = x et x+ 1 = 1, x.0 = 0

P7 : Distributivité x.(y + z) = x.y + x.z et x+ y.z = (x+ y).(x+ z)

P8 : Théorème de DE MORGAN. x+ y = x.y et x.y = x+ y

P9 : Inclusion� absorption x+ x.y = x et x.(x+ y) = x� simpli�cation x+ x.y = x+ y et x.(x+ y) = x.y

P10 : Règle du consensusx.y + x.z + y.z = x.y + x.z et (x+ y).(x+ z).(y + z) = (x+ y).(x+ z)

4.4 Algèbre de Commutation

4.4.1 Algèbre de Boole : Dé�nition

Un ensemble B contenant au moins deux éléments, notés 0 et 1 et muni de deux opérationsbinaires addition (+) et multiplication (.) et d'une opération unaire dite de complémentation estun algèbre de Boole s'il possède les propriétés suivantes :

� les opérations binaires sont commutatives,� les opérations binaires sont associatives,� 0 est élément neutre pour l'addition, 1 pour la multiplication,� chaque opération binaire est distributive par rapport à l'autre,� la somme d'un élément et de son complémentaire est 1, le produit d'un élément et de son

complémentaire est 0.Donc le système algébrique constitué de B2 et des opérations ET, OU, PAS est un algèbre deBoole (cf P3 à P7).Pour l'ensemble {B2, ET, OU, PAS} on utilise abusivement le terme d'algèbre de Boole (ce n'estpas l'algèbre de Boole . . . ) mais plus précisément l'algèbre de commutation.

4.4.2 Remarque

Pas de soustraction ou de division.x.y = x.z ⇏ y = z Exemple : x = 0 et y = zx+ y = x+ z ⇏ y = z Exemple : x = 1 et y = z

Page 42: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 41

4.5 Expressions logiques

4.5.1 Dé�nition

Une expression logique est une combinaison cohérente de variables de commutation et des troisopérations ET, OU, PAS.Exemples : E1 = x, E2 = x1.x0 + x, E3 = x+ x.y + x.z ...

4.5.2 Expressions logiques remarquables

littéral : Expression composée d'une seule variable x, xmonôme : Produit de littéraux, Exemple : x2x1x0

monal : Somme de littéraux. Exemple x2 + x1 + x0

une expression Somme de Produits∑∏

est une réunion de monômes. Exemple : x1.x0 + x3.x2

une expression Produit de Sommes∏∑

est une intersection de monals. Exemple :(x3 + x2 + x0).(x2 + x0)diviseur : Un diviseur d'un monôme m est obtenu en supprimant un nombre quelconque delittéraux à ce monôme.Exemple : x3.x2.x0 admet comme diviseurs : x3.x2, x3.x0, x2.x0 (suppression d'une variable) etx3, x2, x0 (suppression de deux variables).

4.5.3 Valeur d'une expression logique

Soit E(x) = E(xn−1 . . . x0), on peut associer à cette expression une valeur E(x0) pour unecombinaison x0 de x. Cette valeur est obtenue en remplaçant dans l'expression E1 l'occurrence desvariables xn−1, . . . , x0 par les valeurs qu'elles prennent dans la combinaison x0.A toute combinaison x0 de x correspond une valeur et une seule.Exemple : soit x = (x2, x1, x0) et E(x) = x2 + x1.x0 x0 = (0, 0, 1)⇒ E(x0) = 0 + 0.1 = 0Il y a égalité de deux expressions logiques E1 et E2 si et seulement si leurs valeurs sont égalespour toute combinaison x0 de x (E1(x0) = E2(x0) ∀ x0).

4.5.4 Propriétés

� Toutes les propriétés sur les variables logiques sont valables pour les expressions logiques(commutativité, associativité, ...)

� Principe de dualité :Les égalités entre expressions logiques restent vraies quand :

1. on interchange les opérateurs binaires (ET ↔ OU)

2. on complémente les constantes qui y apparaissent (0 ↔ 1)

Exemple :(complémentarité) x+ x = 1↔ x.x = 0

4.6 Relations d'ordre

1. Relation d'ordre total sur B2 dé�nie par 0 < 1

2. Ordre partiel sur les combinaisons Soit x = (xn−1, xn−2, ..., x1, x0) ∈ Bn2 et

x0 = (x0n−1, x

0n−2, ..., x

01, x

00) et x

1 = (x1n−1, x

1n−2, ..., x

11, x

10) deux combinaisons de x

Par dé�nition :x1 ≤ x0 ⇔ x1

i ≤ x0i ∀i ∈ [0, n− 1]

Exemple : soient x1 et x0 deux combinaisons de x = (x1, x0).x1 = (0, 1)x0 = (1, 1)

⇒ x1 ≤ x0 etx1 = (0, 1)x0 = (1, 0)

⇒ x1 ? x0

3. Ordre partiel sur les expressions : Soient E1(x) et E2(x) deux expressions logiquesformées sur la variable x(x ∈ Bn

2 ).E1(x) ≤ E2(x)⇔ E1x

0 = 1⇒ E2(x0) = 1 ∀ combinaison x0 de x

Page 43: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 42

Une expression logique E1 est ≤ E2 si le domaine de véracité (ensemble des combinaisonsdonnant la valeur 1 à l'expression) de E1 est inclus dans celui de E2.

4.7 Les fonctions logiques

4.7.1 Fonctions logiques simples

Une fonction logique simple de n variables est une application qui à toute combinaison x0 dex ∈ Bn

2 fait correspondre un élément de B2,Bn

2 → B2

f : x→ y = f(x)Le nombre de points de Bn

2 est 2n, à chacune de ces combinaisons on fait correspondre 0 ou 1 : ⇒le nombre de fonctions simples de n variables est 22

n

.Points vrais, points faux : Une fonction simple divise l'ensemble des combinaisons de Bn

2 endeux parties

� les points vrais tels que f = 1,� les points faux tels que f = 0.

4.7.2 Fonctions d'une variable

x U0 U1 U2 U3

0 0 0 1 11 0 1 0 1

U0 et U3 sont les fonctions constantesU1 fonction identitéU2 fonction complément

4.7.3 Fonctions de deux variables

.

x y f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f150 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 10 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 11 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

4.7.4 Fonctions remarquables

fonction NAND, NON ETf14 = x.y = x+ y, notée x | yfonction NOR, NON OUf8 = x+ y = x.y, notée x ↓ yPropriétés :

� commutative� non associative� non idempotente

Ou exclusifOU EXCLUSIF, SOMME MODULO 2 :f6 = x⊕ yLes di�érentes expressions du XOR :Propriétés :

� commutative� associative� non idempotente

4.7.5 Opérateur complet, groupe complet d'opérateurs

Un ensemble d'opérateurs (éventuellement un seul) est complet si, à l'aide de cet ensemble onpeut exprimer sous forme algébrique toute fonction booléenne de n variables.

OU , ET, NON est complet ;

Page 44: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 43

ET, NON est complet ;

OU, NON est complet ;

NAND est complet ;

NOR est complet ;

OU exclusif et OU, OU exclusif et ET , Implication, Inhibition sont complets àl'aide d'une constante.

4.7.6 Fonction logique multiple ou fonctions simultanées

Application qui toute combinaison x ∈ Bn2 fait correspondre y ∈ Bq

2

Système logique à n entrées et q sorties.Exemple : additionneur binaire 2 bits avec retenue.

4.7.7 Fonction incomplètement spéci�ées : Borne inférieure et Borne

supérieure

Soit B∗2 = {0, ∗, 1}.

Une fonction logique incomplètement spéci�ée est une application de Bn2 vers B∗

2 . Lescombinaisons mises en relation avec l'élément * sont des points non spéci�és. En ces points, lafonction peut prendre indi�éremment la valeur 0 ou 1.Notation :Bn

2 → B∗2

f∗ : x → y = f∗(x)Relation d'ordre dans B∗

2 : 0 < ∗ < 1

Combinaisons :Pour 2 combinaisons x et y de B∗

2n

x ≤ y ⇔ xi ≤ yi (vrai pour toutes les composantes i de 1 à n, relation d'ordre dé�nie dansB∗

2 )

Fonctions :f∗(x) ≤ g∗(x) ⇔ ∀x0 ∈ Bn

2 f∗(x0) ≤ g∗(x0).Une fonction incomplètement spéci�ée est bornée par deux fonctions complètementspéci�ées� borne inférieure (les points non spéci�és sont vus comme des points faux)� borne supérieure (les points non spéci�és sont vus comme des points vrais)

f∗︸︷︷︸ ≤ f∗ ≤︷︸︸︷f∗

Page 45: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 44

4.8 Représentation des fonctions

4.8.1 Représentation tabulaire

Table de vérité

Ecriture directe de la correspondance

Bn2 → B2 ou B∗

2

Bn2 → Bp

2 ou B∗2p

Table de Karnaugh

Les combinaisons des variables sur les lignes et les colonnes sont codées en Gray (ou binaireré�échi).

4.8.2 Représentation numérique

Donne la réunion des points vrais de f. Les points étant exprimés en binaire ou décimal. Exemple :f1(x2, x1, x0) = R1(0, 3, 6, 7)10.f∗2 (x3, x2, x1, x0) = R1(0, 3, 6, 7, 11, 12, 15)10 +R∗(2, 4, 13, 14)10.

4.8.3 Représentation graphique

Les logigrammes sont fréquemment utilisés pour représenter les fonction logiques. Ils s'appuientsur deux normes MIL806 et IEC 617.

Figure 4.2 � les symboles des logigrammes suivant les normes

4.8.4 Formes algébriques

(traitées section suivante)

Page 46: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 45

4.9 Formes algébriques remarquables

4.9.1 Théorème de Shannon : cas d'une fonction d'une variable

Soit f(x) une fonction de la variable logique x.

f(x) = x.f(0) + x.f(1) Forme∑∏

Ce théorème peut être démontré par induction (en énumérant tous les cas ici deux : x = 0 etx = 1).

Le théorème précédent est vrai ∀f et donc peut s'appliquer à la fonction f , ce qui conduit àf(x) = x.f(0) + x.f(1) et en complémentant f(x) nous obtenons une deuxième forme duthéorème de Shannon :

f(x) = (x + f(0))(x + f(1)) Forme∏∑

4.9.2 Théorème de Shannon : cas général

Soit x ∈ Bn2 x = (xn−1, · · · , x1, x0) et f(x) une fonction logique. Dé�nissons

ω ∈ Bn−12 ω = (xn−1, · · · , xj+1, xj−1, · · · , x1, x0) (x sans la composante xj)

On écrit : f(x) = f(ω, xj) et l'on a :

f(x) = xj .f(ω, 0) + xj .f(ω, 1) (Forme∑∏

)

f(x) = [xj .+ (ω, 1)] + [xj .f(ω, 0)] (Forme∏∑

)

4.9.3 Théorème d'expansion de Shannon

On montre qu'en appliquant n fois le théorème de Shannon, toute représentation algébrique d'unefonction f(x) peut se mettre sous les deux formes suivantes :

1- Forme∑∏

du théorème d'expansion

f(x) = xn−1. · · · .x1.x0.f(0, · · · , 0, 0) + · · · + xn−1. · · · .x1.x0.f(1, · · · , 1, 1)

2- Forme∏∑

du théorème d'expansion

f(x) = [xn−1 + · · ·+ x1 + x0 + f(1, · · · , 1, 1)]. · · · .[xn−1 + · · ·+ x1 + x0 + f(0, · · · , 0, 0)]

4.9.4 Dé�nitions - Terminologie

Première forme canonique d'une fonction logique

� C'est la forme∑∏

obtenue par le théorème d'expansion de Shannon.� Chaque monôme contient toutes les variables (minterme : produit des variables)� Elle est contituée de la somme (logique) des mintermes aux points vrais de la fonction.

Deuxième forme canonique d'une fonction logique

� C'est la forme∏∑

obtenue par le théorème d'expansion de Shannon.� Chaque monal contient toutes les variables (maxterme : somme des compléments des

variables)� Elle est constituée du produit (logique) des maxtermes aux points faux de la fonction.

Page 47: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 46

Remarque : Les formes canoniques s'obtiennent facilement à partir d'une représentation tabulaire.

exemple :XOR(x1, x0)x1 x0 XOR(x1, x0)0 0 XOR(0, 0)=00 1 XOR(0, 1)=11 0 XOR(1, 0)=11 1 XOR(1, 1)=0

f(x) = x1.x0.XOR(0, 0) + x1.x0.XOR(0, 1) + x1.x0.XOR(1, 0) + x1.x0.XOR(1, 1)f(x) = x1.x0.0 + x1.x0.1 + x1.x0.1 + x1.x0.0f(x) = x1.x0 + x1.x0

Pour obtenir la deuxième forme canonique on peut� appliquer les résultats découlant du théorème d'expansion (intersection des maxtermes aux

points faux)� ou bien rechercher la forme canonique

∑∏de la fonction f(x) et complémenter cette

expression.

Implicant ou monôme d'une fonction

Soit mi un monôme apparaissant dans l'expression∑∏

d'une fonction f .f(x) = mk + · · ·+mi + · · ·+m1 +m0

mi = 1 ⇒ f(x) = 1 (mi est un implicant de f)

Implicant premier d'une fonction

Un implicant est premier si aucun de ses diviseurs n'est lui-même implicant de la fonction.

Implicant redondant - Implicant irredondant

Soit E1(x) = mk + · · ·+mi+1 +mi +mi−1 + · · ·+m1 +m0 une forme∑∏

de f(x). mi est unimplicant redondant de f(x) si et seulement si E2(x) = mk + · · ·+mi+1 +mi−1 + · · ·+m1 +m0

est aussi une forme∑∏

de f(x). mi est irredondant dans le cas contraire.

Exemple : f(x) = x2.x1 + x1.x0 + x2.x0 + x2.x1.x0 (fonction majorité).m = x2.x1.x0 est redondant, les trois autres sont irredondants.

Base d'une fonction

C'est une ensemble d'implicants dont la somme logique est une représentation algébrique de lafonction considérée.

Base première d'une fonction

C'est un ensemble d'implicant premier qui forme une base de la fonction.

Base première complète d'une fonction

C'est l'ensemble des implicants premiers d'une fonction. Elle est unique.Pour une fonction incomplètement spéci�ée, par dé�nition, il s'agit de la base première complètede sa borne supérieure.

Remarque : lorsqu'on parle de base d'une fonction logique, on confond souvent l'ensemble des

implicants et la forme∑∏

qui en découle. C'est un abus de langage toléré.

Page 48: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

Chapitre 5

Simpli�cation et Minimisation de

fonctions logiques

5.1 Introduction

But : recherche d'une expression logique d'une fonction qui minimise un critère appelé coût.Cette notion de coût est liée au problème de la réalisation de la fonction (à coût minimal).Dans le cadre de ce cours on cherchera une expression logique de la fonction sous forme ΣΠ. Nousconsidèrerons

� que le coût d'une fonction est égal à la somme des coûts des monômes qui le constituent� et que le coût d'un monôme est égal aux nombres de littéraux de ce monôme.

Exemple : f(x) = x2 + x1x0

Coût de f(x) = Coût (x2) + Coût(x1x0) soit 1 + 2.Simpli�cation et Minimisation

Simpli�cation : Recherche de la Base Première Complète (BPC).BPC = Σ IP.Méthodes : méthode de la table de Karnaugh et méthodes algébriques (Quine et McCluskey, Consensus ...). Seule la première de ces méthodes (table de Karnaugh) seradeveloppée ici.

Minimisation : Procédure de choix parmi les Implicants Premiers pour aboutir àl'expression minimale de f ou base minimale.Des outils tel la table de choix peuvent être utilisés pour minimiser des fonctions logiquesde grande taille. Dans le cadre de ce cours, orienté commande de systèmes à événementsdiscrets, les simpli�cations et minimisations seront menées dans les tables de Karnaugh ; lesproblèmes traités seront de petite dimension et l'objectif est celui de la commande.

5.2 Méthode de la table de Karnaugh

Méthode visuelle qui applique la dé�nition donnée de l'Implicant Premier.� La fonction logique est introduite dans une table de Karnaugh,� On considère des blocs de 2i points vrais (1, 2, 4, 8 . . .). Tout bloc totalement inclus dans

un bloc plus grand est éliminé : c'est un implicant mais il n'est pas premier.� La réunion des Implicants Premiers donne la Base Première complète.

5.2.1 Reconnaître les adjacences

Cette méthode est encore l'application systématique de Ax+Ax = A. Nous allons l'illustrer dansdi�érents cas.Regroupement de deux points vrais : On obtient un monôme de n− 1 variables, la neme variabledont la valeur di�ère dans les deux combinaisons est éliminée.

47

Page 49: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 48

Regroupement de 4 points vrais : peut être obtenu en regroupant deux regroupements adjacentsde deux points adjacents (cas précédent). L'implicant premier résultant est un monôme de n− 2variables ; la variable commutant entre les deux blocs adjacents est éliminée.Regroupement de 8 points vrais : Conduit à un monôme de n− 3 variables.Regroupement de 2k points vrais : Conduit à un monôme de n− k variables.

Figure 5.1 � Quelques adjacences entre 2, 4, 8 points

Cas des fonctions de plus de 4 variables : Pour m variables (4 < m ≤ 8) on dresse 2m − 4 tableauxde 4 variables. Chaque tableau étant dé�ni par une combinaison des m− 4 variables.Les adjacences sont déterminées par superposition entre tableaux adjacents auxquelles s'ajoutentles adjacences dans chaque tableau.Application : déterminer la base première complète de la fonctionf = R(1, 3, 5, 16, 17, 18, 19, 21, 23, 24, 25, 26, 29, 30, 31).

5.2.2 Fonctions incomplètement spécifées.

Soit une fonction incomplètement spéci�ée f∗ dé�nie par f∗ = R1() +R∗() ou encore par sa borne

inférieure f∗︸︷︷︸ = R1() et sa borne supérieure︷︸︸︷f∗ = R1U∗(). La fonction f∗ est comprise entre

f∗︸︷︷︸ et ︷︸︸︷f∗ .

Le problème de la simpli�cation et de la minimisation d'une telle fonction est la recherche d'une

fonction complètement spéci�ée f comprise entre f∗︸︷︷︸ et ︷︸︸︷f∗ telle que le le coût associé soit

minimal.Méthode.

1. Recherche de la base première complète de f∗ sur sa borne supérieure︷︸︸︷f∗ .

BPC de f∗ = BPC︷︸︸︷f∗ .

2. Recherche de la base minimale sur sa borne inférieure f∗︸︷︷︸En e�et il su�t de couvrir les points vrais de f∗︸︷︷︸ à partir d'implicants les plus simples possibles

donc dé�nis sur︷︸︸︷f∗ .

Application f∗ = R1(4, 9, 11, 12, 13, 14) +R∗(3, 7, 10, 15)

Page 50: UNIVERSITE APUL SABATIER acultéF Sciences et Ingénieriel3-eea-rel.univ-tlse3.fr/wp-content/uploads/2018/02/AED-Rel.pdfEn e et un peu aanvt 1950, le transistor a été inventé et

UPS/FSI - Licence Rel - Automates Programmables industriels (notes de cours) 49

5.3 Minimisation

Minimiser = déterminer une base minimale.Choix d'un ensemble d'implicants premiers couvrant tous les points vrais de la fonction logique etminimisant la somme des coûts associés aux monômes. Le problème est dit de couvertureminimale.Une solution de f est un sous ensemble de termes couvrant tous les points vrais.Une solution minimale minimise la somme des coûts des termes choisis dans la solution.La minimisation sera faite dans la table de Karnaugh après la phase de simpli�cation (ou derecherche de la BPC) en deux phases :

recherche des termes obligatoiresPoint essentiel : un point essentiel est un point couvert par un seul terme.Terme obligatoire : un terme est obligatoire s'il est le seul à couvrir un point (pointessentiel).Dans une table de Karnaugh on recherchera les points couverts par un seul ImplicantPremier. Ces Implicants Premiers font partie de la solution minimale.

choix selon le critère de coût parmi les Implicants Premiers non obligatoiresOn cherche à couvrir tous les points vrais de f non encore couverts et ce par unecombinaison d'Implicants Premiers de coût minimal.Des exemples seront traités en Travaux Dirigés.

5.3.1 Cas des fonctions incomplètement spéci�ées

On cherche une couverture des points vrais de la borne inférieure par les implicants premiers de laborne supérieure.Tous les points vrais (borne inférieure) doivent être couverts. Ils peuvent l'être par des ImplicantsPremiers de la borne supérieure donc couvrant des points vrais et indéterminés. Voir exemples enTravaux Dirigés.