Les fonctions de base d'un automate

L’industrie

L’industrie est l'ensemble des activités socio-économiques tournées vers la production en série de biens grâce à la transformation des matières premières ou de matières ayant déjà subi une ou plusieurs transformations et à l'exploitation des sources d'énergie ; elle sous-entend :
 - une certaine division du travail, contrairement à l'artisanat où la même personne assure théoriquement l'ensemble des processus : étude, fabrication, commercialisation, gestion ;

- une notion d'échelle, on parle de « quantités industrielles » lorsque le nombre de pièces identiques atteint un certain nombre ;
 -l'utilisation de machines, d'abord manuelles puis automatisées, qui modifient la nature même du travail.
Historiquement, le terme a d'abord désigné l'habileté à faire quelque chose, ou bien une activité douteuse que la morale réprouve. Puis le sens s'est élargi à toute forme d'activité productive, et non seulement celle produisant des biens matériels. Ce dernier sens a vieilli, mais il domine encore en anglais. Depuis la révolution industrielle, les activités relevant de l'agriculture sont exclues du champ de l'industrie.
Plusieurs classifications sont possibles. Les plus communes opposent :
1.   l'industrie manufacturière (mécanique, textile, etc.) aux industries d'extraction (mines, pétrole, etc.) ;
2.   les industries de biens de consommation aux industries de biens de production.
En termes de secteurs économiques, l'industrie recoupe pour l'essentiel le secteur secondaire. Toutefois, les industries extractives sont parfois classées avec l'agriculture dans le secteur primaire.


