UNIVERSITE APUL SABATIER acultéF Sciences et...
Transcript of UNIVERSITE APUL SABATIER acultéF Sciences 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
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
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
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
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).
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
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.
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).
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
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.
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.
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
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.
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 :
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'
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.
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
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
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).
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
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.
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
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.
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 */
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>
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 */
}
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.
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.
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.
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;
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;
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
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.
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.
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;
...
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*)
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.
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/).
Annexes - Rappels de combinatoire
38
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
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
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
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 ;
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∗
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)
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.
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é.
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
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)
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.