▼
Scroll to page 2
of
412
Généralités PL7-3 A Langage Grafcet B Langage à contacts C Langage littéral D Communs langage à contacts langage littéral E Opérations sur les objets d'OFBs F sur les objets d'E/S à distance Opérations au format flottant Remarque Les intercalaires C, D et E ne font référence qu'aux objets standards de PL7-3. Les opérations sur les objets des OFBs et des E/S à distance, extensions du langage PL7-3, sont décrites intercalaire F. Les opérations au format flottant, spécifiques à la régulation, sont décrites intercalaire G. G Préambule Règles de compatibilité Le logiciel PL7-3 V5 permet la programmation, la mise au point et la documentation d'applications de niveau V5, V4, V3 ou V2. 1 2 3 4 5 6 7 8 9 Les stations TSX de niveau V2 : TSX 67-30/87-10/87-20, exécutent des applications de niveau V2. Les stations TSX de niveau V3 : TSX 47-30/67-20/87-30, exécutent des applications de niveau V2 ou V3. Les stations TSX de niveau V4 : TSX 47-400/47-410/47-411/47-420/67-410/ 67-420/87-410/87-420/107-410/107-420, exécutent des applications de niveau TSX V4. Les stations PMX de niveau V4 : PMX 47-420/67-420/87-420/107-420/107-430, exécutent des applications de niveaux TSX V4 et PMX V4. Les stations TSX de niveau V5 : TSX 47-405/47-415/47-425/47-455/67-425/ 67-455/87-425/87-455/107-425/107-455, exécutent des applications de niveau TSX V5. Les stations PMX de niveau V5 : PMX 47-425/47-455/67-425/67-455/87-425/ 87-455/107-425/107-455, exécutent des applications de niveaux TSX V5 et PMX V5. Une application peut être rendue exécutable par un processeur de niveau immédiatement supérieur : V2 en V3, V3 en V4 ou V4 en V5. Cette opération s'effectue en fonctionnement local et est irréversible. Par exemple une application devenue exécutable par un processeur de niveau V5 ne peut plus être exécutée par un processeur de version inférieure. Une application TSX peut être exécutée par un processeur PMX de même niveau. La réciproque est vraie, à la condition que l'application ne contienne pas d'OFBs de la famille régulation ou des instructions au format flottant (niveau V5). L'accès à une application V2, V3 ou V4 depuis PL7-3 V5, permet d'offrir à l'utilisateur les nouveaux services suivants : • symbolisation des OFBs (application V4 seulement), • recherche/remplacement des objets compatibles, • grilles d'occupation des mots internes et des mots constants, • mémorisation d'écrans (WRITE/READ), en mode Données et Mise au point. 1 Sans titre-1 1 5/02/96, 19:14 Règles de compatibilité (suite) Principales évolutions de PL7-3 V5 par rapport à PL7-3 V4 Ces nouveaux services, de niveau V5, ne sont proposés que pour les applications V5 dans les stations V5. • prise en compte des processeurs V5 : 18 nouveaux processeurs, • mode configuration : transfert d'une partie de la configuration dans l'outil station XTEL-CONF (processeur, mémoire, entrées/sorties, période des tâches) et asservissement de PL7-3 à XTEL-CONF, • prise en compte des entrées/sorties distantes, • modulaire : vision des modules élémentaires dans l'application PL7-3 (accès direct, repérage et protection) et animation graphique des macro-modules, • intégration des modules littéral, générés par PL7-PMS2, • opérations de type flottant disponibles avec les processeurs PMX. Pas de nouvel objet flottant, • nouveaux symboles : OFBs, E/S distantes et connexion directe à XTEL-SDBASE, • mode recherche/remplacement : extension du mode remplacement, • fonction Alt-X : accès à n'importe quelle variable afin de rechercher ses références croisées, • modes données et mise au point : mémorisation des écrans de données ou des adresses programme, • mode transfert : appel de l'outil XTEL-TRANSFERT pour tous les transferts console vers automate et automate vers console, • Grafcet : gestion des mode de marche par l'OFB MSIT (définition de la partition du Grafcet global, forçage de graphes, sauvegarde/restitution de la situation courante d'un Grafcet partiel), • mode documentation/impression : grilles d'occupation des mots internes et des mots constants. 2 Sans titre-1 2 5/02/96, 19:14 Accès rapide aux instructions du langage littéral ACKINT ADDF AND ATB ATF acquittement de l’interruption .................... addition au format flottant .......................... ET logique entre 2 mots ............................ transcodage ASCII → binaire .................... transcodage ASCII → flottant .................... E, ch. 4.1 G,ch. 1.2 E, ch. 2.7 E, ch. 2.8 G,ch. 1.5 bit BTA BTD BTF test de l’état direct d’un bit ......................... transcodage binaire → ASCII .................... transcodage binaire → BCD ...................... transcodage binaire → flottant .................. D, ch. 3.4 E, ch. 2.8 E, ch. 2.8 G,ch. 1.5 CALL SRi CPL appel d’un sous-programme ...................... D, ch. 5.4-1 complément logique d’un mot .................... E, ch. 2.7 DEC DIVF DMASKINIT DOWN DTB DTF décrémentation du contenu d’un mot ........ division au format flottant ........................... démasquage de l’interruption .................... décrémentation d’un compteur .................. transcodage BCD → binaire ...................... transcodage BCD → flottant ......... ............ E, ch. 2.2 G,ch. 1.3 E, ch. 4.1 D, ch. 6.3 E, ch. 2.8 G,ch. 1.5 EQUAL EQUF EXCHG EXEC comparaison de 2 tableaux de mots .......... comparaison (égal) au format flottant .......... émission et réception d’un message ......... exécution d’un OFB ................................... E, ch. 3.6 G,ch. 1.2 D, ch. 6.6 E, ch. 6.2 FE FTA FTB FTD test du front descendant d’un bit................ transcodage flottant → ASCII .................... transcodage flottant → binaire .................. transcodage flottant → BCD ...................... D, ch. 3.5 G,ch. 1.5 G,ch. 1.5 G,ch. 1.5 GET GTB déstockage de la pile d’un registre ............ D, ch. 6.4 transcodage Gray → binaire ...................... E, ch. 2.8 HALT arrêt du programme ................................... D, ch. 5.4-4 IF THEN ELSE INC INFF INPUT phrase conditionnelle ................................ incrémentation du contenu d’un mot ......... comparaison (inférieur) au format flottant .... réception d’un message ............................ JUMP Li saut dans un programme .......................... D, ch. 5.4-3 MASKINT MULF masquage de l’interruption ........................ E, ch. 4.1 multiplication au format flottant .................. G,ch. 1.3 NOT ou N inversion logique d’un bit ........................... D, ch. 3.7 OR OUTPUT OU logique entre 2 mots ............................ E, ch. 2.7 émission d’un message ............................. D, ch. 6.6 D, ch. 2.6 E, ch. 2.2 G,ch. 1.2 D, ch. 6.6 3 Sans titre-1 3 5/02/96, 19:14 PRESET PUT mise à la valeur de présélection ................ D,ch. 6.1/6.3 stockage d’un mot dans un registre .......... D,ch. 6.4 RE READBIT READEXT READINT READTLG READREG REM RESET test du front montant d’un bit ..................... lecture immédiate des entrées TOR .......... lecture immédiate d’un message ............... lecture de l’interruption .............................. lecture d’un télégramme ............................ lecture immédiate des registres d’entrées . reste d’une division .................................... mise à l’état 0 d’un bit ................................ remise à zéro d’un bloc fonction ................ retour d’un sous-programme ..................... RET SET SETIT SHL i SHR i SLC i SLCWORD SQRTF D,ch. 3.5 E, ch. 5.1 D,ch. 5.6-1 E, ch. 4.1 D,ch.5.7 E, ch. 5.2 E, ch. 2.5 D,ch. 5.2-2 D,ch. 6.3/6.4/6.5/6.6 D,ch. 5.4-2 SQRT SRC i START STOP SUBF SUPF mise à l’état 1 d’un bit ................................ D,ch. 5.2-2 génération d’une interruption ..................... D,ch. 5.5-1 décalage logique à gauche ........................ E, ch. 2.3 décalage logique à droite........................... E, ch. 2.3 décalage circulaire à gauche ..................... E, ch. 2.3 décalage circulaire de 1 octet à gauche .... D,ch. 5.3-1 extraction de racine carrée au format flottant ......................................................... G,ch. 1.4 extraction de racine carrée ........................ E, ch. 2.6 décalage circulaire à droite ........................ E, ch. 2.3 démarrage d’un bloc fonction .................... D,ch. 6.1/6.2/6.5 arrêt d’un temporisateur ............................ D,ch. 6.1 soustraction au format flottant ................... G,ch. 1.3 comparaison (supérieur) au format flottant ... G,ch. 1.2 table+ sommation des mots d’un tableau ............. E, ch. 3.5 UP incrémentation d’un compteur ................... D,ch. 6.3 WHILE DO WRITEBIT WRITEEXT WRITEREG phrase itérative .......................................... écriture immédiate des sorties TOR .......... écriture immédiate d’un message .............. écriture immédiate des registres de sorties XOR OU exclusif logique entre 2 mots ............... E, ch. 2.7 D,ch. 2.7 E, ch. 5.1 D,ch. 5.6-2 E, ch. 5.2 4 Sans titre-1 4 5/02/96, 19:14 Dialogue 5 A Généralités PL7-3 Chapitre 1 Intercalaire A Page Présentation du logiciel PL7-3 Sommaire 1/1 1.1 La structure multitâche 1.2 La structure multilangage 1.3 La programmation symbolique 1.4 La programmation modulaire 1.5 Fichiers source de configuration des entrées/sorties 1.6 Les blocs fonctions optionnels (OFB) 2 Les objets adressables du logiciel PL7-3 Sommaire 2/1 2.1 Adressage 2.2 Objets bits 2.3 Objets mots 2.4 Objets blocs fonctions 2.5 Indexation des objets 3 Mémoire utilisateur Sommaire 3/1 3.1 Généralités 3.2 Mémoire bits 3.4 Structure mémoire et application 4 Structure logicielle monotâche Sommaire 3/1 4.1 Description tâche maître 4.2 Traitement du programme 4.3 Fonctionnement structure monotâche A/1 A Généralités PL7-3 Chapitre 5 Page Structure logicielle multitâche Sommaire 5/1 5.1 Traitement multitâche 5.2 Tâche périodiques 5.3 Mise en oeuvre du traitement multitâche 5.4 Modes de marche des tâches périodiques 6 Rôle des bits et des mots système Sommaire 6/1 6.1 Bits système 6.2 Mots système 6.3 Bits et mots système associés aux E/S distants 7 Coupure et reprise secteur Sommaire 7/1 7.1 Principe 7.2 Comportement sur reprise secteur en structure monotâche 7.3 Comportement sur reprise secteur en structure multitâche 8 Modification en connecté Sommaire 8.1 Principe 8.2 Modification en connecté, automate en STOP 8.3 Modification en connecté, automate en RUN 8.4 Limitations A/2 8/1 5 Dialogue A Intercalaire A Chapitre 9 Page Conseils de programmation Sommaire 9/1 9.1 Organisation des programmes application 9.2 Traitement des modes de marches et d’arrêts 9.3 Comportement des sorties en cas de dysfonctionnement automate 9.4 Traitement des défauts d'entrées/sorties 10 Annexes Sommaire 9/1 10.1 Optimisation de la mémoire bit 10.2 Règles de compatibilité des automates TSX et PMX A/3 A A/4 Présentation du logiciel PL7-3 1 A Présentation du logiciel PL7-3 Chapitre 1 Sous-chapitre Page ______________________________________________________________________________________ 1.1 La structure multitâche 1/2 _______________________________________________________________________________________ 1.1-1 Généralités 1/2 1.1-2 Les tâches périodiques 1/2 1.1-3 La tâche interruption 1/3 1.2 La structure multilangage 1/3 _______________________________________________________________________________________ 1.2-1 Généralités 1/3 1.2-2 Le langage Grafcet 1/4 1.2-3 Le langage à contacts 1/5 1.2-4 Le langage littéral 1/5 1.2-5 Les objets communs aux langages 1/6 1.3 La programmation symbolique 1/7 ______________________________________________________________________________________ 1.4 La programmation modulaire 1/10 ______________________________________________________________________________________ 1.5 Fichiers source de configuration des entrées/sorties 1/11 ______________________________________________________________________________________ 1.6 Les blocs fonctions optionnels (OFB) 1/12 ______________________________________________________________________________________ 1.6-1 Généralités 1/12 1.6-2 Configuration et programmation d’un OFB 1/12 1.6-3 OFBs fournis avec PL7-3 1/12 Ce chapitre se termine à la page 1/12 1/1 Sans titre-1 1 15/01/96, 11:49 A 1.1 La structure multitâche 1.1-1 Généralités La structure multitâche des automates programmables modèles 40, associe un programme spécifique à chaque fonction; chacun de ces programmes étant implanté dans une tâche. Ces tâches sont indépendantes et exécutées en "parallèle" par le processeur principal. Un superviseur gère les priorités entre ces tâches, ainsi que leur exécution. Ce type de structure à pour but de : • simplifier la conception et la mise au point; chaque tâche est écrite et mise au point indépendamment des autres, • structurer l’application; chaque tâche a une fonction qui lui est propre. Le système multitâche propose 6 tâches périodiques et une tâche interruption. Ce système est configurable : la périodicité et l’utilisation des tâches doivent être déclarées par l’utilisateur. Superviseur Tâche Rapide Tâche Maître Tâche Auxiliaire 0 Tâche Auxiliaire 1 Positionnement Séquentiel Mesure Régulation Dialogue + Priorité – Exemple : Traitement utilisant 4 tâches 1 1-2 Les tâches périodiques Chacune de ces 6 tâches est exécutée cycliquement selon la période définie par l’utilisateur, en fonction du type de traitement assuré par la tâche. L’ordre de priorité d’exécution de ces tâches est le suivant : Rapide → Maître → Auxiliaire 0 → Auxiliaire 1 → Auxiliaire 2 → Auxiliaire 3 La mise en oeuvre de la tâche maître est développée au chapitre 4, la mise en oeuvre de la structure multitâche au chapitre 5. ( ) * 4 tâches pour les automates TSX/PMX 47-40, 6 tâches pour les autres automates (TSX/PMX 67/87/107-40). 1/2 Sans titre-1 2 15/01/96, 11:49 Présentation du logiciel PL7-3 1 A 1.1-3 La tâche interruption Cette tâche n’est pas liée à une période comme les tâches précédemment décrites. Son exécution est déclenchée par un appel en provenance de certains coupleurs intelligents (par exemple TSX DTM 100). C’est la tâche la plus prioritaire. Le traitement qu’elle doit assurer est nécessairement court afin de ne pas perturber l’exécution des autres tâches. 1.2 La structure multilangage 1.2-1 Généralités La structure multilangage associe un langage au caractère spécifique de chaque fonction (séquentielle, mesure, régulation, communication...); ce qui entraîne une simplification de la conception et de l’écriture des programmes correspondants. Le logiciel PL7-3 des automates TSX/PMX 47/67/87/107-40 propose trois langages de programmation: le langage Grafcet, le langage à contacts et le langage littéral. Ces langages s’utilisent simultanément ou non dans une même application. Tâche Interruption Tâche Rapide Tâche Maître Tâches Auxiliaires Sous-Programmes Sous-Programmes Sous-Programmes Sous-Programmes • Contacts ou • Littéral • Contacts ou • Littéral • Contacts ou • Littéral • Contacts ou • Littéral Programme Principal Programme Principal Programme Principal Programme Principal • Contacts ou • Littéral • Contacts ou • Littéral • Contacts ou • Grafcet ou • Littéral • Contacts ou • Littéral 1/3 Sans titre-1 3 15/01/96, 11:49 A 1.2-2 Le langage Grafcet C'est un langage graphique conçu pour décrire des fonctionnements séquentiels. Il s’utilise en association avec le langage à contacts ou le langage littéral ou les deux, pour la programmation des réceptivités et des actions. La macro représentation IN L'analyse de l'application s'effectue en terme de fonction. Une fonction est symbolisée par une macro-étape. Cette analyse par le haut donne une visualisation globale (macroscopique) de l’automatisme par grandes fonctions ou sousensembles, représentée sur un faible nombre d’écrans, voire un seul écran. La macro-représentation est matérialisée par la macro-étape à laquelle est associé un grafcet de bas niveau décrivant le déroulement des opérations élémentaires. Lorsque celle-ci est activée, la séquence qu’elle représente (expansion) est exécutée en respectant les règles Grafcet. 1 1 11 M1 2 12 2 3 13 OUT Une macro-étape peut elle même appeler d’autres macro-étapes. Le terminal accède en lecture, écriture ou modification grâce au mode "ZOOM". 1/4 Sans titre-1 4 15/01/96, 11:49 Présentation du logiciel PL7-3 1 A 1.2-3 Le langage à contact C'est un langage graphique adapté à la programmation des traitements logiques. Des blocs fonctions pré-programmés permettent de réaliser les fonctions élémentaires d'automatisme (temporisateur, etc...) et de communication. Il nécessite l’usage du langage littéral pour programmer des expressions arithmétiques simples ou complexes. 1.2.4 Le langage littéral Orienté vers les fonctions évoluées de calcul et de dialogue opérateur, ce langage s’écrit sous forme d’expressions constituées de phrases. Il fait appel au même type de blocs fonctions que ceux proposés en langage à contacts. 1/5 Sans titre-1 5 15/01/96, 11:49 A 1.2-5 Les objets communs aux langages • les objets bits : ils représentent les entrées/sorties de l’automate, les variables internes au programme et l’état du système. • les objets mots : composés de 16 ou 32 bits, il s’utilisent pour stocker et lire des valeurs ou des paramètres et dialoguer avec les coupleurs intelligents. Les bits constituant ces mots sont considérés par le système comme des objets bits et peuvent être utilisés comme tels. • les blocs fonctions : ils mettent au service de l’utilisateur des fonctions préprogrammées telles que temporisateurs, monostables, etc. Leur mise en oeuvre utilise des objets bits et des objets mots. Ces variables ne peuvent être manipulées qu’en langage à contacts ou langage littéral, le langage Grafcet décrivant graphiquement le processus séquentiel (des objets bits et mots spécifiques sont associés à ce langage). Exemple : 1/6 Sans titre-1 6 15/01/96, 11:49 Présentation du logiciel PL7-3 1 A 1.3 La programmation symbolique Le logiciel PL7-3 permet au choix de l'utilisateur, la saisie et la visualisation des objets soit par leur repère (par exemple : B1), soit par une chaîne de caractères appelée symbole (par exemple Secu_1). L’écriture d’un programme ou d’une partie de programme en symbolique, nécessite au préalable que tous les symboles utilisés soit associés dans une base de symboles, aux repères des objets PL7-3. Cette base des symboles, gérée par l'outil XTEL-SDBASE est globale à la station; ce qui a pour intérêt de décrire une seule fois l'ensemble des symboles de la station et de les rendre disponibles pour toutes les fonctions ou outils de l'atelier logiciel. Pour chaque affichage d'un symbole, PL7-3 accède directement en lecture de celui-ci dans XTEL-SDBASE (la notion de base locale n'existe plus). Ceci permet entre autre de s'affranchir de la limitation à 5000 symboles. Symbolisation des OFBs Chaque OFB comprenant plusieurs niveaux de représentation : • • • • le type d'OFB : par exemple MVDGS, l'OFB lui-même : par exemple MVDGS1, l'élément d'OFB : par exemple MVDGS1,STATUS, le bit extrait d'un élément d'OFB : par exemple MVDGS1,STATUS,5. La programmation symbolique de PL7-3 offre 3 niveaux de symbolisation des OFBs, afin de permettre au programmeur de choisir celui qui s'adapte le mieux à son programme : • l'OFB : par exemple Verin • l'élément d'OFB : par exemple Verinsta • le bit extrait de l'élément d'OFB : par exemple Vermach PL7-3 ne permet pas de symboliser le type d'OFB, par contre il permet la symbolisation des formes indexées des objets. Les bits sont extraits de objets de type mot et non double mot. Exemple Symbole Repère Syntaxe symbolique Syntaxe repère Verin MVDGS1 Verin,STATUS Verin,STATUS,5 EXEC Verin(..=>..) mot MVDGS1,STATUS bit MVDGS1,STATUS,5 EXEC MVDGS1(..=>..) Verinsta MVDGS1,STATUS Verinsta Verinsta,5 mot MVDGS1,STATUS bit MVDGS1,STATUS,5 Vermach bit MVDGS1,STATUS,5 Vermach MVDGS1,STATUS,5 1/7 Sans titre-1 7 15/01/96, 11:49 A Symbolisation des E/S distantes Chaque E/S distante comprenant plusieurs niveaux de représentation : • • • • l'équipement : par exemple RAO3, le module : par exemple RAO3,1, la voie : par exemple RAO3,1,3, le bit extrait de voie : par exemple RAO3,1,3,F. La programmation symbolique de PL7-3 offre 3 niveaux de symbolisation des E/S distantes, afin de permettre au programmeur de choisir celui qui s'adapte le mieux à son programme : • le module : par exemple Moteur, • la voie : par exemple Nbtours, • le bit extrait de voie : par exemple Sensrota. PL7-3 ne permet pas de symboliser l'équipement, par contre il permet la symbolisation des formes indexées des objets. Les bits sont extraits des objets de type mot et non double mot. Exemple Symbole Repère Syntaxe symbolique Syntaxe repère Moteur RAO3,1 Moteur,3 Moteur,3,F mot RAO3,1,3 bit RAO3,1,3,F Nbtours RAO3,1,3 Nbtours Nbtours,F mot RAO3,1,3 bit RAO3,1,3,F Sensrota bit RAO3,1,3,F Sensrota RAO3,1,3,F Ainsi peuvent coexister dans une même application PL7-3, les phrases suivantes : < Vitesse superieure à 1200 tours par minute ? ! IF [Nbtours > 1200] THEN ... < Mais dans quel sens tourne le moteur ? ! IF [Sensrota = 1] THEN .... (et non Nbtours,F) Les formes indexées peuvent porter sur la voie ou sur le bit extrait de voie, mais pas sur les deux à la fois : RAO3,1,3(W20),F ou RAO3,1,3,F(W40). Note Cet exemple à 4 niveaux de symbolisation ne s'applique pas aux modules TBX TOR. 1/8 Sans titre-1 8 15/01/96, 11:49 1 Présentation du logiciel PL7-3 A Règle d'utilisation des symboles par PL7-3 Si la base des symboles contient plusieurs niveaux de symbolisation pour un même objet, PL7-3 cherche toujours la forme symbolique des objets, en commençant par l'objet dont la syntaxe est la plus complexe. Par exemples • Verin et Vermach sont présents dans la base des symboles, • à la saisie du programme application, une phrase contient Verin, STATUS,5, • à la relecture du programme dans l'automate, on ne retrouvera pas Verin,STATUS,5 mais Vermach, • Nbtours et Sensrota sont présents dans la base des symboles, • à la saisie du programme application, une phrase contient Nbtours,F, • à la relecture du programme dans l'automate, on ne retrouvera pas Nbtours,F mais Sensrota. 1/9 Sans titre-1 9 15/01/96, 11:49 A 1.4 La programmation modulaire La programmation modulaire s'effectue en plusieurs phases : • archivage source sous PL7-3, des modules de programme (graphe principal, préliminaire, macro-étape, programme principal, sous-programme,...), des mots constants, des constantes d'OFBs et saisie des commentaires module, • génération sous XTEL-MOD, à partir des fichiers source précédemment créés sous PL7-3, des modules élémentaires et des macro-modules (ensemble de modules élémentaires). Le fichier des symboles, associé à un module élémentaire, n'est pas fourni par PL7-3 mais généré par XTEL-MOD par lecture de la base des symboles XTEL-SDBASE, • récupération de modules élémentaires et/ou de macro-modules, créés sous XTEL-MOD et intégration dans une application PL7-3. Afin de faciliter la mise à jour de l'application, PL7-3 propose les fonctionnalités suivantes : - accès direct au code des modules élémentaires, - repérage du code des modules élémentaires, - protection du code des modules élémentaires, - vue et animation graphique des macro-modules (ou modules fonctionnels). Note Les modules élémentaires et les macro-modules peuvent également être créés à partir de fichiers source, générés sous le langage de régulation PL7-PMS2. De ce fait, il est possible à PL7-3 d'intégrer automatiquement du code généré par PL7-PMS2. 1/10 Sans titre-1 10 15/01/96, 11:49 1 Présentation du logiciel PL7-3 A 1.5 Fichiers source de configuration des entrées/sorties Certains logiciels comme PL7-COM, PL7-PCL, PL7-AXE ou PL7-NET, lorsqu'ils sont utilisés en mode local, doivent connaître la configuration des entrées/sorties de l'application. PL7-3, utilisé avec une station V4, génère un fichier ASCII (extension .IOC) qui contient la configuration des entrées/sorties et dont le rôle est de : • dupliquer une configuration standard d'entrées/sorties d'une station vers une autre, • d'être un fichier passerelle avec les fonctions métiers, lorsqu'elle celles-ci sont utilisées en mode local, • d'ouvrir X-TEL vers les CAO de schématèque électrique : le fichier .IOC est utilisé pour la génération du fichier neutre des entrées/sorties décrivant l'arborescence d'une configuration automate. X-TEL Station n PL7-3 PL7-NET PL7-PCL PL7-COM PL7-AXE PL7-3 IMPORT ▲ ▲ Station p ▲ ▲ ▲ ▲ Fichier .IOC CAO de schématèque électrique 1/11 Sans titre-1 11 15/01/96, 11:49 A 1.6 Les blocs fonctions optionnels (OFB) 1.6-1 Généralités Les blocs fonctions optionnels ne font pas partie du langage PL7-3 de base. Ils sont une extension au langage PL7-3, fournie séparément sous forme d’une disquette. Chaque OFB écrit en langage informatique par son concepteur, est caractérisé par son type et son numéro, et appartient à une famille unique (commande d’axes, communication,...). Par contre à l’intérieur d’une même famille, il y a plusieurs types d’OFBs. Un type d’OFBs peut être utilisé plusieurs fois dans un programme application, à condition : • que ce type d’OFBs soit chargé en mémoire, • que le nombre d’OFBs à utiliser soit défini en configuration. A chaque OFB utilisé, sont associés des paramètres d’entrées et de sorties, des données internes et des constantes internes, accessibles par le langage PL7-3. 1.6-2 Configuration et programmation d’un OFB Avant d’utiliser des OFBs dans une application, il est nécessaire d’en définir le nombre en configuration. Cela permet de : • réserver la zone mémoire nécessaire à chaque OFB, • initialiser les constantes internes des OFBs. L’utilisation d’un OFB dans un programme application permet : • de lancer son exécution avec passage des paramètres d’entrées/sorties, • de lire une donnée ou une constante interne, • d’affecter une donnée interne. 1.6-3 OFBs fournis avec PL7-3 Les OFBs de diagnostic application (EVDGNi, EVDGSi, MVDGNi, MVDGSi, TRDGNi et TRDGSi) permettent de mettre en oeuvre la surveillance d'un procédé : • • • • • surveillance d'une équation, surveillance des évolutions d'un Grafcet (étapes et macro-étapes), surveillance d'un temps enveloppe Grafcet, surveillance du temps de réaction du procédé à une commande, surveillance des conditions de sécurité, ... L'OFB Grafcet (MSITi) assure la gestion des situations d'un Grafcet partiel : • • • • définition explicite du descripteur de Grafcet partiel, forçage du Grafcet partiel, sauvegarde et restitution de la situation courante, positionnement d'une situation. 1/12 Sans titre-1 12 15/01/96, 11:49 Les objets adressables du logiciel PL7-3 2 A Les objets adressables du logiciel PL7-3 Sous chapitre 2.1 Adressage 2.1-1 2.1-2 2.1-3 2.1-4 Entrées/sorties TOR des modules en bac Mots registres d’entrées/sorties des coupleurs Entrées/sorties TOR distantes Adressage symbolique 2.2 Objets bits 2.2-1 Liste des objets bits 2.2-2 Définition des principaux objets bits 2.3 Objets mots 2.3-1 Généralités 2.3-2 Liste des objets mots et bits associés 2.3-3 Définition des différents objets mots 2.4 Objets blocs fonctions 2.4-1 Généralités 2.4-2 Liste des mots et bits des blocs fonctions standards 2.5 Indexation des objets Chapitre 2 Page 2/2 2/2 2/3 2/4 2/5 2/6 2/6 2/7 2/8 2/8 2/9 2/10 2/11 2/11 2/12 2/13 2.5-1 Adressage direct 2.5-2 Adressage indexé 2/13 2/13 Ce chapitre se termine à la page 2/14 2/1 A 2.1 Adressage 2.1-1 Entrées/sorties TOR des modules en bac Les modules d’entrées/sorties en bac présentent une modularité de 4, 8, 16, 24 ou 32 voies. L’adresse d’une entrée ou d’une sortie est définie par : • modules 4, 8 et 16 voies I/Oxy,i I O x y , i • modules 24 et 32 voies I/Oxy,i (voies 0 à 15) I/O(x+1)y,i (voies 16 à 23 ou 31) : entrée, : sortie, : numéro de bac incluant le module, : numéro d’emplacement dans le bac (0 à 7), : virgule, : numéro de voie. Définition du numéro de bac • Automates TSX/PMX 47-40/67-40/87-40/107-40 0 1 2 3 4 5 6 7 X D S T 3 2 Modules 4 8 voies voies 0y,0 0y,0 à à Adresses 0y,3 0y,7 I/O 16 24 32 voies voies voies 0y,0 0y,0 0y,0 à à à 0y,F 0y,F 0y,F 1y,0 1y,0 à à 1y,7 1y,F x = 0/1 2y,0 à Adresses 2y,3 I/O x = 2/3 2/2 2y,0 à 2y,7 2y,0 à 2y,F 2y,0 à 2y,F 3y,0 à 3y,7 2y,0 à 2y,F 3y,0 à 3y,F 2 Les objets adressables du logiciel PL7-3 A • Extensions pour automates TSX/PMX 47-40/67-40/87-40/107-40 0 1 2 3 4 5 6 7 X Modules 4 8 16 24 32 voies voies voies voies voies xy,0 xy,0 à à Adresses xy,0 xy,0 xy,0 xy,F xy,F à à à I/O xy,3 xy,7 xy,F (x+1)y,0 (x+1)y,0 à à D S T 3 2 (x+1)y,7 x Adresses (x+1)y,0 à à à I/O (x+1)y,3 (x+1)y,7 (x+1)y,F (x+1)y,0 (x+1)y,F (x+1)y,0 x+1 TSX 47-410/411/420 TSX 47-415/425/455 PMX 47-420/425/455 X = 4, 6 X+1 = 5, 7 TSX 67-40/87-40/107-40 PMX 67-40/87-40/107-40 X = 4, 6, 8, A, C, E X+1 = 5, 7, 9, B, D, F 2.1-2 Mots registres d’entrées/sorties des coupleurs L’adressage de ces registres est défini par : IW/OWxy,i IW : registre d’entrée OW : registre de sortie x : numéro du bac équipé du coupleur y : emplacement du coupleur dans le bac i : numéro de registre dans le coupleur 2/3 A 2.1-3 Entrées/sorties TOR distantes Les interfaces d'entrées/sorties distantes présentent une modularité de 16 ou 32 voies, par point de connexion sur le bus FIPIO : 16 voies avec un TBX "monobloc" et 32 voies avec un TBX modulaire. L'adresse d'une entrée ou d'une sortie à distance est définie par : RI/ROx,y,i RI RO x , y , i : entrée distante, : sortie distante, : numéro du point de connexion sur le bus FIPIO (1 à 62), : virgule : numéro du module : 0 pour la base et 1 pour l'extension, : virgule : numéro de la voie (0 à 15). Définition de l'adresse de l'équipement Des micro-interrupteurs, présents sur les équipements, permettent un codage binaire de l'adresse (ou point de connexion) dans les limites suivantes : Type d'automate Nbre de points de connexion FIPIO Nbre d'adresses TBX gérées 32 31 (1 à 62) ___________________________________________________________________________________________________ TSX 47 415 TSX/PMX 47 455 ___________________________________________________________________________________________________ TSX/PMX 67 455/87 455/107 455 64 62 (1 à 62) ___________________________________________________________________________________________________ Note Les adresses 0 et 63 sont des adresses réservées respectivement à l'automate et à la console. Exemple d'adressage d'un équipement TBX monobloc (31 équipements maximum par architecture) : codage de l'équipement à l'adresse 15. 0 0 0 0 0 16 8 4 2 1 Exemple d'adressage d'un équipement TBX modulaire (62 équipements maximum par architecture) : codage de l'équipement à l'adresse 62 0 2/4 0 0 0 0 0 0 0 128 64 32 16 8 4 2 1 Les objets adressables du logiciel PL7-3 2 A 2.1-4 Adressage symbolique L’adressage symbolique des objets PL7-3, nécessite que les symboles utilisés soient déjà définis dans la base des symboles. Symbole Un symbole est une chaîne de 8 caractères alphanumériques, dont le premier caractère est alphabétique. Les caractères "_", "$", "%", "|" et "~" sont également acceptés. Il ne peut pas avoir la même syntaxe qu’un objet du langage. La première lettre est en majuscule et les autres lettres sont en minuscules. Objets symbolisables Tous les objets PL7-3 sont symbolisables sauf: • les bits et mots indexés • les étiquettes • les SRi • les tableaux de bits et de mots On classe les objets à symboliser en trois types : • Objet de type simple : c’est un objet auquel on peut associer un symbole. exemples : bloc fonction module bit interne mot interne bit de mot interne bit de mot système TXT1 I2 B1 W1 W1,1 SW2,3 Imprim Brul_1 Temp_ok Ad_emis0 Mem_fct Raz_prod • Objet de type complexe : c’est un objet que l’on peut décomposer en sous- objet sans que ce sous-objet existe dans la table des symboles. exemples : bit d’entrée/sortie bit de mot interne bit de bloc fonction I2,1 W1,3 TXT1,E Brul_1,1 Ad_emis0,3 Imprim,E cas d'impossibilité : - bit d’étape : si X1 est symbolisé par Etape1, on ne pourra pas symboliser X1,2 par Etape1,2 (Etape1 symbolise le bit d’activité de l’étape 1 du CHART, alors que dans X1,2, X1 représente la macro-étape 1). - mot d’étape : si X1,2 est symbolisé par Bitx12, on ne pourra pas symboliser X1,2,V par Bitx12,V (Bitx12 symbolise le bit d’activité de l’étape 2 de la macroétape 1, alors que dans X1,2,V, X1,2 représente l’étape 2 de la macro-étape1). • Objet composé : c’est un objet composé de plusieurs objets. exemples : bit interne indexé bit de mot interne B1(W1) Temp_ok(Ad_emis0) W1(W1),1 Ad_emis0(Ad_emis0),1 Remarque : pour les bits extraits de mots : bit de mot interne, bit de mot constant, bit extrait d'un élément d'OFB, etc. on utilise, s'il existe, le symbole de l'objet dont la syntaxe est la plus complexe : symbole associé au bit de mot et non celui associé au mot. 2/5 A 2.2 Objets bits 2.2-1 Liste des objets bits Les différentes notations utilisées sont : R pour lecture, W pour écriture, F pour forçage. Bits Nature direct indexé limite Bits E/S des modules TOR en bac entrées Ixy,i Ixy,i(Wj) 0≤i≤F R/W/F sorties Oxy,i Oxy,i(Wj) 0≤i≤F R/W/F Bits E/S des modules TOR distants entrées RIx,y,i RIx,y,i(Wj) 0≤i≤15 R sorties ROx,y,i ROx,y,i(Wj) 0≤i≤15 R/W/F Bits entrées/ sorties des coupleurs entrées Ixy,i Ixy,i(Wj) 0≤i≤F R/W sorties Oxy,i Oxy,i(Wj) 0≤i≤7 R/W Bits internes Bi Bi(Wx) 0≤i≤3935 R/W/F Bits système SYi 0≤i≤127 R/W selon i Bits associés au Grafcet étape i du graphe principal 0≤i≤127 0≤j≤63 Adressage Possibilités Xi R/W macro-étape j XMj R étape i de la macro-étape j Xj,i R/W étape d’entrée de la macro-étape j Xj,I R/W étape de sortie de la macro-étape j Xj,O R Bit défaut des modules TOR en bac et coupleurs I/Oxy,S R Bits défaut des modules TOR distants 0≤i≤15 RDx,y,i R disjonction voie de sortie TRIPx,y,i R réarmement voie de sortie RSTx,y,i R/W défaut voie Remarques Lecture/écriture : par programme ou par le terminal. Forçage des entrées/sorties : le forçage est prioritaire sur l’acquisition des entrées et sur le positionnement des sorties défini par programme et ce jusqu’à sa suppression. Forçage des bits internes : le forçage est prioritaire sur l’état défini par le programme utilisateur. 2/6 Les objets adressables du logiciel PL7-3 2 A 2.2-2 Définition des principaux objets bits Bits d’entrées/sorties Ces bits donnent l’état des entrées/sorties des modules. Indexation : Elle porte sur le rang du bit. Exemple : O5,9 (W6)L’incrémentation du mot W6 permet d’adresser, à partir du bit de sortie O5,9, tous les bits des modules d’entrées/sorties placés à la suite dans la configuration. Remarque : l’optimisation de la mémoire bits conduit lors d’une indexation des bits d’entrées/sorties, à tenir compte de la configuration physique des modules (occupation selon la modularité des modules et emplacement vide : 1 module 8 entrées = 8 bits, 1 emplacement vide = 0 bit). Voir annexe page 9/10. Bits défauts des modules Chaque module dispose d’un bit adressable qui est positionné à 1 par le système, lors de l’apparition d’un défaut. Par exemple : • configuration physique du module non conforme à la configuration logicielle déclarée en configuration, • échange avec le processeur non valide, • bornier débroché ou en cours de débrochage, • surintensité sur l’une des voies ou groupe de voies de certains modules de sorties, etc... Cas particulier des modules d'E/S en bac 4 voies et d'E/S à distance Les modules 4 voies TSX DET 466 et TSX DET 417 ainsi que les modules d'entrées/ sorties TOR à distance disposent d’un bit défaut par voie : • modules 4 voies : bit 4 -> voie 0, 5 -> voie 1, 6 -> voie 2 et 7 -> voie 4, Exemple : O41,5 Bit de défaut de la voie 1 du module de sortie situé dans l’emplacement 1 du bac 4. • modules d'E/S distants : RDx,y,i avec i numéro de la voie, Exemple : RD4,1,5 Bit de défaut de la voie 5 du module d'extension connecté à l'adresse 4 du bus FIPIO. Bits internes Les bits internes mémorisent des états intermédiaires durant l’exécution du programme. Nota : les bits d’entrées/sorties non utilisés ne peuvent pas être employés comme bits internes. Bits système Les bits système SY0 à SY127 surveillent le bon fonctionnement de l’automate ainsi que le déroulement du programme application. Le rôle et l’utilisation de ces bits sont développés dans le chapitre 6 du présent manuel. 2/7 A 2.3 Objets mots 2.3-1 Généralités Les objets mots sont adressés par le logiciel PL7-3 sous deux formats : • mots de simple longueur : ces mots de 16 bits contiennent une valeur algébrique comprise entre -32 768 et 32 767, • mot de double longueur : ces mots de 32 bits peuvent contenir une valeur algébrique comprise entre -2 147 483 648 et 2 147 483 647. Ces mots s’implantent en mémoire sur deux mots simple longueur consécutifs. Valeurs immédiates Ce sont des valeurs algébriques de format homogène avec celui des mots simple et double longueur (16 ou 32 bits), qui permettent d’affecter des valeurs à ces mots. Elles sont stockées dans la mémoire programme et peuvent représenter des valeurs comprises entre -32 768 et 32 767 en simple longueur, -2 147 483 648 et 2 147 483 647 en double longueur et ±3,402824 E+38 et ±1.175494 E-38 en format flottant (double longueur). Format des mots Le contenu des mots ou valeurs est rangé en mémoire utilisateur en code binaire avec la convention suivante : Mots de 16 Bits F E DC B A 9 8 7 6 5 4 3 2 1 0 0 1 1 1 0 0 1 1 0 1 0 0 0 1 1 1 ^ Poids Forts Mots de 32 Bits 1 0 1 0 0 Rang du Bit ^ Poids Faibles 0 0 1 0 Poids Forts Poids Faibles 0 0 1 1 1 0 1 0 Rang n Rang n+1 En simple longueur, les mots et valeurs immédiates peuvent être saisis ou restitués à l’écran sous forme : • décimale maxi mini 1579 32767 -32768 • BCD • binaire L’0101001100011010' • message (ASCII) • hexadécimal maxi mini H’A536' H’FFFF’ H’0000' B’1439' maxi B’9999' mini B’0000' M’JM’ En double longueur, les mots et valeurs immédiates ne peuvent être saisis et restitués qu’en décimal ou flottant. 2/8 2 Les objets adressables du logiciel PL7-3 A 2.3-2 Liste des objets mots et bits associés Les différentes notations utilisées sont : R pour lecture et W pour écriture Mots et bits associés Mots internes Mots constants Mots registres Nature Adressage direct indexé simple longueur Wi Wi(Wj) 0≤i≤32596 R/W double longueur DWi DWi(Wj) 0≤i≤32595 R/W simple longueur CWi CWi(Wj) 0≤i≤26206 R/W (1) double longueur CDWi CDWi(Wj) 0≤i≤26205 entrées IWxy,i 0≤i≤7 sorties OWxy,i 0≤i≤7 Mots communs mot commun j de la station i Mots système COMi,j X = B, C, ou D ou COMXi,j 0≤i≤n 0≤j≤m SWi étape i du graphe principal Xi,V Xj,i,V 0≤i≤127 étape i de la macro-étape j étape d’entrée de la macro-étape j Xj,I,V étape de sortie de la macro-étape j Xj,O,V Mot d'état associé aux modules TOR distants R/W R/W (2) (4) (4) R/W R R R R STS,x,y,i 0≤i≤15 Bits extraits des mots bit j du mot interne i Wi,j Wi(Wk),j 0≤j≤F simple longueur bit j du mot constant i CWi,j CWi(Wk),j 0≤j≤F bit j du mot registre i I/OWxy,i,j 0≤j≤F COMi,j,k ou COMXi,j,k 0≤k≤F SWi,j 0≤j≤F bit k du mot commun j de la station i bit j du mot système i R/W (1) R/W 0≤i≤127 Mots associés au Grafcet 0≤j≤63 Possibilités limites R R/W (3) R R/W (3) R/W (2) R/W Remarques : Lecture/écriture : par programme ou par le terminal : (1) (2) écriture uniquement par le terminal, écriture par le programme de la station i, Nombre de stations 33 à 64 17 à 32 9 à 16 5à8 2à4 Taille des COMs 4 8 16 32 64 (3) (4) écriture uniquement par le programme, voir tableau ci-dessous : N°de station : i 0 à 63 0 à 31 0 à 15 0à7 0à3 Rang du mot : j 0à3 0à7 0 à 15 0 à 31 0 à 63 2/9 A 2.3-3 Définition des différents objets mots Mots internes : destinés à stocker des valeurs en cours de programme Les mots internes simple et double longueur sont rangés à l’intérieur de l’espace données dans une même zone mémoire. Ainsi, le mot double longueur DWn correspond aux mots simple longueur Wn et Wn+1 (le mot Wn renfermant les poids faibles et le mot Wn+1 les poids forts du mot DWn). DW0 DW1 DW3 DW2 W0 W1 W2 W3 W4 Exemples : DW0 correspond à W0 et W1 DW543 correspond à W543 et W544 Wi DWi Wi + 1 Mots constants : les mots constants mémorisent des valeurs constantes ou des messages alphanumériques. Leur contenu ne peut être écrit ou modifié que par le terminal. Ils peuvent avoir comme support de la mémoire EPROM. Les mots constants simple et double longueur sont rangés dans un même espace mémoire. Ainsi, le mot double longueur CDWn correspond aux mots simple longueur CWn et CWn+1 (le mot CWn renfermant les poids faibles et le mot CWn+1 les poids forts du mot CDWn). CDW0 CDW1 CDWi CW0 CW1 CW2 CWi CWi + 1 Mots registres d’entrées/sorties Les mots registre sont des objets mots de 16 bits associés aux coupleurs intelligents. Chacun de ces coupleurs dispose de 8 mots registres d’entrées IWxy,i et de 8 mots registres de sorties OWxy,i. Mots communs Les mots communs sont des objets mots de 16 bits communs à toutes les stations connectées au réseau de communication TELWAY, MAPWAY, ETHWAY ou FIPWAY. Ils constituent dans chaque automate une table de 64 mots maximum (TELWAY ), 128 mots maximum (FIPWAY) ou 256 mots maximum (MAPWAY ou ETHWAY). 2/10 2 Les objets adressables du logiciel PL7-3 A Mots système Ces mots de 16 bits assurent plusieurs fonctions : • certains renseignent sur l’état du système par lecture des mots SWi (temps de fonctionnement système et application, etc...). • d’autres permettent d’agir sur l’application (mode de marche Grafcet, etc...). Les mots système sont décrits chapitre 6.2. Mots associés au Grafcet Ces mots représentent le temps d’activité des étapes Grafcet. La valeur maximale du temps est de 9999 incréments, la base de temps étant de 100 ms. Le nombre de mots temps d’activité est à déclarer lors de la configuration des données, indépendamment du nombre d’étapes. Objets bits extraits de mots simple longueur Le logiciel PL7-3 permet d’extraire l’un des 16 bits des mots simple longueur. Le repère du mot est alors complété par le rang du bit extrait séparé par une virgule. 2.4 Objets blocs fonctions 2.4.1 Généralités Le langage à contacts et le langage littéral utilisent une ressource commune : les blocs fonctions, qui sont de deux types : • les blocs fonctions standards qui se répartissent en trois groupes : - les blocs fonctions d’automatismes : ils mettent à disposition de l’utilisateur des fonctions pré-programmées telles que temporisateurs, monostables, compteurs, etc... - le bloc fonction texte : il permet d’échanger des données entre programme utilisateur et coupleur intelligent, ou prise terminal, ou système, ou autre programme utilisateur. Ces communications peuvent s’effectuer localement ou au travers des réseaux TELWAY, MAPWAY, ETHWAY et FIPWAY. - le bloc fonction contrôle : spécifique au traitement multitâche, il permet l'activation ou la désactivation des tâches périodiques (rapide ou auxiliaires). Les autres types de blocs, comparaison et opérations portent sur les mots définis précédemment et ci-après. • les blocs fonctions optionnels (OFBs) qui permettent une extension du langage PL7-3, sous forme de blocs fonctions spécifiques (communication, commande d’axes, ...). 2/11 A 2.4-2 Liste des mots et bits des blocs fonctions standards Les blocs fonctions standards mettent en oeuvre des objets bits de sortie et mots spécifiques. Les notations suivantes sont utilisées R pour lecture, W pour écriture. Bloc fonction Mots et bits associés Temporisateur mot valeur de présélection Ti,P valeur courante Ti,V R temporisateur en cours Ti,R R temporisateur écoulé Ti,D R Ti 0≤i≤127 bit Monostable mot valeur de présélection Mi,P valeur courante Mi,V monostable en cours Mi,R Mi 0≤i≤31 bit Compteur/ décompteur Ci 0≤i≤255 Adressage Possibilités R/W (1) R/W (1) R R R/W (1) mot valeur de présélection Ci,P valeur courante Ci,V R débordement comptage Ci,E R présélection atteinte Ci,D R débordement décomptage Ci,F R bit Registre mot mot d’entrée Ri,I R/W Ri 0≤i≤127 mot de sortie Ri,O R/W registre plein Ri,F R registre vide Ri,E R TXTi,L W bit Texte mot longueur de table en octets TXTi status TXTi,S R 0≤i≤63 adresse coupleur et n° voie TXTi,M W code requête TXTi,C W adresse station TELWAY TXTi,A W n° du bloc texte en communic. TXTi,T W compte rendu d’échange TXTi,V R échange terminé TXTi,D R échange erroné TXTi,E R CTRLi,R R bit Contrôle bit CTRLi 1≤i≤7 sauf 3 (tâche maître) tâche activée Ces mots et bits ne sont pas indexables (1) Si YES en mode CONFIGURATION 2/12 2 Les objets adressables du logiciel PL7-3 A 2.5 Indexation des objets 2.5-1 Adressage direct L’adressage des objets est dit direct, quand l’adresse de ces objets est fixe et définie à l’écriture du programme : B126 désigne le bit interne d’adresse 126. 2.5-2 Adressage indexé En adressage indexé, l’adresse de l’objet est complétée d’un index : à l’adresse de l’objet est ajouté le contenu de l’index. L’index est défini par un mot interne simple longueur Wi. Le nombre de "mots index" n’est pas limité. Exemple : W108(W2) mot d’adresse (108 + contenu du mot W2). Si le mot W2 a pour contenu la valeur 45, écrire W108(W2) équivaut donc à écrire W153. Ce type d’adressage permet de parcourir successivement une suite d’objets de même nature (mots internes, mots constants...), en modifiant par programme le contenu du mot index. Le contenu de l’index peut être négatif. Exemple : B80(W4) Si le contenu de W4 évolue par programme de la valeur 0 à la valeur 20, B80(W4) désigne successivement les bits internes B80 à B100. Les objets bits et mots indexables sont présentés dans les chapitres 2.2-2 et 2.3-2 Débordement d’index, bit système SY20 Il y a débordement d’index dès que l’adresse d’un objet indexé dépasse les limites de la zone incluant ce même type d’objet, c’est-à-dire quand : • l’adresse de base + le contenu de l’index est inférieur à la valeur zéro, • l’adresse de base + le contenu de l’index est supérieur au nombre d’objets déclarés lors de la configuration de l’application (exemple : 1000 mots internes Wi). En cas de débordement d’index, le système provoque : • la mise à l’état 1 du bit système SY20, • la remise à 0 du contenu de l’index. La surveillance du débordement est à la charge de l’utilisateur : le bit SY20 doit être lu par le programme utilisateur pour traitement éventuel. Sa remise à zéro est également à la charge de l’utilisateur. SY20 : • état initial 0, • sur débordement d’index : mise à 1 par le système, • acquittement débordement : mise à 0 par le programme utilisateur. 2/13 A 2/14 Mémoire utilisateur 3 A Mémoire utilisateur Sous chapitre Chapitre 3 Page 3.1 Généralités 3/2 3.2 Mémoire bits 3/2 3.2-1 Composition 3.2-2 Structure 3.3 Mémoire mots 3.3-1 3.3-2 3.3-3 3.3-4 Espace programme Espace constantes Espace données Identificateur de programme IDP 3.4 Structure mémoire et application 3.4-1 3.4-2 3.4-3 3.4-4 Automate TSX et PMX 47-40 Automate TSX et PMX 67-40 Automates TSX/PMX 87-40 et TSX/PMX 107-40 Règles de configuration mémoire Ce chapitre se termine à la page 3/2 3/3 3/4 3/4 3/5 3/5 3/6 3/7 3/7 3/8 3/9 3/10 3/10 3/1 A 3.1 Généralités L’espace mémoire des automates TSX/PMX 47/67/87/107-40, accessible à l’utilisateur est découpé en deux ensembles distincts : • la mémoire bits : RAM CMOS intégrée au module processeur contenant l’image de 4096 objets bits. • la mémoire mots : mots de 16 bits (programme, donnée et constante) supportée par : - une mémoire RAM CMOS intégrée au module processeur (RAM on board), - la cartouche mémoire utilisateur RAM ou EPROM de 32 ou 64 ou 128 ou 256K mots. Ces 2 ensembles, de structure différente selon les applications, sont configurables dans des limites maximales imposées par le type d’automate. Ces limites sont données dans le chapitre 3.4. Les mémoires RAM CMOS sont secourues par batterie Cadnium-nickel, supportée par le module processeur pour la mémoire bit et RAM on board et par chacune des cartouches mémoire utilisateur. 3.2 Mémoire bits 3.2-1 composition Cette mémoire contient 4096 objets bits quel que soit le type de l’automate. Hormis les deux premières zones, la taille des zones suivante est définie par la configuration demandée par l’utilisateur. La structure de la mémoire bit est définie chapitre 3.4. Il est conseillé lors de la configuration des objets ci-contre de ne pas déclarer la totalité des bits non utilisés en bits internes, afin de laisser du disponible pour des extensions futures en modules d’entrées/sorties ou en étapes Grafcet. 3/2 Réservé système Bits système SYi Bits d'E/S en bac I/Oxy Bits étapes Grafcet Xi Bits macro-étapes Grafcet Bits internes Bits d'E/S distantes Bits objets d'OFBs XMi Bi RI/ROx,y Mémoire utilisateur 3 A 3.2-2 Structure Chaque objet bit contenu dans la mémoire bits est mémorisé à l’aide de 3 bits affectés de la façon suivante : Réservé F A C Etat courant (seul bit accessible par le logiciel PL7-3) Etat antérieur Etat de forçage Lors de la mise à jour de la mémoire bits, le système assure : • le transfert de l’image de l’état courant dans l’état antérieur, • la réactualisation de l’état courant par le programme, le système ou le terminal (lors du forçage d’un bit). Front montant ou descendant Cette structure de la mémoire bits permet le test de front montant ou de front descendant sur : • les bits d’entrées/sorties (hors bit défaut S), • les bits internes, Conseils d’utilisation des fronts montants ou descendants La logique de fonctionnement des contacts front montant ou descendant n’est respectée que dans les conditions suivantes : • dans tous les cas, traiter pour un même objet : - bit d’entrée : le contact de front dans la tâche où le module d’entrée est échangé, - bit de sortie ou interne : traiter sa lecture et son écriture à l’intérieur d’une même tâche. • en langage à contacts, écrire une seule fois la bobine d’un objet lorsque un contact de front de cet objet est utilisé dans un programme. Etats de forçage Sur une demande de forçage par le terminal : • l’état de forçage F est mis à l’état 1 F=1 • l’état courant C est mis à l’état : 1 si le forçage à 1 est demandé C=1 0 si le forçage à 0 est demandé C=0 • l’état antérieur est figé à la valeur qu’il avait au moment du forçage. Ces états n’évoluent plus jusqu’à ce que : • le forçage soit supprimé et le bit concerné mis à jour, • le forçage inverse soit demandé, seul l’état courant est modifié. 3/3 A 3.3 Mémoire mots Cette mémoire mots de 16 bits est structurée en 4 espaces logiques : • 3 espaces (données, programme, et constantes) dont la Données application taille est définie par les besoins de l’application, Données OFBs • l’espace identificateur. Les 3 espaces données, programme et constantes comprennent chacun une partie standard associée à l’application et une partie associée aux Blocs Fonctions Optionnels (OFBs). Programme application Programme OFBs Constantes application Tous ces espaces logiques sont répartis sur les 2 espaces physiques existants (voir chapitre 3.4) • la RAM on board dont le taille dépend du processeur utilisé, • l’espace cartouches (1 seule cartouche). Constantes OFBs IDP 3.3-1 Espace programme Découpé en segments, il comprend les segments UCSi, UGSi, CPS associés à l’application et les segments OESi et OPSi associés aux OFBs : • les segments UCSi comprennent Segment (s) Interpréteur Grafcet le code exécutable : si Grafcet déclaré UCS - l’interpréteur Grafcet si celuicode ci est déclaré en configuration, exécutable Programme utilisateur - le code d’ordre des instructions code d'ordre PL7-3 PL7-3. • les segments UGSi comprennent le code non exécutable : - les informations graphiques des instructions PL7-3, - les commentaires. • le segment CPS comprend les paramètres communs : - les paramètres de configuration, - les liens entre les informations du code exécutable et du code non exécutable. 3/4 Segment (s) UGS code non exécutable Programme utilisateur • Informations graphiques, réseaux, phrases, pages, • commentaires Segment CPS Paramètres de configuration de l'application Segment (s) OES code exécutable OFBs code d'ordre Segment (s) OPS Paramètres de configuration des OFBs Mémoire utilisateur 3 A • les segments OESi comprennent le code exécutable des OFBs : - le code d’ordre associé aux OFBs, - les sections constantes initiales. • les segments OPSi comprennent les paramètres de configuration des OFBs. Le nombre de segments UCSi et UGSi dépend de la structure de l’application (monotâche ou multitâche, avec ou sans Grafcet). Le nombre de segments OESi et OPSi dépend du nombre et de la taille des OFBs. Tout segment ne peut dépasser la taille de 32 Kmots. La gestion de ces segments est assurée d’une manière transparente par le terminal. 3.3-2 Espace constantes Il comprend le segment CCS associé à l’application et les segments OCSi associés aux OFBs : • le segment CCS contient les objets mots constants (simple et double longueur) de l’application. Le nombre total de ces objets est défini par l’utilisateur en configuration. Leur contenu est défini en mode CONSTANTES. Segment CCS Mots constants de l'application 1,25 mot par mot simple Simple longueur : CWi longueur Double longueur : CDWi 2 mots par mot double longueur Segment (s) OCS Constantes internes des OFBs • les segments OCSi contiennent les objets mots constants des OFBs (une section par type d’OFBs configuré). Le nombre de segments OCSi dépend du nombre de types d’OFBs utilisés (1 segment au maximum par type d’OFB, soit 32 Kmots). 3.3-3 Espace données Il comprend le segment STACK, les segments CDSi associés à l’application et les segments ODSi associés aux OFBs : • le segment STACK contient les piles des tâches configurées, • les segments CDSi, découpés en zone, comprennent toutes les données évolutives de l’application. Leur ordre de rangement et leur occupation mémoire sont définis ci-après. Hormis les 2 premières zones (système), la taille des zones suivantes est définie par la configuration demandée par l’utilisateur. Segment STACK Piles des tâches configurées Segment (s) CDS Données de l'application (voir page suivante) Segment (s) ODS Données internes des OFBs • les segments ODSi comprennent toutes les données évolutives des OFBs. 3/5 A Le nombre de segments ODSi dépend du nombre de types d’OFBs utilisés (1 segment au maximum par type d’OFBs, soit 32 Kmots). • Entrées/sorties : correspond aux bits défaut des modules d’entrées/sorties, 1 mot par bac simple repère pair, • Blocs fonctions : correspond aux mots de ceux-ci (valeurs courante, de réglage...). • Grafcet : si celui-ci est déclaré présent, il occupe : - 550 mots au minimum, - 1050 mots par défaut, - 5658 mots au maximum. • Tâches utilisateur : la tâche maître (MAST) est systématiquement présente, les autres tâches sont à déclarer en configuration. Toutes ces tâches occupent deux zones différentes dans l’espace données. • Mots internes : taille définie par le nombre déclaré en configuration. • Mots registres coupleurs : 8 mots IW et 8 mots OW par coupleur intelligent et par module de sorties analogiques 12 bits. • Mots communs TELWAY/ MAPWAY/ETHWAY/FIPWAY si le(s) coupleur(s) réseau est déclaré dans les entrées/sorties, occupation de 64/128/256 mots par coupleur. • Temps d’activité Grafcet : 1 mot par Xi,V déclaré en configuration. 32 mots Réservé système 128 mots Mots système 1 mot / d. bac Entrées / Sorties par bloc : T : 4 mots M : 5 mots C : 3 mots R : 6 mots (*) TXT : 64 mots Blocs fonctions • Temporisateur • Monostable • Compteur • Registre • Texte SWi I/Oxy, S Grafcet déclaré Grafcet par tâche : Mast : 3 mots IT : 2 mots Fast : 3 mots Aux : 3 mots Tâches utilisateur Wi : 1 mot DWi : 2 mots Mots internes par module : ASR AEM : 16 mots SCM AXM Registres coupleurs Iwxy, i Owxy,i 0 64 mots (TELWAY) 256 mots (MAPWAY) Mots communs TELWAY ou MAPWAY par Xi, V déclaré : 1 mot Temps d'activité des étapes ETHWAY ou FIPWAY Wi DWi COMi, j COMBi, j COMCi, j COMDi, j Xi, V (*) pour les registres, à l'occupation de 6 mots, il y a lieu d'ajouter 1 mot par pas déclaré. 3.3-4 Identificateur de programme IDP L’identificateur de programme, non accessible à l’utilisateur, est géré d’une manière transparente par le terminal. Indispensable à la gestion de la mémoire utilisateur par le processeur, il contient l’organisation des espaces et des zones de cette dernière. Sa taille : 333 mots au maximum, dépend des tâches et du nombre d’OFBs configurés. 3/6 3 Mémoire utilisateur A 3.4 Structure mémoire et application 3.4-1 Automate TSX et PMX 47-40 • Structure de la mémoire bit Mémoire bits Maxi taille disponible sur carte processeur 4096 type bits système SYi 128 d’objets bits entrées/sorties I/Oxy,i et RI/ROx,y,i (1) (2) Grafcet étapes Xi 512 1024 512 macro-étapes XMi 64 bits internes Bi : dans la limite de la mémoire disponible • Structure de la mémoire mot RAM on board Mémoire cartouche RAM ou EPROM 24 Kmots (1) 48 Kmots (2) 32 Kmots (1) 32/64 Kmots (2) Données Programme Constantes Données (*) Programme Constantes (*) en RAM seulement (1) (2) avec processeur TSX et TPMX P47 400/405 avec processeurs TSX et TPMX P47 410/411/420/415/425/455 • structure application : - tâche interruption : 1 - tâche maître : 1 - tâche rapide : 1 - tâche auxiliaire : 2 3/7 A 3.4-2 Automate TSX et PMX 67-40 • Structure de la mémoire bit Mémoire bits Maxi taille disponible sur carte processeur 4096 type bits système SYi 128 d’objets bits entrées/sorties I/Oxy,i et RI/ROx,y,i Grafcet étapes Xi 512 macro-étapes XMi 64 bits internes Bi : dans la limite de la mémoire disponible • Structure de la mémoire mot RAM on board Mémoire cartouche RAM ou EPROM 96 Kmots 32/64/128 Kmots Données Programme Constantes Données (*) Programme Constantes (*) en RAM seulement • structure application : - tâche interruption : 1 - tâche maître : 1 3/8 2048 - tâche rapide : 1 - tâche auxiliaire : 4 Mémoire utilisateur 3 A 3.4-3 Automates TSX/PMX 87-40 et TSX/PMX 107-40 • Structure de la mémoire bit Mémoire bits Maxi taille disponible sur carte processeur 4096 type bits système SYi 128 d’objets bits entrées/sorties I/Oxy,i et RI/ROx,y,i Grafcet étapes Xi 2048 512 macro-étapes XMi 64 bits internes Bi : dans la limite de la mémoire disponible • Structure de la mémoire mot RAM on board Mémoire cartouche RAM ou EPROM 96 Kmots 64/128/256 Kmots Données Programme Constantes Données (*) Programme Constantes (*) en RAM seulement • structure application : - tâche interruption : 1 - tâche maître : 1 - tâche rapide : 1 - tâche auxiliaire : 4 3/9 A 3.4-4 Règles de configuration mémoire Les règles de configurations suivantes doivent être observées : Pour tous les automates V3 • la mémoire RAM on board ne peut supporter que des données. Pour tous les automates V4 et V5 • la mémoire RAM on board supporte des données, mais également du programme ou/et des constantes. • le type de cartouches utilisées est pour les espaces mémoires, - Données : mémoire RAM CMOS, - Programme : mémoire EPROM ou RAM CMOS; cette dernière étant nécessaire en phase d’écriture et de mise au point du programme, - Constantes et IDP : mémoire EPROM ou RAM CMOS, • l’espace Constantes est facultatif. 3/10 Structure logicielle monotâche 4 A Structure logicielle monotâche Sous chapitre Chapitre 4 Page 4.1 Description tâche maître 4/2 4.2 Traitement du programme 4/3 4.2-1 Modules programme 4/3 4.3 Fonctionnement structure monotâche 4.3-1 Cycle de fonctionnement 4.3-2 Débordement de tâche Ce chapitre se termine à la page 4/4 4/4 4/5 4/6 4/1 A 4.1 Description tâche maître Le programme d’une application monotâche est contenu dans une seule tâche utilisateur : la tâche maître MAST. Cette tâche, d’exécution périodique se présente comme ci-dessous. L’exécution de la tâche maître est effectuée de façon périodique selon un temps défini à la configuration par l’utilisateur (de 15 à 255 ms). Ce temps doit permettre le déroulement de l’ensemble des fonctions suivantes : Acquisition des entrées : Le système assure implicitement : • prise en compte par le système des bits et mots système (1), • photo des données demandées par le terminal connecté à l’automate en mode mise au point (1), • prise en compte en mémoire de données des messages en provenance des coupleurs intelligents et des coupleurs TELWAY, MAPWAY, ETHWAY, FIPWAY et/ou FIPIO (2), • écriture en mémoire de données des mots communs TELWAY, MAPWAY, ETHWAY et/ou FIPWAY (COM), • écriture en mémoire bits des bits d'entrées (I et RI), des bits de défaut des E/S à distance (RD), • écriture en mémoire de données des mots registres d’entrées (IW) des coupleurs, • traitement des requêtes terminal (1), Période Acquisition des entrées Traitement du programme Mise à jour des sorties Envoi des messages Traitement du programme Le programme écrit par l’utilisateur est alors exécuté. Mise à jour des sorties Le système assure implicitement : • mise à jour par le système des bits et mots système (1), • émission des messages vers les coupleurs intelligents et les coupleurs TELWAY ou MAPWAY ou ETHWAY (2), • émission vers le coupleur TELWAY ou FIPWAY des 4 mots communs (COM), • émission vers chaque coupleur MAPWAY ou ETHWAY de 64 mots commums au maximum (COM, COMB, COMC, COMD), • écriture des bits de sorties (O et RO) des modules d’entrées/sorties, • écriture des mots registres de sorties (OW) dans les coupleurs. (1) (2) seules ces fonctions sont assurées quand l’automate est en arrêt exécution. à chaque cycle de la tâche maître, celle-ci peut traiter jusqu’à un message en réception et un message en émission par coupleur configuré (intelligent ou réseau). 4/2 4 Structure logicielle monotâche A 4.2 Traitement du programme 4.2-1 Modules programme Le programme de la tâche maître est structuré en plusieurs modules programme. Sans Grafcet Avec Grafcet Traitement Préliminaire Lit ou Lad PRL Traitement Principal MAIN Sous-Programme Sous-Programme SRi Sous-Programme SR1 Lit ou SR0 Lit Lad ou Lit Lad ou 128 SR Lad maxi. Lit ou Lad Traitement Séquentiel CHART XM Grafcet : avec transitions et actions Lit ou Lad Sous-Programme Sous-Programme SRi Sous-Programme SR1 Lit ou Lit Lad ou Lit Lad ou 128 SR Lad maxi. SR0 Traitement Postérieur Lit ou Lad POST Modules programme MAIN, SR, PRL, POST : • chaque module est écrit avec un seul langage (contacts ou littéral), • des modules, écrits avec des langages différents peuvent être mixés dans une même tâche maître (exemple : le module MAIN écrit en littéral peut appeler un sous-programme écrit en langage à contacts qui peut lui même appeler un autre sous-programme en langage littéral). • les sous-programmes sont affectés à l’ensemble de la tâche. Ils permettent 8 niveaux d’imbrications. Module traitement séquentiel CHART Il est réservé aux pages GRAFCET et fait appel pour l’écriture de chaque transition ou action au langage à contacts ou langage littéral. Dans l’espace programme, les modules programme de la tâche maître sont inclus dans 2 segments UCS code exécutable et 1 segment UGS code non exécutable Sans Grafcet Avec Grafcet 1er segment UCS MAIN Interpréteur, CHART, XM et SR 2eme segment UCS SR PRL, POST, Actions et Transitions 3eme segment UGS Ensemble du code non exécutable de la tâche MAST 4eme segment Source programme pour les OFBs de surveillance avec mémorisation • Le nombre de réseaux de contacts ou de phrases littérales programmés dans un module n’est limité que par la longueur des segments le renfermant : 32 K maximum par segment. • Chaque module comporte au maximum 255 réseaux ou phrases repérés par une étiquette (repères compris entre 1 à 999). 4/3 A 4.3 Fonctionnement structure monotâche 4.3-1 Cycle de fonctionnement Afin que le processeur assure toutes ces fonctionnalités, la tâche maître est entourée d’une tâche de surveillance et d’une tâche pilote. Ces deux dernières, gérées par le superviseur, sont transparentes pour l’utilisateur. La tâche pilote, prioritaire par rapport aux tâches maître et de surveillance, n’est exécutée que sur apparition d’événements externes ou internes (changement de mode de marche automate, défauts matériel ou logiciel...). La tâche de surveillance assure le contrôle de la totalité des modules d’E/S en bac ou à distance, inclus dans la configuration matérielle. Cette tâche est exécutée à la demande de la tâche pilote (reprise à chaud, changement d'application) ou en continu à la suite de la tâche maître dans l’attente du prochain appel période. Ainsi il apparaît qu’un temps minimum (différence entre la période de la tâche maître et son temps d’exécution) doit exister afin d’assurer la gestion de la tâche de surveillance. Sur chaque appel période, le système assure : • l’exécution de la tâche maître dans sa totalité puis, • l’exécution de la tâche de surveillance, dans l’attente du prochain appel période. Evénements Evénements Externes Internes -Commande -Défaut RUN/STOP logiciel -Disparition secteur -Changement de cartouche + Tâche Pilote Période Tâche Maitre Superviseur Priorité Entrées Programme utilisateur Sorties Tâche de surveillance L’exécution de la tâche maître peut être occasionnellement allongée Surveillance et contrôle des modules de configuration du fait de : • la scrutation de sous-programme, • l’exécution d’une phrase itérative, • l’exécution d’un saut de programme amont, • une activation importante d’étapes Grafcet, • une messagerie (coupleur ou terminal) trop importante, • une reprise à froid demandée par le terminal. Ainsi, cette exécution pouvant devenir supérieure à la période configurée, il y a alors débordement de tâche. (signalé par le bit système SY19). 4/4 Structure logicielle monotâche 4 A 4.3-2 Débordement de tâche Dès que le temps d’exécution de la tâche maître dépasse le temps alloué par la période définie par l’utilisateur : • la tâche maître termine son exécution avec mise à l’état 1 du bit système SY19 "débordement tâche (OVERRUN)" en fin de celle-ci puis, • afin d’absorber la charge occasionnelle, les cycles de la tâche maître sont alors repris en exécution "enchaînée" (sans exécution de la tâche de surveillance et sans attente du top horloge de la période), • selon la nature de la surcharge de traitement, 2 cas peuvent se présenter : la surcharge est occasionnelle : le système peut alors l’absorber sur un ou quelques cycles de la tâche maître. Pendant tout ce temps le bit système SY19 est positionné à l’état 1 à chaque fin de cycle de la tâche maître. Sa mise à l’état 0 est à la charge du programme utilisateur. Attention : une surcharge occasionnelle importante peut provoquer une désynchronisation entre la tâche maître et le cadencement des échanges périodiques sur FIPIO, ce qui peut amener : - l'absence de mise à jour de une ou plusieurs données utilisées par la tâche maître, - la perte d'état "transitoire" positionné pendant un cycle tâche sur une sortie de la tâche. la surcharge est trop importante ou permanente : le système ne peut l’absorber, entraînant ainsi une dérive du nombre d’appel période par rapport au nombre d’exécution de tâche maître. La différence atteignant 8, l’automate passe alors dans l’état "défaut logiciel non bloquant" soit : • arrêt immédiat de l’exécution de la tâche maître, passage en STOP de l’automate, • le voyant MEM est allumé, le voyant RUN est éteint, La relance de la tâche nécessite : • la connexion du terminal, • une initialisation du processeur, • le lancement de la tâche maître (RUN). La mise à l’état 0 du bit système SY19, si elle n’est pas assurée par le programme, doit être effectuée par le terminal. Le cycle de la tâche est alors repris en son début, le contexte données étant inchangé. Afin d’éviter ce type de défaut, sauf s’il s’agit d’erreur de programmation, il est conseillé de : • augmenter la période de la tâche maître ou mieux, • restructurer son programme en utilisant les tâches rapide et auxiliaires. Note : cas d’une période tâche maître > 125 ms Si l’exécution de la tâche maître dépasse 1 s (boucle dans le programme), le débordement tâche entraîne un défaut logiciel bloquant soit : • arrêt immédiat de l’automate, • le voyant RUN est éteint et les 3 voyants CPU, MEM et I/O sont allumés. La relance de l’automate nécessite : • coupure de la tension d’alimentation, • reprise secteur, celle-ci étant du type reprise à froid. 4/5 A 4/6 Structure logicielle multitâche 5 A Structure logicielle multitâche Sous chapitre 5.1 Traitement multitâche 5.1-1 Description 5.1-2 Tâches utilisateur et tâches système 5.2 Tâches périodiques 5.2-1 5.2-2 5.2-3 5.2-4 5.2-5 5.2-6 Principe Organisation des tâches utilisateur Etat d’une tâche périodique Fonctionnement des tâches périodiques Gestion des temps Débordement d’une tâche 5.3 Mise en oeuvre du traitement multitâche 5.3-1 Influence des tâches entre elles 5.3-2 Gains apportés par les tâches auxiliaires Chapitre 5 Page 5/2 5/2 5/3 5/4 5/4 5/4 5/5 5/5 5/7 5/8 5/9 5/9 5/10 5.4 Modes de marche des tâches périodiques 5/12 Ce chapitre se termine à la page 5/14 5/1 A 5.1 Traitement multitâche 5.1-1 Description Les fonctions de dialogue nécessaires à la conduite d’installation, les fonctions de communication nécessaires aux besoins de répartition et de hiérarchisation de l’automatisme, les fonctions de régulation, les fonctions de positionnement sont autant de programmes indépendants et simultanément exécutés par l’automate. Ces besoins ont définis une nouvelle structure, appelée multitâche où chaque tâche est spécialisée et effectue un traitement de façon périodique. Des niveaux de priorité sont fixés pour chaque tâche afin de privilégier certains traitements. Superviseur Période Période Période Evénements externes Période Période Période Tâche IT Tâche Rapide Tâche Maître Tâches Auxiliaires AUX 3 AUX 3 AUX 1 IT Tâche Interruption FAST MAST AUX 0 Séquentiel Mesure •••• •••• Dial. Tâches Périodiques + Priorité - L’utilisateur dispose de 6 tâches périodiques afin de gérer son application. La tâche maître (MAST) reste à la base de l’application et permet l’activation ou non des autres tâches. La répartition des différentes tâches selon le type d’automate est définie au chapitre 3.4. De façon asynchrone aux tâches périodiques, une tâche interruption peut être activée par un ordre en provenance d’événements extérieurs. Son traitement est le plus prioritaire et impose l’arrêt du traitement en cours. 5/2 Structure logicielle multitâche 5 A 5.1-2 Tâches utilisateur et tâches système Comme en structure logicielle monotâche, les tâches utilisateur sont entourées par deux tâches système : la tâche pilote et la tâche de surveillance. Chaque tâche, dans la structure multitâche, possède une priorité qui lui permet, soit : • d’interrompre l’exécution de toute tâche moins prioritaire, • d’être interrompue par l’appel d’une tâche plus prioritaire. Tâche pilote : tâche asynchrone exécutée que sur événement provoquant un changement du mode de marche de l’automate (RUN, STOP, défaut...). Cette tâche est la plus prioritaire. Tâche interruption : tâche utilisateur asynchrone dont l’exécution est déclenchée par un ordre en provenance d’événements extérieurs qui doivent être traités prioritairement (exemple : coupleur de positionnement). Tâche rapide : tâche périodique la plus prioritaire réservée aux traitements de courte durée à fréquence d’exécution élevée. Période configu-rable de 5 à 255 ms. Tâche maître : tâche périodique obligatoire exécutant le traitement séquentiel programmé principalement en langage Grafcet. Elle est activée systématiquement par le superviseur et permet l’activation des autres tâches par l’intermédiaire du bloc fonction contrôle CTRL. Période configurable de 5 à 255 ms. Tâches auxiliaires : tâches périodiques destinées aux traitements plus lents tels que mesure, régulation, dialogue opérateur, aide au diagnostic... Période configurable de 10 à 2550 ms. + Tâche Pilote (Système) Tâche IT Tâche Rapide Superviseur Priorité Tâches utilisateur Tâche Maitre 0 Tâches 1 Auxiliaires 2 3 - Tâche de Surveillance (Système) Tâche de surveillance : tâche système périodique transparente pour l’utilisateur Elle assure le contrôle de tous les modules de la configuration. Important : les objets bits et mots de la mémoire bits, de l’espace Données et de l’espace Constantes sont communs à l’ensemble des tâches utilisateur. 5/3 A 5.2 Tâches périodiques 5.2-1 Principe Le traitement multitâche est basé sur l’exécution de plusieurs tâches périodiques dont les valeurs des périodes sont fixées par l’utilisateur à la configuration du système. L’exécution de chaque tâche est lancée de façon périodique (sur présence des tops horloge) et le programme affecté à la tâche doit être exécuté dans sa totalité entre les deux tops horloge définissant la période de la tâche. Période t Top Horloge Exécution de la tâche A la configuration du système, l’utilisateur déclare la présence ou non de la tâche rapide et des tâches auxiliaires. L’ existence des tâches auxiliaires et leur valeur de période doivent être croissantes et suivre l’ordre de priorité (FAST → MAST → AUX0 → AUX3). 5.2-2 Organisation des tâches utilisateur Le superviseur pilote les différentes tâches périodiques, selon une périodicité et une priorité qui leur sont propres. Tâche maître : la structure et le fonctionnement de cette tâche restent identiques à ceux présentés en structure monotâche (chapitre 4.1). Tâches rapide et auxiliaires : toutes ces tâches possèdent la même structure (schéma ci-contre). Cinq zones peuvent être distinguées au sein d’une même tâche, dont : • période d’exécution : propre à chaque tâche, • échange avec le terminal : photo des données nécessaires au terminal pour l’animation temps réel d’un écran en mode mise au point, • acquisition des entrées : pour les modules affectés à la tâche lors de la configuration du système (ces modules sont alors retirés de la table des échanges de la tâche maître). Ces acquisitions portent uniquement sur les bits TOR et sur les registres IW. 5/4 Période Echange avec le terminal Entrées I, IW Traitement Main Sorties O, OW SR SR 5 Structure logicielle multitâche A • traitement du programme : il est composé d’un module principal MAIN et de modules sous programme affectés à chaque tâche (128 SR maximum). Chaque module est monolangage : langage littéral ou à contacts. Les règles d’utilisation des langages ainsi que la capacité des modules sont identiques à la tâche maître (chapitre 4.2-1 sans Grafcet). • mise à jour des sorties : pour les modules affectés à la tâche, même définition que pour l’acquisition des entrées. Remarque : le traitement des messages coupleurs intelligents ou coupleur TELWAY, MAPWAY, ETHWAY ou FIPWAY et des mots communs s’effectue toujours en tâche maître. 5.2-3 Etat d’une tâche périodique Deux paramètres définissent l’état d’une tâche, automate sous tension : • exécutée ou non exécutée : ordre en provenance du terminal (RUN ou STOP) peut porter sur un ou sur l’ensemble des tâches. • activée ou désactivée : événement en provenance du programme utilisateur par exécution du bloc fonction contrôle CTRL écrit dans une tâche. 5.2-4 Fonctionnement des tâches périodiques ▼ Oui RUN tâche Oui ▼ Activation de la tâche ▼ Activation process de recopie des valeurs de la Ram réseau (uniquement FIPIO) ▼ Oui ▼ Mise à jour des entrées en bac ▼ ▼ Période top horloge ▼ • mise sous tension de l’automate : seule la tâche maître est active. Les périodes des autres tâches configurées sont lancées. • activation de la tâche i : elle est demandée par l’exécution du bloc fonction contrôle CTRLi écrit dans toute tâche active et exécutée. La tâche i est alors exécutée à partir du premier top reçu de son horloge et quand la ou les tâches plus prioritaires ont terminé leur cycle. • tâche activée : l’exécution de la tâche i se fait jusqu’à une demande d’exécution émanant d’une tâche plus prioritaire. Elle va alors suspendre son exécution pour la poursuivre par la suite. ▼ Activation de la tâche ▼ Fin du process de recopie des valeurs de la Ram réseau Oui ▼ Mise à jour des entrées distantes ▼ Exécution du programme utilisateur ▼ Mise à jour des sorties en bac et à distance (uniquement FIPIO) ▼ Activation process de recopie des valeurs de la Ram réseau (uniquement FIPIO) ▼ 5/5 A • désactivation de la tâche i : elle est demandée par le bloc CTRLi. La tâche termine son cycle (après mise à jour des sorties) avant d’être effectivement désactivée. La mise à jour implicite des entrées et des sorties des modules affectées à une tâche n’est plus assurée quand celle-ci est désactivée ou en STOP. Soit un programme multitâche dans lequel sont configurées trois tâches périodiques. La tâche système de surveillance est exécutée quand les tâches utilisateur ont terminé leur cycle (entrées, programme et sorties). Exemple : Enchaînement des tâches Rapide 2,5ms 10ms Maître Aux. 15ms 40ms 10ms 100ms Système CTRL AUX 0 CTRL RAP 2,5ms ▲ ▲ 0 10 40 80 100 120 ms Période Temps d'exécution Remarque La répartition des entrées/sorties : en bac ou à distance, créée des incidences sur le temps d'exécution d'une tâche utilisateur (l'attente du signal de fin de process de recopie des valeurs de la Ram réseau pouvant devenir important). 5/6 Structure logicielle multitâche 5 A 5.2-5 Gestion des temps Chaque top horloge affecté à une tâche périodique va demander son exécution. Le schéma ci-dessous montre l’influence de l’introduction d’une tâche rapide sur l’exécution de la tâche maître. MONOTACHE Tâche Maître MULTITACHE Tâches Maître Rapide Entrées Entrées Traitement Entrées Sorties Entrées Traitement Traitement Sorties Entrées Sorties Traitement Sorties Sorties Entrées Traitement Sorties 5/7 A Chaque tâche est interruptible par une tâche dont la période est plus petite. La tâche interrompante est alors exécutée soit jusqu’à son exécution totale pour reprendre ensuite la tâche interrompue, soit jusqu’à son interruption par une tâche encore plus prioritaire. Le cumul de tous ces temps doit autoriser une charge du processeur principal inférieure à 90% (sinon le dépassement va engendrer l’arrêt de l’automate) car il faut réserver au système environ 10% du temps afin que s’effectuent les tâches système, le dialogue avec le terminal... Remarque : il faut cependant noter que la gestion des messages véhiculés par bloc texte, reste affectée à la tâche maître, ce qui rend donc inutile la gestion par programme, de blocs fonctions texte dans une tâche plus rapide que la tâche maître. 5.2-6 Débordement d’une tâche Les tâches rapide ou auxiliaires étant périodiques, leur comportement sur débordement est identique à celui décrit pour la tâche maître (voir sous-chapitre 4.3.2). Cependant, chaque tâche possède son propre bit système "débordement tâche" SY19. Celui-ci n’a de signification que pour la tâche dans laquelle il est testé. Il est donc conseillé, afin de pouvoir effectuer un diagnostic par programme ou par le terminal, de transférer dans chaque tâche configurée l’image du bit SY19 dans des bits internes. Le diagnostic s’effectue alors sur ces bits internes "image de SY19". • Comportement des tâches sur débordement de l’une d’elles : Par rapport à la tâche en débordement : - les tâches plus prioritaires poursuivent leur cycle normalement, - les tâches moins prioritaires ont leur cycle interrompu pendant le temps où le système résorbe la surcharge de la tâche en débordement. Si la surcharge ne peut être absorbée (différence entre le nombre d’appel période de la tâche en débordement et son nombre de cycle d’exécution atteignant 8), l’automate passe en STOP : "défaut logiciel non bloquant" (identique au chapitre 4.3-2). • Diagnostic Par lecture des bits internes "image des SY19", il est possible de déterminer la tâche origine du défaut (bit à l’état 1 = tâche en défaut). Dans le cas où plusieurs bits internes "image SY19" sont à l’état 1, indiquant ainsi plusieurs tâches en débordement, la tâche à l'origine du défaut est celle de priorité la plus élevée. 5/8 Structure logicielle multitâche 5 A 5.3 Mise en oeuvre du traitement multitâche 5.3-1 Influence des tâches entre elles Le chronogramme de gestion des temps précédemment décrit permet de montrer aisément l’influence de l’introduction d’une tâche, sur les temps d’exécution des autres tâches. En effet lorsqu’un temps d’exécution de tâche périodique approche la valeur de la période de cette tâche, le temps libre pour l’exécution des autres tâches (système ou utilisateur) tend vers zéro. Il devient donc impossible au processeur d’assurer le fonctionnement de l’automatisme. La courbe représentée ci-dessous montre l’influence d’une tâche sur une tâche moins rapide. Considérons une utilisation optimum des ressources du processeur, soit un taux de charge constant et égal à 90%. Une tâche périodique est caractérisée par deux temps : • tr • te période (ou temps de récurrence), exécution (temps d’exécution de la tâche). Pour un traitement multitâche, la somme des rapports te/tr de chaque tâche doit être inférieure à 90% : tr te te/tr < 90% L’hyperbole ci-dessous montre l’influence d’une tâche par rapport à une tâche moins prioritaire : • en abscisse se trouvent les caractéristiques d’une tâche plus prioritaire que celles qui figurent en ordonnées, • Il est facile d’observer qu’un rapport tr/te inférieur à 2 d’une tâche plus prioritaire impose à la tâche moins prioritaire un rapport tr/te tendant vers des valeurs inacceptables. Exemple avec : • tâche rapide tr=15 ms et te= 4 ms ce qui donne tr/te = 3,75. • tâche maître te = 60 ms. La courbe définie pour la tâche maître un tr/te = 1,55 d’où : une période tâche maître tr : 60 x 1,55 = 93 ms soit environ 95 ms. 5 4 3 2 tr te 1 2 3 4 1 Exemple de l'influence de la tâche rapide sur la tâche maitre 5/9 A 5.3-2 Gains apportés par les tâches auxiliaires Les tâches auxiliaires affectées à des traitements particuliers vont donc permettre de décharger la tâche maître dont la période pourra alors être réduite. Tous les chiffres et démonstrations annoncés s’entendent avec une utilisation optimale des ressources du processeur (taux de charge constant égal à 90%). Le réseau de courbes ci-contre indique le gain apporté par la création d’une tâche auxiliaire sur la tâche maître. En abscisse figure le gain souhaité en pour cent sur la période de la tâche maître. Les différentes courbes ont été définies en fonction de la quantité de programme transféré (ou temps d’exécution) de la tâche maître vers une tâche auxiliaire. Le résultat en ordonnées indique le ratio existant alors entre la période de la tâche auxiliaire créée et celle de la nouvelle tâche maître. Période auxiliaire Période mast. 15 10% 20% 30% 40% 50% 60% 70% 80% 90%100% 10 5 0 0 5/10 10 20 30 40 50 60 70 80 90 100 Gain% Mast. 5 Structure logicielle multitâche A Exemple Soit un programme monotâche dont la période de la tâche maître est 100 ms. Nous désirons un gain de 20% sur cette période donc qu’elle atteigne une valeur de 80 ms. Une tâche auxiliaire est crée à cet effet. De part la structure et la connaissance du programme, une certaine quantité de programme (représentée par le temps d’exécution de ce morceau de programme) peut être transférée de la tâche maître vers la tâche auxiliaire déclarée. Dans l’exemple, 30% du temps d’exécution du programme est transféré d’une tâche à l’autre. Période auxiliaire Période mast. 10% 20% 30% 40% 50% 60% 5 3 0 0 10 20 30 40 50 Gain% Mast. Le rapport des période vaut alors 3 suivant l’extrait de courbe ci-dessus, ce qui définit la période de la tâche auxiliaire 0 : tr = 3 x 80 (tr tâche maître) = 240 ms. Le même raisonnement peut être reconduit pour la création de la tâche auxiliaire 1 vis à vis de la tâche auxiliaire 0 et ainsi de suite. 5/11 A 5.4 Modes de marche des tâches périodiques Les différents états que peut prendre une application PL7-3 sont les suivants : N_CONF, IDLE, STOP, RUN, DEFAUT. N_CONF APPLI SY0 STOP APPLI ▲ ▲ ▼ IDLE APPLI Init ▲ Run application Run/Stop application ▼ ▲ N_CONF TASK RUN TASK STOP TASK BREAK TASK INACTIVE TASK 5/12 RUN APPLI DEFAUT APPLI ▲ Défaut application Structure logicielle multitâche 5 A N_CONF APPLI Il n'existe aucune tâche utilisateur. Seules sont actives les tâches système qui assurent les fonctions de communication sur TELWAY, MAPWAY, ETHWAY, FIPWAY ou FIPIO. Le processeur ne commande aucun module en bac ou distant et l'état des sorties TOR est à 0 (1). IDLE APPLI Les tâches utilisateur et les objets PL7-3 sont positionnés sur des valeurs de repli. Aucun échange d'entrées/sorties n'est réalisé, les valeurs image du processeur et les sorties TOR sont positionnées à 0, les valeurs images du processeur, autre que TOR, sont spécifiques de la fonction gérée. STOP APPLI Les tâches utilisateur sont arrêtées en début de cycle. Les sorties des modules en bac sont positionnées à 0 ou dans l'état de sécurité des sorties (suivant la valeur de SY8 et des bits SY32 à SY39). Les sorties des modules distants sont positionnées à la valeur de repli, définie en configuration : maintient ou repli à 0 ou à 1(2). (1) Un module d'E/S distant TBX peut appliquer des valeurs de repli ou de maintient, s'il a été antérieurement configuré puis piloté par une application PL7-3. Il perdra sa configuration sur une coupure de son alimentation. (2) Sur un passage en STOP, un groupe de voies prend les valeurs de repli configurées, lorsque la tâche qui le pilote a envoyé des valeurs application. Le groupe de voies perd ses valeurs de repli lorsqu'il est reconfiguré (le système ne reconfigure pas systématiquement un groupe de voies). Une phase préliminaire d'apprentissage assure les contrôles. 5/13 A RUN APPLI Chaque tâche utilisateur possède un état local, dépendant des actions programmées et des requêtes de mise au point provenant de l'utilisateur. • N_CONF TASK : la tâche est non configurée. Aucun module d'entrées/sorties ne peut lui être affecté. • RUN TASK : les sorties de la mémoire image sont cycliquement transmises vers les modules de sortie. Ces valeurs sont positionnées sur l'interface physique du module, excepté pour les modules en bac, lorsque le bit SY9 (mise à zéro des sorties) ou le bit SY116 (suspension de la commande des sorties) sont à l'état 1. • STOP TASK : arrêt partiel de l'application. L'ensemble des sorties des modules en bac prennent la valeur de sécurité 0, excepté pour les bac ou un maintient a été demandé : dans ce cas, le module garde la dernière valeur de la sortie. Les modules pilotés dans une tâche toujours en RUN continus d'être rafraîchis. Les sorties à distance pilotées par la tâche en STOP prennent leur valeur de repli; les autres sorties à distance ne sont pas impactées. • BREAK TASK : arrêt pour la mise au point de la tâche. Celle-ci est strictement arrêtée à l'endroit défini par le point d'arrêt. Le comportement des sorties est identique à celui de l'état STOP TASK. • INACTIVE TASK : état initial sur un RUN provenant de l'état application IDLE (excepté pour la tâche maître qui lance l'exécution de la tâche). Pour sortir de l'état inactif, il est nécessaire de programmer l'action START CTRL de la tâche. Sur une action RESET CTRL (retour à l'état inactif), les entrées/sorties en bac de la tâche ne sont plus rafraîchies et reste en l'état quel que soit la consigne de sécurité. Les entrées/sorties distantes prennent les valeurs de repli ou les valeurs de sécurité (si l'application n'a pas encore envoyée une valeur significative). • DEFAUT TASK : les sorties qui ont été pilotées au moins une fois, pour une tâche en RUN, prennent leur valeur de repli, sinon la valeur de sécurité. Lors de la reprise, chaque tâche en RUN appliquera les valeurs définies par l'application (toutes les tâches, sauf la tâche maître sont positionnées dans l'état inactif). Lorsque la coupure secteur est générale, les modules d'E/S distants TBX TOR perdent leur configuration et applique de ce fait des valeurs de sécurité jusqu'à ce qu'ils reçoivent une première valeur application. 5/14 Rôle des bits et mots système 6 A Rôle des bits et des mots système Sous chapitre Chapitre 6 Page 6.1 Bits système 6/2 6.2 Mots système 6/10 6.3 Bits et mots système associés aux E/S distantes 6/16 Ce chapitre se termine à la page 6/16 6/1 A 6.1 Bits système Les automates TSX/PMX 47/67/87/107-40 disposent de 128 bits système (SY0 à SY127) qui indiquent l’état de l’automate ou permettent d’agir sur le fonctionnement de celui-ci. L’état de ces bits est à tester dans le programme utilisateur afin de détecter tout événement de fonctionnement devant entraîner une procédure particulière de traitement. Certains d’entre eux doivent être remis dans leur état initial ou normal par programme. Cependant, les bits système qui sont remis dans leur état initial ou normal par le système ne doivent pas l’être par programme ou par le terminal. Bits système Fonction Désignation SY0 Reprise à froid normalement à l’état 0, ce bit est mis à l'état 1 par : • changement d’une cartouche utilisateur, • reprise secteur avec perte des données (défaut batterie), • programme utilisateur, • le terminal. Il est remis à 0 par le système après un cycle d’exécution normale du programme. Sur reprise à froid, l’automate repart en exécution, si cela est défini en configuration (RUN AUTO) . Fonctionnement : voir chapitre 7.2-3 "comportement sur reprise à froid". SY1 Reprise à chaud normalement à l’état 0, ce bit est mis à l' état 1 par : • action sur un verrou cartouche utilisateur, • reprise secteur avec sauvegarde des données, • programme utilisateur, • le terminal. Il est remis à 0 par le système avant la première mise à jour des sorties. Fonctionnement : voir chapitre 7.2-2 "comportement sur reprise à chaud". SY2 6/2 Reprise immédiate normalement à l’état 1, ce bit doit être mis à 0 par programme après chaque reprise immédiate, pour que le système traite ces reprises. Il est mis à l’état 1 sur reprise secteur sans perte d’autonomie de l’alimentation. Le temps de la coupure est contenu dans le mot système SW5. Fonctionnement : voir chapitre 7.2-1 "comportement sur reprise immédiate". Rôle des bits et mots système 6 A Bits système Fonction SY3 Désignation / bit non utilisé SY4 SY5 SY6 SY7 10 ms 100 ms 1s 1 mn Base de temps bits dont le changement d’état est cadencé par une horloge interne. Ils sont asynchrones par rapport à l’automate. SY8 Sécurité des sorties en bac (général) normalement à l’état 1, ce bit peut être mis à l'état 0 par programme ou par le terminal : • état 1 : provoque la mise à zéro des sorties en bac de l’automate, selon l’état des bits SY32 à SY39; en cas de non exécution normale du programme, • état 0 : maintient les sorties en bac dans l’état défini, en cas de non exécution normale du programme (les bits SY32 à SY39 sont alors sans effet). SY9 Mise à zéro des sorties en bac normalement à l’état 0, ce bit peut être mis à l'état 1 par programme ou par le terminal : • état 1 : provoque le forçage à l’état 0 des sorties en bac de l’automate, celui-ci exécutant son programme (RUN), • état 0 : les sorties en bac sont mises à jour normalement. SY10 Défaut entrées/sorties (général) normalement à l’état 1, ce bit est mis à l'état 0 sur détection d'une des anomalies suivantes : • défaut sur un module d’entrées/sorties d'un bac de configuration de base ou d’extension (configuration non conforme, défaut d'échange, absence bornier ou module, défaut module), • défaut sur un bac d’extension (coupure ou défaut alimentation, défaut liaison ou défaut numéro de bornier). • défaut sur un des équipements connecté sur FIPIO (configuration d'un des modules non conforme, défaut d'échange, défaut sur un des modules composant l'équipement, coupure secteur, défaut d'alimentation sur l'équipement ou point de connexion incorrect). • défaut sur la liaison FIPIO (défaut liaison, codage raccordement processeur incorrect, conflit maître de voie sur FIPIO). La présence de SY10 à 0, implique que l'un des bits SY118 ou SY119 est également à 0. L’un des bits défauts sorties SY40 à SY47 correspondant au bac en défaut (de base ou extension) est également mis à l’état 0. Ce bit est remis à l’état 1 à la disparition du défaut. 6/3 A (*) Bits système Fonction Désignation SY11 Rafraîchissement mots communs TELWAY, MAPWAY, ETHWAY ou FIPWAY normalement à l’état 0, ce bit est mis à l'état 1 dès qu’une station a émis ces variables communes sur le réseau. Il peut être mis à 0 par programme ou par le terminal afin de vérifier le cycle d’échange des mots communs. SY12 Réseau 1 en fonctionnement normalement à l’état 0, ce bit est mis à l'état 1 dès que le coupleur est opérationnel. Il n’indique pas que toutes les stations fonctionnent. Il est mis à l’état 0 sur défaut du coupleur. SY13 Réseau 2 en fonctionnement idem SY12 SY14 Réseau 3 en fonctionnement idem SY12 SY15 Réseau 4 en fonctionnement idem SY12 SY16 Défaut entrées/sorties (*) (tâche) normalement à l’état 1, ce bit est mis à l'état 0 sur défaut d’un module d’entrées/sorties configuré dans la dite tâche : • comportement identique au bit SY10 pour les modules en bac, • pour les modules distants : défaut d'échange entre le processeur et l'équipement sur FIPIO, défaut interne à l'équipement, défaut process TOR sur au moins une des entrées ou sorties d'un module (disjonction d'une sortie ou de toutes les sorties, défaut bornier, défaut d'alimentation process). SY16 doit être mis à l’état 1 par le programme utilisateur. SY17 Dépassement de capacité (*) (carry) normalement à l’état 0, ce bit est mis à l'état 1 sur dépassement de capacité lors d'une opération en arithmétique non signé. Il représente alors la valeur absolue maximale (65536 en simple longueur et 4 294 967 296 en double longueur). Lors d’un décalage circulaire, il signale la sortie d’un bit à 1. Il doit être testé, par le programme utilisateur, après chaque opération où il y a risque de dépassement puis remis à 0 en cas de dépassement. bit système significatif que pour la tâche dans laquelle il est testé (voir fin de ce chapitre). 6/4 Rôle des bits et mots système 6 A (*) Bits système Fonction Désignation SY18 Débordement ou erreur arithmétique (*) "Overflow" normalement à l’état 0, ce bit est mis à l'état 1 sur débordement de capacité lors d'une opération soit : • un mot simple longueur : résultat supérieur à + 32767 ou inférieur à - 32 768 • un mot double longueur : résultat supérieur à + 2 147 483 647 ou inférieur à - 2 147 483 648 Il doit être testé, par le programme utilisateur, après chaque opération où il y a risque de débordement puis remis à 0 en cas de débordement. SY19 Débordement tâche (*) "Overrun" normalement à l’état 0, ce bit est mis à l'état 1 en cas de dépassement de la période exécution (temps d’exécution de la tâche supérieur à la période définie par l’utilisateur en configuration). Un débordement prolongé de la tâche provoque le passage en STOP de l’automate (voyant MEM allumé). Il est remis à l’état 0 par le programme utilisateur. Fonctionnement : voir chapitre 4.3-2 "débordement tâche". SY20 Débordement index (*) (tâche) normalement à l’état 0, ce bit est mis à l'état 1 lorsque l’adresse de l’objet indexé devient inférieur à 0 ou dépasse le nombre d'objets déclarés lors en configuration. Il doit être testé, par le programme utilisateur, après chaque opération où il y a risque de débordement, puis remis à 0 en cas de débordement. Fonctionnement : voir chapitre 2.5-2 "débordement d’index". SY21 Initialisation Grafcet (général) normalement à l’état 0, ce bit est mis à l'état 1 par : • reprise à froid, SY0 = 1, • le programme utilisateur uniquement dans le traitement préliminaire (PRL), • le terminal. A l’état 1, il provoque l’initialisation du Grafcet. Les étapes actives sont désactivées et les étapes initiales sont activées Il est remis à 0 par le système lors de l’exécution du traitement séquentiel. bit système significatif que pour la tâche dans laquelle il est testé (voir fin de ce chapitre). 6/5 A Bits système Fonction Désignation SY22 Remise à zéro Grafcet normalement à l’état 0, ce bit ne peut être mis à l'état 1 par programme, que dans le traitement préliminaire (PRL). A l’état 1, il provoque la désactivation des étapes actives sur l’ensemble du Grafcet. Il est remis à 0 par le système lors de l'exécution du traitement séquentiel SY23 Figeage Grafcet normalement à l’état 0, ce bit ne peut être mis à l'état 1 par le programme utilisateur, que dans le traitement préliminaire (PRL). A l’état 1, il permet de maintenir le Grafcet dans un état stable (aucune évolution d’étapes). Il doit être remis à 0 par le programme, uniquement dans le traitement préliminaire (PRL), afin de permettre l’évolution du Grafcet à partir de la situation figée. SY24 Remise à zéro macro-étapes normalement à l’état 0, ce bit ne peut être mis à l'état 1 par le programme utilisateur que dans le traitement préliminaire (PRL). A l’état 1, il permet de remettre à 0 les macro-étapes désignées par les mots systèmes SW8 à SW11 : • SW8 : bits 0 à F → macro-étapes 0 à 15, • SW9 : bits 0 à F → macro-étapes 16 à 31, • SW10 : bits 0 à F → macro-étapes 32 à 47, • SW11 : bits 0 à F → macro-étapes 48 à 63, Une macro-étape est mise à 0 lors du passage à 1 de SY24 et quand le bit qui la représente est à 0. Les bits des mots SW8 à SW11 sont positionnés à 1 sur initialisation du Grafcet (SY21 = 1). Il est remis à 0 par le système lors de l'exécution du traitement séquentiel. SY25 Multiactivité normalement à l’état 0, ce bit est mis à l'état 1 dès qu’une macro-étape monoactive devient multiactive. Sans incidence sur le traitement séquentiel, il permet à l’utilisateur de surveiller les étapes qu’il a déclarées monoactives. Il peut connaître la macro-étapes devenue multiactive par la lecture du contenu des mots système SW12 à SW15 (voir chapitre 6.2). Il est remis à 0 par programme ou par le terminal. 6/6 6 Rôle des bits et mots système A Bits système Fonction Désignation SY26 Dépassement activation normalement à l’état 0, ce bit est mis à l'état 1 lorsque les possibilités d’activation (étapes ou transitions) sont dépassées (voir langage Grafcet "traitement séquentiel"). Un dépassement provoque le passage en STOP de l’automate (voyant MEM allumé). La mise en exécution (RUN) par le terminal doit être précédée d’une initialisation (mise à 1 de SY21) par ce même terminal. Il est ainsi remis à l’état 0 sur initialisation du terminal Les mots système SW6 et SW7 contiennent les nombres de postes occupés dans les tables d’activité Grafcet (SW6 postes étapes et SW7 postes transitions). Lors d'un dépassement, les mots SW6 et SW7 contiennent le nombre de postes correspondants au cycle avant dépassement. SY27 à SY31 SY32 à SY39 bits système non utilisés Sécurité des sorties en bac normalement à l’état 1, ces bits peuvent être mis à l’état 0 par programme ou par le terminal. Ils sont complémentaires au bit "Sécurité des sorties en bac" SY8 et sont affectés aux sorties des configurations de base ou d’extension : bacs 0/1 2/3 4/5 6/7 8/9 A/B bits SY32 SY33 SY34 SY35 SY36 SY37 bacs C/D E/F bits SY38 SY39 Ils permettent selon leur état et si le bit système SY8 est à 1 de forcer à 0 ou de maintenir en l’état les sorties en bac de la configuration sur non exécution normale du programme : • SY 3x = 1 force à 0 les sorties des bacs correspondants, • SY 3x = 0 maintien les sorties dans l'état avec 2 < x < 9. Fonctionnement : voir chapitre 9.3. 6/7 A Bit système Fonction Désignation SY40 à SY47 Défaut entrées/sorties en bac normalement à l’état 1, ce bit est mis à l'état 0 sur défaut d’entrées/sorties de la configuration à laquelle il est affecté : bacs 0/1 2/3 4/5 6/7 8/9 A/B bits SY40 SY41 SY42 SY43 SY44 SY45 bacs C/D E/F bits SY46 SY47 La mise à 0 sur défaut de l’un de ces bits entraîne: • la mise à 0 du bit général SY10 (voir SY10), • le voyant I/O du processeur est allumé, • le voyant I/O du module gestion d’un bac d’extension est allumé si le défaut porte sur un bac 2 à F, • le bit I/Oxy,S du module en défaut est mis à l’état 1. Ils sont remis à l’état 1 à la disparition du défaut. Les différents bits défauts d’entrées/sorties, SY10, SY40 et I/Oxy,S permettent d'élaborer, par programme une structure de traitement des défauts (voir chapitre 9.4). SY48 Validation temps d’exécution ou temps maximal des tâches périodiques à l’état 0 par défaut, ce bit est mis à 1 ou 0 par programme ou par le terminal. Si SY48 = 0, les mots système SW40 à SW46 indiquent le temps d’exécution du cycle le plus long, pour chacune des tâches. Si SY48 = 1, les mots système SW40 à SW46 indiquent le temps d’exécution du dernier cycle, pour chacune des tâches. (voir définition mots système SW40 à SW46 chapitre 6.2). SY49 et SY50 Gestion du temps à l’état 0 par défaut, ce bit est mis à 1 ou 0 par programme ou par le terminal. SY49 = 0 et SY50 = 0 : accès à la date et à l'heure par lecture des mots système SW50 à SW57. SY49 = 0 et SY50 = 1 : mise à jour de la date et de l’heure par écriture des mots système SW50 à SW57 (nécessaire après coupure secteur). SY49 = 1 et SY50 = 0 : accès à la date, à l’heure et au code du dernier arrêt de l’exécution par lecture des mots SW50 à SW57. (voir définition mots système SW50 à SW57 chapitre 6.2). 6/8 Rôle des bits et mots système 6 A Bits système SY51 SY52 Fonction Désignation / RAZ compteurs de messages bit système réservé bit système réservé SY53 à SY99 / SY100 à SY115 Option UNI-TELWAY intégrée bits système réservés SY116 Suspension de la commande des sorties en bac ce bit à l'état 1 provoque la suspension de la mise à jour des sorties TOR et Registres de l'ensemble des modules en bac. SY117 Suspension de l'acquisition des entrées en bac ce bit à l'état 1 provoque la suspension de l'acquisition des entrées TOR et Registres de l'ensemble des modules en bac. SY118 Défaut d'E/S distantes normalement à l'état 1, ce bit est mis à 0 sur détection d'un défaut avec un équipement sur FIPIO. Les causes du défaut sont listées dans la description de SY10. SY119 Défaut d'E/S en bac normalement à l'état 1, ce bit est mis à 0 sur détection d'un défaut avec un module en bac. Les causes du défaut sont listées dans la description de SY10. SY120 à SY127 / bits système non utilisés bits système non utilisés (*) Bits affectés à chaque tâche Les bits SY16, SY17, SY19 et SY20 sont affectés à chacune des tâches configurées (IT, FAST, MAST, AUX0 à AUX3). De ce fait, ils ne sont significatifs que pour la tâche dans laquelle ils sont testés. Exemple : si dans la tâche rapide (FAST) une opération arithmétique entraîne un débordement de capacité, le bit système SY18 est mis à l’état 1, soit : • SY18 testé par le programme dans la tâche FAST vaut 1, • SY18 testé par le programme dans la tâche MAST ou AUXi vaut 0 puisque le débordement en question n’est pas du à une opération écrite dans l’une de ces tâches. L’initialisation de ces bits doit être assurée dans la tâche origine de leur changement d’état. Dans le cas où l’exploitation de ces bits doit être faite dans une autre tâche, il est nécessaire de : • dans la tâche origine, recopier l’état des bits système SY16 à SY20 dans 5 bits internes Bi, • dans l’autre tâche, tester ces bits internes pour exploitation. Remarques : • les bits système SY16 à SY20, accessibles par le terminal, correspondent aux bits affectés à la tâche maître. • les bits système SY21 à SY26 sont affectés seulement à la tâche maître. 6/9 A 6.2 Mots système Les automates TSX/PMX 47/67/87/107-40 disposent de 128 mots système (SW0 à SW127) décrits ci-après : Mots système Fonction Désignation SW0 Mise à jour des mots communs du réseau principal les 16 bits de ce mot (0 à F) représente les 16 premières stations du réseau. L’état 1 d’un bit indique que la station correspondante à émis ses mots communs. Ce mot permet ainsi de s’assurer que l'automate de cette station est en RUN. Il est réinitialisé à la valeur 0 par programme seulement. SW1 / mot système réservé SW2 Adresse principale de la station ce mot indique pour le réseau principal : • le numéro de station (octet de poids faible) = 0 à 127, • le numéro de réseau (octet de poids fort) = 0 à 63. Les bits non utilisés sont à 0. SW3 Table des 16 stations du réseau principal ces mots indiquent pour le réseau principal, l'état des 16 premières stations. L’état 1 d'un bit indique que le coupleur de la station correspondante fonctionne (sur TELWAY uniquement). Ces mots sont remis à jour par le système. SW4 / mot système réservé SW5 Temps reprise immédiate ce mot contient le temps en ms de la coupure secteur dans le cas d’une reprise immédiate (coupure sans perte d’autonomie de l’alimentation de la configuration de base). Voir chapitre 6.1 : SY2. Il est initialisé à une nouvelle valeur sur chaque reprise immédiate. SW6 Table d’activité des étapes Grafcet ce mot contient le nombre de postes occupés dans la table des étapes actives; soit les étapes actives, à activer et à désactiver. Ce mot est mis à jour par le système lors de chaque évolution du graphe en fin de tâche maître. Voir chapitre 6.1 : SY26. 6/10 Rôle des bits et mots système 6 A Mots système Fonction Désignation SW7 Table de validité des transitions Grafcet ce mot contient le nombre de postes occupés dans la table des transitions, soit les transitions valides, franchies et devenant valides sur un cycle. Ce mot est mis à jour par le système lors de chaque évolution du graphe en fin de tâche maître. Voir chapitre 6.1 : SY26 SW8 à SW11 Remise à zéro des macro-étapes Grafcet chaque bit de ces 4 mots représente l’une des 64 macro-étapes du Grafcet. Normalement à l’état 1, ces bits mis par programme à l’état 0 et associés au passage à l’état 1 du bit SY24, permettent la remise à zéro des macroétapes correspondantes. Voir chapitre 6.1 : SY24 SW12 à SW15 Table de surveillance des macro-étapes Grafcet chaque bit de ces 4 mots représente l’une des 64 macro-étapes du Grafcet. Normalement à l’état 0, le bit correspondant à la macro-étape monoactive devenue multiactive est mis à l’état 1, ce qui entraîne la mise à 1 du bit SY25. Après test, ces mots doivent être initialisés à 0 par programme ou par le terminal. La mise à l’état 1 du bit SY21 provoque également une initialisation à 0 des mots SW12 à SW15. SW16 à SW18 Recopie d’une partie de la RAM_SYSTEM ces mots permettent de recopier une partie de la RAM_SYSTEM dans des mots internes Wi: • SW16 contient l’adresse Wi de début de destination, • SW17 contient l’adresse de début de la RAM_SYSTEM à copier, • SW18 le nombre d’octets à copier. SW19 Modification de la période des tâches périodiques ce mot permet de modifier la période d’une tâche utilisateur. Il doit contenir pour cela : • la nouvelle période définie dans la base temps configurée pour la tâche correspondante (octet de poids faible), exprimée en hexadécimal, • le numéro de la tâche à modifier ( 2 = tâche rapide, 3 = tâche maître, 4 à 7 = tâches auxiliaires 0 à 3). n° tâche Période FAST/MAST : en ms, AUX : en x10ms 6/11 A Mots système Fonction SW20 et SW21 Temps de fonctionnement système ces mots contiennent le temps écoulé depuis la dernière reprise à froid, coupures secteur non comprise (*) (base de temps 100 ms). Ils sont mis à jour par le système. SW22 et SW23 Temps de fonctionnement application ces mots contiennent le temps écoulé depuis la dernière reprise à froid ou mise à l’état 1 de SY0, coupures secteur comprises (base de temps 100 ms). Ils sont mis à jour par le système. SW24 SW25 Désignation / mot système réservé / mot système réservé SW26 à SW39 Compteurs de messages mots système réservés SW40 à SW46 Temps maximum ou temps d’exécution des tâches le système gère un mot par tâche, accessible en lecture : • si SY48 = 0 ces mots indiquent le temps d’exécution du cycle le plus long, pour chaque tâche. • si SY48 = 1 ces mots indiquent le temps d’exécution du dernier cycle, pour chaque tâche. Le temps correspond au temps écoulé entre le début (acquisition des entrées) et la fin (mise à jour des sorties) d’un cycle de la tâche, en tenant compte des interruptions dues aux tâches plus prioritaires. SW40 SW41 SW42 SW43 SW44 SW45 SW46 SW47 à SW49 (*) / : tâche rapide : tâche maître : tâche auxiliaire 0 : tâche auxiliaire 1 : tâche auxiliaire 2 : tâche auxiliaire 4 : tâche interruption mots système réservés. La mise à l'état 1 de SY0 par le terminal n'est pas à considérer comme une reprise à froid 6/12 Rôle des bits et mots système 6 A Mots système Fonction Désignation SW50 à SW57 Gestion du temps ces mots contiennent selon l’état des bits système SY49 à SY50 : • la date et l’heure courante, • la date, l’heure et le code du dernier arrêt de l’exécution. SW50 = mot toujours à 0 SW51 = secondes (0 à 59) SW52 = minutes (0 à 59) SW53 = heures 0 à 23) SW54 = jours (1 à 31) SW55 = mois (1 à 12) SW56 = années (0 à 9999) SW57 = jour de la semaine (0 à 6) si lecture ou mise à jour de la date et de l’heure, SW57 = code arrêt si lecture date et heure du dernier arrêt exécution, 1 = passage de RUN à STOP par le terminal, 2 = arrêt sur défaut logiciel (débordement tâche ou débordement Grafcet), 3 = réservé, 4 = coupure secteur ou action verrou cartouche, 5 = arrêt sur défaut matériel, 6 = arrêt sur instruction HALT. SW58 à SW59 / mots système réservés SW60 Code d’erreur fatale mot système réservé SW61 à SW63 Code NPCALL inconnu mots système réservés SW64 à SW72 Premier coupleur réseau géré (multi-réseau) • SW64 à SW67 : ces mots contiennent les indicateurs de rafraîchissement des mots communs pour les stations (0 à 63) de ce réseau (voir description SW0), • SW68 à SW71 : ces mots contiennent l'état des coupleurs (0 à 63) du réseau (TELWAY uniquement) (voir description SW3). • SW72 : ce mot contient l’adresse réseau du premier coupleur (voir description SW2). 6/13 A Mots système Fonction Désignation SW73 à SW81 Deuxième coupleur réseau géré (multi-réseau) SW73 à SW76 : ces mots contiennent les indicateurs de rafraîchissement des mots communs pour les stations (0 à 63) de ce réseau (voir description SW0), • SW77 à SW80 : ces mots contiennent l’état des coupleurs (0 à 63) du réseau (TELWAY uniquement) (voir description SW3), • SW81 : ce mot contient l’adresse réseau du deuxième coupleur (voir description SW2). SW82 à SW90 Troisième coupleur réseau géré (multi-réseau) • SW82 à SW85 : ces mots contiennent les indicateurs de rafraîchissement des mots communs pour les stations (0 à 63) de ce réseau (voir description SW0), • SW86 à SW89 : ces mots contiennent l’état des coupleurs (0 à 63) du réseau (TELWAY uniquement) (voir description SW3), • SW90 : ce mot contient l’adresse réseau du troisième coupleur (voir description SW2). SW91 à SW99 Quatrième coupleur réseau géré (multi-réseau) • SW91 à SW94 : ces mots contiennent les indicateurs de rafraîchissement des mots communs pour les stations (0 à 63) de ce réseau (voir description SW0), • SW95 à SW98 : ces mots contiennent l’état des coupleurs (0 à 63) du réseau (TELWAY uniquement) (voir description SW3), • SW99 : ce mot contient l’adresse réseau du quatrième coupleur (voir description SW2). SW100 à SW115 Registres pour prise UNI-TELWAY intégrée ces mots servent de mots registres d’E/S pour le prise UNI-TELWAY, située en face avant de certains processeurs : • SW100 : mot d’état, • SW101 et SW102 : mot d’état des données événementielles, • SW103 à SW107 : mots réservés, • SW108 : mot de commande, • SW109 à SW115 : mots réservés. 6/14 Rôle des bits et mots système 6 A Mots système Fonction Désignation SW116 Défaut E/S distantes (tâche) ce mot signale un défaut de dialogue sur FIPIO entre le processeur et un module dans la dite tâche. Chaque bit à 1 signale un défaut spécifique : • B0 Invalidité globale : défaut grave avec l'ensemble des équipements de la tâche (ensemble des modules absent, FIPIO non opérationnel), • B1 Existence de valeurs invalides : une ou plusieurs variables n'a jamais été échangées avec un TBX (TBX absent ou incompatible avec le type configuré), • B2 Absence totale de mise à jour : l'ensemble des données n'a pas été remis à jour depuis le cycle précédent. Il démontre une incohérence importante entre la période de la tâche et l'activité du bus, • B3 Absence partielle de mise à jour : existence de données qui n'ont pas été remise à jour depuis le cycle précédent. Il démontre une incohérence entre la période de la tâche et l'activité du bus, • B4 Défaut total de dialogue : défaut de dialogue entre le processeur et l'ensemble des équipements (réseau parasité, rupture d'une dérivation, équipements absents), • B5 Défaut partiel de dialogue : défaut de dialogue entre le processeur et certains de ses équipements (réseau parasité, rupture d'une dérivation, équipements absents), • B6 Défaut de rafraîchissement global : ensemble des équipements en phase de configuration, • B7 Défaut de rafraîchissement partiel : existence d'équipement(s) en phase de configuration ou équipement(s) partiellement présent(s) (extension absente). SW117 SW118 à SW121 SW122 à / mot système non utilisé Défaut d'E/S distantes chaque bit de ce groupe de mots est significatif de (équipement) l'état d'un point de connexion. La présence d'un bit à 0 indique l'apparition d'un défaut d'échange ou de process TOR avec un équipement : SW118,0 = équipement au point de connexion 0, etc. / mots système non utilisés SW127 6/15 A 6.3 Bits et mots système associés aux E/S distantes Les bits et mots système, associés aux entrées/sorties distantes, sont mis à jour par les tâches utilisateur ou par la tâche de surveillance, en respectant l'algorithme suivant : Tâche de surveillance Si Absence d'un module ou défaut de configuration sur un équipement, Détection d'un défaut interne à l'équipement ou relatif aux échanges, Détection d'un défaut externe à l'équipement (court-circuit, circuit ouvert, ...). Alors SW11i,j positionné à l'état 0, SY118 positionné à l'état 0, SY10 positionné à l'état 0, Voyant I/O allumé. Sinon SW11i,j positionné à l'état 1, Remise à jour des objets globaux de l'ensemble des périphériques. Tâche périodique Si Détection d'un défaut d'échange ou d'un défaut sur une voie de l'équipement. Alors SY16 positionné à 0, SW11i,j positionné à 0, SY118 positionné à l'état 0, SY10 positionné à l'état 0. 6/16 Coupure et reprise secteur 7 A Coupure et reprise secteur Chapitre 7 Sous chapitre 7.1 Principe Page 7/2 7.1-1 Fonctionnement de l’automate à la coupure secteur 7.1-2 Sauvegarde du contexte système et application 7.1-3 Fonctionnement de l’automate à la reprise secteur 7/2 7/2 7/3 7.2 Comportement sur reprise secteur en structure monotâche 7/4 7.2-1 Comportement de l’automate sur reprise immédiate 7.2-2 Comportement de l’automate sur reprise à chaud 7.2-3 Comportement de l’automate sur reprise à froid 7/4 7/6 7/8 7.3 Comportement sur reprise secteur en structure multitâche 7/10 7.3-1 Comportement sur reprise immédiate 7.3-2 Comportement sur reprise à chaud 7.3-3 Comportement sur reprise à froid Ce chapitre se termine à la page 7/10 7/10 7/10 7/10 7/1 A 7.1 Principe Pour éviter tout aléa de fonctionnement de l’automatisme en cas de coupure secteur ou de sous tension anormale, les modules alimentation des automates TSX/PMX 47/ 67/87/107-40 disposent d’un ensemble détectant la présence de la tension secteur. De plus ces alimentations sont équipées d’un dispositif de surveillance de la disparition secteur (dispositif au fonctionnement optionnel connecté sur le primaire des alimentations). Ce dispositif permet de traiter chaque coupure secteur en supprimant la prise en compte d’états d’entrées erronés suite à la disparition secteur, et ceci tout en réduisant au maximum les délais de reprise de l’exécution du programme utilisateur. D’origine ce dispositif de surveillance secteur est en service. 7.1-1 Fonctionnement de l’automate à la coupure secteur Durée de la coupure secteur Comportement de l’automate Inférieur à 10 ms • Exécution normale du programme Supérieur à 10ms et inférieur à l’autonomie de l’alimentation (environ 200ms). • Arrêt de la scrutation du programme avant la disparition de la tension sur les entrées. • Sauvegarde du contexte système et application. • Comptage du temps d’arrêt application dans le mot système SW5. • Suivant l’état du bit SY8 (sécurité) : forçage des sorties en bac à zéro (SY8 = 1) ou maintient des sorties en bac dans l’état (SY8 = 0). • Positionnement des sorties à distance déjà commandées à une valeur de repli, définie en configuration. Positionnement des autres sorties à distance à la valeur de sécurité. Supérieure à l’autonomie de l’alimentation (200ms). • Processeur arrêté hors tension. 7.1-2 Sauvegarde du contexte système et application Cette sauvegarde consiste pendant l’autonomie de l’alimentation à : • calculer la valeur du checksum de la mémoire RAM du processeur (pointeur d’instruction, registres internes,...), • transférer le contenu de cette mémoire et de son checksum dans la mémoire RAM secourue du processeur de l’automate. A la réapparition du secteur, cette sauvegarde est comparée au contexte présent et selon le résultat, le type de la reprise secteur est immédiat, à chaud ou à froid. 7/2 Coupure et reprise secteur 7 A 7.1-3 Fonctionnement de l’automate à la reprise secteur Type de reprise secteur Comportement de l’automate Reprise après coupure inférieure à l’autonomie de l’alimentation (200ms) : • avec choix pour reprise immédiate (SY2 positionné à 0), • sans choix pour reprise immédiate (SY2 positionné à 1). • Reprise immédiate, avec contexte cohérent vis-à-vis de l’application. • Reprise à chaud, avec contexte cohérent vis-à-vis de l’application. Reprise après coupure supérieure à l’autonomie de l’alimentation : • batteries correctes et cartouches inchangées (SY1 = 1), • batteries défectueuses ou changement de cartouche (SY0 = 1). • Reprise à chaud, avec contexte cohérent vis-à-vis de l’application. • Reprise à froid, avec initialisation des données du langage. Synoptique RUN Application Défaut secteur Retour secteur Défaut > 10ms OUI STOP Appli Défaut > Autonomie NON NON (1) Choix reprise immédiate (SY2=0) OUI Exécution normale du programme (1) Reprise immédiate OUI Batterie OK NON OUI Changement NON cartouche? NON Reprise à chaud OUI Reprise à froid le choix reprise immédiate, fixé par l’utilisateur, est imposé dès lors que sur reprise secteur, le bit SY2 est mis à 0 par le programme . 7/3 A 7.2 Comportement sur reprise secteur en structure monotâche 7.2-1 Comportement de l’automate sur reprise immédiate : SY2 = 0 Il n’y a pas eu perte d’autonomie de l’alimentation et le bit système SY2 était à l’état 0 au moment de la disparition du secteur. Synoptique Acquisition des entrées Exécution du programme TOP L1 L2 L3 Coupure secteur Ln Ln + 1 OUI Retour secteur * sans perte d'autonomie NON Attente 40 ms Traitement éventuel de la reprise immediate ! RESET SY2 BOT Mise à jour des sorties 7/4 • Arrêt du processeur* • Sauvegarde du contexte application * • Mise à 1 de SY2 * • Mémorisation du temps de coupure (SW5) Coupure et reprise secteur 7 A Attente 40 ms Ce temps permet aux tensions d’alimentation des entrées et des sorties de se stabiliser, ce qui évite de prendre en compte des valeurs aléatoires lors de l’acquisition des entrées. Mémorisation du temps de coupure Le temps de coupure secteur (en ms) est mémorisé dans le mot système SW5 pour exploitation éventuelle dans le programme utilisateur. L’exécution du programme reprend à partir de l’élément où a eu lieu la coupure secteur, avec mise à jour des sorties en fin de cycle. Traitement éventuel de la reprise immédiate Si l’utilisateur désire un traitement particulier vis-à-vis de l’application en cas de reprise immédiate (utilisation de SW5), il doit alors écrire en fin de programme (avant mise à jour des sorties), le programme correspondant. Les modules à distance qui perdent leur configuration seront reconfigurés en continu. Dans tous les cas, l’utilisateur doit remettre à 0 le bit système SY2 pour prendre en compte la prochaine coupure secteur d’une éventuelle reprise immédiate. Evolution des sorties Pendant la coupure secteur, l’état des sorties en bac dépend de l’état dans lequel l’utilisateur aura forcé le bit système SY8. SY8 = 0 les sorties sont maintenues dans l’état, SY8 = 1 les sorties sont forcées à 0 pendant les états repérés par * sur le synoptique, si les bits "sécurité bacs" SY32 à SY39 correspondants sont à 1. Les sorties à distances déjà commandées prennent la valeur de repli et les autres sorties la valeur de sécurité. 7/5 A 7.2-2 Comportement de l’automate sur reprise à chaud : SY1 = 1 Synoptique Acquisition des entrées Exécution du programme TOP L1 L2 L3 L5 SY1 = 1 Traitement éventuel de la reprise à chaud Coupure secteur • Arrêt du processeur • Sauvegarde du contexte application Retour secteur > autonomie OUI Auto-tests de la configuration (150ms) NON Ln Mise à 1 de SY1 Mise à 0 de SY1 Mise à jour des sorties 7/6 Coupure et reprise secteur 7 A Reprise de l’exécution du programme L’exécution du programme reprend à partir de l’élément où a eu lieu la coupure secteur, sans mise à jour des sorties . Le système effectue ensuite un cycle de reprise dans lequel il reprend en compte l'ensemble des modules en bac et à distance (avec reconfiguration des modules à distance s'il y a lieu de le faire) puis il relance la tâche maître avec le bit SY1 positionné à 1 pendant un cycle de la tâche. Traitement de la reprise à chaud En cas de reprise à chaud, l'utilisateur qui désire un traitement particulier vis-à-vis de l'application, doit écrire le programme correspondant sur test de SY1 à 1 en début de programme de la tâche maître. Evolution des sorties Pendant une coupure secteur, l’état des sorties dépend de l’état dans lequel l’utilisateur aura forcé le bit système SY8. SY8 = 0 les sorties sont maintenues dans l’état pendant l’autonomie de l’alimentation, SY8 = 1 les sorties sont forcées à 0, à partir de l’arrêt du processeur et cela jusqu’à la mise à jour de ces sorties si les bits SY32 à SY39 sont égal à 1. Les sorties des modules à distance reconfigurés (coupure secteur locale) ou les sorties jamais commandés prennent la valeur de sécurité 0, les autres sorties prennent la valeur de repli. 7/7 A 7.2-3 Comportement de l’automate sur reprise à froid : SY0 = 1 Synoptique Acquisition des entrées Exécution du programme TOP • Arrêt du processeur • Sauvegarde du contexte application SY0 = 0 alors, Traitement éventuel de la reprise à froid Retour secteur Coupure secteur OUI Auto-tests de la configuration (500ms) NON Initialisation des données et du système Mise à jour des sorties 7/8 Mise à 1 de SY0 Coupure et reprise secteur 7 A Initialisation des données et du système ce qui correspond à : • remise à zéro dans la mémoire bits des bits I/O, Bi, • initialisation des bits système, • mise à l’état 1 du bit système SY21 pour initialisation du Grafcet lors de l’exécution du traitement séquentiel CHART, • mise à zéro de l’espace données, donc perte des valeurs de présélection des blocs temporisateurs, monostables et compteurs acquises en mode REGLAGE ou DONNEES. Le contenu des mots Wi et DWi reste inchangé ou est mis à zéro, suivant le choix de l’utilisateur fait en configuration. • annulation des forçages de bits et des blocages d’étapes. Traitement de la reprise à froid Après la phase d’initialisation du démarrage à froid, aucune étape du Grafcet n’est active et SY21 est à 1. Le système effectue un cycle de reprise à froid qui provoque la configuration des modules à distance, à partie de la tâche pilote. Lors de l’exécution du premier cycle de la tâche maître plusieurs cas de redémarrage de l’application sont possibles : • SY21 = 1, les étapes initiales sont activées, • SY21 a été positionné à 0 par programme dans le préliminaire ou par un terminal (RESET SY21). Dans ce cas aucune étape n’est active, • Dans le préliminaire, SY21 à été positionné à 0 (RESET SY21) et des étapes ont été activées (SET Xi). Dans ce cas l’exécution du Grafcet démarre sur les étapes activées. Si l’utilisateur désire un traitement particulier vis-à-vis de l’application en cas de reprise à froid (par exemple envoi de la configuration aux coupleurs intelligents,...), il a la possibilité de tester SY0 (si SY0 = 1, alors traitement de la reprise à froid). Sur reprise à froid, l’automate repart ou non en exécution, suivant le choix de l’utilisateur défini en configuration (paramètre RUN AUTO). Evolution des sorties Quel que soit l’état du bit système SY8, les sorties en bac sont initialisées à l’état 0 et seront positionnées lors de la mise à jour de celle-ci. Les sorties à distance sont initialisées à la valeur de sécurité 0, jusqu'à ce qu'elles reçoivent une première valeur application. 7/9 A 7.3 Comportement sur reprise secteur en structure multitâche De la même façon qu’en structure monotâche, les informations fournies par le module alimentation de la configuration de base et destinées au processeur automate sont gérées avec les mêmes incidences. Le principal objectif reste d’éviter tout aléa de fonctionnement de l’automatisme. Le principe de fonctionnement des coupures et reprises secteur est alors affecté à l’ensemble des tâches configurées. 7.3-1 Comportement sur reprise immédiate Le comportement de l’automate est identique à celui décrit au chapitre 7.2-1. Il y a reprise de l’exécution du programme à partir de l’élément où a eu lieu la coupure quelle que soit la tâche exécutée. 7.3-2 Comportement sur reprise à chaud Le comportement de l’automate est identique à celui décrit au chapitre 7.2-2. Cependant lors de la reprise secteur les séquences suivantes sont déroulées : • chaque tâche en cours à la coupure secteur termine son cycle sans mise à jour des sorties, • les tâches interruption, rapide et auxiliaires sont désactivées, • le cycle de la tâche maître est relancé normalement, acquisition des entrées, traitement programme avec mise à jour des sorties (identique au chapitre 7.2-2). Lors du traitement programme, l’exécution des fonctions Contrôle réactive les tâches périodiques correspondantes. Dès leur appel période, leur cycle est assuré normalement (acquisition des entrées, traitement programme avec mise à jour des sorties). 7.3-3 Comportement sur reprise à froid Il est identique à celui décrit au chapitre 7.2-3. La tâche maître est la seule tâche relancée. Les autres tâches périodiques seront activées par programme (exécution du bloc fonction CTRL correspondant). Leur cycle sera alors exécuté normalement dès l’appel de leur top horloge. 7/10 Modification en connecté 8 A Modification en connecté Sous chapitre Chapitre 8 Page 8.1 Principe 8/2 8.2 Modification en connecté, automate en STOP 8/2 8.2-1 Généralités 8.2-2 Redémarrage de l’application 8.3 Modification en connecté, automate en RUN 8.3-1 Généralités 8.3-2 Perturbation des tâches 8.4 Limitations 8.4-1 Limites des modifications 8.4-2 Modifications simultanées Ce chapitre se termine à la page 8/2 8/2 8/3 8/3 8/3 8/6 8/6 8/7 8/8 8/1 A 8.1 Principe En connecté (ou en ligne) le terminal est raccordé à l’automate et la modification intervient directement dans la mémoire de l’automate. Cette modification peut s’appliquer à des paramètres de configuration, au programme ou aux constantes standards et internes des OFBs. Modification des paramètres de configuration Elle ne s’applique qu’aux paramètres de repli qui sont utilisés sur démarrage à froid et n’a aucun effet immédiat sur l’exécution du programme application (aussi bien en STOP qu’en RUN). Modification du programme Si en local les modifications du programme sont inoffensives, en mode connecté il est nécessaire de prendre en compte leurs répercussions sur le processus qui est commandé. On distingue alors deux fonctionnements différents selon que le programme application est en exécution (RUN) ou à l’arrêt (STOP). 8.2 Modification en connecté, automate en STOP 8.2-1 Généralités L’application n’étant plus exécutée, les modifications seront sans effet sur le process jusqu’au redémarrage de l’application. Celui-ci dépend du type de modifications et n’est pas forcé sur les étapes initiales (SY21 reste à 0). 8.2-2 Redémarrage de l’application Le redémarrage de l’application se fera autant que possible sur l’état qui existait avant les modifications : • toute modification hors du Grafcet n’a aucune influence sur l’état du process, • si certaines modifications du graphe peuvent par contre affecter la situation enregistrée (par exemple effacement d’une étape active), une nouvelle situation qui considère que cette étape a été désactivée est alors évaluée. Au choix de l’utilisateur, le redémarrage peut se faire : • sur l’état qui existait avant les modifications, • sur les étapes initiales (SET SY21), • sur un prépositionnement d’étapes (SET/RESET Xi). 8/2 Modification en connecté 8 A 8.3 Modification en connecté, automate en RUN 8.3-1 Généralités La modification d’une application en RUN est une opération dangereuse, car elle a une répercussion directe sur le process commandé. Elle ne doit donc être utilisée que pour des évolutions mineures (par exemple ajout d’une condition de sécurité dans une équation) et lorsque le processus est dans un état stable donc l’UC peu chargée. Elle est sous l’entière responsabilité de celui qui la pratique. 8.3-2 Perturbation des tâches Principe simplifié d’une modification en Run Un programme PL7-3 se décompose (succinctement) en plusieurs parties : • • • • • les données, le programme exécutable compacté, l’espace mémoire disponible pour le programme (trou), le programme non exécutable (commentaires, graphique,...), divers (programme OFB, constantes, ...) Tâche IT Tâche FAST (MAIN) Données Programme exécutable Tâche FAST (SR) EXECUTABLE Tâche MAST (MAIN) Tâche MAST (SR) Tâche AUX0 (MAIN) Trou Tâche AUX0 (SR) Programme non exécutable Trou Divers Tâche IT NON EXECUTABLE Tâche FAST (MAIN) Tâche FAST (SR) Tâche MAST (MAIN) Tâche MAST (SR) Tâche AUX0 (MAIN) Tâche AUX0 (SR) 8/3 A Lorsque l’utilisateur ajoute, par exemple, une ligne de programme dans l’une des tâches, l’automate doit avant d’effectuer cette modification, décaler toutes les autres tâches moins prioritaires afin de pouvoir insérer le nombre d’octets correspondant à la modification dans la tâche concernée. Rappel sur le cycle de scrutation d’un automate Acquisition des entrées Traitement Temps de cycle Mise à jour des sorties Messagerie Temps libre Si l’automate est en Run, ce décalage s’effectue dans le temps libre laissé par l’UC. Le traitement d’une modification induit donc une surcharge du processeur qu’il convient d’apprécier, car elle peut dans certains cas entraîner une perturbation temporaire de l’application. Toute la difficulté consiste à évaluer les surcharges car elles dépendent à la fois de l’emplacement de la modification et de la taille de l’application. 8/4 Modification en connecté 8 A On peut considérer qu’il existe deux types de modifications : • la modification d’un objet par un autre objet de même type. Dans ce cas, la surcharge est négligeable car il n’y a pas de décalage (nombre d’octets identique), • la modification entraînant un changement de la taille du code exécutable (par exemple par l’insertion ou la suppression d’un élément, voire d’une phrase, dans une équation). Dans ce cas, la surcharge va se répartir sur différentes tâches de l’application et pendant 5 cycles environ). Comportement de l’automate Lors de la modification en RUN d’une application, le processeur inhibe provisoirement le chien de garde logiciel pendant 3 à 5 tours de cycle. Si la modification demandée est importante et que l’automate n’a pas le temps nécessaire de la traiter correctement (temps libre trop faible), l’automate passe en défaut CPU-MEM-I/O et le programme est perdu. Conseils Pour éviter de telles conséquences, il est conseillé de : • • • • • ne pas faire de modification en Run dans la tâche IT, ne pas faire de modification en Run dans la tâche FAST, faire des modifications les plus courtes possibles, éviter les boucles (WHILE et JUMP), laisser du temps libre à l’UC en ayant un temps de cycle suffisamment grand vis à vis du temps d’exécution du programme. La gestion des temps d’exécution des différentes tâches périodiques peut être effectuée à l’aide des mots systèmes SW19 et SW40 à SW46 (se reporter au chapitre 6.2 de l’intercalaire A). 8/5 A 8.4 Limitations 8.4-1 Limites des modifications Suivant le mode de fonctionnement, toutes les modifications ne sont pas possibles (par exemple : modification du graphe en connecté, automate en RUN). Le tableau ci-dessous présente ces limites : Mode de fonctionnement Localisation de la modification Local Configuration paramètre de configuration valeur de replis OFB Programme Constante (1) Connecté STOP RUN (1) reconf oui reconf non oui non non oui non MAIN SR PRL POST CHART/XMi • graphe • étape - type - Xi,V - action • transition - réceptivité oui oui oui oui oui oui oui oui oui oui oui oui oui oui non oui oui oui oui oui oui non non oui oui oui oui mot constant constante interne d’OFBs oui oui oui oui oui oui Restrictions en RUN : Générales • les modifications "importantes" sont à éviter en RUN, • chaque réseau de contacts ou phrase en littéral est immédiatement exécutable (pas de modifications groupées). Grafcet • la structure du Grafcet n’est pas modifiable (on ne peut pas ajouter ou supprimer des étapes ou transitions), • une action ou réceptivité qui n’a jamais été programmée ne peut pas être programmée pour la première fois en RUN, • une action ou réceptivité qui est déjà programmée ne peut pas être totalement détruite, • une surveillance avec mémorisation du source ne peut pas être créée pour la première fois sur une action ou une réceptivité, • la dernière surveillance avec mémorisation du source ne peut pas être détruite sur une action ou une réceptivité, 8/6 Modification en connecté 8 A Etiquettes • le saut (JUMP) à une étiquette inexistante provoque le passage de l'automate en défaut CPU-MEM-I/O et le programme est perdu. 8.4-2 Modifications simultanées Quel que soit le mode de fonctionnement : local, connecté automate en STOP ou connecté automate en RUN, la modification ne peut s’appliquer qu’à une seule phrase ou réseau de contacts à la fois. Il n’y a pas possibilité de valider plusieurs modifications en même temps. Cela implique pour les modifications en RUN de procéder de la manière suivante : • ajouter un saut vers la phrase ou le réseau de contacts suivant (JUMP en Littéral ou bobine saut en langage à contacts), • insérer successivement les modifications (phrases ou réseaux de contacts), entre le JUMP et sa destination, • lorsque toutes les modifications sont validées, supprimer le saut pour qu’elles soient exécutées par le programme. Attention : cette restriction interdit également l’effacement d’un module en bloc. Procéder comme pour l’insertion : insérer un saut puis effacer les phrases ou réseaux de contacts les uns après les autres. 8/7 A 8/8 Conseils de programmation 9 A Conseils de programmation Sous chapitre Chapitre 9 Page 9.1 Organisation des programmes application 9/2 9.2 Traitement des modes de marches et d’arrêts 9/3 9.2-1 Structure d’accueil 9/3 9.2-2 Introduction au manuel "MODE DE MARCHES ET D’ARRETS" 9/3 9.3 Comportement des sorties en cas de dysfonctionnement automate 9/5 9.3-1 9.3-2 9.3-3 9.3-4 Définition Comportement des sorties sur dysfonctionnement Diagnostic sur les bacs d’extension Diagnostic sur les modules distants 9.4 Traitement des défauts d’entrées/sorties 9.4-1 9.4-2 9.4-3 9.4-4 Rappel des défauts sur les modules TOR Principe Procédure proposée Cas d’un coupleur intelligent Ce chapitre se termine à la page 9/5 9/5 9/6 9/6 9/7 9/7 9/7 9/8 9/9 9/10 9/1 A 9.1 Organisation des programmes application Cahier des charges, analyse et structuration d’un automatisme sont les garants de réussite en mise en route et en maintenance d’une installation pilotée à partir d’automates programmables. Chaque fonction doit être dissociée des autres, et sa spécificité va définir ses entrées/sorties éventuellement affectées, ainsi qu’une valeur de période. Traitement analogique Utilisé généralement dans les processus de régulation, ce type de traitement est caractérisé par sa "lenteur" et sa périodicité. Par exemple les coupleurs AEM 4 voies (chaîne de mesure industrielles) adaptés à ce type de traitement permettent une acquisition des quatre voies selon une période minimale de 400 ms. Cette valeur correspond implicitement à la période de la tâche effectuant le traitement : il paraît évidemment inutile de réitérer des calculs sur des valeurs ou mesures n’ayant pas encore été remises à jour. Fonction de communication La communication automate ↔ périphérique s’effectuant par l’intermédiaire de liaisons séries assure généralement l’échange d’un nombre important de données ou le dialogue avec un opérateur par un écran-clavier. Dans le premier cas, l’échange dure quelque centaine de millisecondes (voir exemple ci-après). Dans le second type d’application la réponse d’un opérateur est de l’ordre de la seconde. Exemple d’envoi de message : Soit un message de 200 caractères à émettre à la vitesse de 9600 bits par seconde dont les données ont le format suivant : • 1 bit de start, 8 bits de données, 1 bit de parité et 1 bit de stop. Le temps d’émission vaut : (200*11)/9600 = 230 ms. Les coupleurs TSX SCM gérant d’une manière autonome ces échanges, l’initialisation de ceux-ci, seul traitement restant à la charge du programme application, reste à une fréquence faible. Tâche rapide La création d’une tâche rapide est nécessaire si des évolutions rapides d’entrées doivent être surveillées. Des modules d’entrées/sorties vont être affectés à cette tâche, et dans la mesure du possible toutes les entrées ou sorties doivent être localisées sur les mêmes modules afin de réduire les temps d’acquisition ou de mise à jour entraînés par ces modules. Le traitement dans cette tâche doit être le plus court possible, afin de ne pas pénaliser les autres tâches moins prioritaires. Par exemple, une série de conditions et de tests dont les éléments sont mis à jour ou calculés en tâche maître (donc à fréquence plus faible) ne doivent figurer que sous forme d’un résultat représenté par l’état d’un bit interne. De la sorte, le temps d’exécution de la tâche rapide est beaucoup plus faible. 9/2 Conseils de programmation 9 A Conclusion Les remarques mentionnées ci-dessus amènent ainsi à définir des ordres de grandeur pour les périodes de tâches : • tâche rapide : 10 à 20 ms, • tâche maître : 40 à 80 ms, • tâches auxiliaires : 150 à 500 ms, pour les fonctions de communication et de mesure régulation, • tâche interruption : activée seulement sur événements externes asynchrones, ex : coupleur de positionnement TSX AXM. 9.2 Traitement des modes de marches et d’arrêts 9.2-1 Structure d’accueil Les automates TSX/PMX 47/67/87/107-40 présentent une structure d’accueil permettant d’intégrer facilement et méthodiquement dans les programmes les modes de marches et d’arrêts de l’application : • tâche maître avec ses 3 traitements : préliminaire, séquentiel et postérieur, • bits et mots systèmes agissant sur le déroulement du traitement séquentiel ou indiquant les conditions d’une reprise secteur. Cette structure et la méthode pour son utilisation sont développées dans le manuel TSX D42615 " MODES DE MARCHES ET D’ARRETS, Structure de programme application". L'OFB MSITi, de la famille Grafcet, permet également d'améliorer par l'application la gestion des modes de marche Grafcet. Il permet notamment de : • définir un Grafcet partiel, partition du Grafcet global, • forcer un graphe, • sauvegarder ou restituer la situation courante d'un Grafcet partiel. 9.2-2 Introduction au manuel "MODES DE MARCHES ET D’ARRETS" Etablie à partir du guide "GEMMA" (Guide pour l’étude des modes de marches et d’arrêts), une grille simplifiée permet de retenir les principaux modes de marches et d’arrêts à prendre en compte par l’automate. 3 grandes familles de modes sont à distinguer : • vérification, • marche ou production, • arrêt. 9/3 A Automate Hors Energie VERIFICATION MARCHE ARRET Marche de préparation Vérification dans l'ordre Marche de production normale Vérification dans le désordre Arrêt sur incidents Arrêt normal Marche de clôture Marche dégradée Une fois les modes définis, il faut ensuite détailler l’analyse afin de définir les causes voulues ou subies entraînant le passage d’un mode à l’autre. Avec les automates TSX 7, que ce soit sur une reprise secteur ou sur un changement de modes de marches, les comportements et les besoins sont analysés puis traités dans le traitement préliminaire. Celui-ci est alors structuré en trois sous ensembles : • mise sous tension : analyse des bits systèmes et traitement reprise à froid, à chaud ou immédiate, • demande de changement de modes : les demandes d’arrêts et de changement de modes de marches entraînent des actions sur le Grafcet par positionnement de bits système, • logique d’entrée, selon l’application. Se reporter au manuel MODES DE MARCHES ET D’ARRETS. 9/4 Mise sous tension initialisation OUI NON Traitement Demande de chargement de modes OUI NON Traitement Logique d'entrée 9 Conseils de programmation A 9.3 Comportement des sorties en cas de dysfonctionnement automate 9.3-1 Définition Il y a dysfonctionnement automate lorsque celui-ci n’est plus en mesure d’assurer l’exécution normale de son programme. L’origine du dysfonctionnement peut provenir du bac configuration de base ou d’un bac d’extension. Sur le bac configuration de base, l’origine peut être : • • • • • un défaut automate; défaut mémoire (MEM) ou défaut processeur (CPU), un débordement tâche (bit SY19) ou débordement capacité Grafcet (bit SY26), une tâche en STOP (au moins une), mise en STOP demandée par le terminal, un point d’arrêt effectif (BP), demandé par le terminal en mode MISE AU POINT, une coupure secteur ou défaut d’alimentation de la configuration de base. Sur un bac extension, l’origine peut être : • une coupure secteur ou défaut d’alimentation de l’un des bacs extension, • une coupure de la liaison série ou défaut module d’extension TSX LES 20. 9.3-2 Comportement des sorties en bac sur dysfonctionnement En cas de dysfonctionnement, le système réagit, par sécurité, sur les sorties en bac en fonction du positionnement effectué par l’utilisateur des bits système "sécurité des sorties en bac" : SY8, bit général et SY32 à SY39 bits associés à chaque configuration d’extension (tous à l’état 1 par défaut) : Bacs extension Général Bits système SY8 0/1 2/3 4/5 6/7 8/9 A/B C/D E/F SY32 SY33 SY34 SY35 SY36 SY37 SY38 SY39 Le comportement des sorties est, selon les cas, le suivant : Positionnement des bits système Dysfonctionnement sur configuration de base Dysfonctionnement sur configuration d’extension SY8 = 1 avec SY32 à SY39 = 1 remise à zéro des sorties de tous les bacs. remise à zéro des sorties du bac concerné. SY8 = 1, SY3x = 1 et remise à zéro des sorties des bacs correspondants. remise à zéro des sorties du bac concerné. SY3y = 0 les sorties des bacs correspondants restent dans l’état. les sorties du bac concerné restent dans l’état. les sorties de tous les bacs restent dans l’état. les sorties du bac concerné restent dans l’état. SY8 = 0 et SY32 à SY39 = 1 ou 0 Sur dysfonctionnement de la configuration d’extension, seules les sorties du bac concerné sont influencées et le programme est toujours exécuté (RUN). 9/5 A 9.3-3 Diagnostic sur les bacs d’extension En cas de dysfonctionnement sur bac d’extension, des bits systèmes spécifiques permettent d’établir un diagnostic par programme ou par le terminal (en mode REGLAGE ou DONNEES). Ces bits sont : • SY10 "défaut entrées/sorties général", mis à l’état 0 sur défaut. Le voyant I/O est également allumé, • SY119 " défaut entrées/sorties en bac", mis à l'état 0 sur défaut. • SY40 à SY47 "défaut bac entrées/sorties", mis à l’état 0 sur défaut du bac concerné : Bacs Général/en bac Bits SY10/SY119 0/1 2/3 4/5 6/7 8/9 A/B C/D E/F SY40 SY41 SY42 SY43 SY44 SY45 SY46 SY47 Ces bits sont remis à 1 par le système dés disparition du défaut. Sur défaut d’un module d’entrées/sorties en bac, le bit S du module est mis à l’état 1, et entraîne la mise à l’état 0 des bits SY10 et SY4x (0 < x < 7) du bac concerné. 9.3-4 Diagnostic sur les modules distants En cas de dysfonctionnement d'un module distant, des bits système spécifiques permettent d'établir un diagnostic par programme ou par le terminal (en mode REGLAGE ou DONNEES). Ces bits sont : • SY10 "défaut entrées/sorties général", mis à l’état 0 sur défaut. Le voyant I/O est également allumé, • SY118 " défaut entrées/sorties distantes", mis à l'état 0 sur défaut, • SW118,0 à SW121,F "défaut équipement entrées/sorties distantes", mis à l'état 0 sur défaut de l'équipement concerné : Equipt Général/à distance 0 Bits SY10/SY118 / 1 2 ....... 61 SW118,1 SW118,2 ....... SW121,D SW121,E Ces bits sont remis à 1 par le système dés disparition du défaut. 9/6 62 63 / Conseils de programmation 9 A 9.4 Traitement des défauts d’entrées/sorties 9.4-1 Rappel des défauts sur les modules TOR Un module d’entrées/sorties TOR en bac est déclaré en défaut sur : • défaut d’échange avec le processeur, • configuration matérielle non conforme à la configuration logicielle ou absence module, • bornier en cours de débrochage ou absent, • surintensité sur l’une des voies de certains modules 4 ou 8 voies. Dans l’un de ces cas, hors surintensité : • le module est retiré de la table des échanges avec le processeur, • pour un module d’entrées; mise à 0 des bits image dans la mémoire bits, • pour un module de sorties; forçage à 0 des sorties du module, les bits image de la mémoire bits restant dans l’état, • les bits I/Oxy,S=1, SY10, SY119, SY16 et SY4x=0 avec le ou les voyants I/O allumés. Sur surintensité, seul le dernier point cité ci-dessus est exécuté avec mise à 0 de la voie en défaut : une voie en défaut est sans effet sur les autres voies du même module. Un module d'entrées/sorties TOR distantes est déclaré en défaut sur : • • • • • • panne du module de base ou d'extension, bornier de raccordement absent ou défectueux, point de raccordement FIPIO incorrect ou défaut de communication, plusieurs arbitres sur le bus, module absent ou incompatible avec le type configuré, coupure d'alimentation ou défaut d'alimentation d'un module. Dans l’un de ces cas : • le module est retiré de la table des échanges avec le processeur, • pour un module d’entrées; mise à 0 des bits image dans la mémoire bits, • pour un module de sorties; mise à la valeur de repli des sorties déjà commandées et mise à la valeur de sécurté 0 des autres sorties. Les bits image de la mémoire bits restant dans l’état, • les bits SY10, SY118 et SW118,0 à SW121,F=0 avec le ou les voyants I/O allumés. 9.4-2 Principe La procédure de traitement des défauts proposée dans ce paragraphe permet, lors de l’apparition d’un défaut sur un des modules d’entrées/sorties, de localiser rapidement le ou les modules responsables de ce défaut. Ceci afin d’agir par programme pour : • provoquer une marche dégradée, lancer un cycle de dégagement, etc, • renseigner l’exploitant du processus sur le module en cause. Le programme correspondant peut être par exemple implanté dans une tâche auxiliaire ou dans un sous programme de la tâche maître. 9/7 A 9.4-3 Procédure proposée 1• surveiller l’apparition du défaut général d’entrées/sorties en testant par programme l’état 0 du bit système SY10. La même opération peut être effectuée avec le bit système SY16, mais la surveillance des défauts ne concerne alors que les modules affectés à la tâche. Dans ce cas, en traitement multitâche, le test de SY16 doit être effectué impérativement dans la tâche concernée. SY10 = 0 SY16 = 0 2 ▼ SY119 = 0 ▼ Oui 2 SY40 = 0 Défaut bacs 0,1 NON I13,S = 1 Exemple : SY119= 0 signale un défaut sur un module en bac. • repérer le bac où est apparu le défaut, en testant l’état 0 des bits système SY40 à SY47. Exemple : SY40 = 0 signale un défaut sur le bac 0 ou 1. OUI Défaut général 2• si SY10 = 0 rechercher le ou les modules en cause. Cette opération s’effectue en deux temps : • déterminer le type de module en défaut (en bac ou distant), en testant les bits système SY118 et SY119. OUI NON Autre module SY41 = 0 Module 13 en défaut Défaut bacs 2, 3 NON Autre bac • repérer le module en défaut dans ce bac. Il suffit alors de tester l’état 1 des bits défaut Ixy,S des modules configurés dans ces bacs. Exemple : Le bit I13,S = 1 indique un défaut sur le module emplacement 3 du bac 1. 3• lancer le programme de reprise de modes de marches application et celui d’affichage destiné à l’exploitant. Le dernier peut alors intervenir, aidé d’un terminal en mode REGLAGE ou DIAGNOSTIC afin de supprimer le défaut. 9/8 Conseils de programmation 9 A 9.4-4 Cas d’un coupleur intelligent La procédure d’analyse est identique à celle d’un module d’entrées/sorties TOR. Si l’on désire analyser l’ensemble des défauts coupleurs il est nécessaire de tester en plus des bits Ixy,S les bits IWxy,0,7 de chaque coupleur. En effet, plusieurs catégories de défauts sont à distinguer (voir manuels de mise en oeuvre de chaque coupleur). En synthèse : • défaut "bloquant": le bit IWxy,0,8 est mis à l’état 1. Ce défaut correspond à une configuration non conforme, à un défaut de l’unité de traitement du coupleur ou à un défaut d’échange. Le coupleur se met en arrêt exécution . Le processeur le retire de la table des échanges, les bits Ixy,X et les mots IWxy,X (hors IWxy,0,8) sont mis à 0. • défaut coupleur : le bit IWxy,0,6 est mis à l’état 1. Ce défaut correspond à un défaut des circuits d’acquisition ou d’adaptation ou bornier débroché. Le processeur automate met le coupleur en STOP. Les échanges sont alors figés, les bits Ixy,X et les mots IWxy,X ( hors IWxy,0,6) conservent la valeur qu’ils avaient au moment de la mise en STOP. • défaut application : le bit IWxy,0,7 est mis à l’état 1. Ce défaut correspond au contrôle assuré par le coupleur vis-à-vis des capteurs ou pré-actionneurs qui lui sont directement connectés. Le coupleur reste en RUN. Le bit défaut Ixy,S est à l’état 1 lorsqu’un défaut "bloquant" ou un défaut coupleur est présent. Les défaut coupleur ou application pouvant être fugitifs, les bits IWxy,0,6 et 7 sont mémorisés à 1 sur l’apparition d’un défaut. Leur mise à 0 s’effectue par lecture de la chaîne de bits défaut (envoi requête BDEF par bloc fonction texte). 9/9 A 9/10 Annexes 9 A Annexes Chapitre 10 Sous chapitre Page 10.1 Optimisation de la mémoire bit 10/2 10.2 Règles de compatibilité des automates TSX et PMX 10/3 10.2-1 Compatibilité automate/niveau d'application 10.2-2 Changement de processeur 10/3 10/3 10.3 Gestion des objets du langage PL7-3, associés aux modules TBX 10/4 10.3-1 Rappel des objets associés aux modules TBX 10.3-2 Utilisation des objets 10.3-3 Algorithmes préconisés pour la détection des défauts Ce chapitre se termine à la page 10/4 10/6 10/6 10/8 10/1 A 10.1 Optimisation de la mémoire bit Dans le but d’une utilisation maximale des possibilités de la mémoire bits, l’automate effectue un "retassage" automatique des octets correspondants à l’ensemble des bits TOR des modules d’entrées/sorties (interfaces et coupleurs intelligents). Type de module Référence Occupation bits Interface d’entrées/sorties 4 bits TSX DET/DST4.. Interface d’entrées/sorties 8 bits TSX DET/DST 8.. Interface d’entrées/sorties 16 bits TSX DET/DST 16.. Interface de sorties 24 bits TSX DST 24.. Interface d’entrées/sorties 32 bits TSX DET/DST 32.. Interface de comptage TSX AXT 200 Interface d’entrées analogiques TSX ADT ... Interface de sorties analogiques TSX ASR 200 Coupleurs intelligents TSX AEM/AXM/SCM TSX DMR/CTM/ASR 8 8 16 24 (16+8) 32 (16+16) 8 8 16 16 16 Exemple d’optimisation de la mémoire : 0 0 16 ENTREES 0 8 SORTIES 0 8 SORTIES X 8 SORTIES Les 8 bits de sorties des modules O02 et O04 sont rangés dans le deuxième mot de la mémoire. 00 01 02 03 04 05 06 07 16 ENTREES Les 16 bits d’entrées du module I01 sont rangés dans le premier mot de la mémoire bits. 0 Les 8 bits de sorties du module O05 et les 8 premiers bits d’entrées (0 et 7) du module I06 sont rangés dans le troisième mot de la mémoire. 1 F 2 7 Bits 0 à 7 du module O04 0 7 Bits 0 à 7 du module O02 0 Les 8 derniers bits d'entrées (8 à F) du module I06 sont rangés dans le quatrième mot de la mémoire. 3 7 Bits 0 à 7 du module I06 0 7 Bits 0 à 7 du module O05 0 0 F Un emplacement libre dans la 4 7 Bits du 1er Bits 8 à F du module du bac 2 module I06 configuration matèrielle ne génère donc aucun "trou" en mémoire. Mémoire bits correspondante 8 10/2 F 7 7 7 F Bits 0 à F du module I01 0 9 Annexes A 10.2 Règles de compatibilité des automates TSX et PMX 10.2-1 Compatibilité automate/niveau d'application Le logiciel PL7-3 permet la programmation, la mise au point et la documentation d'application PL7-3 de niveau V5, V4, V3 ou V2 : • les automates TSX V2 : TSX 67-30/87-10/87-20, exécutent des applications de niveau V2, • les automates TSX V3 : TSX 47-30/67-20/87-30, exécutent des applications de niveau V3, • les automates TSX V4 : TSX 47-400/47-410/47-411/47-420/67-410/67-420/ 87-410/87-420/107-410/107-420, exécutent des applications de niveau TSXV4, • les automates PMX V4 : PMX 47-420/67-420/87-420/107-420/107-430, exécutent des application de niveaux TSXV4 et PMXV4, • les automates TSX V5 : TSX 47-405/47-415/47-425/47-455/67-425/67-455/ 87-425/67-455/107-425/107-455, exécutent des application de niveau TSXV5, • les automates PMX V5 : PMX 47-425/47-455/67-425/67-455/87-425/87-455/ 107-425/107-455, exécutent des applications de niveaux TSXV5 et PMXV5. 10.2-2 Changement de processeur Lors d'un changement de processeur, le logiciel PL7-3 vérifie la compatibilité : • de l'application courante avec le processeur ciblé : nombre de tâches auxiliaires, nombre des bacs d'E/S,..., • de l'occupation mémoire de l'application courante avec la taille disponible dans l'automate cible. Cette comparaison s'effectue après transformation de l'application courante et optimisation de la configuration obtenue. Passage V2 → V3 Une application V2 peut être passée au niveau V3, en mode configuration. Cette transformation est irréversible. Passage V3 → V4 ou V4 → V4 Une application V3 peut être passée au niveau V4, après définition préalable de la cartographie de l'application V4 (.APP). Cette transformation est irréversible. Il est possible de passer toute application de niveau TSX V4 au niveau PMX V4. Par contre, l'inverse nécessite qu'aucun OFB de la famille Régulation ne soit configuré dans l'application. Passage V4 → V5 ou V5 → V5 Une application V4 peut être passée au niveau V5. Cette transformation est irréversible. Il est possible de passer toute application de niveau TSX V5 au niveau PMX V5. Par contre, l'inverse nécessite que l'application ne contienne pas d'OFBs de la famille Régulation ni d'instructions au format flottant. 10/3 A ___________________________________________________________________________ 10.3 Gestion des objets du langage PL7-3, associés aux modules TBX ________________________________________________________________________________________ 10.3-1 Rappel des objets associés aux modules TBX Bits et mots système Bits et mots Fonction système Désignation SY10 Défaut d'E/S normalement à l'état 1, ce bit est positionné à 0 lors d'un général défaut d'un module d'E/S en bac ou d'un module d'E/S distantes. SY16 Défaut d'E/S normalement à l'état 1, ce bit est positionné à 0 lors d'un dans la tâche défaut d'un module d'E/S en bac ou d'un module d'E/S distantes, configuré dans la tâche. Ce bit doit être remis à l'état 1 par le programme utilisateur. Un bit SY16 est affecté à chacune des tâches configurées (IT, FAST, MAST, AUX0 à AUX3). De ce fait, il n'est significatif que pour la tâche dans laquelle il est testé. SY118 Défaut d'E/S normalement à l'état 1, ce bit est positionné à 0 lors d'un distantes défaut d'un équipement connecté sur FIPIO ou lors d'un défaut sur la liaison FIPIO. SW116 Défaut d'E/S ce mot signale un défaut de communication sur FIPIO, distantes entre le processeur et un module, dans la tâche. Chaque dans la tâche bit 0 à 7 est significatif d'un défaut : bit 0 : invalidité globale 1, bit 1 : existence de valeurs invalides 2, bit 2 : absence totale de mise à jour 4, bit 3 : absence partielle de mise à jour 4, bit 4 : défaut total de dialogue 3, bit 5 : défaut partiel de dialogue 3, bit 6 : défaut de rafraîchissement global 5, bit 7 : défaut de rafraîchissement partiel 5. SW118 à SW121 Défaut d'E/S chaque bit de ces 4 mots système est significatif de l'état distantes d'un point de connexion. La présence d'un bit à 0 indique (équipement) l'apparition d'un défaut d'échange ou de procédé avec un équipement : par exemple SW118,0 pour le point de connexion 0, etc... Notes Invalidité globale : la fonction FIPIO ne peut être activée par le processeur. Le défaut est matériel (panne d'un constituant de la carte fille, bornier de raccordement absent ou défectueux, coupure d'un câble, bus non adapté : absence de terminaison de ligne, court-circuit, point de connexion du processeur incorrect) ou provient d'un défaut de communication (présence de plusieurs arbitres de bus sur le médium). 1 ___________________________________________________________________________ 10/4 Annexes 10 ____________________________________________________________________________ 2 3 4 5 Valeur invalide : il existe un ou plusieurs TBX qui n'ont jamais été configurés par le processeur (TBX absent ou incompatible avec le type configuré). Défaut de dialogue : le défaut est externe au processeur et au bornier de raccordement. Il résulte de défauts physiques répétés, avec un ou plusieurs équipements pilotés par le processeur (TBX déconnecté en cours de fonctionnement, coupure secteur sur un TBX, problème sur le médium). Absence de mise à jour : les échanges s'effectuent correctement sur le bus, mais des informations n'ont pas été rafraîchies depuis le dernier cycle de la tâche (le cycle réseau est trop lent par rapport à la période de la tâche : période réseau > période tâche). Il est nécessaire de lancer l'outil XTEL-CONF, afin de modifier la période des tâches utilisateur). Défaut de rafraîchissement : le TBX ne rafraîchit plus la valeur des ses bits d'entrées et de défaut voies. Le défaut est ponctuel et provient d'une micro-coupure. Objets PL7-3 liés aux entrées/sorties TOR distantes Objets Désignation RI Bit d'entrée distante. Il indique l'état de l'entrée TOR si le bit RD est à 0. RO Bit de sortie distante. Ce bit commande la sortie TOR. RD Bit de défaut de la voie. Il est positionné à l'état 1 pour signaler que la voie (entrée ou sortie) est en défaut. TRIP Bit de sortie disjonctée. Il est positionné à l'état 1, lorsque la sortie statique est disjonctée. RST Bit de réarmement. Ce bit, effectif sur 8 voies à la fois, commande le réarmement de la sortie disjonctée et n'a aucun effet sur les voies non disjonctées. STS Mot d'état associé à la voie. Ce mot indique la nature du défaut : bit 0 : court-circuit capteur/pré-actionneur. bit 1 : défaut de ligne capteur/pré-actionneur. bit 2 : non utilisé. bit 3 : non utilisé. bit 4 : non utilisé. bit 5 : non utilisé. bit 6 : non utilisé. bit 7 : non utilisé. bit 8 : non utilisé. bit 9 : réservé. bit 10 : réservé. bit 11 : défaut d'alimentation du procédé (capteurs/pré-actionneurs) bit 12 : défaut interne au module (module de communication ou embase). bit 13 : défaut d'association matérielle. bit 14 : défaut de dialogue entre le processeur et le TBX. bit 15 : réservé. ___________________________________________________________________________ 10/5 A A ___________________________________________________________________________ 10.3-2 Utilisation des objets Les objets associés aux modules d'entrées/sorties distantes, dépendent du type de module utilisé : TBX monobloc, TBX modulaire sans option de diagnostic, TBX modulaire avec option de diagnostic : TBX monobloc Interface RI, RO, RD application (objets SWi,j de contrôle de la voie) TBX modulaire Sans diagnostic TBX modulaire Avec diagnostic RI, RO, RD SWi,j TRIP, RST RI, RO, RD SWi,j TRIP, RST Interface diagnostic (mot d'état de la voie) STS _______________________________________________________________________ 10.3-3 Algorithmes préconisés pour la détection des défauts Si la détection des défauts est programmée au niveau de l'application : la commande (utilisation des RI, RO) s'effectue dans la tâche MAST et la surveillance dans une tâche AUX; il est recommandé d'utiliser l'algorithme suivant pour la détection des défauts : Tester le bit de défaut d'E/S général SY10 SY10 = 0 ▼ Rechercher le segment en défaut : défaut sur les E/S distantes (SY118) défaut sur les E/S en bac (SY119) SY118 = 0 SY119 = 0 ▼ ▼ Rechercher le module distant en défaut : Rechercher le module en bac en défaut : SW118,0 à SW118,F - pt connex. 0 à 15, SY40 - bac 0/1, SW119,0 à SW119,F - pt connex. 16 à 31, SY41 - bac 2/3, SW120,0 à SW120,F - pt connex. 32 à 47, SY42 - bac 4/5, SW121,0 à SW121,F - pt connex. 48 à 63. SY43 - bac 6/7, SY44 - bac 8/9, SWi,j = 0 SY45 - bac A/B, SY46 - bac C/D, ▼ Identifier le type de défaut : STSx,y,i SY47 - bac E/F. ___________________________________________________________________________ 10/6 Annexes 10 ____________________________________________________________________________ Si la détection des défauts est programmée au niveau de la tâche : la commande (utilisation des RI, RO) s'effectue dans le module MAIN et la surveillance dans un module SR; il est recommandé d'utiliser l'algorithme suivant pour la détection des défauts : Tester le bit de défaut d'E/S dans la tâche SY16 SY16 = 0 ▼ Tester SW116, après masquage des bits d'absence de mise à jour : bits 2 et 3. (*) Positionner SY16 à 1 SW116 <> 0 ▼ Identifier le type de défaut (SW116) Rechercher le module distant en défaut: SW118,0 à SW118,F - pt connex. 0 à 15, SW119,0 à SW119,F - pt connex. 16 à 31, SW120,0 à SW120,F - pt connex. 32 à 47, SW121,0 à SW121,F - pt connex. 48 à 63. SWi,j = 0 ▼ Rechercher la voie en défaut : bit RDx,y,i = 1 En cas de défaut le bit RD est positionné à 1 pendant au moins un cycle de la tâche. Lorsque RD = 1, le bit RI de la voie d'entrée correspondante est positionné à 0. Remarque (*) Lorsque seul le bit SW116,2 ou SW116,3 (absence de mise à jour) est à l'état 1, cela ne correspond pas à un défaut mais uniquement à un "avertissement" pour signaler un désaccord entre les périodes de la tâche et du réseau. ___________________________________________________________________________ 10/7 A A ___________________________________________________________________________ ___________________________________________________________________________ 10/8 Dialogue Langage Grafcet Intercalaire B Chapitre 1 5 Page Présentation du langage Grafcet Sommaire 1/1 1.1 Rappel des principes Grafcet 1.2 L’analyse progressive : les macro-représentations 2 Le langage Grafcet PL7-3 Sommaire 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3 Les symboles graphiques Les objets spécifiques au Grafcet Les possibilités du langage Grafcet La page Grafcet L’utilisation des renvois Règles graphiques Les macro-étapes Les actions associées aux étapes Les réceptivités associées aux transitions Organisation de la tâche maître Sommaire 3.1 3.2 3.3 3.4 3.5 4 2/1 3/1 Le cycle de base Le traitement préliminaire Utilisation des bits système dans le traitement préliminaire Le traitement séquentiel Le traitement postérieur OFBs de la famille Grafcet Sommaire 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4/1 Rappels sur les Grafcets Fonctions de l'OFB Présentation de l'OFB MSIT Description des paramètres Liste des défauts Utilisation de l'OFB MSIT Exemple d'utilisation B/1 B B B/2 Présentation du langage Grafcet Présentation du langage Grafcet Sous chapitre 1 Chapitre 1 Page 1.1 Rappel des principes du Grafcet 1/2 1.2 L’analyse progressive : les macro-représentations 1/3 Ce chapitre se termine à la page 1/4 1/1 Sans titre-2 1 15/01/96, 11:52 B 1.1 B Rappel des principes du Grafcet Le Grafcet permet de représenter graphiquement et de façon structurée le fonctionnement d’un automatisme séquentiel. Cette description graphique du comportement séquentiel de l’automatisme et des différentes situations qui en découlent, s’effectue à l’aide de symboles graphiques simples : Etape : à laquelle sont associées les actions à effectuer. 1 Transition : à laquelle sont associées des réceptivités (conditions logiques). Liaison orientée : reliant les étapes aux transitions et les transitions aux étapes. 2 Etape initiale : définit la situation initiale de l’automate. 1 Transition : les réceptivités associées indiquent les conditions logiques nécessaires au franchissement de cette transition. 2 3 Actions 6 Actions 4 Actions 7 Actions 5 9 8 Activation simultanée des étapes 3 et 6. Les sous ensembles formés par les étapes 3, 4, 5 et 6, 7, 8 constituent deux séquences dites simultanées. Aiguillage à partir de l’étape 3 vers l’étape 4 ou vers l’étape 5. Etape de fin de séquence : permet la synchronisation des séquences simultanées. Désactivation simultanée des étapes 5 et 8. Actions Etape : les actions associées ne s’exécutent que lorsque l’étape est active. Les transitions et les liaisons orientées symbolisent les possibilités d’évolution des étapes actives. Les actions associées aux étapes traduisent d’une façon générale "ce qui doit être fait" lorsque celles-ci sont actives. Elles décrivent en particulier les ordres qu’il faut transmettre à la partie opérative (processus à automatiser) ou à d’autres systèmes automatisés. L’ensemble des étapes actives à un moment donné définit la situation du Grafcet. 1/2 Sans titre-2 2 15/01/96, 11:52 1 Présentation du langage Grafcet 1.2 L’analyse progressive : les macro-représentations • Cahier des charges Un automatisme permet d’assurer le mélange de trois produits A, B, C. Les produits A et B sont dosés par pesage cumulé dans une trémie peseuse B1. Le produit C est pesé et dosé dans la trémie B2. L’homogénéité du produit final est obtenu par le malaxage des trois constituants dans un mélangeur pendant un temps fixé par l’opérateur. A B C B 0 0 B C A Tremie peseuse B1 A l’expiration de ce temps, le mélange final pourra être évacué dès qu’une autorisation extérieure sera donnée. Mélangeur Tremie peseuse B2 Evacuation • Analyse fonctionnelle Cette application se décompose en 4 séquences principales : - le dosage des 3 constituants, - le remplissage du mélangeur, - le mélange des 3 produits, - l’évacuation du mélange final. Le Grafcet ci-contre permet de représenter l’enchaînement global des séquences (représentation macroscopique d’une analyse de premier niveau). L’analyse détaillée de chaque séquence permet d’établir des Grafcet de deuxième niveau, voire de troisième niveau, jusqu’au niveau le plus élémentaire permettant la description complète de l’application. Début 1 cycle par cycle Dosage Séquence Dosage 10 fin de dosage Remplissage 20 Séquence Remplissage fin de remplissage Mélange Séquence Mélange 30 fin de mélange Evacuation 40 Séquence Evacuation fin d'évacuation • Les macro-représentations Le Grafcet de premier niveau décrivant l'enchainement des séquences permet de mieux expliciter la structuration de la partie commande. Chaque séquence est associée à une symbolisation particulière de l' étape : la macro-étape. Cette notion de "macro-représentation" permet de hiérarchiser l'analyse. Chaque 1/3 Sans titre-2 3 15/01/96, 11:52 niveau peut être complété, modifié sans remettre en cause les autres niveaux. • Représentation graphique B Macro-étapes Séquence dosage Séquence remplissage Graphe principal Séquence mélange Séquence évacuation 1/4 Sans titre-2 4 15/01/96, 11:52 Le langage Grafcet PL7-3 Le langage Grafcet PL7-3 Sous chapitre 2 Chapitre 2 Page 2.1 Les symboles graphiques 2/3 2.2 Les objets spécifiques au Grafcet 2/4 2.2-1 Les objets bits 2.2-2 Les objets mots 2/4 2/5 2.3 Les possibilités du langage Grafcet 2/6 2.4 La page Grafcet 2/7 2.5 L’utilisation des renvois 2/8 2.5-1 Définition 2.5-2 Utilisation 2/8 2/8 2.6 Règles graphiques 2/10 2.7 Les macro-étapes 2/11 2.7-1 2.7-2 2.7-3 2.7-4 2.7-5 2.7-6 2.7-7 Principe Caractéristiques Etats d’une macro-étape Macro-étape monoactive Macro-étape multiactive Etapes initiales Activation d’une macro-étape déjà active 2.8 Les actions associées aux étapes 2.8-1 Actions à l’activation ou à la désactivation 2.8-2 Actions continues 2.8-3 Ordre d’exécution des actions 2/11 2/12 2/13 2/14 2/14 2/14 2/15 2/16 2/17 2/17 2/18 2/1 B Le langage Grafcet PL7-3 B Sous chapitre 2.9 Les réceptivités associées aux transitions 2.9-1 Règles de programmation en langage à contacts 2.9-2 Règles de programmation en langage littéral 2.9-3 Réceptivité utilisant le temps d’activité Ce chapitre se termine à la page 2/2 Chapitre 2 Page 2/19 2/20 2/20 2/21 2/22 2 Le langage Grafcet PL7-3 2.1 Les symboles graphiques Désignation Etapes Symbole Nombre Etapes initiales bit mot 64 max Xi Xi,V 64 actives simultanément Xi Xj,i Xi,V Xj,i,V i Etapes ou étapes de macro-étapes Etapes IN-OUT Macroétapes 64 max XMj Mj Symbole Commentaires d’une étape vers une autre d’une étape vers plusieurs étapes : activation simultané de plusieurs étapes vers une étape : désactivation simultanée de plusieurs étapes vers plusieurs étapes vers le haut vers le bas vers la droite 1024 max vers 8 étapes maximum par écran 96 transitions valides simultanément venant de 8 étapes maximum par écran de 8 étapes vers 8 étapes maximum d’origine de destination Liaisons orientées Xj,I Xj,O IN Mj Désignation Renvois 1024 max Monoactives Multiactives Transitions i n (n) numéro de l’étape ou de la macroétape d’où l’on vient (étape d'origine) n (n) numéro de l’étape ou de la macroétape où l’on va (étape de destination) Ces liaisons permettent de réaliser : • un aiguillage • un saut d'étapes • une reprise d’étapes (séquence) vers la gauche 2/3 B 2.2 Les objets spécifiques au Grafcet L’utilisateur dispose d’objets bits associés aux étapes et macro-étapes, de bits système spécifiques au langage Grafcet et d’objets mots indiquant le temps d’activité des étapes. B 2-2.1 Les objets bits Désignation Adresse Bits associés aux étapes et macroétapes Xi Etapes i du Grafcet principal XMj Xj,i Bits système associés au Grafcet Description Macro-étape j 0≤i≤127 0≤j≤63 Etape i de la macro-étape j Xj,I Etape d’entrée IN de la macro-étape j Xj,O Etape de sortie OUT de la macro-étape j SY21 Provoque l’initialisation du Grafcet SY22 SY23 L’utilisation de ces bits est détaillée chapitre 3.3 Provoque la remise à zéro générale des Grafcet Provoque le figeage des Grafcet SY24 Valide le changement de la table des mots système SW8 à SW11 SY25 Signale la non monoactivité d’une ou plusieurs macro-étapes monoactives SY26 Indique un dépassement des possibilités d’activités (étapes et transitions) Les bits associés aux étapes et macro-étapes sont à 1 lorsque celles-ci sont actives. Ces bits peuvent être testés dans toutes les tâches, mais ne peuvent être écrits que dans le traitement préliminaire de la tâche maître. Ces tests et actions sont programmés soit en langage à contacts, soit en langage littéral. Remarques : • ces objets bits ne sont pas indexables. • XMj ne peut être que testé. 2/4 2 Le langage Grafcet PL7-3 2.2-2 Les objets mots Désignation Adresse Mots temps d’activité des étapes Xi,V Temps d’activité de l’étape i du graphe principal Xj,i,V Temps d'activité de l'étape i de la macro-étape j Xj,I,V Temps d’activité de l’étape d’entrée de la macro- étape j Xj,O,V Temps d’activité de l’étape de sortie de la macro-étape j SW12 à SW15 SW8 à SW11 SW6 Table de 4 mots permettant de connaître le numéro de la macro-étape qui n’est plus monoactive SW7 Mot permettant de connaître le nombre de transitions valides (nombre de postes occupés dans la table des transitions valides ou à valider, soit 96 max) Mots système associés au Grafcet Description B Table de 4 mots permettant de remettre ou non à zéro les macro-étapes Mot permettant de connaître le nombre d’étapes actives (nombre de postes occupés dans la table des étapes actives ou à activer, soit 64 max) Mots temps d’activité • ils sont incrémentés toutes les 100 ms et peuvent prendre la valeur 0 à 9999, • incrémentation du mot : pendant l’activité de l’étape associée, • comportement à l’activation et à la désactivation de l’étape : - à la désactivation : le contenu est figé, - à l’activation : remise à zéro et incrémentation toutes les 100 ms, • le nombre de mots temps d’activité est configurable, • ces mots ne sont pas indexables. Nota : un temps d’activité non déclaré ou non affecté pourra être lu dans le programme mais conservera la valeur 0. 2/5 2.3 Les possibilités du langage Grafcet Le traitement séquentiel est structuré en : • 1 sous ensemble : Graphe principal, • 64 sous ensembles : Macro-étapes B Ces sous-ensembles sont eux-mêmes divisés en pages (voir schéma ci-dessous). Macro-Etape 0 Graphe Principal Page 8 Page 8 8 pages 8 pages Page 3 Page 2 128 étapes maximum Page 3 Page 2 + Macroétapes Page 1 Page 1 128 étapes maximum + Etape IN + Etape OUT + Macroétapes Macro-Etape 12 Page 8 8 pages Possibilités maximum offertes par le traitement séquentiel: 1024 étapes++ 512 étapes 64 64 macro-étapes macro-étapes Page 3 Page 2 Page 1 128 étapes maximum + Etape IN + Etape OUT + Macroétapes Macro-Etape 63 Page 8 8 pages Page 3 Page 2 Page 1 128 étapes maximum + Etape IN + Etape OUT + Macroétapes 2/6 Le langage Grafcet PL7-3 2.4 2 La page Grafcet Le graphe principal et les macro-étapes se programment chacun sur 8 pages. Une page correspond à un écran du terminal et à un formulaire de programmation. La page se décompose en deux zones : • la zone commentaire, • la zone graphique. Zone commentaire Elle est visualisée en partie sur la droite de l’écran et comporte au maximum 13 lignes de 60 caractères (20 caractères visualisés). Les commentaires sont mémorisés dans l’automate et font partie de la page. La suppression d’une page entraîne la suppression des commentaires. Zone graphique les limites de l'écran donnent celles de la page, soit 48 étapes ou macro-étapes au maximum. Formulaire programmation Grafcet MAST CHART 1 0 2 XM 3 4 COMMENTAIRES Page 5 6 OBSERVATIONS 7 0 1 2 3 4 5 6 7 X 8 8 colonnes 9 10 11 12 13 14 15 16 17 18 19 TSX 67/87 Mise à jour Par Date Etude : Dessin : Date : A B C T Folio 6 lignes étapes ou macro-étapes (L1, L4, L7, L10, L13 et L16) alternant avec 6 lignes transitions (L2, L5, L8, L11, L14 et L17). Lorsque l’ensemble du Grafcet ne peut pas se représenter sur une page, le langage Grafcet PL7-3 permet de réaliser : • une macro-représentation, c’est-à-dire une découpe fonctionnelle de l’application. La macro-étape donne alors accès à un deuxième niveau de Grafcet (voir chapitre 2.7), • une répartition du Grafcet sur plusieurs pages. Les liens entre les différentes pages sont réalisés par des renvois (voir chapitre 2.5). Nota : dans une page les lignes 0 et 19 permettent de programmer les renvois. 2/7 B 2.5 L’utilisation des renvois 2.5-1 Définition B Les renvois assurent la continuité d’un Grafcet lorsque le tracé direct d’une liaison orientée ne peut être fait, soit au sein d’une page, soit entre deux pages consécutives ou non. Cette continuité est assurée grâce à un renvoi de destination auquel correspond systématiquement un renvoi d’origine. Renvoi d’origine i Renvoi de destination j le renvoi qui lui est associé indique l’étape ou la macro-étape de départ, le numéro qui lui est associé indique l’étape ou la macro-étape d’arrivée. • à chaque renvoi est associé un numéro d’étape ou de macro-étape, • un renvoi s’effectue en interrompant obligatoirement une liaison transition vers étape. 2.5-2 Utilisation 0 1 2 renvois sur une page ils permettent d’assurer la continuité du Grafcet dans le cas d'un tracé complexe. renvois sur deux pages la répartition du graphe sur 2 pages permet une répartition graphique claire. renvoi d’origine en page 0 9 l’étape 9 est située sur une page différente, 3 4 5 6 7 9 0 1 1 2 Page 0 3 4 9 2 5 6 7 3 13 4 14 5 15 8 9 10 11 12 13 14 15 1 renvoi de destination en page 0 6 l’étape 7 de destination est en page 1, 6 16 17 18 7 19 0 0 1 1 2 3 4 5 6 6 1 7 2 7 renvoi de destination en page 1 l’étape 1 de destination est 9 en page 0, 15 3 4 8 5 6 7 9 8 9 1 2/8 10 11 1 16 Page 1 7 2 Le langage Grafcet PL7-3 MAST CHART 1 0 2 XM 3 4 5 3 0 1 6 2 3 4 7 5 6 7 B 8 8 9 10 Début d’aiguillage 9 11 12 Les transitions et les envois de destination ( 23 et 24) doivent être écrits dans la même page. 10 13 14 11 15 11 16 17 18 23 Fin d’aiguillage Les renvois d’origine (11) doivent être dans la même page que l’étape de destination. 2 24 3 11 23 19 MAST 4 CHART 1 0 11 2 XM 3 11 0 1 23 24 4 5 11 23 2 3 4 24 5 24 6 7 25 8 9 10 Activations simultanées 26 11 12 L’étape et la transition de divergence qui suit cette étape doivent se trouver dans la même page que les renvois de destination (29, 35 et 41). 27 13 14 28 15 28 16 17 18 29 35 41 29 19 MAST 41 CHART 1 0 35 2 0 1 XM 3 4 5 28 28 28 29 35 41 30 36 42 31 37 43 32 38 44 33 39 45 34 40 2 3 4 5 6 7 8 9 10 Désactivations simultanées Les étapes et la transition de convergence qui suivent ces étapes doivent se trouver dans la même page que le renvoi de destination (46). Lorsque plusieurs étapes convergent sur une étape le renvoi d’origine porte le numéro de l’étape amont la plus à gauche (34). 11 12 13 14 34 40 15 16 17 18 46 46 19 MAST 0 0 1 CHART 1 2 XM 3 4 5 34 46 2 3 4 0 5 2/9 2.6 Règles graphiques Les cinq règles suivantes doivent être respectées lors de la programmation de la zone graphique. • Règle 1 B Toute étape doit être repérée. Le repère s’inscrit à droite du carré symbolisant l’étape. • Règle 2 Deux repères identiques d’étape ne peuvent pas être programmés dans un même module de programmation. • Règle 3 Un aiguillage peut se tracer de la droite vers la gauche ou de la gauche vers la droite. • Règle 4 L’activation ou la désactivation simultanée d’étapes se représente toujours de la gauche vers la droite. • Règle 5 Les liaisons orientées horizontales et verticales peuvent, lorsqu’elles sont prolongées : - se croiser 1 : les liaisons sont alors de nature différente, - se rencontrer 2 : les liaisons sont alors de même nature, Le croisement de deux traits horizontaux symbolisant l’activation ou la désactivation simultanée d’étapes avec une liaison orientée est impossible. 2/10 MAST CHART 1 0 2 XM 3 4 Page 5 6 7 0 1 20 2 3 4 21 25 29 5 6 7 22 8 1 9 10 11 12 2 26 27 2 Le langage Grafcet PL7-3 2.7 Les macro-étapes Une macro-étape est une représentation unique d’un ensemble d’étapes et de transitions appelé expansion de la macro-étape. Celle-ci est caractérisée par une étape d’entrée et une étape de sortie. B 2.7-1 Principe Une macro-étape est la symbolisation graphique d’une séquence. IN Elle se distingue d’une étape par un ou deux traits horizontaux. 1 1 11 L’étape d’entrée répond aux mêmes règles que les autres étapes. M1 2 12 L’étape de sortie ne peut avoir d’actions associées. 2 13 OUT 3 Lorsque la macro-étape est active, l’évolution du Grafcet respecte les règles énoncées lors des chapitres précédents. 1 La macro-étape M1 est activée quand l’étape 1 est active et que sa réceptivité aval est vraie. IN Elle est désactivée quand son étape de sortie est active et que la réceptivité M1>2 est vraie. 1 11 2 12 L’étape 2 est alors activée. M1 13 OUT 2 3 2/11 2.7-2 Caractéristiques Le langage Grafcet PL7-3 autorise la programmation de 64 macro-étapes M0 à M63. B L’expansion d’une macro-étape, constituée d'une ou plusieurs séquences, est programmable au plus sur 8 pages et comprend au maximum 128 étapes plus l’étape IN et l’étape OUT. Une macro-étape peut contenir une ou plusieurs macro-étapes. Les macro-étapes appelées sont obligatoirement d’indice supérieur à la macro-étape appelante. Cette hiérarchie est possible jusqu’à concurrence de 64 niveaux. L’analyse d’une application peut être structurée de façon à fournir une approche globale puis détaillée des différentes opérations à réaliser. 0 IN IN M0 M1 1 M4 1 1 M2 12 2 2 OUT OUT Vers une analyse détaillée 2/12 2 Le langage Grafcet PL7-3 2.7-3 Etats d’une macro-étape Une macro-étape peut prendre trois états : l’état repos, l’état actif et l’état fini qui peuvent être visualisés en temps réel sur l’écran du terminal. Dans ce qui suit, les parties noircies représentent les états actifs. • Etat repos 1 Aucune étape active dans l’expansion de la macro-étape. MAST B CHART 1 0 2 3 1 0 1 IN 2 3 4 1 M1 5 6 7 OUT 8 • Etat actif 2 MAST Au moins une étape active autre que l’étape OUT, dans l’expansion de la macro- étape. Dès l’activation de la macro-étape, l’étape d’entrée (IN) est activée, puis l’expansion évolue en fonction de l’application. 2 3 2 0 2 3 3 5 5 6 6 7 OUT 8 3 2 IN 4 1 M1 2 1 IN 2 4 CHART 1 0 0 1 • Etat fini 3 L’étape de sortie de la macroétape est active. L’expansion est à l’état actif mais terminé. MAST CHART 1 0 1 M1 7 OUT 8 MAST CHART 1 0 2 3 3 0 1 IN 2 3 4 1 M1 5 6 7 OUT 8 • Désactivation 4 Pour que la macro-étape passe de l’état actif à l’état repos, il faut que : - l’étape de sortie (OUT) de la macro-étape soit la seule active (la transition aval de la macro-étape est alors valide), - la réceptivité associée à la transition soit vraie. MAST MAST CHART 1 0 0 2 3 4 1 IN 2 1 1 4 5 6 6 8 3 IN 3 M1 5 7 2 4 2 3 4 CHART 1 0 0 OUT 7 M1 1 OUT 8 La transition est alors franchie, la macro-étape est désactivée ainsi que l’étape de sortie (OUT). 2/13 2.7-4 Macro-étape monoactive B L’expansion d’une macro-étape monoactive ne peut pas comprendre d’activations ou de désactivations simultanées d’étapes. Dans le cas où plusieurs transitions non exclusives sont simultanément franchies dans un aiguillage (ex : B1 = 1), l’évolution du graphe admet l’activation simultanée de plusieurs étapes, mais cette multiactivité est signalée à l’utilisateur par le bit système SY25. 1 2 3 4 5 6 7 IN B0+B1 B2+B1 1 M6 2 SY25 = 1 3 OUT 2.7-5 Macro-étape multiactive 1 2 3 4 L’expansion d’une macro-étape multiactive peut comprendre des activations et des désactivations simultanées d’étapes. L’expansion d’une macro-étape peut contenir une ou plusieurs étapes initiales. Ces étapes initiales sont activées à la mise sous tension ou lors d’une initialisation par programme. La macro-étape est alors visualisée à l’état actif. 1 M4 7 6 7 2 3 OUT 1 2 3 4 5 Initialisation 1 IN M3 11 22 12 13 2/14 6 IN Dans le cas où plusieurs réceptivités non exclusives sont franchies dans un aiguillage et que l’évolution du graphe entraîne l’activation simultanée de plusieurs étapes, aucun contrôle de monoactivité n’est effectué. 2.7-6 Etapes initiales 5 21 Le langage Grafcet PL7-3 2 2.7-7 Activation d’une macro-étape déjà active L’activation d’une macro-étape XMi déjà active entraîne l’activation de son étape d’entrée Xi,I Deux cas peuvent alors se présenter : • l’étape d’entrée Xi,I est déjà active : le déroulement de l’expansion de la macro-étape XMi n’est pas modifiée. • l’étape d’entrée Xi,I n’est pas active : la réactivation de XMi entraîne l’activation de Xi,I sans pour autant bloquer le déroulement de l’expansion de XMi : Exemple : Ce graphe en évolution, présente l’état suivant: 1 la macro-étape XM1 est active, l’étape 2 de son expansion est active. 2 la macro-étape XM1 est réacti- vée (l’étape initiale 10 est active et T:10>M1 est vraie) : - l’étape d’entrée X1,I, devient active, - l’expansion XM1 suit son cours. 3 l’expansion de XM1 est en cours d’évolution : - T:2>OUT est vraie, - l’étape OUT devient active. XM1 est à la fois à l’état "fini" et "actif"; elle est visualisée à l’état "fini". 4 la transition T:IN>11 est vraie : 10 IN B M1 1 11 M2 2 12 11 OUT 1 10 IN M1 1 11 M2 2 12 11 OUT 2 10 IN M1 1 11 M2 2 12 11 OUT 3 10 IN l’étape 11 devient active. La transition T:M1>M2 est vraie : M1 1 11 XM1 est visualisée à l’état "actif", XM2 devient active. M2 2 12 11 OUT Pour contrôler ce phénomène, il suffit de déclarer monoactive la macro-étape XM1 et de surveiller par programme le bit système SY25. 4 2/15 2.8 Les actions associées aux étapes A chaque étape sont associées des actions qui peuvent être programmées soit en langage à contacts, soit en langage littéral. Ces actions ne sont scrutées que si l’étape à laquelle elles sont associées est active. Le logiciel PL7-3 autorise trois types d’action : B • les actions à l’activation : actions exécutées une fois lorsque l’étape à laquelle elles sont associées passe de l’état repos à l’état actif. • les actions à la désactivation : actions exécutées une fois lorsque l’étape à laquelle elles sont associées passe de l’état actif à l’état repos. • les actions continues : ces actions sont exécutées tant que l’étape à laquelle elles sont associées est active. Une même page peut utiliser ces trois types d’action. Pour une même action, le nombre de ligne de programmation en langage littéral ou le nombre de réseaux en langage à contacts n’est pas limité. Repérage des actions Ces actions, directement associées à l’étape sont mémorisées dans l’automate avec le même repère que celui de l’étape : Module S (x)i module : CHART ou XMi, x : = A : Activation, = C : Continue, = D : Désactivation, i : repère de l’étape Exemple : XM2 S (D) 3 : action à la désactivation de l’étape 3 de XM2. Règles d’utilisation • Toutes les actions sont considérées comme des actions mémorisées, d’où : - une action asservie à la durée de l’étape Xn doit être remise à zéro à la désactivation de l’étape Xn ou à l’activation de l’étape Xn+1, - une action à effet maintenu sur plusieurs étapes est positionnée à un à l’activation de l’étape Xn et remise à zéro à la désactivation de l’étape Xn+m. • Toutes les actions peuvent être asservies à des conditions logiques, donc être conditionnelles. • Les actions asservies à des sécurités indirectes devront être programmées dans le traitement postérieur (traitement exécuté à chaque scrutation voir chapitre 3 "Organisation de la tâche maître"). 2/16 2 Le langage Grafcet PL7-3 2.8-1 Actions à l’activation ou à la désactivation Ces actions sont impulsionnelles et sont exécutées sur un seul tour de scrutation. Elles permettent l’appel à un sous programme, l’incrémentation d’un compteur, etc... Formulaire programmation schéma à contacts Exemples : • appel à un sous-programme, • incrémentation du mot W10, et remise à zéro de W0 et W25. IT MAIN FAST SR MAST PRE AUX POST ASY XM CHART B L B25 SR4 C W0 → W4 Formulaire programmation Litteral < ! L I F : WH I L E IT MAI T H E N E L S E D O I NC W1 0 ; 0 → W0 → W2 5 2.8-2 Actions continues • Action conditionnelle Exemple : Le bit W4,5 est asservi à l’entrée I4,7 ou au bit interne B55 et à l’entrée I3,6. Tant que l’étape est active et que ces conditions sont présentes, W4,5 est positionné à 1. Le dernier état lu à la désactivation de l’étape est mémorisé puisque les actions associées ne sont plus scrutées. Il est donc nécessaire de remettre à 0 le bit W4,5. Formulaire programmation schéma à contacts IT MAIN FAST SR MAST PRE AUX POST ASY XM CHART L S(C)10 I4,7 W4,5 B35 I3,6 Formulaire programmation schéma à contacts IT MAIN FAST SR MAST PRE AUX POST ASY XM CHART L S(D)10 W4,5 R • Action conditionnelle temporisée : c’est un cas particulier, le temps intervenant comme condition logique. Cet asservissement peut être réalisé simplement en testant le temps d’activité associé à l’étape. Exemple : Le bit B9 est piloté tant que le temps d’activité de l’étape1 est inférieur à 10 s (base de temps : 100 ms). Formulaire programmation schéma à contacts IT MAIN FAST SR MAST PRE AUX POST ASY CHART XM L S(C)1 B9 X1,V<100 Ces actions peuvent également être inconditionnelles. 2/17 2.8-3 Ordre d’exécution des actions Pour l’exemple suivant, sur un tour de cycle, l’ordre d’exécution des actions est le suivant : Lorsque l’étape 51 est activée, les actions sont exécutées dans l’ordre suivant : B 1 actions à la désactivation de l’étape 50, 2 actions à l’activation de l’étape 51, 3 actions continues de l’étape 51. 50 Activation X50 Continue X50 Désactivation X50 51 Activation X51 Continue X51 Désactivation X51 Dès la désactivation de l’étape 51, les actions continues associées ne sont plus scrutées. 2/18 Le langage Grafcet PL7-3 2.9 2 Les réceptivités associées aux transitions • à chaque transition est associée une réceptivité qui peut être programmée soit en langage à contacts, soit en langage littéral, • une réceptivité n’est scrutée que si la transition à laquelle elle est associée est valide, • une réceptivité correspond à un réseau de contacts ou à une expression littérale, comprenant une série de tests sur bits et/ou sur mot, • une réceptivité non programmée est une réceptivité toujours vraie. La transition, visualisée alors en vidéo inverse, est franchie dès qu’elle est validée. Repérage de la réceptivité Le système mémorise les réceptivités en les repérant par rapport au numéro de l’étape amont et au numéro de l’étape aval : Module T : m>n module : CHART ou XMi, m : numéro d’étape ou de macro-étape amont Exemple : CHART T:12 > 13; réceptivité associée à la transition entre les étapes 12 et 13 du graphe principal. Lors d’une activation simultanée ou d’une désactivation simultanée d’étapes, le repère indiqué est celui de l’étape de la colonne principale (étape située le plus à gauche). n : numéro d’étape ou ou de macro-étape aval 0 1 12 2 3 4 13 33 53 5 6 XM2 T:12 > 13 7 9 10 25 40 58 11 12 13 M6 14 15 CHART T:25 > M6 16 2/19 B 2.9-1 Règles de programmation en langage à contacts La réceptivité associée à la transition se programme sous la forme d’un réseau comprenant une zone test et une zone action. 2 Formulaire programmation schéma à contacts 3 B 4 5 6 59 Fdc bas• Valeur Pesée <10 (I3,1 • W26 <10) 7 IT MAIN FAST SR MAST PRE AUX POST ASY CHART XM T:59>60 I3,1 # W26<10 8 9 La structure du réseau est identique à celle d’un réseau programmé dans un module de programme. Seuls les éléments suivants peuvent être utilisés : • éléments graphiques de test : contacts (Bi, I/O, Ti,D...), blocs comparaisons, • éléments graphiques d’action : bobine "dièse" uniquement (les autres bobines n’étant pas significatives dans ce cas). 2.9-2 Règles de programmation en langage littéral La réceptivité associée à la transition se programme sous la forme d’une expression boléenne ou d’une expression arithmétique ou d’une association des deux. 2 3 4 5 6 59 Formulaire programmation Litteral Fdc bas• Valeur Pesée <10 (I3,1 • W26 <10) < ! 7 8 9 CHART T:59>60 L I F : WH I L E T H E N E L S E D O I 3 , 1 . [ W2 6 < 1 0 ] L’expression admise pour l’écriture d’une réceptivité diffère d’une ligne de programmation en langage littéral par : • la structure générale : - pas de symbole début de ligne (!), - pas d’étiquette (L), - pas de phrase actions, de phrase conditionnelle ou de phrase itérative. • la liste des instructions : - pas d’action sur objet bit, - pas de saut, d’appel sous programme, - pas de transfert (→), pas d’instruction d’action sur blocs. 2/20 2 Le langage Grafcet PL7-3 2.9-3 Réceptivité utilisant le temps d’activité Dans certaines applications, des actions sont pilotées sans contrôle d’information de retour (fin de course, détecteur...). La durée de l’étape est conditionnée par un temps; le langage PL7-3 permet d’utiliser le temps d’activité associé à chaque étape. B MAST CHART 1 0 2 XM 3 4 5 Formulaire programmation Litteral 6 0 1 2 3 4 19 t = 15s < ! 20 CHART T:19>20 5 I F : WH I L E L T H E N E L S E D O X1 9 , V>= 1 5 0 6 Formulaire programmation schéma à contacts L IT MAIN FAST SR MAST PRE ASY AUX POST CHART XM T : 19>20 X19,V>=150 # 2/21 B 2/22 Organisation de la tâche maître Organisation de la tâche maître 3 Chapitre 3 Sous-chapitre Page 3.1 Le cycle de base 3/2 3.2 Le traitement préliminaire 3/3 3.2-1 Prépositionnement du Grafcet 3.3 Utilisation des bits système dans le traitement préliminaire 3.3-1 3.3-2 3.3-3 3.3-4 Initialisation du Grafcet : SY21 Remise à zéro du Grafcet : SY22 Figeage du Grafcet : SY23 Remise à zéro des macro-étapes : SY24 3.4 Le traitement séquentiel 3.4-1 3.4-2 3.4-3 3.4-4 Caractéristiques Principe d’évolution Dépassement des possibilités d’activation Surveillance par l’utilisateur 3.5 Le traitement postérieur 3.5-1 Actions associées au Grafcet 3.5-2 Actions indépendantes du Grafcet 3.5-3 Contrôle de l’exécution du Grafcet Ce chapitre se termine à la page 3/3 3/4 3/4 3/4 3/5 3/5 3/6 3/6 3/6 3/7 3/8 3/9 3/9 3/10 3/10 3/10 3/1 B 3.1 Le cycle de base Un programme écrit en langage Grafcet comporte trois traitements consécutifs : le traitement préliminaire, le traitement séquentiel et le traitement postérieur. Leur scrutation s’effectue selon le cycle de base suivant : B Période : Temps entre deux scrutations de la tâche, défini par configuration. Période Acquisition des entrées : Acquisition de l’état physique des modules d’entrées de l’automate (valeurs figées pendant le traitement). Acquisition des entrées Traitement préliminaire : Il permet de traiter : • les initialisations sur reprise secteur ou défaillance, • le prépositionnement du Graphe, • les modes de marche de l’application, • la logique d’entrée. Traitement Préliminaire Langage littéral ou Langage à contacts Traitement Séquentiel Traitement séquentiel : Il permet de traiter l’ossature séquentielle de l’application et donne accès au traitement des réceptivités et des actions directement associées aux étapes. Traitement postérieur : Il permet de traiter : • la logique de sortie, • les surveillance et sécurités indirectes spécifiques aux sorties. Grafcet Traitement Postérieur Langage littéral ou Langage à contacts Mise à jour des sorties Mise à jour des sorties : Mise à jour de l’état physique des module de sorties de l’automate (valeurs figées pendant le traitement). Incidence du traitement multitâche Cette structure reste identique, que le traitement soit monotâche ou multitâche. 3/2 3 Organisation de la tâche maître 3.2 Le traitement préliminaire Saisi en langage à contacts ou en langage littéral, le traitement préliminaire est scruté dans sa totalité du haut vers le bas. Exécuté avant les traitements séquentiel et postérieur, il permet de traiter tous les événements ayant une influence sur ces derniers : • gestion des reprises secteur et réinitialisations, • remise à zéro ou prépositionnement des graphes. C’est donc uniquement dans le traitement préliminaire que l’on agira sur les bits associés aux étapes (mise à 0 ou à 1 des bits étapes Xi et macro-étapes Xj,i par les instructions Set et Reset). Exemple : Ces actions réalisent un prépositionnement du Grafcet. Formulaire programmation schéma à contacts IT MAIN FAST SR MAST PRE B29 AUX POST ASY CHART XM X12 S X1Ø R X11 R Nota : l’action de mise à 1 ou à 0 d’une étape n’est effective que sur une étape programmée. 3.2-1 Prépositionnement du Grafcet Il peut être nécessaire de prépositionner un Grafcet lors du passage d’un fonctionnement marche normale en marche spécifique ou de l’apparition d’un incident (exemple : défaut provoquant une marche dégradée). Cette opération intervient sur le déroulement normal du cycle de l’application, elle doit donc être effectuée avec précaution. Le positionnement peut porter sur l’ensemble ou sur une partie du traitement séquentiel : • en utilisant les instructions SET, RESET : ! IF RE(I4,5) THEN SET X1 ; RESET X2 ; RESET X0 • par remise à 0 générale (SY22) puis, dans le cycle suivant, positionnement à 1 des étapes, • par utilisation de l'OFB MSITi (se reporter au chapitre 4). Nota : dans le cas de la remise à zéro d’une étape, les actions à la désactivation de celle-ci ne sont pas exécutées. 3/3 B 3.3 B Utilisation des bits système dans le traitement préliminaire Les bits système associés au Grafcet étant classés numériquement par ordre de priorité (SY21 à SY24), lorsque plusieurs d’entre eux sont simultanément mis à 1 dans le traitement préliminaire, ils sont traités un par un dans un ordre croissant (un seul est effectif par tour de scrutation). Ces bits sont effectifs au début du traitement séquentiel. 3.3-1 Initialisation du Grafcet : SY21 Normalement à l’état 0, la mise à l’état 1 de SY21 provoque : • la désactivation des étapes actives, • l’activation des étapes initiales. Mis à l’état 1 Remis à l’état 0 • Par mise à l’état 1 de SY0 • Par le programme utilisateur • Par le terminal (en mode DONNEES ou REGLAGE) • Par le système au début du traitement séquentiel • Par le programme utilisateur • Par le terminal • Utilisation lorsqu’il est géré par le programme utilisateur, SY21 ne peut être positionné à 0 ou 1 que dans le traitement préliminaire. 3.3-2 Remise à zéro du Grafcet : SY22 Normalement à l’état 0, la mise à l’état 1 de SY22 provoque la désactivation des étapes actives de l’ensemble du traitement séquentiel. Mis à l’état 1 • Par le programme utilisateur Remis à l’état 0 • Par le système à la fin du traitement postérieur • Utilisation - ce bit doit être écrit à 1 uniquement dans le traitement préliminaire, - la remise à 0 de SY22 est géré par le système; il est donc interdit de le remettre à 0 par programme ou par le terminal. Pour redémarrer le traitement séquentiel dans une situation donnée, l’utilisateur devra prévoir selon son application une procédure d’initialisation ou de prépositionnement du Grafcet. 3/4 Organisation de la tâche maître 3 3.3-3 Figeage du Grafcet : SY23 Normalement à l’état 0, la mise à l’état 1 de SY23 provoque le maintien en l’état des Grafcet. Quelle que soit la valeur des réceptivités aval aux étapes actives, les Grafcet n’évoluent pas. Le gel est maintenu tant que le bit SY23 est à 1. Mis à l’état 1 Mis à l’état 0 • Par le programme utilisateur B • Par le programme utilisateur • Utilisation - géré par le programme utilisateur, ce bit est positionné à 1 ou 0 uniquement dans le traitement préliminaire, - le bit SY23 associé aux bits SY21 et SY22 permet de réaliser un figeage du traitement séquentiel à l’état initial ou à l’état 0. De même le Grafcet peut être prépositionné puis figé par SY23. 3.3-4 Remise à zéro des macro-étapes : SY24 Normalement à l’état 0, la mise à l’état 1 de SY24 provoque la mise à zéro des macro-étapes choisies dans une table de 4 mots système (SW8 à SW11). Mis à l’état 1 Remis à l’état 0 • Par le programme utilisateur • Par le système au début du traitement séquentiel • Utilisation - ce bit doit être écrit à 1 uniquement dans le traitement préliminaire, - la mise à 0 de SY24 est géré par le système, il est donc interdit de le remettre à 0 par programme ou par le terminal. Table de mots SW8 à SW11 A chaque bit de cette table correspond une macro-étape. L’utilisation en est la suivante : • chargement de la table des mots SW8 à SW11 (bit à mettre à 1 lorsque la macro-étape correspondante ne doit pas être mise à zéro), • validation par SY24. F SW8 0 F XM15 . . . . . . . . . . . . . . XM0 SW9 SW10 SW11 0 XM63 . . . . . . . . . . . . . . XM48 Exemple : ! IF I14,2 . T3,D THEN H’AF8F’ → SW8 ; H’F3FF’ → SW9; H’FFEF’ → SW10 ; H’FFFF’ → SW11; SET SY24 Ces quatre mots sont initialisés à H’FFFF’ si SY21 = 1. 3/5 3.4 Le traitement séquentiel 3.4-1 Caractéristiques B Ce traitement permet la programmation de l’ossature séquentielle de l’application. Le traitement séquentiel comprend : • le graphe principal : organisé en 8 pages et 128 étapes maximum, • les macro-étapes : 64 macro-étapes ouvrant chacune 8 pages de 128 étapes plus l’étape IN et l’étape OUT. Le traitement séquentiel permet la programmation maximum de 512 étapes et 1024 transitions. Au sein du graphe principal ou d’une macro-étape, plusieurs Grafcets non connexes peuvent être programmés et se dérouler simultanément. 3.4-2 Principe d’évolution L’évolution du Grafcet est géré de la façon suivante : • Phase 1 A chaque tour de cycle, après évaluation des transitions franchissables, le système met à jour : une table d’activité des étapes : cette table mémorise, pour le tour de cycle concerné : • les étapes actives, • les étapes à activer, • les étapes à désactiver. Les étapes restant au repos dans le tour de cycle ne sont pas prises en compte dans cette table. MAST 0 CHART 1 2 XM 3 4 Page 5 6 7 0 1 2 3 =1 =0 4 5 6 7 Etapes mémorisées durant le cycle 8 9 une table des transitions valides : cette table mémorise, pour le tour de cycle concerné, les transitions aval aux étapes mémorisées cidessus Ces deux tables sont configurées par défaut : • table des étapes : 64 postes maximum, • table des transitions : 96 postes maximum. 3/6 10 11 =1 =0 12 13 14 15 16 17 18 Transitions mémorisées durant le cycle 3 Organisation de la tâche maître • Phase 2 Les actions associées aux étapes actives sont exécutées, dans l’ordre suivant : MAST 0 CHART 1 2 XM 3 4 Page 5 6 7 0 1 - actions à la désactivation des étapes à désactiver. Exemple : S(D)10 et S(D)51. 2 - actions à l’activation des étapes à activer. Exemple : S(A)11 et S(A)52. 6 - actions continues des étapes actives. Exemple : S(C)11 et S(C)52. 10 3 4 5 7 10 =1 50 11 51 =1 12 52 8 B 9 11 12 13 14 • Phase 3 Le système contrôle la monoactivité des macro-étapes monoactives et positionne le bit système SY25 à 1 ainsi que le bit correspondant dans les mots systèmes SW12 à SW15 si ce critère n’est pas respecté. Remarques : • l’état des entrées/sorties est invariant pendant l’interprétation du traitement séquentiel, • la mise à jour des sorties n’est effective qu’en fin de cycle automate après le traitement postérieur. 3.4-3 Dépassement des possibilités d’activation Le dépassement des possibilités d’activation du système (dépassement du nombre de postes d’une ou des deux tables) entraîne : • l’arrêt de l’exécution de l’application (passage en "STOP" de toutes les tâches), • le passage à 1 du bit système SY26 (dépassement des possibilités d’activation) et du bit système SY19 (dépassement du temps alloué aux tâches), • une signalisation au niveau de l’automate (voyant "MEM" allumé). L’utilisateur doit alors modifier puis initialiser et relancer l’application à l’aide du terminal (voir manuel "MODES OPERATOIRES"). 3/7 3.4-4 Surveillance par l’utilisateur Le système met à disposition de l’utilisateur (pour lecture) deux mots système : B SW6 : donne le nombre de postes occupés dans la table d’activité des étapes. Exemple : SW6 passe de 4 à 5. MAST 0 CHART 1 2 XM 3 4 Page 5 6 7 0 1 2 3 SW7 : donne le nombre de postes occupés dans la table des transitions valides. 4 5 6 7 Exemple : SW7 passe de 1 à 4. 8 9 10 11 12 13 14 15 16 17 18 Remarque : en cas de dépassement (SY26=1), les mots SW6 et SW7 contiennent le nombre de postes correspondant au cycle avant déplacement. 3/8 3 Organisation de la tâche maître 3.5 Le traitement postérieur Saisi en langage à contacts ou en langage littéral, le traitement postérieur est scruté de haut en bas. Ce traitement est le dernier exécuté avant l’activation des sorties et permet de programmer la logique de sortie. B 3.5-1 Actions associées au Grafcet L’équation d’une sortie activée plusieurs fois dans le traitement séquentiel peut être programmée dans le traitement postérieur. Exemple : ! X1 + X7 + X24 + X3,12 → O10,7 (la sortie O10,7 est conditionnée à l’activité des étapes X1 ou X7 ou X24 ou X3,12). De même le traitement postérieur permet de compléter les consignes émises par le traitement séquentiel en intégrant à l’équation d’une sortie les modes de marches et d’arrêts et les sécurités indirectes spécifiques à l’action. I2,4 :sécurité indirecte spécifique au pilotage de la sortie O11,3. B26 :bit interne résultat de la logique d’entrée traitant des modes de marches et d’arrêts. I1,0 :bouton poussoir. D’une manière générale il est recommandé de programmer les actions agissant directement sur le process dans le traitement postérieur Formulaire programmation schéma à contacts I2,4 X5 IT MAIN FAST SR MAST PRE AUX POST ASY CHART XM O11,3 X8 X59 B26 I1,Ø 3/9 3.5-2 Actions indépendantes du Grafcet Le traitement postérieur permet également de programmer les sorties indépendantes du traitement séquentiel. B 3.5-3 Contrôle de l’exécution du Grafcet Il peut s’avérer nécessaire de contrôler le bon déroulement du Grafcet en testant le temps d’activité de certaines étapes. Le test de ce temps s’effectue par comparaison soit à une valeur minimum soit à une valeur maximum déterminée par l’utilisateur. L’exploitation du défaut est laissée au choix de l’utilisateur (signalisation, procédure particulière de fonctionnement, édition de message). Exemple : ! IF [X2,V > 10] . X2 THEN SET O10,2. 3/10 OFBs de la famille Grafcet Sous-chapitre Chapitre 4 Page 4.1 Rappels sur les Grafcets 4/2 4.2 Fonctions de l'OFB 4/4 4.3 Présentation de l'OFB MSIT 4/6 4.4 Description des paramètres 4/7 4.5 Liste des défauts 4/9 4.6 Utilisation de l'OFB MSIT 4/10 4.7 Exemple d'utilisation 4/11 4.7-1 Description de l'équipement 4/11 4.7-2 Fonctionnement de l'équipement 4/12 4.7-3 Description des capteurs et pré-actionneurs 4/13 4.7-4 Programme 4/14 4.7-5 Saisie du programme 4/17 4.7-6 Utilisation de l'OFB MSIT 4/19 Ce chapitre se termine à la page 4/22 ___________________________________________________________________________ 4/1 B 4.1 Rappels sur les Grafcets _________________________________________________________________________________________________________________________ B Grafcet connexe On appelle Grafcet connexe un Grafcet tel qu'il existe toujours des liaisons explicites entre deux éléments quelconques : étapes ou transitions. La prise en compte de l'état d'une étape, dans une réceptivité associée à une transition, ne constitue pas une liaison au sens de la connexité, alors que l'expansion d'une macroétape est une liaison connexe non représentée. ▲ 1 7 _ _ 2 3 _ _ 4 5 _ ▲ 8 _ 9 _ 6 _ Par exemple : L'ensemble des étapes 1, 2, 3, 4, 5, 6 est un Grafcet connexe, L'ensemble des étapes 7, 8, 9 est un Grafcet connexe. L'ensemble des étapes 1, 2, 3, 4, 5, 6, 7, 8, 9 n'est pas un Grafcet connexe, car il n'existe pas une suite de liaison entre les étapes 1 et 9. Grafcet partiel On appelle Grafcet partiel un Grafcet connexe ou un ensemble de plusieurs Grafcets connexes, qui représente une partie du Grafcet global. Cette partition du Grafcet global en plusieurs Grafcets partiels peut être nécessaire afin de définir les différents modes de marche d'un automatisme : elle permet d'associer un Grafcet partiel à chaque état de l'équipement. Un Grafcet partiel est dit actif quand au moins une de ses étapes est active. Dans le cas contraire, il est dit inactif. ___________________________________________________________________________ 4/2 4.2 Fonctions de l'OFB _________________________________________________________________________________________________________________________ B Les OFBs MSIT V5.0 et MSITN V5.5 de la famille Grafcet permettent de faciliter la gestion des modes de marche et d'arrêt d'une application séquentielle décrite en Grafcet. Ils permettent notamment de : • définir explicitement le descripteur du Grafcet partiel (étapes et macro-étapes du Grafcet partiel), • forcer le Grafcet partiel, • sauvegarder la situation courante, • positionner le Grafcet partiel dans une situation sauvegardée au préalable, • signaler une erreur signée, • disposer de la caractéristique "diagnostic", donc être exploitable par APPLIDIAG. De plus, l'OFB MSITN V5.5 propose les fonctionnalités suivantes : • prise en compte des étapes de sorties des macro-étapes (OUT) lors d'un forçage. Le traitement étant le même que pour les étapes IN : désactivation et blocage, • désactivation d'un Grafcet partiel sans la nécessité de définir au préalable une situation, • figeage d'un Grafcet partiel, • description de l'état du Grafcet partiel : forcé, figé ou libre, • description de la dernière fonction correctement effectué par l'OFB. Descripteur du Grafcet partiel Le descripteur d'un Grafcet partiel identifie celui-ci. Il contient l'ensemble des étapes et des macro-étapes qui le composent ainsi que son niveau de hiérarchie, indispensable à la gestion des ordres de forçage. Forçage d'un Grafcet Cette fonction est très utile pour gérer les modes de marche d'un automatisme : • • • • mise en situation initiale ou activation de Grafcets, déblocage d'une situation après analyse de défauts, traitement d'un arrêt d'urgence, gel d'un Grafcet partiel après dysfonctionnement et reprise d'une situation précédente permettant un redémarrage de l'installation,... Attention : les étapes IN et OUT des macro-étapes ne sont pas prises en compte. Elles sont systématiquement désactivées lors d'un forçage ou d'un positionnement. La fonction libération du Grafcet permet de quitter son état forcé. Sauvegarde et restitution d'une situation Durant les phases de mise au point d'une application, il peut être intéressant de mémoriser la situation courante d'un Grafcet partiel, afin de la restituer ultérieurement et vérifier ainsi le comportement de l'application vis à vis de cette situation. Contrairement au forçage, il n'y a pas lieu de définir de notion de hiérarchie. ___________________________________________________________________________ 4/4 1 10 _ _ _ 20 _ 11 21 22 _ _ B 2 3 _ _ _ 5 12 23 24 _ _ _ ▲ ▲ ▲ 4 _ 6 G1 G10 G20 _ Par exemple : Supposons les 3 Grafcets G1, G10 et G20, composés respectivement des étapes 1 à 6, 10 à 12 et 20 à 24. La réunion de G1 et G10 constitue un Grafcet partiel, de même que G20 constitue un autre Grafcet partiel. Grafcet global Le Grafcet global, décrivant un système, est composé de tous ses Grafcets partiels. Dans l'exemple ci-dessus, l'ensemble des 3 Grafcets G1, G10 et G20 constitue le Grafcet global. Situation d'un Grafcet On appelle situation d'un Grafcet, la liste de ses étapes actives , à un instant donné. Il existe quatre types de situation pour un Grafcet : • • • • situation initiale : ensemble des étapes actives à l'instant initial, situation courante : ensemble des étapes actives à l'instant considéré, situation vide : situation pour laquelle aucune étape n'est active, situation donnée : situation déterminée pour laquelle seules les étapes désirées sont actives. Forçage d'un Grafcet partiel Cela consiste à modifier la situation d'un Grafcet partiel de manière interne, à partir d'un autre Grafcet partiel. Le forçage d'un Grafcet partiel est soumis à deux règles importantes : 1 2 Si un Grafcet partiel force un autre Grafcet partiel, la réciproque est impossible. A tout instant du fonctionnement, un Grafcet partiel ne peut être forcé que par un seul et unique Grafcet. Cette relation de dépendance entre les Grafcets partiels implique une hiérarchie entre ceux-ci : Un Grafcet partiel ne peut forcer qu'un autre Grafcet partiel dont le niveau de hiérarchie est inférieur. ___________________________________________________________________________ 4/3 Caractéristique "diagnostic" Cette caractéristique inhérente à la structure de l'OFB, fait que celui-ci est exploitable par le logiciel APPLIDIAG par le biais de ses sorties ERROR et STATUS : 1 2 3 Bit ERROR : si ce bit n'est pas inhibé, il est positionné à 1 en cas de défaut. La scrutation permanente des bits d'erreur, par programme ou par le logiciel APPLIDIAG, permet de déterminer les OFBs signalant un défaut. Mot STATUS : ce mot indique la ou les causes du défaut ayant provoqué la mise à 1 du bit ERROR. Il peut être exploité par programme ou par le logiciel APPLIDIAG, afin de signaler par un message le défaut. C'est l'OFB qui, lors de son exécution, positionne les bits du mot STATUS inhérents aux défauts détectés. Bit INHIB : ce bit permet lorsqu'il est à 1, d'inhiber la sortie ERROR. Celle-ci est alors figée dans l'état dans lequel elle se trouve au moment de l'inhibition et ceci jusqu'à la prochaine mise à 0 du bit INHIB. Désactivation d'un Grafcet partiel Désactiver un Grafcet partiel revient en fait à le positionner dans une situation vide. Pour cela, il est obligatoire que le graphe ne soit ni forcé, ni figé. Figeage d'un Grafcet partiel Figer un Grafcet partiel revient en fait à le forcer dans sa situation courante. C'est un ordre de forçage particulier qui nécessite donc une hiérarchie entre les différents Grafcets partiels. La fonction libération d'un Grafcet permet de quitter son état figé. Indication sur l'état d'un Grafcet partiel Il peut être intéressant dans certains cas de disposer de l'état d'un Grafcet partiel. Pour cela, l'OFB MSITN V5.5 dispose d'un paramètre de sortie réservé à cet effet. Indication sur la dernière fonctionnalité effectuée Durant le fonctionnement de l'application, il peut être nécessaire de connaître la dernière opération effectuée sur la situation d'un Grafcet partiel. Pour cela, l'OFB MSITN V5.5 dispose d'un paramètre de sortie réservé à cet effet. ___________________________________________________________________________ 4/5 B 4.3 Présentation des OFBs MSIT et MSITN ______________________________________________________________________________________________________________________ B Les OFBs MSIT et MSITN permettent de réaliser les fonctions décrites précédemment : forçage d'un Grafcet ou sauvegarde d'une situation, figeage d'un Grafcet (V5.5 uniquement). Il dispose pour cela de paramètres d'entrées : initialisation, fonction à réaliser, hiérarchie du Grafcet partiel qui émet l'ordre de forçage et adresse de la situation et de paramè e sorties : erreur, code d'erreur, état du Grafcet (V5.5 uniquement) et dernière fonction effectuée (V5.5 uniquement). Le descripteur du Grafcet (niveau de hiérarchie du Grafcet forcé, étapes et macro-étapes qui le composent) est contenu dans les constantes internes de l'OFB. OFB MSIT V5.0 Entrées Données internes Constantes internes MSIT RESET : bit ERROR : bit FUNCT0 : bit STATUS : word FUNCT1 : bit HIERAR : word ADDRESS : word Sorties INHIB : bit PART : ar_word[13] OFB MSITN V5.5 Entrées Données internes Constantes internes MSITN RESET : bit ERROR : bit FUNCT0 : bit STATUS : word FUNCT1 : bit STATE : bit FUNCT2 : bit LSTFCT : word HIERAR : word ADDRESS : word Sorties INHIB : bit PART : ar_word[13] Note La programmation de l'OFB MSIT ou MSITN s'effectue en langage à contacts ou Littéral, dans le module préliminaire. ___________________________________________________________________________ 4/6 4.4 Description des paramètres ______________________________________________________________________________________________________________________ Paramètres d'entrées Paramètre Type Description ________________________________________________________________________________________________________________________ RESET bit Ce bit permet d'initialiser à 0 le flag "forçage en cours" de l'OFB. Ce bit est à mettre à 1, par exemple, suite à la mise à 1 du bit système SY 21. Si RESET est à 1, tous les autres paramètres de l'OFB sont ignorés. Les paramètres de sorties ERROR et STATUS sont égaux à 0. ________________________________________________________________________________________________________________________ FUNCT0 à bit FUNCT2 Ces bits permettent de choisir la fonction à réaliser : OFB MSIT V5.0 si FUNCT0 = 0 - FUNCT1 = 0; libération du Grafcet, - FUNCT1 = 1; forçage du Grafcet, si FUNCT0 = 1 - FUNCT1 = 0; sauvegarde de situation, - FUNCT1 = 1; positionnement de situation. OFB MSITN V5.5 si FUNCT0 = 0 et FUNCT1 = 0 - FUNCT2 = 0; libération du Grafcet, - FUNCT2 = 1; forçage du Grafcet, si FUNCT0 = 0 et FUNCT1 = 1 - FUNCT2 = 0; sauvegarde de situation, - FUNCT2 = 1; positionnement de situation, si FUNCT0 = 1 et FUNCT1 = 0 - FUNCT2 = 0; désactivation du Grafcet, - FUNCT2 = 1; figeage du Grafcet, si FUNCT0 = 1 et FUNCT1 = 1 - Fonctions inopérantes. FUNCT0 FUNCT1 FUNCT2 forç. libé. fige. 0 0 1 0 0 0 1 0 1 désa. sauv. posit. situ. situ. 1 0 0 0 1 1 0 0 1 ________________________________________________________________________________________________________________________ HIERAR word Ce mot permet de communiquer à l'OFB, le niveau de hiérarchie du Grafcet "forçant" ou "maître". Ce niveau de hiérarchie est compris entre 0 (niveau le plus élevé) et 255 (niveau le plus faible). ___________________________________________________________________________ 4/7 B Paramètres d'entrées Paramètre ___ __________________________________________________________Type _________________________________________Description __________________________________________________________________________________________________________________________________________ B ADDRESS word Ce mot indique à l'OFB, l'adresse à partir de laquelle est mémorisée, soit la situation de forçage, soit la situation sauvegardée. La situation de forçage (FUNCT0 = 0 si V5.0 ou FUNCT1 = 0 si V5.5) est définie dans les mots constants CWi alors qu'une situation sauvegardée (FUNCT0 = 1 si V5.0 ou FUNCT1 = 1 si V5.5) est définie dans les mots internes Wi. La taille mémoire occupée par une situation de forçage ou une situation sauvegardée est de : (9 mots x nbre de modules CHART ou XM) + 1. Paramètres de sorties Paramètre Type Description ________________________________________________________________________________________________________________________ ERROR bit Ce bit de défaut signale si la fonction choisie s'est déroulée correctement : • ERROR = 0; aucune erreur, • ERROR = 1; un ou plusieurs défauts détectés. ________________________________________________________________________________________________________________________ STATUS word Si le bit ERROR est à 1, ce mot indique le ou les défauts détectés (se reporter au sous-chapitre 4.5). ________________________________________________________________________________________________________________________ STATE bit Description de l'état du Grafcet partiel : • STATE = 0; Grafcet partiel libre, • STATE = 1; Grafcet partiel forcé ou figé. ________________________________________________________________________________________________________________________ LSTFCT word Description de la dernière fonction effectuée : • LSTFCT = 0; initialisation de l'OFB, • LSTFCT = 1; libération de Grafcet partiel, • LSTFCT = 2; forçage de Grafcet partiel, • LSTFCT = 3; sauvegarde de situation, • LSTFCT = 4; positionnement de situation, • LSTFCT = 5; figeage de Grafcet partiel, • LSTFCT = 6; désactivation de Grafcet partiel. Données internes Paramètre Type Description ________________________________________________________________________________________________________________________ INHIB bit Ce bit d'inhibition, permet lorsqu'il est positionné à 1, de figer la valeur du paramètre de sortie ERROR et cela jusqu'à ce que INHIB soit à nouveau à l'état 0. Par défaut INHIB = 0. ___________________________________________________________________________ 4/8 Constantes internes Paramètre Type Description ________________________________________________________________________________________________________________________ PART ar_word[13] Ce tableau de 13 mots contient le descripteur du Grafcet : • le premier mot contient des bits de contrôle ainsi que le niveau de hiérarchie du Grafcet, • les huit mots suivants permettent de référencer les 128 étapes configurables, • les quatre derniers mots permettent de référencer les 64 macro-étapes configurables. 4.5 Liste des défauts ________________________________________________________________________________________________________________________ Mot STATUS bit 0 = 1 bit 1 = 1 bit 2 = 1 bit 3 = 1 bit 4 = 1 bit 5 = 1 bit 6 = 1 bit 7 = 1 : : : : : : : : partition non cohérente, situation de forçage non cohérente, hiérarchie non cohérente, fonction rejetée, overrun, exécution avortée, mauvais adressage de la situation, situation sauvegardée non cohérente. ___________________________________________________________________________ 4/9 B 4.6 Utilisation des OFBs MSIT et MSITN ________________________________________________________________________________________________________________________ B La gestion des situations de Grafcets, par l'utilisation des OFBs MSIT et MSITN, peut se concevoir en 6 phases. Deux phases de spécifications et quatre phases de définition de l'OFB : 1 2 3 4 5 6 Partitionnement du Grafcet global en Grafcets partiels. Cette partition doit se faire sur papier et doit être unique. Définition de la hiérarchie entre les différents Grafcets partiels. Cette hiérarchie doit être totale. Configuration de l'OFB MSIT (se reporter au chapitre 6 - Mode configuration de la documentation TXT DM PL7 3 V5F). Celui-ci n'est configurable que si l'application est de niveau V5 et si elle contient du Grafcet (défini en configuration de l'application). Inversement si l'OFB MSIT ou MSITN est configuré, il n'est plus possible de supprimer le Grafcet de la configuration. Il faudra définir autant d'OFB MSIT ou MSITN que de Grafcets partiels à forcer ou à positionner. De même pour optimiser le temps de traitement, il ne faudra pas configurer plus d'étapes et de macro-étapes que ce qui est nécessaire à l'application. Définition des descripteurs des Grafcets partiels (se reporter au chapitre 10 Mode constante de la documentation TXT DM PL7 3 V5F). Cette opération consiste à définir pour chaque Grafcet partiel : l'OFB associé, les étapes et macro-étapes qui le composent et le niveau du hiérarchie. Initialisation des différentes situations de forçage pour les Grafcets partiels concernés par des ordres de forçage (se reporter au chapitre 10 - Mode constante). Cette opération consiste à définir l'adresse de début de la zone CWi dans laquelle sera mémorisée la situation de forçage. Il faut ensuite pour chaque module (CHART, XMi) définir la situation de forçage; c'est-à-dire les étapes actives. Programmation de l'exécution des OFBs MSIT ou MSITN. Cette opération s'effectue dans le traitement préliminaire de l'application. Pour ne pas ordonner un forçage à un Grafcet qui est déjà forcé, ce qui provoquerait une erreur, l'exécution de l'OFB MSIT ou MSITN doit être conditionnée par une opération sur front : par exemple IF FE(B0) THEN EXEC MSITN1(....). ___________________________________________________________________________ 4/10 4.7 Exemple d'utilisation _________________________________________________________________________________________________________________________ 4.7-1 Description de l'équipement Il s'agit d'un équipement qui permet de convoyer les palettes, en provenance de 3 lignes de production, vers un transbordeur de sortie. Cet équipement se compose de : • un transbordeur de ligne, en fin de chaque ligne de production, qui permet le chargement des palette sur la navette, • une navette qui assure le transport des palettes vers le transbordeur de sortie, • un transbordeur de sortie qui permet le déchargement des palettes. Palette Transbordeur de ligne Navette Transbordeur de sortie Cet exemple s'inspire d'un exemple donné dans le document LE GRAFCET ADEPA/AFCET. ___________________________________________________________________________ 4/11 B 4.7-2 Fonctionnement de l'équipement Le cycle de fonctionnement de l'équipement est le suivant : B La présence d'une palette en fin de ligne de production provoque l'appel de la navette en face de cette ligne. La palette est ensuite chargée sur la navette qui transporte celleci vers la ligne de sortie, où elle sera déchargée. Le chargement de la palette sur la navette nécessite la mise en marche simultanée du transbordeur de ligne et du transbordeur de la navette. De même que le déchargement de la palette nécessite le fonctionnement simultané du transbordeur de la palette et du transbordeur de la ligne de sortie. 1 _ 2 _ 3 _ 4 (*Attente d'un appel*) Appel de la navette Transfert de la navette vers la ligne appelante Navette en face de la ligne Chargement de la palette sur la navette Palette chargée _ Retour de la navette vers la ligne de sortie Navette en face de la ligne 5 _ Déchargement de la palette si la ligne de sortie libre Palette déchargée Sécurité • deux chasse-corps, placés de part et d'autre de la navette, permettent un arrêt immédiat de celle-ci en cas de collision avec un obstacle. Deux capteurs de sécurité Cs1 et Cs2 sont associés aux chasse-corps, • deux contacts de fin de course Cf1 et Cf2 sont prévus en bout de voie, • un capteur de présence navette par ligne : Nav1 à Nav3 évite le transbordement de la palette lorsque la navette est absente. Modes de marche L'exploitation de cet équipement nécessite deux modes de marche : • marche normale qui permet le transfert des palettes à la demande des différentes lignes de production, sans intervention de l'opérateur, • marche manuelle destinée à la maintenance. ___________________________________________________________________________ 4/12 4.7-3 Description des capteurs et pré-actionneurs I0,0 I0,1 I0,2 I0,3 I0,4 I0,5 I0,6 I0,7 I0,8 I0,9 I0,10 I0,11 I0,12 I1,1 I1,2 I1,3 I1,4 I1,5 O2,1 O2,2 O2,3 O2,4 O2,5 O2,6 O2,7 O2,8 O2,9 Urge Rear Auto Manu Pal1 Pal2 Pal3 Pals Paln Nav1 Nav2 Nav3 Navs Cs1 Cs2 Cf1 Cf2 Ret Klax VMan Av Ar Tr1 Tr2 Tr3 Trs Trn Arrêt d'urgence Réarment Marche automatique Marche manuelle Présence d'une palette en fin de ligne de production 1 Présence d'une palette en fin de ligne de production 2 Présence d'une palette en fin de ligne de production 3 Présence d'une palette sur la ligne de sortie Présence d'une palette sur la navette Présence de la navette en bout de ligne de production 1 Présence de la navette en bout de ligne de production 2 Présence de la navette en bout de ligne de production 3 Présence de la navette en bout de ligne de sortie Détection d'un obstacle sur la voie Détection d'un obstacle sur la voie Navette en limite de voie Navette en limite de voie Retour manuel de la navette Avertisseur sonore de présence d'une palette en fin de ligne Voyant de marche manuelle Marche avant de la navette Marche arrière de la navette Commande moteur transbordeur de ligne de production 1 Commande moteur transbordeur de ligne de production 2 Commande moteur transbordeur de ligne de production 3 Commande moteur transbordeur de ligne de sortie Commande moteur transbordeur de la navette ___________________________________________________________________________ 4/13 B 4.7-4 Programme Le Grafcet global suivant spécifie le comportement de l'équipement suivant le cahier de charge. Il se décompose en 3 Grafcets partiels : B • le Grafcet de sécurité (GS) qui assure la gestion des éléments de sécurité : arrêt d'urgence (Urge), réarmement (Réar), capteurs de sécurité et de fin de course (Cs1, Cs2, Cf1, Cf2). Lorsque l'étape 1 est active, les Grafcets de conduite (GC) et de production (GP) sont respectivement forcés aux étapes 10 et 100, • le Grafcet de conduite (GC) qui assure le gestion des modes de marche et d'arrêt. L'étape initiale 10, qui peut également être activée par forçage, correspond à la marche de sécurité pour laquelle les étapes 1 et 100 sont également actives. Si la situation du Grafcet de sécurité le permet (étape 2 active), l'opérateur peut choisir soit un fonctionnement manuel, soit une initialisation automatique de la partie opérative : émission d'un signal sonore pendant 5 s (étape 12), retour de la navette en face du transbordeur de sortie (étape 13) et si une palette est présente sur la navette, déchargement de celle-ci (étape 15). L'activation de l'étape 16 permet la marche de production normale, en permettant l'activation de l'étape 101, • le Grafcet de production (GP) qui permet le fonctionnement automatique de l'équipement : transbordeurs et navette. Si au moins une palette est présente sur un transbordeur de ligne de production (Pal1 à Pal3), l'étape 101 est activée. Si plusieurs palettes sont présentes en fin de ligne de production, elle seront traitées par ordre croissant (d'abord transbordeur de ligne 1, puis transbordeur de ligne 2, etc.). Le déplacement de la navette (étape 110, 112 ou 114) s'effectue jusqu'à ce que celleci soit en face de la ligne appelante. Les transbordeurs de ligne et de la navette sont alors activés jusqu'à la détection de la palette sur la navette (Paln). Les étapes 102, 103 et 104 constituent la séquence de retour et de déchargement de la navette (identique aux étapes 13, 14 et 15 du Grafcet de conduite). La détection de la palette sur le transbordeur de sortie provoque le retour à l'étape 100 donc la possibilité de traiter un nouvel appel. ___________________________________________________________________________ 4/14 1 ▲ F/GC: {10} F/GP: {100} - Rear.Not Urge.Not Cs1.Not Cs2.Not Cf1.Not Cf2 2 Grafcet de Sécurité (GS) - Urge + Cs1 + Cs2 + Cf1 + Cf2 10 - Auto.Ret - Manu 11 VMan F/GP : {100} - Auto.Ret 12 Klax - t=5s 13 ▲ - Navs.Not Paln Ar - Navs.Paln 14 - Not Pals 15 Trs Trn - Pals 16 - Manu Grafcet de Conduite (GC) Note F/GC : {10} signifie forçage du Grafcet GC à la situation : {10}, F/GP : {100} signifie forçage du Grafcet GP à la situation : {100}. ___________________________________________________________________________ 4/15 B 100 - (Pal1 + Pal2 + Pal3).X16 B 101 - Pal1 110 - Pal2.Not Pal1 Av 112 - Nav1 ▲ 111 Tr1 114 - Nav2 Trn - Paln 102 Av 113 Tr2 - Paln - Pal3.Not Pal1.Not Pal2 Av - Nav3 Trn 115 Tr3 Trn - Paln Ar - Navs 103 - Not Pals 104 Trs Trn Grafcet de Production (GP) - Pals ___________________________________________________________________________ 4/16 4.7-5 Saisie du programme Saisie du Grafcet ▼ 2 ▼ 16 1 10 - 2 - ▼ 13 - ▼ 104 ▼ 103 16 100 104 - - ▼ 10 11 - ▼ 1 ▼ 15 12 - 13 - - - - 114 - 113 - ▼ 16 - ▼ 100 112 111 - 14 101 110 - - 115 - 102 - 15 103 ▼ 16 ▼ 104 Saisie des réceptivités associées aux transitions X1 -> X2 !I0,1.NOT I0,0.NOT I1,1.NOT I1,2.NOT I1,3.NOT I1,4 X2 -> X1 !I0,0 + I1,1 + I1,2 + I1,3 + I1,4 X10 -> X11 !I0,3 X10 -> X12 !I0,2.I1,5 X11 -> X12 !I0,2.I1,5 X12 -> X13 !X12,V = 50 X13 -> X14 !I0,12.I0,8 X13 -> X16 !I0,12.NOT I0,8 ___________________________________________________________________________ 4/17 B X14 -> X15 !NOT I0,7 X15 -> X16 B !I0,7 X16 -> X10 !I0,3 X100 -> X101 !(I0,4 + I0,5 + I0,6).X16 X101 -> X110 !I0,4 X101 -> X112 !I0,5.NOT I0,4 X101 -> X114 !I0,6.NOT I0,4.NOT I0,5 X110 -> X111 !I0,9 X112 -> X113 !I0,10 X114 -> X115 !I0,11 X111 -> X102 !I0,8 X113 -> X102 !I0,8 X115 -> X102 !I0,8 X102 -> X103 !I0,12 X103 -> X104 !NOT I0,7 X104 -> X100 !I0,7 ___________________________________________________________________________ 4/18 Saisie des actions dans la Postérieur < ! < ! < ! < ! < ! < ! ! ! Marche manuelle X11 -> O2,2 Avertisseur sonore X12 -> O2,1 Retour navette X13 + X102 -> O2,4 Dechargement palette X15 + X104 -> O2,8 -> O2,9 Deplacement navette X110 + X112 + X114 -> O2,3 Chargement palette X111 -> O2,5 -> O2,9 X113 -> O2,6 -> O2,9 X115 -> O2,7 -> O2,9 B ________________________________________________________________________ 4.7-6 Utilisation de l'OFB MSIT ou MSITN Les forçages à réaliser sont les suivants : ▼ F/GP : {100} ▼ F/GP : {100} • GP ▼ F/GC : {10} ▼ ▼ • GC ▼ GS Le Grafcet de sécurité aura donc le niveau de hiérarchie le plus élevé et le Grafcet de production le niveau le plus faible. Par exemple : • 0 (niveau le plus élevé) pour le Grafcet de sécurité, • 1 pour le Grafcet de conduite, • 2 pour le Grafcet de production. Pour effectuer ces forçage, il est nécessaire d'utiliser 2 OFBs : • MSITN0 qui permet de forcer le Grafcet de conduite (GC) à la situation : {10}. Cet OFB est exécuté lorsque l'étape 1 de GS est active. La situation de forçage est mémorisée à l'adresse CW10 et occupe 10 mots constants (un seul module : CHART), • MSITN1 qui permet de forcer le Grafcet de production (GP) à la situation : {100}. Cet OFB est exécuté lorsque les étapes 1 ou 11 sont actives. La situation de forçage est mémorisée à l'adresse CW50 et occupe 10 mots constants (un seul module : CHART). Remarque GS n'étant pas forcé, il n'est pas nécessaire de lui associer un OFB MSITNi, contrairement à GC et GP. ___________________________________________________________________________ 4/19 Paramétrage des OFBs MSITN0 B B0 B0 B0 X1 10 10 RESET ERROR FUNCT0 STATUS FUNCT1 STATE FUNCT2 LSTFCT HIERAR ADDRESS MSITN1 B10 W10 B0 B0 B0 X1 10 50 GS => F/GC : {10} RESET ERROR FUNCT0 STATUS FUNCT1 STATE FUNCT2 LSTFCT HIERAR ADDRESS B100 W100 GS => F/GP : {100} MSITN1 1 2 Niveau de hiérarchie de GS. Niveau de hiérarchie de GC. B0 B0 B0 X11 21 50 RESET ERROR FUNCT0 STATUS FUNCT1 STATE FUNCT2 LSTFCT HIERAR ADDRESS B100 W100 GC => F/GP : {100} Notes • Les paramètres d'entrées et de sorties des OFBs MSITN0 et MSITN1 ne sont pas définis par câblage, mais par programme saisi dans le préliminaire. • Le paramètre HIERAR permet de matérialiser le lien entre le Grafcet forçant et le Grafcet forcé. • L'utilisation des fronts montant et descendant pour conditionner l'exécution de l'OFB MSITN permet de générer un ordre unique de forçage ou de libération de GP et GC. Ceci permet aux paramètres de sortie ERROR et STATUS de détecter un dysfonctionnement de l'automatisme. L'utilisation de ce type de conditionnement pour l'exécution de l'OFB n'est pas obligatoire et l'automatisme aurait le même fonctionnement avec des EXEC non conditionnés (des tests de pertinence des fonctions sont effectués par l'OFB pour permettre un forçage ou une libération unique par Grafcet). Ceci étant, les paramètres de sortie ERROR et STATUS perdent de leur intérêt, car il devient impossible de distinguer une erreur liée à un dysfonctionnement de l'automatisme. Saisie du programme dans le préliminaire ! ! < ! RESET B0 X1 -> B1; X11 -> B2 Forcage de GC et GP depuis GS IF RE(B1) + FE(B1) THEN EXEC MSITN0(B0;B0;B0;X1;0;10 => B10;W10;;); EXEC MSITN1(B0;B0;B0;X1;0;50 => B100;W100;;) < Forcage de GP depuis GC ! IF RE(B2) + FE(B2) THEN EXEC MSITN1(B0;B0;B0;X11;1;50 => B100;W100;;) ___________________________________________________________________________ 4/20 Définition des descripteurs des Grafcets partiels, associés aux OFBs Elle s'effectue en mode CONSTANTE, à partir de l'écran CONFIGURATION DES BLOCS FONCTIONS OPTIONNELS ou à partir du mode PROGRAMME, par Zoom sur les lignes contenant l'OFB MSIT ou MSITN (se reporter aux modes opératoires PL7-3). B X0 0 1 .. 2 3 .. 4 .. 7 .. 8 .. 9 .. XM0 0 // 1 // 2 // 3 // 4 // 5 // 6 // 7 // 8 // 9 // X1 ** ** ** ** ** ** ** .. .. .. XM1 // // // // // // // // // // X2 .. .. .. .. .. .. .. .. .. .. XM2 // // // // // // // // // // X3 .. .. .. .. .. .. .. .. .. .. XM3 // // // // // // // // // // X4 .. .. .. .. .. .. .. .. .. .. XM4 // // // // // // // // // // X5 .. .. .. .. .. .. .. .. .. .. XM5 // // // // // // // // // // X6 .. .. .. .. .. .. .. .. .. .. XM6 // // // // X7 .. .. .. X8 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. MSITN0 -> GC X9 .. .. .. .. .. .. .. .. .. .. HIERARCHIE : 1 1 .. .. .. .. .. .. .. .. .. X10 5 .. X11 6 .. X12 .. .. .. .. .. .. .. .. 0 1 .. 2 X0 3 .. 4 .. 5 .. 6 .. 7 .. 8 .. 9 .. XM0 0 // 1 // 2 // 3 // 4 // 5 // 6 // 7 // 8 // 9 // .. .. .. XM1 // // // // // // // // // // X1 X2 .. .. .. .. .. .. .. .. .. .. XM2 // // // // // // // // // // X3 .. .. .. .. .. .. .. .. .. .. XM3 // // // // // // // // // // X4 .. .. .. .. .. .. .. .. .. .. XM4 // // // // // // // // // // X5 .. .. .. .. .. .. .. .. .. .. XM5 // // // // // // // // // // X6 .. .. .. .. .. .. .. .. .. .. XM6 // // // // X7 .. .. .. .. .. .. .. .. .. .. X8 .. .. .. .. .. .. .. .. .. .. MSITN1 -> GP X9 .. .. .. .. .. .. .. .. .. .. HIERARCHIE : 2 X10 ** ** ** ** ** .. .. .. .. .. 1 1 Pour accéder à la saisie du niveau de hiérarchie, utiliser la touche F9 - "HIERA." de l'écran PARTITION. X12 .. .. .. .. .. .. .. .. ___________________________________________________________________________ X11 ** ** ** ** ** ** .. .. .. .. 4/21 Définition des descripteurs des Grafcets partiels, associés aux OFBs Elle s'effectue en mode CONSTANTE, à partir de l'écran CONFIGURATION DES BLOCS FONCTIONS OPTIONNELS ou à partir du mode PROGRAMME, par Zoom sur les lignes contenant l'OFB MSIT ou MSITN (se reporter aux modes opératoires PL7-3). B 0 .. 1 X0 X1 1 0 X2 .. X3 2 3 .. 4 .. 5 .. 6 .. 7 .. 8 .. 9 .. XM0 0 // 1 // 2 // 3 // 4 // 5 // 6 // 7 // 8 // 9 // 0 0 0 0 0 .. .. .. XM1 // // // // // // // // // // .. .. .. .. .. .. .. .. .. XM2 // // // // // // // // // // .. .. .. .. .. .. .. .. .. .. XM3 // // // // // // // // // // X4 .. .. .. .. .. .. .. .. .. .. XM4 // // // // // // // // // // X5 .. .. .. .. .. .. .. .. .. .. XM5 // // // // // // // // // // X6 .. .. .. .. .. .. .. .. .. .. XM6 // // // // X7 .. .. .. .. .. .. .. .. .. .. X8 .. .. .. .. .. .. .. .. .. .. MSITN0 -> GC X9 .. .. .. .. .. .. .. .. .. .. CW10 à CW19 .. .. .. .. .. .. .. X10 X11 1 .. .. X12 .. .. .. .. .. .. .. .. 0 .. 1 2 X0 3 .. 4 .. 5 .. 6 .. 7 .. 8 .. 9 .. XM0 0 // 1 // 2 // 3 // 4 // 5 // 6 // 7 // 8 // 9 // .. .. .. XM1 // // // // // // // // // // X1 X2 .. .. .. .. .. .. .. .. .. .. XM2 // // // // // // // // // // X3 .. .. .. .. .. .. .. .. .. .. XM3 // // // // // // // // // // X4 .. .. .. .. .. .. .. .. .. .. XM4 // // // // // // // // // // X5 .. .. .. .. .. .. .. .. .. .. XM5 // // // // // // // // // // X6 .. .. .. .. .. .. .. .. .. .. XM6 // // // // X7 .. .. .. .. .. .. .. .. .. .. X8 .. .. .. .. .. .. .. .. .. .. MSITN1 -> GP X9 .. .. .. .. .. .. .. .. .. .. CW50 à CW59 X10 1 0 0 0 0 .. .. .. .. .. X11 0 0 0 0 0 0 .. .. .. .. 1 1 Ces 10 mots constants mémorisent la situation de forçage. X12 .. .. .. .. .. .. .. .. ___________________________________________________________________________ 4/22 Dialogue Langage à contacts Intercalaire C Chapitre 1 5 Page Présentation du langage à contacts PL7-3 Sommaire 1/1 1.1 Principe 1.2 Le langage à contact : traitement monotâche et multitâche C 2 Les éléments du langage à contacts PL7-3 Sommaire 2/1 2.1 Les éléments graphiques de base 2.2 Les objets bits adressables 2.3 Les objets mots adressables 2.4 Les blocs fonctions standards 2.5 Les blocs Comparaison 2.6 Les blocs opérations 2.7 Les blocs fonctions optionnels 3 Réseau de contacts Sommaire 3/1 3.1 Structure d’un réseau de contacts 3.2 Règles d’exécution d’un réseau de contacts 4 Blocs fonctions d’automatisme et de commande Sommaire 4/1 4.1 Généralités 4.2 Bloc fonction : Temporisateur 4.3 Bloc fonction : Monostable 4.4 Bloc fonction : Compteur 4.5 Bloc fonction : Registre 4.6 Bloc fonction : Contrôle C/1 Langage à contacts Chapitre 5 Page Blocs comparaison Sommaire 5/1 5.1 Bloc comparaison : comparateur vertical C 5.2 Bloc comparaison : comparateur horizontal 6 Blocs opérations Sommaire 6/1 6.1 Présentation 6.2 Utilisation 7 Bloc fonction texte Sommaire 7/1 7.1 Présentation 7.2 Description 7.3 Utilisation des entrées de commande 7.4 Fonctionnement 7.5 Télégrammes (bloc texte TLG) 8 Blocs fonctions optionnels Sommaire 8.1 Présentation 8.2 Description 8.3 Utilisation des entrées/sorties 8.4 Fonctionnement C/2 8/1 Présentation du langage à contacts PL7-3 1 Présentation du langage à contacts Chapitre 1 PL7-3 Sous-chapitre Page 1.1 Principe 1/2 1.2 Le langage à contacts : traitement monotâche et multitâche 1/3 1.2-1 Traitement monotâche 1.2-2 Traitement multitâche 1/3 1/4 Ce chapitre se termine à la page 1/4 1/1 Sans titre-3 1 15/01/96, 11:54 C 1.1 Principe Un programme écrit en langage à contacts se compose d’une suite de réseaux exécutés séquentiellement par l’automate. Dessiné entre deux barres de potentiel, un réseau est un ensemble d’éléments graphiques représentant : • • • • C les entrées/sorties de l’automate (boutons-poussoirs, détecteurs, relais, voyants...), des fonctions d’automatismes (temporisateurs, compteurs...), des opérations arithmétiques et logiques et des opérations de transfert, les variables internes de l’automate. Ces éléments graphiques sont reliés entre eux par des connexions horizontales et verticales et occupent au maximum un écran du terminal. Chaque réseau ainsi constitué comporte au plus 7 lignes et 11 colonnes et s’organise en 2 zones : Formulaire programmation schéma à contacts L IT MAIN FAST SR MAST PRE AUX POST ASY CHART XM A T T ENT E DU SECHAGE I1,0 B12 I0,7 O17,5 T4,D B17 ↓ W4<50 I3,F O15,5 B27 T0 I1,4 TB :100ms I2,0 T.P 200 B25 W10,4 SY1 W15 * W18 + 3 → W2 O15,7 R SR2 C • la zone test, dans laquelle figurent les conditions nécessaires à une action, • la zone action, qui sanctionne le résultat consécutif à un enchaînement de test. 1/2 Sans titre-3 2 15/01/96, 11:54 1 Présentation du langage à contacts PL7-3 1.2 Le langage à contacts : traitement monotâche et multitâche 1.2-1 Traitement monotâche La tâche maître est exécutée périodiquement de façon cyclique. Elle comprend un programme principal appelant, si nécessaire des sous programmes qui lui sont affectés. Tâche Maître Programme principal Sous-programmes SR0 SR0 C ↑ C SR3 C SR0 C SR3 EOP 1/3 Sans titre-3 3 15/01/96, 11:54 1.2-2 Traitement multitâche Le programme se compose de : • • • • une tâche interruption, une tâche périodique rapide, une tâche périodique maître, quatre tâches périodiques auxiliaires. Les différentes tâches se composent d’un programme principal exécuté périodiquement de façon cyclique, associé ou non à des sous programmes locaux. Les modules principaux et les sous programmes sont écrits en langage à contacts. Il est nécessaire dans une telle structure de programmer la tâche maître. C Tâches Périodiques Tâche Interruption Tâche Rapide Tâche Maître Tâches Auxiliaires Sous-programmes Sous-programmes Sous-programmes Sous-programmes Programme Principal Programme Principal Programme Principal Programme Principal 1/4 Sans titre-3 4 15/01/96, 11:54 Les éléments du langage à contacts PL7-3 2 Les éléments du langage à contacts Chapitre 2 PL7-3 Sous-chapitre Page 2.1 Les éléments graphiques de base 2/2 2.2 Les objets bits adressables 2/4 2.3 Les objets mots adressables 2/4 2.4 Les blocs fonctions standards 2/4 2.4-1 Blocs fonctions d’automatisme 2.4-2 Bloc fonction de communication 2.4.3 Bloc fonction de commande 2/5 2/6 2/6 2.5 Les blocs comparaison 2/6 2.6 Les blocs opérations 2/7 2.6-1 2.6.2 2.6-3 2.6-4 2.6-5 2.6-6 2.6-7 2.6-8 2.6-9 Transfert Décalage Transcodage Opérations logiques Opérations arithmétiques Opérations sur chaînes de bits Opérations sur tableaux de mots Echanges explicites Gestion des interruptions 2.7 Les blocs fonctions optionnels (OFBs) 2.7-1 Exécution d’un OFB Ce chapitre se termine à la page 2/7 2/8 2/8 2/9 2/9 2/10 2/11 2/12 2/13 2/14 2/14 2/14 2/1 C 2.1 Les éléments graphiques de base Désignation Eléments de test Graphe Contact passant quand l’objet bit qui le pilote est à l’état 1. • Contact à ouverture Contact passant quand l’objet bit qui le pilote est à l’état 0. • Contact détection de changement d’état C ↑ ↓ Eléments de liaison Eléments d’action 2/2 Fonctions • Contact à fermeture Front montant : détection du passage de 0 à 1 de l’objet bit qui le pilote Front descendant : détection du passage de 1 à 0 de l’objet bit qui le pilote. • Connexion horizontale Permet de relier en série les éléments graphiques de test et d’action entre les deux barres de potentiel. • Connexion verticale Permet de relier en parallèle les éléments graphiques de test et d'action. • Bobine directe L’objet bit associé prend la valeur du résultat de la zone test. • Bobine inverse L’objet bit associé prend la valeur inverse du résultat de la zone test. • Bobine d’enclenchement S L’objet bit associé est mis à 1 lorsque le résultat de la zone test est à 1. • Bobine de déclenchement R L’objet bit associé est mis à 0 lorsque le résultat de la zone test est à 1. Les éléments du langage à contacts PL7-3 Désignation Eléments d’action (suite) Graphe • Bobine saut à un autre réseau (JUMP) J 2 Fonctions Permet un branchement à un réseau étiqueté, amont ou aval. Les sauts ne sont effectifs qu’au sein d'une même entité de programmation (programme principal, sous-programme, traitement préliminaire...) L’exécution d’un saut provoque : • l’arrêt de la scrutation du réseau en cours, • l’exécution du réseau étiqueté demandé, • la non scrutation de la partie du programme située entre l’action de saut et le réseau désigné. • Bobine C appel à un sous-programme (CALL). Permet un branchement en début de sous-programme local. L'éxécution d'un appel à un sous-programme provoque: • l’arrêt de la scrutation du réseau en cours, • l’exécution du sous-programme, • la reprise de la scrutation du réseau interrompu. Un sous-programme peut en appeler un autre. Le nombre d’appels en cascade est limité à 8. • Bobine dièse Proposée en langage Grafcet, utilisée lors de la programmation des réceptivités associées aux transitions, provoque le passage à l’étape suivante. # Nota : l’état des bits associés aux bobines directes, inverses, d’enclenchement et de déclenchement est sauvegardé suite à une coupure secteur, sur "reprise à chaud" ou "immédiate". 2/3 C 2.2 Les objets bits adressables Le langage à contacts permet de manipuler les objets bits : • contenus dans la mémoire bits : - bits d’entrées/sorties, - bits associés aux étapes Grafcet • bits internes, • bits système. • extraits de l’espace mémoire de données : - bits d’état des modules • bits extraits de mots communs, - bits d’extraits de mots • bits associés aux blocs fonctions. • extraits de l’espace mémoire "constantes" : - bits extraits de mots constants. C Ces bits peuvent, selon le cas, être lus ou écrits par l’utilisateur. L’adressage et la liste des objets bits sont définis dans "Généralités" intercalaire A, chapitre 2. 2.3 Les objets mots adressables Le langage à contacts accède aux objets mots lors de l’utilisation de blocs fonctions d’automatismes ou de blocs opérations. Ces mots, selon leur nature, peuvent être lus et/ou écrits. L’adressage et la liste des objets mots sont définis dans "Généralités" intercalaire A, chapitre 2. 2.4 Les blocs fonctions standards Chacun des blocs fonctions standards représentés ci-après utilise : • des entrées et des sorties permettant de le relier à des éléments graphiques dans un réseau, • des paramètres de configuration, accessibles ou non par le programme utilisateur, • des paramètres courants (objets bits de sortie, mot de valeur courante, mot d’entrée), lus ou écrits par l’utilisateur ( voir "Généralités" intercalaire A, chapitre 2). 2/4 Les éléments du langage à contacts PL7-3 2 2.4-1 Blocs fonctions d’automatisme Désignation Nombre Temporisateur Configurable 0≤i≤127 Graphe E Ti C TB:1mn Fonctions D R Ti,R T,P:9999 MODIF:Y Monostable Configurable 0≤i≤31 S Mi Ti,P Ti,V R TB:1mn Configurable 0≤i≤255 R Ci P E D C,P:9999 U MODIF:Y S Mi,R Mi,P Mi,V M,P:9999 MODIF:Y Compteur/ décompteur E C Ti,D R P U D Ci,E F Ci,D D Ci,F Ci,P Ci,V Registre LIFO/FIFO Configurable 0≤i≤127 R I O Ri LIFO LEN:16 F E R I O Ri,F Ri,E Ri,I Ri,O L entrée "armement" entrée "contrôle" bit de sortie temporisation écoulée bit de sortie temporisation en cours mot valeur de présélection mot valeur courante entrée sur front "départ" bit de sortie monostable en cours mot valeur de présélection mot valeur courante entrée "remise à zéro" entrée "présélection" entrée sur "front comptage" entrée sur "front décomptage" bit de sortie "débordement décomptage" bit de sortie "présélection atteinte" bit de sortie "débordement comptage" mot valeur de présélection mot valeur courante entrée "remise à zéro" entrée sur front "stockage" entrée sur "front déstockage" bit de sortie "registre plein" bit de sortie "registre vide" mot d’entrée du registre mot de sortie du registre nombre de mots du registre (999 max) 2/5 C 2.4-2 Bloc fonction de communication Désignation Nombre Bloc fonction texte Configurable 0≤i≤63 Graphe R TXTi Fonctions D TER TA:0000H S entrée validation arrêt échange S E T,C:0 T,V:0 O W10 12 T,L:0 I T,S:? C R Bloc texte entrée sur front lancement échange O entrée sur état "émission" I entrée sur état "réception" TXTi,D bit de sortie transfert terminé et reçu TXTi,E bit de sortie erreur de transfert TXTi,C mot de définition de l’échange TXTi,L mot définissant la longueur du message TXTi,S mot status compte-rendu de l’échange 2.4-3 Bloc fonction de commande Désignation Nombre Bloc de contrôle Configurable 1≤i≤7 Graphe E CTRLi Fonctions R Bloc contrôle 2.5 R i 1 2 4 5 6 7 entrée activation de la tâche (sauf tâche maître) sortie tâche activée définit la tâche à activer tâche interruption tâche rapide tâche auxiliaire 0 tâche auxiliaire 1 tâche auxiliaire 2 tâche auxiliaire 3 Les blocs comparaison Désignation Nombre Bloc comparaison horizontal Non configurable (illimité) 2/6 E Graphe OP1 OP OP2 Fonctions OP : opérateur <, <=, =, >, >=, <> OP1 : objet mot pouvant être lu OP2 : objet mot pouvant être lu ou valeur immédiate Les éléments du langage à contacts PL7-3 Désignation Nombre Bloc comparaison vertical non configurable (illimité) Graphe Fonctions > COMPARE W0 > = W25 2 < # OP1 strictement supérieur à OP2 = OP1 égal à OP2 < OP1 strictement inférieur à OP2 # OP1 différent de OP2 OP1 : mot simple longueur pouvant être lu : Wi-CWi OP2 : mot simple longueur pouvant être lu : Wi-CWi ou valeur immédiate simple longueur. C 2.6 Les blocs opérations Les blocs opérations font appel au langage littéral, résidant dans le terminal. Ces blocs peuvent contenir : • une expression de forme simple ; ex : OP1 + OP2 → OP3, • une expression de forme complexe ; ex : (OP1 + OP2) OP3 - OP4 → OP5. * Ce sous chapitre a pour but de rappeler les différentes possibilités d’écriture des expressions simples dans les blocs opérations. Ces blocs peuvent être utilisés en quantité non limitée, celle-ci dépend de la taille de la mémoire "utilisateur". Les opérations arithmétiques et de transfert peuvent être indifféremment effectuées sur des mots simple ou double longueur. 2.6-1 Transfert →: OP1 → OP2 symbolise le transfert de OP1 dans OP2 OP1 : objet mot pouvant être lu ou valeur immédiate OP2 : objet mot pouvant être écrit 2/7 2.6-2 Décalage Décalage logique vers la gauche SHLi(OP1) → OP2 Décalage logique vers la droite SHRi(OP1) → OP2 Décalage circulaire vers la gauche SLCi(OP1) → OP2 C i : compris entre 1 et 15 OP1 : objet mot pouvant être lu OP2 : objet mot pouvant être écrit Décalage circulaire vers la droite SRCi(OP1) → OP2 2.6-3 Transcodage BCD → Binaire DTB(OP1) → OP2 Binaire → BCD BTD(OP1) → OP2 OP1 : objet mot pouvant être lu OP2 : objet mot pouvant être écrit Ces mots sont obligatoirement simple longueur Si OP1 est supérieur à 9999, seules les 4 décades de poids faible sont transférées dans OP2 ASCII → Binaire ATB(OP1) → OP2 OP1 : tableau de 3 mots ou de 6 mots OP2 : mot simple ou double longueur Binaire → ASCII BTA(OP1) → OP2 OP1 : mot simple ou double longueur OP2 : tableau de 3 mots ou de 6 mots Gray → Binaire GTB(OP1) → OP2 2/8 OP1 : objet mot pouvant être lu OP2 : objet mot pouvant être écrit Les éléments du langage à contacts PL7-3 2 2.6-4 Opérations logiques Ces opérations ne sont possibles que sur des mots simple longueur. ET OP1 AND OP2 → OP3 OP1 : objet mot pouvant être lu ou valeur immédiate OU inclusif OP1 OR OP2 → OP3 OU exclusif OP2 : objet mot pouvant être lu ou valeur immédiate OP3 : objet mot pouvant être écrit (mot résultat des opérations logiques) C OP1 XOR OP2 → OP3 Complément logique CPL (OP1) → OP2 OP1 : objet mot pouvant être lu OP2 : objet mot pouvant être écrit 2.6-5 Opérations arithmétiques Incrémentation INC OP1 Décrémentation OP1 : objet mot pouvant être écrit DEC OP1 Addition OP1 + OP2 → OP3 OP1 : objet mot pouvant être lu ou valeur immédiate Soustraction OP1 - OP2 → OP3 Multiplication OP2 : objet mot pouvant être lu ou valeur immédiate OP3 : objet mot pouvant être écrit (résultat de l’opération) OP1 * OP2 → OP3 2/9 Division (quotient) OP1 / OP2 → OP3 OP1 : objet mot pouvant être lu ou valeur immédiate OP2 : objet mot pouvant être lu ou valeur immédiate (OP2 doit être différent de zéro) OP3 : objet mot pouvant être écrit (quotient de la division) Division (reste) OP1 REM OP2 → OP3 C OP1 : objet mot pouvant être lu ou valeur immédiate OP2 : objet mot pouvant être lu ou valeur immédiate (OP2 doit être différent de zéro) OP3 : objet mot pouvant être écrit (reste de la division) Racine carrée SQRT(OP1) → OP2 OP1 : objet mot pouvant être lu et dont la valeur algébrique est positive OP2 : objet mot pouvant être écrit 2.6-6 Opérations sur chaînes de bits Transfert chaîne de bits → chaîne de bits Bit i[n] → Bit j[n] Transfert chaîne de bits → mot Bit i[n] → OP2 Bit i, Bit j : les objets bits manipulés peuvent être des bits internes, des bits extraits de mots, des bits d’entrées/sorties n : constante entière positive, dépend de la configuration et des objets manipulés. Définit la longueur de la chaîne de bits OP1 : objet mot pouvant être lu ou valeur immédiate Transfert de mots → chaîne de bits OP1 → Bit j[n] 2/10 OP2 : objet mot pouvant être écrit 2 Les éléments du langage à contacts PL7-3 2.6-7 Opérations sur tableaux de mots Un tableau de mots, ou chaîne de mots, est une suite continue de mots de même type. Initialisation de tableau de mots OP1 → OP4[n] OP1 : objet mot ou valeur immédiate simple ou double longueur OP2, : objet mot simple ou double longueur OP3 pouvant être écrit Transfert d'un tableau dans un autre OP2[n] → OP4[n] OP4 : objet mot simple ou double longueur pouvant être écrit C Opérations entre tableaux OP2[n] OP OP3[n] → OP4[n] n : constante entière positive dépend de la configuration et des objets manipulés. Définit la longueur du tableau de mots Opérations sur tous les mots d'un tableau OP1 OP OP2[n] → OP4[n] OP : +, -, *, /, REM, AND, OR, XOR Sommation des mots d'un tableaux OP2[n] + → OP4 Comparaison de deux tableaux OP1 OP2 OP3 OP4 n même définition que précédement EQUAL(OP2[n];OP3[n]) → OP4 Recherche d’un mot dans un tableau SEARCH(OP2[n];OP3) → OP4 Transfert d’un tableau indexé dans un autre OP2(Wi)[n] → OP4(Wj)[n] Wi, Wj : mots indexés 2/11 2.6-8 Echanges explicites Les opérations suivantes permettent l’échange entre : • une chaîne de bits (internes ou entrées/sorties) et un module. La longueur de la chaîne de bits est implicite (16 bits), il suffit de déclarer le premier bit la composant, • les 8 registres d’un coupleur intelligent et un tableau de 8 mots internes. Ce tableau est spécifié par le premier des mots le composant. Ces échanges sont immédiats, par opposition aux échanges implicites effectués par le système en début et en fin de cycle. C Transfert immédiat d’une chaîne de bits → module de sortie WRITEBIT(1er bit;Ixy) Ixy : adresse du module de sortie Ixy : adresse du module d’entrée Ixy : adresse du coupleur Ixy : adresse du coupleur Transfert immédiat des bits d’un module d’entrée → chaîne de bits READBIT(Ixy;1er bit) Transfert immédiat d’un tableau de 8 mots → 8 registres d’un coupleur WRITEREG(1er mot;Ixy) Transfert immédiat des 8 registres d’un coupleur → tableau de 8 mots READREG(Ixy;1er mot) 2/12 Les éléments du langage à contacts PL7-3 2 2.6-9 Gestion des interruptions Les opérations suivantes permettent de gérer les bits d’interruption d’un module intelligent (TSX DTM 100 par exemple) : Masquage du bit interruption MASKINT(Ixy) Démasquage du bit interruption Ixy : adresse du coupleur DEMASKINT(Ixy) Lecture du bit interruption READINT(Ixy,Bn) C Bn = 0 : IT absente Bn = 1 : IT présente Acquittement du bit interruption ACKINT(Ixy) 2/13 2.7 Les blocs fonctions optionnels (OFBs) Pour qu’un OFB soit utilisé dans un programme application, il faut au préalable que son type soit chargé en mémoire et que le nombre d’OFBs à utiliser soit défini en configuration. Pour être exécuté dans le programme application, un OFB fait appel à un bloc opération, donc au langage littéral résidant dans le terminal (voir blocs opérations). Le nombre de caractères contenus dans un bloc opération est limité à 512. C 2.7-1 Exécution d’un OFB EXEC OFBi(Ent1;Ent2;..;Entm → Sort1;Sort2;..;Sortn) OFBi Ent1 à Entm Sort1 à Sortn => ; 2/14 : : : : : type et numéro de l’OFB paramètres d’entrées paramètres de sorties séparateur entre les paramètres d’entrées et de sorties séparateur de paramètres Réseau de contacts Réseau de contacts Chapitre 3 Sous-chapitre 3.1 Structure d’un réseau de contacts 3.1-1 3.1-2 3.1-3 3.1-4 3.1-5 Généralités Etiquette Commentaire Réseau de contacts Réseau de contacts avec blocs fonctions et opérations 3.2 Règles d’exécution d’un réseau de contacts 3.2-1 3.2-2 3.2-3 3.2-4 3.2-5 3.2-6 Cycle d’une tâche périodique Principe d’exécution d’un réseau Saut amont ou aval à un autre réseau (JUMP) Appel à un sous programme (CALL) Exécution d’un réseau comportant des blocs fonctions Scrutation d’un réseau comportant des blocs opérations Ce chapitre se termine à la page 3 Page 3/2 3/2 3/3 3/4 3/5 3/7 3/9 3/9 3/9 3/10 3/11 3/11 3/12 3/12 3/1 C 3.1 Structure d’un réseau de contacts 3.1-1 Généralités Un réseau s’inscrit entre deux barres de potentiel et est composé d’un ensemble d’éléments graphiques reliés entre eux par des liaisons horizontales ou verticales. Un réseau est limité à la dimension d’un écran du terminal, soit 7 lignes et 11 colonnes maximum réparties en deux zones : la zone test et la zone action. Les éléments graphiques énumérés précédemment peuvent s’implanter soit dans la zone action, soit dans la zone test sur l’ensemble des lignes et colonnes d’un réseau. 1 C 2 3 4 5 6 7 8 9 10 11 lignes 1 2 3 Barres de potentiel 4 5 6 7 zone test zone action Chaque réseau peut être repéré par une étiquette, et précédé par un commentaire. 3/2 Réseau de contacts 3 3.1-2 Etiquette L’étiquette permet de repérer un réseau dans une entité de programme (programme principal, sous-programme, traitement préliminaire...) mais n’est pas obligatoire. Cette étiquette comprend 3 caractères numériques maximum et se positionne à la partie supérieure gauche devant la barre de potentiel. Un repère d’étiquette ne peut être affecté qu’à un seul réseau au sein d’une même entité de programme. Par contre il est nécessaire d’étiqueter un réseau afin de permettre un branchement après un saut de programme. C L245 J L 2 4 5 B3 I0,6 W13,0 T4,D L’ordre des repères des étiquettes est quelconque, c’est l’ordre de saisie des réseaux qui est pris en compte par le système lors de la scrutation. 3/3 3.1-3 Commentaire Le commentaire est intégré au réseau et comprend 222 caractères alphanumérique au maximum. Il facilite l’interprétation du réseau auquel il est affecté, mais n’est pas obligatoire. réseau commenté C X TSX 67/87 réseau non commenté Mise à jour A B C Par Date Etude : Dessins : Date : T Folio Les commentaires s’affichent dans la zone réservée à la première ligne du réseau, les éléments graphiques s’inscrivent alors sur 6 lignes et 11 colonnes. En cas de suppression d’un réseau, le commentaire qui lui est associé est également supprimé. Les commentaires sont mémorisés dans l’automate et sont accessibles à tout moment par l’utilisateur. A ce titre, ils consomment de la mémoire programme. 3/4 3 Réseau de contacts 3.1-4 Réseau de contacts Sa représentation est proche de celle d’un schéma électrique à relais. Les éléments graphiques simples de test et d’action occupent chacun une ligne et une colonne au sein d’un réseau. Toute ligne de contacts commence sur la ligne de potentiel gauche et doit se terminer sur la ligne de potentiel droite. L O21,B I11,4 W22,9 I11,3 B16 O21,7 X12 T3,D ↑ SR4 C C16,E O21,0 W13,0 B3 I11,2 B155 S ↓ I11,3 I3,1 B13 O21,7 Les tests sont toujours situés sur les colonnes 1 à 10. C Les actions sont toujours situées sur la colonne 11. Le sens de circulation du courant est le suivant : • pour les liaisons horizontales, de la gauche vers la droite, • pour les liaisons verticales, dans les deux sens. Zone test On y trouve : • les contacts, auxquels peuvent être affectés tous les objets bits définis précédemment, • les blocs fonctions, • les blocs comparaison. L B16 T3,D I11,4 C13,E L B9 MP :9999 Les fronts ne peuvent être associés qu’aux objets bits entrées/ sorties, bits internes ou bits système. Zone action On y trouve : • les bobines directes, inverses, d’enclenchement et de déclenchement, qui peuvent être affectées de tous les objets bits pouvant être écrits par l’utilisateur. • les blocs opérations. I6,8 C2,D S M0 R W8,4 TB :1mn O2,6 85 ↓ ↓ SY6 ↑ L B52 W8,B W8,A / O6,5 S B8 COM 32F R WO+1 → W2 3/5 Réseau simple Pilotage d’une bobine conditionnée par un contact. Utilisation de 10 contacts maximum en série sur une ligne. C Possibilité de tester 7 contacts maximum en parallèle sur une colonne, de placer 7 bobines en parallèle. X53 O16,E B1 I3,2 W18,4 O13,2 B15 T2,D I4,5 W1,F B5 C0,D O6,3 ↑ / ↓ Formulaire programmation schéma à contacts IT MAIN FAST SR MAST PRE AUX POST ASY CHART XM L B5 Dans un réseau intégrant un commentaire, 6 contacts ou 6 bobines peuvent être mis en parallèle. Q11,2 I6,9 B25 W15 W8,0 / SR9 ↓ C6,E O5,2 L20 I3,7 B12 R O2,6 S SY4 Réseau utilisant plusieurs chaînes de contacts Un réseau peut être divisé en plusieurs chaînes de contacts indépendantes pilotant des bobines indépendantes L I13,2 W6,F B88 ↓ C2,E SY4 I6,5 O13,3 / W3,6 X53 7 lignes indépendantes de contacts. Réseaux utilisant les différents principes énoncés. Les éléments à l’état logique 1 sont cerclés. Le courant peut passer des éléments A et C vers la bobine F, il ne peut pas passer de l’élément C vers les éléments D et E. La bobine G n’est donc pas activée. 3/6 L12 J SR0 C O13,2 W8,4 B27 B12 B68 S L A C B D F G E Réseau de contacts 3 3.1-5 Réseau de contacts avec blocs fonctions et opérations • Les blocs fonctions se positionnent dans la zone test et s’insèrent dans un réseau de contacts. Il existe quatre dimensions de graphisme pour représenter l’ensemble des autres blocs fonctions du langage PL7-3 C4 Compteur/Décompteur Comparateur "vertical" Bloc texte 2 colonnes 4 lignes C T10 Temporisateur Monostable Registre 2 colonnes 3 lignes Bloc contrôle 2 colonnes 2 lignes Comparateur "horizontal" 2 colonnes 1 ligne CTRL COMPARE • Les blocs opérations se positionnent toujours en zone action. Ils utilisent 1 ligne et 4 colonnes, font appel au langage littéral et sont toujours directement reliés à la barre de potentiel droite. W10,F W1 + W9 → W22 3/7 Les blocs fonctions sont "cascadables" Comme pour les éléments graphiques du type contacts, il est possible de réaliser des combinaisons de blocs fonctions. Mise en série de blocs fonctions : L I4,6 M1 S R O12,3 T12 E D C C Les blocs fonctions et blocs opérations sont mixables L I2,5 B28 W1 C1,V I2,2 W2 C1,V 3450 → T2,P Autres possibilités des blocs fonctions Quel que soit le type de bloc fonction utilisé, il doit obligatoirement être relié en entrée à la barre de potentiel gauche, en direct ou à travers d’autres éléments graphiques. • sorties "en l’air" : il n’est pas nécessaire de relier à d’autres éléments graphiques les sorties des blocs fonctions suivants : - temporisateur, - registre, - monostable, - bloc texte, - compteur/décompteur, - bloc contrôle. • sorties testables : les sorties des blocs fonctions sont accessibles à l’utilisateur sous forme d’objet bit : T12,D C5,E 3/8 O14,F Réseau de contacts 3.2 3 Règles d’exécution d’un réseau de contacts 3.2-1 Cycle d’une tâche périodique Période : définie par configuration, temps entre deux scrutations de la tâche (exécution, acquisition des entrées). Période écoulée Acquisition des entrées : lecture et mémorisation dans la mémoire image des bits d’entrées des modules associés par configuration à la tâche en cours. oui Acquisition des entrées Le programme est exécuté réseau par réseau de manière séquentielle selon l’ordre d’écriture des réseaux en mémoire. La lecture se fait de haut en bas sauf lors de l’exécution d’un saut ou de l’appel à un sous-programme. C Traitement du programme Mise à jour des sorties : écriture de l’état des bits de la mémoire image sur les modules de sorties associés à la tâche en cours. Mise à jour des sorties Par défaut, seule la tâche maître est configurée, en traitement monotâche. 3.2-2 Principe d’exécution d’un réseau L’exécution d’un réseau s’effectue colonne par colonne, du haut vers le bas, la colonne d’origine étant la barre de potentiel située à gauche. Exemple : L’ordre d’exécution des éléments de ce réseau est le suivant : 1A, 1D, 3A, 4C, 5A et 8A. 1 2 3 4 5 6 7 8 9 10 11 L A B C D E F Les bobines sont exécutées après le traitement de la zone test. 3/9 En respectant cet ordre d’exécution, le système met à jour : • l’état logique de chaque contact en fonction de l’état des entrées acquis en début de cycle, • l’état logique des objets bits associés aux bobines afin de mettre à jour les sorties en fin de cycle. Les cas spécifiques des bobines "J" et "C", des blocs fonctions et des blocs opérations sont traités ci-après. Conséquences : lorsqu’un objet est utilisé plusieurs fois dans un même réseau, son état logique est, selon le cas, celui acquis pendant le cycle en cours ou celui acquis dans le cycle précédent. C Dans l’exemple suivant B89 est utilisé deux fois dans le même réseau. L B89 La valeur du contact B89 n’est pas celle donnée par la bobine B89 dans le cycle en cours mais celle acquise au cycle précédent. Pour que la bobine et le contact aient la même valeur dans un cycle, il faut décomposer le réseau précédent en deux réseaux distincts. B89 Formulaire programmation schéma à contacts IT MAIN FAST SR MAST PRE ASY AUX POST XM CHART L 6 4 B89 Formulaire programmation schéma à contacts IT MAIN FAST SR MAST PRE ASY AUX POST CHART XM L B89 3.2-3 Saut amont ou aval à un autre réseau (JUMP) Lors du traitement de la zone action, 2 cas sont possibles : • la bobine "J" est activée : le saut au réseau concerné est immédiat et la bobine B10 n’est pas activée, • la bobine "J" n’est pas activée : la bobine B10 est traitée normalement. L L29 J B10 Pour qu’une bobine soit traitée indépendamment de l’état d’une bobine "J" située dans le même réseau, il convient donc de la placer sur une ligne située au dessus de la bobine "J". 3/10 Réseau de contacts 3 3.2-4 Appel à un sous-programme (CALL) Lors du traitement d’une bobine "C" à l’état logique 1, la scrutation du réseau s’interrompt et reprend son cours après l’exécution du sous-programme appelé : Sous Programme SR1 L SR1 C B8 O11,3 C 3.2-5 Exécution d’un réseau comportant des blocs fonctions Les fonctions associées à ce type de bloc sont exécutées au moment de la scrutation du coin supérieur gauche du bloc concerné. L 1 3 V 4 6 C0 2 5 Conséquence : lorsque le bloc fonction et l’un des objets bits qui lui sont associés sont utilisés dans le même réseau, cet objet peut prendre la valeur donnée par le bloc dans le cycle précédent ou dans le cycle en cours : L’état de l’objet bit C0,D est celui acquis dans le cycle précédent. L C0 C0,D L’état de l’objet bit C0,D est celui acquis dans le cycle en cours. L C0 C0,D 3/11 3.2-6 Scrutation d’un réseau comportant des blocs opérations Le bloc opération, situé en zone action, suit les mêmes règles que les blocs fonctions. Exemple : Ce réseau s’exécute dans l’ordre présenté ci-contre. 1 2 3 4 Formulaire programmation schéma à contacts Colonnes 5 6 7 IT MAIN 8 FAST SR 9 10 11 MAST PRE AUX POST ASY CHART XM L 1 2 3 4 5 10 6 11 8 C 7 9 12 L’opération associée au bloc n’est lancée qu’au moment de la scrutation de la partie gauche du bloc. Tout bloc opération est donc exécuté : • avant toutes les bobines (colonne 11), • avant les contacts des colonnes 9 et 10 lorsque ceux-ci sont situés au-dessus du bloc, • avant les contacts des colonnes 8, 9 et 10 lorsque ceux-ci sont situés en-dessous du bloc. Rappel : le programme peut être organisé en plusieurs tâches périodiques. A chaque tâche est affectée une période d’exécution. Plus cette période est faible, plus l’exécution de la tâche est prioritaire. Incidence sur le réseau en cours de scrutation : la scrutation du réseau en cours est interruptible sur bloc comparaison ou opération. L’apparition d’un "appel horloge" prioritaire sur l’exécution de la tâche en cours interrompt donc celle-ci. 3/12 Blocs fonctions d'automatisme et de commande Blocs fonctions d'automatisme et de commande Sous-chapitre 4 Chapitre 4 Page 4.1 Généralités 4/2 4.1-1 Présentation 4/2 4.2 Bloc fonction : Temporisateur 4/4 4.2-1 Présentation 4.2-2 Caractéristiques 4.2-3 Fonctionnement 4/4 4/4 4/5 4.3 Bloc fonction : Monostable 4/9 4.3-1 Présentation 4.3-2 Caractéristiques 4.3-3 Fonctionnement 4/9 4/9 4/9 4.4 Bloc fonction : Compteur 4/11 4.4-1 Présentation 4.4-2 Caractéristiques 4.4-3 Fonctionnement 4/11 4/11 4/12 4.5 Bloc fonction : Registre 4/13 4.5-1 Présentation 4.5-2 Caractéristiques 4.5-3 Fonctionnement 4/13 4/13 4/14 4.6 Bloc fonction : Contrôle 4/16 4.6-1 Présentation 4.6-2 Caractéristiques 4.6-3 Fonctionnement 4/16 4/16 4/16 Ce chapitre se termine à la page 4/16 4/1 Sans titre-4 1 15/01/96, 11:56 C 4.1 Généralités 4.1-1 Présentation Les blocs fonctions d’automatisme sont pré-programmés dans l’automate et occupent donc une zone particulière de la mémoire utilisateur. C Afin d’optimiser l’occupation mémoire, il est nécessaire de définir au préalable le type et le nombre de blocs fonctions utilisés, dans les limites imposées par le système. L’écran du mode CONFIGURATION, représenté ci-dessus, permet cette définition. Il existe 5 types de blocs fonctions d’automatisme : • • • • • temporisateur monostable compteur/décompteur registre comparateur COMPARE T : 128 maximum, M : 32 maximum, C : 256 maximum, R : 128 maximum, : non limités. Chaque bloc possède : • des entrées (Ex : E,C) qui permettent de le commander, • des sorties (Ex : D,R) qui indiquent son état. A chaque sortie est associé un bit de sortie (Ex : T0,D) qui peut être testé par le programme utilisateur. De plus, chaque sortie peut piloter une ou plusieurs bobines (Ex : O1,2 et SR2), • des paramètres qui permettent de l’adapter à l’application (présélection, base de temps...). Les paramètres des blocs fonctions (présélection, valeur courante...) sont visualisés à l’intérieur du bloc. 4/2 Sans titre-4 2 15/01/96, 11:56 Blocs fonctions d'automatisme et de commande 4 L’accès aux paramètres en écriture et en lecture est possible dans les modes suivants : • Mode CONFIGURATION, • Mode PROGRAMMATION, • Mode MISE AU POINT, • Mode REGLAGE. C (La description de ces modes est faite dans le manuel "MODES OPERATOIRES"). Sur certains blocs fonctions d’automatisme (Temporisateur, Monostable, Compteur) l’utilisateur peut modifier certains paramètres dans les modes DONNEES et REGLAGE. Nota : il n’est pas possible d’utiliser simultanément plus de 8 temporisateurs et/ou monostables avec une base de temps de 10ms, ce en raison des limites du système. 4/3 Sans titre-4 3 15/01/96, 11:56 4.2 Bloc fonction : Temporisateur 4.2-1 Présentation Le bloc fonction temporisateur permet de commander avec retard des actions spécifiques. La valeur de ce retard est programmable et peut être modifiable ou non en mode REGLAGE. E Ti C TB:1mn D R T,P:9999 MODIF:Y Bloc temporisateur C 4.2-2 Caractéristiques Numéro temporisateur Ti Ce numéro est inférieur au nombre défini lors de la configuration et est nécessairement compris entre 0 et 127 (limite du système) Base de temps TB 1mn, 1s, 100ms, 10ms (1mn par défaut) Valeur courante Ti,V Mot qui décroît de Ti,P vers 0 sur écoulement du temporisateur. Peut être lu, testé, mais non écrit Valeur de présélection Ti,P 0 < Ti,P ≤ 9999. Mot qui peut être lu, testé, écrit. Est mis à la valeur 9999 par défaut Modification MODIF YES/NO YES : possibilité de modification de la valeur de présélection en mode REGLAGE. NO : pas d’accès en mode REGLAGE. Entrée "Armement" E(Enable) Sur état 0 réinitialise le temporisateur Ti,V = Ti,P Entrée "Contrôle" C(Control) Sur état 0 gèle la valeur courante Ti,V Sortie "Temporisateur écoulé" D(Done) Le bit associé Ti,D = 1, si temporiteur écoulé Ti,V = 0 Sortie "Temporisateur en cours" R(Running) Le bit associé Ti,R = 1 si temporisateur Ti,P > Ti,V > 0 et si entrée C est à l’état 1 Dimensions à l’écran 2 colonnes de contacts sur 3 lignes 4/4 Sans titre-4 4 15/01/96, 11:57 4 Blocs fonctions d'automatisme et de commande 4.2-3 Fonctionnement Le temporisateur évolue lorsque ses 2 entrées (E et C) sont à l’état 1. Il se comporte comme un décompteur. • la valeur courante Ti,V décroît de la présélection Ti,P vers 0, d’une unité à chaque impulsion de la base de temps TB. E C Ti,P Ti,V Ti,D Ti,R • le bit de sortie Ti,R (Temporisateur en cours) associé à la sortie R est alors à l’état 1, le bit de sortie Ti,D (Temporisateur écoulé) associé à la sortie D est à l’état 0. • lorsque la valeur courante Ti,V= 0, Ti,D passe à l’état 1 et Ti,R repasse à l’état 0. E 0 0 1 1 C 0 1 0 1 Ti,P Ti,V Ti,V = Ti,P Ti,V = Ti,P Ti,V gelée Ti,V décroît de Ti,P → 0 Ti,D 0 0 0 1 si Tempo écoulée Ti,R 0 0 0 1 si Tempo en cours C Cas types Selon sa programmation, le bloc fonction "Temporisateur" peut réaliser les fonctions suivantes : - Retard à l’enclenchement I1,0=E,C R PRESET PRESET D=O0,0 Formulaire programmation schéma à contacts L 1 IT MAIN FAST SR MAST PRE AUX POST T EMPO TRAV A I L T B = 1 S PRESE T : 3 0 MOD I F YES I1,0 XM O0,0 E T0 D C ASY CHART PRE 30 TB : 1S MOD YES 4/5 Sans titre-4 5 15/01/96, 11:57 - Retard au déclenchement I1,1 E,C R PRESET D O0,1 C L 2 T EMPO REPOS T B = 1 S PR ESE T : 1 2 0 MOD I F YE S I1,1 O0,1 E T7 D C PRE 120 TB : 1S R MOD YES - Retard cumulé à l’enclenchement I0,2=E I0,3=C O1,5=R D1 D2 D3 O1,4=D L 3 T EMPO RE T ARD CUMU L E A L ' ENC L ENCHEMENT T B = 1mn PRESE T : 3 MOD I F : NO I0,2 I0,3 O1,4 E T5 D O1,5 PRE:3 C TB:1mn R MOD:NO 4/6 Sans titre-4 6 15/01/96, 11:57 4 Blocs fonctions d'automatisme et de commande - Retard cumulé au déclenchement I0,0 E I0,1 C R D1 D2 D3 D C O10,1 L 4 T EMPO RE T ARD CUMU L E AU DE C L ENCHEMENT T B = 1 0mn PRESE T : 4 0 MOD I F : YES I0,0 I0,1 O10,1 / E T12 D PRE:40 C TB:10mm MOD:YES Cas spécifiques - Incidence d’une reprise "à froid" : (SY0 = 1) provoque le chargement de la valeur de présélection (définie en mode CONFIGURATION) dans la valeur courante et la mise à 0 de la sortie Ti,D, la valeur de présélection éventuellement modifiée par le terminal (mode REGLAGE ou DONNEES) étant perdue, - Incidence d’une "reprise à chaud" ou "immédiate" : (SY1 ou SY2) n’a pas d’incidence sur la valeur courante du temporisateur, - Incidence d’un passage en stop : le passage en stop de l’automate ne fige pas la valeur courante. Il en va de même lorsque la tâche en cours est désactivée par le bloc contrôle CTRLi ou lors de l’exécution d’un point d’arrêt, - Incidence d’un saut de programme : le fait de ne pas scruter le réseau où est programmé le bloc temporisateur ne fige pas la valeur courante Ti,V qui continue à décroître vers 0, De même les bits Ti,D et Ti,R associés aux sorties D et R du bloc temporisateur conservent leur fonctionnement normal et peuvent être ainsi testés dans un autre réseau, Par contre les bobines directement "raccordées" aux sorties du bloc ne seront pas activées puisque non scrutées par l’automate, - Test des bits Ti,D et Ti,R : ces bits peuvent changer d’état en cours de cycle. 4/7 Sans titre-4 7 15/01/96, 11:57 Exemple d’utilisation • Modification de présélection en fonction d’un événement extérieur : La connaissance des blocs opérations "comparaison" et "transfert" est nécessaire à la compréhension de cet exemple. Si T2,D = 1 et I1,9 = 1 alors ranger le contenu du mot interne W0 dans T2,P. Si T2,D = 1 et I1,9 = 0 alors ranger le contenu du mot constant CW31 dans T2,P. Formulaire programmation schéma à contacts IT MAIN FAST SR MAST PRE AUX POST ASY XM CHART L C I0,7 B12 E T2 D C R I1,9 W0 → T2,P T2,D I1,9 CW31 → T2,P Note : la modification ne s’effectue que si le temporisateur n’est pas en cours T2,D = 1 et T2,R = 0. • Surveillance de la valeur courante d’un temporisateur : Si T2,V > 12s, alors mettre le bit interne B15 à l’état 1. B15 S T2,V>12s 4/8 Sans titre-4 8 15/01/96, 11:57 4 Blocs fonctions d'automatisme et de commande 4.3 Bloc fonction : Monostable 4.3-1 Présentation Le bloc fonction monostable permet d’élaborer une impulsion de durée précise. Cette durée est programmable et peut être modifiable ou non en mode REGLAGE. S Mi R TB:1mn M,P:9999 MODIF:Y Bloc monostable 4.3-2 Caractéristiques Numéro monostable Mi C Ce numéro est inférieur au nombre défini lors de la configuration et est nécessairement compris entre 0 et 31 (limite du système) Base de temps TB 1mn, 1s, 100ms, 10ms (1mn par défaut) Valeur courante Mi,V Mot qui décroît de Mi,P vers 0 sur écoulement du temporisateur. Peut être lu, testé, mais non écrit Valeur de présélection Mi,P 0 < Mi,P ≤ 9999. Mot pouvant être lu, testé, écrit Modification MODIF YES/NO YES : possibilité de modification de la valeur de présélection en mode REGLAGE. NO : pas d’accès en mode REGLAGE. Entrée "Départ" S(Start) Sur front montant Mi,V = Mi,P puis Mi,V décroît vers 0 Sortie "Monostable en cours" R(Running) Le bit associé Mi,R est à 1 si Mi,V > 0 (écoulement monostable) Mi,R = 0 si Mi,V = 0 Dimensions à l’écran 2 colonnes de contacts sur 3 lignes 4.3-3 Fonctionnement Lors de l’apparition d’un état 1 (front montant) sur l’entrée S du monostable, la valeur courante Mi,V prend la valeur de présélection Mi,P et décroît vers 0, d’une unité à chaque impulsion de la base de temps TB. Le bit de sortie Mi,R (Running) associé à la sortie R passe à l’état 1 dès que la valeur courante Mi,V est différente de 0. Lorsque la valeur courante Mi,V = 0, le bit de sortie Mi,R repasse à l’état 0. 4/9 Sans titre-4 9 15/01/96, 11:57 Entrée "départ" S : S↑ Valeur courante Mi,V : Mi,V Sortie "en cours" R : R PRESET PRESET PRESET Cas spécifiques C - Incidence d’une reprise "à froid" : (SY0 = 1) provoque le chargement de la valeur de présélection (définie en mode CONFIGURATION) dans la valeur courante Mi,V, la valeur de présélection éventuellement modifiée par le terminal (mode REGLAGE ou DONNEES) étant perdue, - Incidence d’une "reprise à chaud" ou "immédiate" : (SY1 ou SY2) n’a pas d’incidence sur la valeur courante du monostable (Mi,V), - Incidence d’un passage en stop : le passage en stop de l’automate ne fige pas la valeur courante. Il en va de même lorsque la tâche en cours est désactivée par le bloc contrôle CTRLi ou lors de l’exécution d’un point d’arrêt. - Incidence d’un saut de programme : le fait de ne plus scruter le réseau où est programmé le bloc monostable ne fige pas la valeur courante Mi,V qui continue à décroître vers 0, De même le bit Mi,R associé à la sortie du bloc monostable conserve son fonctionnement normal et peut être ainsi testé dans un autre réseau, Par contre les bobines directement "raccordées" à la sortie du bloc (ex O10,0) ne seront pas activées puisque non scrutées par l’automate, - Test du bit Mi,R : ce bit peut changer d’état en cours de cycle. • Exemple d’utilisation - clignotant à périodes cycliques variables : la valeur de présélection de chaque monostable définit la durée de chaque impulsion. O10,0 5s 5s 2s 2s L M1,RO10,0 O10,0 S M0 R TB:1s S M1 R M,P:5 MOD:YES TB:1s M,P:2 M0,R O10,0 MOD:YES Dans l’exemple ci-dessus, la sortie O10,0 est mise à l’état 1 pendant 5s (M0,P) et remise à l’état 0 pendant 2s (M1,P). 4/10 Sans titre-4 10 15/01/96, 11:57 4 Blocs fonctions d'automatisme et de commande 4.4 Bloc fonction : Compteur 4.4-1 Présentation Le bloc fonction compteur permet d’effectuer le comptage ou le décomptage d’événements, ces deux opérations pouvant être simultanées ou non. R Ci P E D C,P:9999 U MODIF:Y F D Bloc compteur 4.4-2 C Caractéristiques Numéro de compteur Ci Ce numéro est inférieur au nombre défini lors de la configuration et est nécessairement compris entre 0 et 255 (limite du système) Valeur courante Ci,V Mot incrémenté ou décrémenté en fonction des entrées U et D. Lu, testé, non écrit Valeur de présélection Ci,P 0 < Ci,P ≤ 9999. Mot pouvant être lu testé, écrit Modification MODIF YES/NO YES : possibilité de modification de la valeur de présélection en mode REGLAGE. NO : pas d’accès en mode REGLAGE. Entrée "remise à zéro" R(Reset) Sur état 1 : valeur courante Ci,V = 0 Entrée "présélection" P(Preset) Sur état 1 : valeur courante Ci,V = valeur de présélection Ci,P Entrée "comptage" U(Up) Incrémente Ci,V sur front montant Entrée "décomptage" D(Down) Décrémente Ci,V sur front montant Sortie "débordement décomptage" E(Empty) Le bit associé Ci,E = 1, lorsque Ci,V passe de 0 à 9999 (Débordement) Sortie "présélection atteinte" D(Done) Le bit associé Ci,D = 1 lorsque Ci,V = Ci,P Sortie "débordement comptage" F(Full) Le bit associé Ci,F = 1 lorsque Ci,V passe de 9999 à 0 (Débordement) Dimensions à l’écran 2 colonnes de contacts sur 3 lignes 4/11 Sans titre-4 11 15/01/96, 11:57 4.4-3 Fonctionnement • Présélection-remise à zéro : si l’entrée "présélection" est à l’état 1 et l’entrée "remise à zéro" à l’état 0, la valeur courante Ci,V prend la valeur Ci,P et la sortie Ci,D prend la valeur 1. L’entrée "remise à zéro" est prioritaire. Dès la mise à l’état 1 de cette entrée la valeur courante Ci,V est forcée à 0, les sorties Ci,E, Ci,D et Ci,F sont à 0, • Comptage : à l’apparition d’un front montant sur l’entrée "comptage" U la valeur courante Ci,V est incrémentée d’une unité. Lorsque cette valeur est égale à la valeur de présélection Ci,P, le bit de sortie Ci,D (présélection atteinte) associé à la sortie D est à l’état 1. Le bit de sortie Ci,F (débordement comptage) passe à 1 pendant un tour de programme lorsque Ci,V passe de 9999 à 0, C • Décomptage : à l’apparition d’un front montant sur l’entrée "décomptage" D la valeur courante Ci,V est décrémentée d’une unité. Le bit de sortie Ci,E (débordement décomptage) passe à 1 pendant un tour de programme lorsque Ci,V passe de 0 à 9999 • Comptage/décomptage : pour utiliser simultanément les fonctions comptage et décomptage, il est nécessaire de programmer les deux entrées correspondantes U et D. Ces deux entrées sont alors scrutées successivement. Si les deux entrées sont à 1, la valeur courante reste inchangée, Cas spécifique - Incidence d’une "reprise à froid" : (SY0 = 1) provoque la mise à zéro de la valeur courante Ci,V La valeur de présélection éventuellement modifiée par le terminal (mode REGLAGE ou DONNEES) étant perdue. Les bits de sortie Ci,E,Ci,D,Ci,F sont à 0, - Incidence d’une "reprise à chaud" ou "immédiate" : (SY1 ou SY2) n’a pas d’incidence sur la valeur courante du compteur (Ci,V). • Exemple d’utilisation Comptage d’un nombre de pièces > 9999 : il est nécessaire de mettre deux blocs fonction compteurs en cascade. Chaque impulsion de l’entrée I0,3 provoque l’incrémentation du compteur C0 et ce jusqu’à sa valeur de présélection. C0,D passe alors à 1, ce qui incrémente le compteur C1 et remet à 0 le compteur C0 (valeur courante = 0), etc... Lorsque la valeur de présélection du compteur C1 est atteinte, C1,D passe à 1, ce qui arrête le comptage et active la sortie O10,0. Formulaire programmation schéma à contacts IT FAST MAIN SR MAST PRE AUX POST 12 XM L I0,0 I0,0 C0,D I0,3 C1,D R C1 E R C0 E P P U PRE 1000 MOD: Y D U PRE 50 MOD: Y O10,0 D F F D D 4/12 Sans titre-4 ASY CHART 15/01/96, 11:57 4 Blocs fonctions d'automatisme et de commande 4.5 Bloc fonction : Registre 4.5-1 Présentation Un registre est un ensemble de mots de 16 bits permettant de stocker des informations de deux manières différentes : • file d’attente (premier entré, premier sorti) ou file FIFO, • pile (dernier entré, premier sorti) ou pile LIFO. Ri R LIFO LEN:16 I F E O Bloc registre C 4.5-2 Caractéristiques Numéro Registre Ri Ce numéro est inférieur au nombre défini lors de la configuration et est nécessairement compris entre 0 et 127 (limite du système) Type FIFO LIFO File d’attente (First In, First Out). Pile (Last In, First Oust) Longueur L Nombre de mots 16 bits 1 ≤ L ≤ 255. Non modifiable par programme. Le nombre total de mots défini pour l’ensemble des registres ne doit pas dépasser 1024 Mot d’entrée Ri,I Mot d’accès au registre. Peut être testé, lu, écrit Mot de sortie Ri,O Mot de sortie du registre. Peut être lu, testé, écrit Entrée "Stockage" I(In) Sur front montant provoque le stockage du contenu du mot Ri,I dans le registre Entrée "Déstockage" O(Out) Sur front montant provoque le rangement d’un mot d’information dans le mot Ri,O Entrée "Remise à zéro" R(Reset) Sur l’état 1 initialise le registre Sortie "Plein" F(Full) Le bit Ri,F associé indique que le registre est plein. Peut être testé Sortie "Vide" E(Empty) Le bit Ri,E associé indique que le registre est vide. Peut être testé Dimensions à l’écran 2 colonnes de contacts sur 3 lignes Nota : lorsque les deux entrées I et O sont activées simultanément, le stockage est réalisé avant le déstockage. 4/13 Sans titre-4 13 15/01/96, 11:57 4.5-3 Fonctionnement • FIFO (First In, First Out) Exemple La première information entrée est la pre- • stockage du contenu de Ri,I dans mière à être sortie. un registre vide Lorsqu’une demande d’entrée est prise en (a) compte (front montant sur l’entrée I), le contenu du mot d’entrée Ri,I préalablement Ri,I chargé est stocké au plus haut de la file 50 50 (fig a et b). Lorsque la file est pleine (sortie F = 1), le stockage est impossible. C Lorsqu’une demande de sortie est prise en compte (front montant sur entrée O) le mot • stockage du contenu de Ri,I au d’information le plus bas de la file est rangé plus haut de la file dans le mot de sortie Ri,O et le contenu du 20 20 registre est décalé d’un pas vers le bas Ri,I 80 (fig. c). (b) 90 Lorsque le registre est vide (sortie E = 1) le 50 déstockage est impossible (le mot de sortie Ri,O n’évolue plus et conserve sa valeur). La file peut être réinitialisée à tout moment (état 1 sur l’entrée R). L’élément pointé est • déstockage de la première inforalors le plus haut dans la pile. mation et rangement de cette dernière dans Ri,O 20 80 90 • LIFO (Last In, First Out) La dernière information entrée est la première à être sortie. Lorsqu’une demande d’entrée est prise en compte (front montant sur l’entrée I), le contenu du mot d’entrée Ri,I préalablement chargé est stocké au plus haut de la pile (fig. d). (c) Ri,O 50 Exemple • stockage du contenu de Ri,I au plus haut de la pile 20 Ri,I (d) 20 80 90 50 Lorsque la pile est pleine (sortie F à 1), le stockage est impossible. 4/14 Sans titre-4 14 15/01/96, 11:57 4 Blocs fonctions d'automatisme et de commande Lorsqu’une demande de sortie est prise en • déstockage du mot d'information le plus haut de la pile compte (front montant sur l’entrée O), le mot d'information le plus haut (dernière 20 information entrée) est rangé dans le Ri,O 80 mot Ri,O (fig e et f). 90 50 Lorsque le registre est vide (sortie E = 1), le déstockage est impossible, le mot de sortie Ri,O n’évolue plus et conserve sa dernière valeur. La pile peut être réinitialisée à tout moment (état 1 sur entrée R). L’élément pointé est alors le plus haut dans la pile. (e) Ri,O 80 (f) 90 50 C Cas spécifiques - Incidence d’une reprise "à froid" : (SY0 = 1) provoque l’initialisation du contenu du registre. Le bit de sortie Ri,E associé à la sortie E est mis à 1. - Incidence d’une reprise "à chaud" ou "immédiate" : (SY1 ou SY2) n’a pas d’incidence sur le contenu du registre ainsi que sur l’état des bits de sorties. • Exemple La connaissance des blocs opérations "calcul et transfert" est nécessaire pour la compréhension de cet exemple. Le programme ci-contre montre le chargement de R2,I par le mot W34 et la demande d’entrée (B1) dans le registre R2 si l’événement B0 est présent et si le registre R2 n’est pas plein (B10 = 0). La demande de sortie est faite par le bit B2 et le rangement de R2,O dans W20 s’effectue si le registre n’est pas vide (B11 = 0). Formulaire programmation schéma à contacts IT MAIN FAST SR 2 MAST PRE ASY AUX POST CHART XM L B0 B10 W34 → R2,1 B1 B2 B11 R2,0 → W20 B10 R R2 F B1 B2 I B11 E O 4/15 Sans titre-4 15 15/01/96, 11:57 4.6 Bloc fonction : Contrôle 4.6-1 Présentation Le bloc fonction contrôle permet d’activer ou de désactiver une tâche périodique. Le numéro du bloc définit la tâche périodique à commander E CTRLi R Bloc contrôle C CTRL1 CTRL2 CTRL4 CTRL5 CTRL6 CTRL7 : commande la tâche interruption : commande la tâche rapide : commande la tâche auxiliaire 0 : commande la tâche auxiliaire 1 : commande la tâche auxiliaire 2 : commande la tâche auxiliaire 3 (IT) (FAST) (AUX0) (AUX1) (AUX2) (AUX3) L’accès au bloc CTRLi est conditionné par la configuration de la tâche i. 4.6-2 Caractéristiques Numéro du bloc CTRLi Ce numéro est nécessairement compris entre 1 et 7 et indique le numéro de la tâche à commander Entrée "Activation" E A l’état 1 cette entrée active la tâche i. A l’état 0 cette entrée provoque la désactivation de la tâche i. La désactivation de la tâche n’est effective qu’en fin d’exécution de celle-ci Sortie "Tâche activée" R Le bit associé CTRLi,R est à l’état 1 quand la tâche i est active Dimensions à l’écran 2 colonnes de contacts sur 2 lignes 4.6-3 Fonctionnement La mise à l’état 1 de l’entrée E provoque l’activation de la tâche définie par le numéro du bloc. La mise à l’état 0 de l’entrée E provoque la désactivation de la tâche définie par le numéro du bloc. La désactivation d’une tâche n’est effective qu’en fin d’exécution de celle-ci. Cas spécifique - Incidence d’un saut de programme : le fait de ne pas scruter le réseau où est programmé le bloc contrôle i ne désactive pas la tâche i. 4/16 Sans titre-4 16 15/01/96, 11:57 Blocs comparaison Blocs comparaison Sous-chapitre 5.1 Bloc comparaison : comparateur vertical 5.1-1 Présentation 5.1-2 Caractéristiques 5.1-3 Fonctionnement 5 Chapitre 5 Page 5/2 5/2 5/2 5/2 C 5.2 Bloc comparaison : comparateur horizontal 5/3 Ce chapitre se termine à la page 5/4 5/1 5.1 Bloc comparaison : Comparateur vertical 5.1-1 Présentation Le bloc comparateur vertical permet d’effectuer la comparaison entre 2 opérandes (OP). Ces opérandes peuvent être : • soit deux mots de 16 bits éventuellement indexés, • soit un mot de 16 bits éventuellement indexé et une valeur immédiate. Le nombre de blocs comparateur vertical n’est pas limité, ce bloc n’est donc pas numéroté. COMPARE W0 > = W25 < # C 5.1-2 Caractéristiques Entrée de commande Sur état 1 provoque la comparaison des deux opérandes Sortie "Supérieur" > Est à l’état 1 si le contenu de OP1 est supérieur à celui de OP2 Sortie "Egal" = Est à l’état 1 si le contenu de OP1 est égal à celui de OP2 Sortie "Inférieur" < Est à l’état 1 si le contenu de OP1 est inférieur à celui de OP2 Sortie "Différent" # Est à l’état 1 si le contenu de OP1 est différent de celui de OP2 Opérande n°1 Cet opérande est un mot interne (W). Il est indexable : Wi(Wx) Opérande n°2 Cet opérande est soit un mot interne (W), soit un mot constant (CW), soit une valeur immédiate. Dans le cas ou cet opérande est un mot, il est possible de l’indexer. 5.1-3 Fonctionnement La mise à 1 de l’entrée de commande provoque la comparaison des deux opérandes, les quatre sorties sont activées en fonction du résultat de la comparaison. La mise à 0 de l’entrée de commande provoque la mise à zéro des sorties activées. 5/2 5 Blocs comparaison Cas spécifiques - Incidence d’une reprise "à froid" : (SY0) provoquant une remise à zéro de l’opérande OP1 et éventuellement OP2 (si OP2 est un mot interne), les sorties sont activées en fonction de la comparaison avec les nouvelles valeurs, - Incidence d’une reprise "à chaud" ou "immédiate" : (SY1 ou SY2) n’a pas d’incidence sur le bloc comparaison. • Exemple d’utilisation Le programme ci-contre montre la comparaison du mot W2 indexé par le mot W40 et de la valeur immédiate 150. Formulaire programmation schéma à contacts IT MAIN FAST SR MAST PRE AUX POST ASY CHART XM L Dans le cas où le contenu de W2(W40) est supérieur à 150 et si I0,3 = 1 la bobine O10,7 est commandée. CMPV > W2 (W40) = I0,3 O10,7 W10,4 < 150 B5 ≠ Si ce contenu est égal à 150 la bobine W10,4 est commandée. La bobine B5 n’est pilotée que si le contenu est différent de 150 (< ou >). 5.2 Bloc comparaison : Comparateur horizontal Ce bloc permet d’effectuer la comparaison de deux opérandes. Il fait appel à des expressions du langage littéral et est comparable quant à sa forme aux blocs opérations, mais il est exclusivement placé en zone test. Sa sortie est à 1 lorsque la comparaison demandée est vraie. Les blocs "comparateur horizontal" ne sont pas limités en nombre. Le bloc est constitué de la manière suivante : OP1>,<,=,<>,<=,=<OP2 Opérande 1 (OP1) : objet mot simple ou double longueur ou expression complexe Opérande 2 (OP2) : objet mot ou valeur immédiate en simple ou double longueur Exemple : Comparaison du mot W241 avec la valeur immédiate 100. W241 > 100 La sortie de ce bloc passe à 1 lorsque que le contenu du mot W241 est supérieur à 100. 5/3 C C 5/4 Chapitre Blocs opérations 6 Chapitre 6 Sous-chapitre Page 6.1 Présentation 6/2 6.2 Utilisation 6/2 Ce chapitre se termine à la page 6/2 6/1 Sans titre-5 1 15/01/96, 11:58 C 6.1 Présentation Les blocs opérations font appel au langage littéral résidant dans le langage PL7-3. Ces blocs, à la différence des blocs fonctions d’automatismes ne sont pas préprogrammés dans l’automate et ne sont donc pas limités en nombre. Les blocs opérations permettent d’effectuer les opérations suivantes : C • • • • • • • • • • • opérations de transfert d’un mot dans un autre, opérations de décalages logiques et circulaires, opérations de transcodage, opérations logiques : AND, OR, XOR, CPL incrémentation et décrémentation d’un mot, opérations arithmétiques : +, -, *, /, reste, racine carrée, opérations sur chaînes de bits, opérations sur tableaux de mots, échanges explicites, gestion des bits interruption coupleur, exécution d’une instance d’OFB. Ces opérations étant généralement la conséquence de tests, les blocs opérations sont toujours situés dans la zone "Action" du réseau de contacts. Ces opérations font toutes appel à la notion de transfert, à l’exception de celles permettant l’incrémentation et la décrémentation d’un mot et des échanges explicites. Le bloc opération se présente sous la forme d’un rectangle occupant les 4 dernières colonnes d’une ligne. Un réseau de contacts comporte donc au maximum 7 blocs opérations. 6.2 Utilisation L’utilisation des blocs opérations est décrite dans "COMMUNS LANGAGE A CONTACTS ET LITTERAL" intercalaire E, chapitre 1 à 5. 6/2 Sans titre-5 2 15/01/96, 11:58 Bloc fonction texte Bloc fonction texte Sous-chapitre 7 Chapitre 7 Page 7.1 Présentation 7/2 7.2 Description 7/3 7.3 Utilisation des entrées de commande 7/4 7.4 Fonctionnement 7/5 7.5 Télégrammes (bloc texte TLG) 7/5 Ce chapitre se termine à la page 7/6 7/1 C 7.1 Présentation Le bloc fonction "Texte" permet au programme utilisateur de communiquer avec : • un périphérique (imprimante, clavier, automate, terminal) par l’intermédiaire de la "prise terminal" de l’automate : le bloc est alors de type "TER". R TXT0 D TER S T,C :0 Local E T,N :0 W0 O 10 T,L :0 T,S :? I C Réseau Bloc Texte • un coupleur intelligent : le bloc est alors de type "CPL". R TXT0 D CPL S T,C :0 Local E T,V :0 W0 O 10 T,L :0 T,S :? I Réseau/Bus Bloc Texte • un autre bloc fonction texte implanté dans le programme utilisateur : les deux blocs sont alors de type "TXT". R TXT0 D TXT S T,C :0 Réseau E T,N :0 W0 O 10 T,L :0 T,S :? I Local Bloc Texte R TXT0 Local E Réseau Bloc Texte 7/2 D T,V :0 W0 O 10 T,L :0 T,S :? I I Bloc Texte SYS S T,C :0 TXT1 D TXT S T,C :0 T,N :0 W0 O 10 T,L :0 T,S :? • certaines fonctions système, par exemple celles qui donnent accès aux données de diagnostic d’un coupleur intelligent : le bloc est alors de type "SYS". R E 7 Bloc fonction texte • un autre bloc fonction texte de type Télégramme, implanté dans le programme utilisateur d’un autre automate, situé sur le même réseau MAPWAY, ETHWAY, FIPWAY. Les deux blocs sont alors de type "TLG". R TXT0 D TLG S T,C :0 R Réseau E D S T,C :0 T,N :0 W0 O 10 T,L :0 T,S :? I TXT1 TLG E T,N :0 W0 O 10 T,L :0 T,S :? I Local Bloc Texte Bloc Texte Note : les télégrammes ne peuvent pas s’échanger localement, mais uniquement avec un réseau de type MAPWAY, ETHWAY ou FIPWAY. Les autres communications peuvent s’effectuer localement ou en utilisant le réseau TELWAY, MAPWAY, ETHWAY ou FIPWAY ou le bus UNI-TELWAY ou FIPIO. 7.2 Description Le bloc texte étant commun aux langages à contacts et littéral, la description détaillée des différents paramètres hormis les entrées de commande est décrite dans "COMMUNS LANGAGES A CONTACTS ET LITTERAL" intercalaire E, chapitre 6. Le bloc "Texte" comporte : • un numéro de bloc TXTi • un type d’échange (CPL/TER/SYS/TXT/TLG) • un type de communication (LOCAL/RESEAU) (seulement RESEAU pour bloc TLG) • une adresse de début de table ex : W10 • une longueur de table de réception ex : 12 • une longueur de table d’émission TXTi,L • un mot status TXTi,S • une sortie "Echange terminé" D • une sortie "Echange erroné" E • quatre entrées de commandes R/S/O/I décrites ci-après. R TXTi D TER S TM :0000H E LOCAL T,C :0 O T,N :0 W0 10 I T,L :0 T,S :? 7/3 C C Entrée Reset R La mise à l’état 1 de cette entrée empêche la prise en compte de l’entrée S. De la même manière, la mise à l’état 1 de cette entrée durant un échange interrompt l’échange et positionne les bits de sortie TXTi,D (échange terminé) et TXTi,E (échange erroné) à l’état 1. Le code de l’erreur est alors contenu dans le mot status TXTi,S. Entrée Départ S Un front montant sur l’entrée S provoque le lancement de l’échange défini par les entrées I (réception) et O (Emission) si le bit de sortie D est à l’état 1 et si l’entrée R est à l’état 0. Entrée Emission O La mise à l’état 1 de cette entrée positionne le bloc en émission. Entrée Réception I La mise à l’état 1 de cette entrée positionne le bloc en réception. 7.3 Utilisation des entrées de commande La mise à l’état 1 des entrées I ou O permet de positionner le bloc en lecture ou en écriture. La réception ou l’émission est alors déclenchée par un front montant sur l’entrée S (départ), si l’entrée R (Reset) est à l’état 0 et la sortie D est à l’état 1 (aucun échange en cours). En fin d’écriture ou de lecture et si l’échange a été correct, la sortie D est mise à l’état 1. De la même manière la mise à l’état 1 simultanée des entrées I et O permet l’émission et la réception simultanées. L’échange est déclenché par un front montant de l’entrée S. La sortie D est mise à l’état 1 lorsque l’émission et la réception se sont déroulées de manière correcte et sont terminées. A tout instant, la mise à l’état 1 de l’entrée R permet d’interrompre l’échange en cours. Les bits de sortie D (échange terminé) et E (échange erroné) sont mis à l’état 1 et le mot status TXTi,S indique alors le type d’erreur jusqu’au prochain échange. L’entrée R est prioritaire. Etat des entrées Actions 7/4 R S O I 0 1 1 0 Emission 0 1 0 1 Réception 0 1 1 1 Emission suivie de réception 1 1 0/1 0/1 Pas de possibilité d’échange ou interruption de l’échange en cours Bloc fonction texte 7.4 7 Fonctionnement Le fonctionnement du bloc texte est décrit dans "COMMUNS LANGAGES A CONTACTS ET LITTERAL" intercalaire E, chapitre 6. 7.5 Télégrammes (bloc texte TLG) Un télégramme est un message destiné à transmettre des informations urgentes, prioritaires et peu fréquentes. C’est un message court (32 octets au maximum) échangé entre les programmes utilisateur de deux stations, situées sur un même réseau MAPWAY, ETHWAY ou FIPWAY. Les blocs texte TLG, permettant l’envoi des télégrammes seront programmés dans les tâches MAST, FAST ou IT (pas dans les tâches AUX). Emission d’un télégramme L’émission d’un télégramme est immédiate, il n’est pas nécessaire d’attendre la fin d’exécution du programme application. Celui-ci est directement envoyé au coupleur dès que les commandes d’émission du bloc TLG sont activées (mise à 1 de l’entrée O et front montant sur l’entrée S). Réception d’un télégramme Cette opération se fait en deux temps : • positionnement du bloc texte TLG en réception (mise à 1 de l’entrée I et front montant sur l’entrée S), • lecture du télégramme par l’instruction READTLG : dès que le coupleur reçoit un télégramme, il envoie une interruption au processeur qui exécute alors la tâche IT du programme application. Cette tâche permet : - la reconnaissance de l’IT par l’instruction READINT, - le transfert du télégramme depuis le coupleur jusque dans le buffer de réception du bloc TLG, par l’instruction READTLG, - l’exécution des actions associées. Emission/réception d’un télégramme Elle est provoquée par la mise à 1 simultanée des entrées I et O. Elle fonctionne comme une émission suivie d’une réception. Remarques : • les télégrammes peuvent s’utiliser sans les interruptions. La tâche MAST ou FAST demande de façon explicite sa lecture à chaque cycle. On a alors l’équivalent d’une messagerie rapide. • en réception, on ne peut traiter qu’un seul télégramme par cycle automate et par coupleur. Par contre il est possible dans un même cycle automate d’émettre un télégramme sur chaque coupleur réseau d’un automate routeur. 7/5 C C 7/6 Blocs fonctions optionnels Blocs fonctions optionnels Sous-chapitre 8 Chapitre 8 Page 8.1 Présentation 8/2 8.2 Description 8/2 8.3 Utilisation des entrées/sorties 8/3 8.4 Fonctionnement 8/4 Ce chapitre se termine à la page 8/4 8/1 C 8.1 Présentation Les blocs fonctions optionnels (OFBs) permettent une extension du langage PL7-3, sous forme de blocs fonctions spécifiques. La bibliothèque des OFBs, disponible par famille (diagnostic process, communication, commande d'axes, régulation, Grafcet...) sera fournie par la catalogue Telemecanique. Chaque OFB chargé et configuré peut être utilisé plusieurs fois dans une application. La seule limite sur le nombre d’OFBs ést la taille mémoire utilisée (par exemple 32 Kmots maximum pour les constantes de chaque type d’OFBs). Il est possible pour certains types d’OFBs d’utiliser jusqu’à 1000 OFBs. C 8.2 Description Chaque type d’OFBs étant spécifique, la description à ce niveau se veut volontairement générale. La description détaillée de chaque type d’OFBs sera fournie avec la documentation accompagnant l’OFB. Comme les blocs fonctions standards, un type d’OFBs utilise des paramètres qui seront définis pour chaque OFB : • des paramètres d’entrées et de sorties, • des paramètres de configuration accessibles ou non par programme, • des paramètres internes (données et constantes) lus ou lus/écrits par l’utilisateur. OFBi Ent1 Ent2 Ent3 Ent4 Ent5 Ent6 Sort1 Sort2 Sort3 Sort4 Sortn Entm OFB i Ent(1 à m) Sort(1 à n) Data1 : : : : : type de l’OFB numéro de l’OFB paramètres d’entrées paramètres de sorties paramètre interne Data1 Le type de chacun des paramètres de l’OFB est défini parmi les types suivants : • • • • • • • bit (BIT) mot de 16 bits (WORD) double mot (DWOR) tableau de mots (AR_W) tableau de doubles mots (AR_D) chaîne de caractères (MSG) pointeur sur bit (PT_B) 8/2 • • • • • • • pointeur sur mot (PT_W) pointeur sur double mot (PT_D) module d’entrées/sorties (MOD) référence catalogue (REF_CAT) mot flottant (FDWR) tableau de bits (AR_B) tableau de bits d'E/S à distance (AR_I) Blocs fonctions optionnels 8.3 8 Utilisation des entrées/sorties L’utilisation des entrées/sorties de chaque OFB sera décrite dans la documentation accompagnant l’OFB. Les OFBs de la famille Grafcet sont décrit au chapitre 4 de l'intercalaire B. Objets extraits des OFBs Ces nouveaux objets s’intègrent aux expressions et aux actions du programme application, comme les objets standards PL7-3. Ils sont utilisés en lecture ou lecture/écriture selon la définition de l’OFB. Ces objets sont : • • • • les paramètres d’entrées, les paramètres de sorties, les données internes, les constantes internes. C Le tableau suivant donne pour ces objets, les types autorisés et leur accès (écriture et/ou lecture) : Objet (*) Type Accès Paramètre d’entrée Bit, Mot, Double mot Module, Pointeur sur bit, Pointeur sur mot ou double mot R Pas d’accès Pas d’accès Pas d’accès Paramètre de sortie Bit, Mot, Double mot R Donnée interne Bit, Mot, Double mot Tableau de mots ou doubles mots Chaîne de caractères (message) Mot flottant Tableau de bit R, W (*) R, W (*) R, W (*) R, W (*) R, W (*) Constante interne Bit, Mot, Double mot Tableau de mots ou doubles mots Chaîne de caractères (message) R R R selon autorisation du concepteur de l’OFB La syntaxe de ces objets est la suivante : OFBi,objet OFB i objet : type de l’OFB : numéro de l’OFB : nom de l’objet Notes : • les éléments d’OFB de type pointeur sur bit, pointeur sur mot, pointeur sur double mot et module ne sont pas accessibles par le programme utilisateur, • les éléments de type message sont traités comme des tableaux de mots par le programme utilisateur, 8/3 Les éléments d’OFBs de type tableau de mots ou doubles mots • définition : OFBi,TABLEAU type tableau de mots ou doubles mots longueur n <> 0 • représentations C OFBi,TABLEAU représente le premier élément du tableau. OFBi,TABLEAU[m] représente un tableau extrait de OFBi,TABLEAU composé des éléments compris entre le premier et l’élément m du tableau source. m est une valeur immédiate (0 < m < n). OFBi,TABLEAU(Wj) représente l’élément d’index Wj du tableau OFBi,TABLEAU. Wj est un mot interne PL7-3. OFBi,TABLEAU(Wj)[m] représente un tableau extrait de OFBi,TABLEAU composé des éléments compris entre l’élément d’index Wj et l’élément d’index Wj+m du tableau source. m est une valeur immédiate (0 < m < n). Wj est un mot interne PL7-3. • Opérations - Affectation indexée OFBi,TABLEAU(Wi) → Wj Wj → OFBi,TABLEAU(Wi) OFBi,TABLEAU(Wi) → OFBi,TABLEAU(Wj) - Transfert de tableau OFBi,TABLEAU[m] → Wj[m] Wj[m] → OFBi,TABLEAU[m] OFBi,TABLEAU[m] → OFBj,TABLEAU[m] (avec OFBi,TABLEAU <> OFBj,TABLEAU) - Transfert de tableau indexé OFBi,TABLEAU(Wi)[m] → Wj[m] Wj[m] → OFBi,TABLEAU(Wj)[m] OFBi,TABLEAU(Wi)[m] → OFBj,TABLEAU(Wj)[m] (avec OFBi,TABLEAU <> OFBj,TABLEAU) 8.4 Fonctionnement Le fonctionnement étant spécifique à chaque OFB, il sera décrit dans la documentation correspondante. 8/4 Dialogue Langage littéral Chapitre 1 5 Intercalaire D Page Présentation du langage littéral PL7-3 Sommaire 1/1 1.1 Principe 1.2 Liste des instructions 2 Les phrases du langage littéral Sommaire 2/1 2.1 Généralités 2.2 Structure générale D 2.3 Commentaires 2.4 Etiquette 2.5 Phrase action 2.6 Phrase conditionnelle 2.7 Phrase itérative 3 L’expression booléenne Sommaire 3/1 3.1 Généralités 3.2 Structure 3.3 Adressage des objets bits 3.4 Test sur bit 3.5 Expression de front 3.6 Comparaison numérique 3.7 Inversion logique 3.8 ET/OU logique 3.9 Parenthèse D/1 Langage littéral Chapitre 4 Intercalaire D Page L’expression arithmétique Sommaire 4/1 4.1 Généralités 4.2 Adressage des objets mots 4.3 Structure 4.4 Parenthèses 5 Actions Sommaire D 5/1 5.1 Utilisation 5.2 Actions sur bits 5.3 Actions sur chaîne d’octets 5.4 Actions sur programme 5.5 Actions sur interruptions 5.6 Actions explicites 5.7 Lecture d’un télégramme 6 Fonctions d’automatismes Sommaire 6.1 Fonction temporisateur 6.2 Fonction monostable 6.3 Fonction compteur 6.4 Fonction registre 6.5 Fonction contrôle 6.6 Fonction texte D/2 6/1 Présentation du langage littéral PL7-3 Présentation du langage littéral PL7-3 Sous chapitre 1 Chapitre 1 Page 1.1 Principe 1/2 1.2 Liste des instructions 1/3 1.2-1 1.2-2 1.2-3 1.2-4 1.2-5 1.2-6 1.2-7 1.2-8 1.2-9 Instructions sur bits Instructions sur mots Instructions sur chaîne de bits Instructions sur chaîne d’octets Instructions sur tableaux de mots Instructions sur programme Instructions sur interruptions Instructions d’entrées/sorties explicites Instructions sur blocs fonctions 1/3 1/3 1/4 1/4 1/5 1/5 1/6 1/6 1/7 Ce chapitre se termine à la page 1/8 1/1 Sans titre-6 1 15/01/96, 11:59 D 1.1 Principe Le langage littéral permet la réalisation de programmes par écriture de lignes de programmation, constituées de caractères alphanumériques. La ligne de programmation constitue l’entité du langage littéral. L’association de plusieurs lignes de programmation définit un programme. L’élément principal de la ligne de programmation est constituée par la phrase littérale. Il existe 3 types de phrase : • la phrase action, • la phrase conditionnelle, • la phrase itérative. < ! L I F : WH I L E T H E N E L S E D O < P HR A S E A C T I ON Les principales instructions du langage littéral sont : D Formulaire programmation Litteral • les actions sur bit ou sur mot, • les instructions conditionnelles, • les opérations logiques ou arithmétiques en simple ou double longueur, • les comparaisons, • les branchements, • les opérations sur tableaux, • les tests et les actions sur les différents blocs fonctions (Temporisateur, Monostable, Compteur, Registre...). ! SET O1 5 , 3 < P HR A S E COND I T I ONN E L L E ! IF I1,4 THEN SET O1 7 , 2 ELSE SET O1 7 , 1 < PHRA S E I TERAT I VE ! WH I L E B5 D O W 1 * 3→W 2 Le langage littéral peut être utilisé pour programmer n’importe quelle tâche. Il peut être mixé avec les autres langages (Contacts ou Grafcet). 1/2 Sans titre-6 2 15/01/96, 11:59 1 Présentation du langage littéral PL7-3 1.2 Liste des instructions 1.2-1 Instructions sur bits Désignation Exemple Fonction Bit NOT (bit) RE (bit) FE (bit) → SET RESET + . ( ) I1,3 NOT W4,3 RE (I17,9) FE (I4,F) → O24,A SET B27 RESET SY17 I1,3+NOT B4 O14,5 . B28 NOT (B12.I1,4) O1,7.(I4,4+B12) Test de l’état du bit Test de l’état inverse du bit Test du front montant du bit Test du front descendant du bit Affectation du résultat logique dans bit Mise à l’état 1 du bit dans phrase action Mise à l’état 0 du bit dans phrase action Somme logique de deux instructions Produit logique de deux instructions Permet de considérer une expression booléenne comme un objet D 1.2-2 Instructions sur mots Désignation Exemple Fonction mot simple longueur mot double longueur → W1450 CDW128 → DW164 → W1680 Lecture du contenu d’un mot simple ou double longueur Transfert du résultat d’une expression arithmétique dans un mot INC mot DEC mot INC W28 DEC W340 Incrémentation du contenu du mot Décrémentation du contenu du mot SHL i (mot) SHR i (mot) SLC i (mot) * SHL 8 (W20) * SHR 6 (COM3,2) * SLC 3 (W0) SRC i (mot) * SRC 10 (W1) Décalage logique à gauche de i positions Décalage logique à droite de i positions Décalage circulaire à gauche de i positions Décalage circulaire à droite de i positions DTB (mot) BTD (mot) ATB (tableau) → mot BTA (mot) → tableau GTB (mot) * DTB (CW9) * BTD (T3,V) ATB (W20[3]) BTA (C9,V) * GTB (W20) Transcodage BCD → binaire Transcodage binaire → BCD Transcodage ASCII → binaire Transcodage binaire → ASCII Transcodage Gray → binaire > >= < <= = <> [W20>1460] [DW4>=DW9] [DW7<CDW10] [W6<=T4,V] [W0=CW27] [C4,V<>140] Comparaison supérieure à Comparaison supérieure ou égale à Comparaison inférieure à Comparaison inférieure ou égale à Comparaison égale à Comparaison différente de 1/3 Sans titre-6 3 15/01/96, 11:59 Désignation Exemple Fonction + * / REM SQRT CW29+500 DW48-W66 W33*CW4 DW4 / 16 W61 REM W12 SQRT (W5) Addition Soustraction Multiplication Division Reste d’une division Extraction de racine carrée AND OR XOR CPL * W24 AND W5 * W103 OR CW4 * W32 XOR W3 CPL (W459) ET logique (intersection) OU logique inclusif (union) OU logique exclusif (disjonction) Complément logique ( ) (W5 OR W6) + W7 Permet de considérer une expression arithmétique comme un seul objet Les instructions sur objets mots portent sur des mots simple ou double longueur. Les instructions repérées * ne portent que sur des mots simple longueur. D 1.2-3 Instructions sur chaîne de bits Désignation Exemple Fonction Chaîne de bits → chaîne de bits Chaîne de bits → mot Mot → chaîne de bits Valeur immédiate → chaîne I0,0[8] → B2[8] Transfert de l’état de n bits dans n autres bits Transfert de l’état de n bits dans un mot I14,4[9] → W9 W6 → O4,0[16] H’00FF’ → B20[16] Transfert du contenu d’un mot dans n bits Transfert d’une valeur immédiate dans n bits Une chaîne de bits est un ensemble de n bits de même type : entrées I, sorties O, bits interne B. 1.2-4 Instructions sur chaîne d’octets Désignation Exemple Fonction SLCWORD SLCWORD(W1;W100) Décalage circulaire de 1 octet vers la gauche, sur une zone de n octets définie à partir d’une adresse source 1/4 Sans titre-6 4 15/01/96, 11:59 1 Présentation du langage littéral PL7-3 1.2-5 Instructions sur tableaux de mots Désignation Exemple Fonction Initialisation d’un tableau 0 → W0[150] Transfert d’une valeur immédiate ou du contenu d’un mot dans tous les mots du tableau Transfert dans un autre tableau → W20[16] → W30[30] Transfert des contenus des mots origines dans les mots correspondants du tableau destinataire Opérations arithmétiques + - * / REM W140[25] +W200[25] Opérations arithmétiques entre les mots de même rang de deux tableaux Opérations logiques AND OR XOR W40[10] OR W12[10] Opérations logiques entre les mots de même rang de deux tableaux Opérations sur tous les mots d’un tableau + - * / REM AND OR XOR W10+W34[8] Opérations entre le contenu d’un mot, ou une valeur immédiate ou le résultat d’une expression arithmétique et tous les mots du tableau Sommation des mots d’un tableau CW30[30] + Addition de tous les mots du tableau EQUAL EQUAL (W4[15]; W20[15]) → W0 Recherche d’égalité entre les mots de même rang de deux tableaux. Le rang des premiers mots dissemblables est rangé dans le mot résultat SEARCH SEARCH (W4[15]; W43) → W0 Recherche du contenu d’un mot dans tous les mots d’un tableau. Le rang du premier mot identique est rangé dans le mot résultat D Un tableau est un ensemble de n mots de même type : mots internes simple ou double longueur, mots constants simple ou double longueur. Dans les opérations de transfert ou d’initialisation des tableaux, ceux-ci sont indexables. Exemples : CW3(W2)[10] → W15(W100)[10] CW3(W2)[10] → W15[10] CW3[10] → W15(W100)[10] 1.2-6 Instructions sur programme Désignation Exemple Fonction JUMP Li JUMP L145 Saut à la phrase étiquetée CALL SRi CALL SR11 Appel de sous-programme HALT HALT Arrêt de l’application. Relancer l’exécution de l’application par INIT 1/5 Sans titre-6 5 15/01/96, 11:59 1.2-7 Instructions sur interruptions Désignation Fonction READINT READINT (I3;B1) Test de l’interruption MASKINT MASKINT (I3) Masquage de l’interruption DMASKINT DMASKINT (I3) Démasquage de l’interruption ACKINT ACKINT (I3) Acquittement de l’interruption SETIT SETIT (I3) Génération d’une interruption vers un coupleur 1.2-8 D Exemple Instructions d’entrées/sorties explicites Désignation Exemple Fonction READBIT READBIT (I14;B0) Acquisition explicite des entrées T.O.R d’un module WRITEBIT WRITEBIT (B20;I27) Mise à jour explicite des sorties T.O.R d’un module READREG READREG (I16;W4) Acquisition explicite des registres coupleur WRITEREG WRITEREG (W8;I127) Mise à jour explicite des registres coupleur READEXT READEXT(I16;W50;W1) Acquisition explicite de n mots de la zone message de la mémoire partagée d’un coupleur WRITEEXT WRITEEXT(W50;I15;W1) Mise à jour explicite de n mots de la zone message de la mémoire partagée d’un coupleur 1/6 Sans titre-6 6 15/01/96, 11:59 1 Présentation du langage littéral PL7-3 1.2-9 Instructions sur blocs fonctions Désignation Exemple PRESET START RESET Fonction Type de bloc PRESET T12 Mise à la valeur de présélection [T] [C] START TXT0 Commande [T] [M] START CTRL2 Lancement tâche périodique [CTRL] RESET C34 Remise à zéro [C] [R] [CTRL] [TXT] UP UP C4 Incrémentation compteur [C] DOWN DOWN C4 Décrémentation compteur [C] STOP STOP T103 Arrêt évolution temporisateur [T] PUT PUT R25 Stockage dans registre [R] GET GET R25 Déstockage dans registre [R] INPUT INPUT TXT12 Réception message [TXT] OUTPUT OUTPUT TXT12 Emission message [TXT] EXCHG EXCHG TXT12 Emission et réception d'un message [TXT] EXEC EXEC DGAXM1 Exécution d’un OFB [OFB] READTLG READTLG(I15;W1) Lecture de la zone télégramme d’un coupleur MAPWAY, ETHWAY ou FIPWAY et recopie de son contenu dans le buffer réception du bloc texte TLG [TLG] D 1/7 Sans titre-6 7 15/01/96, 11:59 D 1/8 Sans titre-6 8 15/01/96, 11:59 Les phrases du langage littéral Les phrases du langage littéral Sous chapitre 2 Chapitre 2 Page 2.1 Généralités 2/2 2.2 Structure générale 2/3 2.3 Commentaires 2/4 2.4 Etiquette 2/5 2.5 Phrase action 2/6 2.6 Phrase conditionnelle 2/7 2.7 Phrase itérative 2/8 Ce chapitre se termine à la page 2/8 2/1 D 2.1 Généralités Un programme écrit en langage littéral se compose d’une suite de lignes de programmation. Lignes de programmation Dans sa forme générale, la ligne de programmation comprend un commentaire et une phrase littérale débutant par un point d’exclamation et repérée par une étiquette. Le commentaire et l’étiquette sont optionnels. < Commentaire ! Etiquette:phrase littérale < Démarrage pompe ! L16 : SET O3,2 < Commentaire ! Phrase littérale < Quantité écoulée ! W6 + W7 → W8 ! Etiquette:Phrase litterale ! L19 : SET B5; RESET O3,5 ! Phrase littérale ! IF [W8 > 130] THEN JUMP L32 D Les phrases littérales Les trois types de phrases du langage littéral sont : la phrase action, la phrase conditionnelle, la phrase itérative. Phrase action Action unique Action; action; action ! ! RESET B6 B1.B3 → O4,6; W4+W5 → W9; SET B9 ! ! IF B3 THEN JUMP L5 IF B4 THEN SET B6 ELSE RESET B4 ! WHILE [W5 > 8] DO INC W5... Phrase conditionnelle IF... THEN... IF... THEN... ELSE... Phrase itérative WHILE... DO... Règles L’ensemble des caractères de la phrase littérale ne doit pas dépasser 512 caractères. 2/2 2 Les phrases du langage littéral 2.2 Structure générale Ligne de programmation < COMMENTAIRES ! ETIQUETTE : PHRASE LITTERALE PHRASE ACTION Elle permet d'agir directement sur les objets et d'effectuer une action ou une suite d'actions EXPRESSION BOOLEENNE Objet bit EXPRESSION ARITHMETIQUE Objet mot Actions sur bits Ex. SET B10; T4,D → 01,A Actions sur mots Ex. INC W10; CW16 → W0 Actions sur programme Ex. CALL SR63 D Actions sur blocs fonctions Ex. START T14; UP C0 Actions sur tableaux PHRASE : IF CONDITIONNELLE EXPRESSION BOOLEENNE Les actions sont asservies au résultat d'un ou de plusieurs tests. PHRASE ITERATIVE :WHILE Elle permet d'effectuer des actions conditionnées au résultat d'un test. Ces actions sont exécutées tant que le test est vrai. L'expression booléenne Ex. 0 → W140[34] THEN Phrase action ELSE Phrase action DO Phrase action EXPRESSION BOOLEENNE : elle se caractérise par son résultat logique : 1 ou 0. L'expression arithmétique : elle se caractérise par son résultat qui est une valeur numérique sur 16 ou 32 bits, donc obtenu par des opérations sur mots. 2/3 2.3 Commentaires Un commentaire peut être associé à chaque ligne de programmation. Structure Dans un dossier ou en lecture de programme, le commentaire apparaît devant la phrase littérale et débute par le signe <. → Début de commentaire < Commentaire (78 caractères maximum) Ligne de programmation ! Phrase littérale Règles • Le commentaire n’est pas obligatoire dans une ligne de programmation, • Le commentaire peut définir à lui seul une ligne de programmation, • En cas de suppression d’une ligne de programmation, le commentaire qui lui est associé est également supprimé, D • Le nombre maximum de caractères d’un commentaire est de 78, • Tous caractères alphanumériques et signes sont possibles dans un commentaire, à l’exception des caractères : return et line feed, • Le commentaire est mémorisé dans l’espace programme de la mémoire utilisateur. Il n’interfère pas sur les temps d’exécution du programme mais consomme de la mémoire. Exemples : < Séquence de calcul ! W5 + W4 → W6 ligne avec commentaire ! W6 * 12 → W7 ligne sans commentaire < Contrôle fonctionnement pompe ! IF I4,6 THEN SET B3 ELSE JUMP L12 2/4 ligne avec commentaire Les phrases du langage littéral 2.4 2 Etiquette L’étiquette permet de repérer une ligne de programmation dans un module de programme, ce qui permet d’utiliser les instructions de branchement (JUMP) et de lire rapidement un programme à partir du terminal. Structure L’étiquette se situe devant la phrase à repérer à la suite du point d’exclamation. Elle débute par la lettre L (Label) suivie d’un repère compris entre 1 et 999 et est séparée de la phrase par deux points. Chaque entité de programme (tâche, sous-programme, étape...) peut contenir jusqu’à 256 étiquettes. ! L 230 : Phrase littérale Séparateur Repère d'étiquette: 1 à 999 Début d'étiquette Début de phrase D Règles • L’étiquette n’est pas obligatoire dans la phrase littérale, • L’ordre des repères peut être quelconque dans un programme et ne modifie pas l’ordre de scrutation, • Dans une même entité de programme (tâche, sous-programme, étape...), un repère d’étiquette ne peut être utilisé qu’une seule fois. • Le branchement vers une étiquette se fait par l’instruction JUMP suivie du repère d’étiquette (exemple : JUMP L18), • Dans une même entité de programme, le branchement peut indifféremment s’effectuer vers une étiquette amont ou aval. Exemples : ! L122 : IF I2,3 THEN JUMP L18 ! L17 : W2 + W5 → W12 ! L18 : SET B15 2/5 2.5 Phrase action La phrase action permet d’agir sur des bits, des mots, des blocs fonctions ou le programme de l’automate. Elle est utilisée dans la phrase conditionnelle, dans la phrase itérative ou seule. ! Phrase action ! IF... THEN... Phrase action ! WHILE...DO... Phrase action ELSE... Phrase action Structure La phrase action est constituée d’une action ou d’une suite d’actions séparées par des points virgules. Action Action ; Action ; Action ; Action ; → Objet bit B1 + I4,8 → O1,7 → Objet mot W5 * W10 → W14 Types d’actions D . Affection de bit Expression booléenne . Affection de mot Expression arithmétique . Action sur bit SET O12,5 . Action sur mot DEC DW32 . Action sur programme CALL SR4 . Actions diverses READBIT (I4,8;B112) . Action sur tableau CW10[30] → W100[30] . Action sur bloc fonction START T12 Règles • Le nombre d’actions d’une phrase action n’est limité que par le nombre de caractères admis dans la phrase littérale (512), • Les actions sont exécutées dans l’ordre de leur écriture. Exemples : ! L27 : SET B2; W3 + 4 → W7; PRESET C2; B3.I4,3 → O2,6 2/6 Les phrases du langage littéral 2.6 2 Phrase conditionnelle La phrase conditionnelle permet d’exécuter ou non des actions en fonction du résultat d’une expression booléenne (voir chapitre 3). Structure Il existe deux structures de phrase conditionnelle : ! IF Expression booléenne THEN Phrase Action ! IF Expression booléenne THEN Phrase action ELSE alors actions sinon actions ! Si condition vérifiée Phrase action Règle • Dans les phrases conditionnelles, la complexité de l’expression booléenne à la suite du IF et le nombre d’actions à la suite du THEN et du ELSE ne sont limités que par le nombre de caractères admis dans la phrase littérale. Exemples : ! IF I2,4 . B15 THEN SET O4,3 ! IF B12 THEN SET O5,2; INC W18 ELSE I3,4 → O4,7 Si l’entrée I2,4 et le Bit B15 sont à 1, alors la sortie O4,3 est mise à 1. Si le bit B12 est à 1, alors la sortie O5,2 est mise à 1 et le mot W18 est incrémenté, sinon (bit B12 à 0) l’image de I3,4 est transférée dans O4,7. 2/7 D 2.7 Phrase itérative La phrase itérative permet d’effectuer des actions tant que le résultat d’une expression booléenne est vérifiée. Structure La phrase itérative débute par le mot WHILE (tant que) suivi d’une expression booléenne, puis du mot DO (faire) qui précède la phrase action. ! WHILE Expression booléenne ! Tant que condition vérifiée DO Phrase action faire actions Traitement While Expression Booléenne 0 non vérifié 1 vérifié D Do Exécution des actions Vers exécution ligne suivante Règle • L’utilisation de cette phrase nécessite une attention particulière du fait qu’au sein d’une tâche, tant que l’expression booléenne est vérifiée, seule la phrase itérative à l’exception de toute autre est exécutée. Il est donc nécessaire de limiter la durée d’exécution de cette phrase afin de ne pas dépasser la période définie lors de la configuration de la dite tâche. Exemple : ! WHILE B10 . [W5<8] DO INC W5; W6 + 12 → W6 Tant que le bit 10 est à l’état 1 et que le mot W5 est inférieur à 8, le mot W5 est incrémenté et la valeur 12 est additionnée au mot W6. Quand W5 atteint la valeur 8 ou que le bit B10 est à l’état 0, les actions ne sont plus exécutées et la ligne de programmation suivante est alors exécutée. ! IF [W2 = 0] Cet exemple permet de ranger dans le THEN JUMP L18 mot W3 le rang du premier bit à 1 renELSE 0 → W3 contré dans le mot W2. ! WHILE NOT W2,0 DO SHR 1 (W2) → W2; INC W3 2/8 L'expression booléenne L'expression booléenne Sous chapitre 3 Chapitre 3 Page 3.1 Généralités 3/2 3.2 Structure 3/2 3.3 Adressage des objets bits 3/3 3.4 Test sur bit 3/4 3.5 Expression de front 3/5 3.6 Comparaison numérique 3/7 3.7 Inversion logique 3/9 3.8 ET/OU logique 3/10 3.9 Parenthèse 3/11 Ce chapitre se termine à la page 3/12 3/1 D 3.1 Généralités L’expression booléenne est caractérisée par son résultat logique 0 ou 1. Elle peut être utilisée : Dans la phrase action Expression booléenne → Objet bit → Signe d'affectation Dans la phrase conditionnelle ! IF Expression booléenne THEN Action ! IF Expression booléenne THEN Action ELSE Action Dans la phrase itérative ! WHILE Expression booléenne DO Action D 3.2 Structure Opérande booléen L’expression booléenne se compose d’opérandes booléens et d’opérateurs. Opérande booléen Exemples : B8 RE(I4,5) [W5 < 12] (B1+I2,3) L’opérande booléen peut être : • • • • un objet bit (indexé ou non) une expression de front une comparaison numérique une expression booléenne entre parenthèse Inversion logique L’opérateur NOT effectue l’inversion logique de l’opérande booléen. NOT Opérande booléen Exemple : NOT I13,9 3/2 L’instruction NOT porte sur l’ensemble des opérandes booléens décrits ci-dessus. 3 L'expression booléenne ET logique L’opérateur • effectue le produit logique entre deux opérandes Opérande 1 • Opérande 2 Exemple : B12 . NOT B15 Les opérandes du ET logique peuvent être : • un opérande booléen, • un opérande booléen inversé. OU logique L’opérateur + effectue la somme logique de deux opérandes. Opérande 1 + Opérande 2 Exemples : I2,1 + B4 B1 . B2 + B5 Les opérandes du OU logique peuvent être : • un opérande booléen, • un opérande booléen inversé, • le résultat d’un ET logique. Règles générales • Dans sa forme la plus élémentaire, l’expression booléenne ne comporte qu’un seul opérande : I4,5, • Dans sa forme la plus générale, l’expression booléenne est composée des différentes instructions et des différents opérandes décrits précédemment : I4,7 . RE(I4,8) +[W14 * CW1 < 1250] + B12 . (I3,5 + O6,2), • Le nombre d’instructions et d’opérandes d’une expression booléenne n’est limité que par le nombre de caractères admis dans la phrase littérale la composant, • Tous les objets bits décrits précédemment peuvent être utilisés dans l’expression booléenne. Ces bits sont indexables. Priorité d’exécution des instructions Dans l’expression booléenne, la priorité d’exécution des différentes instructions respecte l’ordre suivant : ordre de priorité : 1 instructions : NOT 3.3 2 • 3 + Adressage des objets bits Les caractéristiques et la signification détaillé des objets bits sont données dans "Généralités" Intercalaire A chapitre 2. 3/3 D 3.4 Test sur bit Test de l’état direct d’un bit : Objet bit Exemple de test : I5,3 Etat du bit Résultat du test 1 1 0 0 Exemples de phrases : ! IF I2,4 THEN.... ELSE...... Si I2,4 vaut 1 les actions situées à la suite du THEN sont effectuées. Si I2,4 vaut 0 les actions situées à la suite du ELSE sont effectuées. ! B15 → O3,7 D L’image du bit B15 (1 ou 0) est recopiée dans l’état courant du bit 7 du module de sortie 3. Test de l’état inverse d’un bit Le test de l’état inverse d’un bit s’exprime par l’objet bit concerné, précédé de NOT ou de N NOT ou N Objet bit Exemple de test : NI5,3 Etat du bit Résultat du test 1 0 0 1 Nota : Les autres utilisations du NOT sont développées dans le chapitre 3.7. Exemple de phrase : ! IF NOT B12 THEN 3/4 Les actions situées après le THEN ne sont effectuées que si le bit B12 est à l'état 0. 3 L'expression booléenne 3.5 Expression de front L’expression de front est un opérande booléen qui permet de détecter le Front Montant (Rising Edge) ou le Front Descendant (Falling Edge) d’un bit. Structure Front montant RE (Bit) Les bits sur lesquels peuvent être testés les front montants ou descendants sont : Exemple : RE(I3,5) Front descendant • les bits internes • les bits d’entrées • les bits de sorties B10, I3,2, O7,5. FE (Bit) Ces bits sont indexables. Exemple : FE(B15) Rappel sur les états d’un bit Dans la mémoire bits de l’automate, les bits internes et d’entrées/sorties sont représentés par trois états : courant, antérieur et forçage. F A C Etat de forçage Etat antérieur Etat courant La mise à jour de ces bits se fait pour : • les bits d’entrées; par le système lors de l’acquisition des entrées en début de tâche, • les bits de sorties et internes; par le programme lors de l’exécution des instructions SET, RESET ou → . Lors de la mise à jour d’un bit, l’image de l’état courant (correspondant à la mise à jour précédente) est transférée dans l’état antérieur, l’état courant prenant l’état actuel du bit. Mise à jour par programme ou système 0 1 1 0 0 1 1 Etat courant 0 0 1 1 0 0 1 Etat antérieur t 3/5 D Remarques : Lorsque les instructions SET, RESET et → sont dans une phrase conditionnelle ou itérative, la mise à jour des bits affectés n’est assurée que si l’expression booléenne de la phrase est : • vérifiée lorsque ces instructions sont situées après THEN ou DO, • non vérifiée lorsque ces instructions sont situées après ELSE. Le résultat du test du front montant (ou descendant) d’une entrée est à 1 : • à partir de la détection par le système du passage de 0 à 1 (ou 1 à 0) du bit concerné, • jusqu’à la nouvelle exécution de l’instruction de ce bit, séparé par une mise à jour de celui-ci; Front sur une entrée • Front montant : le résultat logique d’un test de front montant est égal à 1 quand l’état courant vaut 1 et que l’état antérieur vaut 0, Exemple : ! IF RE(I3,4) THEN....... D Etat réel de l'entrée I2,1 1 0 Acquisition par le système Etat courant 1 0 Etat antérieur 1 0 Valeur du front montant 1 0 t • Front descendant : le résultat logique d’un test de front descendant est égal à 1 quand l’état courant vaut 0 et que l’état antérieur vaut 1, Exemple : ! FE(B1(W35)) → O3,2 Ecriture ou forçage de bit par le terminal • Lors du forçage à 1 ou 0 du bit à partir du terminal, l’état forçage est mis à 1, l’état courant prend la valeur du forçage demandé (0 ou 1) et l’état antérieur est figé. Ces états n’évoluent plus jusqu’à ce que : - le forçage soit supprimé et le bit concerné mis à jour, - le forçage inverse soit demandé, seul l’état courant est modifié. • La mise à 1 (SET) ou à 0 (RESET) d’un bit par le terminal provoque la mise à jour des états courants et antérieur de ce bit (cette mise à jour est assurée avant l’acquisition des entrées dans la tâche maître). 3/6 L'expression booléenne 3.6 3 Comparaison numérique Cette instruction permet de comparer deux termes numériques. Elle constitue un opérande booléen utilisable dans une expression booléenne. Structure La comparaison numérique est composée de 2 termes numériques à comparer et d’une instruction de comparaison saisis entre crochets. [ Opérande numérique > Opérande numérique ] → Instruction de comparaison Exemple : [W12 > 180] [ Expression arithmétique > Opérande numérique ] → Instruction de comparaison Exemple : [W12 * W11 < 10] • Opérande numérique L’opérande numérique peut être : D - un objet mot simple ou double longueur, indexé ou non, - une valeur immédiate. • Expression arithmétique L’expression arithmétique permet d’effectuer une suite d’opérations numériques portant sur plusieurs opérandes numériques (voir chapitre 4). Instructions de comparaison Les différentes instructions de comparaison possibles sont les suivantes : > : Test si premier terme supérieur au deuxième terme, >= : Test si premier terme supérieur ou égal au deuxième terme, < : Test si premier terme inférieur au deuxième terme, <= : Test si premier terme inférieur ou égal au deuxième terme, = : Test si premier terme égal au deuxième terme, <> : Test si premier terme différent du deuxième terme. 3/7 Règles • Les deux termes de la comparaison sont considérés comme des valeurs algébriques, • Les deux termes de la comparaison peuvent être exprimés dans la même longueur ou dans des longueurs différentes 1, • Le résultat de l’expression arithmétique pouvant être erroné à la suite d’un débordement, le résultat de la comparaison peut s’avérer incorrect. La gestion et le test du bit système de débordement permettent de résoudre ce problème (voir "COMMUNS LANGAGES A CONTACTS ET LITTERAL" intercalaire E chapitre 2.5). • Les objets mots utilisés dans les deux termes sont indexables. Exemples : D ! IF [W5 > 25] THEN.... Si W5 est plus grand que 25 alors... ! WHILE [(W6+W12) * 3 = W9] DO.... Tant que le résultat de l’expression arithmétique est égal au contenu de W9 effectuer... ! [DW9 - DW15 <> CDW0] → O4,3 Si le résultat de l’opération DW9DW15 est différent du contenu de CDW0, la sortie O4,3 est à l’état 1. ! IF [W9(W5) <= T2,V] THEN.... ELSE.... Si W9(W5) est égal ou inférieur à la valeur courante du temporisateur T2 alors... sinon... Si le contenu de W5 est égal à 6, W9(W5) représente le mot W15. 1 3/8 DWi > Wj : si le contenu du double mot n'appartient pas au domaine de définition des simples mots (-32768 à +32767), il y a débordement lors de cette comparaison (SY18 = 1). L'expression booléenne 3.7 3 Inversion logique L’inversion logique permet de tester l’état inverse d’un opérande booléen. Structure L’inversion logique d’un opérande est obtenue en le faisant précéder de l’opérande NOT NOT Objet bit NOT B6 NOT Expression de front NOT RE (I2,4) NOT Comparaison numérique NOT [W12 * 8 < W2] NOT Expression booléenne NOT (B2 • I3,6 + I7,2) Règles • L’inversion logique n’affecte qu’un seul opérande booléen, • Le nombre d’opérateurs NOT n’est pas limité dans une même expression booléenne, • L’indexation des objets des opérandes précédés de l’opérateur NOT est possible. Exemples : ! NOT I4,3 → B5 Le bit B5 prend l’état inverse de celui de l’entrée I4,3, ! IF NOT I5,4.B5 THEN... Si l’entrée I5,4 est à l’état 0 et si le bit B5 est à l’état 1 alors... ! IF NOT (I2,6.B2) THEN... Si l’entrée I2,6 ou le bit B2 est à l’état 0 alors... ! IF NOT(B12.NOT[W2>6])+NOT B8 THEN... Utilisation de plusieurs opérateurs ELSE NOT dans une même expression. 3/9 D 3.8 ET/OU logique Structure Opérande 1 D • Opérande 2 Opérande 1 + Opérande 2 → Opérateur ET logique → Opérateur OU logique Le résultat du ET logique de deux opérandes booléens n’est égal à 1 que si ces 2 opérandes sont à l'état 1. Le résultat du OU logique de deux opérandes booléens est égal à 1 si au moins l'un des 2 opérandes est à l'état 1. Opérations Opérateur Opérandes 1 et 2 ET logique OU logique • + • • • • • Exemples B8 . I1,2 RE(I12,9) . B23 I2,5 . [W12<20] (B5+B6) . (B12+I4,2) objet bit (ET/OU) expression de front (ET/OU) comparaison numérique (ET/OU) expression booléenne (OU) expression booléenne entre parenthèse (ET) • résultat d’un ET logique (OU) B1 + I4,5 FE(I3,6) + B7 I3,4 + [W7>=9] (B4+B5.B12) + I7,4 B7 . I3,2 + B18 Règles • le nombre de ET/OU logiques à l’intérieur d’une expression booléenne n’est pas limité, • l’opérateur NOT peut précéder les opérandes, • l’indexation est possible sur les objets des opérandes. Traitement Dans une même expression booléenne comprenant plusieurs opérateurs logiques, le traitement est réalisé suivant l’ordre indiqué ci-dessous. B1 . B2 . B3 1 2 B1 . (I2,3 + B4) . (B6 + B7) 1 3 2 4 B1 + B2 + 1 2 B1 + (B2 . I3,2) + (B7 . B9) 1 3 2 4 3/10 B3 ET logique OU logique 3 L'expression booléenne 3.9 Parenthèse Les parenthèses facilitent l’écriture d’expressions booléennes complexes. Elles permettent de considérer une expression booléenne comme le résultat booléen (1 ou 0) d’une expression booléenne de niveau supérieur (le niveau 0 est considéré comme le niveau le plus élevé). Structure ( ( ( ( a + b ) . NOT c ) + ( ( d . NOT ( e + f ) ) + g ) ) + .... Exp. bool. Niv. 4 Exp. booléenne Niv. 3 Niv. 2 Niv. 1 Niv. 0 .... Les opérandes a, b, c, d, e, f, g peuvent être : D • un objet bit, • une expression de front, • une comparaison numérique Exemple : (I2,4 + [W5>2].(B1 + RE(I2,6))) Règles • Toute ouverture de parenthèse nécessite une fermeture, • Une fermeture de parenthèse se rapporte à l’ouverture précédente non fermée, • Le nombre de parenthèses dans une expression booléenne n’est pas limité, • Chaque parenthèse située à l’intérieur d’autres parenthèses apporte un niveau de traitement supplémentaire, • Le nombre de niveaux de parenthèses dans une expression booléenne n’est pas limité, • Un NOT devant une parenthèse inverse le résultat de l’expression booléenne entre parenthèses. Traitement Dans une expression booléenne comprenant plusieurs niveaux de parenthèses le traitement est réalisé suivant l’ordre de numérotation indiqué ci-dessous : ( ( (B1 + B2) . I3,2) + ( (B6 . NOT (I4,6 + I2,1) ) + I3,2) )... 1 3 2 4 5 6 7 8 3/11 Exemples : ! IF B15 + (I3,2 . (I3,5 + I3,7)) THEN... niv.2 niv.1 niv.0 Le résultat de l’expression ( niveau 0) est obtenu par le traitement suivant : • Résultat niv.2 = I3,5+I3,7 • Résultat niv.1 = niv.2.I3,2 • Résultat niv.0 = niv.1+B15 ! IF NOT ([W5>2] . B6 + I3,2) THEN... L’opérateur NOT devant la parenthèse inverse le résultat logique de l’expression booléenne entre parenthèses. D 3/12 L'expression arithmétique L'expression arithmétique Sous chapitre 4.1 Généralités 4.1-1 Utilisation dans la phrase action 4.1-2 Utilisation dans l’expression booléenne 4 Chapitre 4 Page 4/2 4/2 4/2 4.2 Adressage des objets mots 4/3 4.3 Structure 4/3 4.3-1 4.3-2 4.3-3 4.3-4 4.3-5 4.3-6 4/3 4/3 4/4 4/4 4/5 4/5 Opérandes numériques Opérations à un seul opérande Opérations arithmétiques Opérations logiques Règles générales Priorité d’exécution des instructions 4.4 Parenthèses 4/6 Ce chapitre se termine à la page 4/8 4/1 D 4.1 Généralités L’expression arithmétique permet d’effectuer une suite d’opérations numériques portant sur plusieurs opérandes numériques. 4.1-1 Utilisation dans la phrase action Transfert dans un objet mot : Le résultat numérique des opérations effectuées dans l’expression arithmétique est transféré dans un objet mot. Expression arithmétique → Objet mot → Instruction de transfert Exemples : W8 * (W12 + 7) → W6(W125) W9 * DW5 - 6 / 3 → DW15 Transfert dans un tableau de mots : D Le résultat numérique des opérations effectuées dans l’expression arithmétique est transféré dans les mots du tableau. Expression arithmétique → Tableau de mots → Instruction de transfert Exemple : W426 + W8 AND H’00FF’ → W250[13] Il est également possible d’effectuer d’autres opérations numériques entre tableaux de mots. Ces opérations sont explicitées dans "COMMUNS LANGAGES A CONTACTS ET LITTERAL" intercalaire E, chapitre 3. 4.1-2 Utilisation dans l’expression booléenne L’expression booléenne permet d’effectuer des comparaisons numériques. Celles-ci peuvent faire appel à l’expression arithmétique quand il est nécessaire d’effectuer un traitement numérique avant la comparaison. [ Expression arithmétique > Opérande numérique ] → Instruction de comparaison Exemple : ! IF [DW8 + CW12 - 150 < CDW4] . I12,3 THEN.... expression booléenne expression arithmétique 4/2 L'expression arithmétique 4.2 4 Adressage des objet mots Les caractéristiques et la signification détaillée des objets mots sont données dans "Généralités" intercalaire A, chapitre 2. 4.3 Structure L’expression arithmétique est composée d’un ou plusieurs opérandes numériques et d’opérateurs arithmétiques et logiques. 4.3-1 Opérandes numériques L’opérande numérique représente une valeur qui peut s’exprimer sur 16 bits (simple longueur) ou 32 bits (double longueur). Opérande numérique Exemples : W237 CDW6(W4) B’4952' (W6 * CW7 + 150) L’opérande numérique peut être : • un objet mot simple ou double longueur (indexé ou non), • une valeur immédiate, • une expression arithmétique entre parenthèses. 4.3-2 Opérations à un seul opérande Opérateur ( Opérande ) Opérations Opérateurs Opérandes décalage logique décalages circulaires Transcodages SHL i - SHR i SLC i - SRC i • objets mots simple longueur (indexé ou non) • expression arithmétique simple longueur DTB - BTD BTA - GTB SQRT extraction de racine carré complément logique CPL Exemples : SHL 8 (W18) DTB (W15 AND H’00FF’) SQRT (DW56) L’utilisation de ces opérations est développée dans "COMMUNS LANGAGES A CONTACTS ET LITTERAL" intercalaire E chapitre 2. 4/3 D 4.3-3 Opérations arithmétiques Opérande 1 Opérateur Opérande 2 Opérations Opérateurs Opérandes 1 et 2 addition soustraction multiplication division reste + * / REM • objets mots simple longueur (indexé ou non) • valeur immédiate • expression arithmétique simple longueur entre parenthèses • résultat d’une opération à un opérande • résultat d’une opération arithmétique Exemples : W15 + DW12 (W27 - 15) * SQRT (W9) L’utilisation de ces opérations est développée dans "COMMUNS LANGAGES A CONTACTS ET LITTERAL" intercalaire E chapitre 2. D 4.3-4 Opérations logiques Opérande 1 Opérateur Opérande 2 Opérations Opérateurs Opérandes ET logique OU logique OU exclusif AND OR XOR • objets mots simple longueur (indexé ou non) • valeur immédiate • expression arithmétique simple longueur entre parenthèses • résultat d’une instruction à un opérande • résultat d’une opération arithmétique logique Exemples : SHR 3 (W2) AND H’3000' H’FF00' OR W3 * 5 L’utilisation de ces opérations est développée dans "COMMUNS LANGAGES A CONTACTS ET LITTERAL" intercalaire E chapitre 2. 4/4 4 L'expression arithmétique 4.3-5 Règles générales • Dans sa forme la plus élémentaire, l’expression arithmétique ne comporte qu’un seul opérande numérique. Exemple : W8 • Dans sa forme la plus générale, l’expression arithmétique est composée des différents opérateurs et des différents opérandes décrits précédemment. Exemple : W25 * 3 - DTB (W10) + SLC8 (W15 + W18) AND H’FF’ • Le nombre d’opérateurs et d’opérandes d’une expression arithmétique n’est limité que par le nombre de caractères admis dans la phrase littérale (512 maximum) qui inclut l’expression arithmétique. • L’ensemble des opérateurs porte sur des opérandes simple longueur dont le contenu peut varier de -32 768 à 32 767. Les opérateurs arithmétiques (addition, soustraction, multiplication, division, reste, extraction de racine carrée) portent également sur des opérandes double longueur. Le contenu d'un opérande double longueur peut varier de -2 147 483 648 à 2 147 483 647. • Les opérandes d’une même expression arithmétique peuvent être indifférement en simple ou double longueur : W6 * W15 + SQRT(DW6) / (W149(W8) + CDW29) AND H’FF’ • Un opérande ou une opération à un seul opérande peut être précédé du signe + ou - (par défaut, signe +) DTB (W5) * - W9 • Tous les objets mots peuvent être utilisés à l’intérieur d’une expression arithmétique. L’indexation de certains mots est possible. 4.3-6 Priorité d’exécution des instructions Dans l’expression arithmétique, la priorité des différentes instructions est respectée. L’exécution s’effectue dans l’ordre décrit ci-après : 1 → instruction à un opérande 2 * / REM → 3 + → 4 AND → 5 OR → 6 XOR Dans l’exemple ci-dessous l’exécution est réalisée suivant l’ordre de la numérotation : SQRT (W3) + W5 * 7 AND W8 XOR W5 OR W10 1 2 3 4 5 6 4/5 D 4.4 Parenthèses Les parenthèses facilitent l’écriture d’expression arithmétiques complexes. Elles permettent de considérer une expression arithmétique comme opérande d’une expression arithmétique de niveau supérieur. Le niveau 0 est considéré comme le niveau le plus élevé. Structure ( ( ( ( a + b ) * c ) - d ) + ( e / ( f AND g ) ) ) * SQRT ( h * i ) .... Niv. 4 Niv. 3 Niv. 3 Niv. 2 Niv. 2 Niv. 1 Niv. 2 Niv. 1 Niv. 0 D .... Les opérandes a, b, c, d, e, f, et g peuvent être : • un objet mot, • une valeur immédiate, • une instruction à un seul opérande. Règles • Toute ouverture de parenthèse nécessite une fermeture, • Une fermeture de parenthèse se rapporte à l’ouverture précédente non fermée, • Le nombre de parenthèses dans une expression arithmétique n’est pas limité, • Chaque parenthèse située à l’intérieur d’autres parenthèses apporte un niveau de traitement supplémentaire, • Le nombre de niveaux de parenthèses dans une expression arithmétique n’est pas limité, • Une instruction à un opérande peut précéder une expression entre parenthèses, elle agit sur le résultat de cette expression SLC 3 (W7 * W5), • Le résultat d’une expression entre parenthèses est de longueur identique à l’opérande le plus long qui la compose. Dans une expression arithmétique comportant des parenthèses, le traitement est réalisé dans l’ordre de numérotation indiqué ci-dessous. ((W5 AND W6) + W7) * W8 1 2 3 4/6 SHL 3 ((W9-W15)*W6) 1 2 3 L'expression arithmétique 4 Exemples : (W5 + (W6 * (W7 - W2)) niv.2 niv.1 niv.0 SQRT(W5 * DW2 / (W8 + DW12)) → DW6 Le résultat de l’expression (niveau 0) est obtenu par le traitement suivant : • Résultat niv.2 = W7-W2 • Résultat niv.1 = W6*niv.2 • Résultat niv.0 = W5+niv.1 Le calcul de la racine carrée porte sur l’expression arithmétique entre parenthèses. D 4/7 D 4/8 Actions Actions Sous chapitre 5.1 Utilisation 5.1-1 Généralités 5.1-2 Types d’actions 5.2 Actions sur bits 5.2-1 Affectation d’un bit 5.2-2 Mise à 1 ou 0 d’un bit 5.3 Actions sur chaîne d’octets 5.3-1 Décalage circulaire à gauche 5.4 Actions sur programme 5.4-1 5.4-2 5.4-3 5.4-4 Appel d’un sous-programme Retour de sous-programme Saut dans le programme Arrêt du programme 5.5 Actions sur interruptions 5.5-1 Génération d’une interruption 5.6 Actions explicites 5.6-1 Lecture immédiate de la zone message 5.6-2 Ecriture immédiate de la zone message 5 Chapitre 5 Page 5/2 5/2 5/2 5/4 5/4 5/5 5/5 5/5 5/6 5/6 5/6 5/7 5/7 5/8 5/8 5/9 5/9 5/9 5.7 Lecture d’un télégramme 5/10 Ce chapitre se termine à la page 5/10 5/1 D 5.1 Utilisation 5.1-1 Généralités Une action permet d’agir sur des objets bits ou mots, sur des blocs fonctions, sur des tableaux ou sur le programme. La phrase action est constituée d’une action ou d’une suite d’actions séparées entre elles par des points virgules (;). Elle peut être utilisée dans une phrase conditionnelle, une phrase itérative ou seule. Les différents types d’actions peuvent être intégrés dans une même phrase. ! IF D Expression Booléenne ! WHILE Expression booléenne ! Action ; Action THEN Action ; ELSE Action ;.... DO ; Action ;.... Action ; Action ;.... Action ; Action ; 5.1-2 Types d’actions Actions spécifiques au langage littéral Désignation Instructions Types d’actions Utilisation Actions sur bits → Bit SET RESET Affectation Mise à 1 Mise à 0 Voir chapitre 5.2 Actions sur chaîne d’octets SLCWORD Décalage circulaire Voir chapitre 5.3 Actions sur programme JUMP CALL RET HALT (*) Saut Appel sous-programme Retour sous-programme Arrêt du programme Voir chapitre 5.4 Actions sur interruptions SETIT (*) Génération d’une interruption Voir chapitre 5.5 5/2 (*) 5 Actions Désignation Actions explicites Instructions READEXT (*) WRITEEXT (*) Actions sur blocs fonctions PRESET, SET, RESET START STOP PUT, UP DOWN, GET READTLG (*) Types d’actions Utilisation Echange explicite zone message Echange explicite zone message Voir chapitre 5.6 Initialisation Voir chapitre 6 Voir chapitre 5.6 Démarrage Arrêt ou initialisation Autres Lecture télégramme Voir chapitre 6.7 Nota : les actions qui ne sont pas suivies de (*) sont également utilisables en langage à contacts mais leur écriture étant différentes, se reporter à "LANGAGE A CONTACTS" intercalaire C. Actions communes aux langages littéral et à contacts D Ces actions sont développées dans "COMMUNS LANGAGES A CONTACTS ET LITTERAL" intercalaire E Désignation Instructions Types d’actions Utilisation Actions sur chaîne de bits → Bit [i] Transfert Mise à 1 Mise à 0 Voir "COMMUNS LANGAGES" intercalaire E chapitre 1 Actions sur mots → Mot INC DEC Affectation Incrémentation Décrémentation Voir "COMMUNS LANGAGES" intercalaire E chapitre 2 Actions de Transcodage ASCII BTA ATB Binaire → ASCII ASCII → Binaire Actions sur → Mot [i] tableaux de mots +,-,*,/,REM AND, OR, XOR SEARCH EQUAL Actions sur programme MASKINT DEMASKINT READINT ACKINT Transfert Voir "COMMUNS Opérations arithmétiques LANGAGES" intercalaire E chapitre 3 Opérations logiques Recherches Comparaison Masquage interruption Démasquage interruption Test interruption Acquitt. interruption Voir "COMMUNS LANGAGES" intercalaire E chapitre 4 5/3 Désignation Instructions Types d’actions Utilisation Actions explicites READBIT Echange explicite bit entrée TOR Echange explicite bit sortie TOR Echange explicite registres d’entrée Echange explicite registre de sortie Voir "COMMUNS LANGAGES" intercalaire E chapitre 5 Exécution d’un OFB Voir "COMMUNS LANGAGES" intercalaire E chapitre 6 WRITEBIT READREG WRITEREG Actions sur bloc fonctions 5.2 D EXEC Actions sur bits 5.2-1 Affectation d’un bit L’instruction d’affectation représentée par → attribue à l’objet bit associé le résultat d’une expression booléenne (1 ou 0). Expression booléenne → Objet bit Le résultat d’une expression booléenne peut être transféré dans plusieurs objets bits par affectations successives. Expression booléenne ... → B8 ... → O4,2 ... → X78 ... → W7,2 → Objet bit → Objet bit L’instruction d’affectation agit sur l’ensemble des bits pouvant être écrits. Les principaux bits sont : • les bits internes, • les bits de sorties, • les bits systèmes (sans signification pour certains), • les bits étapes (uniquement dans le traitement préliminaire), • les bits extraits de mots internes, de mots constants ou de mots registres. Exemple : phrase action comprenant plusieurs affectation : ! I3,2 → O4,5 ; [W5 > 6] . (B1 + B14) → B7 → W15,2 5/4 → 5 Actions 5.2-2 Mise à 1 ou 0 d’un bit L’instruction SET permet de positionner un objet bit à l'état 1 SET L’instruction RESET permet de positionner un objet bit à l'état 0 Objet bit RESET ! IF B6 THEN SET O3,2; SET B9 Objet bit ! IF [W5 > 8] THEN RESET B15 ELSE RESET O7,8 Le bit reste dans l’état tant que l’instruction inverse n’est pas exécutée. 5.3 Actions sur chaîne d’octets 5.3-1 Décalage circulaire à gauche L’instruction SLCWORD permet d’effectuer un décalage circulaire de 1 octet vers la gauche sur une zone de longueur Lg_octets, débutant à l’adresse Source. SLCWORD (Source;Lg_octets) D Opérandes • le nombre d’octets (Lg_octets) est contenu dans un mot interne, • l’adresse Source est définie par un mot interne. Exemple : SLCWORD(W1;W100) avec W100 = 5 SLCWORD W1 01 00 • W2 03 02 • W3 FF 04 • ▲ pf ▲ PF • • ▼ PF pf W1 02 01 W2 04 03 W3 FF 00 5/5 5.4 Actions sur programme 5.4-1 Appel d’un sous-programme L’instruction CALL (appel) permet d’appeler un sous-programme. CALL Sous-programme SRi SRi représente le sous-programme appelé : i (repère de 0 à 127). Règles • Le retour d’un sous-programme se fait sur l’action suivant immédiatement l’instruction CALL. Dans le cas où l’instruction CALL est la dernière action d’une phrase, le retour s’effectue au début de la phrase suivante, • Un sous-programme peut appeler un autre sous-programme; le nombre d’appels en cascade est limité à 8, • Les sous-programmes sont affectés à une tâche, ils ne peuvent être appelés qu’à partir de la même tâche, • Le nombre de sous-programme affecté à une tâche doit être déclaré lors du mode configuration (voir Manuel "Modes Opératoires"). D Principe Call SR10 SR10 SR12 Call SR12 Call SR10 RET RET 5.4-2 Retour de sous-programme L’instruction RET (retour) est réservée aux sous-programmes et permet le retour vers le module appelant. Règle d’utilisation • L’instruction RET est implicite à la fin de chaque sous-programme, mais peut être utilisée pour un retour vers le module appelant avant la fin du sous-programme. Exemple : < ! ! ! 5/6 SOUS PROGRAMME SR12 IF W5>3 THEN 0 → W5;RET (W4 * CDW3) + W49 → DW26 RET Actions 5 5.4-3 Saut dans le programme L’instruction JUMP (saut) permet un branchement à une ligne de programmation repérée par une étiquette. JUMP Etiquette Li Li représente l’étiquette de la ligne sur laquelle est effectuée le branchement (i repère de 1 à 999 avec 256 étiquettes maximum). Règles • Un saut de programme se fait à l’intérieur d’une même entité de programmation (module principal d’une tâche MAIN, sous-programme SR, traitement préliminaire PRL...), • Un saut de programme se fait vers une ligne de programmation située en aval ou en amont. Dans le cas de saut amont, il faut faire attention au temps d’exécution du programme : le temps d’exécution du programme est alors allongé et peut entraîné un dépassement de la période de la tâche incluant le saut amont, • L’action de saut est immédiate; en conséquence, il est conseillé d’écrire, l’instruction JUMP en fin de phrase littérale, • L’instruction JUMP ne peut être employée dans un programme que si l’étiquette appelée à été préalablement déclarée. 5.4-4 Arrêt du programme L’instruction HALT dans un programme application permet l’arrêt de son exécution, ce qui a pour effet de figer les objets variables de ce programme. Pour être à nouveau exécuté, un programme ainsi arrêté, devra être initialisé (par la commande INIT). Les instructions qui suivent l’instruction HALT ne seront donc pas exécutées. 5/7 D 5.5 Actions sur interruptions 5.5-1 Génération d’une interruption L’instruction SETIT permet de générer une interruption vers un module intelligent. SETIT (Module) Opérande • le module est spécifié par Ixy avec : - x : numéro du bac, - y : emplacement du module dans le bac. Exemple : SETIT (I3) D 5/8 Actions 5.6 5 Actions explicites 5.6-1 Lecture immédiate de la zone message L’instruction READEXT permet la lecture immédiate de n_mots de la zone message de la mémoire partagée d’un Module, et le transfert de leur contenu dans un tableau de n mots débutant à l’adresse Destination. READEXT (Module;Destination;n_mots) Opérandes • le module est spécifié par Ixy avec : - x : numéro du bac, - y : emplacement du module dans le bac, • l’adresse Destination est définie par un mot interne, • le nombre de mots (n_mots) est contenu dans un mot interne. Exemple : READEXT (I3;W50;W1) D 5.6-2 Ecriture immédiate de la zone message L’instruction WRITEEXT permet l’écriture immédiate de n_mots de la zone message de la mémoire partagée d’un Module, à partir d’un tableau de n mots débutant à l’adresse Source. WRITEEXT (Source;Module;n_mots) Opérandes • l’adresse Source est définie par un mot interne, • le module est spécifié par Ixy avec : - x : numéro du bac, - y : emplacement du module dans le bac, • le nombre de mots (n_mots) est contenu dans un mot interne. Exemple : WRITEEXT (W20;I17;W1) 5/9 5.7 Lecture d’un télégramme L’instruction READTLG permet de lire un télégramme. Ceci revient à lire une zone message de taille fixe d’un coupleur réseau et à recopier son contenu dans le buffer de réception d’un bloc fonction texte TLG, initialisé en réception. READTLG (Module;Compte-rendu) Opérandes D • le module est spécifié par son adresse Ixy, avec : - x : numéro du bac, - y : emplacement du module dans le bac, • le compte-rendu est contenu dans un mot interne : 0 réception du télégramme réussie 4 télégramme trop long pour le buffer de réception du bloc TLG 5 adresse destinataire erronée 6 coupleur de réception en défaut 7 système de communication instable (en reconfiguration, ...) 8 télégramme déjà en cours de réception 9 pas de télégramme en attente 10 coupleur absent 11 coupleur présent mais non configuré 12 réception d’un télégramme refusé 13 pas de ressource en attente du télégramme (bloc TLG initialisé en réception) 14 télégramme reçu avec un mauvais BCC 15 problème d’accès à la file d’attente de réception des télégrammes Exemple : READTLG (I12;W10) 5/10 Fonctions d'automatismes 6 A Fonctions d'automatismes Sous chapitre Chapitre 6 Page 6.1 Fonction temporisateur 6/2 6.2 Fonction monostable 6/6 6.3 Fonction compteur 6/8 6.4 Fonction registre 6/10 6.5 Fonction contrôle 6/13 6.6 Fonction texte 6/15 Ce chapitre se termine à la page 6/18 6/1 B C D 6.1 Fonction temporisateur La fonction "Temporisateur" permet de commander avec retard des actions spécifiques. La valeur de ce retard est programmable et peut être modifiable ou non en mode REGLAGE ou DONNEES. Cette fonction comporte : • un numéro de fonction • une base de temps • une valeur courante • une valeur de présélection • une instruction "Préselection" • une instruction "Lancement" • une instruction "Arrêt" • un bit de sortie "Temporisateur en cours" • un bit de sortie "Temporisateur écoulé" Ti TB Ti,V Ti,P PRESET Ti START Ti STOP Ti Ti,R Ti,D Fonctionnement D La valeur courante est égale à la valeur de présélection tant que l’instruction PRESET Ti est exécutée, La fonction temporisateur évolue dès l’exécution de l’instruction START Ti et si les instructions PRESET Ti et STOP Ti ne sont pas exécutées : • la valeur courante Ti,V décroît de la présélection Ti,P vers 0, d’une unité à chaque impulsion de la base de temps TB, • le bit de sortie Ti,R (temporisateur en cours) est alors à l’état 1, le bit de sortie Ti,D (temporisateur écoulé) est à l’état 0, • lorsque la valeur courante Ti,V = 0, le bit de sortie Ti,D passe à l’état 1 et le bit de sortie Ti,R repasse à l’état 0. L’exécution de l’instruction STOP Ti permet de : • geler l’évolution de la valeur courante si celle-ci évolue, • forcer à l’état 0 les bits de sortie Ti,R et Ti,D; ces bits reprenant leur état lorsque l’instruction STOP n’est plus exécutée. PRESET Ti Ti,V = Ti,P Ti,R = 0 Ti,D = 0 STOP Ti Ti,V gelée Ti,R = 0 Ti,D = 0 START Ti Ti,V décroît de Ti,P → 0 Ti,R = 1 si temporisateur en cours Ti,D = 1 si temporisateur écoulé 6/2 Fonctions d'automatismes 6 A Caractéristiques Numéro de la fonction temporisateur Ti Ce numéro est inférieur au nombre défini lors de la configuration et est nécessairement compris entre 0 et 127 (limite du système) Base de temps (*) TB 1 mn, 1 s, 100 ms, 10 ms, (1 mn par défaut) Valeur courante Ti,V Mot qui décroît de Ti,P vers 0 sur écoulement du temporisateur. Peut être lu, testé, mais non écrit Valeur de présélection Ti,P 0 < Ti,P ≤ 9999. Mot qui peut être lu, testé, écrit. Il est mis à la valeur 9999 par défaut Modification MODIF YES/NO YES : possibilité de modification de la valeur de présélection en mode REGLAGE ou DONNEES. NO : accès à la valeur de présélection en mode CONFIGURATION uniquement B Instruction Présélection PRESET L’exécution de cette instruction réinitialise la fonction temporisateur Ti,V = Ti,P Instruction Arrêt STOP L’exécution de cette instruction gèle la valeur courante de Ti,V Instruction Lancement START L’exécution de cette instruction provoque l’écoulement du temporisateur si les instructions PRESET et STOP ne sont pas exécutées Sortie "Temporisateur écoulé" D(Done) Le bit Ti,D = 1 si le temporisateur est écoulé (Ti,V=0) et si l’instruction STOP n’est pas exécutée Sortie "Temporisateur en cours" R(Running) Le bit Ti,R = 1 si Ti,P > Ti,V > 0 et si l'instruction STOP n’est pas exécutée (*) il n’est pas possible d’utiliser plus de 8 temporisateurs et/ou monostables avec une base de temps de 10 ms. 6/3 C D Cas types La fonction temporisateur peut être programmée de différentes manières afin de réaliser les fonctionnements suivants : Retard à l’enclenchement ! IF RE(I1,0) THEN PRESET T0; START T0 ! I1,0 . T0,D → O0,0 I1,0 Ti,R PRESET PRESET Ti,D O0,0 Retard au déclenchement D ! IF FE(I1,1) THEN PRESET T7; START T7 ! I1,1 + T7,R → O0,1 I1,1 Ti,R Ti,D PRESET O0,1 Retard cumulé à l’enclenchement ! IF FE(I0,2) . NOT T5,R THEN PRESET T5 ! IF I0,3 THEN START T5 ELSE STOP T5 ! I0,3 . T5,D → O1,4 I0,2 I0,3 Ti,R D1 O1,4=Ti,D 6/4 D2 D1+D2+D3 = PRESET D3 Fonctions d'automatismes 6 A Cas spécifiques • Incidence d’une "reprise à froid" : (SY0 = 1) provoque le chargement de la valeur de présélection (définie en mode CONFIGURATION) dans la valeur courante et la mise à 0 du bit de sortie Ti,D; la valeur de présélection éventuellement modifiée par le terminal (mode REGLAGE ou DONNEES) étant perdue. • Incidence d’une "reprise à chaud" ou "immédiate" : (SY1 ou SY2) n’a pas d’incidence sur l’évolution du temporisateur. B • Incidence d’un passage en stop : le passage en stop de l’automate ou de la tâche en cours ne fige pas la valeur courante. Il en est de même lorsque la tâche en cours est désactivée par le fonction CTRLi ou lors de l’exécution d’un point d’arrêt. • Incidence d’un saut de programme : le fait de ne plus exécuter la phrase action où est activée la fonction temporisateur ne fige pas la valeur courante Ti,V qui continue à décroître vers 0. De même les bits Ti,D et Ti,R conservent leur fonctionnement normal et peuvent être testés dans une autre ligne de programme. C • Test des bits Ti,D et Ti,R : ces bits peuvent changer d’état en cours de cycle. D Exemples d’utilisation Modification de présélection en fonction d’un événement extérieur : ! IF I1,9 . NOT T2,R THEN W0 → T2,P ! IF NOT I1,9 . NOT T2,R THEN CW21 → T2,P Si T2,D=1 et I1,9=1 alors ranger le contenu du mot interne W0 dans T2,P. Si T2,D=1 et I1,9=0 alors ranger le contenu du mot constant CW21 dans T2,P. ! IF RE(I1,5) THEN PRESET T2; START T2 Nota : la modification ne s'effectue que si le temporisateur n'est pas en cours (T2,R = 0). Surveillance de la valeur courante d’un temporisateur ! IF [T2,V > 12] THEN SET B15 Si T2,V > 12 s, alors mise à l'état 1 du bit interne B15. 6/5 6.2 Fonction monostable La fonction "Monostable" permet d’élaborer une impulsion de durée précise. Cette durée est programmable et peut être modifiable ou non en mode REGLAGE ou DONNEES. Cette fonction comporte : • un numéro de fonction • une base de temps • une valeur courante • une valeur de présélection • une instruction "Lancement" • un bit de sortie "Monostable en cours" Mi TB Mi,V Mi,P START Mi Mi,R Fonctionnement D Dès l’exécution de l’instruction START Mi, la valeur courante Mi,V prend la valeur de présélection Mi,P. Si l’instruction START n’est exécutée que sur un cycle la valeur courante Mi,V décroît d’une unité à chaque impulsion de la base de temps TB sinon Mi,V est figée. Le bit de sortie Mi,R (Running) passe à l’état 1 dès que la valeur courante Mi,V est différente de 0. Lorsque la valeur courante Mi,V = 0 le bit de sortie Mi,R repasse à l’état 0. Lancement START Mi Valeur courante Mi,V Bit de sortie Mi,R PRESET PRESET PRESET Caractéristiques Numéro monostable Mi Ce numéro est inférieur au nombre défini lors de la configuration et est nécessairement compris entre 0 et 31 Base de temps (*) TB 1 mn, 1 s, 100 ms, 10 ms, (1 mn par défaut) Valeur courante Mi,V Mot qui décroît de Mi,P vers 0. Il peut être lu, testé, mais non écrit Valeur de présélection Ti,P 0 < Mi,P ≤ 9999. Mot qui peut être lu, testé, écrit Modification MODIF YES/NO YES : possibilité de modification de la valeur de présélection en mode REGLAGE ou DONNEES. NO : accès à la valeur de présélection en mode CONFIGURATION uniquement Instruction Lancement START Mi,V = Mi,P puis Mi,V décroît vers 0 si START n’est plus exécuté Bit de sortie en cours" Mi,R Mi,R = 1 si Mi,V est différent de 0 (écoulement monostable) Mi,R=0 si Mi,V=0 (*) il n’est pas possible d’utiliser plus de 8 temporisateurs et/ou monostables avec une base de temps de 10 ms. 6/6 6 Fonctions d'automatismes A Cas spécifiques • Incidence d’une "reprise à froid" : (SY0 = 1) provoque la remise à zéro de la valeur courante Mi,V. La valeur de présélection éventuellement acquise en mode REGLAGE ou DONNEES est perdue, seule la valeur de présélection définie en mode CONFIGURATION est conservée. Le bit de sortie Mi,R est mis à l’état 0. • Incidence d’une "reprise à chaud" ou "immédiate" : (SY1 ou SY2) n’a pas d’incidence sur l’évolution du monostable. B • Incidence d’un passage en stop : le passage en stop de l’automate ou de la tâche en cours ne fige pas la valeur courante. Il en va de même lorsque la tâche en cours est désactivée par la fonction CTRLi ou lors de l’exécution d’un point d’arrêt. • Incidence d’un saut de programme : le fait de ne plus scruter la ligne où est programmé le monostable ne fige pas la valeur courante qui continue de décroître vers 0. Le bit de sortie Mi,R conserve son fonctionnement normal et peut être testé dans une autre ligne de programmation. C Exemple d’utilisation Clignotant à périodes cycliques variables : la valeur de présélection de chaque monostable définit la durée de chaque impulsion. Dans l’exemple ci-dessous, la sortie O10,0 est mise à l’état 1 pendant 5 s (M0,P) puis mise à l’état 0 pendant 2 s (M1,P) et ainsi de suite. ! L1 : IF NOT (M1,R + O10,0) THEN START M0; SET O10,0 ! L2 : IF NOT (M0,R . O10,0) THEN START M1; RESET O10,0 O10,0 5s 5s 2s 2s 6/7 D 6.3 Fonction compteur La fonction "compteur" permet d’effectuer le comptage ou le décomptage d’événements, ces deux opérations pouvant être simultanées ou non. Cette fonction comporte : • un numéro de fonction • une valeur courante • une valeur de présélection • une instruction de "Remise à zéro" • une instruction de "Présélection" • une instruction de lancement "Comptage" • une instruction de lancement "Décomptage" • un bit de sortie "Débordement décomptage" • un bit de sortie "Présélection atteinte" • un bit de sortie "Débordement comptage" Ci Ci,V Ci,P RESET Ci PRESET Ci UP Ci DOWN Ci Ci,E Ci,D Ci,F Fonctionnement • Présélection : dès l’exécution de l’instruction PRESET Ci, la valeur courante Ci,V prend la valeur Ci,P. Le bit de sortie Ci,D est mis à l’état 1, D • Remise à zéro : dès l’exécution de l’instruction RESET Ci, la valeur courante Ci,V est mise à la valeur zéro, • Comptage : à chaque exécution de l’instruction UP Ci, la valeur courante Ci,V est incrémentée d’une unité. Lorsque cette valeur est égale à la valeur de présélection Ci,P, le bit de sortie Ci,D (présélection atteinte) est à l’état 1, Le bit Ci,F (débordement comptage) est mis à l’état 1 lorsque Ci,V passe de 9999 à 0 (il est remis à 0 lorsque Ci,V passe de 0 à 1 ou de 0 à 9999), • Décomptage : à chaque exécution de l’instruction DOWN Ci, la valeur courante Ci,V est décrémentée d’une unité, Le bit de sortie Ci,E (débordement décomptage) est mis à l’état 1 lorsque Ci,V passe de 0 à 9999 (il est remis à 0 lorsque Ci,V passe de 9999 à 9998 ou de 9999 à 0), • Comptage/décomptage : pour utiliser simultanément les fonctions comptage et décomptage, il est nécessaire de programmer les instructions UP Ci et DOWN Ci. Les instructions RESET et PRESET sont prioritaires par rapport aux instructions UP et DOWN. La priorité entre les instructions RESET et PRESET est donnée par le dernière instruction exécutée dans un même cycle tâche. Il en est de même pour la priorité entre les instructions UP et DOWN. 6/8 6 Fonctions d'automatismes A Caractéristiques Numéro de compteur Ci Ce numéro est inférieur au nombre défini lors de la configuration et est nécessairement compris entre 0 et 255 Valeur courante Ci,V Mot incrémenté ou décrémenté en fonction des instructions UP et DOWN. Il est lu, testé mais non écrit Valeur de présélection Ci,P 0 < Ci,P ≤ 9999. Mot qui peut être lu, testé, écrit Modification MODIF YES/NO YES : possibilité de modification de la valeur de présélection en mode REGLAGE ou DONNEES. NO : accès à la valeur de présélection en mode CONFIGURATION uniquement Instruction "remise à zéro" RESET La valeur courante Ci,V passe à 0 Instruction "présélection" PRESET La valeur courante Ci,V prend la valeur de préselection Ci,P Instruction "comptage" UP Incrémente Ci,V à chaque exécution Instruction "décomptage" DOWN Décrémente Ci,V à chaque exécution Bit de sortie "débordement décomptage" Ci,E Le bit Ci,E passe à 1 lorsque Ci,V passe de 0 à 9999 (Débordement) Bit de sortie "présélection atteinte" Ci,D Le bit Ci,D passe à 1 lorsque Ci,V est égal à la valeur Ci,P Bit de sortie "débordement comptage" Ci,F Le bit Ci,F passe à 1 lorsque Ci,V passe de 9999 à 0 (Débordement) B C D Cas spécifiques • Incidence d’une "reprise à froid" : (SY0 = 1) provoque la remise à zéro de la valeur courante Ci,V. La valeur de présélection éventuellement acquise en mode REGLAGE ou DONNEES est perdue, seule la valeur de présélection définie en mode CONFIGURATION est conservée. Les bits Ci,E, Ci,D et Ci,F sont à l’état 0. • Incidence d’une "reprise à chaud" ou "immédiate" : (SY1 ou SY2) n’a pas d’incidence sur la valeur courante Ci,V. 6/9 Exemple d’utilisation ! IF I13,1 THEN RESET C0; RESET C1 Comptage d’un nombre de pièces supérieur à 9999 : utilisation de deux fonctions compteur, en cascade. ! IF RE(I0,3) . NOT O17,2 THEN UP C0 Chaque impulsion de l’entrée I0,3 provoque l’incrémentation du compteur C0. Ce compteur, à chaque débordement comptage, provoque, l'incrémentation du second compteur C1 et sa propre remise à zéro. Lorsque C0 et C1 ont atteint leur valeur de présélection (ce qui correspond à 35000 pieces), la sortie O17,2 est mise à l’état 1 et bloque le comptage. Une remise à zéro par l’entrée I13,1 de C0 et C1 permet de relancer le comptage. ! IF C0,F THEN UP C1; RESET C0 ! IF C0,D . C1,D → O17,2 avec C0,P = 5000 et C1,P = 7 D Nota : cette fonction peut être également assurée avec l’instruction INC Wi. 6.4 Fonction registre Un registre est un ensemble de mots de 16 bits permettant de stocker des informations de deux manières différentes : • File d’attente (premier entré, premier sorti) : file FIFO, • Pile (dernier entré, premier sorti) : pile LIFO. Cette fonction comporte : • un numéro de fonction • un type de configuration • une longueur • un mot d’entrée 16 bits • un mot de sortie 16 bits • une instruction de lancement "Stockage" • une instruction de lancement "Déstockage" • une instruction de "Remise à zéro" • un bit de sortie "Registre vide" • un bit de sortie "Registre plein" 6/10 Ri LIFO/FIFO LENGTH Ri,I Ri,O PUT Ri GET Ri RESET Ri Ri,E Ri,F Fonctions d'automatismes 6 A Fonctionnement FIFO (First In, First Out) Exemple : La première information entrée est la pre- stockage du contenu de Ri,I dans un registre vide mière à être sortie. Lorsqu’une demande d’entrée est prise en (a) compte (à chaque exécution de l’instruction PUT Ri), le contenu du mot d’entrée Ri,I Ri,I préalablement chargé est stocké au plus haut 50 50 de la file (fig a et b). B Lorsque la file est pleine (bit de sortie Ri,F=1), le stockage est impossible. Lorsqu’une demande de sortie est prise en stockage du contenu de Ri,I au compte (à chaque exécution de l’instruction plus haut de la file GET Ri), le mot d’information le plus bas de la 20 20 file est transféré dans le mot de sortie Ri,O et Ri,I 80 le contenu du registre est décalé d’un pas vers le bas (fig. c). 90 (b) 50 Lorsque le registre est vide (bit de sortie Ri,E=1) le déstockage est impossible (le mot de sortie Ri,O n’évolue plus et conserve sa valeur). La file peut être initialisée à tout moment déstockage du contenu de la pre(exécution de l’instruction RESET Ri). Le mot mière information et rangement de pointé est alors le plus haut de la pile. cette dernière dans Ri,0 20 80 90 (c) Ri,O 50 LIFO (Last In, First Out) Exemple : La dernière information entrée est la première à être sortie. stockage du contenu de Ri,I au plus haut de la pile Lorsqu’une demande d’entrée est prise en compte (à chaque exécution de l’instruction PUT Ri), le contenu du mot d’entrée Ri,I préalablement chargé est stocké au plus haut de la pile (fig.d). 20 Ri,I (d) 20 80 90 50 Lorsque la pile est pleine (bit de sortie Ri,F = 1), le stockage est impossible. 6/11 C D Lorsqu’une demande de sortie est prise en destockage du mot d'information le compte (à chaque exécution de l’instruction plus haut de la pile GET Ri), le mot d’information le plus haut 20 (dernière information entrée) est transféré dans le mot Ri,O (fig. e et f). Ri,O 80 90 50 Lorsque le registre est vide (bit de sortie Ri,E=1), le déstockage est impossible, le mot de sortie Ri,O n’évolue plus et conserve sa dernière valeur. La pile peut être réinitialisée à tout moment (exécution de l’instruction RESET Ri). L’élément pointé est alors le plus haut de la pile. 90 50 (e) Ri,O 80 (f) Caractéristiques D Numéro Registre Ri Ce numéro est inférieur au nombre défini lors de la configuration et est nécessairement compris entre 0 et 127 Type FIFO LIFO File d’attente (First In, First Out) Pile (Last In, First Out) Longueur LENGTH Nombre de mots de 16 bits 1≤ L ≤ 255. Il est non modifiable par programme. Le nombre total de mots défini pour l’ensemble des registres ne doit pas dépasser 1024 Mot d’entrée Ri,I Mot d’accès au registre. Il peut être testé lu, écrit Mot de sortie Ri,O Mot de sortie du registre. Il peut être lu, testé, écrit Instruction "Stockage" PUT Provoque le stockage du contenu du mot Ri,I dans le registre Instruction "Déstockage" GET Provoque le transfert du mot d’information dans le mot Ri,O Instruction "remise à zéro" RESET Remet à zéro la file ou la pile du registre Bit de sortie "Registre plein" Ri,F Le bit Ri,F indique que le registre est plein Bit de sortie "Registre vide" Ri,E Le bit Ri,E indique que le registre est vide 6/12 Fonctions d'automatismes 6 A Cas spécifiques • Incidence d’une "reprise à froid" : (SY0 = 1) provoque l’initialisation de la file (registre FIFO) ou de la pile (registre LIFO) du registre. Le bit de sortie Ri,E (registre vide) est mis à 1, • Incidence d’une "reprise à chaud" ou "immédiate" : (SY1 ou SY2) n’a pas d’incidence sur le contenu et l’état du registre. B Exemple d’utilisation Registre FIFO de 137 pas : ! IF RE(I13,A) THEN W34 → R2,I; PUT R2 Le front montant de I13,A provoque le chargement de W34 dans le mot d’entrée R2,I puis son stockage dans le registre R2. ! IF RE(I13,9) THEN GET R2; R2,0 → W20 Le front montant de I13,9 provoque le transfert du premier mot entré dans le mot de sortie R2,O puis son chargement dans W20 pour exploitation. ! IF I13,F THEN RESET R2; 0 → W34 → W20 L’entrée I13,F provoque la remise à zéro de la file du registre R2 et des mots de chargement et d’exploitation. Les paramètres à saisir en configuration pour le registre R2 sont : N° LENGTH TYPE avec 0 1 2 16 16 137 LIFO LIFO FIFO - N° : numéro du registre - LENGTH : longueur du registre - TYPE : FIFO ou LIFO 6.5 Fonction contrôle La fonction "Contrôle" permet d’activer ou de désactiver une tâche. Cette fonction comporte : • un numéro de fonction • une instruction "activation" • une instruction "désactivation" • un bit de sortie "tâche activée" CTRLi START CTRLi RESET CTRLi CTRLi,R 6/13 C D Le numéro de fonction définit la tâche à commander : CTRL1 : commande la tâche interruption (IT) CTRL2 : commande la tâche rapide (FAST) CTRL4 : commande la tâche auxiliaire 0 (AUX0) CTRL5 : commande la tâche auxiliaire 1 (AUX1) CTRL6 : commande la tâche auxiliaire 2 (AUX2) CTRL7 : commande la tâche auxiliaire 3 (AUX3) L’accès à la fonction CTRLi est conditionné par la déclaration de la tâche i effectuée dans le mode opératoire CONFIGURATION. Fonctionnement L’exécution de l’instruction START CTRLi provoque l’activation de la tâche définie par le numéro i, L’exécution de l’instruction RESET CTRLi provoque la désactivation de la tâche définie par le numéro i, La désactivation d’une tâche n’est effective qu’en fin d’exécution de celle-ci. Caractéristiques D Numéro de la fonction CTRLi Ce numéro est nécessairement compris entre 1 et 7 et indique le numéro de la tâche à commander Instruction "activation" START CTRLi Exécutée, cette instruction active la tâche i. Le cycle de la tâche i est alors lancé (Entrées, Programmes, Sorties) Instruction "Désactivation" RESET CTRLi Exécutée, cette instruction demande la désactivation de la tâche i. Celle-ci n’est effective qu’en fin d’exécution du cycle de la tâche considérée Sortie "Tâche activée" CTRLi,R Le bit de sortie CTRLi,R est à l’état 1 quand la tâche i est active 6/14 6 Fonctions d'automatismes A 6.6 Fonction texte La fonction "Texte" permet au programme utilisateur de communiquer avec : • un périphérique (imprimante, clavier, automate, terminal) par la "prise terminal". Le bloc fonction texte est alors de type "TER", • un coupleur intelligent. Le bloc fonction texte est alors de type "CPL", • une autre fonction texte implantée dans le programme utilisateur. Les deux blocs fonctions texte sont alors de type "TXT", B • certaines fonctions système, par exemple celles qui donnent accès aux données de diagnostic d’un coupleur intelligent. Le bloc fonction texte est alors de type "SYS". • une autre fonction texte de type télégramme, implantée dans le programme utilisateur d’un autre automate, situé sur le même réseau MAPWAY, ETHWAY ou FIPWAY. Les deux blocs fonctions texte sont alors de type "TLG". C Les communications de type télégramme ne peuvent s’effectuer qu’à distance à travers le réseau MAPWAY, ETHWAY ou FIPWAY. Par contre les autres communications peuvent s’effectuer localement ou à distance en utilisant les réseau TELWAY, MAPWAY, ETHWAY ou FIPWAY ou le bus UNI-TELWAY ou FIPIO. D Cette fonction "texte" comporte : • un numéro de bloc fonction • un type d’échange • un type de communication (seulement RESEAU pour le bloc TLG) • une adresse de début de table • une longueur de table de réception • une longueur de table d’émission • un mot status • des bits de sortie : - "échange terminé" - "échange erroné" • en type "CPL", une adresse coupleur et numéro de voie • en type "CPL" ou "SYS" - un mot code requête - un mot compte rendu d’échange • en type "TXT" ou "TLG", un mot numéro du bloc texte destinataire • avec le réseau TELWAY, MAPWAY, ETHWAY ou FIPWAY un mot numéro de réseau et station TXTi (CPL, TER, SYS, TXT ou TLG) (LOCAL ou RESEAU) ex : W10 ex : 12 TXTi,L TXTi,S TXTi,D TXTi,E TXTi,M TXTi,C TXTi,V TXTi,T TXTi,A • quatre instructions de commande (RESET TXTi, OUTPUT TXTi, INPUT TXTi, EXCHG TXTi) décrites page suivante : 6/15 Annulation de l'échange RESET TXTi L’exécution de cette instruction empêche la prise en compte des instructions INPUT, OUTPUT et EXCHG, interrompt un échange en cours et positionne les bits de sortie TXTi,D (échange terminé) et TXTi,E (échange erroné) à l’état 1. Le code de l’erreur est alors contenu dans le mot status TXTi,S émission OUTPUT TXTi Cette instruction provoque l’envoi de la table d'émission, si le bit de sortie D est à l’état 1 réception INPUT TXTi Cette instruction positionne le bloc texte en réception pour permettre le stockage des informations attendues,dans sa table de réception, si TXTi,D est à l’état 1 émission/réception EXCHG TXTi D Cette instruction provoque l’envoi de la table d’émission suivi de la mise en réception du bloc texte, pour permettre le stockage d’un message dans sa table de réception, si TXTi,D est à l’état 1 Utilisation des entrées de commande L’exécution de l’instruction OUTPUT TXTi provoque l’émission d’une table, L’exécution de l’instruction INPUT TXTi provoque la mise en réception d’une table, L’exécution de l’instruction EXCHG TXTi provoque successivement l’émission puis la mise en réception d’une table, Avant de lancer un échange, le programme utilisateur doit initialiser les éléments mots (selon le type d’échange TXTi,L, TXTi,M, TXTi,C...), Le lancement d’un échange est impossible si le bit de sortie TXTi,D est à l’état 0 (échange en cours). En fin d’échange, si celui-ci s’est avéré correct, ce bit reprend l’état 1. Lorsque l’échange s’est avéré erroné, les bits TXTi,E et TXTi,D passent à 1. L’échange est interrompu et le mot status indique alors le type d’erreur jusqu’au prochain échange. A tout moment, l’exécution de l’instruction RESET TXTi interrompt l’échange en cours. Les bits de sortie TXTi,D et TXTi,E sont alors mis à l’état 1. Cette instruction est prioritaire Echange en cours Echange terminé Echange erroné TXTi,D 0 1 1 TXTi,E 0 0 1 Fonctionnement Le fonctionnement du bloc texte est développée dans "COMMUNS LANGAGES A CONTACTS ET LITTERAL" intercalaire E, chapitre 6. 6/16 Fonctions d'automatismes 6 A Cas particulier : émission et/ou réception d’un télégramme Emission d’un télégramme L’émission d’un télégramme est immédiate, il n’est pas nécessaire d’attendre la fin d’exécution du programme application. Celui-ci est directement envoyé au coupleur dès que les commandes d’émission du bloc TLG sont activées (OUTPUT TXTi). B Réception d’un télégramme Cette opération se fait en deux temps : • positionnement du bloc texte TLG en réception (INPUT TXTi), • lecture du télégramme par l’instruction READTLG : dès que le coupleur reçoit un télégramme, il envoie une interruption au processeur qui exécute alors la tâche IT du programme application. Cette tâche permet : - la reconnaissance de l’IT par l’instruction READINT, - le transfert du télégramme depuis le coupleur jusque dans le buffer de réception du bloc TLG, par l’instruction READTLG, - l’exécution des actions associées. Emission/réception d’un télégramme Elle est provoquée par la commande EXCHG TXTi et fonctionne comme une émission suivie d’une réception. Remarques : • les télégrammes peuvent s’utiliser sans les interruptions. La tâche MAST ou FAST demande de façon explicite sa lecture à chaque cycle. On a alors l’équivalent d’une messagerie rapide. • en réception, on ne peut traiter qu’un seul télégramme par cycle automate et par coupleur. Par contre il est possible dans un même cycle automate d’émettre un télégramme sur chaque coupleur réseau d’un automate routeur. 6/17 C D D 6/18 Dialogue Communs langage à contacts langage littéral Intercalaire E Chapitre 1 5 Page Opérations sur chaîne de bits Sommaire 1/1 1.1 Transfert d’une chaîne de bits dans une autre 1.2 Transfert d’une chaîne de bits dans un mot 1.3 Transfert d’un mot dans une chaîne de bits 1.4 Transfert d’une valeur immédiate dans une chaîne de bits 2 Opérations sur mots Sommaire 2/1 2.1 Transfert 2.2 Incrémentation et décrémentation 2.3 Décalage 2.4 Comparaison 2.5 Opérations arithmétiques 2.6 Extraction de racine carrée E 2.7 Opérations logiques 2.8 Transcodage 3 Opérations sur tableaux de mots Sommaire 3/1 3.1 Initialisation d’un tableau de mots 3.2 Transfert d’un tableau dans un autre 3.3 Opérations entre deux tableaux 3.4 Opérations sur tous les mots d’un tableau 3.5 Sommation des mots d’un tableau 3.6 Comparaison de deux tableaux 3.7 Recherche de tous les mots différents lors d’une comparaison de deux tableaux 3.8 Recherche dans un tableau du premier mot égal à une valeur 3.9 Recherche dans un tableau de tous les mots égaux à une valeur E/1 Communs langage à contacts langage littéral Intercalaire E Chapitre 4 Page Opérations sur programme Sommaire 4/1 4.1 Gestion des interruptions coupleur 5 Echanges explicites Sommaire 5/1 5.1 Echanges explicites des bits d’entrées et de sorties T.O.R. 5.2 Echanges explicites des registres d’entrées et de sorties 6 Opérations sur fonctions Sommaire 6.1 Fonction texte 6.2 Exécution d’un OFB E E/2 6/1 Opérations sur chaîne de bits Opérations sur chaîne de bits 1 Chapitre 1 Sous chapitre Page 1.1 Transfert d’une chaîne de bits dans une autre 1/2 1.2 Transfert d’une chaîne de bits dans un mot 1/4 1.3 Transfert d’un mot dans une chaîne de bits 1/5 1.4 Transfert d’une valeur immédiate dans une chaîne de bits 1/7 Ce chapitre se termine à la page 1/8 E 1/1 1.1 Transfert d’une chaîne de bits dans une autre Cette opération consiste à recopier l’état de n bits d’une chaîne origine dans les n bits d’une chaîne destination. Structure • en langage à contacts le transfert est réalisé par un bloc opération, constitué de la manière suivante : chaîne de bits origine → chaîne de bits destination • en langage Littéral le transfert est réalisé par une phrase action qui peut être utilisée : - seule : ! chaîne de bits origine → chaîne de bits destination - dans une phrase conditionnelle : ! IF ... THEN chaîne de bits origine → chaîne de bits destination - dans une phrase itérative : ! WHILE ... DO chaîne de bits origine → chaîne de bits destination Opérandes Objet E Chaîne de bits origine destination Exemple bit interne Bi * * bit d’entrée Ixy,i * * bit de sortie Oxy,i * * bit d’étape Xi * X8[4] bit de macro-étape XMj * X21,3[2] (1) B14[16] (1) I3,5[7] O15,0[3] voir règles d’utilisation Exemple : • recopie du contenu des bits I0,0 à I0,5 dans les bits internes B20 à B25 : I0,0[6] → B20[6] ! I0,0[6] → B20[6] Règles d’utilisation • les chaînes de bits origine et destination ne sont pas forcément de longueur identique. Dans le cas où la chaîne origine est plus longue que la chaîne destination, seuls les bits de poids faible seront transférés. • l’utilisation de chaîne de bits d’entrée comme destination est possible, mais doit être employée avec précaution (modification de l’état réel des entrées jusqu’à la prochaine acquisition des entrées par l’automate). 1/2 1 Opérations sur chaîne de bits Cas spécifiques • la longueur de la chaîne destination est supérieure à la modularité du module considéré : juxtaposition de 2 modules d’entrées ou de sorties : dans l’exemple ci-contre, une chaîne de bits du type O04,0[16] adresse les bits de sorties correspondants aux modules O04 et O05 (de O04,0 à O05,7). 00 01 02 03 04 05 06 07 F juxtaposition de 2 modules de type différent : dans l’exemple ci-contre, une chaîne de bits du type O05,4[8] adresse les bits de sorties O05,4 à O05,7 puis les bits d’entrées I06,0 à I06,3. 7 0 8 SORTIES 0 7 0 16 ENTREES 0 8 SORTIES 0 8 SORTIES 16 ENTREES X 7 F 00 01 02 03 04 05 06 07 F cas d’un emplacement vide : dans l’exemple ci-contre une chaîne de bits du type O02,0[10] adresse les bits de sorties O02,0 à O02,7 puis les bits de sorties O04,0 et O04,1. 7 0 8 SORTIES 0 7 0 16 ENTREES 0 8 SORTIES 0 8 SORTIES 16 ENTREES X 7 F 0 F 7 0 8 SORTIES 0 8 SORTIES 0 8 SORTIES 16 ENTREES X 7 16 ENTREES 00 01 02 03 04 05 06 07 7 0 E F • chevauchement des 2 chaînes de bits : dans ce cas le transfert doit être conditionné par une expression de front (un transfert seulement) 1er cas : IF RE(B83) THEN B0[5] → B3[5] Afin de ne pas modifier le tableau origine pendant l’opération, le transfert s’effectue en partant du bit de rang le plus élevé (B4 → B7) jusqu’aux bit de rang le plus faible (B0 → B3) : état des bits avant opération état des bits après opération B0 B1 B2 B3 B4 0 1 0 1 1 1 1 B5 * B6 * B7 * B0 B1 B2 B3 B4 0 1 0 0 1 0 1 B5 B6 B7 0 1 1 1/3 2eme cas : IF RE(B112) THEN B5[5] → B3[5] Afin de ne pas modifier le tableau origine pendant l’opération, le transfert s’effectue en partant du bit de rang le plus faible (B5 → B3) jusqu’au bit de rang le plus élevé (B9 → B7) : état des bits avant opération B3 B4 * * 1.2 état des bits après opération B5 B6 B7 B8 B9 0 1 0 1 1 0 1 0 B3 0 B4 1 B5 B6 B7 B8 B9 0 1 1 1 1 0 1 1 Transfert d’une chaîne de bits dans un mot Cette opération consiste à recopier l’état de n bits d’une chaîne dans les 16 bits d’un mot. La longueur n de la chaîne de bits ne devra pas être supérieure à 16. Structure • en langage à contacts le transfert est réalisé par un bloc opération, constitué de la manière suivante : chaîne de bits → mot E • en langage Littéral le transfert est réalisé par une phrase action qui peut être utilisée : - seule : ! chaîne de bits → mot - dans une phrase conditionnelle : ! IF ... THEN chaîne de bits → mot - dans une phrase itérative : ! WHILE ... DO chaîne de bits → mot Opérandes Objet Chaîne de bits Mot de destination Exemple bit interne Bi * B14[16] bit d’entrée/sortie I/Oxy,i * I3,5[7] bit d’étape ou de macro-étape Xi, XM,j * mot interne simple longueur Wi 1/4 X8[4] * W12 1 Opérations sur chaîne de bits Exemple : • transfert du contenu des bits d’entrée I1,4 à I1,7 dans le mot W7 : ! I1,4[4] → W7 I1,4[4] → W7 I1,4 5 6 7 1 0 1 1 F W7 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 Règles d’utilisation • les bits de la chaîne sont transférés dans le mot en commençant par la droite (1er bit de la chaîne dans bit 0 du mot, ...). • les bits d’un mot non concerné par le transfert (longueur < 16) sont positionnés à l’état 0. 1.3 Transfert d’un mot dans une chaîne de bits Cette opération consiste à recopier bit à bit les 16 bits d’un mot dans une chaîne de bits. Lorsque la chaîne de bits est de longueur inférieure à 16, seuls les bits de poids faible sont recopiés. Structure • en langage à contacts le transfert est réalisé par un bloc opération, constitué de la manière suivante : mot → chaîne de bits • en langage Littéral le transfert est réalisé par une phrase action qui peut être utilisée : - seule : ! mot → chaîne de bits - dans une phrase conditionnelle : ! IF ... THEN mot → chaîne de bits - dans une phrase itérative : ! WHILE ... DO mot → chaîne de bits 1/5 E Opérandes Objet Mot source Chaîne de bits bit interne Bi * bit d’entrée Ixy,i * bit de sortie Oxy,i * Exemple B14[16] (1) I3,5[7] O5,5[7] mot interne simple longueur Wi * W12 mot constant simple longueur CWi * CW10 (1) voir règles d’utilisation Exemple : • transfert des bits 0 à F du mot constant CW14 dans les bits B10 à B25 : CW14 → B10[16] ! CW14 → B10[16] Règles d’utilisation • l’utilisation de bits d’entrées dans la chaîne de bits destination est possible mais doit être employée avec précaution (inhibition de l’état réel des entrées jusqu’à la prochaine acquisition des entrées par l’automate). • les bits du mot origine sont transférés à partir de la droite (bit 0 du mot dans le premier bit de la chaîne). E Cas spécifiques • transfert d’un mot dans une chaîne de bits de sorties : ce type de transfert affecte une chaîne de bits de longueur 16. Dans le cas où le module de sortie n’est pas un module 16 bits ou que le premier bit de la chaîne n’est pas le bit 0 du module, il y a débordement sur le module suivant. 1/6 Opérations sur chaîne de bits 1.4 1 Transfert d’une valeur immédiate dans une chaîne de bits Cette opération consiste à recopier bit à bit la représentation binaire sur 16 bits d’une valeur immédiate dans une chaîne de bits. Structure • en langage à contacts le transfert est réalisé par un bloc opération, constitué de la manière suivante : valeur immédiate → chaîne de bits • en langage Littéral le transfert est réalisé par une phrase action qui peut être utilisée seule, dans une phrase conditionnelle ou itérative : ! valeur immédiate → chaîne de bits Opérandes • la chaîne de bits destination peut être constituée par des bits internes ou par des bits de sorties. L’utilisation de bits d’entrées est possible mais doit être employée avec précaution (inhibition de l’état réel des entrées jusqu’à la prochaine acquisition des entrées par l’automate). • la valeur immédiate est nécessairement comprise entre -32768 et +32767. Exemple : • mise à l’état 1 des bits B30 à B37 : H' FFFF' → B30[8] ! H’FFFF’ → B30[8] E 1/7 E 1/8 Opérations sur mots Opérations sur mots 2 Chapitre 2 Sous chapitre Page 2.1 Transfert 2/2 2.2 Incrémentation et décrémentation 2/4 2.3 Décalage 2/5 2.4 Comparaison 2/8 2.5 Opérations arithmétiques 2/10 2.6 Extraction de racine carrée 2/15 2.7 Opérations logiques 2/16 2.8 2/18 E Transcodage Ce chapitre se termine à la page 2/22 2/1 2.1 Transfert L’instruction de transfert, symbolisée par → , permet de transférer le contenu d’un opérande 1 dans un opérande 2. L’opérande 1 peut être une expression arithmétique (enchaînement d’opérations de décalage, de transcodage, logiques et arithmétiques). Structure • en langage à contacts le transfert est réalisé par un bloc opération, constitué de la manière suivante : OP1 → OP2 512 caractères peuvent être saisis dans un bloc opération. • en Littéral le transfert est réalisé par une phrase action qui peut être utilisée : - seule : ! opérande 1 → opérande 2 - dans une phrase conditionnelle : ! IF ... THEN opérande 1 → opérande 2 ELSE opérande 3 → opérande 4 - dans une phrase itérative : ! WHILE ... DO opérande 1 → opérande 2 Opérandes Objet E mot constant CWi Opérandes OP1 OP2 * mot constant double longueur CDWi * mot interne Wi * Exemple CW3 * CDW7 CDW7(W0) W12(W11) DW31(W4) * * DW31 mot commun COMi,j * * COM3,2 mot registre entrée/sortie IW/OWxy,i * * OW7,5 mot système SWi * * valeur immédiate * SW4 3476 valeur immédiate double longueur * 73421 temps d’activité d’une étape Xi,V * X67,V temps d’activité d’étape de macro-étape Xj,i,V * X21,3,V mot extrait de bloc fonction Ti,P * expression arithmétique * (1) sauf valeur courante de bloc fonction. 2/2 CW3(W45) W12 mot interne double longueur DWi * (1) Exemple indexé T3,P W8*(W12+7) Opérations sur mots 2 Exemples en langage à contacts • transfert du mot constant CW2 dans le mot W6 : CW2 → W6 • transfert de l’expression arithmétique (W1 AND W2) * 12 dans le mot de présélection du compteur C3 : (W1 AND W2) * 12 → C3,P • transfert du temps d’activité de l’étape 3 dans le mot commun COM4,6 : X3,V → COM4,6 Exemples en Littéral : • transfert du mot constant CW2 dans le mot W6 : ! CW2 → W6 • transfert de l’expression arithmétique W8 * (W12 + 7) dans le mot Wx (avec x = 6 indexé du contenu de W125) : ! W8 * (W12 + 7) → W6(W125) Transferts multiples Il est possible de transférer successivement le contenu d’un objet mot dans plusieurs objets mots. • en langage à contacts : CW5 → W6 → T1,P • en Littéral : ! CW5 → W6 → T1,P Transfert d’un mot simple longueur dans un mot double longueur Le transfert d’un mot simple longueur dans un mot double longueur s’effectue sur la valeur algébrique du mot simple longueur : une valeur négative en simple longueur (bit F ou bit 15 à l’état 1) reste négative en double longueur (bit 31 à l’état 1). • transfert du mot W20 positif dans le mot double DW100 : ou ! W20 → DW100 W20 → DW100 F E D C B A 9 8 7 6 5 4 3 2 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 1 W20 signe 31 0 DW100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 1 2/3 E • transfert du mot W21 négatif dans le mot double DW102 (complément à 2) : ou ! W21 → DW102 W21 → DW102 F E D C B A 9 8 7 6 5 4 3 2 1 0 1 0 0 0 1 1 0 1 0 1 1 0 0 1 0 1 W21 signe 0 31 DW102 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 0 1 1 0 0 1 0 1 Transfert d’un mot double dans un mot simple longueur Le transfert d’un mot double longueur dans un mot simple longueur ne sera correct que si le contenu du mot double longueur est compris entre -32768 et +32767. Si ce n’est pas le cas, le contenu du mot simple longueur après transfert, sera erroné. Le bit système SY18 (overflow) est mis à 1. Ce bit peut être testé et doit être remis à 0 par le programme utilisateur. 2.2 Incrémentation et décrémentation L’instruction d’incrémentation INC augmente de 1 le contenu d’un objet mot. L’instruction de décrémentation DEC diminue de 1 le contenu d’un objet mot. E Structure • en langage à contacts les opérations d’incrémentation et de décrémentation sont réalisées par un bloc opération, constitué de la manière suivante : INC opérande DEC opérande • en Littéral l’incrémentation et la décrémentation sont réalisées par une phrase action, qui peut être utilisée : - seule : ! INC opérande - dans une phrase conditionnelle : ! IF ... THEN INC opérande ELSE DEC opérande - dans une phrase itérative : ! WHILE ... DO INC opérande 2/4 Opérations sur mots 2 Opérandes Les opérations d’incrémentation et de décrémentation agissent seulement sur les mots internes simple longueur. Ces mots peuvent être indexés. Exemples en langage à contacts : • incrémentation du mot W30 : INC W30 • décrémentation du mot W10 : DEC W10 Exemples en Littéral : • incrémentation du mot W8 : ! INC W8 • décrémentation du mot Wx (avec x = 6 indexé du contenu de W125) : ! DEC W6(W125) 2.3 Décalage L’opération de décalage consiste à déplacer les bits d’un opérande simple longueur d’un certain nombre de positions vers la droite ou vers la gauche. Cette opération peut être associée à une opération de transfert, qui permet de transférer le contenu de l’opérande dans un objet mot. En Littéral l’opération de décalage peut être utilisée dans une expression arithmétique. On distingue deux types de décalages : • le décalage logique : cette opération peut être réalisée dans les deux sens à l’aide des deux instructions : - SHL i : décalage logique à gauche de i positions (SHift Left), - SHR i : décalage logique à droite de i positions (SHift Right). L’opérande à décaler étant un opérande simple longueur, la variable i sera nécessairement comprise entre 0 et 16 (1 ≤ i ≤ 15). L’opérande à décaler est saisi entre parenthèses. 2/5 E - décalage logique à gauche : SHL i F 0 0 SY17: valeur du dernier bit sorti à gauche - décalage logique à droite : SHR i F 0 0 SY17: valeur du dernier bit sorti à droite L’ensemble des bits est décalé de i positions. L’état du dernier bit sorti est mémorisé par le bit système SY17. • le décalage circulaire : cette opération peut être réalisée dans les deux sens à l’aide des deux instructions : - SLC i : décalage circulaire à gauche de i positions (Shift Left Circular) - SRC i : décalage circulaire à droite de i positions (Shift Right Circular). L’opérande à décaler étant un opérande simple longueur, la variable i sera nécessairement comprise entre 0 et 16 (1 ≤ i ≤ 15). L’opérande à décaler est saisi entre parenthèses. E - décalage circulaire à gauche : SLC i F 0 SY17: valeur du dernier bit sorti à gauche et entré à droite - décalage circulaire à droite : SRC i F 0 SY17: valeur du dernier bit sorti à droite et entré à gauche L’ensemble des bits est décalé de i positions. L’état du dernier bit sorti, donc du dernier bit entré, est mémorisé par le bit système SY17. 2/6 2 Opérations sur mots Structure Dans tous les cas, une opération de décalage est caractérisée par : - son type : SHL, SHR, SLC, SRC - le nombre de positions de décalage i (1 ≤ i ≤ 15) - l’opérande à décaler • en langage à contacts le décalage est réalisé par un bloc opération, constitué de la manière suivante : SHL i(OP1) → →OP2 SHLi(OP1) OP2 • en Littéral le décalage est réalisé par une phrase action qui peut être utilisée : - seule : ! SHL i (opérande) - dans une phrase conditionnelle : ! IF ... THEN SHR i (opérande 1) → opérande 2 - dans une phrase itérative : ! WHILE ... DO SLC i (opérande 1) → opérande 2 Opérandes Objet Opérandes OP1 OP2 Exemple mot constant CWi * mot interne Wi * * mot commun COMi,j * mot registre entrée/sortie IW/OWxy,i * * OW7,5 mot système SWi * * valeur immédiate * mot interne double longueur DWi Exemple indexé CW3 CW3(W45) W12 W12(W11) * DW31 DW31(W4) * COM3,2 SW4 3476 temps d’activité d’une étape Xi,V * X67,V temps d’activité d’étape de * X21,3,V macro-étape Xj,i,V mot extrait de bloc fonction Ti,P * expression arithmétique * (1) * (1) T3,P W8*(W12+7) sauf valeur courante de bloc fonction. Exemple en langage à contacts : • décalage logique du mot W3 de 8 positions vers la gauche, avec transfert du résultat dans W7 : SHL 8(W3) →→W7 SHL8(W3) W7 2/7 E Exemples en Littéral : • décalage circulaire du mot W3 de 8 positions vers la droite, avec transfert du résultat dans W7 et transfert de l’état du dernier bit sorti à droite dans O31,0 : ! IF ... THEN SRC 8 (W3) → W7; SY17 → O31,0 • addition des valeurs décalées de W15 et 19, avec transfert du résultat dans W125 : ! IF ... THEN SHL 5 (W15) + SHR 2 (W19) → W125 2.4 Comparaison L’instruction de comparaison permet de comparer deux opérandes. Elle constitue en langage Littéral un opérande booléen utilisable dans une expression booléenne. Les différentes instructions de comparaison sont les suivantes : • > : test si l’opérande 1 est supérieur à l’opérande 2, • >= : test si l’opérande 1 est supérieur ou égal à l’opérande 2, • < : test si l’opérande 1 est inférieur à l’opérande 2, • <= : test si l’opérande 1 est inférieur ou égal à l’opérande 2, • = : test si l’opérande 1 est égal à l’opérande 2, • <> : test si l’opérande 1 est différent de l’opérande 2. Structure E • en langage à contacts la comparaison est réalisé par un bloc comparaison horizontale. Il fait appel à des expressions du langage Littéral et est comparable quant à sa forme aux blocs opérations. Le bloc comparaison est toujours placé en zone test. Sa sortie est à 1 lorsque la comparaison demandée est vraie. Ce bloc est constitué de la manière suivante : OP1 > OP2 • en Littéral la comparaison est une expression booléenne et se trouve entre crochets. Elle peut être utilisée : - seule : ! [opérande 1 <> opérande 2] → bit - dans une phrase conditionnelle : ! IF [opérande 1 > opérande 2] THEN ... - dans une phrase itérative : ! WHILE [opérande 1 = opérande 2] DO ... 2/8 2 Opérations sur mots Opérandes Objet Opérandes OP1 OP2 Exemple Exemple indexé mot constant CWi * * CW3 CW3(W45) mot constant double longueur CDWi * * CDW7 CDW7(W0) mot interne Wi * * W12 W12(W11) mot interne double longueur DWi * * DW31 DW31(W4) mot commun COMi,j * * COM3,2 mot registre entrée/sortie IW/OWxy,i * * OW7,5 mot système SWi * * SW4 valeur immédiate * * 3476 valeur immédiate double longueur * * 73421 temps d’activité d’une étape Xi,V * * X67,V temps d’activité d’étape de macro-étape Xj,i,V * * X21,3,V mot extrait de bloc fonction Ti,P * * expression arithmétique * T3,P W8*(W12+7) Exemples en langage à contacts : • comparaison du mot W241 avec la valeur immédiate 100 : W241 > 100 E La sortie de ce bloc passe à 1 lorsque la comparaison est vraie (contenu du mot W241 supérieur à 100). • comparaison de l’expression arithmétique (W6 + W12) * 3 avec le contenu du mot Wx (x = 1 indexé du contenu de W5) : (W6 + W2) * 3 = W1(W5) Exemples en Littéral : • si W5 est plus grand que 25 alors ... : ! IF [W5 > 25] THEN ... • tant que le résultat de l’expression arithmétique est égal au contenu de W9, effectuer ... : ! WHILE [(W6 + W12) * 3 = W9] DO ... • si le résultat de l’opération DW9 - DW15 est différent du contenu de CDW0, la sortie O4,3 est à l’état 1 : ! [DW9 - DW15 <> CDW0] → O4,3 • si W9(W5) est égal ou inférieur à la valeur courante du temporisateur T2, alors ... sinon ... : ! IF [W9(W5) <= T2,V] THEN ... ELSE ... 2/9 Règles d’utilisation • les deux termes de la comparaison sont considérés comme des valeurs algébriques. • les deux termes de la comparaison peuvent être exprimés dans la même longueur ou dans des longueurs différentes. • le résultat de l’expression arithmétique pouvant être erroné à la suite d’un débordement, le résultat de la comparaison peut s’avérer incorrect. La gestion et le test du bit système de débordement permettent de résoudre ce problème. • les objets mots utilisés dans les deux opérandes sont indexables. 2.5 Opérations arithmétiques Les instructions associées permettent de réaliser une opération arithmétique entre deux opérandes. Ces instructions sont : • + : réalise l’addition de deux opérandes, • : réalise la soustraction de deux opérandes, • * : réalise la multiplication de deux opérandes, • / : réalise la division d’un opérande par un autre, • REM : calcule le reste d’une division d’un opérande par un autre. Structure E • en langage à contacts une opération arithmétique est réalisée par un bloc opération, constitué de la manière suivante : OP1 * OP2 → OP3 • en Littéral une opération arithmétique peut être utilisée dans une expression arithmétique ou associée à une opération de transfert. Sa structure est la suivante : opérande 1 + opérande 2 2/10 2 Opérations sur mots Opérandes Objet Opérandes OP1 OP2 OP3 Exemple Exemple indexé mot constant CWi * * CW3 CW3(W45) mot constant double longueur CDWi * * CDW7 CDW7(W0) mot interne Wi * * * W12 W12(W11) mot interne double longueur DWi * * * DW31 DW31(W4) mot commun COMi,j * * * COM3,2 mot registre entrée/sortie IW/OWxy,i * * * OW7,5 * mot système SWi * * valeur immédiate * * 3476 SW4 valeur immédiate double longueur * * 73421 temps d’activité d’une étape Xi,V * * X67,V temps d’activité d’étape de macro-étape Xj,i,V * * X21,3,V mot extrait de bloc fonction Ti,P * * expression arithmétique * * (1) * (1) T3,P W8*(W12+7) sauf valeur courante de bloc fonction. E Exemples en langage à contacts : • addition du contenu de CW12 et de la valeur immédiate 1300. Le résultat de l’addition est rangé dans le mot de présélection du compteur C5 : CW12 + 1300 → C5,P • soustraction du contenu du mot W20 au mot double longueur CDW 35. Le résultat est rangé dans le mot DW10 : CDW35 - W20 → DW10 Exemples en Littéral : • division du contenu du mot W61 par le contenu du mot W12 et rangement du reste dans W35 : ! W61 REM W12 → W35 • expression arithmétique dans une opération de comparaison : ! IF [(W1 + W2) * 3 = 100] THEN ... Rappel sur les priorités • l’addition et la soustraction ont la même priorité. • la multiplication, la division et le calcul du reste ont la même priorité et sont prioritaire sur l’addition et la soustraction. 2/11 Règles d’utilisation Addition : opérande 1 + opérande 2 • dépassement de capacité pendant l’opération : Dans le cas où le résultat dépasse la longueur du plus long des opérandes (-32768 à +32767 pour un opérande en simple longueur, -2147483648 à +2147483647 pour un opérande double longueur) le bit SY18 (overflow) est mis à l’état 1. Le résultat est donc non significatif. La gestion du bit SY18 est à la charge du programme utilisateur. Exemple : W0 + W1 → W2 0 1 0 1 1 0 1 0 1 1 0 0 1 0 0 1 W0 23241 + 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 W1 21853 1 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0 W2 -20442 SY18 Le résultat réel (45094) ne peut pas être exprimé dans un mot simple longueur, le bit système SY18 est mis à l’état 1. Le résultat obtenu (-20442) est erroné. E • Dépassement de la capacité absolue du mot de résultat (arithmétique non signée) : Lors de certains calculs, il est parfois intéressant d’interpréter un opérande en arithmétique non signée (le bit F représente alors la valeur 32768). La valeur absolue maximale pour un opérande simple longueur est de 65535. L’addition de 2 valeurs absolues (non signées) dont le résultat est supérieur à 65535 provoque un débordement. Ce débordement en arithmétique non signée est signalé par la mise à 1 du bit système SY17 (carry) qui représente la valeur 65536. La gestion de SY17 est à la charge du programme utilisateur. Dans le cas d’opérandes double longueur, le bit SY17 symbolise le débordement du 32ième bit et représente la valeur 4294967296. Exemple : W0 + W1 → W2 contenu en arithmétique Non signé signé 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 W0 65086 -450 + 1 SY17 2/12 1 1 1 1 1 1 1 1 0 0 1 1 0 1 0 1 W1 65333 -203 1 1 1 1 1 1 0 1 0 1 1 1 0 0 1 1 W2 Opérations sur mots 2 Le bit SY17 est mis à l’état 1 et représente la valeur 65536. Le résultat en arithmétique non signée est donc égal à : 65536 + 64883 soit 130419. Le résultat en arithmétique signée n’est pas erroné. Les deux cas décrits ci-dessus peuvent se produire simultanément. Dans ce cas les deux bits système SY17 et SY18 sont mis à l’état 1. La gestion de ces bits est à la charge du programme utilisateur. Exemple : W0 + W1 → W2 contenu en arithmétique Non signé signé 1 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 W0 45736 -19800 + 1 1 1 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 W1 38336 -27200 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 W2 18536 18536 SY18 SY17 Les deux bits système SY17 et SY18 sont mis à l’état 1. Le résultat en arithmétique signée (+18536) est erroné. En arithmétique non signée, le résultat (18536 + valeur de SY17, soit 84072) est correct. • Addition de deux mots de longueur différente L’addition d’un opérande simple longueur et d’un opérande double longueur est systématiquement effectuée en double longueur. Afin d’éviter tout risque de débordement le résultat de l’addition doit être transféré dans un opérande double longueur. Soustraction : opérande 1 - opérande 2 • Résultat négatif Dans le cas où le résultat de la soustraction est inférieur à 0, le bit système SY17 est mis à l’état 1. La gestion de ce bit est à la charge du programme utilisateur. Multiplication : opérande 1 * opérande 2 • Signe du résultat Il dépend du signe des opérandes à multiplier : 2 * 3 → 6 2 * -3 → -6 -2 * 3 → -6 -2 * -3 → 6 2/13 E • Débordement de capacité pendant l’opération Dans le cas où le résultat dépasse la capacité du plus long des opérandes, le bit SY18 (overflow) est mis à l’état 1 et le résultat est non significatif. La gestion de ce bit est à la charge du programme utilisateur. Division : opérande 1 / opérande 2 • Opérandes Le dividende est représenté par l’opérande 1 et le diviseur par l’opérande 2. Le quotient peut être transféré dans un opérande 3 ou être utilisé dans une expression arithmétique. • Signe du résultat Le signe du quotient dépend des signes du dividende (OP1) et du diviseur (OP2) : 8 / 2 → 4 8 / -2 → -4 -8 / 2 → -4 -8 / -2 → 4 • Division par 0 Dans le cas où le diviseur est égal à 0, la division est impossible et le bit système SY18 est mis à l’état 1. Le résultat sera donc erroné. La gestion du bit SY18 est à la charge du programme utilisateur. • Débordement de capacité durant l’opération Dans le cas où le quotient de la division dépasse la capacité du mot de rangement, le bit SY18 est mis à l’état 1. La gestion de ce bit est à la charge du programme utilisateur. E Reste de la division : opérande 1 REM opérande 2 • Opérandes Le dividende est représenté par l’opérande 1 et le diviseur par l’opérande 2. Le reste peut être transféré dans un opérande 3 ou être utilisé dans une expression arithmétique. • Signe du résultat Le signe du reste est toujours identique à celui du dividende. • Division par 0 Dans le cas où le diviseur est égal à 0, la division est impossible et le bit système SY18 est mis à l’état 1. Le résultat sera donc erroné. La gestion du bit SY18 est à la charge du programme utilisateur. 2/14 2 Opérations sur mots 2.6 Extraction de racine carrée L’instruction SQRT (square root) permet d’extraire la racine carrée d’un opérande. Structure • en langage à contacts l’extraction de racine carrée est réalisée par un bloc opération, constitué de la manière suivante : SQRT(OP1) → OP2 Dans le cas où le contenu de l’opérande 1 n’est pas exploité dans la suite du programme, OP1 et OP2 peuvent être constitués par le même objet mot. • en Littéral l’extraction de racine carrée peut être utilisée dans une expression arithmétique ou associée à une opération de transfert. Sa structure est la suivante : SQRT (opérande) Opérandes Objet Opérandes OP1 OP2 mot constant CWi * mot constant double longueur CDWi * mot interne Wi * Exemple CW3 * CW3(W45) CDW7 CDW7(W0) W12 W12(W11) DW31(W4) mot interne double longueur DWi * * DW31 mot commun COMi,j * * COM3,2 mot registre entrée/sortie IW/OWxy,i * * OW7,5 mot système SWi * * SW4 valeur immédiate * valeur immédiate double longueur * 73421 temps d’activité d’une étape Xi,V * X67,V temps d’activité d’étape de macro-étape Xj,i,V * X21,3,V mot extrait de bloc fonction Ti,P * expression arithmétique * (1) Exemple indexé E 3476 * (1) T3,P W8*(W12+7) sauf valeur courante de bloc fonction Exemple en langage à contacts : • extraction de la racine carrée du mot W5 et rangement du résultat dans le mot W6 : SQRT(W5) → W6 2/15 Exemple en Littéral : • extraction de la racine carrée du mot W1 et rangement du résultat dans le mot W2 : ! SQRT (W1) → W2 Règles d’utilisation • Signe de l’opérande L’extraction de racine carrée ne s’effectue que sur des valeurs positives. Le résultat est donc toujours positif. Dans le cas où l’opérande de la racine carrée est négatif, le bit système SY18 est mis à l’état 1 et le résultat est erroné. La gestion du bit système SY18 est à la charge du programme utilisateur. 2.7 Opérations logiques Les instructions associées permettent de réaliser une opération logique entre deux opérandes. Ces instructions sont : • AND : réalise le ET (intersection) entre deux opérandes, • OR : réalise le OU inclusif (union) entre deux opérandes, • XOR : réalise le OU exclusif (disjonction) entre deux opérandes, • CPL : réalise le complément logique d’un opérande. Une opération logique entre deux opérandes est effectuée bit à bit (bit 0 au bit F) sur le contenu des deux opérandes. E Structure • en langage à contacts une opération logique est réalisée par un bloc opération, constitué de la manière suivante : OP1 AND OP2 → OP3 CPL(OP1) → OP2 Dans le cas où le contenu de l’un des deux opérandes OP1 ou OP2 n’est pas exploité dans la suite du programme, l’opérande 3 (OP3) peut être constitué par le même objet mot que OP1 ou OP2. • en Littéral une opération logique peut être utilisée dans une expression arithmétique ou associée à une opération de transfert. Sa structure est la suivante : opérande 1 OR opérande 2 CPL (opérande) 2/16 2 Opérations sur mots Opérandes Le complément logique ne s’effectue que sur des mots internes simple longueur Wi. Les autres opérations logiques ne s’effectuent que sur les opérandes simple longueur suivants : Objet mot constant CWi Opérandes OP1 OP2 OP3 * * Exemple CW3 CW3(W45) W12(W11) mot interne Wi * * * W12 mot commun COMi,j * * * COM3,2 mot registre entrée/sortie IW/OWxy,i * * * OW7,5 * mot système SWi * * valeur immédiate * * SW4 3476 temps d’activité d’une étape Xi,V * * X67,V temps d’activité d’étape de macro-étape Xj,i,V * * X21,3,V mot extrait de bloc fonction Ti,P * * expression arithmétique * * (1) Exemple indexé * (1) T3,P W8*(W12+7) sauf valeur courante de bloc fonction. Rappel sur les opérations logique • ET logique : le résultat bit à bit est égal à 1 si les deux bits correspondants sont à l’état 1 : 0 AND 0 → 0 0 AND 1 → 0 1 AND 0 → 0 1 AND 1 → 1 • OU logique : le résultat bit à bit est égal à 1 si au moins un des deux bits correspondants est à l’état 1 : 0 OR 0 → 0 0 OR 1 → 1 1 OR 0 → 1 1 OR 1 → 1 • OU exclusif logique : le résultat bit à bit est égal à 1 si un seul des bits correspondants est à l’état 1 : 0 XOR 0 → 0 0 XOR 1 → 1 1 XOR 0 → 1 1 XOR 1 → 0 • Complément logique : le résultat est l’inversion bit à bit du mot à complémenter : CPL (0) → 1 CPL (1) → 0 2/17 E Exemple en langage à contacts : • OU logique entre W32 et W12 avec rangement du résultat dans le mot W15 : W32 OR W12 → W15 W32 OR W12 W15 1100 1100 1101 1011 0100 1011 1111 0000 1100 1111 1111 1011 Exemples en Littéral : • masquage des 8 bits de poids fort du mot W94 avec rangement du résultat dans W95 : ! H’00FF’ AND W94 → W95 H’00FF’ 0000 0000 1111 1111 AND W94 0100 1110 1010 1001 W95 0000 0000 1010 1001 • complément logique du mot W0 avec rangement du résultat dans W1 : ! CPL(W0) → W1 W0 0110 1000 1110 1011 W1 1001 0111 0001 0100 2.8 E Transcodage Une valeur numérique peut être représentée de plusieurs manières dans un mot. Ces différentes représentations sont appelées codes. Le passage d’une représentation à une autre est appelé transcodage. Cette opération peut être utilisée dans une expression arithmétique ou être associée à une opération de transfert afin de transférer le contenu transcodé dans un mot ou un tableau de mots. Les transcodages possibles sont les suivants : • • • • • DTB : transcodage BCD → binaire, BTD : transcodage binaire → BCD, ATB : transcodage ASCII → binaire, BTA : transcodage binaire → ASCII, GTB : transcodage Gray → binaire. Structure • en langage à contacts un transcodage est réalisé par un bloc opération, constitué de la manière suivante : DTB(OP1) → OP2 • en Littéral un transcodage peut être utilisée dans une expression arithmétique ou associée à une opération de transfert. Sa structure est la suivante : BTD (opérande) 2/18 2 Opérations sur mots Opérandes Les conversions de codes ne sont effectives que sur des opérandes simple longueur, sauf pour la conversion binaire → ASCII. Objet Opérandes OP1 OP2 Exemple mot constant CWi * mot interne Wi * * mot commun COMi,j * mot registre entrée/sortie IW/OWxy,i * * OW7,5 mot système SWi * * valeur immédiate * mot interne double longueur DWi CW3 CW3(W45) W12 W12(W11) * DW31 DW31(W4) * COM3,2 SW4 3476 temps d’activité d’une étape Xi,V * X67,V temps d’activité d’étape de macro-étape Xj,i,V * X21,3,V mot extrait de bloc fonction Ti,P * expression arithmétique * (1) Exemple indexé * (1) T3,P W8*(W12+7) sauf valeur courante de bloc fonction Rappel sur le code BCD : Le code BCD (Binary Coded Décimal) qui signifie Décimal codé binaire permet de représenter un chiffre décimal 0 à 9 par un ensemble de 4 bits. Un objet mot de 16 bits peut donc contenir un nombre exprimé sur 4 décades (0 < N < 9999). Décimal 0 1 2 3 4 5 Binaire 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 Exemple : 6 7 8 9 0 F Mot W5 code en BCD : 0010 0100 0101 0000 Valeur en BCD du mot W5 : 2 4 5 0 Valeur en décimal du mot W5 : 9296 Mot W12 codé en binaire et exprimant la valeur 2450 : 0000 1001 1001 0010 Le passage du mot W5 au mot W12 s’effectue par l’instruction DTB, Le passage du mot W12 au mot W5 s’effectue par l’instruction BTD. 2/19 E Rappel sur le code ASCII : L’ensemble des 256 caractères alphanumériques et de contrôle peut être codé sur 8 bits. Ce code appelé ASCII (American Standard Code for Information Interchange) est compatible avec la notion d’octets. Tout mot de 16 bits peut donc être formé par 2 codes ASCII définissant 2 caractères. Rappel sur le code Gray : Le code Gray ou "binaire réfléchi" permet de coder une valeur digitale en cours d’évolution en une suite de configurations binaires se différenciant l’une de l’autre par le changement d’état d’un et d’un seul bit. Ce code permet par exemple d’éviter l’aléas suivant : en binaire pur, le passage de la valeur 0111 à 1000 peut engendrer des valeurs aléatoires comprises entre 0 et 1000, les bits ne changeant pas de valeur de façon parfaitement simultanée. Décimal 0 1 2 3 4 5 6 7 8 9 Binaire 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 Gray 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 Exemples en langage à contacts : • transcodage de la valeur binaire du mot W15 et rangement dans les mots W20 à W22 : BTA(W15) → W20[3] E valeur décimale de W15 : +128 valeur décimale de W15 : -128 valeur décimale de W15 : 0 2/20 0 + 0 W20 H30 H2B 1 0 W21 H31 H30 8 2 W22 H38 H32 0 - W20 H30 H2D 1 0 W21 H31 H30 8 2 W22 H38 H32 0 0 W20 H30 H30 H2B 0 0 W21 H30 H30 0 0 W22 H30 H30 Opérations sur mots 2 • transcodage de la valeur binaire du mot DW1 et rangement dans les mots W10 à W15 : BTA(DW1) → W10[6] valeur décimale de DW1 : -54643 0 - W10 H30 H2D 0 0 W11 H30 H30 0 0 W12 H30 H30 5 0 W13 H35 H30 6 4 W14 H36 H34 3 4 W15 H33 H34 Exemples en Littéral : • transcodage des codes ASCII rangés dans les mots W30 à W32 et transfert dans W40 : ! ATB (W30[3]) → W40 → W40 = +128 W30 H30 H2B W31 H31 H30 W32 H38 H32 W30 H30 H2D W31 H31 H30 W32 H38 H32 → W40 = -128 E • transcodage Gray → binaire du contenu du mot W124 et rangement dans le mot d’entrée du registre R3 : valeur en code Gray : 27 ! GTB (W124) → R3,I W124 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 R3,I 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 valeur en décimal : 27 Règles d’utilisation • Transcodage BCD → binaire - le transcodage s’effectue sur l’ensemble des bits de l’opérande à transcoder. - un contrôle est effectué automatiquement par l’automate sur chaque quartet (4 bits) de l’opérande. Chaque quartet ne doit pas représenter une valeur décimale supérieure à 9. Cette vérification a pour but d’effectuer l’opération de transcodage sur un opérande contenant bien une valeur exprimée en code BCD. Dans le cas où la valeur n’est pas une valeur BCD, le bit système SY18 (débordement) est positionné à 1. La gestion de ce bit est à la charge du programme utilisateur. 2/21 • Transcodage binaire → BCD - l’opération de transcodage ne peut s’effectuer que sur un opérande dont le contenu est compris entre 0 et 9999. Dans le cas contraire le résultat du transcodage est erroné et l’automate positionne le bit système SY18 à l’état 1. La gestion de ce bit est à la charge du programme utilisateur. Exemple : - transcodage d’une valeur supérieure à 9999 : 21023 → H’521F’ ou B’521?’ - transcodage d’une valeur négative : -18 → H’FFEE’ ou B’????’ - BTD (W9) → W182 : si contenu binaire de W9 est : 0000 0101 1100 1011, le résultat de la conversion BTD dans W182 sera : 0001 0100 1000 0011 1 4 8 3 • Transcodage ASCII → binaire - le résultat du transcodage d’un tableau de 3 mots sera toujours rangé dans un mot simple longueur. - le résultat du transcodage d’un tableau de 6 mots sera toujours rangé dans un mot double longueur. - le code H30 (0) est le code neutre. • Transcodage binaire → ASCII - le contenu d’un mot simple longueur pouvant être compris entre -32768 et +32767, soit 5 chiffres plus signe, la destination devra être un tableau constitué de 6 octets (3 mots). E - le contenu d’un mot double longueur (-2147483648 à +2147483647) pouvant comprendre 10 chiffres plus signe, le tableau de destination devra être constitué par 12 octets, soit 6 mots. - le rangement des caractères est réalisé de manière à effectuer aisément un échange de caractères via une liaison série asynchrone. • Transcodage Gray → binaire - l’opération de transcodage s’effectue sur l’ensemble des bits de l’opérande à transcoder. - le contenu de l’opérande doit être compris entre 0 et 9999. Dans le cas contraire, le résultat du transcodage est erroné et l’automate positionne le bit système SY18 à 1. La gestion de ce bit est à la charge du programme utilisateur. 2/22 Opérations sur tableaux de mots Opérations sur tableaux de mots 3 Chapitre 3 Sous chapitre Page 3.1 Initialisation d’un tableau de mots 3/2 3.2 Transfert d’un tableau dans un autre 3/3 3.3 Opérations entre deux tableaux 3/5 3.4 Opérations sur tous les mots d’un tableau 3/6 3.5 Sommation des mots d’un tableau 3/8 3.6 Comparaison de deux tableaux 3/9 3.7 Recherche de tous les mots différents lors d’une comparaison de deux tableaux 3/11 3.8 Recherche dans un tableau du premier mot égal à une valeur 3/12 3.9 Recherche dans un tableau de tous les mots égaux à une valeur 3/13 Ce chapitre se termine à la page 3/14 3/1 E 3.1 Initialisation d’un tableau de mots Cette opération consiste à transférer une valeur immédiate ou le contenu d’un mot dans tous les mots constituant le tableau à initialiser. Structure • en langage à contacts l’initialisation est réalisée par un bloc opération, constitué de la manière suivante : OP1 → tableau • en Littéral l’initialisation est réalisée par une phrase action qui peut être utilisée seule, dans une phrase conditionnelle ou itérative : ! opérande → tableau Opérandes Objet OP1 mot constant CWi Tableau * mot constant double longueur CDWi * mot interne Wi * CW3 CDW7 * W12[6] mot interne double longueur DWi * DW31 valeur immédiate * H’FFFF’ Exemples : E Exemple • mise à 0 des mots W0 à W99 : 0 → W0[100] • chargement du contenu du mot CW3 dans les mots W30 à W41 : ! CW3 → W30[12] 3/2 3 Opérations sur tableaux de mots 3.2 Transfert d’un tableau dans un autre Cette opération consiste à transférer le contenu des mots du tableau origine dans les mots correspondants du tableau destination. Structure • en langage à contacts le transfert est réalisé par un bloc opération, constitué de la manière suivante : tableau origine → tableau destination • en Littéral le transfert est réalisé par une phrase action qui peut être utilisée seule, dans une phrase conditionnelle ou itérative : ! tableau origine → tableau destination Opérandes Objet Tableaux origine destinat. Exemple Exemple indexé mot constant CWi * CW3[3] CW3(W5)[3] mot constant double longueur CDWi * CDW7[5] CDW7(W1)[5] mot interne Wi * * W12[6] W12(W10)[6] mot interne double longueur DWi * * DW31[5] DW31(W2)[5] Exemple : E • transfert du contenu des mots DW1 à DW3 dans les mots DW10 à DW12 : DW1[3] → DW10[3] ! DW1[3] → DW10[3] DW1 → DW10 DW2 → DW11 DW3 → DW12 Règle d’utilisation • les deux tableaux doivent être de longueur identique et de type similaire. Cas spécifiques • chevauchement de deux tableaux : dans ce cas, l’opération de transfert doit être conditionné par une expression de front (un transfert seulement) 3/3 1er cas : IF RE(B72) THEN W0[6] → W3[6] Afin de ne pas modifier le tableau origine pendant l’opération, le transfert s’effectue en partant du mot de rang le plus élevé (W5 → W8) jusqu’au mot de rang le plus faible (W0 → W3) : avant opération après opération W0 23 W0 23 W1 255 W1 255 W2 34 destination W2 34 destination W3 50 50 W3 23 23 W4 63 63 W4 255 255 W5 71 71 W5 34 34 W6 origine * W6 origine 50 W7 * W7 63 W8 * W8 71 2eme cas : IF RE(B85) THEN W7[5] → W5[5] Afin de ne pas modifier le tableau origine pendant l’opération, le transfert s’effectue en partant du mot de rang le plus faible (W7 → W5) jusqu’au mot de rang le plus élevé (W11 → W9) : E avant opération avant opération W5 W5 * W6 origine * W6 origine 56 W7 45 45 W7 12 12 W8 56 56 W8 25 25 W9 12 12 W9 530 W10 25 W11 530 3/4 45 destination W10 25 W11 530 530 destination 3 Opérations sur tableaux de mots 3.3 Opérations entre deux tableaux Les instructions associées permettent de réaliser une opération arithmétique ou logique entre les mots de deux tableaux et d’en transférer le résultat dans un tableau destination. Ces opérations sont réalisées mot à mot (entre les mots de même rang) : • + : addition mot à mot de tableaux et transfert des résultats, • : soustraction mot à mot de tableaux et transfert des résultats, • * : multiplication mot à mot de tableaux et transfert des résultats, • / : division mot à mot de tableaux et transfert des résultats, • REM : division mot à mot de tableaux et transfert des restes, • AND : ET logique bit à bit des mots des tableaux et transfert des résultats, • OR : OU logique bit à bit des mots des tableaux et transfert des résultats, • XOR : OU exclusif logique bit à bit des mots des tableaux et transfert des résultats. Structure • en langage à contacts une opération arithmétique ou logique entre deux tableaux est réalisée par un bloc opération, constitué de la manière suivante : tableau 1 AND tableau 2 → tableau destination • en Littéral une opération arithmétique ou logique entre deux tableaux est réalisée par une phrase action qui peut être utilisée seule, dans une phrase conditionnelle ou itérative : ! tableau 1 + tableau 2 → tableau destination Opérandes E Objet mot constant CWi 1 Tableaux 2 * * Exemple destinat. CW3[3] mot constant double longueur CDWi * * mot interne Wi * * * W12[6] mot interne double longueur DWi * * * (1) DW31[5] (1) CDW7[5] sauf pour les opérations logiques AND, OR, XOR 3/5 Exemple : • addition mot à mot de tableaux et transfert du résultat : ! W15[4] + W25[4] → W35[4] W15 12 + W25 3 → W35 15 W16 37 + W26 20 → W36 57 W17 44 + W27 1 → W37 45 W18 0 + W28 3524 → W38 3524 Règles d’utilisation • les tableaux doivent être de longueur identique et de type similaire. • toutes les règles d’utilisation relatives aux opérations logiques et arithmétiques sur mots (masquage, carry, overflow) restent vraies lors des opérations entre tableaux de mots. • si l’un des tableau peut être perdu, il est possible de le réutiliser comme tableau de destination (exemple : W10[5] * W15[5] → W15[5]). • dans le cas de chevauchement du tableau 1 ou 2 avec le tableau de destination, les opérations sont réalisées dans un ordre différent (voir chapitre 3.2 - transfert d’un tableau dans un autre). 3.4 E Opérations sur tous les mots d’un tableau Ces opérations permettent de réaliser une opération arithmétique (+, -, *, /, REM) ou logique (AND, OR, XOR) entre un opérande et les mots d’un tableau origine et d’en transférer le résultat mot à mot dans un tableau de destination. Structure • en langage à contacts cette opération est réalisée par un bloc opération, constitué de la manière suivante : OP1 * tableau origine → tableau destination • en Littéral cette opération est réalisée par une phrase action qui peut être utilisée seule, dans une phrase conditionnelle ou itérative : ! opérande + tableau origine → tableau destination 3/6 3 Opérations sur tableaux de mots Opérandes Objet OP1 Tableaux origine destinat. Exemple indexé mot constant CWi * * CW3[3] mot constant double longueur CDWi * * CDW7[5] mot interne Wi * * * W12[6] mot interne double longueur DWi * * * (1) DW31[5] valeur immédiate * 135 expression arithmétique * 6+W4 (1) sauf pour les opérations logiques AND, OR, XOR Exemples : • multiplication du contenu des mots d’un tableau par le contenu de W10 et rangement du résultat dans un autre tableau : W10 * W20[4] → W30[4] W10 2 * W20 3 → W30 6 * W21 20 → W31 40 * W22 1 → W32 2 * W23 3524 → W33 7048 • multiplication du contenu des mots d’un tableau par une expression arithmétique et rangement du résultat dans un autre tableau : ! 6 + W4 * W100[4] → W200[4] le traitement réalisé est le suivant : (6 + W4) * W100 → W200 (6 + W4) * W101 → W201 (6 + W4) * W102 → W202 (6 + W4) * W103 → W203 3/7 E Règles d’utilisation • toutes les règles d’utilisation relatives aux opérations arithmétiques et logiques (masquage, carry, overflow) restent vraies (voir chapitres 2.5 et 2.7). • l’opération sur tableau n’est pas prise en compte dans les priorités d’exécution des instructions de l’expression arithmétique. • les règles d’utilisation sur les tableaux sont identiques à celles décrites pour les opérations entre deux tableaux (voir chapitre 3.3). • si le tableau d’origine peut être perdu, il est possible de le réutiliser comme tableau de destination (exemple : 155 * W125[200] → W125[200]). • dans le cas d’un chevauchement du tableau origine avec le tableau de destination, les opérations sont réalisées dans un ordre différent (voir chapitre 3.2 - transfert d’un tableau dans un autre). • le type d’opérande (simple ou double longueur doit être identique à celui des tableaux). 3.5 Sommation des mots d’un tableau Cette opération consiste à réaliser l’addition de tous les mots d’un tableau (checksum) et à transférer le résultat dans un mot. Structure E • en langage à contacts la sommation des mots d’un tableau est réalisée par un bloc opération, constitué de la manière suivante : tableau + → mot • en Littéral cette opération est réalisée par une phrase action qui peut être utilisée seule, dans une phrase conditionnelle ou itérative : ! tableau + → mot Opérandes Objet Tableau Mot Exemple mot constant CWi * CW3 mot constant double longueur CDWi * CDW7 mot interne Wi * * W12[6] mot interne double longueur DWi * * DW31 3/8 3 Opérations sur tableaux de mots Exemple : • checksum d’un tableau et rangement du résultat dans W0 : ! CW30[5]+ → W0 CW30 3 + CW31 7 + CW32 10 + CW33 1 + CW34 2 → W0 23 Règles d’utilisation • la longueur du mot de rangement doit être identique à celle des mots du tableau. • les règles d’utilisation relatives à l’addition (carry, overflow) restent vraies dans le cas de la sommation (voir chapitre 2.5). • l’affectation multiple de la sommation d’un tableau est possible : ! DW5[4]+ → DW12 → DW1 3.6 Comparaison de deux tableaux Cette opération consiste à comparer mot à mot le contenu de deux tableaux. Si une différence apparait, le rang des premiers mots dissemblables est rangé dans un mot de résultat, sinon ce mot est égal à -1. Structure • en langage à contacts la comparaison de deux tableaux est réalisée par un bloc opération, constitué de la manière suivante : EQUAL(tableau1 ; tableau2) → mot résultat • en Littéral cette opération est réalisée par une phrase action qui peut être utilisée seule, dans une phrase conditionnelle ou itérative : ! EQUAL (tableau1 ; tableau2) → mot résultat 3/9 E Opérandes • les mots qui constituent les deux tableaux sont obligatoirement des mots internes simple ou double longueur. • le mot résultat est un mot pouvant être écrit, de préférence un mot interne. Exemples : • comparaison de deux tableaux identiques : ! EQUAL (W10[4] ; W26[4]) → W30 W10 12 W26 12 W11 37 W27 37 W12 44 W28 44 W13 3524 W29 3524 → W30 -1 • comparaison de deux tableaux différents : ! EQUAL (W10[4] ; W18[4]) → W30 E W10 12 W18 12 W11 37 W19 37 W12 44 W20 43 W13 3524 W21 3524 → W30 2 La comparaison de W13 avec W21 n’est pas effectuée. L’utilisation du mot W30 comme index permet de rechercher le mot différent W10(W30) ou W18(W30). Règle d’utilisation • les tableaux à comparer doivent être constitués de mots de longueur identique et de type similaire. 3/10 Opérations sur tableaux de mots 3.7 3 Recherche de tous les mots différents lors d’une comparaison de deux tableaux Cette opération consiste à comparer mot à mot le contenu de deux tableaux. Si une différence apparait, le rang des premiers mots dissemblables est rangé dans un mot de résultat, sinon ce mot est égal à -1. Cette opération s’effectue en partant des mots dont le rang est contenu dans le mot d’indice. La modification du mot d’indice permet donc de rechercher l’adresse de tous les mots différents. Structure • en langage à contacts la comparaison de deux tableaux est réalisée par un bloc opération, constitué de la manière suivante : EQUAL(tableau1 ; tableau2 ; mot indice) → mot résultat • en Littéral cette opération est réalisée par une phrase action qui peut être utilisée seule, dans une phrase conditionnelle ou itérative : ! EQUAL (tableau1 ; tableau2 ; mot indice) → mot résultat Opérandes • les mots qui constituent les deux tableaux sont obligatoirement des mots internes simple ou double longueur. • les mots indice et résultat sont obligatoirement des mots internes. Exemples : • comparaison de deux tableaux différents : ! EQUAL (W50[6] ; W60[6] ; W0) → W1 E W50 500 W60 500 W51 36 W61 35 W52 44 W62 44 W53 10256 W63 10256 W54 67 W64 68 W55 541 W65 541 → W1 = 1 → W1 = 4 Si le mot indice W0 = 0, le mot de résultat W1 contiendra le rang des deux premiers mots différents trouvés à partir des mots de rang 0 (W50 et W60), soit W1 = 1. Si le mot indice W0 = 2, le mot de résultat W1 contiendra le rang des deux premiers mots différents trouvés à partir des mots de rang 2 (W52 et W62), soit W1 = 4. Règle d’utilisation • les tableaux à comparer doivent être constitués de mots de longueur identique et de type similaire. 3/11 3.8 Recherche dans un tableau du premier mot égal à une valeur Cette opération consiste à comparer une valeur écrite dans un mot avec le contenu des mots d’un tableau et de ranger le rang du premier mot égal à cette valeur dans un mot de résultat. Si aucun mot n’est égal à cette valeur, le mot de résultat sera -1. Cette opération s’effectue toujours en partant du premier mot du tableau (mot de rang 0). Structure • en langage à contacts cette recherche est réalisée par un bloc opération, constitué de la manière suivante : SEARCH(tableau ; mot à rechercher ) → mot résultat • en Littéral cette opération est réalisée par une phrase action qui peut être utilisée seule, dans une phrase conditionnelle ou itérative : ! SEARCH (tableau ; mot à rechercher) → mot résultat Opérandes • les mots qui constituent le tableau sont des mots internes simple ou double longueur. • le mot résultat est un mot pouvant être écrit, de préférence un mot interne. Exemples : E • recherche dans un tableau du mot dont le contenu est celui du mot W10 , puis rangement du résultat dans W30 : ! SEARCH (W18[4] ; W10) → W30 W10 43 W18 12 W19 37 W20 43 W21 3524 → W30 2 Le contenu du mot W10 étant égal au contenu du mot W20, le rang de ce mot (2) est rangé dans le mot W30. La comparaison du mot W10 avec le mot W21 n’est pas effectuée. L’utilisation du mot W30 comme index permet de rechercher le mot du tableau égal à la valeur : W18(W30). Règle d’utilisation • les mots qui constituent le tableau doivent être de longueur identique au mot recherché. 3/12 Opérations sur tableaux de mots 3.9 3 Recherche dans un tableau de tous les mots égaux une valeur Cette opération consiste à comparer une valeur écrite dans un mot avec le contenu des mots d’un tableau, et à ranger le rang du premier mot égal à cette valeur dans un mot de résultat. Si aucun mot n’est trouvé égal à cette valeur, le mot de résultat est égal à -1. Cette opération s’effectue en partant des mots dont le rang est contenu dans le mot d’indice. La modification du mot d’indice permet donc de rechercher l’adresse de tous les mots dont le contenu est égal à la valeur recherchée. Structure • en langage à contacts cette opération est réalisée par un bloc opération, constitué de la manière suivante : SEARCH(tableau ; mot à rechercher ; mot indice) → mot résultat • en Littéral cette opération est réalisée par une phrase action qui peut être utilisée seule, dans une phrase conditionnelle ou itérative : ! SEARCH (tableau ; mot à rechercher ; mot indice) → mot résultat Opérandes • les mots qui constituent le tableau sont des mots internes simple ou double longueur. • les mots indice et résultat sont obligatoirement des mots internes. Exemples : • recherche dans un tableau, de la valeur contenue dans W10 : ! SEARCH (W50[6] ; W10 ; W0) → W1 W10 36 W50 500 W51 36 W52 44 W53 10256 W54 36 W55 541 E → W1 = 1 → W1 = 4 Si le mot indice W0 = 0, le mot de résultat W1 contiendra le rang du premier mot égal au contenu de W10, trouvé à partir du mot de rang 0 dans le tableau (W50), soit W1 = 1. Si le mot indice W0 = 2, le mot de résultat W1 contiendra le rang du premier mot égal au contenu de W10, trouvé à partir du mot de rang 2 dans le tableau (W52), soit W1 = 4. Règle d’utilisation • les mots qui constituent le tableau doivent être de longueur identique au mot recherché. 3/13 E 3/14 Opérations sur programme Opérations sur programme Sous chapitre 4 Chapitre 4 Page 4.1 Gestion des interruptions coupleur 4/2 Ce chapitre se termine à la page 4/4 E 4/1 4.1 Gestion des interruptions coupleur Lorsqu’une application comporte plusieurs coupleurs intelligents, le programme doit permettre de gérer les demandes d’interruption une par une, gérer leur reconnaissance, leur priorité, leur acquittement et leur traitement. Les instructions possibles sont les suivantes : MASKINT : cette instruction permet de masquer la demande d’interruption provenant du coupleur. Celle-ci est alors sans effet sur le déroulement de la tâche en cours. Par défaut, les interruptions sont masquées. DMASKINT : cette instruction permet de démasquer la demande d’interruption provenant du coupleur, validant ainsi sa prise en compte par le système (si la tâche IT a été activée). READINT : cette instruction provoque la recopie du bit d’interruption du coupleur dans un bit interne. Ecrit dans la tâche IT, elle permet d’associer un traitement à chaque coupleur demandant une interruption. ACKINT : écrite en tâche IT, cette instruction permet au coupleur concerné d’acquitter sa demande d’interruption. Elle entraîne la mise à 0 du bit interruption coupleur. Cette instruction est obligatoire afin que chaque demande d’interruption ne provoque qu’une seule exécution de la tâche IT. Dans le cas contraire, la tâche IT est exécuté en permanence d’où dépassement de la période (arrêt de l’automate, voyant MEM allumé). Structure E • en langage à contacts ces opérations sont réalisées par un bloc opération, constitué de la manière suivante : MASKINT(Ixy) masquage des interruptions DEMASKINT(Ixy) démasquage des interruptions READINT(Ixy,Bi) lecture des interruptions ACKINT(Ixy) acquittement des interruptions Opérandes • le coupleur est défini par son adresse Ixy avec : - x : numéro du bac, - y : emplacement du coupleur dans le bac. • lorsqu’une lecture des interruptions est effectuée (READINT), la présence d’une interruption depuis le coupleur Ixy est signalée par le bit Bi qui passe à 1. 4/2 Opérations sur programme 4 • en Littéral ces opérations sont réalisées par une phrase action qui peut être utilisée seule, dans une phrase conditionnelle ou itérative : ! MASKINT (Ixy) masquage des interruptions ! DMASKINT (Ixy) démasquage des interruptions ! READINT (Ixy; Bi) lecture des interruptions ! ACKINT (Ixy) acquittement des interruptions x : numéro du bac y : emplacement du coupleur dans le bac Bi : bit de présence d’IT Exemple d’utilisation : gérer les demandes d’interruption émises par les coupleurs I4, I5 et I6 : en tâche maître MAST : Les lignes de programme ci-dessous, écrites en tâche maître, permettent de conditionner la prise en compte des demandes d’interruption à des conditions logiques. La ligne L5 permet d’activer la tâche IT (obligatoire pour son exécution). < GESTION DES IT COUPLEURS I4 A I6 ! L5 : IF SY0 THEN START CTRL1; DMASKINT(I4) ! IF I5,9 THEN DMASKINT(I5) ELSE MASKINT(I5) ! IF B143 . XM8 THEN DMASKINT(I6) ELSE MASKINT(I6) E 4/3 en tâche interruption IT : La ligne de programme L1 ci-dessous permet de reconnaître le coupleur ayant demandé l’exécution de la tâche interruption. Si l’interruption est demandée par le coupleur I4, la ligne L2 permet de l’acquitter. Si ce n’est pas le cas le programme saute à la ligne L3 qui permet le test de l’interruption du coupleur suivant (coupleur I5). Le traitement associé au coupleur I4 exécuté, le programme saute en fin de tâche IT. Les lignes L3 et L4 permettent un traitement de même type sur les coupleurs I5 et I6. < LECTURE DES IT COUPLEUR I4 A I6 ! L1 : READINT(I4;B8); READINT(I5;B9); READINT(I6;B10) < TRAITEMENT ET ACQUITTEMENT DE L’IT COUPLEUR I4 ! L2 : IF B8 THEN ACKINT(I4) ELSE JUMP L3 ! OW4,0 → W55; 0W4,1 → W55; ... ... traitement de l’interruption; JUMP L5 < TRAITEMENT ET ACQUITTEMENT DE L’IT COUPLEUR I5 ! L3 : IF B9 THEN ACKINT(I5) ELSE JUMP L4 ! E WRITEREG (W32;I5); ... ... traitement de l’interruption; JUMP L5 < TRAITEMENT ET ACQUITTEMENT DE L’IT COUPLEUR I6 ! L4 : IF B10 THEN ACKINT(I6) ELSE JUMP L5 ! ... traitement de l’interruption ! L5 ! EOP(fin de tâche IT) Règle d’utilisation • les deux instructions MASKINT et DMASKINT s’utilisent dans les tâches périodiques et permettent d’établir une hiérarchie de la prise en compte des interruptions en fonction de l’application. 4/4 Echanges explicites Echanges explicites 5 Chapitre 5 Sous chapitre Page 5.1 Echanges explicites des bits d’entrées et de sorties T.O.R. 5/2 5.2 Echanges explicites des registres d’entrées et de sorties 5/4 Ce chapitre se termine à la page 5/6 E 5/1 5.1 Echanges explicites des bits d’entrées et de sorties T.O.R. Ces opérations permettent la lecture ou l’écriture immédiate (sans attendre leur mise à jour implicite) des bits T.O.R. des interfaces d’entrées/sorties ou des coupleurs intelligents : READBIT : cette instruction permet la lecture immédiate des bits T.O.R. d’un interface ou d’un coupleur et le transfert de l’état de ces bits dans une chaîne de bits internes. WRITEBIT : cette instruction permet l’écriture immédiate d’une chaîne de bits dans les bits T.O.R. d’un module de sortie ou d’un coupleur intelligent. Structure • en langage à contacts ces opérations sont réalisées par un bloc opération, constituée de la manière suivante : - lecture immédiate des bits d’entrées T.O.R. : READBIT(module à lire ; adresse de rangement) - écriture immédiate dans les bits de sorties T.O.R. : WRITEBIT(adresse de la chaîne de bits ; module à écrire) • en Littéral ces opérations sont réalisées par une phrase action qui peut être utilisée seule, dans une phrase conditionnelle ou itérative : E - lecture immédiate des bits d’entrées T.O.R. : ! READBIT(module à lire ; adresse de rangement) - écriture immédiate dans les bits de sorties T.O.R. : ! WRITEBIT(adresse de la chaîne de bits à transférer ; module à écrire) Opérandes • le module à lire ou à écrire est spécifié par Ixy, avec : - x : numéro du bac, - y : emplacement du module dans le bac. • l’adresse de rangement est le premier bit de la chaîne de bits destination. Cette chaîne est constituée de bits internes Bi. Sa longueur, implicite, est fixée par la modularité du module lu : - 8 bits pour interfaces TSX DET 8 .., ou coupleurs, - 16 bits pour interfaces TSX DET 16 ... • l’adresse de la chaîne de bits internes à transférer est donnée par le premier bit de cette chaîne. Sa longueur, implicite, est fixée par la modularité du module à écrire : - 8 bits pour interfaces TSX DST 8 .., ou coupleurs, - 16 bits pour interfaces TSX DST 16 ... • l’indexation n’est pas permise. 5/2 Echanges explicites 5 Note : la lecture ou l’écriture d’un module 24 ou 32 bits s’effectue en deux temps : • lecture (ou écriture) des 16 premiers bits : READBIT(Ixy,Bi), • lecture (ou écriture) des bits restants : READBIT(I(x+1)y,Bi+16). Exemples d’utilisation : • lecture immédiate des bits d’entrées du module I14, de modularité 8 : ! READBIT(I14;B5) cette instruction provoque les transferts suivants : - état de l’entrée I14,0 → B5, - état de l’entrée I14,1 → B6, - ... - état de l’entrée I14,7 → B12. • écriture immédiate des bits de sorties du module O12, de modularité 16 : ! WRITEBIT(B20;I12) cette instruction provoque instantanément : - B20 = 1 → mise à 1 de la sortie O12,0, - B21 = 0 → mise à 0 de la sortie O12,1, - ... - B29 = 0 → mise à 0 de la sortie O12,9, - B30 = 1 → mise à 1 de la sortie O12,A, - B31 = 1 → mise à 1 de la sortie O12,B, - ... - B35 = 0 → mise à 0 de la sortie O12,F. Précautions d’utilisation de l’instruction WRITEBIT Afin d’éviter tout conflit avec l’écriture des bits de sorties, effectuée systématiquement en fin de tâche (celle où est configuré le module), l’utilisation de l’instruction WRITEBIT doit être accompagnée de la mise à jour par programme, des bits O inclus dans la mémoire bits et concernés par cet échange implicite. Exemple : provoquer l’écriture immédiate des sorties T.O.R. 2 et A du module O17, sans modifier l’état des autres sorties : ! IF ... THEN RESET O17,2; SET O17,A (1) (2) O17,0[16] → B50[16]; (3) WRITEBIT(B50;I17) (1) positionner les bits O17,2 et O17,A dans la mémoire bits, (2) transférer la nouvelle image du module dans la chaîne de bits B50 à B65, (3) provoquer l’échange explicite du module O17. La nouvelle image est écrite immédiatement dans les bits de sorties O17,0 à O17,F. 5/3 E 5.2 Echanges explicites des registres d’entrées et de sorties Ces opérations permettent la lecture ou l’écriture immédiate (sans attendre leur mise à jour implicite) des mots registres des coupleurs intelligents : READREG : cette instruction permet la lecture immédiate des 8 registres d’entrées d’un coupleur intelligent et le transfert de leur contenu dans un tableau de 8 mots. WRITEREG : cette instruction permet l’écriture immédiate des 8 registres de sorties d’un coupleur intelligent, à partir d’un tableau de 8 mots. Structure • en langage à contacts ces opérations sont réalisées par un bloc opération, constituée de la manière suivante : - lecture immédiate des registres d’entrées : READREG(coupleur à lire ; adresse de rangement) - écriture immédiate des registres de sorties : WRITEREG(adresse des mots à échanger ; coupleur à écrire) • en Littéral ces opérations sont réalisées par une phrase action qui peut être utilisée seule, dans une phrase conditionnelle ou itérative : - lecture immédiate des registres d’entrées : ! READREG(coupleur à lire ; adresse de rangement) E - écriture immédiate des registres de sorties : ! WRITEREG(adresse des mots à échanger ; coupleur à écrire) Opérandes • le coupleur à lire ou à écrire est spécifié par Ixy, avec : - x : numéro du bac, - y : emplacement du coupleur dans le bac. • l’adresse de rangement est définie par le premier mot du tableau destination. Ce tableau est constitué de 8 mots internes Wi. • l’adresse des mots à échanger est donnée par le premier mot du tableau. • l’indexation n’est pas permise. 5/4 Echanges explicites 5 Exemples d’utilisation • lecture immédiate des registres d’entrées du coupleur I26 : ! READREG(I26;W130) cette instruction provoque les transferts suivants : - contenu du registre 0 → W130, - contenu du registre 1 → W131, - ... - contenu du registre 7 → W137. • écriture immédiate des registres de sorties du coupleur situé à l’emplacement 7 du bac 0 : ! WRITEREG(W25;I7) cette instruction provoque instantanément : - W25 → registre 0, - W26 → registre 1, - ... - W32 → registre 9. Précautions d’utilisation de l’instruction WRITEREG Afin d’éviter tout conflit avec l’écriture des mots registres, effectuée systématiquement en fin de tâche (celle où est configuré le module), l’utilisation de l’instruction WRITEREG doit être accompagnée de la mise à jour par programme, des mots registres OW concernés par cet échange implicite. Exemple : provoquer l’écriture immédiate des registres de sorties 3, 4, 5 et 6 du coupleur I23, sans modifier l’état des autres registres : ! IF ... (1) THEN OW23,0 → W2; OW23,1 → W3; OW23,2 → W4; OW23,7 → W9; 5500 250 1044 -700 → → → → OW23,3 OW23,4 OW23,5 OW23,6 → → → → WRITEREG(W2;I23) W5; W6; W7; W8; (2) (3) (1) recopier les mots registres qui ne doivent pas être modifiés dans les mots du tableau à transférer, (2) transférer les nouvelles valeurs à écrire dans les mots registres OW (pour mise à jour) et dans les mots correspondants du tableau à transférer, (3) provoquer l’écriture explicite des 8 registres de sorties du coupleur 23 par transfert du tableau de mots W2 à W9. 5/5 E E 5/6 Opérations sur fonctions Opérations sur fonctions Sous chapitre 6.1 Fonction texte 6.1-1 6.1-2 6.1-3 6.1-4 Présentation et structure Fonctionnement Tables de données Paramètres d’utilisation 6.2 Exécution d’un OFB Ce chapitre se termine à la page 6 Chapitre 6 Page 6/2 6/2 6/2 6/3 6/6 6/9 6/12 E 6/1 6.1 Fonction texte 6.1-1 Présentation et structure Se reporter : • "Langage à contacts", Intercalaire C, Chapitre 7, • "Langage Littéral", Intercalaire D, Chapitre 6.6. 6.1-2 Fonctionnement • en langage en contacts : La mise à 1 des entrées I ou O permet de positionner le bloc en lecture ou en écriture. La réception ou l’émission est alors déclenchée par un front montant sur l’entrée S (départ), si l’entrée R (Reset) est à l’état 0 et si la sortie D est à l’état 1 (aucun échange en cours). En fin d’écriture ou de lecture si l’échange a été correct, la sortie D est mise à l’état 1. De même si l’échange n’est pas correct, la sortie E (échange erroné) est mise à 1. De la même manière la mise à l’état 1 simultanée des entrées I et O permet l’émission suivie de la réception. L’échange est déclenché par un front montant sur l’entrée S, si l’entrée R est à 0 et la sortie D à 1. Lorsque l’émission et la réception sont terminées la sortie D est mise à l’état 1. De même si l’échange est incorrect, la sortie E est mise à 1. E A tout instant, la mise à 1 de l’entrée R permet d’interrompre l’échange en cours. Les bits de sortie D (échange terminé) et E (échange erroné) sont mis à 1. Le mot status TXTi,S indique alors le type d’erreur, jusqu’au prochain échange. L’entrée R est prioritaire. R=0 S=1 I=0 O=1 Emission R=0 S=1 I=1 O=0 Réception R=0 S=1 I=1 O=1 Emission suivie de réception R=1 S = 0/1 I = 0/1 O = 0/1 Pas de possibilité d’échange ou interruption de l’échange en cours. • en Littéral : L’exécution de l’instruction OUTPUT TXTi provoque l’émission d’une table. L’exécution de l’instruction INPUT TXTi provoque la mise en réception d’une table. L’exécution de l’instruction EXCHG TXTi provoque successivement l’émission puis la réception d’une table. 6/2 Opérations sur fonctions 6 Avant de lancer un échange, le programme utilisateur doit initialiser les éléments mots (selon le type d’échange, TXTi,L; TXTi,M; TXTi,C; ...) Le lancement d’un échange est impossible si le bit de sortie TXTi,D est à l’état 0 (échange en cours). En fin d’échange ce bit passe à l’état 1. Lorsque l’échange est incorrect, les bits TXTi,D et TXTi,E passent à 1. L’échange est interrompu et le mot status indique alors le type d’erreur jusqu’au prochain échange. A tout moment, l’exécution de l’instruction RESET TXTi interrompt l’échange en cours. Les bits de sortie TXTi,D et TXTi,E sont mis à 1. Cette instruction est prioritaire. Echange en cours Echange terminé Echange erroné TXTi,D 0 1 1 TXTi,E 0 0 1 6.1-3 Tables de données La fonction texte échange des données sous forme de tableaux de mots organisés de la façon suivante : • une table d’émission permet d’envoyer les données au destinataire. Elle est constituée de mots interne Wi ou constants CWi. • une table de réception permet d’effectuer l’opération inverse, c’est à dire de stocker les données envoyées par le destinataire. Elle est nécessairement constituée de mots internes Wi. En réception le nombre de mots acquis est limité par la longueur de la table de réception. Ces modalités de fonctionnement sont définies lors de la configuration du bloc et ne sont pas modifiables par le programme utilisateur. L’adresse du tableau de mots à émettre et celle du tableau où sont stockés les mots reçus peuvent être spécifiés de deux façons : • par adressage direct (l’adresse est le premier mot du tableau), • par adressage indirect (l’adresse est contenue dans une table). Adressage direct : Les tables à recevoir et à émettre sont juxtaposées et constituent une table dont l’adresse de début est saisie lors de la configuration. La longueur de la table de réception est définie par un nombre d’octets saisi pour le bloc en mode configuration. La longueur de la table d’émission est définie par la variable TXTi,L qui doit être écrite par programme (nombre d’octets). Dans le cas ou la table de réception est fixée par l’utilisateur à la valeur 0, la fonction texte n’adresse qu’une table émission. 6/3 E Seuls les mots internes Wi pouvant être écrits par programme (réception), il est à noter que les deux tables (réception et émission) seront obligatoirement formées par des mots internes. Dans le cas ou il est souhaitable d’avoir la table de réception en mots internes Wi et la table d’émission en mots constants CWi, il est nécessaire d’utiliser l’adressage indirect. Exemple : - bloc texte TXT0, - adresse de début de table: W10, - longueur de la table de réception: 12 octets soit 6 mots - TXT0,L (longueur de la table d'émission): 8 octets soit 4 mots, W10 W11 W12 W13 W14 W15 Réception W16 W17 W18 W19 Emission la table adressée par la fonction texte TXT0 est donc constituée par les mots W10 à W19 : • table de réception W10 à W15 (12 octets), • table d’émission W16 à W19 (8 octets). Adressage indirect Les tables à émettre et à recevoir sont définies à l’aide d’une table d’adressage dont l’adresse est saisie dans le bloc. Cette table d’une longueur fixe de 6 mots doit contenir les informations suivantes : E Type de mot de la table d'émission (0 = mot interne, 1 = mot constant) Adresse début de table à émettre Longueur de la table à émettre (nombre d'octets) Type de mot de la table de réception (obligatoirement 0 : mot interne) Adresse début de la table de réception Longueur de la table de réception (nombre d'octets) 6/4 6 Opérations sur fonctions Exemple : - bloc texte TXT1, - adressage indirect, - adresse de la table d'adressage: W20 W20 1 40 W21 12 W22 0 W23 W24 80 18 W25 Table d'adressage CW40 CW41 CW42 CW43 CW44 CW45 Emission W80 W81 W82 W83 W84 W85 W86 W87 W88 Réception La table d’adressage définissant les tables d’émission et de réception est constituée par les mots internes W20 à W25 : • W20 indique la nature des mots de la table d’émission : 1 = CWi (mots constants), • W21 indique l’adresse de début de la table d’émission : 40 → CW40, • W22 indique la longueur de la table d’émission : 12 octets soit 6 mots; le dernier mot de la table d’émission sera donc CW45, • W23 indique la nature des mots de la table de réception : 0 = Wi (mots internes), • W24 indique l’adresse de début de la table de réception : 80 → W80, • W25 indique la longueur de la table de réception : 18 octets soit 9 mots; le dernier mot de la table de réception sera donc le mot interne W88. Il est à noter que la table d’adressage peut être réalisée avec des mots internes (donc possibilité de modification par programme) ou par des mots constants. 6/5 E 6.1-4 Paramètres d’utilisation Numéro de la fonction texte TXTi ce numéro est inférieur au nombre défini lors de la configuration et est nécessairement compris entre 0 et 63 (limite du système). Support de communication LOCAL RESEAU échange de données localement, échange de données par réseau TELWAY, MAPWAY, ETHWAY ou FIPWAY. Type d’échange TER échange de données avec prise terminal (cet échange peut s’effectuer localement ou par réseau TELWAY, MAPWAY, ETHWAY ou FIPWAY). TXT échange de données par le réseau TELWAY, MAPWAY, ETHWAY ou FIPWAY avec autre fonction texte, située dans un autre automate. Ce type d’échange est explicité dans la documentation du réseau concerné. CPL configuration et échange de données avec un coupleur intelligent (cet échange peut s’effectuer localement ou par le réseau TELWAY, MAPWAY, ETHWAY ou FIPWAY et est explicité dans la documentation du coupleur concerné). SYS échange de requêtes avec le système, par exemple requêtes de diagnostic cet échange peut s’effectuer localement ou par le réseau TELWAY, MAPWAY ETHWAY ou FIPWAY et est explicité dans la documentation du coupleur concerné). TLG échange de télégrammes (messages prioritaires et urgents) avec une autre fonction texte TLG, située dans un autre automate du même réseau MAPWAY, ETHWAY ou FIPWAY (cet échange est explicité dans la documentation du réseau concerné. D:direct la table à émettre ou à recevoir est définie dans le bloc (adresse de début et longueur de la table de réception). La longueur de la table d’émission est donnée par la variable TXTi,L. I:indirect les tables à émettre ou à recevoir sont définies dans une table d’adressage mots dont l’adresse de début est saisie lors de la configuration. Wi ou CWi en adressage direct elle définit le premier mot de la table à émettre ou à recevoir, E Type d’adressage Adresse de début de table en adressage indirect elle définit le premier mot de la table d’adressage; elle-même définissant les tables d’émission et de réception. Ce paramètre est défini lors de la configuration. 6/6 Opérations sur fonctions 6 Longueur de la table de réception lors de la configuration et en adressage direct, ce paramètre permet de définir (en nombre d’octets) la longueur maximale de la table de réception. Ce paramètre n’est pas modifiable par programme. Longueur de la table d'émission en émission ou en émission/réception, ce mot écrit par le programme utilisateur définit le nombre d’octets à émettre (longueur de la table d’émission). TXTi,L La valeur maximale de ce mot dépend de la nature de l’échange • 30 octets pour tout échange sur réseau TELWAY, • 256 octets pour tout échange sur réseau MAPWAY ou ETHWAY, • 128 octets pour tout échange sur réseau FIPWAY, • 254 octets pour l’échange de type CPL, • 126 octets pour l’échange de type SYS, • 126 octets pour l’échange de type TER, • 254 octets pour l’échange de type TXT, • 32 octets pour l’échange de type TLG. En adressage indirect ce mot n’est pas utilisé, les différentes longueurs étant définies dans la table d’adressage de la fonction texte. Adresse coupleur et numéro de voie TXTi,M utilisé seulement par les blocs de type CPL. Ce mot doit être écrit par programme avant tout échange, il contient l’adresse du coupleur destinataire de l’échange : E numéro de bac 0àF emplacement 0 à F numéro de voie : voie 0 : 00 voie 1 : 01 Code requête TXTi,C utilisé seulement par les blocs de type CPL et SYS. Ce mot écrit par programme contient sous forme de code le type de travail à effectuer (envoi de la configuration, écriture d’une table, ...). Pour la signification de ces codes, se reporter aux manuels spécifiques. Compte-rendu d'échange TXTi,V utilisé seulement par les blocs de type CPL et SYS. Après un échange, ce mot contient un code écrit par le coupleur ou le système indiquant la validité de l’échange (erroné ou correct). Ce mot ne peut être que lu. 6/7 Numéro du bloc TXTi,T utilisé seulement par les blocs de type texte TXT ou TLG. Ce mot écrit par programme contient le numéro du bloc texte destinataire de l’échange (voir documentation du réseau concerné). Le bloc texte destinataire doit être de même type (TXT ou TLG) que le bloc émetteur. Adresse réseau TXTi,A utilisé par tous les types de blocs, lorsque le support de communication est le réseau TELWAY, MAPWAY, ETHWAY ou FIPWAY. Ce mot écrit par programme contient les numéros de réseau et de station supportant le destinataire de l’échange : numéro de réseau 0 à 127 numéro de station 0 à 15 (TELWAY) 01 à 63 (MAPWAY) (MAPWAY, ETHWAY ou FIPWAY) Mot status TXTi,S Entrée Reset R Entrée Départ S Entrée Réception I E contient le nombre de caractères reçus si le bit de sortie E (échange erroné) est à l’état 0. Si le bit de sortie E est à l’état 1, ce mot contient le code de l’erreur produite lors de l’échange. Ce mot ne peut être que lu par le programme. Code d’erreur status : 1 échange en cours détruit par RESET, 2 erreur de longueur table d’émission, 3 défaut secteur, 4 coupleur en défaut (CPL), 5 problème système 6 longueur du message reçu supérieure à celle prévue, 10 table à émettre ou à recevoir incohérente en adressage indirect. Entrée Emission O Annulation de l'échange RESET TXTi Lancement émission OUTPUT TXTi Lancement réception INPUT TXTi Lancement émission/réception EXCHG TXTi 6/8 voir "Langage à contacts" Intercalaire C Chapitre 7 voir "Langage littéral" Intercalaire D Chapitre 6.6 Opérations sur fonctions 6 Bit de sortie Echange terminé TXTi,D ce bit est mis l’état 1 lorsque l'échange est terminé. Si le bit TXTi,E (échange erroné) est à l’état 0, TXTi,D indique que le message a été correctement émis et/ ou reçu. Si le bit TXTi,E est à l’état 1, TXTi,D indique que l’échange est terminé mais erroné. Bit de sortie TXTi,E ce bit est mis à l’état 1 si l’échange ne s’est pas terminé. Le mot status indique alors le type d’erreur qui s’est produite. 6.2 Exécution d’un OFB L’exécution d’un OFB correspond à un nouveau type d’action; l’action sur OFB qui consiste à : • faire l’acquisition des entrées de l’OFB, • exécuter l’OFB, • mettre à jour les objets PL7-3 de sorties. Structure • en langage à contacts l’exécution d’un OFB est réalisée par un bloc opération, constitué de la manière suivante : EXEC OFBi (Ent1;Ent2;Ent3;...;Entn → Sort1;Sort2;...;Sortm) • en Littéral l’exécution d’un OFB est réalisée par une phrase action, qui peut être utilisée seule, dans une phrase conditionnelle ou dans une phrase itérative. La syntaxe de cette phrase est la suivante : ! EXEC OFBi (Ent1;Ent2;Ent3;..;Entn => Sort1;Sort2;..;Sortm) Dans les deux langages le nombre de caractères est limité à 512. Opérandes • le type et le numéro de l’OFB sont spécifiés par OFBi, avec : - OFB : type de l’OFB, - i : numéro de l’OFB, • les paramètres Ent1 à Entn définissent les expressions d’entrées. Ils sont du type bit, mot, double mot, pointeur sur bit, pointeur sur mot, pointeur sur double mot, et module (voir tableau suivant), • les paramètres Sort1 à Sortm définissent les expressions de sorties. Ils sont du type bit, mot et double mot (voir tableau suivant), • ; sert de séparateur entre paramètres, • => sert de séparateur entre les paramètres d’entrées et les paramètres de sorties. 6/9 E Paramètres d’entrées Type Paramètres d’entrées Bit Expression Booléenne Objet bit PL7-3 Objet bit d’OFB Mot Double mot Expression arithmétique simple longueur Expression arithmétique double longueur Objet mot PL7-3 Objet double mot PL7-3 Objet mot d’ OFB, de type : • mot, double mot • tableau de mots ou double mots Module Module d’entrées ou de sorties Pointeur sur bit Objet bit PL7-3 (non indexé) Pointeur sur mot Objet mot PL7-3 (non indexé) Pointeur sur double mot Objet double mot PL7-3 (non indexé) Paramètres de sorties Type E Paramètres de sorties Bit Objet bit PL7-3 Mot Objet mot PL7-3 Double mot Objet double mot PL7-3 Exemple de paramètres d’entrées : TRSF1 W1,2.B2+PID1,VALID DW1(W10)+PID1,TABMOT CW1 W10 DIAG1,TABDMOT MANU : bit COMMAND : word CONSIGNE : dword PILE : pt_w PILEDW : pt_d Exemple de paramètres de sorties : TRSF1 ERROR : bit STATUS : word RESULT : dword 6/10 W1(W2),2 DW1 PID1,TABMOT(W1) Opérations sur fonctions 6 Limitations • un paramètre d’entrée de type pointeur sur bit ne peut pas être un bit extrait de mot, • on ne peut pas utiliser dans une expression arithmétique un paramètre d’entrée de type pointeur ou module, • on ne peut pas affecter une expression logique ou arithmétique à un paramètre de sortie (sauf objet indexé), • les opérations suivantes ne sont pas possibles sur les données et constantes internes d’un OFB : - opérations sur front avec un élément interne de type bit, - opérations d’incrémentation, de décrémentation, de conversion binaire/ASCII et ASCII/binaire avec un élément interne de type mot, - opérations sur tableaux suivantes, avec un élément interne de type tableau : opérations arithmétiques entre deux tableaux, opérations sur tous les mots d’un tableau, sommation des mots d’un tableau, comparaison de deux tableaux, recherche dans un tableau. • un élément interne de type message doit être de longueur paire avec un maximum de 78 caractères. E 6/11 E 6/12 Opérations sur les objets d'OFBs Intercalaire F sur les objets d'E/S à distance Chapitre 1 Page Opérations sur bits et chaîne de bits Sommaire 1/1 1.1 Opérations sur bits 1.2 Transfert d'une chaîne de bits dans une autre 1.3 Transfert d'une chaîne de bits dans un mot 1.4 Transfert d'un mot dans une chaîne de bits 1.5 Transfert d'une valeur immédiate dans une chaîne de bits 2 Opérations sur mots Sommaire 2/1 2.1 Transfert 2.2 Incrémentation et décrémentation 2.3 Décalage 2.4 Comparaison 2.5 Opérations arithmétiques 2.6 Extraction de racine carrée 2.7 Opérations logiques 2.8 Transcodage 3 Opérations sur tableaux de mots Sommaire 3/1 3.1 Initialisation d'un tableau de mots 3.2 Transfert d'un tableau dans un autre 3.3 Opérations entre tableaux 3.4 Opérations sur tous les mots d'un tableau 3.5 Sommation des mots d'un tableau 3.6 Comparaison de deux tableaux 3.7 Recherche dans un tableau du premier mot égal à une valeur F/1 F F F/2 Opérations sur bits et chaîne de bits 1 Opérations sur bits et chaîne de bits Chapitre 1 Sous chapitre Page 1.1 Opérations sur bits 1/2 1.2 Transfert d'une chaîne de bits dans une autre 1/3 1.3 Transfert d'une chaîne de bits dans un mot 1/3 1.4 Transfert d'un mot dans une chaîne de bits 1/3 1.5 Transfert d'une valeur immédiate dans une chaîne de bits 1/4 Ce chapitre se termine à la page 1/4 F 1/1 1.1 Opérations sur bits Inversion logique NOT Opérande booléen Se reporter Int. D, chapitre 3.7 Mise à 1 ou à 0 d'un bit SET Objet bit Se reporter Int. D, chapitre 5.2-2 RESET Objet bit Se reporter Int. D, chapitre 5.2-2 Expression de front RE (Bit) Se reporter Int. D, chapitre 3.5 FE (Bit) Se reporter Int. D, chapitre 3.5 Affectation Expression booléenne → Objet bit Se reporter Int. D, chapitre 3.1 ET/OU logique Opérande 1 . Opérande 2 Se reporter Int. D, chapitre 3.8 Opérande 1 + Opérande 2 Se reporter Int. D, chapitre 3.8 Opérandes Objet bit d'OFB F NOT SET RESET * * bit d'E/S à distance * * tableau de bit d'OFB (premier élément) * * tableau de bit d'E/S à distance (premier élément) * * tableau de bit d'OFB indexé (premier élément indexé) * * tableau de bit d'E/S à distance (premier élément indexé) * * bit extrait de mot * bit extrait d'un mot indexé (1) indexation d'un bit extrait de mot (2) (1) (2) Instruction RE -> FE * * . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * <élément d'E/S><cnx>,<mod>,<voie>(<index>),<bit extrait> <élément d'E/S><cnx>,<mod>,<voie>,<bit extrait>(<index>) 1/2 + Opérations sur bits et chaîne de bits 1.2 1 Transfert d'une chaîne de bits dans une autre chaîne de bits origine → chaîne de bits destination Se reporter Int. E, chapitre 1.1 Opérandes Objet Chaîne de bits origine destinat. Exemple tableau de bit d'OFB * * <OFBi>,<élément>[8] → B0[8] tableau de bit d'E/S à distance * * <élémt><cnx>,<mod>,<voie>[7] → B10[7] 1.3 Transfert d'une chaîne de bits dans une mot chaîne de bits origine → mot Se reporter Int. E, chapitre 1.2 Opérandes Objet Chaîne de bits Exemple tableau de bit d'OFB * <OFBi>,<élément>[6] → W0 tableau de bit d'E/S à distance * <élémt><cnx>,<mod>,<voie>[4] → W1 F 1.4 Transfert d'un mot dans une chaîne de bits mot → chaîne de bits destination Se reporter Int. E, chapitre 1.3 Opérandes Objet Chaîne de bits Exemple tableau de bit d'OFB * W0 → <OFBi>,<élément>[16] tableau de bit d'E/S à distance * W1 → <élémt><cnx>,<mod>,<voie>[8] 1/3 1.5 Transfert d'une valeur immédiate dans une chaîne de bits valeur immédiate → chaîne de bits destination Se reporter Int. E, chapitre 1.4 Opérandes Objet Chaîne de bits Exemple tableau de bit d'OFB * H'4FB2' → <OFBi>,<élément>[14] tableau de bit d'E/S à distance * - 45 → <élémt><cnx>,<mod>,<voie>[8] F 1/4 Opérations sur mots Opérations sur mots 2 Chapitre 2 Sous chapitre Page 2.1 Transfert 2/2 2.2 Incrémentation et décrémentation 2/3 2.3 Décalage 2/3 2.4 Comparaison 2/3 2.5 Opérations arithmétiques 2/4 2.6 Extraction de racine carrée 2/5 2.7 Opérations logiques 2/5 2.8 Transcodage 2/6 Ce chapitre se termine à la page 2/6 F 2/1 2.1 Transfert OP1 → OP2 Se reporter Int. E, chapitre 2.1 Opérandes Objet Opérandes Exemple OP1 OP2 mot d'OFB * * <OFBi>,<élément> → W0 mot d'E/S à distance * * <élémt><cnx>,<mod>,<voie> → W0 mot d'OFB indexé * * <OFBi>,<élément>(<index>) → W0 mot d'E/S à distance indexé * * <élémt><cnx>,<mod>,<voie>(<index>) → W0 double mot d'OFB * * <OFBi>,<élément> → DW0 double mot d'E/S à distance * * <élémt><cnx>,<mod>,<voie> → DW0 double mot d'OFB indexé * * <OFBi>,<élément>(<index>) → DW0 double mot d'E/S à distance indexé * * <élémt><cnx>,<mod>,<voie>(<index>) → DW0 2.2 Incrémentation et décrémentation INC opérande DEC opérande Se reporter Int. E, chapitre 2.2 Se reporter Int. E, chapitre 2.2 Opérandes F Objet Exemple mot d'OFB INC <OFBi>,<élément> mot d'E/S à distance DEC <élémt><cnx>,<mod>,<voie> mot d'OFB indexé DEC <OFBi>,<élément>(<index>) mot d'E/S à distance indexé INC <élémt><cnx>,<mod>,<voie>(<index>) 2/2 Opérations sur mots 2.3 2 Décalage SHL i(OP1) → OP2 SHR i(OP1) → OP2 Se reporter Int. E, chapitre 2.3 Se reporter Int. E, chapitre 2.3 Opérandes Objet Opérandes Exemple OP1 OP2 mot d'OFB * * SHL i(<OFBi>,<élément>) → W0 mot d'E/S à distance * * SHR i(<élémt><cnx>,<mod>,<voie>) → W0 mot d'OFB indexé * * SHR i(<OFBi>,<élément>(<index>)) → W0 mot d'E/S à distance indexé * * SHL i(<élémt><cnx>,<mod>,<voie>(<index>)) → W0 2.4 Comparaison OP1 OP1 OP1 OP1 OP1 OP1 > OP2 >= OP2 < OP2 <= OP2 = OP2 <> OP2 Se reporter Int. E, chapitre 2.4 Se reporter Int. E, chapitre 2.4 Se reporter Int. E, chapitre 2.4 Se reporter Int. E, chapitre 2.4 Se reporter Int. E, chapitre 2.4 Se reporter Int. E, chapitre 2.4 Opérandes Objet Opérandes Exemple OP1 OP2 mot d'OFB * * <OFBi>,<élément> > W0 mot d'E/S à distance * * <élémt><cnx>,<mod>,<voie>) <> W0 mot d'OFB indexé * * W0 <> <OFBi>,<élément>(<index>) mot d'E/S à distance indexé * * <élémt><cnx>,<mod>,<voie>(<index>) = W0 double mot d'OFB * * W0 >= <OFBi>,<élément> double mot d'E/S à distance * * W0 <= <élémt><cnx>,<mod>,<voie> double mot d'OFB indexé * * DW0 <> <OFBi>,<élément>(<index>) double mot d'E/S à distance indexé * * <élémt><cnx>,<mod>,<voie>(<index>) < DW0 F 2/3 2.5 Opérations arithmétiques OP1 OP1 OP1 OP1 + * / OP2 OP2 OP2 OP2 Se reporter Int. E, chapitre 2.5 Se reporter Int. E, chapitre 2.5 Se reporter Int. E, chapitre 2.5 Se reporter Int. E, chapitre 2.5 Opérandes Objet Opérandes Exemple OP1 OP2 mot d'OFB * * <OFBi>,<élément> + W0 mot d'E/S à distance * * <élémt><cnx>,<mod>,<voie> - W0 mot d'OFB indexé * * W0 * <OFBi>,<élément>(<index>) mot d'E/S à distance indexé * * <élémt><cnx>,<mod>,<voie>(<index>) / W0 double mot d'OFB * * W0 + <OFBi>,<élément> double mot d'E/S à distance * * W0 - <élémt><cnx>,<mod>,<voie> double mot d'OFB indexé * * DW0 * <OFBi>,<élément>(<index>) double mot d'E/S à distance indexé * * <élémt><cnx>,<mod>,<voie>(<index>) / DW0 F 2/4 Opérations sur mots 2.6 2 Extraction de racine carrée SQRT(OP1) → OP2 Se reporter Int. E, chapitre 2.6 Opérandes Objet Opérandes Exemple OP1 OP2 mot d'OFB * * SQRT(<OFBi>,<élément>) → W0 mot d'E/S à distance * * SQRT(<élémt><cnx>,<mod>,<voie>) → W0 mot d'OFB indexé * * SQRT(W0) → <OFBi>,<élément>(<index>) mot d'E/S à distance indexé * * SQRT(W0) → <élémt><cnx>,<mod>,<voie>(<index>) double mot d'OFB * * SQRT(W0) → <OFBi>,<élément> double mot d'E/S à distance * * SQRT(W0) → <élémt><cnx>,<mod>,<voie> double mot d'OFB indexé * * SQRT(<OFBi>,<élément>(<index>)) → DW0 double mot d'E/S à distance indexé * * SQRT(<élémt><cnx>,<mod>,<voie>(<index>)) → DW0 2.7 Opérations logiques OP1 AND OP2 OP1 OR OP2 OP1 XOR OP2 CPL(OP1) Se reporter Int. E, chapitre 2.7 Se reporter Int. E, chapitre 2.7 Se reporter Int. E, chapitre 2.7 Se reporter Int. E, chapitre 2.7 F Opérandes Objet Opérandes Exemple OP1 OP2 mot d'OFB * * <OFBi>,<élément> OR W0 mot d'E/S à distance * * <élémt><cnx>,<mod>,<voie>) AND W0 mot d'OFB indexé * * W0 XOR <OFBi>,<élément>(<index>) mot d'E/S à distance indexé * * CPL(<élémt><cnx>,<mod>,<voie>(<index>)) 2/5 2.8 Transcodage DTB(OP1) BTD(OP1) ATB(OP1) BTA(OP1) GTB(OP1) → → → → → OP2 OP2 OP2 OP2 OP2 Se reporter Int. E, chapitre 2.8 Se reporter Int. E, chapitre 2.8 Se reporter Int. E, chapitre 2.8 Se reporter Int. E, chapitre 2.8 Se reporter Int. E, chapitre 2.8 Opérandes Objet Opérandes Exemple OP1 OP2 mot d'OFB * * BTD(<OFBi>,<élément>) → W0 mot d'E/S à distance * * DTB(<élémt><cnx>,<mod>,<voie>) → W0 mot d'OFB indexé * * GTB(<OFBi>,<élément>(<index>)) → W0 mot d'E/S à distance indexé * * BTA(<élémt><cnx>,<mod>,<voie>(<index>) ) → W0[3] tableau de mots d'OFB *(1) BTA(W0) → <OFBi>,<élément>[3] tableau de mots d'E/S à distance *(1) BTA(W0) → <élémt><cnx>,<mod>,<voie>[3] (1) uniquement pour le transcodage BTA F 2/6 Opérations sur tableaux de mots Opérations sur tableaux de mots 1 Chapitre 3 Sous chapitre Page 3.1 Initialisation d'un tableau de mots 3/2 3.2 Transfert d'un tableau dans un autre 3/3 3.3 Opérations entre tableaux 3/4 3.4 Opérations sur tous les mots d'un tableau 3/5 3.5 Sommation des mots d'un tableau 3/6 3.6 Comparaison de deux tableaux 3/7 3.7 Recherche dans un tableau du premier mot égal à une valeur 3/8 Ce chapitre se termine à la page 3/8 F 3/1 3.1 Initialisation d'un tableau de mots OP → tableau Se reporter Int. E, chapitre 3.1 Opérandes Objet Opérandes Exemple OP tabl. mot d'OFB * <OFBi>,<élément> → W0[5] mot d'E/S à distance * <élémt><cnx>,<mod>,<voie> → W0[9] mot d'OFB indexé * <OFBi>,<élément>(<index>) → W0[4] mot d'E/S à distance indexé * <élémt><cnx>,<mod>,<voie>(<index>) → W0[12] double mot d'OFB * <OFBi>,<élément> → W0[16] double mot d'E/S à distance * <élémt><cnx>,<mod>,<voie> → W0[6] double mot d'OFB indexé * <OFBi>,<élément>(<index>) → W0[11] double mot d'E/S à distance indexé * <élémt><cnx>,<mod>,<voie>(<index>) → W0[10] tableau de mots d'OFB * * W0 → <OFBi>,<élément>[<taille>] tableau de mots d'E/S à distance * * W0 → <élémt><cnx>,<mod>,<voie>[<taille>] tableau de doubles mots d'OFB * * W0 → <OFBi>,<élément>[<taille>] tableau de doubles mots d'E/S à distance * * W0 → <élémt><cnx>,<mod>,<voie>[<taille>] F 3/2 1 Opérations sur tableaux de mots 3.2 Transfert d'un tableau dans un autre tableau origine → tableau destination Se reporter Int. E, chapitre 3.2 Opérandes Objet Tableaux Exemple orig. dest. tableau de mots d'OFB * * W0[4] → <OFBi>,<élément>[4] tableau de mots d'E/S à distance * * W0[8] → <élémt><cnx>,<mod>,<voie>[8] tableau de mots d'OFB indexé * * <OFBi>,<élément>(<index>)[7] → W0[7] tableau de mots d'E/S à distance indexé * * W0[12] → <élémt><cnx>,<mod>,<voie>(<index>)[12] tableau de doubles mots d'OFB * * <OFBi>,<élément>[5] → DW0[5] tableau de doubles mots d'E/S à distance * * DW0[9] → <élémt><cnx>,<mod>,<voie>[9] tableau de doubles mots d'OFB indexé * * DW0[6] → <OFBi>,<élément>(<index>)[6] tableau de doubles mots d'E/S à distance indexé * * <élémt><cnx>,<mod>,<voie>(<index>)[7] → DW0[7] F 3/3 3.3 Opérations entre tableaux tableau tableau tableau tableau tableau tableau tableau tableau 1 1 1 1 1 1 1 1 + tableau 2 → tableau destination - tableau 2 → tableau destination * tableau 2 → tableau destination / tableau 2 → tableau destination REM tableau 2 → tableau destination AND tableau 2 → tableau destination OR tableau 2 → tableau destination XOR tableau 2 → tableau destination Se reporter Int. E, chapitre 3.3 Opérandes Objet 1 Tableaux Exemple 2 dest. tableau de mots d'OFB * <OFBi>,<élément>[4] AND W0[4] → W6[4] tableau de mots d'E/S à distance * <élémt><cnx>,<mod>,<voie>[8] OR W0[8] → W10[8] tableau de doubles mots d'OFB *(1) tableau de doubles *(1) mots d'E/S à distance (1) <OFBi>,<élément>[5] / DW12[5] → DW0[5] <élémt><cnx>,<mod>,<voie>[9] - DW0[9] → DW15[9] sauf pour les opérations AND, OR et XOR. F 3/4 1 Opérations sur tableaux de mots 3.4 Opérations sur tous les mots d'un tableau OP OP OP OP OP OP OP OP + tableau origine → tableau destination - tableau origine → tableau destination * tableau origine → tableau destination / tableau origine → tableau destination REM tableau origine → tableau destination AND tableau origine → tableau destination OR tableau origine → tableau destination XOR tableau origine → tableau destination Se reporter Int. E, chapitre 3.4 Opérandes Objet OP Tableaux Exemple orig. dest. mot d'OFB * <OFBi>,<élément> AND W0[4] → W10[4] mot d'E/S à distance * <élémt><cnx>,<mod>,<voie> * W0[6] → W10[6] mot d'OFB indexé * <OFBi>,<élément>(<index>) XOR W20[7] → W0[7] mot d'E/S à distance indexé * <élémt><cnx>,<mod>,<voie>(<index>) AND W0[12] → W20[12] double mot d'OFB * <OFBi>,<élément> / DW12[5] → DW0[5] double mot d'E/S à distance * <élémt><cnx>,<mod>,<voie> - DW0[9] → DW20[9] double mot d'OFB indexé * <OFBi>,<élément>(<index>) REM DW0[6] → DW7[6] double mot d'E/S à distance indexé * <élémt><cnx>,<mod>,<voie>(<index>) + DW0[7] → DW10[7] F 3/5 3.5 Sommation des mots d'un tableau tableau+ → mot Se reporter Int. E, chapitre 3.5 Opérandes Objet F Opérandes Exemple tabl. mot mot d'OFB * W0[10]+ → <OFBi>,<élément> DW0[8]+ → <élémt><cnx>,<mod>,<voie> mot d'E/S à distance * mot d'OFB indexé * DW0[6]+ → <OFBi>,<élément>(<index>) mot d'E/S à distance indexé * W0[4]+ → <élémt><cnx>,<mod>,<voie>(<index>) double mot d'OFB * DW0[12]+ → <OFBi>,<élément> double mot d'E/S à distance * W0[7]+ → <élémt><cnx>,<mod>,<voie> double mot d'OFB indexé * W0[5]+ → <OFBi>,<élément>(<index>) double mot d'E/S à distance indexé * DW0[5]+ → <élémt><cnx>,<mod>,<voie>(<index>) tableau de mots d'OFB * * (1) <OFBi>,<élément>[<taille>]+ → W0 tableau de mots d'E/S à distance * *(1) <élémt><cnx>,<mod>,<voie>[<taille>]+ → W0 tableau de doubles mots d'OFB * *(1) <OFBi>,<élément>[<taille>]+ → DW0 tableau de doubles mots d'E/S à distance * *(1) <élémt><cnx>,<mod>,<voie>[<taille>]+ → DW20 (1) 3/6 premier élément du tableau 1 Opérations sur tableaux de mots 3.6 Comparaison de deux tableaux EQUAL(tableau1;tableau2) → mot Se reporter Int. E, chapitre 3.6 Opérandes Objet Tab. Mot Exemple 1 2 mot d'OFB * EQUAL(W0[10];W20[10]) → <OFBi>,<élément> mot d'E/S à distance * EQUAL(DW0[8];DW10[8]) → <élémt><cnx>,<mod>,<voie> mot d'OFB indexé * EQUAL(W0[6];W11[6]) → <OFBi>,<élément>(<index>) mot d'E/S à distance indexé * EQUAL(W0[4];W10[4]) → <élémt><cnx>,<mod>,<voie>(<index>) double mot d'OFB * EQUAL(DW0[12];DW20[12]) → <OFBi>,<élément> double mot d'E/S à distance * EQUAL(W0[7];W10[7]) → <élémt><cnx>,<mod>,<voie> double mot d'OFB indexé * EQUAL(W0[5];W10[5]) → <OFBi>,<élément>(<index> double mot d'E/S à distance indexé * EQUAL(DW0[5];DW10[5]) → <élémt><cnx>,<mod>,<voie>(<index>) tableau de mots d'OFB * * * (1) EQUAL(<OFBi>,<élément>[2];W10[2]) → W0 tableau de mots d'E/S à distance * * *(1) EQUAL(W10[5];<élémt><cnx>,<mod>,<voie>[5]) → W0 tableau de doubles mots d'OFB * * *(1) EQUAL(<OFBi>,<élément>[8];DW12[8]) → DW0 tableau de doubles * * *(1) EQUAL(DW0[7];<élémt><cnx>,<mod>,<voie>[7]) → DW20 mots d'E/S à distance (1) F premier élément du tableau 3/7 3.7 Recherche dans un tableau du premier mot égal à une valeur SEARCH(tableau;mot1 à rechercher) → mot2 résultat Se reporter Int. E, chapitre 3.8 Opérandes Objet F Tab. Mots Exemple 1 2 mot d'OFB * SEARCH(W0[10];W20) → <OFBi>,<élément> mot d'E/S à distance * SEARCH(W10[8];W0) → <élémt><cnx>,<mod>,<voie> mot d'OFB indexé * SEARCH(W0[6];W10) → <OFBi>,<élément>(<index>) mot d'E/S à distance indexé * SEARCH(W0[4];W10) → <élémt><cnx>,<mod>,<voie>(<index>) double mot d'OFB * SEARCH(W0[12];W20) → <OFBi>,<élément> double mot d'E/S à distance * SEARCH(W0[7];W10) → <élémt><cnx>,<mod>,<voie> double mot d'OFB indexé * SERACH(W0[5];W10) → <OFBi>,<élément>(<index> double mot d'E/S à distance indexé * SEARCH(W0[5];W10) → <élémt><cnx>,<mod>,<voie>(<index>) tableau de mots d'OFB * *(1) SEARCH(<OFBi>,<élément>[2];W10) → W0 tableau de mots d'E/S à distance * *(1) SEARCH(<élémt><cnx>,<mod>,<voie>[5];W10) → W0 tableau de doubles mots d'OFB * *(1) SEARCH(<OFBi>,<élément>[8];DW12) → DW0 tableau de doubles mots d'E/S à distance * *(1) SEARCH(<élémt><cnx>,<mod>,<voie>[7];DW0) → DW20 (1) 3/8 premier élément du tableau Opérations au format flottant Chapitre 1 Intercalaire G Page Opérations sur mots Sommaire 1/1 1.1 Transfert 1.2 Comparaison 1.3 Opérations arithmétiques 1.4 Extraction de racine carrée 1.5 Transcodage G G/1 G G/2 Opérations sur mots Opérations sur mots 2 Chapitre 1 Sous chapitre Page 1.1 Transfert 1/2 1.2 Comparaison 1/2 1.2 Opérations arithmétiques 1/3 1.4 Extraction de racine carrée 1/4 1.5 Transcodage 1/5 Ce chapitre se termine à la page 1/6 G 1/1 1.1 Transfert OP1 → OP2 Se reporter Int. E, chapitre 2.1 Opérandes Objet Opérandes Exemple OP1 OP2 valeur immédiate * 1.42E+2 mot interne double longueur * 1.42E+2 → DW25 double mot d'OFB * 435.26 → <OFBi>,<élément> double mot d'E/S à distance * 1.285e-5 → <élémt><cnx>,<mod>,<voie> 1.2 Comparaison SUPF(OP1;OP2) INFF(OP1;OP2) EQUF(OP1;OP2) test si l'opérande 1 est supérieur à l'opérande 2, test si l'opérande 1 est inférieur à l'opérande 2, test si l'opérande 1 est égal à l'opérande 2. Le résultat vaut 1 si la comparaison est vraie, sinon il est égal à 0 (se reporter Int. E, chapitre 2.4). Opérandes Objet G Opérandes Exemple OP1 OP2 mot interne double longueur * * SUPF(DW20;DW30) → B3 mot constant double longueur * * IF SUPF(CDW10;DW10) THEN double mot d'OFB * * WHILE SUPF(<OFBi>,<élément>;DW10) DO double mot d'E/S à distance * * INFF(DW2;<élémt><cnx>,<mod>,<voie>) → B5 Note Il est possible de combiner la fonction de comparaison avec d'autres fonctions ou objets, par l'intermédiaire des opérateurs logiques ET, OU et NOT. Par exemple : • IF EQUF(DW20;DW30) . B6 + B3 THEN ... • B6 . INFF(DW10;DW20) + B10 → B20 1/2 2 Opérations sur mots 1.3 Opérations arithmétiques ADDF(OP1;OP2) SUBF(OP1;OP2) MULF(OP1;OP2) DIVF(OP1;OP2) réalise l'addition des deux opérandes, réalise la soustraction des deux opérandes, réalise la multiplication des deux opérandes, réalise la division des deux opérandes. Le résultat des opérations est un nombre flottant qui est forcément transféré dans un double mot pouvant être écrit (se reporter Int. E, chapitre 2.5). Si ce nombre n'appartient pas au domaine de définition des nombres flottants, le bit système SY18 est mis à 1 par le système et la valeur du nombre résultant est égale à celle du deuxième opérande. Si l'un des deux opérandes ne fait pas partie du domaine de définition des nombres flottants, la valeur du résultat est indéterminée, mais aucune erreur n'est signalée. Opérandes Objet Opérandes Exemple OP1 OP2 mot interne double longueur * * ADDF(DW10;DW20) → DW30 mot constant double longueur * * SUBF(CDW10;DW10) → DW30 double mot d'OFB * * MULF(<OFBi>,<élément>;DW10) → DW30 double mot d'E/S à distance * * DIVF(DW2;<élémt><cnx>,<mod>,<voie>) → DW5 Note On ne peut pas imbriquer les fonctions de calcul dans une autre fonction. G 1/3 1.4 Extraction de racine carrée SQRTF(OP) réalise l'extraction de la racine carrée de l'opérande. Le résultat de l'opération est un nombre flottant qui est forcément transféré dans un double mot pouvant être écrit (se reporter Int. E, chapitre 2.6). Si l'opérande a une valeur négative, le bit système SY18 est mis à 1 par le système et la valeur du nombre résultant est égale à celle de l'opérande. Opérandes Objet Opérandes Exemple OP1 OP2 mot interne double longueur * * SQRTF(DW10) → DW30 mot constant double longueur * * SQRTF(CDW10) → DW30 double mot d'OFB * * SQRTF(<OFBi>,<élément>) → DW30 double mot d'E/S à distance * * SQRTF(<élémt><cnx>,<mod>,<voie>) → DW30 Note On ne peut pas imbriquer la fonction d'extraction de racine carrée dans une autre fonction. G 1/4 Opérations sur mots 1.5 2 Transcodage BTF(OP1) ATF(OP1) DTF(OP1) FTB(OP1) FTA(OP1) FTD(OP1) → → → → → → OP2 OP2 OP2 OP2 OP2 OP2 transcodage binaire → flottant transcodage ASCII → flottant transcodage BCD → flottant transcodage flottant → binaire transcodage flottant → ASCII transcodage flottant → BCD Lors d'une conversion au format flottant : BTF, ATF ou DTF, le résultat de l'opération étant un nombre flottant, il est forcément transféré dans un double mot pouvant être écrit. Pendant la conversion d'une chaîne de caractères en nombre flottant : ATF, l'opérande à convertir OP1 est obligatoirement un tableau de 7 mots. Il en est de même pour l'opérande OP2, lors d'une conversion d'un nombre flottant en chaîne de caractères ASCII : FTA. Pendant la conversion d'un nombre codé BCD en nombre flottant : DTF, l'opérande OP1 est obligatoirement un tableau de 5 mots (10 octets) représentant le nombre codé BCD. Il en est de même pour l'opérande OP2, lors d'une conversion d'un flottant en nombre codé BCD : FTD. Si une erreur "overflow" ou "underflow" intervient pendant une conversion, le bit SY18 est mis à 1 par le système et le résultat est indéterminé : • la valeur flottante obtenue ne fait pas partie du domaine de définition des nombres flottants, • la valeur du double mot, obtenue lors d'une conversion FTB est supérieure à 2 147 483 647 ou inférieure à - 2 147 483 648, • la valeur obtenue lors d'une conversion FTD ne peut pas être codée en BCD. Lors d'une conversion d'un nombre flottant en double mot entier, le résultat est tronqué à la valeur entière inférieure la plus proche. Par exemple : • 1234.25 → 1234, • -1234.25 → -1235, • 1234.75 → 1234, • -1234.75 → -1235. Opérandes Objet Opérandes Exemple OP1 OP2 * mot constant double longueur * double mot d'OFB * * FTA(<OFBi>,<élément>) → W10[7] double mot d'E/S à distance * * DTF(W10[5]) → <élémt><cnx>,<mod>,<voie> *(1) *(2) tableau de mots internes (1) uniquement ATF ou DTF (2) * FTB(DW20) → DW30 mot interne double longueur BTF(CDW10) → DW30 G ATF(W20[7]) → DW10 FTD(CDW20) → W30[5] uniquement FTA ou FTD 1/5 G 1/6