Les fonctions de base d'un automate

  • L'AF (automate fictif)
  • Step7, logiciel des automates Siemens
    • Le langage CONT
    • Le langage LOG
    • Le langage LIST






  • Langage booléen du PB 100 ou April 15
    • Adresses
    • Langage booleen
    • la temporisation
  • Le langage à contacts du TSX
    • Les réseaux
    • Temporisation



  • Ces fonctions sont disponibles sur tous les automates, des plus simples aux plus évolués. Je vais définir un langage fictif (qui me servira pour la suite, dans la définition des méthodes). Ce chapitre continuera par une présentation succinte des instructions des différents matériels et langages utilisés dans la suite du document pour appliquer les méthodes présentées.

    L'AF (automate fictif)


    Je vais définir un automate ficitif (que j'apellerai par la suite AF), ainsi que son langage. Je fais ceci car les langages des automates sont très différents, pas très clairs, mais ils reviennent tous au même. Un automate traite des variables booléennes (ne pouvant valoir que 0 ou 1). On distingue les entrées (en lecture seule), les sorties (en écriture mais généralement on peut les relire, au cas où on aurait oublié ce qu'on a allumé en sortie), et les variables internes (pour stocker les calculs intermédiaires) en lecture et écriture. Pour l'AF, je noterai les entrées Ei, les sorties Si, les variables internes Vi ou un nom en clair. On dispose au moins des fonctions combinatoires ET, OU et NON, souvent plus (ou exclusif par exemple). Pour l'AF je supposerai pouvoir écrire une opération sous la forme : Résultat <= calcul, avec résultat pouvant être un sortie ou une variable interne, calcul une équation utilisant des entrées ou variables internes, les opérateurs ET, OU, / (complément) et parenthèses. Exemple : S3 <= (E1 ET /V3) OU V2 . On peut remarquer que dans la plupart des automates un tel calcul devrait se décomposer en plusieurs lignes de programme. Pour gérer le séquentiel, on dispose de la bascule. Je la noterai : SI condition, résultat <= 1 ou 0. J'accepterai une condition complexe (comportant des opérateurs combinatoires), mais souvent dans la réalité il faudra passer par un calcul mémorisé dans une variable interne. Exemple : SI (E1 ET E2) ALORS S3 <= 1 . La temporisation se notera : SI condition ALORS résultat <= 1 APRES n secondes. La temporisation est réinitialisée dès que la condition repasse à 0. Celle-ci doit donc rester validée tout le temps du comptage. Ce fonctionnement est admis sur tout les automates, mais souvent d'autres options sont possibles (déclenchement sur un front montant par exemple). Certains automates autorisent des sauts (GOTO). Je les noterai SAUT. La destination du saut (en général un numéro de ligne) sera donné en AF par un label : un nom suivi du signe ":". Les automates qui n'acceptent pas les sauts bouclent continuellement sur l'ensemble du programme, mais certaines parties peuvent être invalidées suivant l'état de certaines variables, ce qui revient donc au même. Certains permettent également un saut conditionnel : SI condition SAUT. Exemple :
     hors boucle
    label :
     dans boucle
     SI E1 SAUT label 

    Voyons quelques exemples d'automates réels :

    Step7, logiciel des automates Siemens


    Step 7 permet l'accès "de base" aux automates Siemens. Il permet de programmer individuellement un automate (en différents langages). Il prend également en compte le réseau des automates, ce qui permet d'accéder à tout automate du réseau (pour le programmer), et éventuellement aux automates de s'envoyer des messages entre eux.
    De base, les entrées ToR se notent E a.b (E=ein) avec a l'adresse du module, b étant le numéro du bit dans l'octet (entre 0 et 7). Exemple : E0.4 est la cinquième entrée du premier bloc d'entrées) les sorties se notent A a.b (A=Aus). Les entrées et les sorties peuvent utiliser les mêmes adresses, les 32 entrées du premier bloc s'appellent E0.0 à E3.7, les 32 sorties du second bloc s'appellent A0.0 à A3.7. On peut également accéder directement à un octet complet (B), un mot (W) de deux octets, un double mot (D) de 4 octets. Pour stocker des résultats intermédiaire, on dispose de mémoires internes (mémento) nommés en ToR M0.0 à M65535.7 (si on a assez de mémoire), ou MB, MW, MD. Pour l'arithmétique on dispose aussi des types int, dint, real, char, date, time...

    Le programme sera placé dans l'automate (->programme->blocs). Le "programme principal" s'appelle obligatoirement OB1 (OB= Bloc d'Organisation, contient un bout de programme, on pourrait aussi appeler cela un sous-programme). Il faut avant tout choisir son langage préféré (dans "affichage" s'il ne le propose pas automatiquement) : CONT (langage à contacts), LIST (langage textuel), ou LOG (portes logiques). D'autres langages (optionnels) existent, les trois qui me semblent les plus intéressants sont SCL (langage proche du Pascal, permettant des algorithmes et calculs complexes), GRAPH (proche du Grafcet), HiGRAPH (proche des réseaux de Petri)

    Fonctionnalités:

    L'atelier logiciel STEP 7 Professional fédère toutes les fonctions requises pour concevoir, configurer, programmer, tester, mettre en service et maintenir les systèmes d'automatisation SIMATIC.
    STEP 7 Professional apporte une productivité de l'ingénierie sans précédent.
    Il concrétise tous les atouts du concept "Totally Integrated Automation" :

    • Interface utilisateur orientée objet, commune à tous les outils logiciels SIMATIC Industrial Software
    • Base de données unique des projets garantissant la cohérence des applications même complexes
    • Cohérence des réseaux de communication entre les composants d'une application

    Caractéristiques techniques:

    STEP 7 Professional intègre en particulier les outils suivants :


    • Interface utilisateur SIMATIC Manager commune à tous les outils logiciels intégrés et optionnels
    • Tous les langages de programmation pour automates programmables définis dans le standard CEI 61131-3: schémas contact, logigrammes, listes d'instructions, graphes séquentiels (S7-GRAPH) et langages structuré (S7-SCL)
    • Le logiciel de simulation automate S7-PLCSIM pour la mise au point de programmes sans disposer des automates cible
    • Outil configuration graphique des composants matériels et des réseaux de communicatio

    STEP 7 Professional comporte de nombreuses fonctions évoluées qui contribuent à l'efficacité du travail des automaticiens, par exemple:


    • Programmation structurée, avec des blocs fonctions paramétrables et instanciables
    • Vérification globale de la cohérence d'un programme
    • Gestion multilingue de projet
    • Interfaces d'import/export de code source des programmes, de la liste des noms symboliques de variables, de configurations matérielles
    • Modèle objet STEP 7 pour réalisation de scripts destinés à "automatiser le travail de l'automaticien"

    Avantages:

    L'atelier logiciel STEP 7 Professional permet d'obtenir des gains de productivité importants de l'ingeniérie durant toutes les phases d'un projet d'automatisation : Configuration plus rapide

    • Configuration plus rapide des systèmes grâce à des outils de configuration graphiques des composants et des réseaux
    • Programmation plus efficace grâce à la possibilité de combiner dans des projets structurés, orientés objet, tous les langages de programmation standard selon CEI 61131-3
    • Phases de test plus courtes grâce aux outils de simulation et de mise au point intégrés
    • Temps d'arrêts fortement réduits grâce à des moyens puissants de diagnostic de pannes et de maintenance à distance

    Step7 : Le langage CONT


    C'est une suite de réseaux qui seront parcourus séquentiellement. Les entrées sont représentées par des interrupteurs -| |- (ou -|/|- si entrée inversée), les sorties par des bobines -( ) ou des bascules -(S) -(R).Il y a également des opérations unaires (une entrée une sortie) : l'inverseur -|NOT|-, l'attente d'un front montant -(P)- ou descendant -(N)-. Les sorties sont obligatoirement à droite du réseau On doit évidemment définir nos E/S, soit directement par leur code (E a.b / A a.b), ou avec leur nom en clair défini dans la table des mnémoniques (entrez le nom entre guillemets). On relie les éléments en série pour la fonction ET, en parallèle pour le OU. On peut utiliser des bits internes (peuvent servir en bobines et interrupteurs), comme on utilise dans une calculatrice une mémoire pour stocker un résultat intermédiaire (M a.b). On peut aussi introduire des éléments plus complexes, en particulier les opérations sur bits comme par exemple une bascule SR (priorité déclenchement), RS (priorité enclenchement), POS et NEG pour la détection de fronts...

    Le programme est en général décomposé en plusieurs réseaux, par exemple un réseau par sortie (2 parties du schéma non reliées entre elles doivent être dans deux réseaux différents). Les réseaux sont exécutés séquentiellement.


    Step7 : Le langage LOG


    C'est un langage graphique, utilisant les symboles de l'électronique numérique (portes logiques). Il n'y a rien de spécial à dire, c'est très intuitif. On peut utiliser plusieurs entrées pour une même porte, placer des inverseurs sur les entrées.... Ici, on découpe son programme en plusieurs réseaux (en général quand un ensemble de blocs n'est pas relié au reste, ou un réseau par sortie...) Voici l'exemple correspondant au programme CONT montré plus haut :


    Step7 : Le langage LIST


    C'est un langage textuel, qui est le plus proche du comportement interne de l'automate (correspond à peu près à l'assembleur dans un ordinateur). Le système sait toujours traduire du CONT ou du LOG en LIST, mais pas l'inverse. Le programme se compose d'une suite de lignes, chacune spécifiant un code opération suivi d'un opérande (et un seul). L'opérande peut être une adresse absolue (E0.0) ou un mnémonique entre guillemets (si les mnémoniques ont été définis, bien sûr). Comme on ne peut pas utiliser deux opérandes dans une même ligne, pour faire « x=a et b » on écrit :
      U "a"
      U "b" 
      = "x" 

    On utilise U pour ET (und), O pour OU (oder), X pour Ou Exclusif), UN, ON et même XN pour les entrées inversées, = pour stocker le résultat. L'opération (O ou U) pour le premier opérande n'a pas grande importance. Pour une bascule on utilisera :
      U "a" 
      S "x" 
      U "b" 
      R "x"

    On peut également utiliser des parenthèses :
      U(
        U     "bouton1"
        S     "bascule"
        U     "bouton2"
        R     "bascule"
       )     
      UN    "bouton3"
      =     "led1"

    NOT inverse le résultat précédent, FP indique si le résultat précédent vient de passer de 0 à 1 (front montant), FN pour le front descendant. Ici aussi, on peut décomposer le programme en plusieurs réseaux, mais peut-être est-ce moins courant qu'en CONT ?

    On peut, comme en programmation classique, faire des sauts (goto) : SPA label (inconditionnel), SPB (si dernier calcul = 1), SPBN (si 0). On saute à une ligne précédée de « label : »

    En LIST, on peut aussi traiter des mots (peut-être plus facilement que dans les autres langages) : entiers de 16 bits (W) ou 32 bits (D), réels 32 bits).

    Langage booléen du PB 100 ou April 15


    Adresses


    Le PB100 fonctionne en hexadécimal. On peut possèder par exemple 24 entrées appelées 000 à 017 et 24 sorties appelées 018 à 02F. Ces entrées-sorties peuvent être modifiées par groupe de 8 par adjonction de cartes (64 E-S maxi). Il possède 512 variables internes binaires (pouvant donc valoir soit 0 soit 1) appelées A00 à BFF. Les programmes doivent être écrits à partir des lignes 0C30, et peuvent aller jusqu'à 0FFF (sauf ajout de modules mémoire). Le PB 15 par contre, possède les entrées 000 à 017, les sorties 020 à 02F et les variables internes sont limitées de A00 à A3F. Tout le reste fonctionne de manière analogue.

    Langage booleen


    Le langage est très simple : on peut simuler les fonctions ET, OU et les bascules bistables : On désire allumer la sortie 020 si (l'entrée 000 est à 1 ET 001 est à 0) ou 002 est à 1 ou 003 est à 0. que je noterai en AF : S020<= (E000 ET /E001) OU E002 ou E003. Le programme correspondant sera :
         0C30 SI  000
         0C31 SI/ 001
         0C32 ET  A00
         0C33 SI  A00
         0C34 SI  002
         0C35 SI/ 003
         0C36 OU  020
         0C37 SAUT C30
    
    La fonction ET possède ici 2 entrées : 000 et /001. Le résultat (0 ou 1) est mis dans la variable interne A00. La fonction OU possède ici 3 entrées : A00, 002, /003. Le résultat est mis sur la sortie 020.
    Attention : un programme est une suite d'instructions, qui sont exécutées l'une après l'autre. Si une entrée change après le passage sur l'instruction qui la prend en compte et que l'on ne repasse plus sur les instructions, la sortie n'est pas modifiée. C'est la raison de la dernière ligne du programme : repasser sans arrêt sur l'ensemble du programme. Par rapport à un câblage, on a donc deux désavantages : temps de réponse (un changement des entrées sera pris en compte au maximum après le temps d'un passage sur l'ensemble du programme, c'est ce qu'on appele le temps de scrutation, qui sera ici inférieur à la milliseconde) et non simultanéité (on n'effectue qu'un instruction à la fois). Mais ces temps étant en général très inférieurs aux temps de réaction des capteurs et actionneurs (inertie d'un moteur par exemple), ceci n'est que rarement gênant. L'avantage est que c'est programmable, donc facilement modifiable. Les fonctions ET et OU acceptent autant d'entrées que l'on désire. Si on n'en utilise qu'une, on a une simple recopie de valeur (ex: SI A00 - OU A01). Le SAUT peut être précédé de plusieurs SI ou SI/. si la conjonction (ET) des conditions est vraie, alors le saut est fait, sinon on continue sur la ligne suivante. Sur PB 15, seuls les sauts vers l'avant (SAUT Axx avec xx=nb de lignes à ne pas faire +1) sont possibles, seule la dernière ligne du programme peut contenir un saut en arrière (sans SI). Les fonctions MU (mise à un) et MZ (mise à zéro) permettent de traiter les bistables. Il peuvent eux aussi être précédés par un ou plusieurs SI :

    (1) SI A00 (2) SI A00

    SI B0C
    SI B0C

    MU AF3
    ET AF3
    si A00=1 et B0C=1 alors (1) et (2) mettent AF3 à 1. Sinon, (2) met AF3 à 0, mais (1) ne le fait pas (AF3 garde la même valeur qu'avant, 0 ou 1).
    Une autre fonction utile est le DE :
      DE A00
      MZ BFF
    
    donnera le même résultat que MZ A00 - MZ A01 - MZ A02 - ... - MZ BFE - MZ BFF

    la temporisation


    Il faut avant tout donner la condition qui déclenchera la tempo, par un ou plusieurs SI. Puis TP et le nom de la variable qui sera mise à 1 au bout de la tempo. Puis donner la base de temps (sur PB15 09FF, 09FE, 09FD pour 1 sec, 1/10è, 1/100è; sur PB100 BT F, BT E pour 1 sec, 1/10è). Puis donner l'adresse où l'on stocke la durée, et l'adresse réservée au compteur. Ces adresses sont n'importe quelle ligne de programme (mais sur laquelle on ne devra pas passer) sur PB100, et entre 0800 et 0817 sur PB15).

    Exemple: 0C30 SI 000 si appui sur le capteur 000

    TP 020 allumer la sortie 020 après un certain délai

    09FF le délai sera donné en Secondes

    0800 adresse durée

    0801 adresse réservée compteur

    SAUT C30



    0800 0005 la durée sera de 5 secondes
    0801 0000

    En appuyant le contact, la sortie sera allumée 5 secondes après. Elle restera allumée jusqu'à ce qu'on lâche l'entrée. le compteur sera alors automatiquement remis à zero. Si on appuie moins de 5 secondes, rien ne se passe. Cetteinstruction n'arrête pas le programme, il faut constamment passer sur les lignes d'instruction pour que la sortie soit bien affectée en bout de tempo.

    Le langage à contacts du TSX


    Sur un TSX, les sorties peuvent être appelées O0,0 à O0,F, les entrées I1,0 à I1,F (si le rack de 16 sorties est positionné en position 0, les 16 entrées en 1). Les variables internes sont notées en décimal de B0 à B255.

    Les réseaux


    Les schémas sont effectués l'un après l'autre, de haut en bas (et non suivant leur label). Chaque réseau est scruté par colonne de gauche à droite. ex:
    langage à contacts

    Dans ce cas l'entrée B12 est l'ancienne valeur de la bobine (variable interne) B12. Si l'on veut utiliser le résultat de ce réseau, il faut utiliser B12 dans le réseau suivant. On note un capteur par le signe --| |--, un contact inverse par --|/|--. Une bobine est notée --< >-- , une bobine inverse --< / >-- (commandée par un niveau 0). Un bistable est allumé par --< S >-- , éteint par --< R >-- . Un saut à un autre réseau est noté --< J >--. On a intérêt de n'utiliser que des sauts avants (vers la fin du programme). L'automate fixe automatiquement les entrées au début de cycle et n'affecte les sorties qu'en fin de cycle (les variables internes sont évidement immédiatement modifiées).

    Temporisation


    On représente la tempo par le signe : tempo E correspond à l'armement de la tempo, C au contrôle. D passe à 1 en fin de tempo, R est à 1 tant que la tempo est en cours. En appuyant la touche ZM, on peut donner : TB: la base de temps, PRESET: la durée.