Escolar Documentos
Profissional Documentos
Cultura Documentos
Manuel de rfrence
En raison de la diversit des utilisations des produits dcrits dans le prsent manuel, les personnes qui en sont responsables doivent s'assurer que toutes les mesures ont t prises pour que l'application et l'utilisation des produits soient conformes aux exigences de performance et de scurit, ainsi qu'aux lois, rglements, codes et normes en vigueur. La socit Allen-Bradley ne saurait tre tenue pour responsable des dommages indirects ou rsultant de l'utilisation de ces produits. Les illustrations, schmas et exemples de programmes contenus dans cette publication sont prsents titre indicatif seulement. En raison du nombre important de variables et d'impratifs associs chaque installation, la socit Allen-Bradley ne saurait tre tenue pour responsable ni tre redevable (y compris en matire de proprit intellectuelle) des suites d'utilisation relle base sur les exemples et schmas prsents dans ce manuel. La publication SGI-1.1, Safety Guidelines for the Application, Installation and Maintenance of Solid-State Control (disponible auprs de votre agence commerciale Allen-Bradley), dcrit certaines diffrences importantes entre les quipements lectroniques et les quipements lectromagntiques, qui devront tre prises en compte lors de l'application de ces produits comme indiqu dans la prsente publication. Toute reproduction totale ou partielle du prsent manuel sans autorisation crite de la socit Rockwell Automation est interdite. Des remarques sont utilises tout au long de cette publication pour attirer votre attention sur les mesures de scurit prendre en compte. Les messages suivants vous aident identifier un danger potentiel, l'viter et en discerner les consquences. ATTENTION Actions ou situations risquant d'entraner des blessures pouvant tre mortelles, des dgts matriels ou des pertes financires.
!
IMPORTANT
Allen-Bradley, ControlLogix, DH+, Logix5000, Logix5550, PLC-2, PLC-3, PLC-5, RSLinx, RSLogix 5000, RSNetWorx et SLC sont des marques commerciales de Rockwell Automation. ControlNet est une marque commerciale de ControlNet International, Ltd. Ethernet est une marque commerciale de Digital Equipment Corporation, Intel et Xerox Corporation.
Avant de contacter l'assistance technique Rockwell Automation, nous vous conseillons de lire d'abord les informations de dpannage prsentes dans ce manuel. Si le problme persiste, appelez votre reprsentant Rockwell Automation ou contactez Rockwell Automation de l'une des faons suivantes :
Tlphone Etats-Unis/ Canada Hors Etats-Unis/ Canada +1.440.646.5800 Vous pouvez obtenir le numro de tlphone pour votre pays par Internet : 1. Allez sur le site http://www.ab.com 2. Cliquez sur Product Support (http://support.automation.rockwell.com) 3. Sous Support Centers, cliquez sur Contact Information 1. Allez sur le site http://www.ab.com 2. Cliquez sur Product Support (http://support.automation.rockwell.com)
Internet
Notes :
Introduction Modifications
Les modifications gnrales apportes ce document sont les suivantes : ce document comprend prsent le texte structur, en plus de la logique relais et des blocs fonctionnels ; une liste, en dbut de chaque chapitre, indique les langages dans lesquels les instructions dcrites dans le chapitre sont disponibles ; la table d'excution de chaque instruction comprend prsent une condition de post-scrutation. Ce document inclut les modifications suivantes :
Modification Les instructions boolennes AND (BAND), OR (BOR), XOR (BXOR) et NOT (BNOT) ont t incluses dans ce manuel pour que les instructions sur bits et les instructions logiques soient runies dans un seul manuel. Elles ont t supprimes de la publication 1756-RM006, Logix5000 Controllers Process Control and Drives Instruction Set Reference Manual. La source d'une instruction TAILLE (SIZE) peut dsormais tre un point de tableau. Vous n'avez plus besoin de prciser le premier lment du tableau. L'instruction Saut vers sous-programme externe (Jump to External Subroutine - JXR) a t ajoute : elle est prise en charge uniquement par les automates SoftLogix5800. Les instructions Fin de transition (End of Transition - EOT), Pause SFC (SFC Pause - SFP) et Positionnement SFC (SFC Reset - SFR) ont t ajoutes. L'annexe A comprend des informations supplmentaires sur le verrouillage des instructions IREF et OREF. Les instructions IREF et OREF peuvent utiliser le mme nom de point sans changer les valeurs de IREF pendant une scrutation. Une nouvelle annexe explique comment programmer en texte structur. Voir le chapitre 6
10
10
Notes :
Utilisez cette section pour trouver des informations sur les instructions Logix (les instructions grises sont disponibles dans d'autres manuels). Cette section indique galement quels langages de programmation sont disponibles pour les instructions.
L'instruction se trouve dans ce manuel Logix5000 Controllers Process Control and Drives Instruction Set Reference Manual (publication 1756-RM006) Logix5000 Controllers Motion Instruction Set Reference Manual (publication 1756-RM007) Instruction AVE AWA AWT BAND BNOT BOR BRK BSL BSR BTD BTDT BTR (type MSG) BTW (type MSG) BXOR CLR CMP CONCAT COP Emplacement 7-36 16-23 16-27 6-34 6-42 6-37 11-4 8-2 8-5 6-11 6-14 3-2 3-2 6-40 6-17 4-2 17-3 7-26 Langages logique relais logique relais texte structur logique relais texte structur texte structur bloc fonctionnel texte structur bloc fonctionnel texte structur bloc fonctionnel logique relais logique relais logique relais logique relais texte structur bloc fonctionnel logique relais texte structur logique relais texte structur texte structur bloc fonctionnel logique relais texte structur logique relais logique relais texte structur logique relais texte structur
Si le tableau indique un numro de page une commande de procd une commande de mouvement
Langages logique relais texte structur logique relais texte structur bloc fonctionnel logique relais texte structur logique relais texte structur texte structur logique relais bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais logique relais texte structur texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais texte structur logique relais texte structur texte structur logique relais bloc fonctionnel texte structur logique relais bloc fonctionnel
Instruction COS
Emplacement 13-4
Langages logique relais texte structur bloc fonctionnel logique relais texte structur logique relais logique relais logique relais texte structur bloc fonctionnel texte structur bloc fonctionnel texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais texte structur texte structur bloc fonctionnel texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais texte structur logique relais logique relais texte structur logique relais texte structur bloc fonctionnel texte structur bloc fonctionnel logique relais logique relais logique relais logique relais texte structur bloc fonctionnel
Langages logique relais texte structur logique relais logique relais logique relais bloc fonctionnel logique relais logique relais texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais texte structur texte structur bloc fonctionnel texte structur bloc fonctionnel logique relais texte structur texte structur bloc fonctionnel texte structur bloc fonctionnel logique relais logique relais texte structur bloc fonctionnel logique relais logique relais texte structur bloc fonctionnel texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais logique relais logique relais bloc fonctionnel
CPS CPT CTD CTU CTUD D2SD D3SD DDT DEDT DEG
7-26 5-2 2-25 2-22 2-29 une commande de procd une commande de procd 12-9 une commande de procd 15-2
GRT
4-15
3-30 une commande de procd une commande de procd 17-9 une commande de procd une commande de procd 10-2 10-4
une commande de procd 7-7 12-2 8-8 8-14 une commande de procd
LES
4-23
Instruction LN
Emplacement 14-2
Langages logique relais texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais texte structur texte structur bloc fonctionnel logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur texte structur bloc fonctionnel logique relais texte structur texte structur bloc fonctionnel logique relais texte structur
Emplacement une commande de mouvement 10-18 une commande de mouvement une commande de mouvement une commande de mouvement une commande de mouvement une commande de mouvement 4-33
Langages logique relais texte structur logique relais logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur bloc fonctionnel logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur texte structur bloc fonctionnel
LOG
14-4
LOWER LPF MAAT MAFR MAG MAH MAHD MAJ MAM MAOC MAPC MAR MAS MASD MASR MATC MAVE MAW MAXC MCCP
18-13 une commande de procd une commande de mouvement une commande de mouvement une commande de mouvement une commande de mouvement une commande de mouvement une commande de mouvement une commande de mouvement une commande de mouvement une commande de mouvement une commande de mouvement une commande de mouvement une commande de mouvement une commande de mouvement une commande de mouvement une commande de procd une commande de mouvement une commande de procd une commande de mouvement
une commande de mouvement une commande de mouvement une commande de mouvement une commande de mouvement 17-11 une commande de procd 5-19
6-3 une commande de mouvement une commande de mouvement une commande de mouvement une commande de mouvement 3-2 une commande de mouvement une commande de procd
Instruction MUL
Emplacement 5-12
Langages logique relais texte structur bloc fonctionnel bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais logique relais texte structur bloc fonctionnel texte structur bloc fonctionnel logique relais logique relais texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais logique relais logique relais texte structur bloc fonctionnel logique relais texte structur texte structur bloc fonctionnel texte structur bloc fonctionnel
Langages texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel texte structur bloc fonctionnel texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais texte structur logique relais texte structur bloc fonctionnel texte structur bloc fonctionnel texte structur bloc fonctionnel bloc fonctionnel texte structur bloc fonctionnel logique relais texte structur logique relais texte structur logique relais texte structur bloc fonctionnel logique relais texte structur texte structur bloc fonctionnel
NEQ
4-38
une commande de procd une commande de procd 2-9 2-19 18-9 10-4
NOP NOT
10-23 6-31
NTCH ONS OR
OSF OSFI OSR OSRI OTE OTL OTU PI PID PIDE PMUL
1-16 1-20 1-14 1-18 1-6 1-7 1-9 une commande de procd 12-19 une commande de procd une commande de procd
une commande de procd une commande de procd une commande de procd une commande de procd 10-26 10-28 13-2
SIZE SNEG
Instruction SOC SQI SQL SQO SQR SQRT SRT SRTP SSUM SSV STD STOD STOR SUB
Emplacement une commande de procd 9-2 9-10 9-6 5-23 5-23 7-41 une commande de procd une commande de procd 3-30 7-46 18-3 18-5 5-9
Langages texte structur bloc fonctionnel logique relais logique relais logique relais logique relais bloc fonctionnel texte structur logique relais texte structur texte structur bloc fonctionnel texte structur bloc fonctionnel logique relais texte structur logique relais logique relais texte structur logique relais texte structur logique relais texte structur bloc fonctionnel logique relais texte structur logique relais texte structur bloc fonctionnel logique relais logique relais bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel texte structur bloc fonctionnel logique relais bloc fonctionnel texte structur
Emplacement 10-20 10-20 une commande de procd 18-11 1-2 1-4 6-28
Langages logique relais texte structur logique relais texte structur texte structur bloc fonctionnel logique relais texte structur logique relais logique relais logique relais texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel
XPY
14-6
SWPB TAN
6-18 13-6
10-16 15-6 2-5 2-16 2-2 2-13 une commande de procd 15-11 15-11
Notes :
Prface
Introduction
Tche/Objet Programmation de l'automate pour les applications squentielles
Vous tes dans ce document
Ce manuel fait partie d'une srie de documents d'instructions sur les produits Logix.
Documents Automate Logix5000 - Jeu d'instructions - Manuel de rfrence (publication 1756-RM003)
Programmation de l'automate pour les Logix5000 Controllers Process Control and Drives Instructions Reference Manual applications de procd ou de variation de vitesse (publication 1756-RM006) Programmation de l'automate pour les applications de commande de mouvement Importation d'un fichier texte ou de points dans un projet Exportation d'un projet ou de points dans un fichier texte Conversion d'une application PLC-5 ou SLC 500 en Automate Logix5550, conversion d'un programme PLC-5/SLC 500 en programme une application Logix5000 Logix5550 - Manuel de rfrence (publication 1756-RM085) Logix5000 Controllers Motion Instructions Reference Manual (publication 1756-RM007) Logix5000 Controllers Import/Export Reference Manual (publication 1756-RM084)
Ce document fournit des informations aux programmeurs sur les instructions disponibles avec un automate Logix. Vous devez savoir comment un automate Logix enregistre et traite les donnes. Si vous tes un programmeur novice, lisez toutes les informations relatives une instruction avant de l'utiliser. Les programmeurs expriments peuvent se reporter aux informations sur les instructions pour vrifier des dtails.
Prface
Objet de ce manuel
Cette section Nom de l'instruction Oprandes
Structure de l'instruction Description Indicateurs d'tat arithmtique Conditions d'erreur Excution Exemple
indique les bits et les valeurs d'tat de la commande de l'instruction, s'il y en a dcrit l'utilisation de l'instruction dfinit les diffrences entre l'activation et la dsactivation de l'instruction, si ncessaire dtermine si l'instruction a un effet sur les indicateurs d'tat arithmtique voir l'annexe Attributs communs dtermine si l'instruction gnre des dfauts mineurs ou majeurs le cas chant, dfinit le type et le code de dfaut dfinit le fonctionnement de l'instruction fournit au moins un exemple de programmation pour chaque langage de programmation disponible comprend une description expliquant chaque exemple
texte structur
bloc fonctionnel
Prface
Conventions et terminologie
Activer et effacer
Dans ce manuel, les termes activer et effacer sont utiliss pour dfinir l'tat des bits (boolens) et leurs valeurs (non-boolennes).
Ce terme activer effacer Indique que le bit est mis 1 (ON) une valeur est attribue tout nombre autre que zro le bit est mis 0 (OFF) tous les bits d'une valeur sont mis 0
Si un oprande ou un paramtre accepte plus d'un type de donnes, les types de donnes en gras indiquent les types de donnes optimaux. Une instruction est excute plus rapidement et demande moins de mmoire si tous les oprandes de l'instruction utilisent le mme type de donnes optimal, gnralement DINT ou REAL.
instruction dentre
instruction de sortie
Si l'tat dentre de la ligne vers une instruction dentre est vrai, lautomate value linstruction et rgle l'tat de sortie de la ligne selon le rsultat de linstruction. Si l'instruction est vraie, l'tat de sortie de la
Publication 1756-RM003F-FR-P - Mai 2002
Prface
ligne est vrai ; si l'instruction est fausse, l'tat de sortie de la ligne est faux. L'automate pr-scrute galement les instructions. La pr-scrutation est une scrutation spciale de tous les sous-programmes dans l'automate. L'automate scrute tous les sous-programmes principaux et secondaires pendant la pr-scrutation, mais ignore les sauts qui pourraient viter l'excution d'instructions. L'automate excute toutes les boucles FOR et les appels de sous-programmes. Si un sous-programme est appel plus d'une fois, il est excut chaque fois qu'il est appel. L'automate utilise la pr-scrutation et les instructions de logique relais pour rinitialiser les E/S non rmanentes et les valeurs internes. Pendant la pr-scrutation, les valeurs d'entres ne sont pas actualises et les sorties ne sont pas crites. Les conditions suivantes gnrent une pr-scrutation : le passage du mode Programme (Program) au mode Excution (Run) ; le passage automatique au mode Excution partir d'une condition de dmarrage. La pr-scrutation d'un programme ne se fait pas si : le programme est lanc alors que l'automate est dj en mode Excution ; le programme n'est pas lanc lorsque l'automate passe en mode Excution (Run).
Prface
Chaque instruction de bloc fonctionnel comprend galement des paramtres EnableIn et EnableOut : les instructions de bloc fonctionnel sont excutes normalement lorsque EnableIn est activ ; lorsque EnableIn est effac, l'instruction de bloc fonctionnel excute une logique de pr-scrutation, une logique de post-scrutation ou saute simplement l'excution normale de l'algorithme ; EnableOut est identique EnableIn ; cependant, si l'excution du bloc fonctionnel dtecte un dpassement, EnableOut est galement effac ; l'excution du bloc fonctionnel reprend l o elle a t interrompue lorsque EnableIn passe d'effac activ. Il y a cependant certaines instructions de bloc fonctionnel qui dfinissent des fonctionnalits spciales, telles que la rinitialisation lorsque EnableIn passe d'effac activ. Pour les instructions de bloc fonctionnel avec des paramtres avec base de temps, lorsque le mode de temporisation est Oversample (surchantillonnage), l'instruction reprend toujours l o elle a t interrompue lorsque EnableIn passe d'effac activ. Si le paramtre EnableIn n'est pas cbl, l'instruction est toujours excute normalement et EnableIn reste activ. Si vous effacez EnableIn, il est activ lors de l'excution suivante de l'instruction.
IMPORTANT
Lorsque vous programmez en blocs fonctionnels, limitez la plage des units procd +/-10+/-15 car les calculs virgule flottante internes sont effectus en virgule flottante simple prcision. Les units procd en dehors de cette plage peuvent entraner une perte de prcision si les rsultats approchent les limites de virgule flottante simple prcision (+/-10+/-38).
Prface
Notes :
Chapitre 2 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Temporisateur l'enclenchement (TON) . . . . . . . . . Temporisateur au dclenchement (TOF) . . . . . . . . . Temporisateur rmanent (RTO) . . . . . . . . . . . . . . . . Temporisateur l'enclenchement avec RAZ (TONR). Temporisateur au dclenchement avec RAZ (TOFR) . Temporisateur rmanent avec RAZ (RTOR) . . . . . . . Comptage incrmental (CTU) . . . . . . . . . . . . . . . . . Comptage dcrmental (CTD) . . . . . . . . . . . . . . . . . Comptage incrmental/dcrmental (CTUD) . . . . . . Remise zro (RES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1 2-2 2-5 2-9 2-13 2-16 2-19 2-22 2-25 2-29 2-33
Chapitre 3 Instructions d'entre/de sortie Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1 Message (MSG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2 (MSG, GSV, SSV)
Codes d'erreur MSG . . . . . . . . . . . . . . . . . . . . . . . . . Codes d'erreur . . . . . . . . . . . . . . . . . . . . . . . . . . . Codes d'erreur tendus . . . . . . . . . . . . . . . . . . . . Codes d'erreur PLC et SLC (.ERR) . . . . . . . . . . . . . Codes d'erreur de bloc-transfert . . . . . . . . . . . . . . Spcification de la configuration . . . . . . . . . . . . . . . . Spcification des messages de lecture et d'criture du fichier de donnes CIP . . . . . . . . . . . . . . . . . . Reconfiguration d'un module d'E/S. . . . . . . . . . . . Dfinition des messages CIP gnriques . . . . . . . . Dfinition des messages PLC-5 . . . . . . . . . . . . . . . Dfinition des messages SLC . . . . . . . . . . . . . . . . Dfinition des messages de blocs-transferts . . . . . . Dfinition des messages PLC-3 . . . . . . . . . . . . . . . Dfinition des messages PLC-2 . . . . . . . . . . . . . . . Exemples de configuration MSG . . . . . . . . . . . . . . . . Dfinition de la communication. . . . . . . . . . . . . . . . . Dfinition d'un chemin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-8 3-8 3-9 3-11 3-12 3-13 3-14 3-14 3-16 3-17 3-18 3-19 3-20 3-21 3-22 3-23 3-23
vii
viii
Dfinition d'une mthode de communication ou d'une adresse de module . . . . . . . . . . . . . . . . . . Choix d'une option de cache . . . . . . . . . . . . . . . Lire la valeur systme (GSV) et Dfinir la valeur systme (SSV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objets GSV/SSV . . . . . . . . . . . . . . . . . . . . . . . . . . . Accs l'objet CONTROLLER . . . . . . . . . . . . . . . Accs l'objet CONTROLLERDEVICE . . . . . . . . . Accs l'objet CST. . . . . . . . . . . . . . . . . . . . . . . Accs l'objet DF1 . . . . . . . . . . . . . . . . . . . . . . Accs l'objet FAULTLOG . . . . . . . . . . . . . . . . . Accs l'objet MESSAGE . . . . . . . . . . . . . . . . . . Accs l'objet MODULE . . . . . . . . . . . . . . . . . . Accs l'objet MOTIONGROUP . . . . . . . . . . . . . Accs l'objet PROGRAM . . . . . . . . . . . . . . . . . Accs l'objet ROUTINE . . . . . . . . . . . . . . . . . . Accs l'objet SERIALPORT . . . . . . . . . . . . . . . . Accs l'objet TASK . . . . . . . . . . . . . . . . . . . . . Accs l'objet WALLCLOCKTIME . . . . . . . . . . . . Exemple de programmation GSV/SSV . . . . . . . . . . . Obtenir des informations sur les dfauts . . . . . . . Configuration de marqueurs d'activation et de dsactivation. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 3-27 . . . . . 3-28 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-30 3-32 3-32 3-33 3-35 3-36 3-39 3-40 3-42 3-43 3-44 3-45 3-45 3-47 3-47 3-49 3-49
. . . . . 3-50
Chapitre 4 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comparaison (CMP) . . . . . . . . . . . . . . . . . . . . . . . Expressions CMP . . . . . . . . . . . . . . . . . . . . . . . Oprateurs valables . . . . . . . . . . . . . . . . . . . . . Formatage des expressions. . . . . . . . . . . . . . . . Dfinition de l'ordre d'excution des oprations Utilisation de chanes dans une expression . . . . Egal (EQU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . Suprieur ou gal (GEQ) . . . . . . . . . . . . . . . . . . Suprieur (GRT) . . . . . . . . . . . . . . . . . . . . . . . . . Infrieur ou gal (LEQ). . . . . . . . . . . . . . . . . . . . Infrieur (LES) . . . . . . . . . . . . . . . . . . . . . . . . . . Test sur limites (LIM). . . . . . . . . . . . . . . . . . . . . . . Egalit avec masque (MEQ). . . . . . . . . . . . . . . . . . Entre d'une valeur de masque immdiate . . . . Diffrent de (NEQ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1 4-2 4-4 4-4 4-4 4-5 4-6 4-7 4-11 4-15 4-19 4-23 4-27 4-33 4-34 4-38
Chapitre 5 Instructions de calcul/ mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Calcul (CPT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Oprateurs valables . . . . . . . . . . . . . . . . . . . . . Formatage des expressions. . . . . . . . . . . . . . . . Dfinition de l'ordre d'excution des oprations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-1 5-2 5-4 5-4 5-4
ix
Addition (ADD) . . . . Soustraction (SUB) . . Multiplication (MUL) . Division (DIV) . . . . . Modulo (MOD) . . . . . Racine carre (SQR) . Ngation (NEG) . . . . Valeur absolue (ABS)
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
Chapitre 6 Instructions de transfert/ logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transfert (MOV) . . . . . . . . . . . . . . . . . . . . . . . . . . Transfert avec masque (MVM) . . . . . . . . . . . . . . . . Entre d'une valeur de masque immdiate . . . . Transfert avec masque et cible (MVMT) . . . . . . . . . Distribution d'un champ de bits (BTD) . . . . . . . . . Distribution d'un champ de bits avec cible (BTDT). Effacer (CLR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . Permutation d'octets (SWPB) . . . . . . . . . . . . . . . . . ET sur bits (AND) . . . . . . . . . . . . . . . . . . . . . . . . . OU sur bits (OR). . . . . . . . . . . . . . . . . . . . . . . . . . OU exclusif sur bits (XOR) . . . . . . . . . . . . . . . . . . COMPLEMENT sur bits (NOT) . . . . . . . . . . . . . . . . ET boolen (BAND) . . . . . . . . . . . . . . . . . . . . . . . OU boolen (BOR) . . . . . . . . . . . . . . . . . . . . . . . . OU exclusif boolen (BXOR). . . . . . . . . . . . . . . . . COMPLEMENT boolen (BNOT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1 6-3 6-5 6-6 6-8 6-11 6-14 6-17 6-18 6-22 6-25 6-28 6-31 6-34 6-37 6-40 6-42
Chapitre 7 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Slection du mode de fonctionnement . . . . . . . . . . . . . . . Mode Tout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mode Numrique. . . . . . . . . . . . . . . . . . . . . . . . . . . . Mode Incrmental . . . . . . . . . . . . . . . . . . . . . . . . . . . Fichier arithmtique et logique (FAL) . . . . . . . . . . . . . . . . Expressions FAL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Oprateurs valables . . . . . . . . . . . . . . . . . . . . . . . . . . Formatage des expressions. . . . . . . . . . . . . . . . . . . . . Dfinition de l'ordre d'excution des oprations . . . . . Recherche et comparaison de fichiers (FSC) . . . . . . . . . . . Expressions FSC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Oprateurs valables . . . . . . . . . . . . . . . . . . . . . . . . . . Formatage des expressions. . . . . . . . . . . . . . . . . . . . . Dfinition de l'ordre d'excution des oprations . . . . . Utilisation de chanes dans une expression . . . . . . . . . Copie de fichier (COP) Copie de fichier synchrone (CPS) . Remplissage de fichier (FLL) . . . . . . . . . . . . . . . . . . . . . . Moyenne (AVE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-1 7-2 7-2 7-3 7-5 7-7 7-16 7-16 7-17 7-17 7-18 7-22 7-23 7-23 7-24 7-25 7-26 7-32 7-36
Tri de fichier (SRT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-41 Ecart type de fichier (STD) . . . . . . . . . . . . . . . . . . . . . . . . 7-46 Taille en lments (SIZE). . . . . . . . . . . . . . . . . . . . . . . . . . 7-52
Chapitre 8 Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
Introduction . . . . . . . . . . . . . . . . Dcalage binaire gauche (BSL) . Dcalage binaire droite (BSR) . . Chargement FIFO (FFL). . . . . . . . Dchargement FIFO (FFU) . . . . . Chargement LIFO (LFL) . . . . . . . . Dchargement LIFO (LFU). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-1 8-2 8-5 8-8 8-14 8-20 8-26
Chapitre 10 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . Saut vers tiquette (JMP) Etiquette (LBL) . . . . . . . . . . . . . . . . . . . . . . . . Saut vers sous-programme (JSR) Sous-programme (SBR) Retour (RET). . . . . . . . . . . . . . . . . . . . . . . . . . Saut vers sous-programme externe (JXR) . . . . . Fin temporaire (TND) . . . . . . . . . . . . . . . . . . . Relais de contrle matre (MCR). . . . . . . . . . . . Dsactivation de l'interruption utilisateur (UID) Activation d'interruption utilisateur (UIE) . . . . . Toujours faux (AFI). . . . . . . . . . . . . . . . . . . . . Pas d'opration (NOP) . . . . . . . . . . . . . . . . . . Fin de transition (EOT) . . . . . . . . . . . . . . . . . . Pause SFC (SFP) . . . . . . . . . . . . . . . . . . . . . . . Positionnement SFC (SFR) . . . . . . . . . . . . . . . . . . . . . . . . . 10-1 . . . . . . . . . 10-2
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. 10-4 10-13 10-16 10-18 10-20 10-22 10-23 10-24 10-26 10-28
Chapitre 11 Instruction pour/d'interruption Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-1 (FOR, FOR...DO, BRK, EXIT, RET) Pour (FOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-2
Interruption (BRK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-4 Retour (RET). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-5
Publication 1756-RM003F-FR-P - Mai 2002
xi
Chapitre 13 Instructions trigonomtriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Introduction . . . . . . . Sinus (SIN) . . . . . . . . Cosinus (COS) . . . . . Tangente (TAN) . . . . Sinus d'arc (ASN) . . . Cosinus d'arc (ACS). . Tangente d'arc (ATN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-1 . 13-2 . 13-4 . 13-6 . 13-8 13-10 13-12
xii
Chapitre 15 Instructions de conversion mathmatique (DEG, RAD, TOD, FRD, TRN, TRUNC)
Introduction . . . . . . . . . . . . . . . . . . Degrs (DEG) . . . . . . . . . . . . . . . . . Radians (RAD) . . . . . . . . . . . . . . . . Conversion en DCB (TOD) . . . . . . . Conversion en nombre entier (FRD) Troncation (TRN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-1 . 15-2 . 15-4 . 15-6 . 15-9 15-11
Chapitre 16 Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Introduction . . . . . . . . . . . . . . . . . . Excution de l'instruction . . . . . . Codes d'erreur ASCII . . . . . . . . . Types de donnes chane. . . . . . Test ASCII du buffer (ABL) . . . . . . . Caractres ASCII dans buffer (ACB) . Effacement buffer ASCII (ACL). . . . . Lignes d'change ASCII (AHL) . . . . . Lecture ASCII (ARD) . . . . . . . . . . . . Ligne de lecture ASCII (ARL) . . . . . . Ajout d'criture ASCII (AWA). . . . . . Ecriture ASCII (AWT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-1 . 16-2 . 16-4 . 16-4 . 16-5 . 16-8 16-10 16-12 16-16 16-19 16-23 16-27
Chapitre 18 Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Introduction . . . . . . . . . . . . . Types de donnes chane. Chane vers DINT (STOD) . . . Chane vers REAL (STOR) . . . DINT vers chane (DTOS) . . . REAL vers chane (RTOS) . . . Majuscule (UPPER) . . . . . . . . Minuscule (LOWER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-1 . 18-2 . 18-3 . 18-5 . 18-7 . 18-9 18-11 18-13
xiii
xiv
Chapitre
Introduction
Si vous voulez activer les sorties lorsqu'un bit est activ activer les sorties lorsqu'un bit est effac activer un bit activer un bit (rmanent) effacer un bit (rmanent) activer les sorties pour une scrutation chaque fois qu'une ligne devient vraie activer un bit pour une scrutation chaque fois qu'une ligne devient vraie activer un bit pour une scrutation chaque fois qu'une ligne devient fausse activer un bit pour une scrutation chaque fois que le bit d'entre est activ dans le bloc fonctionnel activer un bit pour une scrutation chaque fois que le bit d'entre est effac dans le bloc fonctionnel
(1)
Utilisez les instructions sur bits (type relais) pour surveiller et commander l'tat des bits.
Utilisez cette instruction XIC XIO OTE OTL OTU ONS OSR OSF OSRI Disponible dans ces langages logique relais texte structur(1) logique relais texte structur(1) logique relais texte structur(1) logique relais texte structur(1) logique relais texte structur(1) logique relais texte structur(1) logique relais logique relais texte structur bloc fonctionnel texte structur bloc fonctionnel Voir page 1-2 1-4 1-6 1-7 1-9 1-11 1-14 1-16 1-18
OSFI
1-20
Il n'existe pas d'instruction quivalente en texte structur. Utilisez une autre programmation en texte structur pour obtenir le mme rsultat. Voir la description de l'instruction.
1-2
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Logique relais
Oprande bit de donnes Type BOOL Format point Description bit tester
Texte structur
Il n'y a pas d'instruction XIC en texte structur, mais vous pouvez obtenir le mme rsultat en utilisant une instruction de test IF...THEN (SI...ALORS).
IF data_bit THEN <instruction>; END_IF;
Pour des informations sur la syntaxe des instructions de test en texte structur, reportez-vous l'Annexe C.
Description : L'instruction XIC vrifie si le bit de donnes est activ. Indicateurs d'tat arithmtique : non affects Conditions d'erreur : aucune Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux.
bit de donnes = 0
bit de donnes = 1
pendant la post-scrutation
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
1-3
Logique relais
Texte structur
IF limit_switch THEN <instruction>; END_IF;
Exemple 2 : Si S:V est activ (indique qu'un dpassement suprieur s'est produit),
l'instruction suivante est active (l'tat de sortie de la ligne est vrai).
Logique relais
Texte structur
IF S:V THEN <instruction>; END_IF;
1-4
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Logique relais
Oprande bit de donnes Type BOOL Format point Description bit tester
Texte structur
Il n'y a pas d'instruction XIO en texte structur, mais vous pouvez obtenir le mme rsultat en utilisant une instruction de test IF...THEN (SI...ALORS).
IF NOT data_bit THEN <instruction>; END_IF;
Pour des informations sur la syntaxe des instructions de test en texte structur, reportez-vous l'Annexe C.
Description : L'instruction XIO vrifie si le bit de donnes est effac. Indicateurs d'tat arithmtique : non affects Conditions d'erreur : aucune Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux.
bit de donnes = 0
bit de donnes = 1
pendant la post-scrutation
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
1-5
Logique relais
Texte structur
IF NOT limit_switch_2 THEN <instruction>; END_IF;
Exemple 2 : Si S:V est effac (indique qu'un dpassement suprieur s'est produit),
l'instruction suivante est active (l'tat de sortie de la ligne est vrai).
Logique relais
Texte structur
IF NOT S:V THEN <instruction>; END_IF;
1-6
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Logique relais
Oprande bit de donnes Type BOOL Format point Description bit activer ou effacer
Texte structur
Il n'y a pas d'instruction OTE en texte structur, mais vous pouvez obtenir le mme rsultat en utilisant une affectation non rmanente.
data_bit [:=] expression_boolenne;
Pour des informations sur la syntaxe des affectations et expressions en texte structur, reportez-vous l'Annexe C.
Exemple : Lorsque switch est activ, l'instruction OTE active (allume) light_1.
Lorsque switch est effac, l'instruction OTE efface (teint) light_1.
Logique relais
Texte structur
light_1 [:=] switch;
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
1-7
Logique relais
Oprande bit de donnes Type BOOL Format point Description bit activer
Texte structur
Il n'y a pas d'instruction OTL en texte structur, mais vous pouvez obtenir le mme rsultat en utilisant une instruction de test IF...THEN (SI...ALORS) et une affectation.
IF expression_boolenne THEN data_bit := 1; END_IF;
Pour des informations sur la syntaxe des instructions de test, expressions et affectations en texte structur, reportez-vous l'Annexe C.
1-8
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Exemple : Lorsqu'elle est active, l'instruction OTL active light_2. Ce bit reste
activ jusqu' ce qu'il soit effac, gnralement par une instruction OTU.
Logique relais
Texte structur
IF expression_boolenne THEN light_2 := 1; END_IF;
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
1-9
Logique relais
Oprande bit de donnes Type BOOL Format point Description bit effacer
Texte structur
Il n'y a pas d'instruction OTU en texte structur, mais vous pouvez obtenir le mme rsultat en utilisant une instruction de test IF...THEN (SI...ALORS) et une affectation.
IF expression_boolenne THEN data_bit := 0; END_IF;
Pour des informations sur la syntaxe des instructions de test, expressions et affectations en texte structur, reportez-vous l'Annexe C.
1-10
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Exemple : Lorsqu'elle est active, l'instruction OTU efface light_2. Logique relais
Texte structur
IF expression_boolenne THEN light_2 := 0; END_IF;
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
1-11
L'instruction ONS active ou dsactive le reste de la ligne, selon l'tat du bit de stockage.
Logique relais
Oprande bit de stockage Type BOOL Format point Description bit de mmoire interne enregistre l'tat d'entre de la ligne de la dernire excution de l'instruction
Texte structur
Il n'y a pas d'instruction ONS en texte structur, mais vous pouvez obtenir le mme rsultat en utilisant une instruction de test IF...THEN (SI...ALORS).
IF expression_boolenne AND NOT storage_bit THEN <instruction>; END_IF; storage_bit := expression_boolenne;
Pour des informations sur la syntaxe des instructions de test, expressions et affectations en texte structur, reportez-vous l'Annexe C.
Description : Lorsqu'elle est active et que le bit de stockage est effac, l'instruction
ONS active le reste de la ligne. Lorsqu'elle est dsactive ou lorsque le bit de stockage est activ, l'instruction ONS dsactive le reste de la ligne.
1-12
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Excution :
Condition pendant la pr-scrutation Action de la logique relais Le bit de stockage est activ pour empcher un dclenchement incorrect pendant la premire scrutation. L'tat de sortie de la ligne est rgl sur faux. Le bit de stockage est effac. L'tat de sortie de la ligne est rgl sur faux.
si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai
bit de stockage = 0
le bit de stockage est activ l'tat de sortie de la ligne est rgl sur vrai
bit de stockage = 1
le bit de stockage reste activ l'tat de sortie de la ligne est rgl sur faux fin
pendant la post-scrutation
Le bit de stockage est effac. L'tat de sortie de la ligne est rgl sur faux.
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
1-13
Pendant une scrutation pour laquelle limit_switch_1 est effac ou storage_1 activ, la ligne n'a aucun effet. Pendant une scrutation pour laquelle limit_switch_1 est activ et storage_1 effac, l'instruction ONS active storage_1 et l'instruction ADD augmente sum de 1. Tant que limit_switch_1 reste activ, sum garde la mme valeur. limit_switch_1 doit repasser d'effac activ pour que sum augmente nouveau.
Logique relais
Texte structur
IF limit_switch_1 AND NOT storage_1 THEN sum := sum + 1; END_IF; storage_1 := limit_switch_1;
1-14
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
L'instruction OSR active ou efface le bit de sortie, selon l'tat du bit de stockage. Cette instruction existe en texte structur et en bloc fonctionnel comme instruction OSRI (voir page 1-18).
BOOL
point
Description : Lorsqu'elle est active et que le bit de stockage est effac, l'instruction
OSR active le bit de sortie. Lorsqu'elle est active et que le bit de stockage est activ, ou lorsqu'elle est dsactive, l'instruction OSR efface le bit de sortie.
bit de stockage
bit de sortie
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
1-15
Excution :
Condition pendant la pr-scrutation Action de la logique relais Le bit de stockage est activ pour empcher un dclenchement incorrect pendant la premire scrutation. Le bit de sortie est effac. L'tat de sortie de la ligne est rgl sur faux. Le bit de stockage est effac. Le bit de sortie n'est pas modifi. L'tat de sortie de la ligne est rgl sur faux.
bit de stockage = 0
le bit de stockage est activ le bit de sortie est activ l'tat de sortie de la ligne est rgl sur vrai
bit de stockage = 1
le bit de stockage reste activ le bit de sortie est effac l'tat de sortie de la ligne est rgl sur vrai fin
pendant la post-scrutation
Le bit de stockage est effac. Le bit de sortie n'est pas modifi. L'tat de sortie de la ligne est rgl sur faux.
1-16
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
L'instruction OSF active ou efface le bit de sortie, selon l'tat du bit de stockage. Cette instruction existe en texte structur et en bloc fonctionnel comme instruction OSFI (voir page 1-20).
BOOL
point
bit de stockage
bit de sortie
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
1-17
Excution :
Condition pendant la pr-scrutation Action de la logique relais Le bit de stockage est dsactiv pour empcher un dclenchement incorrect pendant la premire scrutation. Le bit de sortie est effac. L'tat de sortie de la ligne est rgl sur faux.
bit de stockage = 0
le bit de stockage reste effac le bit de sortie est effac l'tat de sortie de la ligne est rgl sur faux
bit de stockage = 1
le bit de stockage est effac le bit de sortie est activ l'tat de sortie de la ligne est rgl sur faux fin
Le bit de stockage est activ. Le bit de sortie est effac. L'tat de sortie de la ligne est rgl sur vrai. Voir l'tat d'entre de la ligne rgl sur faux ci-dessus.
pendant la post-scrutation
1-18
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
L'instruction OSRI active le bit de sortie pour une excution lorsque le bit d'entre passe d'effac activ. Cette instruction existe en logique relais comme instruction OSR (voir page 1-14).
Texte structur
Oprande point OSRI Type FBD_ONESHOT Format structure Description structure OSRI
Bloc fonctionnel
Oprande point OSRI Type FBD_ONESHOT Format structure Description structure OSRI
Structure FBD_ONESHOT
Paramtre d'entre EnableIn Type de donnes BOOL Description Bloc fonctionnel : Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Si activ, l'instruction est excute. Activ par dfaut. Texte structur : Aucun effet. L'instruction est excute. Bit d'entre. Ceci est quivalent l'tat de la ligne pour l'instruction logique relais OSR. Effac par dfaut. Description L'instruction a fourni un rsultat correct. Bit de sortie
InputBit
InputBitn-1
OutputBit
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
1-19
pendant la post-scrutation
Texte structur
OSRI_01.InputBit := limit_switch1; OSRI(OSRI_01); State := OSRI_01.OutputBit;
Bloc fonctionnel
1-20
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
L'instruction OSFI active OutputBit pour une excution lorsque InputBit passe d'activ effac. Cette instruction existe en logique relais comme instruction OSF (voir page 1-16).
Oprandes :
OSFI(OSFI_tag);
Texte structur
Oprande point OSFI Type FBD_ONESHOT Format structure Description structure OSFI
Bloc fonctionnel
Oprande point OSFI Type FBD_ONESHOT Format structure Description structure OSFI
Structure FBD_ONESHOT
Paramtre d'entre EnableIn Type de donnes BOOL Description Bloc fonctionnel : Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Si activ, l'instruction est excute. Activ par dfaut. Texte structur : Aucun effet. L'instruction est excute. Bit d'entre. Ceci est quivalent l'tat de la ligne pour l'instruction logique relais OSF. Effac par dfaut. Description L'instruction a fourni un rsultat correct. bit de sortie
InputBit n-1
OutputBit
40047
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
1-21
pendant la post-scrutation
Texte structur
OSFI_01.InputBit := limit_switch1; OSFI(OSFI_01); Output_state := OSFI_01.OutputBit;
Bloc fonctionnel
1-22
Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Notes :
Chapitre
Introduction
Si vous voulez mesurer le temps pendant lequel un temporisateur est actif mesurer le temps pendant lequel un temporisateur est inactif cumuler du temps
Les temporisateurs et les compteurs commandent les oprations en fonction du temps ou du nombre d'vnements.
Utilisez cette instruction TON TOF RTO TONR TOFR Disponible dans ces langages logique relais logique relais logique relais texte structur bloc fonctionnel texte structur bloc fonctionnel texte structur bloc fonctionnel logique relais logique relais texte structur bloc fonctionnel logique relais Voir page 2-2 2-5 2-9 2-13 2-16
calculer combien de temps un temporisateur est actif avec RAZ intgre en bloc fonctionnel calculer combien de temps un temporisateur est inactif avec RAZ intgre en bloc fonctionnel cumuler la dure avec RAZ intgre en bloc fonctionnel faire un comptage incrmental faire un comptage dcrmental faire des comptages incrmental et dcrmental en bloc fonctionnel remettre un temporisateur ou un compteur zro
2-2
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
L'instruction TON est un temporisateur non rmanent qui cumule le temps lorsque l'instruction est active (l'tat d'entre de la ligne est vrai). Cette instruction existe en texte structur et en bloc fonctionnel comme instruction TONR (voir page 2-13).
Structure TIMER
Mnmonique .EN .TT .DN .PRE .ACC Type de donnes BOOL BOOL BOOL DINT DINT Description Le bit d'activation indique que l'instruction TON est active. Le bit de temporisation indique qu'une opration de temporisation est en cours. Le bit de fin est activ lorsque .ACC .PRE. La valeur prdtermine dfinit la valeur (par units d'1 ms) que la valeur cumule doit atteindre avant que l'instruction n'active le bit .DN. La valeur cumule dfinit le nombre de millisecondes qui se sont coules depuis l'activation de l'instruction TON.
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
2-3
Excution :
Condition pendant la pr-scrutation Action de la logique relais Les bits .EN, .TT et .DN sont effacs. La valeur .ACC est efface. L'tat de sortie de la ligne est rgl sur faux. Les bits .EN, .TT et .DN sont effacs. La valeur .ACC est efface. L'tat de sortie de la ligne est rgl sur faux.
bit .DN = 1
bit .DN = 0
bit .EN = 0
le bit .EN est activ le bit .TT est activ last_time = current_time
bit .EN = 1
le bit .TT est activ .ACC = .ACC + (current_time - last_time) last_time = current_time
examine .ACC
.ACC .PRE
.ACC < .PRE le bit .DN est activ le bit .TT est effac le bit .EN est activ la valeur .ACC passe zro non
oui
pendant la post-scrutation
2-4
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Exemple : Lorsque limit_switch_1 est activ, light_2 est allum pendant 180 ms
(timer_1 compte). Lorsque timer_1.acc atteint 180, light_2 s'teint et light_3 s'allume. Light_3 reste allum jusqu' ce que l'instruction TON soit dsactive. Si limit_switch_1 est effac pendant que timer_1 compte, light_2 s'teint.
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
2-5
L'instruction TOF est un temporisateur non rmanent qui cumule le temps lorsque l'instruction est active (l'tat d'entre de la ligne est faux). Cette instruction existe en texte structur et en bloc fonctionnel comme instruction TOFR (voir page 2-16).
Structure TIMER
Mnmonique .EN .TT .DN .PRE .ACC Type de donnes BOOL BOOL BOOL DINT DINT Description Le bit d'activation indique que l'instruction TOF est active. Le bit de temporisation indique qu'une opration de temporisation est en cours. Le bit de fin est effac lorsque .ACC .PRE. La valeur prdtermine dfinit la valeur (par units d'1 ms) que la valeur cumule doit atteindre avant que l'instruction n'efface le bit .DN. La valeur cumule dfinit le nombre de millisecondes qui se sont coules depuis l'activation de l'instruction TOF.
2-6
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
bit de temporisation en cours (.TT) bit de fin de temporisation (.DN) Dclenchement prslection
valeur cumule du temporisateur (.ACC) 0 le temporisateur n'a pas atteint la valeur .PRE
16650
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
2-7
Excution :
Condition pendant la pr-scrutation Action de la logique relais Les bits .EN, .TT et .DN sont effacs. La valeur .ACC est rgle pour tre gale la valeur .PRE. L'tat de sortie de la ligne est rgl sur faux.
bit .DN = 0
bit .DN = 1
bit .EN = 1
le bit .EN est effac le bit .TT est activ last_time = current_time
bit .EN = 0
le bit .TT est activ .ACC = .ACC + (current_time - last_time) last_time = current_time
examine .ACC
.ACC .PRE
.ACC < .PRE le bit .DN est effac. le bit .TT est effac le bit .EN est effac la valeur .ACC passe zro non
oui
Les bits .EN, .TT et .DN sont activs. La valeur .ACC est efface. L'tat de sortie de la ligne est rgl sur vrai. L'tat de sortie de la ligne est rgl sur faux.
pendant la post-scrutation
2-8
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Exemple : Lorsque limit_switch_2 est effac, light_2 est allum pendant 180 ms
(timer_2 compte). Lorsque timer_2.acc atteint 180, light_2 s'teint et light_3 s'allume. Light_3 reste allum jusqu' ce que l'instruction TOF soit active. Si limit_switch_2 est activ pendant que timer_2 compte, light_2 s'teint.
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
2-9
L'instruction RTO est un temporisateur rmanent qui cumule le temps lorsque l'instruction est active. Cette instruction existe en texte structur et en bloc fonctionnel comme instruction RTOR (voir page 2-19).
Structure TIMER
Mnmonique .EN .TT .DN .PRE .ACC Type de donnes BOOL BOOL BOOL DINT DINT Description Le bit d'activation indique que l'instruction RTO est active. Le bit de temporisation indique qu'une opration de temporisation est en cours. Le bit de fin indique que .ACC .PRE. La valeur prdtermine dfinit la valeur (par units d'1 ms ) que la valeur cumule doit atteindre avant que l'instruction n'active le bit .DN. La valeur cumule dfinit le nombre de millisecondes qui se sont coules depuis l'activation de l'instruction RTO.
2-10
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
La base de temps est toujours 1 ms. Pour un temporisateur de 2 secondes par exemple, entrez 2000 pour la valeur .PRE.
tat d'entre de la ligne
prslection
valeur cumule du temporisateur (.ACC) 0 le temporisateur n'a pas atteint la valeur .PRE
16651
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
2-11
Excution :
Condition pendant la pr-scrutation Action de la logique relais Les bits .EN, .TT et .DN sont effacs. La valeur .ACC n'est pas modifie. L'tat de sortie de la ligne est rgl sur faux. Les bits .EN et .TT sont effacs. Le bit .DN n'est pas modifi. La valeur .ACC n'est pas modifie. L'tat de sortie de la ligne est rgl sur faux.
bit .DN = 1
bit .DN = 0
bit .EN = 0
le bit .EN est activ le bit .TT est activ last_time = current_time
bit .EN = 1
le bit .TT est activ .ACC = .ACC + (current_time - last_time) last_time = current_time
examine .ACC
.ACC .PRE
.ACC < .PRE le bit .DN est activ le bit .TT est effac le bit .EN est activ la valeur .ACC passe zro non
oui
pendant la post-scrutation
Exemple : Lorsque limit_switch_1 est activ, light_1 est allum pendant 180 ms
(timer_2 compte). Lorsque timer_3.acc atteint 180, light_1 s'teint et light_2 s'allume. Light_2 reste allum jusqu' ce que timer_3 soit rinitialis. Si limit_switch_2 est effac pendant que timer_3 compte, light_1 reste allum. Lorsque limit_switch_2 est activ, l'instruction RES rinitialise timer_3 (efface les bits d'tat et la valeur .ACC).
2-12
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
2-13
L'instruction TONR est un temporisateur non rmanent qui cumule le temps lorsque TimerEnable est activ. Cette instruction est disponible en logique relais sous forme de deux instructions spares : TON (voir page 2-2) et RES (voir page 2-33).
Texte structur
Variable point TONR Type FBD_TIMER Format structure Description structure TONR
Bloc fonctionnel
Oprande point TONR Type FBD_TIMER Format structure Description structure TONR
Structure FBD_TIMER
Paramtre d'entre EnableIn Type de donnes BOOL Description Bloc fonctionnel : Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Si activ, l'instruction est excute. Activ par dfaut. Texte structur : Aucun effet. L'instruction est excute. Si activ, il active le temporisateur pour qu'il excute et cumule le temps. Effac par dfaut. Valeur prslectionne du temporisateur. Valeur, en incrments d'1 ms, que ACC doit atteindre avant que la temporisation ne soit termine. Si elle est incorrecte, l'instruction active le bit appropri dans Status et la temporisation n'a pas lieu. Valeurs correctes = 0 nombre entier positif maximum. Demande de rinitialisation du temporisateur. Le temporisateur est rinitialis lors de son activation. Effac par dfaut. Description L'instruction a fourni un rsultat correct. Temps cumul en millisecondes. Sortie de temporisateur activ. Indique que l'instruction de temporisation est active. Sortie de temporisation en cours. Lorsqu'elle est active, une opration de temporisation est en cours. Sortie de temporisation termine. Indique quand la valeur cumule est suprieure ou gale la valeur prslectionne. Etat du bloc fonctionnel. L'instruction a dtect une des erreurs d'excution suivantes. Il ne s'agit pas d'une erreur automate mineure ou majeure. Vrifiez les bits d'tat restants pour dterminer ce qui s'est pass. La valeur prslectionne est incorrecte.
TimerEnable PRE
BOOL DINT
Remise zro
BOOL
Paramtre de sortie Type de donnes EnableOut ACC EN TT DN Status InstructFault (Status.0) PresetInv (Status.1) BOOL BOOL BOOL BOOL BOOL DINT BOOL
BOOL
2-14
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Rglez le paramtre d'entre Reset pour qu'il rinitialise l'instruction. Si TimerEnable est activ quand Reset est actif, l'instruction TONR recommence la temporisation lorsque Reset est effac.
remise zro
Lorsque le paramtre d'entre Reset est activ, l'instruction efface EN, TT et DN, puis active ACC = zro. Aucune.
pendant la post-scrutation
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
2-15
Texte structur
TONR_01.Preset := 500; TONR_01.Reset : = reset; TONR_O1.TimerEnable := limit_switch1; TONR(TONR_01); timer_state := TONR_01.DN;
Bloc fonctionnel
2-16
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
L'instruction TOFR est un temporisateur non rmanent qui cumule le temps lorsque TimerEnable est effac. Cette instruction est disponible en logique relais sous forme de deux instructions spares : TOF (voir page 2-5) et RES (voir page 2-33).
Texte structur
Variable point TOFR Type FBD_TIMER Format structure Description structure TOFR
Structure FBD_TIMER
Paramtre d'entre EnableIn Type de donnes BOOL Description Bloc fonctionnel : Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Si activ, l'instruction est excute. Activ par dfaut. Texte structur : Aucun effet. L'instruction est excute. Si effac, il active le temporisateur pour qu'il excute et cumule le temps. Effac par dfaut. Valeur prslectionne du temporisateur. Valeur, en incrments d'1 ms, que ACC doit atteindre avant que la temporisation ne soit termine. Si elle est incorrecte, l'instruction active le bit appropri dans Status et la temporisation n'a pas lieu. Valeurs correctes = 0 nombre entier positif maximum. Demande de rinitialisation du temporisateur. Le temporisateur est rinitialis lors de son activation. Effac par dfaut. Description L'instruction a fourni un rsultat correct. Temps cumul en millisecondes. Sortie de temporisateur activ. Indique que l'instruction de temporisation est active. Sortie de temporisation en cours. Lorsqu'elle est active, une opration de temporisation est en cours. Sortie de temporisation termine. Indique quand la valeur cumule est suprieure ou gale la valeur prslectionne.
TimerEnable PRE
BOOL DINT
Remise zro
BOOL
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
2-17
Description Etat du bloc fonctionnel. L'instruction a dtect une des erreurs d'excution suivantes. Il ne s'agit pas d'une erreur automate mineure ou majeure. Vrifiez les bits d'tat restants pour dterminer ce qui s'est pass. La valeur prslectionne est incorrecte.
PresetInv (Status.1)
BOOL
bit de temporisation en cours (.TT) bit de fin de temporisation (.DN) Dclenchement prslection
valeur cumule du temporisateur (.ACC) 0 le temporisateur n'a pas atteint la valeur .PRE
16650
Rglez le paramtre d'entre Reset pour qu'il rinitialise l'instruction. Si TimerEnable est effac quand Reset est actif, l'instruction TOFR ne recommence pas la temporisation lorsque Reset est effac.
2-18
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Excution :
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction Action du bloc fonctionnel Aucune. EN, TT et DN sont effacs. la valeur ACC est rgle sur PRE. Action du texte structur Aucune. EN, TT et DN sont effacs. la valeur ACC est rgle sur PRE. EN, TT et DN sont effacs. la valeur ACC est rgle sur PRE. EnableIn est toujours activ. L'instruction est excute.
pendant la premire EN, TT et DN sont effacs. excution de l'instruction la valeur ACC est rgle sur PRE. si EnableIn est effac si EnableIn est activ EnableOut est effac, l'instruction ne fait rien et les sorties ne sont pas actualises. Lorsque EnableIn passe d'effac activ, l'instruction est initialise comme indiqu pour la premire scrutation de l'instruction. L'instruction est excute. EnableOut est activ. Lorsque le paramtre d'entre Reset est activ, l'instruction efface EN, TT et DN, puis active ACC = PRE. Remarquez la diffrence avec l'utilisation d'une instruction RES sur une instruction TOF.
remise zro
Lorsque le paramtre d'entre Reset est activ, l'instruction efface EN, TT et DN, puis active ACC = PRE. Remarquez la diffrence avec l'utilisation d'une instruction RES sur une instruction TOF. Aucune.
pendant la post-scrutation
Aucune.
Texte structur
TOFR_01.Preset := 500 TOFR_01.Reset := reset; TOFR_O1.TimerEnable := limit_switch1; TOFR(TOFR_01); timer_state2 := TOFR_01.DN;
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
2-19
Bloc fonctionnel
2-20
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
L'instruction RTOR est un temporisateur rmanent qui cumule le temps lorsque TimerEnable est activ. Cette instruction est disponible en logique relais sous forme de deux instructions spares : RTO (voir page 2-9) et RES (voir page 2-33).
Oprandes :
RTOR(RTOR_tag);
Texte structur
Variable point RTOR Type FBD_TIMER Format structure Description structure RTOR
Structure FBD_TIMER
Paramtre d'entre EnableIn Type de donnes BOOL Description Bloc fonctionnel : Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Si activ, l'instruction est excute. Activ par dfaut. Texte structur : Aucun effet. L'instruction est excute. Si activ, il active le temporisateur pour qu'il excute et cumule le temps. Effac par dfaut. Valeur prslectionne du temporisateur. Valeur, en incrments d'1 ms, que ACC doit atteindre avant que la temporisation ne soit termine. Si elle est incorrecte, l'instruction active le bit appropri dans Status et la temporisation n'a pas lieu. Valeurs correctes = 0 nombre entier positif maximum. Demande de rinitialisation du temporisateur. Le temporisateur est rinitialis lors de son activation. Description L'instruction a fourni un rsultat correct. Temps cumul en millisecondes. Cette valeur est retenue mme quand l'entre TimerEnable est efface, ainsi ce bloc agit diffremment du bloc TONR. Sortie de temporisateur activ. Indique que l'instruction de temporisation est active. Sortie de temporisation en cours. Lorsqu'elle est active, une opration de temporisation est en cours. Sortie de temporisation termine. Indique quand la valeur cumule est suprieure ou gale la valeur prslectionne. Etat du bloc fonctionnel. L'instruction a dtect une des erreurs d'excution suivantes. Il ne s'agit pas d'une erreur automate mineure ou majeure. Vrifiez les bits d'tat restants pour dterminer ce qui s'est pass. La valeur prslectionne est incorrecte.
TimerEnable PRE
BOOL DINT
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
2-21
remise zro
prslection
valeur cumule du temporisateur (.ACC) 0 le temporisateur n'a pas atteint la valeur .PRE
16651
Rglez le paramtre d'entre Reset pour qu'il rinitialise l'instruction. Si TimerEnable est activ quand Reset est actif, l'instruction RTOR recommence la temporisation lorsque Reset est effac.
2-22
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Excution :
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ Action du bloc fonctionnel Aucune. EN, TT et DN sont effacs La valeur .ACC n'est pas modifie EN, TT et DN sont effacs La valeur .ACC n'est pas modifie EnableOut est effac, l'instruction ne fait rien et les sorties ne sont pas actualises. Bloc fonctionnel : Lorsque EnableIn passe d'effac activ, l'instruction est initialise comme indiqu pour la premire scrutation de l'instruction. L'instruction est excute. EnableOut est activ. Lorsque le paramtre d'entre Reset est activ, l'instruction efface EN, TT et DN, puis active ACC = zro. Aucune. Action du texte structur Aucune. EN, TT et DN sont effacs La valeur .ACC n'est pas modifie EN, TT et DN sont effacs La valeur .ACC n'est pas modifie EnableIn est toujours activ. L'instruction est excute.
remise zro
Lorsque le paramtre d'entre Reset est activ, l'instruction efface EN, TT et DN, puis active ACC = zro. Aucune.
pendant la post-scrutation
Texte structur
RTOR_01.Preset := 500 RTOR_01.Reset := reset; RTOR_O1.TimerEnable := limit_switch1; RTOR(RTOR_01); timer_state3 := RTOR_01.DN;
Bloc fonctionnel
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
2-23
L'instruction CTU compte de faon croissante (incrmentale). Cette instruction existe en texte structur et en bloc fonctionnel comme instruction CTUD (voir page 2-29).
Logique relais
Oprande Compteur Prslection Accumulateur Type COUNTER DINT DINT Format point immdiat immdiat Description structure de compteur limite suprieure de comptage nombre de comptages effectus par le compteur la valeur initiale est gnralement 0
Structure COUNTER
Mnmonique .CU .DN .OV Type de donnes BOOL BOOL BOOL Description Le bit d'activation de comptage incrmental indique que l'instruction CTU est active. Le bit de fin indique que .ACC .PRE. Le bit de dpassement indique que le compteur a dpass la limite suprieure de 2 147 483 647. Le compteur passe alors -2 147 483 648 et recommence compter de faon incrmentale. Le bit de dpassement indique que le compteur a dpass la limite infrieure de -2 147 483 648. Le compteur passe alors 2 147 483 647 et recommence compter de faon dcrmentale. La valeur prdtermine dfinit la valeur que la valeur cumule doit atteindre avant que l'instruction n'active le bit .DN. La valeur cumule indique le nombre de transitions que l'instruction a comptes.
.UN
BOOL
.PRE .ACC
DINT DINT
Description : Lorsqu'elle est active et que le bit .CU est effac, l'instruction CTU
ajoute un au compteur. Lorsqu'elle est active et que le bit .CU est activ, ou lorsqu'elle est dsactive, l'instruction CTU garde sa valeur .ACC.
tat d'entre de la ligne
prslection
2-24
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
La valeur cumule continue d'augmenter, mme une fois le bit .DN activ. Pour effacer une valeur cumule, utilisez une instruction RES qui renvoie la structure du compteur ou crivez 0 dans la valeur cumule.
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
2-25
Excution :
Condition pendant la pr-scrutation Action de la logique relais Le bit .CU est activ pour empcher une incrmentation incorrecte lors de la premire scrutation de programme. L'tat de sortie de la ligne est rgl sur faux. Le bit .CU est effac. L'tat de sortie de la ligne est rgl sur faux.
bit .CU = 0
oui
bit .CU = 1
non
le bit .UN est effac le bit .DN est effac le bit .OV est effac
bit .OV = 0
examine .ACC
.ACC .PRE
.ACC < .PRE le bit .DN est effac le bit .DN est activ
fin
pendant la post-scrutation
2-26
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Exemple : Une fois que limit_switch_1 est pass 10 fois de dsactiv activ, le
bit .DN est activ et light_1 s'allume. Si limit_switch_1 continue de passer de dsactiv activ, counter_1 continue d'augmenter et le bit .DN reste activ. Lorsque limit_switch_1 est activ, l'instruction RES rinitialise counter_1 (efface les bits d'tat et la valeur .ACC) et light_1 s'teint.
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
2-27
L'instruction CTD compte de faon dcroissante (dcrmentale). Cette instruction existe en texte structur et en bloc fonctionnel comme instruction CTUD (voir page 2-29).
Logique relais
Oprande Compteur Prslection Accumulateur Type COUNTER DINT DINT Format point immdiat immdiat Description structure de compteur limite infrieure de comptage nombre de comptages effectus par le compteur la valeur initiale est gnralement 0
Structure COUNTER
Mnmonique .CD .DN .OV Type de donnes BOOL BOOL BOOL Description Le bit d'activation de comptage dcrmental indique que l'instruction CTD est active. Le bit de fin indique que .ACC .PRE. Le bit de dpassement indique que le compteur a dpass la limite suprieure de 2 147 483 647. Le compteur passe alors -2 147 483 648 et recommence compter de faon incrmentale. Le bit de dpassement indique que le compteur a dpass la limite infrieure de -2 147 483 648. Le compteur passe alors 2 147 483 647 et recommence compter de faon dcrmentale. La valeur prdtermine dfinit la valeur que la valeur cumule doit atteindre avant que l'instruction n'active le bit .DN. La valeur cumule indique le nombre de transitions que l'instruction a comptes.
.UN
BOOL
.PRE .ACC
DINT DINT
2-28
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Description : L'instruction CTD est gnralement utilise avec une instruction CTU
qui renvoie la mme structure de compteur. Lorsqu'elle est active et que le bit .CD est effac, l'instruction CTD retire un au compteur. Lorsqu'elle est active et que le bit .CD est activ, ou lorsqu'elle est dsactive, l'instruction CTD garde sa valeur .ACC.
tat d'entre de la ligne
bit d'activation de comptage dcrmental (.CD) bit de fin de comptage dcrmental (.DN)
prslection
16637
La valeur cumule continue de diminuer, mme une fois le bit .DN activ. Pour effacer une valeur cumule, utilisez une instruction RES qui renvoie la structure du compteur ou crivez 0 dans la valeur cumule.
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
2-29
Excution :
Condition pendant la pr-scrutation Action de la logique relais Le bit .CD est activ pour empcher une diminution incorrecte lors de la premire scrutation de programme. L'tat de sortie de la ligne est rgl sur faux. Le bit .CD est effac. L'tat de sortie de la ligne est rgl sur faux.
bit .CD = 0
oui
bit .CD = 1
non
le bit .OV est effac le bit .DN est effac le bit .UN est effac
bit .OV = 0
examine .ACC
.ACC .PRE
.ACC < .PRE le bit .DN est effac le bit .DN est activ
fin
pendant la post-scrutation
2-30
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Exemple : Un convoyeur apporte les pices dans une zone tampon. Chaque fois
qu'une pice entre, limit_switch_1 est activ et counter_1 augmente de 1. Chaque fois qu'une pice sort, limit_switch_2 est activ et counter_1 diminue de 1. S'il y a 100 pices dans la zone tampon (counter_1.dn est activ), conveyor_a est activ et empche le convoyeur d'apporter d'autres pices tant que la zone tampon n'a pas de place disponible.
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
2-31
L'instruction CTUD augmente de un lorsque CUEnable passe d'effac activ. L'instruction diminue de un lorsque CDEnable passe d'effac activ. Cette instruction existe en logique relais sous forme de trois instructions spares : CTU (voir page 2-22), CTD (voir page 2-25) et RES (voir page 2-33).
Oprandes :
CTUD(CTUD_tag);
Texte structur
Variable point CTUD Type FBD_COUNTER Format structure Description structure CTUD
Bloc fonctionnel
Oprande point CTUD Type FBD_COUNTER Format structure Description structure CTUD
Structure FBD_COUNTER
Paramtre d'entre EnableIn Type de donnes BOOL Description Bloc fonctionnel : Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Si activ, l'instruction est excute. Activ par dfaut. Texte structur : Aucun effet. L'instruction est excute. Activation de comptage incrmental. Lorsque l'entre passe d'efface active, la valeur cumule augmente de un. Effac par dfaut. Activation de comptage dcrmental. Lorsque l'entre passe d'efface active, la valeur cumule diminue de un. Effac par dfaut. Valeur de compteur prslectionne. Valeur que la valeur cumule doit atteindre avant l'activation de DN. Valeurs correctes = tout nombre entier. La valeur par dfaut est 0. Demande de rinitialisation du temporisateur. Le compteur est rinitialis lors de son activation. Effac par dfaut.
CUEnable
BOOL
CDEnable
BOOL
PRE
DINT
Remise zro
BOOL
2-32
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Description L'instruction a fourni un rsultat correct. Valeur cumule. Comptage incrmental activ. Comptage dcrmental activ. Comptage termin. Activ quand la valeur cumule est suprieure ou gale la valeur prslectionne. Dpassement suprieur du compteur. Indique que le compteur a dpass la limite suprieure de 2 147 483 647. Le compteur repasse alors 2 147 483 648 et recommence compter de faon incrmentale. Dpassement infrieur du compteur. Indique que le compteur a dpass la limite infrieure de 2 147 483 648. Le compteur repasse alors 2 147 483 647 et recommence compter de faon dcrmentale.
UN
BOOL
Description Lorsqu'elle est active et que CUEnable est activ, l'instruction CTUD
ajoute un au compteur. Lorsqu'elle est active et que CDEnable est activ, l'instruction CTUD retire un au compteur. Les paramtres d'entre CUEnable et CDEnable peuvent tre modifis pendant la mme scrutation. L'instruction excute le comptage incrmental avant le comptage dcrmental.
Comptage incrmental
CUEnable
prslection
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
2-33
Comptage dcrmental
CDEnable
bit d'activation de comptage dcrmental (CD) bit de fin de comptage dcrmental (DN)
prslection
16637
Lorsqu'elle est dsactive, l'instruction CTUD, elle garde sa valeur cumule. Activez le paramtre d'entre Reset de la structure FBD_COUNTER pour qu'il rinitialise l'instruction.
remise zro
pendant la post-scrutation
2-34
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Texte structur
CTUD_01.Preset := 500; CTUD_01.Reset := Restart; CTUD_O1.CUEnable := limit_switch1; CTUD(CTUD_01); counter_state := CTUD_01.DN;
Bloc fonctionnel
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
2-35
Logique relais
Oprande structure Type TIMER CONTROL COUNTER Format point Description structure rinitialiser
Description : Lorsqu'elle est active, l'instruction RES efface les lments suivants :
Lors de l'utilisation d'une instruction RES pour une structure TIMER COUNTER CONTROL L'instruction efface la valeur .ACC les bits d'tat de la commande la valeur .ACC les bits d'tat de la commande la valeur .POS les bits d'tat de la commande
ATTENTION
!
Indicateurs d'tat arithmtique : non affects Conditions d'erreur : aucune Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai pendant la post-scrutation
Comme l'instruction RES efface la valeur .ACC, le bit .DN et le bit .TT, n'utilisez pas cette instruction pour rinitialiser un temporisateur TOF.
Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction RES rinitialise la structure indique. L'tat de sortie de la ligne est rgl sur vrai. L'tat de sortie de la ligne est rgl sur faux.
2-36
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Exemples :
Exemple Description Si activ, rinitialise timer_3.
Chapitre
Introduction
Les instructions d'entre/de sortie lisent ou crivent, soit des donnes vers ou partir de l'automate, soit un bloc de donnes vers ou partir d'un autre module sur un autre rseau.
Utilisez cette instruction MSG GSV SSV Disponible dans ces langages logique relais texte structur logique relais texte structur logique relais texte structur Voir page 3-2 3-30 3-30
Si vous voulez changer des donnes avec un autre module obtenir des informations sur l'tat de l'automate rgler les informations sur l'tat de l'automate
3-2
Message (MSG)
Oprandes :
L'instruction MSG crit ou lit un bloc de donnes de faon asynchrone vers un autre module sur un rseau.
Logique relais
Oprande Contrle de message Type MESSAGE Format point Description structure de message
Texte structur
MSG(MessageControl);
Les oprandes sont les mmes que ceux de l'instruction MSG en logique relais.
Structure MESSAGE
Mnmonique .FLAGS Type de donnes INT Description Le membre .FLAGS permet l'accs aux membres d'tat (bits) via un mot de 16 bits. Ce bit 2 4 5 6 7 8 9 est le membre .EW .ER .DN .ST .EN .TO .EN_CC
Important : la rinitialisation des bits d'tat MSG pendant que MSG est actif peut perturber les communications. .ERR .EXERR .REQ_LEN .DN_LEN .EW .ER .DN .ST .EN INT INT INT INT BOOL BOOL BOOL BOOL BOOL Si le bit .ER est activ, le mot de code d'erreur identifie les codes d'erreur pour l'instruction MSG. Le mot de code d'erreur tendu donne des informations de code d'erreur supplmentaires pour certains codes d'erreur. La longueur requise indique le nombre de mots que l'instruction de message tente de transfrer. La longueur de fin indique le nombre de mots ayant effectivement t transfrs. Le bit d'activation en attente est activ lorsque l'automate dtecte qu'une demande de message est entre dans la file d'attente. L'automate rinitialise le bit .EW lorsque le bit .ST est activ. Le bit d'erreur est activ lorsque l'automate dtecte qu'un transfert a chou. Le bit .ER est rinitialis au passage de l'tat d'entre de la ligne de faux vrai suivant. Le bit de fin est activ lorsque la dernire trame du message est transfre avec succs. Le bit .DN est rinitialis au passage de l'tat d'entre de la ligne de faux vrai suivant. Le bit de dbut est activ lorsque l'automate commence l'excution de l'instruction MSG. Le bit .ST est rinitialis lorsque le bit .DN ou le bit .ER est activ. Le bit d'activation est activ lorsque l'tat d'entre de la ligne passe vrai et reste activ jusqu' ce que le bit .DN ou le bit .ER soit activ et que l'tat d'entre de la ligne soit faux. Si l'tat d'entre de la ligne passe faux, mais si le bit .DN et le bit .ER sont effacs, le bit .EN reste activ.
3-3
Description Si vous activez le bit .TO manuellement, l'automate arrte de traiter le message et active le bit .ER. Le bit d'activation de cache dtermine la gestion de la connexion MSG. Reportez-vous Choix d'une option de cache, page 3-28. Les connexions d'instructions MSG sortant par le port srie ne sont pas mises en mmoire cache, mme si le bit .EN_CC est activ. Utilis par le logiciel RSLogix 5000 pour indiquer l'erreur de chemin dans la bote de dialogue Configuration du message. Pour changer le lien destinataire d'un message DH+ ou CIP avec ID source, rglez le membre sur la valeur requise. Pour changer la station destinataire d'un message DH+ ou CIP avec ID source, rglez le membre sur la valeur requise. Pour changer le lien source d'un message DH+ ou CIP avec ID source, rglez le membre sur la valeur requise. Pour changer le paramtre de classe d'un message gnrique CIP, rglez le membre sur la valeur requise. Pour changer le paramtre d'attribut d'un message gnrique CIP, rglez le membre sur la valeur requise. Pour changer le paramtre d'occurrence d'un message gnrique CIP, rglez le membre sur la valeur requise. Si vous utilisez un astrisque [*] pour dsigner le numro d'lment du tableau local, LocalIndex fournit le numro d'lment. Pour changer le numro d'lment, rglez ce membre sur la valeur requise. Si le message lit les donnes crit les donnes Le tableau local est lment de destination lment source
Pour envoyer le message par un canal diffrent du module 1756-DHRIO, rglez ce membre sur la valeur requise. Utilisez le caractre ASCII A ou B. Pour changer le numro de rack d'un message de bloc-transfert, rglez ce membre sur le numro de rack requis (octal). Pour changer le numro de groupe d'un message de bloc-transfert, rglez ce membre sur le numro de groupe requis (octal). Pour changer le numro d'emplacement d'un message de bloc-transfert, rglez ce membre sur le numro d'emplacement requis (octal). Si le message passe par ce rseau RIO ControlNet Indiquez le numro d'emplacement en
.Path
STRING
Pour envoyer le message vers un automate diffrent, rglez ce membre sur le nouveau chemin. Entrez le chemin en valeurs hexadcimales. N'entrez pas les virgules [,] Par exemple, pour ce chemin : 1, 0, 2, 42, 1, 3, entrez $01$00$02$2A$01$03. Pour naviguer jusqu' un quipement et crer automatiquement une partie de la nouvelle chane ou la nouvelle chane entire, cliquez avec le bouton droit de la souris sur une chane de caractres et choisissez Go to Message Path Editor.
3-4
Mnmonique .RemoteIndex
Description Si vous utilisez un astrisque [*] pour dsigner le numro d'lment du tableau distant, RemoteIndex fournit le numro d'lment. Pour changer le numro d'lment, rglez ce membre sur la valeur requise. Si le message lit les donnes crit les donnes Le tableau distant est lment source lment de destination
.RemoteElement
STRING
Pour indiquer une adresse ou un point diffrent dans l'automate auquel est envoy le message, rglez ce membre sur la valeur requise. Entrez l'adresse ou le point en caractres ASCII. Si le message lit les donnes crit les donnes Le tableau distant est lment source lment de destination
Dpassement de temps pour les messages non connects. La valeur par dfaut est de 30 secondes. Le ConnectionRate multipli par le TimeoutMultiplier produit le dpassement de temps des messages connects. Le temps de connexion par dfaut est de 7,5 secondes. Le multiplicateur de dpassement de temps (TimeoutMultiplier) par dfaut est 0 (ce qui quivaut un facteur de multiplication de 4). Le dpassement de temps par dfaut des messages connects est de 30 secondes (7,5 secondes x 4 = 30 secondes). Pour changer le dpassement de temps, changez le taux de connexion (ConnectionRate) et laissez le multiplicateur de dpassement de temps (TimeoutMultiplier) sa valeur par dfaut.
ATTENTION
L'automate traite les bits .ST, .EW, .DN et .ER de faon asynchrone la scrutation de programme. Pour examiner ces bits en logique relais, copiez le mot .FLAGS dans un point INT et vrifiez les bits partir de l. Dans le cas contraire, des problmes de temporisation peuvent invalider votre application en provoquant des dgts matriels et des blessures corporelles.
3-5
La taille de chaque lment dpend du type de donnes que vous indiquez et du type de message de commande que vous utilisez.
connexion avec .EN_CC = 1
bit .EN
bit .EW
bit .ST
O 1
Description si l'tat d'entre de la ligne est vrai .EN est activ .EW est activ la connexion est ouverte* le message est envoy .ST est activ .EW est effac
O 5
Description le message est envoy .ST est activ .EW est effac le message est termin ou une erreur s'est produite et l'tat d'entre de la ligne est toujours vrai .DN ou .ER est activ .ST est effac la connexion est ferme (si .EN_CC = 0) l'tat d'entre de la ligne passe faux et .DN ou .ER est activ .EN est effac
le message est termin ou une erreur s'est produite et l'tat d'entre de la ligne est faux .DN ou .ER est activ .ST est effac la connexion est ferme (si .EN_CC = 0) .EN est effac (l'tat d'entre de la ligne est faux) l'tat d'entre de la ligne est vrai et .DN ou .ER tait prcdemment activ .EN est activ .EW est activ la connexion est ouverte* .DN ou .ER est effac
Excution :
Condition pendant la pr-scrutation Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. Action du texte structur Aucune.
3-6
Condition
si l'tat d'entre de la ligne est faux (ne s'applique pas au texte structur)
bit .EW = 1 examine le bit .EW
bit .EN = 0
bit .EW = 0
bit .ST = 0
bit .DN = 0
bit .ER = 0
non
bit .DN = 1 examine le bit .DN oui connexion du module tablie le bit .EN est effac excute la demande de message non
bit .DN = 0
bit .ER = 1 examine le bit .ER le bit .EW est activ le bit .ER est activ
bit .ER = 0
fin
L'instruction est excute. L'tat de sortie de la ligne est rgl sur vrai.
Action du texte structur EnableIn est toujours activ. L'instruction est excute.
3-7
bit .EW = 0
bit .EW = 0
bit .ST = 1
bit .ST = 0
bit .ST = 0 les bits .EW, .ST, .TO, .DN et .ER sont effacs le bit .EN est activ
bit .DN = 0
le bit .EN est activ bit .ER = 0 oui chemin du module correct oui non
oui connexion du module tablie les bits .EW, .ST, .TO, .DN et .ER sont effacs le bit .EN est activ excute la demande de message le bit .EW est activ le bit .ER est activ
non
fin
pendant la post-scrutation
Aucune.
3-8
Codes d'erreur
Le logiciel RSLogix 5000 n'affiche pas toujours la description complte.
Code d'erreur (hex) 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F 0010 0011 0012 0013 0014 0015 001A 001B 001C 001D 001E 001F 0022 0025 0026 0027 0028 Description Echec de la connexion (voir les codes d'erreur tendus) Ressources insuffisantes Valeur incorrecte Erreur de syntaxe ESE (voir les codes d'erreur tendus) Destination inconnue, classe non accepte, occurrence non dfinie ou lment de structure non dfini (voir les codes d'erreur tendus) Espace de trame insuffisant Connexion perdue Service non accept Erreur dans le segment de donnes ou valeur d'attribut incorrecte Erreur de liste d'attributs L'tat existe dj Conflit de modle d'objet L'objet existe dj Attribut non rglable Permission refuse Conflit d'tat du dispositif La rponse ne peut tre insre Primitive du fragment Donnes de commande insuffisantes Attribut non accept Trop de donnes Demande de passerelle trop longue Rponse de passerelle trop longue Manque de liste d'attributs Liste d'attributs incorrecte Erreur de service intgr Panne lie la connexion (voir les codes d'erreur tendus) Rponse reue incorrecte Erreur de segment cl Erreur ESE incorrecte Attribut inattendu dans la liste Erreur DeviceNet - identit de membre incorrecte Affichage dans le logiciel identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description identique la description
3-9
Code d'erreur (hex) 0029 00D1 00FB 00FC 00FD 00FE 00FF
Description Erreur DeviceNet - membre non rglable Le module n'est pas en tat de marche Port de message non accept Types de donnes de message non accept Message non initialis Timeout de message Erreur gnrale (voir les codes d'erreur tendus)
Affichage dans le logiciel identique la description erreur inconnue erreur inconnue erreur inconnue erreur inconnue erreur inconnue erreur inconnue
3-10
Les codes suivants sont les codes d'erreur tendus pour le code d'erreur 001F.
Code d'erreur tendu (hex) 0203 Description Timeout de connexion
Les codes suivants sont les codes d'erreur tendus pour les codes d'erreur 0004 et 0005.
Code d'erreur tendu (hex) 0000 0001 Description Insuffisance de mmoire pour l'tat tendu Insuffisance d'occurrences pour l'tat tendu
Les codes suivants sont les codes d'erreur tendus pour le code d'erreur 00FF.
Code d'erreur tendu (hex) 2001 2002 2018 201B 201C 2100 2101 2102 2103 2104 2105 2106 2107 Description ESE excessif Mauvaise valeur de paramtre Rejet de smaphore Taille trop petite Taille incorrecte Echec de privilge Position de commutateur cl incorrecte Mot de passe incorrect Aucun mot de passe attribu Adresse hors limites Adresse et quantit hors limites Donnes utilises Type incorrect ou non accept 2109 210A 210B 210E 210F 2110 2111 2112 2113 2114 Code d'erreur tendu (hex) 2108 Description Automate en mode de transfert ou de chargement Essai de changement des dimensions de tableau Nom de symbole incorrect Le symbole n'existe pas Echec de la recherche La tche ne peut commencer Ecriture impossible Lecture impossible Sous-programme partag non modifiable Automate en mode de dfaut Mode Run verrouill
3-11
Commande ou format non admis de la part du processeur local Module de communication hors service Station dcentralise manquante, dconnectez ou mettez hors tension Processeur connect mais en dfaut (matriel) Mauvais numro de station La fonction demande n'est pas disponible Le processeur est en mode Program Le fichier de compatibilit du processeur n'existe pas La station dcentralise ne peut mettre la commande dans le buffer Le processeur est en cours de chargement et n'est pas accessible Le processeur a incorrectement converti l'adresse Adresse incomplte Adresse incorrecte Format d'adresse non admis - symbole non trouv Format d'adresse non admis - le symbole a 0 ou plus de caractres que le nombre maximum accept par le dispositif Le fichier d'adresses n'existe pas dans le processeur cible Le fichier de destination est trop petit pour le nombre de mots demand La demande ne peut tre excute La situation a chang pendant l'opration multitrame Les donnes ou le fichier sont trop grands Mmoire non disponible Le processeur cible ne peut mettre les informations demandes en trames
Erreur de privilge ; accs refus La fonction demande n'est pas disponible La demande est redondante La commande ne peut tre excute Dpassement ; dpassement d'histogramme Pas d'accs Le type de donnes demand ne correspond pas aux donnes disponibles Paramtres de commande incorrects La rfrence d'adresse existe dans une zone efface Echec de l'excution de la commande pour une raison inconnue Dpassement d'histogramme de PLC-3 Erreur de conversion des donnes Le scrutateur n'est pas disponible pour communiquer avec un adaptateur de rack 1771 L'adaptateur n'est pas disponible pour communiquer avec le module La rponse du module 1771 n'est incorrecte Etiquette en double Le propritaire du fichier est actif - le fichier est utilis Le propritaire du programme est actif - quelqu'un effectue un chargement ou des modifications en ligne Le fichier disque est protg en criture ou non accessible pour toute autre raison (hors ligne uniquement) Le fichier disque est utilis par une autre application Mise jour non effectue (hors ligne uniquement)
F01C
F01D
F009 F00A
3-12
Le scrutateur a reu une demande de rinitialisation des canaux d'E/S dcentralises alors qu'il erreur inconnue y avait des blocs-transferts en attente Les files d'attente pour les bloc-transferts distance sont pleines Aucun canal de communication n'est configur pour le rack ou l'emplacement demand Aucun canal de communication n'est configur pour les E/S dcentralises Le timeout du bloc-transfert, dfini dans l'instruction, a t dpass avant la fin Erreur du protocole de bloc-transfert - bloc-transfert non sollicit Le module de bloc-transfert a demand une longueur diffrente de celle de l'instruction de bloc-transfert associe Le checksum des donnes de lecture du bloc-transfert est faux Un transfert incorrect de donnes d'criture du bloc-transfert a t effectu entre l'adaptateur et le module de bloc-transfert La taille du bloc-transfert plus celle de l'index de la table des donnes de bloc-transfert est suprieure la taille du fichier de la table des donnes de bloc-transfert erreur inconnue erreur inconnue erreur inconnue erreur inconnue erreur inconnue erreur inconnue erreur inconnue erreur inconnue erreur inconnue
Les donnes de bloc-transfert ont t perdues en raison d'un mauvais canal de communication erreur inconnue
3-13
Spcification de la configuration
Une fois que vous avez entr l'instruction MSG et indiqu la structure MESSAGE, utilisez l'onglet Configuration de Message dans le logiciel de programmation pour dfinir les dtails du message.
Les dtails que vous configurez dpendent du type de message que vous slectionnez.
42976
Si le dispositif cible est un Automate Logix5000 Module d'E/S que vous configurez avec le logiciel RSLogix 5000 Automate PLC-5
Slectionnez l'un de ces types de message Lecture de table de donnes CIP Ecriture de table de donnes CIP Reconfiguration du module CIP gnrique Ecriture de type PLC5 Ecriture de type PLC5 Lecture de gamme de mots PLC5 Ecriture de gamme de mots PLC5
Ecriture de type SLC Ecriture de type SLC Bloc-transfert lecture Bloc-transfert criture Ecriture de type PLC3 Ecriture de type PLC3 Lecture de gamme de mots PLC3 Ecriture de gamme de mots PLC3
Processeur PLC-2
3-21
3-14
Elment de destination
3-15
Logique relais
Texte structur
IF reconfigure[5] AND NOT reconfigure[6]THEN Local:4:C.Ch0Config.HAlarmLimit := 60; IF NOT change_Halarm.EN THEN MSG(change_Halarm); END_IF; END_IF; reconfigure[6] := reconfigure[5];
3-16
tag_name[4] Destination Rinitialiser les fusibles lectroniques sur un module de sorties TOR Type de message Type de service Source laisser en blanc CIP gnrique Rinitialiser le fusible lectronique
tag name de type DINT Ce point reprsente un masque de bit des points pour la rinitialisation des fusibles. laisser en blanc CIP gnrique Rinitialiser les diagnostics verrouills (I) tag_name de type DINT Ce point reprsente un masque de bit des points pour la rinitialisation des diagnostics. CIP gnrique Rinitialiser les diagnostics verrouills (O) tag_name de type DINT Ce point reprsente un masque de bit des points pour la rinitialisation des diagnostics. CIP gnrique Slectionnez l'alarme que vous voulez dverrouiller : Dverrouiller toutes les alarmes (I) Dverrouiller l'alarme haute analogique (I) Dverrouiller l'alarme haute haute analogique (I) Dverrouiller l'alarme basse analogique (I) Dverrouiller l'alarme basse basse analogique (I) Dverrouiller l'alarme de variation (I) Canal de l'alarme que vous voulez dverrouiller
Destination Rinitialiser les diagnostics verrouills sur un module d'entres Type de message Type de service Source
Instance
3-17
Tapez ou slectionnez CIP gnrique Slectionnez l'alarme que vous voulez dverrouiller : Dverrouiller toutes les alarmes (O) Dverrouiller l'alarme haute (O) Dverrouiller l'alarme basse (O) Dverrouiller l'alarme d'acclration ou de dclration (O) Canal de l'alarme que vous voulez dverrouiller
Instance
Le tableau suivant indique les types de donnes utiliser avec les messages de lecture et d'criture de type PLC5.
Tableau 3.1 Types de donnes pour les messages de lecture et d'criture de type PLC5 Pour ce type de donnes PLC-5 B F N Utilisez ce type de donnes Logix5000 INT REAL INT DINT (n'crivez des valeurs DINT sur un automate PLC-5 que si la valeur est 32 768 et 32 767.) S ST INT STRING
3-18
Les commandes de type lecture et criture fonctionnent galement avec les processeurs SLC 5/03 (OS303 et ultrieur), SLC 5/04 (OS402 et ultrieur) et SLC 5/05. Le diagramme suivant montre comment les commandes de type lecture directe et lecture ordonne diffrent. L'exemple utilise des commandes de lecture d'un processeur PLC-5 vers un automate Logix5000.
Commande de lecture directe mots de 16 bits dans processeur PLC-5 mots de 32 bits dans automate Logix5000 Commande de lecture ordonne mots de 16 bits dans processeur PLC-5 mots de 32 bits dans automate Logix5000
Les commandes de lecture ordonne remplissent le point de destination de faon contigu. La structure et la valeur des donnes changent selon le type des donnes de destination.
3-19
Pour configurer un message de blocs-transferts, observez les directives suivantes : les points source (pour BTW) et destination (pour BTR) doivent tre suffisamment longs pour accepter les donnes demandes, except pour les structures MESSAGE, AXIS et MODULE ; prcisez la quantit de nombres entiers de 16 bits (INT) envoyer ou recevoir. Vous pouvez indiquer de 0 64 nombres entiers.
Si vous voulez que le module de bloc-transfert dtermine la quantit de nombres entiers de 16 bits envoyer (BTR). l'automate envoie 64 nombres entiers (BTW). Indiquez 0 comme nombre d'lments
3-20
Le diagramme suivant montre comment les commandes de type lecture directe et lecture ordonne diffrent. L'exemple utilise des commandes de lecture d'un processeur PLC-3 vers un automate Logix5000.
Commande de lecture directe mots de 32 bits dans automate Logix5000 Commande de lecture ordonne mots de 32 bits dans automate Logix5000
Les commandes de lecture ordonne remplissent le point de destination de faon contigu. La structure et la valeur des donnes changent selon le type des donnes de destination.
3-21
Le message de transfert utilise des mots de 16 bits : assurez-vous que le point du Logix5000 stocke les donnes transfres de faon approprie (gnralement sous forme de tableau INT).
3-22
Les exemples suivants montrent des points source et destination et des lments pour diffrentes combinaisons dautomates. Pour des instructions MSG ayant pour origine un automate Logix5000 et crivant dans un autre automate :
Vous pouvez utiliser un point d'alias pour le point source (dans l'automate Logix5000 d'origine). Vous ne pouvez pas utiliser un alias pour le point de destination. La destination doit tre un point de base. Logix5000 PLC-5 Logix5000 SLC point source lment de destination point source lment de destination array_1[0] N7:10 array_1[0] 010
Vous pouvez utiliser un point d'alias pour le point source (dans l'automate Logix5000 d'origine). Logix5000 PLC-2
Pour des instructions MSG ayant pour origine un automate Logix5000 et lisant partir d'un autre automate :
Chemin de message Logix5000 Logix5000 Exemple de source et de destination point source point de destination array_1[0] array_2[0]
Vous ne pouvez pas utiliser un point d'alias pour le point source. La source doit tre un point de base. Vous pouvez utiliser un point d'alias pour le point de destination (dans l'automate Logix5000 d'origine). Logix5000 PLC-5 Logix5000 SLC lment source point de destination lment source point de destination N7:10 array_1[0] 010 array_1[0]
Vous pouvez utiliser un point d'alias pour le point de destination (dans l'automate Logix5000 d'origine). Logix5000 PLC-2
3-23
Dfinition de la communication
Lorsque vous configurez une instruction MSG, vous prcisez ces dtails dans l'onglet Communication.
43008
peer_controller
3-24
Certains modules ou quipements de communication distants ne sont pas disponibles pour la configuration des E/S de l'automate. Si le cas ce prsente, compltez le chemin comme suit :
1. Utilisez le bouton Naviguer (Browse) pour slectionner le module de communication local. 2. Dans la bote de texte Chemin (Path), tapez le port partir duquel le message part du module. 3. Tapez l'adresse du module suivant sur le chemin vers la destination. 4. Tapez les combinaisons de port et d'adresse supplmentaires, si ncessaire. local_module,port,address,port,address
O port Pour fond de panier de tout automate ou module 1756 port DF1 dun automate Logix5000 port ControlNet dun module 1756-CNB port Ethernet d'un module 1756-ENBx ou -ENET port DH+ via le canal A dun module 1756-DHRIO port DH+ via le canal B dun module 1756-DHRIO address fond de panier ControlLogix rseau DF1 rseau ControlNet rseau DH+ 3 le numro de l'emplacement l'adresse de station (0-254) le numro de station (1-99 dcimal) 8# suivi du numro de station (1-77 octal) Par exemple, pour dfinir l'adresse de station octale de 37, tapez 8#37. Vous pouvez indiquer un module sur un rseau Ethernet/IP l'aide d'un des formats suivants : adresse IP adresse IP:Port nom DNS nom DNS:Port (ex. : 130.130.130.5) (ex. : 130.130.130.5:24) (ex. : tanks) (ex. : tanks:24) Est 1 2
rseau EtherNet/IP
3-25
Pour les messages de bloc-transfert, ajoutez les modules suivants la configuration des E/S de l'automate :
Pour les blocs-transferts sur ce rseau ControlNet RIO Ajoutez ces modules la configuration des E/S module de communication local (ex. : module 1756-CNB) module adaptateur distant (ex. : module 1771-ACN) module de communication local (ex. : module 1756-DHRIO) un module adaptateur distant (ex. : module 1771-ASB) pour chaque rack, ou partie de rack, dans un chssis module de bloc-transfert (facultatif)
Les pages suivantes donnent des exemples de chemins : sur ControlNet, page 3-25 ; sur EtherNet/IP, page 3-26 ; pour un message DH+, page 3-26.
EXEMPLE
MESSAGE
rseau ControlNet
42042
3-26
EXEMPLE
MESSAGE
interrupteur
Chemin : Local_ENB,2,127.127.127.12
O Local_ENB 2 127.127.127.12 Est le nom du module 1756-ENBx dans le chssis local le port Ethernet du module 1756-ENBx dans le chssis local l'adresse IP de l'automate SLC 5/05
EXEMPLE
MESSAGE
rseau DH+
Chemin : Local_DHRIO o : Local_DHRIO est le nom du module 1756-DHRIO dans le mme chssis que l'automate qui envoie le message.
3-27
S'il n'y a qu'une liaison DH+ et que vous n'avez pas utilis le logiciel RSLinx pour configurer le module DH/RIO pour les liaisons dcentralises, indiquez 0 pour Lien source et Lien destinataire. Application sur une station de travail qui reoit un message non sollicit achemin via un rseau Ethernet/IP ou ControlNet l'aide de RSLinx CIP avec ID source (Ceci permet l'application de recevoir des donnes d'un automate.) Lien source : Lien destinataire : Station destinataire : Identificateur distant de la rubrique dans le logiciel RSLinx Identificateur de liaison virtuelle rgl dans RSLinx (0-65535) Identificateur de destination (0-77 octal) fourni par l'application RSLinx Pour une rubrique DDE dans RSLinx, utilisez 77.
Le numro d'emplacement de l'automate ControlLogix est utilis comme station source. Module de bloc-transfert sur un rseau d'E/S dcentralises RIO Canal : Rack Groupe Emplacement Module de bloc-transfert sur rseau ControlNet ControlNet Emplacement Canal A ou B du module 1756-DHRIO connect au rseau RIO Numro de rack (octal) du module Numro de groupe du module Numro de l'emplacement dans lequel est le module Numro de l'emplacement dans lequel est le module
3-28
1
2
Seuls certains types de modules cibles requirent une connexion. N'utilisez la cache que si le module cible requiert une connexion.
Utilisez la procdure suivante pour choisir l'option de cache d'un message qui peut tre mis en cache. 1. Votre logique change-t-elle le chemin d'un message ? (une instruction MSG communique-t-elle avec plus d'un quipement ?)
Si Oui Non Action A. Dsactivez la case Connexion cache (Cache Connection). B. Sautez l'tape 2. Passez l'tape 2.
3-29
Combien d'quipements requirent des instructions de bloc-transfert ? Si 16 quipements maximum plus de 16 quipements Action Laissez la case Connexion cache slectionne (coche). 1. Slectionnez 16 quipements qui requirent les mises jours les plus frquentes. 2. Ce message va-t-il vers l'un de ces quipements ? Si Oui Non Action Laissez la case Connexion cache coche. Dsactivez la case Connexion cache.
3-30
Les instructions GSV/SSV rcuprent et activent les donnes systme de lautomate stockes dans les objets.
Logique relais
Type
Description nom de l'objet nom de l'objet spcifique, lorsque celui-ci a besoin d'un nom attribut de l'objet le type des donnes dpend de l'attribut slectionn destination des donnes de l'attribut
point
Source (SSV)
point
point contenant les donnes que vous voulez copier dans l'attribut
Texte structur
GSV(ClassName,InstanceName,AttributeName,Dest); SSV(ClassName,InstanceName,AttributeName,Source);
Les oprandes de texte structur sont les mmes que pour les instructions GSV et SSV en logique relais.
3-31
Lorsque vous entrez une instruction GSV/SSV, le logiciel de programmation affiche les classes dobjets valables, les noms dobjets et les noms dattributs pour chaque instruction. Pour linstruction GSV, vous pouvez obtenir des valeurs pour tous les attributs disponibles. Pour l'instruction SSV, le logiciel n'affiche que les attributs pouvant tre activs (SSV). Utilisez les instructions GSV/SSV avec prcaution. La modification des objets peut entraner un fonctionnement inattendu de lautomate ou des blessures.
ATTENTION
!
Indicateurs d'tat arithmtique : non affects Conditions d'erreur :
Si la taille de la source ou de la destination est trop petite, l'instruction n'est pas excute et un dfaut mineur est enregistr. La section suivante, Objets GSV/SSV, dfinit les attributs de chaque objet et leurs types de donnes. Par exemple, l'attribut MajorFaultRecord de l'objet Programme ncessite un type de donnes DINT[11].
Un dfaut mineur se produit si l'adresse d'objet est incorrecte l'objet indiqu n'accepte pas GSV/SSV l'attribut est incorrect les informations fournies ne sont pas suffisantes pour une instruction SSV la destination GSV n'tait pas assez longue pour contenir les donnes demandes
Type du dfaut 4 4 4 4 4
Code du dfaut 5 6 6 6 7
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai si EnableIn est activ pendant l'excution de l'instruction pendant la post-scrutation Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute. L'tat de sortie de la ligne est rgl sur vrai. rcupre ou active la valeur indique. L'tat de sortie de la ligne est rgl sur faux. Action du texte structur Aucune. EnableIn est toujours activ. L'instruction est excute. rcupre ou active la valeur indique. Aucune.
3-32
Objets GSV/SSV
Lorsque vous entrez une instruction GSV/SSV, vous indiquez lobjet et lattribut auquel vous voulez accder. Dans certains cas, il y a plus dune occurrence du mme type dobjet, vous devrez peut-tre donc indiquer aussi le nom de lobjet. Par exemple, il peut y avoir plusieurs tches dans votre application. Chaque tche a son propre objet TASK auquel vous accdez par le nom de la tche. Pour l'instruction GSV, seule la taille de donnes indique est copie vers la destination. Par exemple, si l'attribut est dfini comme SINT et la destination est DINT, seuls les 8 bits infrieurs de la destination DINT sont mis jour, les autres 24 bits restent inchangs.
ATTENTION
!
AXIS CONTROLLER CONTROLLERDEVICE CST DF1 FAULTLOG MESSAGE MODULE MOTIONGROUP PROGRAM ROUTINE SERIALPORT TASK WALLCLOCKTIME
3-33
ProductCode
INT
GSV
Identifie la version du produit. L'affichage doit tre hexadcimal. L'octet de poids faible contient la rvision majeure ; l'octet de poids fort contient la rvision mineure. Numro de srie du dispositif. Le numro de srie est attribu lors de la construction du dispositif.
SerialNumber
DINT
GSV
3-34
Attribut Status
Instruction GSV
Description Les bits identifient l'tat : Les bits 3 0 sont rservs Bits d'tat du dispositif Bits 7-4 : Signification : 0000 rserv 0001 mise jour par mmoire flash en cours 0010 rserv 0011 rserv 0100 mmoire flash dfectueuse 0101 en dfaut 0110 excution 0111 programme Bits d'tat de dfaut Bits 11-8 : Signification : 0001 dfaut mineur rcuprable 0010 dfaut mineur non rcuprable 0100 dfaut majeur rcuprable 1000 dfaut majeur non rcuprable Bits d'tat propres au Logix5000 Bits 13-12 : Signification : 01 commutateur cl sur Run 10 commutateur cl sur Program 11 commutateur cl sur Remote Bits 15-14 : Signification : 01 l'automate change de mode 10 mode de dbogage si l'automate est en mode Run
Type Vendor
INT INT
GSV GSV
Identifie le dispositif comme automate. Automate = 14 Identifie le fournisseur du dispositif. Allen-Bradley = 0001
3-35
2 3
4 5 6
7 8-9
Valeur en cours du temporisateur. DINT[0] contient les 32 bits infrieurs ; DINT[1] contient les 32 bits suprieurs. La source de temporisateur est ajuste pour correspondre la valeur fournie par les services de mise jour et par la synchronisation du rseau de communication local. L'ajustement est soit une monte jusqu' la valeur requise, soit un rglage immdiat cette valeur, tel qu'indiqu dans l'attribut CurrentStatus.
3-36
INT[19]
GSV
point point DF1esclave DF1matre signature (0x0043)signature (0x0042)signature (0x0044) bits de modembits de modembits de modem trames envoyestrames envoyestrames envoyes trames reuestrames reuestrames reues trames non dlivrestrames non dlivrestrames non dlivres inutilismessages ressaysmessages ressays NAK reusNAK reusinutilis ENQ reustrames d'appel reuesinutilis trames dfectueuses non acquittestrames dfectueuses non acquittestrames dfectueuses non acquittes pas de mmoire envoye NAKpas de mmoire non acquitteinutilis trames reues en doubletrames reues en doubletrames reues en double mauvais caractres reusinutilisinutilis comptage de rcupration DCDcomptage de rcupration DCDcomptage de rcupration DCD comptage de modem perducomptage de modem perducomptage de modem perdu inutilisinutilisdure de scrutation prioritaire maximum inutilisinutilisdernire dure de scrutation prioritaire inutilisinutilisdure de scrutation normale maximum inutilisinutilisdernire dure de scrutation normale ENQ envoysinutilisinutilis SINT GSV Permet la dtection des messages en double. Valeur : Signification : 0 dtection de messages en double dsactive autre que zro dtection de message en double dsactive Active la fonctionnalit de rponse intgre (point point uniquement). Valeur : Signification : 0 lanc uniquement aprs la rception d'une rponse (valeur par dfaut) 1 activ sans condition Le nombre de demandes (ENQ) envoyer aprs un timeout ACK (point point uniquement). Les valeurs correctes vont de 0 127. La valeur par dfaut est 3. Active la suppression des transmissions EOT en rponse aux trames d'appel (esclave uniquement). Valeur : Signification : 0 suppression EOT dsactive (dsactiv) autre que zro suppression EOT active Indique le schma de dtection des erreurs. Valeur : Signification : 0 BCC (valeur par dfaut) 1 CRC
DuplicateDetection
EmbeddedResponseEnable
SINT
GSV
ENQTransmitLimit
SINT
GSV
EOTSuppression
SINT
GSV
ErrorDetection
SINT
GSV
3-37
Attribut MasterMessageTransmit
Instruction GSV
Description Valeur en cours de la transmission de message matre (matre uniquement). Valeur : Signification : 0 entre appels de station 1en squence d'appel (au lieu du numro de station du matre) La valeur par dfaut est 0. Le nombre de NAK reus en rponse un message avant l'arrt de la transmission (communication point point uniquement). Les valeurs correctes vont de 0 127. La valeur par dfaut est 3. Nombre de stations appeler dans le tableau d'appel normal des stations aprs l'appel de toutes les stations dans le tableau d'appel prioritaire des stations (matre uniquement). Les valeurs correctes vont de 0 255. La valeur par dfaut est 0. Mode d'appel en cours (matre uniquement). Valeur : Signification : 0 bas sur message, mais n'autorise pas les esclaves initier des messages 1 bas sur message, et autorise les esclaves initier des messages (valeur par dfaut) 2 standard, transfert de message unique par scrutation de station 3 standard, transfert de multiples messages par scrutation de station La valeur par dfaut est 1. La dure (agissant comme matre) d'attente aprs la rception d'un ACK avant d'appeler l'esclave pour une rponse (matre uniquement). Les valeurs correctes vont 0 65 535. Dlai par intervalles de 20 ms. La valeur par dfaut est de 5 intervalles (100 ms). Adresse de station en cours du port srie. Les valeurs correctes vont de 0 254. La valeur par dfaut est 0. Dure (en ms) pendant laquelle l'esclave attend que le matre appelle avant de dclarer ne pas pouvoir transmettre, parce que le matre est inactif (esclave uniquement). Les valeurs correctes vont de 0 32 767. Dlai par intervalles de 20 ms. La valeur par dfaut est de 3000 intervalles (1 minute). Nombre d'envois d'un message sans accus de rception en retour (matre et esclave uniquement). Les valeurs correctes vont de 0 127. La valeur par dfaut est 3. Valeur en attente pour l'attribut ACKTimeout. Valeur en attente pour l'attribut DuplicateDetection. Valeur en attente pour l'attribut EmbeddedResponse. Valeur en attente pour l'attribut ENQTransmitLimit. Valeur en attente pour l'attribut EOTSuppression. Valeur en attente pour l'attribut ErrorDetection. Valeur en attente pour l'attribut NormalPollGroupSize. Valeur en attente pour l'attribut MasterMessageTransmit. Valeur en attente pour l'attribut NAKReceiveLimit. Valeur en attente pour l'attribut PollingMode.
NAKReceiveLimit
SINT
GSV
NormalPollGroupSize
INT
GSV
PollingMode
SINT
GSV
ReplyMessageWait
DINT
GSV
StationAddress SlavePollTimeout
INT DINT
GSV GSV
TransmitRetries
SINT
GSV
PendingACKTimeout PendingDuplicateDetection PendingEmbeddedResponse Enable PendingENQTransmitLimit PendingEOTSuppression PendingErrorDetection PendingNormalPollGroupSize PendingMasterMessage Transmit PendingNAKReceiveLimit PendingPollingMode
DINT SINT SINT SINT SINT SINT INT SINT SINT SINT
SSV SSV SSV SSV SSV SSV SSV SSV SSV SSV
3-38
Description Valeur en attente pour l'attribut ReplyMessageWait. Valeur en attente pour l'attribut StationAddress. Valeur en attente pour l'attribut SlavePollTimeout. Valeur en attente pour l'attribut TransmitRetries.
Pour attribuer des valeurs un des attributs DF1 en attente : 1. Utilisez une instruction SSV pour rgler la valeur de l'attribut en attente. Vous pouvez attribuer autant d'attributs en attente que vous le voulez en utilisant une instruction SSV pour chacun d'eux. 2. Utilisez une instruction MSG pour attribuer la valeur. L'instruction MSG s'applique chaque attribut en attente que vous rglez. Configurez l'instruction MSG comme suit :
Onglet de configuration MSG Configuration Champ Type de message Code de service Type d'objet Attribut de l'objet Source Nombre d'lments Destination Communication Chemin Valeur CIP gnrique 0d hex a2 laisser en blanc laisser en blanc 0 laisser en blanc chemin de communication vers soi-mme (1,s o s = numro d'emplacement de l'automate)
Identificateur de l'objet 1
3-39
MinorFaultBits
DINT
GSV SSV
3-40
ConnectionRate MessageType
DINT SINT
Port
SINT
TimeoutMultiplier
SINT
GSV SSV
UnconnectedTimeout
DINT
GSV SSV
Pour changer l'attribut d'un MESSAGE, procdez comme suit : 1. Utilisez l'instruction GSV pour obtenir l'attribut MessageType et sauvegardez-le dans un point. 2. Utilisez une instruction SSV pour mettre MessageType 0. 3. Utilisez une instruction SSV pour rgler l'attribut du MESSAGE que vous souhaitez modifier. 4. Utilisez l'instruction SSV pour remettre l'attribut MessageType sa valeur d'origine, obtenue l'tape 1.
3-41
Logique relais
msg_path 0
GSV Get System Value Class name MESSAGE Instance name msg_1 Attribute Name MessageType Dest msg_1_type 2
SSV Set System Value Class name MESSAGE Instance name msg_1 Attribute Name MessageType Source tag_a 0
SSV Set System Value Class name MESSAGE Instance name msg_1 Attribute Name ConnectionPath Source msg_1_path[0] 6
SSV Set System Value Class name MESSAGE Instance name msg_1 Attribute Name MessageType Source msg_1_type 2
msg_1.EN /
MSG Type - CIP Data Table Write Message Control msg_1 ...
EN DN ER
Texte structur
IF msg_path THEN GSV(MESSAGE,msg_1,MessageType,msg_1_type); SSV(MESSAGE,msg_1,MessageType,tag_a); SSV(MESSAGE,msg_1,ConnectionPath,msg_1_path[0]); SSV(MESSAGE,msg_1,MessageType,msg_1_type); END_IF; IF NOT msg_1.EN THEN MSG(msg_1); END_IF;
3-42
3-43
Description Fournit le numro d'instance de cet objet MODULE. Indique l'tat en cours des voyants d'E/S sur l'avant de l'automate. Valeur : Signification : 0 Voyant teint : aucun objet MODULE n'est configur pour l'automate (il n'y a aucun module dans la section de configuration des E/S de la fentre d'organisation de l'automate). 1 Rouge clignotant : aucun des objets MODULE ne fonctionne. 2 Vert clignotant : au moins un objet MODULE ne fonctionne pas. 3 Vert fixe : tous les objets Module fonctionnent. Remarque : vous n'entrez pas de nom d'objet avec cet attribut parce qu'il sert l'ensemble des modules. Indique le mode en cours de l'objet MODULE. Bit : Signification : 0 Lorsqu'il est activ, gnre un dfaut majeur si l'une des connexions de l'objet MODULE se met en dfaut pendant que l'automate est en mode Run. 2 Lorsqu'il est activ, fait passer l'objet MODULE l'tat d'inhibition (blocage) aprs avoir coup toutes les connexions avec le module.
Mode
INT
GSV SSV
3-44
Type de donnes : Style : Description : DINTDcimal32 bits infrieurs de la valeur d'horodatage du dfaut DINT Dcimal 32 bits suprieurs de la valeur d'horodatage du dfaut INT Dcimal type du dfaut (programme, E/S, etc.) INT Dcimal code unique pour le dfaut (dpend du type du dfaut) DINT[8] Hexadcimal information particulire sur le dfaut (dpend du type et du code du dfaut) DINT DINT[11] GSV SSV GSV SSV Style : Dcimal Dcimal Dcimal Dcimal Hexadcimal GSV SSV Dure d'excution maximale enregistre pour ce programme. La dure est en microsecondes. Enregistre les dfauts mineurs pour ce programme. Il est recommand de crer une structure utilisateur pour simplifier l'accs l'attribut MinorFaultRecord : Description : 32 bits infrieurs de la valeur d'horodatage du dfaut 3 bits suprieurs de la valeur d'horodatage du dfaut type du dfaut (programme, E/S, etc.) code unique pour le dfaut (dpend du type du dfaut) information particulire sur le dfaut (dpend du type et du code du dfaut) inutilis (rserv une utilisation future)
3-45
DataBits
SINT
GSV
Parity
SINT
GSV
RTSOffDelay
INT
GSV
Dlai d'arrt de la ligne RTS aprs la transmission du dernier caractre. Les valeurs correctes vont de 0 32 767. Dlai par intervalles de 20 ms. La valeur par dfaut est de 0 ms. Dlai de transmission du premier caractre d'un message aprs le dmarrage de la ligne RTS. Les valeurs correctes vont de 0 32 767. Dlai par intervalles de 20 ms. La valeur par dfaut est de 0 ms. Indique le nombre de bits d'arrt. Valeur : Signification : 1 1 bit d'arrt (valeur par dfaut) 2 2 bits d'arrts (ASCII uniquement) Valeur en attente pour l'attribut BaudRate. Valeur en attente pour l'attribut DataBits. Valeur en attente pour l'attribut Parity. Valeur en attente pour l'attribut RTSOffDelay. Valeur en attente pour l'attribut RTSSendDelay. Valeur en attente pour l'attribut StopBits.
RTSSendDelay
INT
GSV
StopBits
SINT
GSV
3-46
Pour attribuer des valeurs l'un des attributs SERIALPORT en attente : 1. Utilisez une instruction SSV pour rgler la valeur de l'attribut en attente. Vous pouvez attribuer autant d'attributs en attente que vous le voulez en utilisant une instruction SSV pour chacun d'eux. 2. Utilisez une instruction MSG pour attribuer la valeur. L'instruction MSG s'applique chaque attribut en attente que vous rglez. Configurez les instructions MSG comme suit :
Onglet de configuration MSG Configuration Champ Type de message Code de service Type d'objet Identificateur de l'objet Attribut de l'objet Source Nombre d'lments Destination Communication Chemin Valeur CIP gnrique 0d hex 6f hex 1 laisser en blanc laisser en blanc 0 laisser en blanc chemin de communication vers soi-mme (1,s o s = numro d'emplacement de l'automate)
3-47
MaxScanTime MinInterval
DINT DINT[2]
Watchdog
DINT
3-48
Attribut CSTOffset
Description Dcalage positif de CurrentValue de l'objet CST (temps systme coordonn : voir page 3-35). DINT[0] contient les 32 bits infrieurs de la valeur, DINT[1] contient les 32 bits suprieurs de la valeur. La valeur est en s. La valeur par dfaut est 0. Valeur en cours de l'horloge. DINT[0] contient les 32 bits infrieurs de la valeur, DINT[1] contient les 32 bits suprieurs de la valeur. La valeur est le nombre de microsecondes coules depuis le 1er janvier 1972, 00:00 heure. Les objets CST et WALLCLOCKTIME sont mathmatiquement relis dans l'automate. Par exemple, si vous additionnez la valeur CurrentValue CST et la valeur WALLCLOCKTIME CTSOffset, le rsultat est la valeur WALLCLOCKTIME CurrentValue. Date et heure dans un format lisible. DINT[0] anne DINT[1] mois sous forme de nombre entier (1-12) DINT[2] jour sous forme de nombre entier (1-31) DINT[3] heure (0-23) DINT[4] minute (0-59) DINT[5] secondes (0-59) DINT[6] microsecondes (0-999 999)
CurrentValue
DINT[2]
GSV SSV
DateTime
DINT[7]
GSV SSV
3-49
Exemple 1 : Cet exemple donne des informations sur les dfauts partir du
module d'E/S disc_in_2 et stocke les donnes dans une structure dfinie par l'utilisateur disc_in_2_info.
Logique relais
Texte structur
GSV(MODULE,disc_in_2,FaultCode,disc_in_2_info.FaultCode); GSV(MODULE,disc_in_2,FaultInfo,disc_in_2_info.FaultInfo); GSV(MODULE,disc_in_2,Mode,disc_in_2info.Mode);
Exemple 2 : Cet exemple donne des informations d'tat sur le programme discrete
et stocke les donnes dans une structure dfinie par l'utilisateur discrete_info.
Logique relais
Texte structur
GSV(PROGRAM,DISCRETE,LASTSCANTIME, discrete_info.LastScanTime); GSV(PROGRAM,DISCRETE,MAXSCANTIME,discrete_info.MaxScanTime);
3-50
Exemple 3 : Cet exemple donne des informations d'tat sur la tche IO_test et
stocke les donnes dans une structure dfinie par l'utilisateur io_test_info.
Logique relais
Texte structur
GSV(TASK,IO_TEST,LASTSCANTIME,io_test_info.LastScanTime); GSV(TASK,IO_TEST,MAXSCANTIME,io_test_info.MaxScanTime); GSV(TASK,IO_TEST,WATCHDOG,io_test_info.WatchDog);
Logique relais
3-51
Texte structur
IF SW.1 THEN discrete_prog_flag := enable_prog; ELSE discrete_prog_flag := disable_prog; END_IF; SSV(PROGRAM,DISCRETE,DISABLEFLAG,discrete_prog_flag);
3-52
Notes :
Chapitre
Instructions de comparaison
(CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Introduction
Si vous voulez
Les instructions de comparaison vous permettent de comparer des valeurs l'aide d'une expression ou d'une instruction de comparaison spcifique.
Utilisez cette instruction CMP EQU Disponible dans ces langages logique relais texte structur(1) logique relais texte structur(2) bloc fonctionnel logique relais texte structur(1) bloc fonctionnel logique relais texte structur(1) bloc fonctionnel logique relais texte structur(1) bloc fonctionnel logique relais texte structur(1) bloc fonctionnel logique relais bloc fonctionnel texte structur(1) logique relais bloc fonctionnel texte structur(1) logique relais texte structur(1) bloc fonctionnel Voir page 4-2 4-7
comparer des valeurs sur la base d'une expression tester si deux valeurs sont gales
tester si une valeur est suprieure ou gale une autre valeur tester si une valeur est suprieure une autre valeur
GEQ
4-11
GRT
4-15
tester si une valeur est infrieure ou gale une autre valeur tester si une valeur est infrieure une autre valeur
LEQ
4-19
LES
4-23
tester si une valeur est comprise entre deux autres valeurs passer deux valeurs dans un masque et tester si elles sont gales tester si une valeur n'est pas gale une autre valeur
LIM
4-27
MEQ
4-33
NEQ
4-38
(1)
Il n'existe pas d'instruction quivalente en texte structur. Utilisez une autre programmation en texte structur pour obtenir le mme rsultat. Voir la description de l'instruction. Il n'existe pas d'instruction quivalente en texte structur. Utilisez l'oprateur dans une expression.
(2)
Vous pouvez comparer des valeurs de diffrents types de donnes, tels que virgule flottante et nombre entier. Pour les instructions de logique relais, les types de donnes en gras indiquent les types de donnes optimaux. Une instruction est excute plus rapidement et demande moins de mmoire si tous les oprandes de l'instruction utilisent le mme type de donnes optimal, gnralement DINT ou REAL.
1 Publication 1756-RM003F-FR-P - Mai 2002
4-2
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Comparaison (CMP)
Oprandes :
L'instruction CMP effectue une comparaison sur les oprations arithmtiques que vous indiquez dans l'expression.
Logique relais
Oprande Expression Type SINT INT DINT REAL STRING Format immdiat point Description expression constitue de points et/ou de valeurs immdiates spares par des oprateurs
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Texte structur
Il n'y a pas d'instruction CMP en texte structur, mais vous pouvez obtenir le mme rsultat en utilisant une instruction de test IF...THEN (SI...ALORS) et une expression.
IF expression_boolenne THEN <instruction>; END_IF;
Pour des informations sur la syntaxe des instructions de test et expressions en texte structur, reportez-vous l'Annexe C.
Description : Dfinissez l'expression CMP avec des oprateurs, des points et des
valeurs immdiates. Utilisez des parenthses ( ) pour dfinir les sections d'expressions plus complexes. L'excution d'une instruction CMP est lgrement plus lente et utilise davantage de mmoire que l'excution des autres instructions de comparaison. L'avantage de l'instruction CMP est qu'elle vous permet d'entrer des expressions complexes dans une seule instruction.
L'instruction CMP affecte les indicateurs d'tat arithmtique uniquement si l'expression contient un oprateur (ex., +, , *, /) qui affecte les indicateurs d'tat arithmtique.
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
4-3
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux.
fin
pendant la post-scrutation
Si vous entrez une expression sans oprateur de comparaison, telle que value_1 + value_2 ou value_1, l'instruction value l'expression ainsi :
Si l'expression diffrent de zro zro L'tat de sortie de la ligne est rgl sur vrai faux
4-4
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Expressions CMP
Vous programmez les expressions en instructions CMP de la mme faon que les expressions en instructions FSC. Utilisez les sections suivantes pour trouver les informations sur les oprateurs, le format et l'ordre d'opration valables, communs aux deux instructions.
Oprateurs valables
Oprateur + * / = < <= > >= <> ** ABS ACS AND ASN ATN COS Description addition soustraction/ngation multiplication division galit infrieur infrieur ou gal suprieur suprieur ou gal diffrent exposant (x y) valeur absolue cosinus d'arc ET sur bits sinus d'arc tangente d'arc cosinus Optimal DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL REAL DINT REAL REAL REAL Oprateur DEG FRD LN LOG MOD NOT OR RAD SIN SQR TAN TOD TRN XOR Description radians en degrs DCB en nombre entier logarithme naturel logarithme dcimal modulo complment sur bits OU sur bits degrs en radians sinus racine carre tangente nombre entier en DCB troncation OU exclusif sur bits Optimal DINT, REAL DINT REAL REAL DINT, REAL DINT DINT DINT, REAL REAL DINT, REAL REAL DINT DINT, REAL DINT
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
4-5
le tableau suivant pour formater les oprateurs et les oprandes dans une expression.
Pour les oprateurs oprant sur un oprande deux oprandes Utilisez ce format oprateur(oprande) oprande_a oprateur oprande_b Exemples ABS(point_a) point_b + 5 point_c AND point_d (point_e ** 2) MOD (point_f / point_g)
4-6
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Les chanes sont gales si leurs caractres concordent. Les caractres ASCII sont diffrents s'ils sont en majuscules ou en minuscules. Un A majuscule ($41) n'est pas gal un a minuscule ($61). Les valeurs hexadcimales des caractres dterminent si une chane est infrieure ou suprieure une autre chane. Pour trouver le code hexadcimal d'un caractre, reportez-vous la dernire page de ce manuel. Lorsque les deux chanes sont tries comme dans un rpertoire tlphonique, l'ordre des chanes dtermine laquelle est suprieure.
Caractres ASCII 1ab
in f ri e ur e s u p r ie ur e
Codes Hex $31$61$62 $31$62 $41 $41$42 $42 $61 $61$62 a>B AB < B
1b A AB B a ab
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
4-7
Egal (EQU)
Oprandes :
Logique relais
Oprande Source A Type SINT INT DINT REAL STRING SINT INT DINT REAL STRING Format immdiat point Description valeur tester par rapport Source B
Source B
immdiat point
Si vous entrez un point SINT ou INT, la valeur est convertie en valeur DINT par extension de signe. Les valeurs REAL sont rarement parfaitement gales. Si vous devez dterminer l'galit de deux valeurs REAL, utilisez l'instruction LIM. Les types de donnes chane sont : type de donnes STRING par dfaut ; tout nouveau type de donnes chane que vous crez. Pour tester les caractres d'une chane, entrez un point de type chane de caractres pour Source A et Source B.
Texte structur
IF sourceA = sourceB THEN <instructions>;
Utilisez le signe gal = comme oprateur dans une expression. Cette expression value si sourceA est gale sourceB. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point EQU Type FBD_COMPARE Format structure Description structure EQU
4-8
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Structure FBD_COMPARE
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Valeur tester par rapport SourceB. Valeurs correctes = toute virgule flottante. Valeur tester par rapport SourceA. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction. Ceci est quivalent l'tat de sortie de la ligne de l'instruction EQU en logique relais.
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
4-9
Logique relais
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux.
Source A = Source B
oui
non
fin
pendant la post-scrutation
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
4-10
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Exemple : Si value_1 est gale value_2, light_a est activ. Si value_1 est
diffrente de value_2, light_a est effac.
Logique relais
Texte structur
light_a := (value_1 = value_2);
Bloc fonctionnel
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
4-11
Logique relais
Oprande Source A Type SINT INT DINT REAL STRING SINT INT DINT REAL STRING Format immdiat point Description valeur tester par rapport Source B
Source B
immdiat point
Si vous entrez un point SINT ou INT, la valeur est convertie en valeur DINT par extension de signe. Les types de donnes chane sont : type de donnes STRING par dfaut ; tout nouveau type de donnes chane que vous crez. Pour tester les caractres d'une chane, entrez un point de type chane de caractres pour Source A et Source B.
Texte structur
IF sourceA >= sourceB THEN <instructions>;
Utilisez les signes suprieur et gal >= juxtaposs comme oprateur dans une expression. Cette expression value si sourceA est suprieure ou gale sourceB. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point GEQ Type FBD_COMPARE Format structure Description structure GEQ
4-12
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Structure FBD_COMPARE
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Valeur tester par rapport SourceB. Valeurs correctes = toute virgule flottante. Valeur tester par rapport SourceA. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction. Ceci est quivalent l'tat de sortie de la ligne pour l'instruction logique relais GEQ.
Codes Hex $31$61$62 $31$62 $41 $41$42 $42 $61 $61$62 a>B AB < B
1b A AB B a ab
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
4-13
Logique relais
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux.
Source A Source B
oui
non
fin
pendant la post-scrutation
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
4-14
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Logique relais
Texte structur
light_b := (value_1 >= value_2);
Bloc fonctionnel
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
4-15
Suprieur (GRT)
Oprandes :
Logique relais
Oprande Source A Type SINT INT DINT REAL STRING SINT INT DINT REAL STRING Format immdiat point Description valeur tester par rapport Source B
Source B
immdiat point
Si vous entrez un point SINT ou INT, la valeur est convertie en valeur DINT par extension de signe. Les types de donnes chane sont : type de donnes STRING par dfaut ; tout nouveau type de donnes chane que vous crez. Pour tester les caractres d'une chane, entrez un point de type chane de caractres pour Source A et Source B.
Texte structur
IF sourceA > sourceB THEN <instructions>;
Utilisez le signe suprieur > comme oprateur dans une expression. Cette expression value si sourceA est suprieure sourceB. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point GRT Type FBD_COMPARE Format structure Description structure GRT
4-16
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Structure FBD_COMPARE
Paramtre d'entre EnableIn SourceA SourceB Paramtre de sortie EnableOut Dest Type de donnes BOOL REAL REAL Type de donnes BOOL BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Valeur tester par rapport SourceB. Valeurs correctes = toute virgule flottante. Valeur tester par rapport SourceA. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction. Ceci est quivalent l'tat de sortie de la ligne pour l'instruction logique relais GRT.
Codes Hex $31$61$62 $31$62 $41 $41$42 $42 $61 $61$62 a>B AB < B
1b A AB B a ab
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
4-17
Logique relais
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux.
oui
non
fin
pendant la post-scrutation
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
4-18
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Exemple : Si value_1 est suprieure value_2, light_1 est activ. Si value_1 est
infrieure ou gale value_2, light_1 est effac.
Logique relais
Texte structur
light_1 := (value_1 > value_2);
Bloc fonctionnel
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
4-19
Logique relais
Oprande Source A Type SINT INT DINT REAL STRING SINT INT DINT REAL STRING Format immdiat point Description valeur tester par rapport Source B
Source B
immdiat point
Si vous entrez un point SINT ou INT, la valeur est convertie en valeur DINT par extension de signe. Les types de donnes chane sont : type de donnes STRING par dfaut ; tout nouveau type de donnes chane que vous crez. Pour tester les caractres d'une chane, entrez un point de type chane de caractres pour Source A et Source B.
Texte structur
IF sourceA <= sourceB THEN <instructions>;
Utilisez les signes infrieur et gal <= juxtaposs comme oprateur dans une expression. Cette expression value si sourceA est infrieure ou gale sourceB. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point LEQ Type FBD_COMPARE Format structure Description structure LEQ
4-20
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Structure FBD_COMPARE
Paramtre d'entre EnableIn SourceA SourceB Paramtre de sortie EnableOut Dest Type de donnes BOOL REAL REAL Type de donnes BOOL BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Valeur tester par rapport SourceB. Valeurs correctes = toute virgule flottante. Valeur tester par rapport SourceA. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction. Ceci est quivalent l'tat de sortie de la ligne pour l'instruction logique relais LEQ.
Codes Hex $31$61$62 $31$62 $41 $41$42 $42 $61 $61$62 a>B AB < B
1b A AB B a ab
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
4-21
Logique relais
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux.
Source A Source B
oui
non
fin
pendant la post-scrutation
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
4-22
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Logique relais
Texte structur
light_2 := (value_1 <= value_2);
Bloc fonctionnel
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
4-23
Infrieur (LES)
Oprandes :
Logique relais
Oprande Source A Type SINT INT DINT REAL STRING SINT INT DINT REAL STRING Format immdiat point Description valeur tester par rapport Source B
Source B
immdiat point
Si vous entrez un point SINT ou INT, la valeur est convertie en valeur DINT par extension de signe. Les types de donnes chane sont : type de donnes STRING par dfaut ; tout nouveau type de donnes chane que vous crez. Pour tester les caractres d'une chane, entrez un point de type chane de caractres pour Source A et Source B.
Texte structur
IF sourceA < sourceB THEN <instructions>;
Utilisez le signe infrieur < comme oprateur dans une expression. Cette expression value si sourceA est infrieure sourceB. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point LES Type FBD_COMPARE Format structure Description structure LES
4-24
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Structure FBD_COMPARE
Paramtre d'entre EnableIn SourceA SourceB Paramtre de sortie EnableOut Dest Type de donnes BOOL REAL REAL Type de donnes BOOL BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Valeur tester par rapport SourceB. Valeurs correctes = toute virgule flottante. Valeur tester par rapport SourceA. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction. Ceci est quivalent l'tat de sortie de la ligne pour l'instruction logique relais LES.
Codes Hex $31$61$62 $31$62 $41 $41$42 $42 $61 $61$62 a>B AB < B
1b A AB B a ab
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
4-25
Logique relais
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux.
oui
non
fin
pendant la post-scrutation
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est faux si EnableIn est vrai pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Exemple : Si value_1 est infrieure value_2, light_3 est activ. Si value_1 est
suprieure ou gale value_2, light_3 est effac.
Logique relais
4-26
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Texte structur
light_3 := (value_1 < value_2);
Bloc fonctionnel
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
4-27
L'instruction LIM teste si la valeur Test est comprise entre la limite infrieure (Low Limit) et la limite suprieure (High Limit).
Logique relais
Oprande Limite infrieure Type SINT INT DINT REAL SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description valeur de la limite infrieure
Un point SINT ou INT est converti en valeur DINT par extension de signe. Test immdiat point valeur tester
Un point SINT ou INT est converti en valeur DINT par extension de signe. Limite suprieure immdiat point valeur de la limite suprieure
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Texte structur
Il n'y a pas d'instruction LIM en texte structur, mais vous pouvez obtenir le mme rsultat en utilisant les instructions suivantes :
IF (LowLimit <= HighLimit AND (Test >= LowLimit AND Test <= HighLimit)) OR (LowLimit >= HighLimit AND (Test <= LowLimit OR Test >= HighLimit)) THEN <instruction>;
END_IF;
Bloc fonctionnel
Oprande point LIM Type FBD_LIMIT Format structure Description structure LIM
4-28
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Structure FBD_LIMIT
Paramtre d'entre EnableIn Type de donnes BOOL Description Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Si activ, l'instruction est excute comme dcrit dans la section Excution. Activ par dfaut. Valeur de la limite infrieure. Valeurs correctes = toute virgule flottante. Valeur tester par rapport aux limites. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction. Ceci est quivalent l'tat de sortie de la ligne pour l'instruction logique relais LIM. Valeur de la limite suprieure Valeurs correctes = toute virgule flottante.
Description : L'instruction LIM teste si la valeur Test est comprise entre la limite
infrieure (Low Limit) et la limite suprieure (High Limit).
Si limite infrieure limite suprieure Et la valeur test est gale ou dans les limites diffrente ou en dehors des limites limite suprieure gale ou en dehors des limites diffrente ou dans les limites L'tat de sortie de la ligne est vrai faux vrai faux
Les nombres entiers signs passent du nombre positif maximum au nombre ngatif maximum lorsque le bit de poids fort est activ. Par exemple, dans les nombres entiers de 16 bits (type INT), le nombre entier positif maximum est 32 767, reprsent en hexadcimal par 16#7FFF (les bits 0 14 sont tous activs). Si vous augmentez ce nombre de un, le rsultat est 16#8000 (le bit 15 est activ). Pour les nombres entiers signs, hexadcimal 16#8000 est gal -32 768 dcimal. En augmentant partir de ce point jusqu' ce que les 16 bits soient activs, on atteint 16#FFFF, qui est gal -1 dcimal.
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
4-29
Ceci peut tre reprsent comme une ligne numrique circulaire (voir les diagrammes suivants). L'instruction LIM commence la limite infrieure (Low Limit) et augmente dans le sens horaire jusqu' la limite suprieure (High Limit). Toute valeur Test dans la plage de sens horaire, de la limite infrieure (Low Limit) la limite suprieure (High Limit), rgle l'tat de sortie de la ligne sur vrai. Toute valeur Test dans la plage de sens horaire, de la limite suprieure (High Limit) la limite infrieure (Low Limit), rgle l'tat de sortie de la ligne sur faux.
Limite infrieure Limite suprieure L'instruction est vraie si la valeur de test est gale ou dans les limites infrieure et suprieure 0 1 +1 limite infrieure 1 Limite infrieure Limite suprieure L'instruction est vraie si la valeur de test est gale ou en dehors des limites infrieure et suprieure 0 +1 limite suprieure
+n
n = valeur maximum
4-30
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Logique relais
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux.
value la limite
la comparaison est vraie l'tat de sortie de la ligne est rgl sur vrai
fin
pendant la post-scrutation
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac, l'instruction ne fait rien et les sorties ne sont pas actualises. L'instruction est excute. EnableOut est activ. Aucune.
Lorsque 0 value 100, light_1 est activ. Si value < 0 ou value >100, light_1 est effac.
Logique relais
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
4-31
Texte structur
IF (value <= 100 AND(value >= 0 AND value <= 100)) OR (value >= 100 AND value <= 0 OR value >= 100)) THEN light_1 := 1; ELSE light_1 := 0;
END_IF;
Bloc fonctionnel
4-32
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Lorsque value 0 ou value 100, light_1 est activ. Si value < 0 ou value >100, light_1 est effac.
Logique relais
Texte structur
IF (0 <= -100 AND value >= 0 AND value <= -100)) OR (0 >= -100 AND(value <= 0 OR value >= -100)) THEN light_1 := 1; ELSE light_1 := 0;
END_IF;
Bloc fonctionnel
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
4-33
L'instruction MEQ passe les valeurs Source et Compare par un masque et compare les rsultats.
Logique relais
Oprande Source Type SINT INT DINT SINT INT DINT SINT INT DINT Format immdiat point Description valeur tester par rapport Compare
Un point SINT ou INT est converti en valeur DINT par remplissage par zros. Masque immdiat point dfinit les bits bloquer ou passer
Un point SINT ou INT est converti en valeur DINT par remplissage par zros. Comparer immdiat point valeur tester par rapport Source
Un point SINT ou INT est converti en valeur DINT par remplissage par zros.
Texte structur
Il n'y a pas d'instruction MEQ en texte structur, mais vous pouvez obtenir le mme rsultat en utilisant les instructions suivantes :
IF (Source AND Mask) = (Compare AND Mask) THEN <instruction>; END_IF;
Bloc fonctionnel
Oprande point MEQ Type FBD_MASK_EQUAL Format structure Description structure MEQ
4-34
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Structure FBD_MASK_EQUAL
Paramtre d'entre EnableIn Type de donnes BOOL Description Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Si activ, l'instruction est excute comme dcrit dans la section Excution. Activ par dfaut. Valeur tester par rapport Compare. Valeurs correctes = tout nombre entier. Dfinit les bits bloquer (masque). Valeurs correctes = tout nombre entier. Valeur de comparaison. Valeurs correctes = tout nombre entier. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction. Ceci est quivalent l'tat de sortie de la ligne pour l'instruction logique relais MEQ.
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
4-35
Logique relais
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux.
oui
non
fin
pendant la post-scrutation
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac, l'instruction ne fait rien et les sorties ne sont pas actualises. L'instruction est excute. EnableOut est activ. Aucune.
4-36
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
mask_1
mask_1
Logique relais
Texte structur
light_1 := ((value_1 AND mask_1)=(value_2 AND mask_2));
Bloc fonctionnel
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
4-37
mask_1
mask_1
Logique relais
Texte structur
light_1 := ((value_1 AND mask_1)=(value_2 AND mask_2));
Bloc fonctionnel
4-38
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Diffrent de (NEQ)
Oprandes :
Logique relais
Oprande Source A Type SINT INT DINT REAL STRING SINT INT DINT REAL STRING Format immdiat point Description valeur tester par rapport Source B
Source B
immdiat point
Si vous entrez un point SINT ou INT, la valeur est convertie en valeur DINT par extension de signe. Les types de donnes chane sont : type de donnes STRING par dfaut ; tout nouveau type de donnes chane que vous crez. Pour tester les caractres d'une chane, entrez un point de type chane de caractres pour Source A et Source B.
Texte structur
IF sourceA <> sourceB THEN <instructions>;
Utilisez les signes infrieur et suprieur <> comme oprateur dans l'expression. Cette expression value si sourceA est diffrent de sourceB. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point NEQ Type FBD_COMPARE Format structure Description structure NEQ
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
4-39
Structure FBD_COMPARE
Paramtre d'entre EnableIn SourceA SourceB Paramtre de sortie EnableOut Dest Type de donnes BOOL REAL REAL Type de donnes BOOL BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Valeur tester par rapport SourceB. Valeurs correctes = toute virgule flottante. Valeur tester par rapport SourceA. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction. Ceci est quivalent l'tat de sortie de la ligne pour l'instruction logique relais NEQ.
Codes Hex $31$61$62 $31$62 $41 $41$42 $42 $61 $61$62 a>B AB < B
1b A AB B a ab
4-40
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Logique relais
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux.
Source A = Source B
oui
non
fin
pendant la post-scrutation
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
4-41
Exemple : Si value_1 est diffrente de value_2, light_4 est activ. Si value_1 est
gale value_2, light_4 est effac.
Logique relais
Texte structur
light_4 := (value_1 <> value_2);
Bloc fonctionnel
4-42
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Notes :
Chapitre
Instructions de calcul/mathmatiques
(CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Introduction
Si vous voulez valuer une expression additionner deux valeurs
Les instructions de calcul/mathmatiques valuent les oprations arithmtiques l'aide d'une expression ou d'une instruction arithmtique particulire.
Utilisez cette instruction CPT ADD Disponible dans ces langages logique relais texte structur(1) logique relais texte structur(2) bloc fonctionnel logique relais texte structur(2) bloc fonctionnel logique relais texte structur(2) bloc fonctionnel logique relais texte structur(2) bloc fonctionnel logique relais texte structur(2) bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais texte structur(2) bloc fonctionnel logique relais texte structur bloc fonctionnel Voir page 5-2 5-6
SUB
5-9
MUL
5-12
DIV
5-15
dterminer le reste aprs la division d'une valeur par une autre calculer la racine carre d'une valeur
MOD
5-19
5-23
5-26
ABS
5-29
(1)
Il n'existe pas d'instruction quivalente en texte structur. Utilisez une autre programmation en texte structur pour obtenir le mme rsultat. Voir la description de l'instruction. Il n'existe pas d'instruction quivalente en texte structur. Utilisez l'oprateur dans une expression. Texte structur uniquement.
(2) (3)
Vous pouvez combiner diffrents types de donnes ; cependant des erreurs de prcision et un arrondissement des valeurs peuvent se produire et l'instruction est plus longue excuter. Vrifiez le bit S:V pour voir si le rsultat a t tronqu. Pour les instructions de logique relais, les types de donnes en gras indiquent les types de donnes optimaux. Une instruction est excute plus rapidement et demande moins de mmoire si tous les oprandes de l'instruction utilisent le mme type de donnes optimal, gnralement DINT ou REAL.
5-2
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Calcul (CPT)
Oprandes :
L'instruction CPT effectue les oprations arithmtiques que vous dfinissez dans l'expression.
Logique relais
Oprande Destination Type SINT INT DINT REAL SINT INT DINT REAL Format point Description point pour le stockage du rsultat
Expression
immdiat point
expression constitue de points et/ou de valeurs immdiates spares par des oprateurs
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Texte structur
Il n'y a pas d'instruction CPT en texte structur, mais vous pouvez obtenir le mme rsultat en utilisant une affectation et une expression.
destination := numeric_expression;
Pour des informations sur la syntaxe des affectations et expressions en texte structur, reportez-vous l'Annexe C.
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
5-3
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai pendant la post-scrutation Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. Linstruction value l'expression et stocke le rsultat dans la Destination. L'tat de sortie de la ligne est rgl sur vrai. L'tat de sortie de la ligne est rgl sur faux.
Exemple 1 : Lorsqu'elle est active, l'instruction CPT value value_1 multiplie par
5 et divise ce rsultat par le rsultat de value_2 divise par 7 et stocke le rsultat final dans result_1.
5-4
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Oprateurs valables
Oprateur + * / ** ABS ACS AND ASN ATN COS DEG FRD LN Description addition soustraction/ngation multiplication division exposant (x y) valeur absolue cosinus d'arc ET sur bits sinus d'arc tangente d'arc cosinus radians en degrs DCB en nombre entier logarithme naturel Optimal DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL REAL DINT REAL REAL REAL DINT, REAL DINT REAL Oprateur LOG MOD NOT OR RAD SIN SQR TAN TOD TRN XOR Description logarithme dcimal modulo complment sur bits OU sur bits degrs en radians sinus racine carre tangente nombre entier en DCB troncation OU exclusif sur bits Optimal REAL DINT, REAL DINT DINT DINT, REAL REAL DINT, REAL REAL DINT DINT, REAL DINT
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
5-5
5-6
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Addition (ADD)
Oprandes :
Logique relais
Oprande Source A Type SINT INT DINT REAL SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description valeur ajouter Source B
Un point SINT ou INT est converti en valeur DINT par extension de signe. Source B immdiat point valeur ajouter Source A
Un point SINT ou INT est converti en valeur DINT par extension de signe. Destination point point pour le stockage du rsultat
Texte structur
dest := sourceA + sourceB;
Utilisez le signe plus + comme oprateur dans une expression. Cette expression ajoute sourceA sourceB et stocke le rsultat dans dest. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point ADD Type FBD_MATH Format structure Description structure ADD
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
5-7
Structure FBD_MATH
Paramtre d'entre EnableIn SourceA SourceB Paramtre de sortie EnableOut Dest Type de donnes BOOL REAL REAL Type de donnes BOOL REAL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Valeur ajouter SourceB. Valeurs correctes = toute virgule flottante. Valeur ajouter SourceA. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction mathmatique. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune Excution : Logique relais
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai pendant la post-scrutation Action L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. Destination = Source A + Source B L'tat de sortie de la ligne est rgl sur vrai. L'tat de sortie de la ligne est rgl sur faux.
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
5-8
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Logique relais
Texte structur
add_result := float_value_1 + float_value_2;
Bloc fonctionnel
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
5-9
Soustraction (SUB)
Oprandes :
Logique relais
Oprande Source A Type SINT INT DINT REAL SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description valeur dont Source B est soustraire
Un point SINT ou INT est converti en valeur DINT par extension de signe. Source B immdiat point valeur soustraire de Source A
Un point SINT ou INT est converti en valeur DINT par extension de signe. Destination point point pour le stockage du rsultat
Texte structur
dest := sourceA - sourceB;
Utilisez le signe moins comme oprateur dans une expression. Cette expression soustrait sourceB de sourceA et stocke le rsultat dans dest. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point SUB Type FBD_MATH Format structure Description structure SUB
5-10
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Structure FBD_MATH
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Valeur dont SourceB est soustraire. Valeurs correctes = toute virgule flottante. valeur soustraire de SourceA. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction mathmatique. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune Excution : Logique relais
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai pendant la post-scrutation Action L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. Destination = Source B - Source A L'tat de sortie de la ligne est rgl sur vrai. L'tat de sortie de la ligne est rgl sur faux.
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
5-11
Logique relais
Texte structur
subtract_result := float_value_1 - float_value_2;
Bloc fonctionnel
5-12
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Multiplication (MUL)
Oprandes :
L'instruction MUL multiplie Source A par Source B et stocke le rsultat dans la Destination.
Logique relais
Oprande Source A Type SINT INT DINT REAL SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description valeur du multiplicande
Un point SINT ou INT est converti en valeur DINT par extension de signe. Source B immdiat point valeur du multiplicateur
Un point SINT ou INT est converti en valeur DINT par extension de signe. Destination point point pour le stockage du rsultat
Texte structur
dest := sourceA * sourceB;
Utilisez le signe multiplier comme oprateur dans une expression. Cette expression multiplie sourceA par sourceB et stocke le rsultat dans dest. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point MUL Type FBD_MATH Format structure Description structure MUL
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
5-13
Structure FBD_MATH
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Valeur du multiplicande. Valeurs correctes = toute virgule flottante. Valeur du multiplicateur. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction mathmatique. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune Excution : Logique relais
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai pendant la post-scrutation Action L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. Destination = Source B x Source A L'tat de sortie de la ligne est rgl sur vrai. L'tat de sortie de la ligne est rgl sur faux.
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
5-14
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Logique relais
Texte structur
multiply_result := float_value_1 float_value_2;
Bloc fonctionnel
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
5-15
Division (DIV)
Oprandes :
L'instruction DIV divise Source A par Source B et stocke le rsultat dans la Destination.
Logique relais
Oprande Source A Type SINT INT DINT REAL SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description valeur du dividende
Un point SINT ou INT est converti en valeur DINT par extension de signe. Source B immdiat point valeur du diviseur
Un point SINT ou INT est converti en valeur DINT par extension de signe. Destination point point pour le stockage du rsultat
Texte structur
dest := sourceA / sourceB;
Utilisez le signe diviser / comme oprateur dans une expression. Cette expression divise sourceA par sourceB et stocke le rsultat dans dest. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point DIV Type FBD_MATH Format structure Description structure DIV
5-16
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Structure FBD_MATH
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Valeur du dividende. Valeurs correctes = toute virgule flottante. Valeur du diviseur. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction mathmatique. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Si Source B (le diviseur) est zro : un dfaut mineur se produit : type 4 : dfaut du programme ; code 4 : dpassement arithmtique. la destination est rgle comme suit :
Si Source B est zro et tous les oprandes sont des nombres entiers (SINT, INT ou DINT) au moins un oprande est un REAL SINT, INT ou DINT REAL positif ngatif positif ngatif Et la destination est un Et le rsultat est La destination est rgle sur Source A -1 0 1.$ (infini positif) -1.$ (infini ngatif)
Pour dtecter une ventuelle division par zro, examinez le bit de dfaut mineur (S:MINOR). Voir Automate Logix5000 - Procdures gnrales (publication 1756-PM001).
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
5-17
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur :
Un dfaut mineur se produit si le diviseur est zro Type du dfaut 4 Code du dfaut 4
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
5-18
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Logique relais
Texte structur
divide_result := float_value_1 / float_value_2;
Bloc fonctionnel
Exemple 2 : Les instructions DIV et MOV travaillent ensemble pour diviser deux
nombres entiers, arrondir le rsultat et le placer dans un point de nombre entier : l'instruction DIV divise dint_a par dint_b ; pour arrondir le rsultat, la destination est un point REAL (si la destination est un point de nombre entier (SINT, INT ou DINT), l'instruction tronque le rsultat) ; l'instruction MOV dplace le rsultat arrondi (real_temp) de DIV vers divide_result_rounded ; puisque divide_result_rounded est un point DINT, la valeur de real_temp est arrondie et place dans la destination DINT.
Logique relais
43009
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
5-19
Modulo (MOD)
Oprandes :
L'instruction MOD divise Source A par Source B et stocke le reste dans la Destination.
Logique relais
Oprande Source A Type SINT INT DINT REAL SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description valeur du dividende
Un point SINT ou INT est converti en valeur DINT par extension de signe. Source B immdiat point valeur du diviseur
Un point SINT ou INT est converti en valeur DINT par extension de signe. Destination point point pour le stockage du rsultat
Texte structur
dest := sourceA MOD sourceB;
Utilisez MOD comme oprateur dans une expression. Cette expression divise sourceA par sourceB et stocke le rsultat dans dest. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point MOD Type FBD_MATH Format structure Description structure MOD
5-20
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Structure FBD_MATH
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Valeur du dividende. Valeurs correctes = toute virgule flottante. Valeur du diviseur. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction mathmatique. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Pour dtecter une ventuelle division par zro, examinez le bit de dfaut mineur (S:MINOR). Voir Automate Logix5000 - Procdures gnrales (publication 1756-PM001).
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
5-21
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur :
Un dfaut mineur se produit si le diviseur est zro Type du dfaut 4 Code du dfaut 4
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. Aucune.
5-22
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Exemple : Diviser dividend par divisor et placer le rsultat dans remainder. Dans
cet exemple, trois va trois fois dans 10, avec un reste de un.
Logique relais
Texte structur
remainder := dividend MOD divisor;
Bloc fonctionnel
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
5-23
L'instruction SQR calcule la racine carre de la Source et stocke le rsultat dans la Destination.
Logique relais
Oprande Source Type SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description trouve la racine carre de cette valeur
Un point SINT ou INT est converti en valeur DINT par extension de signe. Destination point point pour le stockage du rsultat
Texte structur
dest := SQRT(source);
Utilisez SQRT comme une fonction. Cette expression calcule la racine carre de source et stocke le rsultat dans dest. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point SQR Type FBD_MATH_ADVANCED Format structure Description structure SQR
Structure FBD_MATH_ADVANCED
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Trouve la racine carre de cette valeur. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction mathmatique. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
5-24
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Si la valeur Source est ngative, l'instruction prend la valeur absolue de la Source avant de calculer la racine carre.
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune Excution : Logique relais
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux.
Destination =
Source
L'tat de sortie de la ligne est rgl sur vrai. pendant la post-scrutation L'tat de sortie de la ligne est rgl sur faux.
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
5-25
Logique relais
Texte structur
sqr_result := SQRT(value_1);
Bloc fonctionnel
5-26
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Ngation (NEG)
Oprandes :
Logique relais
Oprande Source Type SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description valeur de ngation
Un point SINT ou INT est converti en valeur DINT par extension de signe. Destination point point pour le stockage du rsultat
Texte structur
dest := -source;
Utilisez le signe moins comme oprateur dans une expression. Cette expression change le signe de source et stocke le rsultat dans dest. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point NEG Type FBD_MATH_ADVANCED Format structure Description structure NEG
Structure FBD_MATH
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Valeur de ngation. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction mathmatique. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Description : Si vous ajoutez un signe moins une valeur ngative, le rsultat est
positif. Si vous ajoutez un signe moins une valeur positive, le rsultat est ngatif.
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
5-27
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune Excution : Logique relais
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai pendant la post-scrutation Action L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. Destination = 0 Source L'tat de sortie de la ligne est rgl sur vrai. L'tat de sortie de la ligne est rgl sur faux.
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Exemple : Changer le signe de value_1 et placer le rsultat dans negate_result. Logique relais
Texte structur
negate_result := -value_1;
5-28
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Bloc fonctionnel
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
5-29
L'instruction ABS prend la valeur absolue de la Source et stocke le rsultat dans la Destination.
Logique relais
Oprande Source Type SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description valeur de laquelle prendre la valeur absolue
Un point SINT ou INT est converti en valeur DINT par extension de signe. Destination point point pour le stockage du rsultat
Texte structur
dest := ABS(source);
Utilisez ABS comme une fonction. Cette expression calcule la valeur absolue de source et stocke le rsultat dans dest. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point ABS Type FBD_MATH_ADVANCED Format structure Description structure ABS
Structure FBD_MATH_ADVANCED
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Valeur de laquelle prendre la valeur absolue. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction mathmatique. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
5-30
Instructions de calcul/mathmatiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Logique relais
Texte structur
value_1_absolute := ABS(value_1);
Bloc fonctionnel
Chapitre
Instructions de transfert/logiques
(MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Introduction
Vous pouvez combiner diffrents types de donnes, mais des erreurs de prcision et un arrondissement des valeurs peuvent se produire et l'instruction est plus longue excuter. Vrifiez le bit S:V pour voir si le rsultat a t tronqu. Pour les instructions de logique relais, les types de donnes en gras indiquent les types de donnes optimaux. Une instruction est excute plus rapidement et demande moins de mmoire si tous les oprandes de l'instruction utilisent le mme type de donnes optimal, gnralement DINT ou REAL. Les instructions de transfert modifient et dplacent les bits.
Si vous voulez copier une valeur copier une partie spcifique d'un nombre entier copier une partie spcifique d'un nombre entier dans un bloc fonctionnel transfrer des bits l'intrieur d'un nombre entier ou entre des nombres entiers dplacer des bits dans un nombre entier ou entre des nombres entiers dans un bloc fonctionnel effacer une valeur
Disponible dans ces langages logique relais texte structur(1) logique relais texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel texte structur(1) logique relais logique relais texte structur
Il n'existe pas d'instruction quivalente en texte structur. Utilisez une autre programmation en texte structur pour obtenir le mme rsultat. Voir la description de l'instruction.
6-2
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-25
XOR
6-28
NOT
6-31
une opration ET logique sur huit entres boolennes maximum une opration OU logique sur huit entres boolennes maximum effectuer un OU exclusif sur deux entres boolennes complter une entre boolenne
(1) (2)
Texte structur uniquement. En texte structur, les oprations AND, OR, XOR et NOT peuvent tre sur bits ou logiques.
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-3
Transfert (MOV)
Oprandes :
Logique relais
Oprande Source Type SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description valeur transfrer (copier)
Un point SINT ou INT est converti en valeur DINT par extension de signe. Destination point point pour le stockage du rsultat
Texte structur
dest := source;
Utilisez une affectation := avec une expression. Cette affectation transfert la valeur de source dans dest. Pour des informations sur la syntaxe des expressions et affectations en texte structur, reportez-vous l'Annexe C.
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune
6-4
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai pendant la post-scrutation Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction copie la Source dans la Destination. L'tat de sortie de la ligne est rgl sur vrai. L'tat de sortie de la ligne est rgl sur faux.
Texte structur
value_2 := value _1;
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-5
L'instruction MVM copie la Source dans une Destination et permet de masquer une partie des donnes. Cette instruction existe en texte structur et en bloc fonctionnel comme instruction MVMT (voir page 6-8).
Un point SINT ou INT est converti en valeur DINT par remplissage par zros. Masque immdiat point bits bloquer ou passer
Un point SINT ou INT est converti en valeur DINT par remplissage par zros. Destination point point pour le stockage du rsultat
Texte structur
dest := (Dest AND NOT (Mask)) OR (Source AND Mask);
Cette instruction existe en texte structur comme instruction MVMT. Vous pouvez galement combiner une logique sur bits dans une expression et attribuer le rsultat la destination. Cette expression excute un transfert avec masque sur Source. Pour des informations sur la syntaxe des expressions et affectations en texte structur, reportez-vous l'Annexe C.
Description : L'instruction MVM utilise un masque pour passer ou bloquer les bits
de donnes Source. Un 1 dans le masque signifie que le bit de donnes est pass. Un 0 dans le masque signifie que le bit de donnes est bloqu. Si vous mlangez des types d'entiers, l'instruction crit des 0 pour les bits suprieurs dans des entiers de taille infrieure, pour qu'ils aient la mme taille que les entiers de grande taille.
6-6
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction passe la Source par le masque et copie le rsultat dans la Destination. Les bits non masqus de la Destination restent inchangs. L'tat de sortie de la ligne est rgl sur vrai. L'tat de sortie de la ligne est rgl sur faux.
pendant la post-scrutation
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-7
Exemple : Copier des donnes de value_a dans value_b, tout en permettant aux
donnes d'tre masques (un 0 masque les donnes de value_a).
Les parties grises montrent les bits qui ont chang dans value_b.
Logique relais
Texte structur
value_b := (value_b AND NOT (mask_2)) OR (value_a AND mask_2);
6-8
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
L'instruction MVMT copie d'abord la Cible (consigne) dans la Destination. Elle compare ensuite la Source masque la Destination et applique les changements ncessaires la Destination. La Cible et la Source restent inchanges. Cette instruction est disponible en logique relais comme instruction MVM (voir page 6-5).
Oprandes :
MVMT(MVMT_tag);
Texte structur
Variable Type Format structure Description structure MVMT
Bloc fonctionnel
Oprande Type Format structure Description structure MVMT
Structure FBD_MASKED_MOVE
Paramtre d'entre EnableIn Type de donnes BOOL Description Bloc fonctionnel : Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Si activ, l'instruction est excute. Activ par dfaut. Texte structur : Aucun effet. L'instruction est excute. Valeur d'entre transfrer dans la Destination en fonction de la valeur du Masque. Valeurs correctes = tout nombre entier. Masque des bits transfrer de Source Dest. Tous les bits rgls sur un font passer les bits correspondants de Source dans Dest. Tous les bits rgls sur zro empchent les bits correspondants de passer de Source dans Dest. Valeurs correctes = tout nombre entier. Valeur d'entre transfrer dans Dest avant de transfrer les bits de Source travers le Masque. Valeurs correctes = tout nombre entier. Description L'instruction a fourni un rsultat correct. Rsultat d'une instruction de transfert avec masque. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Source Masque
DINT DINT
Cible
DINT
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-9
signifie que le bit de donnes est pass. Un 0 dans le masque signifie que le bit de donnes est bloqu. Si vous mlangez des types d'entiers, l'instruction crit des 0 pour les bits suprieurs dans des entiers de taille infrieure, pour qu'ils aient la mme taille que les entiers de grande taille. Entre d'une valeur de masque immdiate l'aide d'une rfrence d'entre Lorsque vous entrez un masque, le logiciel de programmation passe des valeurs dcimales par dfaut. Si vous voulez entrer un masque l'aide d'un autre format, faites prcder la valeur du prfixe correct.
Prfixe 16# 8# 2# Description hexadcimal par exemple : 16#0F0F octal par exemple : 8#16 binaire par exemple : 2#00110011
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune Excution :
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action du bloc fonctionnel Aucune. Aucune. Aucune. EnableOut est effac, l'instruction ne fait rien et les sorties ne sont pas actualises. L'instruction est excute. EnableOut est activ. Aucune. Action du texte structur Aucune. Aucune. Aucune. EnableIn est toujours activ. L'instruction est excute. Aucune.
6-10
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Exemple :
Cible 1 1 1 1 1 1
Dest
2. L'instruction masque Source et la compare Dest. Les modifications requises sont effectues dans Dest. Source et Cible restent inchanges. Un 0 dans le masque empche l'instruction de comparer ce bit (indiqu par x dans l'exemple).
Source
Mask1
Dest
Texte structur :
MVMT_01.Source := value_1; MVMT_01.Mask := mask1; MVMT_01.Target := target; MVMT(MVMT_01); value_masked := MVMT_01.Dest;
Bloc fonctionnel
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-11
L'instruction BTD copie les bits spcifis de la Source, les place dans la position approprie et les crit dans la Destination. Cette instruction existe en texte structur et en bloc fonctionnel comme instruction BTDT (voir page 6-14).
Un point SINT ou INT est converti en valeur DINT par remplissage par zros. Bit source immdiat (0-31 DINT) (0-15 INT) (0-7 SINT) point numro du bit (plus petit numro de bit) partir duquel commencer le transfert doit tre dans la plage valable du type de donnes Source point dans lequel transfrer les bits
Destination
Bit destinataire
numro du bit (plus petit numro de bit) partir duquel commencer la copie de bits Source doit tre dans la plage valable du type de donnes Destination nombre de bits transfrer
Longueur
DINT
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune
6-12
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai pendant la post-scrutation Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction copie et dplace les bits de Source dans la Destination. L'tat de sortie de la ligne est rgl sur vrai. L'tat de sortie de la ligne est rgl sur faux.
Exemple 1 : Lorsqu'elle est active, l'instruction BTD transfre les bits dans
value_1.
bit destination
bit source
Les parties grises montrent les bits qui ont chang dans value_1.
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-13
bit source
value_1
bit destination
Les parties grises montrent les bits qui ont chang dans value_2.
6-14
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
L'instruction BTDT copie d'abord la Cible dans la Destination. L'instruction copie ensuite les bits indiqus de la Source, les place dans la position approprie et les crit dans la Destination. La Cible et la Source restent inchanges. Cette instruction est disponible en logique relais comme instruction BTD (voir page 6-11).
Oprandes :
BTDT(BTDT_tag);
Texte structur
Variable point BTDT Type FBD_BIT_FIELD_DISTRIBUTE Format structure Description structure BTDT
Bloc fonctionnel
Oprande point BTDT Type FBD_BIT_FIELD_DISTRIBUTE Format structure Description structure BTDT
Structure FBD_BIT_FIELD_DISTRIBUTE
Paramtre d'entre EnableIn Type de donnes BOOL Description Bloc fonctionnel : Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Si activ, l'instruction est excute. Activ par dfaut. Texte structur : Aucun effet. L'instruction est excute. Valeur d'entre contenant les bits transfrer dans la Destination. Valeurs correctes = tout nombre entier. La position du bit dans Source (le plus petit numro de bit partir duquel commencer le transfert). Valeurs correctes = 0 31. Nombre de bits transfrer Valeurs correctes = 1 32. La position du bit dans Dest (le plus petit numro de bit partir duquel commencer copier des bits). Valeurs correctes = 0 31. Valeur d'entre transfrer dans Dest avant de transfrer les bits partir de la Source. Valeurs correctes = tout nombre entier. Description L'instruction a fourni un rsultat correct. Rsultat de l'opration de transfert de bit. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Source SourceBit
DINT DINT
Longueur DestBit
DINT DINT
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-15
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune Excution :
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action du bloc fonctionnel Aucune. Aucune. Aucune. EnableOut est effac, l'instruction ne fait rien et les sorties ne sont pas actualises. L'instruction est excute. EnableOut est activ. Aucune. Action du texte structur Aucune. Aucune. Aucune. EnableIn est toujours activ. L'instruction est excute. Aucune.
6-16
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Exemple :
Cible 1 1 1 1 1 1
Dest
2. SourceBit et Length indiquent les bits de Source copis dans Dest, en commenant par DestBit. Source et Cible restent inchanges.
DestBit SourceBit
Source
Dest
Texte structur :
BTDT_01.Source := source; BTDT_01.SourceBit := source_bit; BTDT_01.Length := length; BTDT_01.DestBit := dest_bit; BTDT_01.Target := target; BTDT(BTDT_01); distributed_value := BTDT_01.Dest;
Bloc fonctionnel
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-17
Effacer (CLR)
Oprandes :
Logique relais
Oprande Destination Type SINT INT DINT REAL Format point Description point effacer
dest := 0;
Texte structur
Il n'y a pas d'instruction CLR en texte structur. Attribuez un 0 au point que vous voulez effacer. Cette instruction d'affectation efface dest. Pour des informations sur la syntaxe des expressions et instructions d'affectation en texte structur, reportez-vous l'Annexe C.
Description : L'instruction CLR efface tous les bits de la Destination. Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai pendant la post-scrutation Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction efface la Destination. L'tat de sortie de la ligne est rgl sur vrai. L'tat de sortie de la ligne est rgl sur faux.
Exemple : Effacer tous les bits de value avec des 0. Logique relais
Texte structur :
value := 0;
6-18
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Logique relais
Oprande Source
Format point
Mode Ordre
Et si vous voulez mettre les octets dans cette configuration (chaque lettre reprsente un octet diffrent) ABCD DCBA ABCD CDAB ABCD BADC
Slectionnez
n'importe quelle option REVERSE (ou entrez 0) WORD (ou entrez 1) HIGH/LOW (ou entrez 2)
Destination
point
le point stockant les octets dans le nouvel ordre Si la source est INT DINT REAL La destination doit tre INT DINT DINT REAL
Texte structur
SWPB(Source,OrderMode,Dest);
Les oprandes sont les mmes que ceux de l'instruction SWPB en logique relais. Si vous slectionnez le mode HIGH/LOW, entrez-le sous la forme HIGHLOW ou HIGH_LOW (sans barre oblique).
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-19
de lecture et d'criture ASCII (ARD, ARL, AWA, AWT) permutent automatiquement les caractres, comme indiqu ci-dessous.
lecteur de codes-barres
BA
42969
Valeur AB
Style ASCII
Type INT
42968
AB
6-20
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Exemple 1 : Chacune des trois instructions SWPB rorganise les octets de DINT_1
dans un ordre diffrent. L'affichage est de type ASCII et chaque caractre reprsente un octet. Chaque instruction place les octets, dans le nouvel ordre, dans une Destination diffrente.
Logique relais
Texte structur :
SWPB(DINT_1,REVERSE,DINT_1_reverse); SWPB(DINT_1,WORD,DINT_1_swap_word); SWPB(DINT_1,HIGHLOW,DINT_1_swap_high_low);
Exemple 2 : L'exemple suivant inverse les octets dans chaque lment d'un
tableau. Pour un projet RSLogix 5000 qui contient cet exemple, ouvrez le dossier RSLogix 5000\Projects\Samples, fichier Swap_Bytes_in_Array.ACD. 1. Initialisation des points. L'instruction SIZE trouve le nombre d'lments dans array et stocke cette valeur dans array_length. Une instruction suivante utilise cette valeur pour dterminer quand le sous-programme a agi sur tous les lments dans le tableau. 2. Inversion des octets dans un lment de array. L'instruction SWPB inverse les octets du numro d'lment qui est indiqu par la valeur de index. Par exemple, lorsque index est gal 0, l'instruction SWPB agit sur array[0]. L'instruction ADD incrmente index. A l'excution suivante de l'instruction, l'instruction SWPB agit sur l'lment suivant dans array. 3. Dtermination du moment o l'instruction SWPB a agi sur tous les lments dans le tableau. Si index est infrieur au nombre d'lments dans le tableau (array_length), l'instruction continue avec l'lment suivant du tableau. Si index est gal array_length, alors l'instruction SWPB a agi sur tous les lments du tableau.
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-21
Logique relais
Initialise les points.
Texte structur :
index := 0; SIZE (array[0],0,array_length); REPEAT SWPB(array[index],REVERSE,array_bytes_reverse[index]); index := index + 1; UNTIL(index >= array_length)END_REPEAT;
6-22
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
L'instruction AND effectue une opration ET sur bits l'aide des bits dans Source A et Source B, et place le rsultat dans la Destination. Pour effectuer un ET logique, voir page 6-34.
Un point SINT ou INT est converti en valeur DINT par remplissage par zros. Source B immdiat point valeur utilise par l'instruction AND avec Source A
Un point SINT ou INT est converti en valeur DINT par remplissage par zros. Destination point stocke le rsultat
Texte structur
dest := sourceA AND sourceB
Utilisez AND ou le signe & comme oprateur dans une expression. Cette expression calcule sourceA ET sourceB. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point AND Type FBD_LOGICAL Format structure Description structure AND
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-23
Structure FBD_LOGICAL
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Valeur utilise par l'instruction AND avec SourceB. Valeurs correctes = tout nombre entier. Valeur utilise par l'instruction AND avec SourceA. Valeurs correctes = tout nombre entier. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Si vous mlangez des types d'entiers, l'instruction crit des 0 pour les bits suprieurs dans des entiers de taille infrieure, pour qu'ils aient la mme taille que les entiers de grande taille.
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune Excution : Logique relais
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai pendant la post-scrutation Action L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction effectue une opration ET sur bits. L'tat de sortie de la ligne est rgl sur vrai. L'tat de sortie de la ligne est rgl sur faux.
6-24
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Exemple : Lorsqu'elle est active, l'instruction AND effectue une opration ET sur
bits sur SourceA et SourceB, puis stocke le rsultat dans la Destination.
SourceA
SourceB
Dest
Logique relais
Texte structur :
value_result_and := value_1 AND value_2;
Bloc fonctionnel
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-25
L'instruction OR effectue une opration OU sur bits l'aide des bits dans Source A et Source B et stocke le rsultat dans la Destination. Pour effectuer un OU logique, voir page 6-37.
Un point SINT ou INT est converti en valeur DINT par remplissage par zros. Source B SINT INT DINT immdiat point valeur utilise par l'instruction OR avec Source A
Un point SINT ou INT est converti en valeur DINT par remplissage par zros. Destination SINT INT DINT point stocke le rsultat
Texte structur
dest := sourceA OR sourceB
Utilisez OR comme oprateur dans une expression. Cette expression calcule sourceA OU sourceB. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point OR Type FBD_LOGICAL Format structure Description structure OR
6-26
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Structure FBD_LOGICAL
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Valeur utilise par l'instruction OR avec SourceB. Valeurs correctes = tout nombre entier. Valeur utilise par l'instruction OR avec SourceA. Valeurs correctes = tout nombre entier. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Si vous mlangez des types d'entiers, l'instruction crit des 0 pour les bits suprieurs dans des entiers de taille infrieure, pour qu'ils aient la mme taille que les entiers de grande taille.
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune Excution : Logique relais
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai pendant la post-scrutation Action L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction effectue une opration OU sur bits. L'tat de sortie de la ligne est rgl sur vrai. L'tat de sortie de la ligne est rgl sur faux.
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-27
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
SourceA
SourceB
Dest
Logique relais
Texte structur :
value_result_or := value_1 OR value_2;
Bloc fonctionnel
6-28
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
L'instruction XOR effectue une opration OU exclusif sur bits l'aide des bits dans Source A et Source B et stocke le rsultat dans la Destination. Pour effectuer un OU exclusif logique, voir page 6-40.
Un point SINT ou INT est converti en valeur DINT par remplissage par zros. Source B SINT INT DINT immdiat point valeur utilise par l'instruction XOR avec Source A
Un point SINT ou INT est converti en valeur DINT par remplissage par zros. Destination SINT INT DINT point stocke le rsultat
Texte structur
dest := sourceA XOR sourceB
Utilisez XOR comme oprateur dans une expression. Cette expression calcule sourceA OU exclusif sourceB. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point XOR Type FBD_LOGICAL Format structure Description structure XOR
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-29
Structure FBD_LOGICAL
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Valeur utilise par l'instruction XOR avec SourceB. Valeurs correctes = tout nombre entier. Valeur utilise par l'instruction XOR avec SourceA. Valeurs correctes = tout nombre entier. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Si vous mlangez des types d'entiers, l'instruction crit des 0 pour les bits suprieurs dans des entiers de taille infrieure, pour qu'ils aient la mme taille que les entiers de grande taille.
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune Excution : Logique relais
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai pendant la post-scrutation Action L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction effectue une opration OU sur bits. L'tat de sortie de la ligne est rgl sur vrai. L'tat de sortie de la ligne est rgl sur faux.
6-30
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
value_1
value_2
value_result_xor
Logique relais
Texte structur :
value_result_xor := value_1 XOR value_2;
Bloc fonctionnel
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-31
L'instruction NOT effectue une opration COMPLEMENT sur bits l'aide des bits de la Source et stocke le rsultat dans la Destination. Pour effectuer un COMPLEMENT logique, voir page 6-42.
Logique relais
Oprande Source Type SINT INT DINT Format immdiat point Description valeur de ngation
Un point SINT ou INT est converti en valeur DINT par remplissage par zros. Destination SINT INT DINT point stocke le rsultat
Texte structur
dest := NOT source
Utilisez NOT comme oprateur dans une expression. L'expression calcule COMPLEMENT source. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point NOT Type FBD_LOGICAL Format structure Description structure NOT
Structure FBD_LOGICAL
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Valeur de ngation. Valeurs correctes = tout nombre entier. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
6-32
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Si vous mlangez des types d'entiers, l'instruction crit des 0 pour les bits suprieurs dans des entiers de taille infrieure, pour qu'ils aient la mme taille que les entiers de grande taille.
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune Excution : Logique relais
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai pendant la post-scrutation Action L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction effectue une opration COMPLEMENT sur bits. L'tat de sortie de la ligne est rgl sur vrai. L'tat de sortie de la ligne est rgl sur faux.
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
value_1
value_result_not
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-33
Logique relais
Texte structur :
value_result_not := NOT value_1;
Bloc fonctionnel
6-34
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
ET boolen (BAND)
L'instruction BAND effectue une opration ET logique de 8 entres boolennes maximum. Pour effectuer un ET sur bits, voir page 6-22.
Utilisez AND ou le signe & comme oprateur dans une expression. Les oprandes doivent tre des valeurs BOOL ou des expressions values en valeurs BOOL. Cette expression calcule si operandA et operandB sont tous les deux activs (vrai). Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point BAND Type FBD_BOOLEAN_AND Format structure Description structure BAND
Structure FBD_BOOLEAN_AND
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Premire entre boolenne. Activ par dfaut. Deuxime entre boolenne. Activ par dfaut. Troisime entre boolenne. Activ par dfaut. Quatrime entre boolenne. Activ par dfaut. Cinquime entre boolenne. Activ par dfaut. Sixime entre boolenne. Activ par dfaut. Septime entre boolenne. Activ par dfaut. Huitime entre boolenne. Activ par dfaut. Description Sortie active. Sortie de l'instruction.
In1 In2 In3 In4 In5 In6 In7 In8 Paramtre de sortie EnableOut Out
BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL Type de donnes BOOL BOOL
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-35
Texte structur :
value_result_and := bool_in1 AND bool_in2;
Bloc fonctionnel
6-36
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Exemple 2 : Si bool_in1 et bool_in2 sont activs (vrai), light1 est activ (allum).
Sinon, light1 est effac (teint).
Texte structur :
IF bool_in1 AND bool_in2 THEN light1 := 1; ELSE light1 := 0; END_IF;
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-37
OU boolen (BOR)
L'instruction BOR effectue une opration OU logique sur huit entres boolennes maximum. Pour effectuer un OU sur bits, voir page 6-25.
Utilisez OR comme oprateur dans une expression. Les oprandes doivent tre des valeurs BOOL ou des expressions values en valeurs BOOL. Cette expression calcule si operandA ou operandB, ou les deux, sont activs (vrai). Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point BOR Type FBD_BOOLEAN_OR Format structure Description structure BOR
Structure FBD_BOOLEAN_OR
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Premire entre boolenne. Effac par dfaut. Deuxime entre boolenne. Effac par dfaut. Troisime entre boolenne. Effac par dfaut. Quatrime entre boolenne. Effac par dfaut. Cinquime entre boolenne. Effac par dfaut. Sixime entre boolenne. Effac par dfaut. Septime entre boolenne. Effac par dfaut. Huitime entre boolenne. Effac par dfaut. Description Sortie active. Sortie de l'instruction.
In1 In2 In3 In4 In5 In6 In7 In8 Paramtre de sortie EnableOut Out
BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL Type de donnes BOOL BOOL
6-38
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-39
Texte structur :
value_result_or := bool_in1 OR bool_in2;
Bloc fonctionnel
Texte structur :
IF bool_in1 OR bool_in2 THEN light1 := 1; ELSE light1 := 0; END_IF;
6-40
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
L'instruction BXOR effectue une opration OU exclusif sur deux entres boolennes. Pour effectuer un OU exclusif sur bits, voir page 6-28.
Texte structur
IF operandA XOR operandB THEN <instruction>; END_IF;
Utilisez XOR comme oprateur dans une expression. Les oprandes doivent tre des valeurs BOOL ou des expressions qui sont values en valeurs BOOL. Cette expression calcule si seulement operandA ou si seulement operandB est activ (vrai). Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point BXOR Type FBD_BOOLEAN_XOR Format structure Description structure BXOR
Structure FBD_BOOLEAN_XOR
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Premire entre boolenne. Effac par dfaut. Deuxime entre boolenne. Effac par dfaut. Description Sortie active. Sortie de l'instruction.
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-41
Excution :
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action du bloc fonctionnel Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Texte structur :
value_result_xor := bool_in1 XOR bool_in2;
Bloc fonctionnel
Texte structur :
IF bool_in1 XOR bool_in2 THEN light1 := 1; ELSE light1 := 0; END_IF;
6-42
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
L'instruction BNOT complte une entre boolenne. Pour effectuer un COMPLEMENT sur bits, voir page 6-31.
Texte structur
IF NOT operand THEN <instruction>; END_IF;
Utilisez NOT comme oprateur dans une expression. Les oprandes doivent tre des valeurs BOOL ou des expressions values en valeurs BOOL. Cette expression calcule si operand est effac (faux). Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point BNOT Type FBD_BOOLEAN_NOT Format structure Description structure BNOT
Structure FBD_BOOLEAN_NOT
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Entre dans l'instruction. Activ par dfaut. Description Sortie active. Sortie de l'instruction.
aucune
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
6-43
Excution :
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action du bloc fonctionnel Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Texte structur :
value_result_not := NOT bool_in1;
Bloc fonctionnel
Exemple 2 : Si bool_in1 est effac, light1 est effac (teint). Sinon, light1 est
activ (allum).
Texte structur :
IF NOT bool_in1 THEN light1 := 0; ELSE light1 := 1; END_IF;
6-44
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Notes :
Chapitre
Introduction
Si vous voulez effectuer des oprations arithmtiques, logiques, de dcalage et de fonction sur des valeurs de tableaux chercher et comparer des valeurs de tableaux copier le contenu d'un tableau dans un autre copier le contenu d'un tableau dans un autre sans interruption remplir un tableau avec des donnes particulires calculer la moyenne d'un tableau de valeurs classer une dimension de donnes de tableau en ordre croissant calculer l'cart type d'un tableau de valeurs trouver la taille d'une dimension de tableau
(1)
Il n'existe pas d'instruction quivalente en texte structur. Utilisez une autre programmation en texte structur pour obtenir le mme rsultat. Voir la description de l'instruction.
Vous pouvez combiner diffrents types de donnes, mais des erreurs de prcision et un arrondissement des valeurs peuvent se produire et l'instruction est plus longue excuter. Vrifiez le bit S:V pour voir si le rsultat a t tronqu. Pour les instructions de logique relais, les types de donnes en gras indiquent les types de donnes optimaux. Une instruction est excute plus rapidement et demande moins de mmoire si tous les oprandes de l'instruction utilisent le mme type de donnes optimal, gnralement DINT ou REAL.
7-2
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Pour les instructions FAL et FSC, le mode indique l'automate comment rpartir l'opration sur tableau.
Si vous voulez agir sur tous les lments indiqus dans un tableau avant de continuer avec l'instruction suivante rpartir l'opration sur tableau sur plusieurs scrutations entrez le nombre d'lments sur lesquels effectuer l'opration chaque scrutation (1 2147483647) traiter un lment du tableau chaque fois que l'tat d'entre de la ligne passe de faux vrai Slectionnez ce mode Tout Numrique
Incrmental
Mode Tout
En mode Tout, tous les lments indiqus dans le tableau subissent l'opration avant de continuer avec l'instruction suivante. L'opration commence lorsque l'tat d'entre de la ligne de l'instruction passe de faux vrai. La valeur de position (.POS) de la structure de contrle indique l'lment du tableau actuellement utilis par l'instruction. L'opration s'arrte lorsque la valeur .POS est gale la valeur .LEN.
Tableau de donnes une scrutation
16639
Le diagramme de temporisation cidessous indique la relation entre les bits d'tat et le fonctionnement de l'instruction. Lorsque l'excution de l'instruction est termine, le bit .DN est activ. Les bits .DN et .EN, ainsi que la valeur .POS, sont effacs lorsque l'tat d'entre de la ligne est faux. A ce moment seulement, une autre excution de l'instruction
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-3
peut tre dclenche par une transition fauxvrai de l'tat d'entre de la ligne.
une scrutation
bit .EN
bit .DN efface les bits d'tat et la valeur .POS scrutation de l'instruction
opration termine
aucune excution
40010
Mode Numrique
Le mode Numrique rpartit l'opration sur tableau entre un certain nombre de scrutations. Ce mode est utile pour travailler avec des donnes sans temps critique ou avec de grandes quantits de donnes. Vous entrez le nombre d'lments sur lesquels agir pour chaque scrutation, ce qui rduit la dure de scrutation. L'excution est dclenche lorsque l'tat d'entre de la ligne passe de faux vrai. Une fois dclenche, l'instruction est excute continuellement chaque fois qu'elle est scrute, pendant le nombre de scrutations ncessaires pour terminer l'opration sur le tableau entier. Une fois dclenche, l'tat d'entre de la ligne peut changer plusieurs fois sans interrompre l'excution de l'instruction.
une scrutation
deuxime scrutation
scrutation suivante
16641
7-4
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
IMPORTANT
Evitez d'utiliser les rsultats d'une instruction de fichier fonctionnant en mode Numrique tant que le bit .DN n'est pas activ.
Le diagramme de temporisation cidessous indique la relation entre les bits d'tat et le fonctionnement de l'instruction. Lorsque l'excution de l'instruction est termine, le bit .DN est activ.
La ligne est vrai la fin de l'opration scrutations multiples La ligne est faux la fin de l'opration scrutations multiples
bit .EN bit .DN scrutation de l'instruction opration termine opration termine
40013
Si l'tat d'entre de la ligne est vrai la fin de l'opration, les bits .EN et .DN sont activs jusqu' ce que l'tat d'entre de la ligne passe faux. Lorsque l'tat d'entre de la ligne passe faux, ces bits et la valeur .POS sont effacs. Si l'tat d'entre de la ligne est faux la fin de l'opration, le bit .EN est immdiatement effac. Une scrutation aprs l'effacement du bit .EN, le bit .DN et la valeur .POS sont effacs.
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-5
Mode Incrmental
Le mode incrmental traite un lment du tableau chaque fois que l'tat d'entre de la ligne de l'instruction passe de faux vrai.
1re instruction d'activation 2e instruction d'activation 3e instruction d'activation
16643
Le diagramme de temporisation cidessous indique la relation entre les bits d'tat et le fonctionnement de l'instruction. L'excution a lieu uniquement pendant une scrutation au cours de laquelle l'tat d'entre de la ligne passe de faux vrai. Chaque fois que ceci se produit, un seul lment du tableau est trait. Si l'tat d'entre de la ligne reste vrai pendant plus d'une scrutation, l'instruction n'est excute que pendant la premire scrutation.
une scrutation
bit .EN
bit .DN
40014
Le bit .EN est activ lorsque l'tat d'entre de la ligne est vrai. Le bit .DN est activ lorsque le dernier lment du tableau a t trait. Lorsque le dernier lment a t trait et que l'tat d'entre de la ligne passe faux, les bits .EN et .DN, ainsi que la valeur .POS, sont effacs.
7-6
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Diffrence entre le mode Incrmental et Numrique au rythme d'un lment par scrutation : le mode Numrique, quel que soit le nombre d'lments par scrutation, ne requiert qu'une transition de faux vrai de l'tat d'entre de la ligne pour commencer l'excution. L'instruction continue d'excuter le nombre d'lments indiqu chaque scrutation jusqu' la fin, quel que soit l'tat d'entre de la ligne ; en mode Incrmental, l'tat d'entre de la ligne doit passer de faux vrai pour qu'un lment du tableau soit trait.
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-7
L'instruction FAL effectue des oprations de copie, arithmtiques, logiques et de fonction sur des donnes stockes dans un tableau.
Logique relais
Oprande Commande Longueur Position Mode Type CONTROL DINT DINT DINT Format point immdiat immdiat immdiat Description structure de contrle pour l'opration nombre d'lments du tableau traiter lment en cours du tableau la valeur initiale est gnralement 0 mode de rpartition de l'opration slectionner INC, ALL ou entrer un nombre point pour le stockage du rsultat
Destination
point
Expression
immdiat point
expression constitue de points et/ou de valeurs immdiates spares par des oprateurs
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Texte structur
Il n'y a pas d'instruction FAL en texte structur, mais vous pouvez obtenir le mme rsultat en utilisant une instruction SIZE et une instruction de test FOR...DO (POUR...FAIRE) ou une autre construction en boucle.
SIZE(destination,0,length-1); FOR position = 0 TO length DO destination[position] := numeric_expression; END_FOR;
Pour des informations sur la syntaxe des instructions de test en texte structur, reportez-vous l'Annexe C.
7-8
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Structure CONTROL
Mnmonique .EN .DN .ER Type de donnes BOOL BOOL BOOL Description Le bit d'activation indique que l'instruction FAL est active. Le bit de fin est activ lorsque l'instruction a t excute sur le dernier lment (.POS = .LEN). Le bit d'erreur est activ si l'expression gnre un dpassement suprieur (S:V est activ). L'instruction s'arrte tant que le programme n'a pas remis le bit .ER 0. La valeur .POS contient la position de l'lment qui produit le dpassement. La longueur indique le nombre d'lments du tableau sur lesquels l'instruction FAL est excute. La position contient la position de l'lment auquel l'instruction est en train d'accder.
.LEN .POS
DINT DINT
Description : L'instruction FAL effectue les mmes oprations sur les tableaux que
l'instruction CPT sur les lments. Les exemples qui commencent la page 7-14 indiquent comment utiliser la valeur .POS pour progresser dans un tableau. Si un indice dans l'expression de la Destination est en dehors des limites, l'instruction FAL gnre un dfaut majeur (type 4, code 20).
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur :
Un dfaut majeur se produit si l'indice est en dehors des limites .POS < 0 ou .LEN < 0 Type du dfaut 4 4 Code du dfaut 20 21
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-9
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux Action de la logique relais L'tat de sortie de la ligne est rgl sur faux.
bit .DN = 0
non
bit .DN = 1 le bit .EN est effac le bit .ER est effac le bit .DN est effac la valeur .POS est efface
non
oui
dfaut majeur
.POS = .POS + 1
oui
.LEN = 0 non
oui non
.LEN > mode le bit .DN est activ le bit .EN est activ oui le bit .DN est activ le bit .EN est effac
non
mode = .LEN
fin
7-10
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
.LEN < 0 ou .POS < 0 examine le bit .ER bit .ER = 1 examine le bit .DN bit .DN = 1 bit .ER = 0 non bit .DN = 0 .LEN = 0 oui le bit .DN est activ le bit .EN est activ
oui
non
commun
loop_count = loop_count - 1
non
.POS = .POS + 1
value l'expression
non
.POS = .LEN oui le bit .DN est activ le bit .EN est activ
non
.POS = .POS + 1
fin
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-11
Condition
mode INC
oui
oui
le bit .DN est activ le bit .EN est activ commun page 7-10 fin l'tat de sortie de la ligne est rgl sur vrai
7-12
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Condition
mode TOUT
bit = 1
.POS = .POS + 1
oui
oui
le bit .DN est activ le bit .EN est activ commun page 7-10
fin
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-13
Condition
mode Numrique
.POS = .POS + 1
bit = 1
oui
oui
mode = .LEN
non
.LEN mode oui le bit .EN est activ loop_count = .LEN - .POS .POS = .POS - 1 le bit .DN est activ le bit .EN est activ l'tat de sortie de la ligne est rgl sur vrai
fin
oui
pendant la post-scrutation
7-14
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Expression : array_2[control_2.pos]
Destination : array_1[control_2.pos]
Exemple 2 : Lorsqu'elle est active, l'instruction FAL copie value_1 dans les 10
premires positions de la deuxime dimension de array_2.
copie d'lment dans un tableau
Expression : value_1
Destination : array_2[0,control_2.pos]
Exemple 3 : Chaque fois qu'elle est active, l'instruction FAL copie la valeur en
cours de array_1 dans value_1. L'instruction FAL utilise le mode incrmental, ainsi une seule valeur de tableau est copie chaque fois que l'instruction est active. Lorsqu'elle est active la fois suivante, l'instruction crase value_1 avec la valeur suivante dans array_1.
copie de tableau dans un lment
Expression : array_1[control_1.pos]
Destination : value_1
Destination : array_1[control_1.pos]
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-15
Destination : array_1[control_2.pos]
Destination : array_3[control_1.pos]
Exemple 7 : Chaque fois qu'elle est active, l'instruction FAL ajoute value_1 la
valeur en cours de array_1 et stocke le rsultat dans value_2. L'instruction FAL utilise le mode incrmental, une seule valeur de tableau est ainsi ajoute value_1 chaque fois que l'instruction est active. Lorsqu'elle est active la fois suivante, l'instruction crase value_2.
opration arithmtique : (lment + tableau) vers lment
Destination : value_2
7-16
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Destination : value_1
Expressions FAL
Les expressions en instructions FAL se programment de la mme faon que les expressions en instructions CPT. Utilisez les sections suivantes pour trouver les informations sur les oprateurs, le format et l'ordre d'opration valables, communs aux deux instructions.
Oprateurs valables
Oprateur + * / ** ABS ACS AND ASN ATN COS DEG FRD LN Description addition soustraction/ngation multiplication division exposant (x y) valeur absolue cosinus d'arc ET sur bits sinus d'arc tangente d'arc cosinus radians en degrs DCB en nombre entier logarithme naturel Optimal DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL REAL DINT REAL REAL REAL DINT, REAL DINT REAL Oprateur LOG MOD NOT OR RAD SIN SQR TAN TOD TRN XOR Description logarithme dcimal modulo complment sur bits OU sur bits degrs en radians sinus racine carre tangente nombre entier en DCB troncation OU exclusif sur bits Optimal REAL DINT, REAL DINT DINT DINT, REAL REAL DINT, REAL REAL DINT DINT, REAL DINT
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-17
7-18
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
L'instruction FSC compare des valeurs dans un tableau, lment par lment.
Logique relais
Oprande Commande Longueur Position Type CONTROL DINT DINT Format point immdiat immdiat Description structure de contrle pour l'opration nombre d'lments du tableau traiter offset dans le tableau la valeur initiale est gnralement 0
Structure CONTROL
Mnmonique .EN .DN .ER .IN .FD .LEN .POS Type de donnes Description BOOL BOOL BOOL BOOL BOOL DINT DINT Le bit d'activation indique que l'instruction FSC est active. Le bit de fin est activ lorsque l'instruction a t excute sur le dernier lment (.POS = .LEN). Le bit d'erreur n'est pas modifi. Le bit d'inhibition indique que l'instruction FSC a dtect une vraie comparaison. Vous devez effacer ce bit pour continuer l'opration de recherche. Le bit trouv indique que l'instruction FSC a dtect une vraie comparaison. La longueur indique le nombre d'lments du tableau sur lesquels l'instruction est excute. La position contient la position de l'lment auquel l'instruction est en train d'accder.
Description : Lorsque l'instruction FSC est active et que la comparaison est vraie,
l'instruction active le bit .FD et le bit .POS reflte la position du tableau laquelle l'instruction a trouv la comparaison vraie. L'instruction active le bit .IN pour empcher la recherche de continuer.
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur :
Un dfaut majeur se produit si .POS < 0 ou .LEN < 0 Type du dfaut 4 Code du dfaut 21
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-19
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux Action de la logique relais L'tat de sortie de la ligne est rgl sur faux.
bit .DN = 0
non
bit .DN = 1 le bit .EN est effac le bit .ER est effac le bit .DN est effac la valeur .POS est efface
non
oui
dfaut majeur
.POS = .POS + 1
oui
.LEN = 0 non
oui non
.LEN > mode le bit .DN est activ le bit .EN est activ oui le bit .DN est activ le bit .EN est effac
non
mode = .LEN
mode Numrique l'tat de sortie de la ligne est rgl sur faux page 7-13
fin
7-20
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
.LEN < 0 ou .POS < 0 examine le bit .ER bit .ER = 1 examine le bit .IN bit .DN = 1 bit .IN = 0 bit .ER = 0 non bit .DN = 0
loop_count = loop_count - 1
non
.POS = .POS + 1
value la comparaison
correspondance oui .POS = .POS + 1 le bit .EN est activ le bit .FD est activ le bit .IN est activ
non
.POS = .LEN oui le bit .DN est activ le bit .EN est activ
non
.POS = .POS + 1
fin
pendant la post-scrutation
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-21
array_1 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000001111111111111111 11111111111111111111111111111111 11111111111111111111111111111111 11111111111111111111111111111111 11111111111111111111111111111111 11111111111111111111111111111111
array_2 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 11111111111111110000000000000000 11111111111111111111111111111111 11111111111111111111111111111111 11111111111111111111111111111111 11111111111111111111111111111111 11111111111111111111111111111111 0 1 2 3 4 5 6 7 8 9
control_3.pos
L'instruction FSC trouve que ces lments ne sont pas gaux. Elle active les bits .FD et .IN. La valeur .POS (4) indique la position des lments qui ne sont pas gaux. Pour continuer comparer le reste du tableau, effacez le bit .IN.
MySearchKey
control_3.pos
11111111111111110000000000000000
L'instruction FSC trouve que cet lment de tableau correspond MySearchKey. Elle active les bits .FD et .IN. La valeur .POS (4) indique la position de l'lment correspondant. Pour continuer comparer le reste du tableau, effacez le bit .IN.
7-22
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
code
code_table AFG BEH HUO SAK SAM SAM FQG CLE CAK DET BWG 0 1 2 3 4 5 6 7 8 9
code_table_search.POS
L'instruction FSC trouve que cet lment de tableau correspond code. Elle active les bits .FD et .IN. La valeur .POS (4) indique la position de l'lment correspondant. Pour continuer comparer le reste du tableau, effacez le bit .IN.
Expressions FSC
Les expressions en instructions FSC se programment de la mme faon que les expressions en instructions CMP. Utilisez les sections suivantes pour trouver les informations sur les oprateurs, le format et l'ordre d'opration valables, communs aux deux instructions.
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-23
Oprateurs valables
Oprateur + * / = < <= > >= <> ** ABS ACS AND ASN ATN COS Description addition soustraction/ngation multiplication division galit infrieur infrieur ou gal suprieur suprieur ou gal diffrent exposant (x y) valeur absolue cosinus d'arc ET sur bits sinus d'arc tangente d'arc cosinus Optimal DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL REAL DINT REAL REAL REAL Oprateur DEG FRD LN LOG MOD NOT OR RAD SIN SQR TAN TOD TRN XOR Description radians en degrs DCB en nombre entier logarithme naturel logarithme dcimal modulo complment sur bits OU sur bits degrs en radians sinus racine carre tangente nombre entier en DCB troncation OU exclusif sur bits Optimal DINT, REAL DINT REAL REAL DINT, REAL DINT DINT DINT, REAL REAL DINT, REAL REAL DINT DINT, REAL DINT
7-24
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-25
Les chanes sont gales si leurs caractres concordent. Les caractres ASCII sont diffrents s'ils sont en majuscules ou en minuscules. Un A majuscule ($41) n'est pas gal un a minuscule ($61). Les valeurs hexadcimales des caractres dterminent si une chane est infrieure ou suprieure une autre chane. Pour trouver le code hexadcimal d'un caractre, reportez-vous la dernire page de ce manuel. Lorsque les deux chanes sont tries comme dans un rpertoire tlphonique, l'ordre des chanes dtermine laquelle est suprieure.
Caractres ASCII 1ab
in f ri e ur e s u p r ie ur e
Codes Hex $31$61$62 $31$62 $41 $41$42 $42 $61 $61$62 a>B AB < B
1b A AB B a ab
7-26
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Les instructions COP et CPS copient les valeurs de la Source dans la Destination. La Source reste inchange.
Logique relais
Oprande Source Type SINT INT DINT REAL chane structure SINT INT DINT REAL chane structure DINT Format point Description lment initial copier Important : les oprandes Source et Destination doivent avoir les mmes types de donnes, au risque de produire des rsultats inattendus. lment initial craser par la Source Important : les oprandes Source et Destination doivent avoir les mmes types de donnes, au risque de produire des rsultats inattendus. nombre d'lments de Destination copier
Destination
point
Longueur
immdiat point
Texte structur
COP(Source,Dest,Length); CPS(Source,Dest,Length);
Les oprandes sont les mmes que pour les instructions COP et CPS en logique relais.
permettre aux donnes d'tre modifies pendant l'opration de copie aucune des solutions ci-dessus
COP
COP
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-27
Nombre d'octets = Longueur (nombre d'octets du type de donnes de la Destination) ATTENTION Si le nombre d'octets est suprieur la longueur de la Source, des donnes imprvisibles sont copies pour les lments restants.
Les instructions COP et CPS fonctionnent sur des donnes de mmoire contigus et effectuent une simple copie de mmoire d'octet octet, ce qui demande une comprhension de la structure de la mmoire de l'automate. Les instructions COP et CPS n'crivent pas au-del de la fin du tableau. Si la longueur est suprieure au nombre total d'lments dans le tableau de Destination, les instructions COP et CPS s'arrtent la fin du tableau. Aucun dfaut majeur n'est gnr.
7-28
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai si EnableIn est activ Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute. L'tat de sortie de la ligne est rgl sur vrai. Action du texte structur Aucune. EnableIn est toujours activ. L'instruction est excute.
end_address = start_address + (Longueur nombre d'octets dans un lment de destination)
excution de l'instruction
oui
source_address = Source
destination_address = end_address
oui
non
copie les donnes de source_address dans destination _address l'tat de sortie de la ligne est rgl sur vrai source_address = source _address + 1 fin
destination_address = destination_address + 1
pendant la post-scrutation
Aucune.
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-29
Logique relais
Texte structur :
COP(array_4[0],array_5[0],10);
Logique relais
Texte structur :
COP(timer_1,array_timer[5],1);
Logique relais
Texte structur :
CPS(project_data[0],produced_array[0],100);
Publication 1756-RM003F-FR-P - Mai 2002
7-30
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Logique relais
Texte structur :
CPS(Local:0:I.Data[0],input_buffer[0],20);
array_timer[1]
array_timer[2]
array_timer[3]
array_timer[4]
array_timer[9] Enfin, l'instruction copie les valeurs timer[9] dans timer[10]
array_timer[10]
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-31
Logique relais
Texte structur :
IF S:FS THEN array_timer[0].pre := 500; array_timer[0].acc := 0; COP(array_timer[0],array_timer[1],10); END_IF;
7-32
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
L'instruction FLL remplit les lments d'un tableau avec la valeur Source. La Source reste inchange.
Logique relais
Oprande Source Type SINT INT DINT REAL SINT INT DINT REAL structure Format immdiat point Description lment copier Important : les oprandes Source et Destination doivent avoir les mmes types de donnes, au risque de produire des rsultats inattendus. lment initial craser par la Source Important : les oprandes Source et Destination doivent avoir les mmes types de donnes, au risque de produire des rsultats inattendus. La meilleure faon d'initialiser une structure est d'utiliser l'instruction COP. nombre d'lments remplir
Destination
point
Longueur
DINT
immdiat
Texte structur
Il n'y a pas d'instruction FLL en texte structur, mais vous pouvez obtenir le mme rsultat en utilisant une instruction SIZE et une instruction de test FOR...DO (POUR...FAIRE) ou une autre construction en boucle.
SIZE(destination,0,length); FOR position = 0 TO length-1 DO destination[position] := source; END_FOR;
Pour des informations sur la syntaxe des instructions de test en texte structur, reportez-vous l'Annexe C.
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-33
donnes pour la Source et la Destination, les lments de Destination sont remplis par des valeurs Source converties.
Si la Source est SINT, INT, DINT ou REAL SINT, INT, DINT ou REAL SINT, INT, DINT ou REAL SINT, INT, DINT ou REAL SINT INT DINT REAL Et la Destination est SINT INT DINT REAL structure structure structure structure La Source est convertie en SINT INT DINT REAL SINT (non convertie) INT (non convertie) DINT (non convertie) REAL (non convertie)
7-34
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux.
oui
source_address = Source
destination_address = end_address
oui
non
destination_address = destination_address + 1
fin
pendant la post-scrutation
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-35
Logique relais
Valeur Source (value_1) 16#80 (-128) 16#1234 5678 16#01 2.0 16#01
Valeur Destination (dest_1) aprs FLL 16#FFFF FF80 (-128) 16#78 1.0 16#0002 16#0101 0101 16#0101 0101 16#0101 0101 16#0001 0001 16#0001 0001 16#0001 0001 16#0000 0001 16#0000 0001 16#0000 0001
INT
16#0001
TIMER
DINT
16#0000 0001
TIMER
Texte structur
dest_1 := value_1;
7-36
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Moyenne (AVE)
Oprandes :
Logique relais
Oprande Tableau Type SINT INT DINT REAL DINT Format point de tableau Description trouve la moyenne des valeurs dans ce tableau indique le premier lment du groupe d'lments sur lequel faire une moyenne n'utilisez pas CONTROL.POS dans l'indice dimension utiliser selon le nombre de dimensions, l'ordre est array[dim_0,dim_1,dim_2] array[dim_0,dim_1] array[dim_0] rsultat de l'opration
Dimension variable
immdiat (0, 1, 2)
Destination
point
structure de contrle pour l'opration nombre d'lments du tableau sur lesquels faire la moyenne lment en cours du tableau la valeur initiale est gnralement 0
Texte structur
Il n'y a pas d'instruction AVE en texte structur, mais vous pouvez obtenir le mme rsultat en utilisant une instruction SIZE et une instruction de test FOR...DO (POUR...FAIRE) ou une autre construction en boucle.
SIZE(array,0,length); sum := 0; FOR position = 0 TO length-1 DO sum := sum + array[position]; END_FOR; destination := sum / length;
Pour des informations sur la syntaxe des instructions de test en texte structur, reportez-vous l'Annexe C.
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-37
Structure CONTROL
Mnmonique .EN .DN .ER Type de donnes Description BOOL BOOL BOOL Le bit d'activation indique que l'instruction AVE est active. Le bit de fin est activ lorsque l'instruction a t excute sur le dernier lment du tableau (.POS = .LEN). Le bit d'erreur est activ si l'instruction gnre un dpassement suprieur. L'instruction s'arrte jusqu' ce que le programme remette 0 le bit .ER. La position de l'lment qui a provoqu le dpassement est stocke dans la valeur .POS. La longueur indique le nombre d'lments du tableau sur lesquels l'instruction est excute. La position contient la position de l'lment auquel l'instruction est en train d'accder.
.LEN .POS
DINT DINT
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur :
Un dfaut majeur se produit si .POS < 0 ou .LEN < 0 La variation de Dimension n'existe pas dans le tableau indiqu Type du dfaut 4 4 Code du dfaut 21 20
7-38
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Excution :
Condition pendant la pr-scrutation Action de la logique relais Le bit .EN est effac. Le bit .DN est effac. Le bit .ER est effac. L'tat de sortie de la ligne est rgl sur faux.
bit .DN = 0
bit .DN = 1
le bit .EN est effac le bit .ER est effac le bit .DN est effac la valeur .POS est efface
fin
L'instruction AVE calcule la moyenne en additionnant tous les lments indiqus dans le tableau et en divisant par le nombre d'lments. En interne, l'instruction utilise une instruction FAL pour calculer la moyenne : Expression = calcul de moyenne Mode = TOUT Pour plus de dtails sur l'excution de l'instruction FAL, voir page 7-9. L'tat de sortie de la ligne est rgl sur faux.
pendant la post-scrutation
0 20 15 10 5 19 14 9 4
1 18 13 8 3
2 17 12 7 2
3 16 11 6 1
0 dimension 0 1 2 3
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-39
Logique relais
Texte structur
SIZE(array_dint,0,length); sum := 0; FOR position = 0 TO (length-1) DO sum := sum + array_dint[position]; END_FOR; dint_ave := sum / length;
7-40
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
0 20 15 10 5 19 14 9 4
1 18 13 8 3
2 17 12 7 2
3 16 11 6 1
0 dimension 0 1 2 3
Logique relais
Texte structur
SIZE(array_dint,1,length); sum := 0; FOR position = 0 TO (length-1) DO sum := sum + array_dint[position]; END_FOR; dint_ave := sum / length;
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-41
L'instruction SRT trie un jeu de valeurs dans une dimension (variation de Dimension) du tableau en ordre croissant.
Logique relais
Oprande Tableau Type SINT INT DINT REAL DINT Format point de tableau Description tableau trier indique le premier lment du groupe d'lments trier n'utilisez pas CONTROL.POS dans l'indice dimension utiliser selon le nombre de dimensions, l'ordre est array[dim_0,dim_1,dim_2] array[dim_0,dim_1] array[dim_0] structure de contrle pour l'opration nombre d'lments du tableau trier lment en cours du tableau la valeur initiale est gnralement 0
Dimension variable
immdiat (0, 1, 2)
Texte structur
SRT(Array,Dimtovary, Control);
Les oprandes sont les mmes que ceux de l'instruction SRT en logique relais. Indiquez cependant les valeurs de longueur et de position en accdant aux membres .LEN et .POS de la structure CONTROL, plutt qu'en incluant des valeurs dans la liste des oprandes.
Structure CONTROL
Mnmonique .EN .DN .ER .LEN .POS Type de donnes BOOL BOOL BOOL DINT DINT Description Le bit d'activation indique que l'instruction SRT est active. Le bit de fin est activ lorsque les lments indiqus ont t tris. Le bit d'erreur est activ lorsque .LEN < 0 ou .POS < 0. Ces deux tats entranent un dfaut majeur. La longueur indique le nombre d'lments du tableau sur lesquels l'instruction est excute. La position contient la position de l'lment auquel l'instruction est en train d'accder.
Description : L'instruction SRT trie un jeu de valeurs dans une dimension (variation
de Dimension) du tableau en ordre croissant. IMPORTANT Assurez-vous que la longueur n'entrane pas l'instruction au-del de la variation de Dimension indique. Le cas chant, des rsultats inattendus se produiront.
7-42
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Il s'agit d'une instruction de transition : en logique relais, fait passer l'tat d'entre de la ligne d'effac activ chaque fois que l'instruction doit tre excute ; en texte structur, conditionne l'instruction afin qu'elle soit excute uniquement lors d'une transition. Voir Annexe C.
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur :
Un dfaut majeur se produit si .POS < 0 ou .LEN < 0 La variation de Dimension n'existe pas dans le tableau indiqu L'instruction essaie d'accder aux donnes en dehors des limites du tableau Type du dfaut 4 4 4 Code du dfaut 21 20 20
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-43
Excution :
Condition pendant la pr-scrutation Action de la logique relais Le bit .EN est effac. Le bit .DN est effac. Le bit .ER est effac. L'tat de sortie de la ligne est rgl sur faux. Action du texte structur Le bit .EN est effac. Le bit .DN est effac. Le bit .ER est effac. -
bit .DN = 1
le bit .EN est effac le bit .ER est effac le bit .DN est effac la valeur .POS est efface
fin
si l'tat d'entre de la ligne est vrai si EnableIn est activ pendant l'excution de l'instruction pendant la post-scrutation
L'instruction est excute. L'tat de sortie de la ligne est rgl sur vrai. L'instruction trie les lments indiqus du tableau en ordre croissant. L'tat de sortie de la ligne est rgl sur faux.
EnableIn est toujours activ. L'instruction est excute. L'instruction trie les lments indiqus du tableau en ordre croissant. Aucune.
7-44
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Aprs
dimension 1 3 17 12 7 2 16 11 dimension 0 10 5 9 4 8 3 6 1 4 0 20 15 10 5 19 14 9 4 1 3 8 13 18 2 17 12 7 2 3 16 11 6 1 4
0 20 15 19 14
1 18 13
0 dimension 0 1 2 3
0 1 2 3
Logique relais
Texte structur
control_1.LEN := 4; control_1.POS := 0; SRT(int_array[0,2],0,control_1);
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-45
Aprs
dimension 1 3 17 12 7 2 16 11 dimension 0 10 5 9 4 8 3 6 1 4 0 20 15 6 5 19 14 7 4 1 18 13 8 3 2 17 12 9 2 3 16 11 10 1 4
0 20 15 19 14
1 18 13
0 dimension 0 1 2 3
0 1 2 3
Logique relais
Texte structur
control_1.LEN := 5; control_1.POS := 0; SRT(int_array[2,0],1,control_1);
7-46
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
L'instruction STD calcule l'cart type d'un ensemble de valeurs dans une dimension du tableau et stocke le rsultat dans la Destination.
Logique relais
Oprande Tableau Type SINT INT DINT REAL Format point de tableau Description trouve l'cart type des valeurs dans ce tableau indique le premier lment du groupe d'lments utiliser pour calculer l'cart type n'utilisez pas CONTROL.POS dans l'indice dimension utiliser selon le nombre de dimensions, l'ordre est array[dim_0,dim_1,dim_2] array[dim_0,dim_1] array[dim_0] rsultat de l'opration structure de contrle pour l'opration nombre d'lments du tableau utiliser pour calculer l'cart type lment en cours du tableau la valeur initiale est gnralement 0
Un point SINT ou INT est converti en valeur DINT par extension de signe. Dimension variable DINT immdiat (0, 1, 2)
Structure CONTROL
Mnmonique .EN .DN .ER Type de donnes BOOL BOOL BOOL Description Le bit d'activation indique que l'instruction STD est active. Le bit de fin est activ lorsque le calcul est termin. Le bit d'erreur est activ lorsque l'instruction gnre un dpassement suprieur. L'instruction s'arrte tant que le programme n'a pas remis le bit .ER 0. La position de l'lment qui a provoqu le dpassement est stocke dans la valeur .POS. La longueur indique le nombre d'lments du tableau sur lesquels l'instruction est excute. La position contient la position de l'lment auquel l'instruction est en train d'accder.
.LEN .POS
DINT DINT
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-47
Texte structur
Il n'y a pas d'instruction STD en texte structur, mais vous pouvez obtenir le mme rsultat en utilisant une instruction SIZE et une instruction de test FOR...DO (POUR...FAIRE) ou une autre construction en boucle.
SIZE(array,0,length); sum := 0; FOR position = 0 TO length-1 DO sum := sum + array[position]; END_FOR; average := sum / length; sum := 0; FOR position = 0 TO length-1 DO sum := sum + ((array[position] - average)**2); END_FOR; destination := SQRT(sum /(length-1));
Pour des informations sur la syntaxe des instructions de test en texte structur, reportez-vous l'Annexe C.
Description : L'cart type est calcul selon la formule suivante : N 2 [ X AVE ] ( start + i ) i = 1 ------------------------------------------------------------------(N 1)
Ecart type =
O : start = indice de variation de dimension de l'oprande du tableau xi = lment variable dans le tableau N = nombre d'lments indiqus dans le tableau AVE =
x ( start + i ) i = 1 ---------------------------------------N
7-48
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
IMPORTANT
Assurez-vous que la longueur n'entrane pas l'instruction au-del de la variation de Dimension indique. Le cas chant, la Destination sera incorrecte.
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur :
Un dfaut majeur se produit si .POS < 0 ou .LEN < 0 La variation de Dimension n'existe pas dans le tableau indiqu Type du dfaut 4 4 Code du dfaut 21 20
Excution :
Condition pendant la pr-scrutation Action de la logique relais Le bit .EN est effac. Le bit .DN est effac. Le bit .ER est effac. L'tat de sortie de la ligne est rgl sur faux.
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-49
bit .DN = 0
bit .DN = 1
le bit .EN est effac le bit .ER est effac le bit .DN est effac la valeur .POS est efface
fin
L'instruction STD calcule l'cart type de l'lment indiqu. En interne, l'instruction utilise une instruction FAL pour calculer la moyenne : Expression = calcul de l'cart type Mode = TOUT Pour plus de dtails sur l'excution de l'instruction FAL, voir page 7-9. L'tat de sortie de la ligne est rgl sur faux.
pendant la post-scrutation
0 20 15 10 5 19 14 9 4
1 18 13 8 3
2 17 12 7 2
3 16 11 6 1
0 dimension 0 1 2 3
STD =
real_std = 6,454972
7-50
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Logique relais
Texte structur
SIZE(dint_array,0,length); sum := 0; FOR position = 0 TO (length-1) DO sum := sum + dint_array[position]; END_FOR; average := sum / length; sum := 0; FOR position = 0 TO (length-1) DO sum := sum + ((dint_array[position] - average)**2); END_FOR; real_std := SQRT(sum / (length-1));
0 20 15 10 5 19 14 9 4
1 18 13 8 3
2 17 12 7 2
3 16 11 6 1
0 dimension 0 1 2 3
STD =
20 18 + 19 18 + 18 18 + 17 18 + 16 18 ----------------------------------------------------------------------------------------------------------------------------------------------------------- = 1.581139 5 1
real_std = 1,581139
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-51
Logique relais
Texte structur
SIZE(dint_array,1,length); sum := 0; FOR position = 0 TO (length-1) DO sum := sum + dint_array[position]; END_FOR; average := sum / length; sum := 0; FOR position = 0 TO (length-1) DO sum := sum + ((dint_array[position] - average)**2); END_FOR; real_std := SQRT(sum / (length-1));
7-52
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Logique relais
Oprande Source Type Format Description tableau sur lequel l'instruction agit
Dimension variable
immdiat (0, dimension utiliser 1, 2) Pour la taille de premire dimension deuxime dimension troisime dimension
Entrez 0 1 2
SIZE
point
point dans lequel le nombre d'lments de la dimension indique du tableau est stock
Texte structur
SIZE(Source,Dimtovary,Size);
Les oprandes sont les mmes que ceux de l'instruction SIZE en logique relais.
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
7-53
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai si EnableIn est activ pendant l'excution de l'instruction pendant la post-scrutation Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute. L'tat de sortie de la ligne est rgl sur vrai. L'instruction cherche la taille d'une dimension. L'tat de sortie de la ligne est rgl sur faux. Action du texte structur Aucune. EnableIn est toujours activ. L'instruction est excute. L'instruction cherche la taille d'une dimension. Aucune.
Logique relais
SIZE Size in Elements Source array_a[0] 255 Dim. To Vary 0 Size array_a_size 10
Texte structur
SIZE(array_a,0,array_a_size);
Logique relais
SIZE Size in Elements Source string_1.DATA[0] '$00' Dim. To Vary 0 Size string_1_size 82
7-54
Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Texte structur
SIZE(string_1.DATA[0],0,string_1_size);
Logique relais
SIZE Size in Elements Source strings_a[0].DATA[0] '$00' Dim. To Vary 0 Size data_size_a 24
Texte structur
SIZE(strings_a[0].DATA[0],0,data_size_a);
Chapitre
Introduction
Si vous voulez charger, dcaler et dcharger des bits dans un tableau de bits, un bit la fois
Utilisez les instructions sur tableau (fichier)/dcalage pour modifier l'emplacement de donnes dans des tableaux.
Utilisez cette instruction BSL BSR FFL FFU LFL LFU Disponible dans ces langages logique relais logique relais logique relais logique relais logique relais logique relais Voir page 8-2 8-5 8-8 8-14 8-20 8-26
charger et dcharger des valeurs dans le mme ordre charger et dcharger des valeurs dans l'ordre inverse
Vous pouvez combiner diffrents types de donnes, mais des erreurs de perte de prcision et d'arrondissement peuvent se produire. Pour les instructions de logique relais, les types de donnes en gras indiquent les types de donnes optimaux. Une instruction est excute plus rapidement et demande moins de mmoire si tous les oprandes de l'instruction utilisent le mme type de donnes optimal, gnralement DINT ou REAL.
8-2
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
L'instruction BSL dcale les bits indiqus d'une position vers la gauche dans le tableau.
Logique relais
Oprande Tableau Type DINT Format point de tableau Description tableau modifier indique le premier lment du groupe d'lments n'utilisez pas CONTROL.POS dans l'indice structure de contrle pour l'opration bit dcaler nombre de bits dcaler dans le tableau
Structure CONTROL
Mnmonique .EN .DN .UL .ER .LEN Type de donnes BOOL BOOL BOOL BOOL DINT Description Le bit d'activation indique que l'instruction BSL est active. Le bit de fin est activ pour indiquer que des bits ont t dcals d'une position vers la gauche. Le bit de dchargement est la sortie de l'instruction. Le bit .UL stocke l'tat du bit qui a t dcal hors de la plage de bits. Le bit d'erreur est activ lorsque .LEN < 0. La longueur dfinit le nombre de bits de tableau dcaler.
Description : Lorsqu'elle est active, l'instruction dcharge le bit le plus lev des
bits indiqus dans le bit .UL, dcale les bits restants d'une position vers la gauche et charge le bit de Source dans le bit 0 du tableau. L'instruction BSL fonctionne sur de la mmoire contigu.
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
8-3
Excution :
Condition pendant la pr-scrutation Action de la logique relais Le bit .EN est effac. Le bit .DN est effac. Le bit .ER est effac. La valeur .POS est efface. L'tat de sortie de la ligne est rgl sur faux. Le bit .EN est effac. Le bit .DN est effac. Le bit .ER est effac. La valeur .POS est efface. L'tat de sortie de la ligne est rgl sur faux.
bit .EN = 1
.LEN = 0
oui
non examine le bit de source bit .source = 1 le bit .UL reste activ
.LEN < 0
oui
bit .source = 0 non le bit .UL est activ dcale le tableau d'une position vers la gauche tableau Bit source
bit .UL
l'tat de sortie de la ligne est rgl sur vrai le bit .DN est activ .POS = .LEN
fin
pendant la post-scrutation
8-4
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
8 0
7 1
6 1
5 1
4 1
3 0
2 0
1 0
0 0 1
input_1
8 1
7 1
6 1
5 1
4 0
3 0
2 0
1 0
0 1
31 array_dint[0] 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0
31 array_dint[1] 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0
0 0
0 bit .UL
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
8-5
L'instruction BSR dcale les bits indiqus d'une position vers la droite dans le tableau.
Logique relais
Oprande Tableau Type DINT Format point de tableau Description tableau modifier indique l'lment avec lequel commencer le dcalage n'utilisez pas CONTROL.POS dans l'indice structure de contrle pour l'opration bit dcaler nombre de bits dans le tableau dcaler
Structure CONTROL
Mnmonique .EN .DN .UL .ER .LEN Type de donnes BOOL BOOL BOOL BOOL DINT Description Le bit d'activation indique que l'instruction BSR est active. Le bit de fin est activ pour indiquer que des bits ont t dcals d'une position vers la droite. Le bit de dchargement est la sortie de l'instruction. Le bit .UL stocke l'tat du bit qui a t dcal hors de la plage de bits. Le bit d'erreur est activ lorsque .LEN < 0. La longueur dfinit le nombre de bits de tableau dcaler.
8-6
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
Excution :
Condition pendant la pr-scrutation Action de la logique relais Le bit .EN est effac. Le bit .DN est effac. Le bit .ER est effac. La valeur .POS est efface. L'tat de sortie de la ligne est rgl sur faux. Le bit .EN est effac. Le bit .DN est effac. Le bit .ER est effac. La valeur .POS est efface. L'tat de sortie de la ligne est rgl sur faux.
bit .EN = 1
.LEN = 0
oui
non examine le bit de source bit .source = 1 le bit .UL reste activ
.LEN < 0
oui
bit .source = 0 non le bit .UL est activ dcale le tableau d'une position vers la droite Bit source tableau
bit .UL
l'tat de sortie de la ligne est rgl sur vrai le bit .DN est activ .POS = .LEN
fin
pendant la post-scrutation
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
8-7
8 0
7 1
6 1
5 1
4 1
3 0
2 0
1 0
0 0
0 bit .UL
8 0
7 0
6 1
5 1
4 1
3 1
2 0
1 0
0 0
31 array_dint[0] 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0
0 0
0 bit .UL
31 array_dint[1] 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0
0 0
1 input_1
8-8
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
Logique relais
Oprande Type Source Format Description donnes stocker dans le FIFO
La source est convertie dans le type de donnes du point du tableau. Un nombre entier plus petit est converti en un nombre entier plus grand par extension de signe. FIFO point de SINT tableau INT DINT REAL STRING STRUCTURE CONTROL point FIFO modifier indique le premier lment du FIFO n'utilisez pas CONTROL.POS dans l'indice
Contrle
structure de contrle pour l'opration utilise gnralement le mme point CONTROL que l'instruction FFU associe nombre maximum d'lments que le FIFO peut contenir la fois emplacement suivant dans le FIFO o l'instruction charge des donnes la valeur initiale est gnralement 0
Longueur Position
DINT DINT
immdiat immdiat
Si vous utilisez une structure dfinie par l'utilisateur comme type de donnes pour l'oprande Source ou FIFO, utilisez la mme structure pour les deux oprandes.
Structure CONTROL
Mnmonique .EN .DN .EM .LEN .POS Type de donnes BOOL BOOL BOOL DINT DINT Description Le bit d'activation indique que l'instruction FFL est active. Le bit de fin est activ pour indiquer que le FIFO est plein (.POS = .LEN). Le bit .DN empche le chargement de FIFO jusqu' ce que .POS < .LEN. Le bit vide indique que le FIFO est vide. Si .LEN 0 ou .POS < 0, les bits .EM et .DN sont activs. La longueur dfinit le nombre maximum d'lments que le FIFO peut contenir la fois. La position identifie l'emplacement dans le FIFO o l'instruction chargera la nouvelle valeur.
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
8-9
8-10
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
Excution :
Condition pendant la pr-scrutation Action de la logique relais
le bit .EN est activ pour empcher un chargement incorrect lorsque la scrutation commence.
.LEN < 0
oui
non
.POS < 0
oui
non
.POS = 0
oui
non
.POS .LEN
oui
non
fin
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
8-11
.LEN < 0
oui
non
.POS < 0
oui
non
.POS = 0
oui
non
.POS .LEN
oui
non
fin
8-12
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
.EN = 0
oui
oui
.POS < 0
oui
.POS < 0 non le bit .EM est effac le bit .DN est effac
oui
le bit .EM est effac le bit .DN est effac .POS = .POS + 1
le bit .EM est activ .DN est activ .POS .LEN non oui le bit .DN est activ
.POS = 0 non
oui
le bit .EM est activ .POS ou .LEN > taille du tableau non oui dfaut majeur
oui
.POS = .POS - 1
FIFO[.POS - 1] = source
fin
pendant la post-scrutation
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
8-13
avant chargement du FIFO array_dint[0] 00000 11111 22222 33333 44444 array_dint[5] 00000 00000 00000 00000 00000 control_1.pos = 5 value_1 = 55555
aprs chargement du FIFO 00000 11111 22222 33333 44444 55555 00000 00000 00000 00000 control_1.pos = 6
8-14
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
L'instruction FFU dcharge la valeur de la position 0 (premire position) du FIFO et stocke cette valeur dans la Destination. Les donnes restantes dans le FIFO sont dcales d'une position.
Logique relais
Oprande FIFO Type Format Description FIFO modifier indique le premier lment du FIFO n'utilisez pas CONTROL.POS dans l'indice
SINT point de INT tableau DINT REAL STRING STRUCTURE SINT INT DINT REAL STRING STRUCTURE point
Destination
La valeur de destination est converti dans le type de donnes du point de destination. Un nombre entier plus petit est converti en un nombre entier plus grand par extension de signe. Contrle CONTROL point structure de contrle pour l'opration utilise gnralement le mme point CONTROL que l'instruction FFL associe nombre maximum d'lments que le FIFO peut contenir la fois emplacement suivant dans le FIFO o l'instruction dcharge des donnes la valeur initiale est gnralement 0
Longueur Position
DINT DINT
immdiat immdiat
Si vous utilisez une structure dfinie par l'utilisateur comme type de donnes pour l'oprande FIFO ou Destination, utilisez la mme structure pour les deux oprandes.
Structure CONTROL
Mnmonique .EU .DN .EM .LEN .POS Type de donnes BOOL BOOL BOOL DINT DINT Description Le bit d'activation de dchargement indique que l'instruction FFU est active. Le bit .EU est rgl pour empcher un dchargement incorrect lorsque la scrutation commence. Le bit de fin est activ pour indiquer que le FIFO est plein (.POS = .LEN). Le bit vide indique que le FIFO est vide. Si .LEN 0 ou .POS < 0, les bits .EM et .DN sont activs. La longueur dfinit le nombre maximum d'lments dans le FIFO. La position identifie la fin des donnes charges dans le FIFO.
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
8-15
Lorsqu'elle est active, l'instruction FFU dcharge des donnes du premier lment du FIFO et stocke cette valeur dans la Destination. L'instruction dcharge une valeur chaque fois qu'elle est active, jusqu' ce que le FIFO soit vide. Si le FIFO est vide, FFU renvoie 0 la Destination. L'instruction FFU fonctionne sur de la mmoire contigu.
8-16
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
Excution :
Condition pendant la pr-scrutation Action de la logique relais
le bit .EU est activ pour empcher un dchargement incorrect lorsque la scrutation commence.
.LEN < 0
oui
non
.POS < 0
oui
non
.POS = 0
oui
non
.POS .LEN
oui
non
fin
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
8-17
.LEN < 0
oui
non
.POS < 0
oui
non
.POS = 0
oui
non
.POS .LEN
oui
non
fin
8-18
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
oui
.LEN < 0
oui
.POS < 0 non le bit .EM est effac le bit .DN est effac
oui
non
.POS < 0 non le bit .EM est effac le bit .DN est effac
oui
le bit .EM est activ .DN est activ .LEN > taille du tableau non oui
oui
dfaut majeur
.POS = 0 non
.POS 1 non
oui
oui
.POS < 1 le bit .DN est activ non .POS = .POS - 1 Destination = FIFO[0] i=1
oui
Destination = 0
FIFO[i - 1] = FIFO[i] i = i +1
oui i < .LEN non l'tat de sortie de la ligne est rgl sur vrai
fin
pendant la post-scrutation
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
8-19
avant dchargement du FIFO array_dint[0] 00000 11111 22222 33333 44444 array_dint[5] 55555 00000 00000 00000 00000 control_1.pos = 6
aprs dchargement du FIFO 11111 22222 33333 44444 55555 00000 00000 00000 00000 00000 control_1.pos = 5 value_2 = 00000
8-20
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
Logique relais
Oprande Source Type Format Description donnes stocker dans le LIFO
La source est convertie dans le type de donnes du point du tableau. Un nombre entier plus petit est converti en un nombre entier plus grand par extension de signe. LIFO point de SINT tableau INT DINT REAL STRING STRUCTURE CONTROL point LIFO modifier indique le premier lment du LIFO n'utilisez pas CONTROL.POS dans l'indice
Contrle
structure de contrle pour l'opration utilise gnralement le mme point CONTROL que l'instruction LFU associe nombre maximum d'lments que le LIFO peut contenir la fois emplacement suivant dans le LIFO o l'instruction charge des donnes la valeur initiale est gnralement 0
Longueur Position
DINT DINT
immdiat immdiat
Si vous utilisez une structure dfinie par l'utilisateur comme type de donnes pour l'oprande Source ou LIFO, utilisez la mme structure pour les deux oprandes.
Structure CONTROL
Mnmonique .EN .DN .EM .LEN .POS Type de donnes BOOL BOOL BOOL DINT DINT Description Le bit d'activation indique que l'instruction LFL est active. Le bit de fin est activ pour indiquer que le LIFO est plein (.POS = .LEN). Le bit .DN empche le chargement de LIFO jusqu' ce que .POS < .LEN. Le bit vide indique que le LIFO est vide. Si .LEN 0 ou .POS < 0, les bits .EM et .DN sont activs. La longueur dfinit le nombre maximum d'lments que le LIFO peut contenir la fois. La position identifie l'emplacement dans le LIFO o l'instruction chargera la nouvelle valeur.
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
8-21
8-22
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
Excution :
Condition pendant la pr-scrutation Action de la logique relais
le bit .EN est activ pour empcher un chargement incorrect lorsque la scrutation commence.
.LEN < 0
oui
non
.POS < 0
oui
non
.POS = 0
oui
non
.POS .LEN
oui
non
fin
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
8-23
.LEN < 0
oui
non
.POS < 0
oui
non
.POS = 0
oui
non
.POS .LEN
oui
non
fin
8-24
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
.EN = 0
oui
oui
.POS < 0
oui
non le bit .EM est effac le bit .DN est effac .POS = .POS + 1 le bit .EM est activ le bit .DN est activ
.POS < 0 non le bit .EM est effac le bit .DN est effac
oui
le bit .EM est activ .DN est activ .POS .LEN non oui le bit .DN est activ
.POS = 0 non
oui
le bit .EM est activ .POS ou .LEN > taille du tableau non oui dfaut majeur
oui
.POS = .POS - 1
LIFO[.POS - 1] = source
fin
pendant la post-scrutation
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
8-25
avant chargement du LIFO array_dint[0] 00000 11111 22222 33333 44444 array_dint[5] 00000 00000 00000 00000 00000 control_1.pos = 5 value_1 = 55555
aprs chargement du LIFO 00000 11111 22222 33333 44444 55555 00000 00000 00000 00000 control_1.pos = 6
8-26
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
L'instruction LFU dcharge la valeur .POS du LIFO et stocke 0 dans cet emplacement.
Logique relais
Oprande LIFO Type Format Description LIFO modifier indique le premier lment du LIFO n'utilisez pas CONTROL.POS dans l'indice
point de SINT tableau INT DINT REAL STRING STRUCTURE SINT INT DINT REAL STRING STRUCTURE point
Destination
La valeur de destination est converti dans le type de donnes du point de destination. Un nombre entier plus petit est converti en un nombre entier plus grand par extension de signe. Contrle CONTROL point structure de contrle pour l'opration utilise gnralement le mme point CONTROL que l'instruction LFL associe nombre maximum d'lments que le LIFO peut contenir la fois emplacement suivant dans le LIFO o l'instruction dcharge des donnes la valeur initiale est gnralement 0
Longueur Position
DINT DINT
immdiat immdiat
Si vous utilisez une structure dfinie par l'utilisateur comme type de donnes pour l'oprande LIFO ou Destination, utilisez la mme structure pour les deux oprandes.
Structure CONTROL
Mnmonique .EU .DN .EM .LEN .POS Type de donnes BOOL BOOL BOOL DINT DINT Description Le bit d'activation de dchargement indique que l'instruction LFU est active. Le bit .EU est rgl pour empcher un dchargement incorrect lorsque la scrutation commence. Le bit de fin est activ pour indiquer que le LIFO est plein (.POS = .LEN). Le bit vide indique que le LIFO est vide. Si .LEN 0 ou .POS < 0, les bits .EM et .DN sont activs. La longueur dfinit le nombre maximum d'lments que le LIFO peut contenir la fois. La position identifie la fin des donnes charges dans le LIFO.
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
8-27
8-28
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
Excution :
Condition pendant la pr-scrutation Action de la logique relais
le bit .EU est activ pour empcher un dchargement incorrect lorsque la scrutation commence.
.LEN < 0
oui
non
.POS < 0
oui
non
.POS = 0
oui
non
.POS .LEN
oui
non
fin
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
8-29
.LEN < 0
oui
non
.POS < 0
oui
non
.POS = 0
oui
non
.POS .LEN
oui
non
fin
8-30
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
oui
.LEN < 0
oui
.POS < 0 non le bit .EM est effac le bit .DN est effac
oui
non
.POS < 0 non le bit .EM est effac le bit .DN est effac
oui
.POS 1 non
oui
.POS = 0 non
oui
oui
Destination = 0
oui
.POS > .LEN le bit .DN est activ non .POS = .POS - 1
oui
.POS = .LEN
oui
dfaut majeur
fin
pendant la post-scrutation
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
8-31
avant dchargement du LIFO array_dint[0] 00000 11111 22222 33333 44444 array_dint[5] 55555 00000 00000 00000 00000 control_1.pos = 6
aprs dchargement du LIFO 00000 11111 22222 33333 44444 00000 00000 00000 00000 00000 control_1.pos = 5 value_2 = 55555
8-32
Instructions sur tableau (fichier)/dcalage (BSL, BSR, FFL, FFU, LFL, LFU)
Notes :
Chapitre
Instructions squenceur
(SQI, SQO, SQL)
Introduction
Si vous voulez dtecter si une tape est termine configurer les tats de sortie pour l'tape suivante charger des tats de rfrence dans les tableaux squenceur
Pour les instructions de logique relais, les types de donnes en gras indiquent les types de donnes optimaux. Une instruction est excute plus rapidement et demande moins de mmoire si tous les oprandes de l'instruction utilisent le mme type de donnes optimal, gnralement DINT ou REAL.
9-2
L'instruction SQI dtecte la fin d'une tape dans une paire d'instructions squenceur SQO/SQI.
Logique relais
Oprande Tableau Type DINT Format point de tableau Description tableau squenceur indique le premier lment du tableau squenceur n'utilisez pas CONTROL.POS dans l'indice bits bloquer ou passer
Masque
point immdiat
Un point SINT ou INT est converti en valeur DINT par extension de signe. Source point donnes d'entre pour le tableau squenceur
Un point SINT ou INT est converti en valeur DINT par extension de signe. Contrle point structure de contrle pour l'opration utilise gnralement le mme point CONTROL que les instructions SQO et SQL nombre d'lments du tableau (tableau squenceur) comparer position en cours du tableau la valeur initiale est gnralement 0
Longueur Position
DINT DINT
immdiat immdiat
Structure CONTROL
Mnmonique .ER .LEN .POS Type de donnes BOOL DINT DINT Description Le bit d'erreur est activ lorsque .LEN 0, .POS < 0 ou .POS > .LEN. La longueur dfinit le nombre d'tapes dans le tableau squenceur. La position identifie l'lment que l'instruction est en train de comparer.
9-3
9-4
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux.
.LEN 0 .POS < 0 ou .POS > .LEN oui le bit .ER est activ
non
non
oui
fin
pendant la post-scrutation
9-5
Valeurs d'exemple (DINT affich en binaire) xxxxxxxx xxxxxxxx xxxx0101 xxxx1010 00000000 00000000 00001111 00001111 xxxxxxxx xxxxxxxx xxxx0101 xxxx1010
Un 0 dans le masque signifie que le bit n'est pas compar (dsign par xxxx dans cet exemple).
9-6
L'instruction SQO configure des tats de sortie pour l'tape suivante d'une paire d'instructions squenceur SQO/SQI.
Logique relais
Oprande Tableau Type DINT Format point de tableau Description tableau squenceur indique le premier lment du tableau squenceur n'utilisez pas CONTROL.POS dans l'indice bits bloquer ou passer
Masque
point immdiat
Un point SINT ou INT est converti en valeur DINT par extension de signe. Destination Contrle point point donnes de sortie du tableau squenceur structure de contrle pour l'opration utilise gnralement le mme point CONTROL que les instructions SQI et SQL nombre d'lments du tableau (tableau squenceur) sortir position en cours du tableau la valeur initiale est gnralement 0
Longueur Position
DINT DINT
immdiat immdiat
Structure CONTROL
Mnmonique .EN .DN .ER .LEN .POS Type de donnes BOOL BOOL BOOL DINT DINT Description Le bit d'activation indique que l'instruction SQO est active. Le bit de fin est activ lorsque tous les lments indiqus ont t dplacs vers la Destination. Le bit d'erreur est activ lorsque .LEN 0, .POS < 0 ou .POS > .LEN. La longueur dfinit le nombre d'tapes dans le tableau squenceur. La position identifie l'lment que l'automate est en train de traiter.
9-7
9-8
non
.EN = 0
le bit .EN est activ le bit .ER est effac le bit .DN est activ
.EN = 1
.POS = .LEN
non
.POS .LEN
oui
.POS = 1
oui
erreur d'instr
.POS = .LEN
oui
non
non
oui
erreur
fin
pendant la post-scrutation
9-9
Valeurs d'exemple (INT affich en binaire) xxxxxxxx xxxxxxxx xxxx0101 xxxx1010 00000000 00000000 00001111 00001111 xxxxxxxx xxxxxxxx xxxx0101 xxxx1010
Un 0 dans le masque signifie que le bit n'est pas compar (dsign par xxxx dans cet exemple).
9-10
Logique relais
Oprande Tableau Type DINT Format point de tableau Description tableau squenceur indique le premier lment du tableau squenceur n'utilisez pas CONTROL.POS dans l'indice donnes d'entre charger dans le tableau squenceur
Source
point immdiat
Un point SINT ou INT est converti en valeur DINT par extension de signe. Contrle point structure de contrle pour l'opration utilise gnralement le mme point CONTROL que les instructions SQI et SQO nombre d'lments du tableau (tableau squenceur) charger position en cours du tableau la valeur initiale est gnralement 0
Longueur Position
DINT DINT
immdiat immdiat
Structure CONTROL
Mnmonique .EN .DN .ER .LEN .POS Type de donnes BOOL BOOL BOOL DINT DINT Description Le bit d'activation indique que l'instruction SQL est active. Le bit de fin est activ lorsque tous les lments indiqus ont t chargs dans Array. Le bit d'erreur est activ lorsque .LEN 0, .POS < 0 ou .POS > .LEN. La longueur dfinit le nombre d'tapes dans le tableau squenceur. La position identifie l'lment que l'automate est en train de traiter.
9-11
Conditions d'erreur :
Un dfaut majeur se produit si Longueur > taille du tableau Type du dfaut 4 Code du dfaut 20
Excution :
Condition pendant la pr-scrutation Action de la logique relais Le bit .EN est rgl pour empcher un chargement incorrect lorsque la scrutation commence. L'tat de sortie de la ligne est rgl sur faux. Le bit .EN est effac. L'tat de sortie de la ligne est rgl sur faux.
9-12
non
.EN = 0
le bit .EN est activ le bit .ER est effac le bit .DN est activ
.EN = 1
.POS = .LEN
non
.POS .LEN
oui
.POS = 1
oui
.POS = .LEN
oui
non
non
erreur
dfaut majeur
Array[control.POS] = Source
fin
pendant la post-scrutation
9-13
avant chargement array_dint[0] 00000 11111 22222 33333 44444 array_dint[5] 00000 00000 00000 00000 00000 control_1.pos = 5 value_3 = 55555
aprs chargement 00000 11111 22222 33333 44444 55555 00000 00000 00000 00000 control_1.pos = 6
9-14
Notes :
Chapitre
10
Introduction
Si vous voulez
sauter une section logique qui n'a pas toujours besoin d'tre excute passer directement un sousprogramme spar, passer des donnes au sousprogramme, excuter le sous-programme et produire des rsultats passer un sous-programme externe (automate SoftLogix5800 uniquement) marquer une fin temporaire qui arrte l'excution du sous-programme dsactiver les tches utilisateur activer les tches utilisateur dsactiver une ligne insrer un marqueur dans la logique arrter une transition pour un graphe de fonctionnement squentiel arrter provisoirement un graphe de fonctionnement squentiel
10-13 10-16 10-18 10-20 10-20 10-22 10-23 10-24 10-26 10-28
dsactiver toutes les lignes dans une section logique MCR UID UIE AFI NOP EOT SFP
10-2
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
Logique relais
Oprande Nom de l'tiquette Instruction LBL Nom de l'tiquette nom d'tiquette l'excution saute l'instruction LBL avec nom d'tiquette rfrenc Type Format nom d'tiquette Description entrer le nom de l'instruction LBL associe
Instruction JMP
ATTENTION
!
L'instruction LBL est la cible de l'instruction JMP qui possde le mme nom d'tiquette. Assurez-vous que l'instruction LBL est la premire instruction sur sa ligne. Un nom d'tiquette doit tre unique dans un sous-programme. Le nom peut : comporter un maximum de 40 caractres ; contenir des lettres, des nombres et des caractres de soulignement (_).
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
10-3
Conditions d'erreur :
Un dfaut majeur se produit si l'tiquette n'existe pas Type du dfaut 4 Code du dfaut 42
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur vrai. L'excution saute la ligne contenant l'instruction LBL avec le nom d'tiquette rfrenc. L'tat de sortie de la ligne est rgl sur faux.
pendant la post-scrutation
Exemple : Lorsque l'instruction JMP est active, l'excution saute des lignes de
logique successives jusqu' atteindre la ligne contenant l'instruction LBL avec label_20.
10-4
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
L'instruction JSR fait passer l'excution un autre sous-programme. Les instructions SBR et RET sont des instructions facultatives qui changent les donnes avec l'instruction JSR.
Logique relais
Oprande Nom du sous-programme Paramtre d'entre Type ROUTINE BOOL SINT INT DINT REAL STRUCTURE Format nom immdiat point point de tableau Description sous-programme excuter (sous-programme secondaire) donnes de ce sous-programme que vous voulez copier dans un point dans le sous-programme secondaire Les paramtres d'entre sont facultatifs. Entrez plusieurs paramtres d'entre, si ncessaire. point de ce sous-programme dans lequel vous voulez copier un rsultat du sous-programme secondaire Les paramtres de retour sont facultatifs. Entrez plusieurs paramtres de retour, si ncessaire.
Paramtre de retour
Texte structur
JSR(RoutineName,InputCount, InputPar,ReturnPar);
Oprande
Type
Nom du ROUTINE sous-programme Comptage des entres SINT INT DINT REAL BOOL SINT INT DINT REAL STRUCTURE
Paramtre d'entre
donnes de ce sous-programme que vous voulez copier dans un point du sous-programme secondaire Les paramtres d'entre sont facultatifs. Entrez plusieurs paramtres d'entre, si ncessaire. point de ce sous-programme dans lequel vous voulez copier un rsultat du sous-programme secondaire Les paramtres de retour sont facultatifs. Entrez plusieurs paramtres de retour, si ncessaire.
Paramtre de retour
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
10-5
Les oprandes sont les mmes que ceux de l'instruction JSR en logique relais.
ATTENTION
!
Logique relais
Oprande Paramtre d'entre Type
Pour chaque paramtre dans une instruction SBR ou RET, utilisez le mme type de donnes (y compris les dimensions de tableau) que celui du paramtre correspondant dans l'instruction JSR. L'utilisation de types de donnes diffrents peut produire des rsultats inattendus.
Format
Description point de ce sous-programme dans lequel vous voulez copier le paramtre d'entre correspondant partir de l'instruction JSR
SBR(InputPar);
Texte structur
Les oprandes sont les mmes que ceux de l'instruction SBR en logique relais.
Bloc fonctionnel
Paramtres
Les oprandes sont les mmes que ceux de l'instruction SBR en logique relais.
Publication 1756-RM003F-FR-P - Mai 2002
10-6
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
RET(ReturnPar);
Texte structur
Les oprandes sont les mmes que ceux de l'instruction RET en logique relais.
Bloc fonctionnel
Paramtres
Les oprandes sont les mmes que ceux de l'instruction RET en logique relais.
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
10-7
SBR 1. Si l'instruction JSR comporte un paramtre d'entre, entrez une instruction SBR. 2. Placez l'instruction SBR comme premire instruction dans le sous-programme. 3. Pour chaque paramtre d'entre dans l'instruction JSR, entrez le point dans lequel vous voulez copier les donnes.
42974
SBR
JSR 1. Si vous voulez copier des donnes dans un point du sous-programme, entrez un paramtre d'entre. 2. Si vous voulez copier un rsultat du sous-programme dans un point du sous-programme, entrez un paramtre de retour. 3. Entrez autant de paramtres d'entre et de retour que ncessaire.
JSR RET
RET
RET 1. Si l'instruction JSR comporte un paramtre de retour, entrez une instruction RET. 2. Placez l'instruction RET comme dernire instruction dans le sous-programme. 3. Pour chaque paramtre de retour dans l'instruction JSR, entrez un paramtre de retour envoyer l'instruction JSR. 4. Dans un sous-programme relais, placez des instructions RET supplmentaires pour quitter le sous-programme secondaire en fonction de diffrentes conditions d'entre, si ncessaire (les sous-programmes en blocs fonctionnels ne permettent qu'une instruction RET).
Il n'y a pas de restrictions, hormis la quantit de mmoire de l'automate, au nombre de sous-programmes imbriqus que vous pouvez avoir ou au nombre de paramtres que vous passez ou renvoyez.
niveau 1 sous-programme secondaire action_1 sous-programme principal action_1 JSR action_2 JSR action_3 JSR SBR niveau 2 sous-programme secondaire action_2 SBR niveau 3 sous-programme secondaire action_3 SBR
RET
RET
RET
10-8
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur :
Un dfaut majeur se produit si L'instruction JSR a moins de paramtres d'entre que l'instruction SBR L'instruction JSR passe un sous-programme de gestion des dfauts L'instruction RET a moins de paramtres de retour que l'instruction JSR Le sous-programme principal contient une instruction RET Type du dfaut 4 4 ou dfini par l'utilisateur 4 4 Code du dfaut 31 0 ou dfini par l'utilisateur 31 31
L'automate excute tous les sous-programmes quel que soit l'tat de la ligne. Pour assurer la pr-scrutation de toutes les lignes du sous-programme, l'automate ignore les instructions RET (les instructions RET ne quittent pas le sous-programme). Version 6.x et antrieures : les entres et les paramtres de retour sont passs. Version 7.x et ultrieures : les entres et les paramtres de retour ne sont pas passs. S'il y a des appels rcurrents dans le mme sous-programme, le sous-programme est pr-scrut la premire fois uniquement. S'il y a des appels multiples (non rcurrents) dans le mme sous-programme, le sous-programme est pr-scrut chaque fois. L'tat de sortie de la ligne est rgl sur faux (logique relais uniquement). Le sous-programme n'est pas excut. Les sorties du sous-programme gardent leur dernier tat. L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute. L'tat de sortie de la ligne est rgl sur vrai. EnableIn est toujours activ. L'instruction est excute.
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
10-9
paramtres d'entre
oui
JSR copie les paramtres d'entre dans les points SBR appropris
non
oui
RET copie les paramtres de retour dans les points JSR appropris
non
non
fin du sous-programme
oui
non l'tat de sortie de la ligne est faux continue l'excution du sous-programme l'tat de sortie de la ligne est vrai l'excution de la logique revient JSR
fin
pendant la post-scrutation
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction excution normale Action Aucune. Aucune. Aucune. 1. Si le sous-programme contient une instruction SBR, l'automate excute d'abord l'instruction SBR. 2. L'automate verrouille toutes les valeurs de donnes dans les IREF. 3. L'automate excute les autres blocs fonctionnels dans l'ordre dtermin par leur cblage. Ceci comprend les autres instructions JSR. 4. L'automate crit les sorties dans des OREF. 5. Si le sous-programme contient une instruction RET, l'automate excute l'instruction RET en dernier. Le sous-programme est appel. S'il s'agit d'un sous-programme SFC, il est initialis comme pendant la pr-scrutation.
pendant la post-scrutation
10-10
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
Logique relais
Sous-programme Sous-programme principal Programme
Sous-programme secondaire
Texte structur
Sous-programme Sous-programme principal Sous-programme secondaire Programme
JSR(routine_1,2,value_1,value_2,float_value_1); SBR(value_a,value_b); <instructions>; RET(float_a);
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
10-11
Subroutine_1 Lorsque def est activ, l'instruction RET renvoie value_1 au paramtre JSR cookies_1 et le reste du sous-programme n'est pas scrut.
Lorsque def est dsactiv (ligne prcdente) et ghi activ, l'instruction RET renvoie value_2 au paramtre JSR cookies_1 et le reste du sous-programme n'est pas scrut.
Lorsque def et ghi sont dsactivs (lignes prcdentes), l'instruction RET renvoie value_3 au paramtre JSR cookies_1.
10-12
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
42972
1. Les valeurs dans Add_Input_1, Add_Input_2 et Add_Input_3 sont copies respectivement dans Input_A, Input_B et Input_C.
42973
6. Les instructions ADD additionnent Input_A, Input_B et Input_C et placent le rsultat dans Sum_A_B_C.
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
10-13
L'instruction JXR excute un sous-programme externe. Cette instruction est prise en charge uniquement par les automates SoftLogix5800.
Logique relais
.
Oprande Nom du sous-programme externe Contrle du sous-programme externe Paramtre Type ROUTINE Format nom Description excution du sous-programme externe
EXT_ROUTINE_ CONTROL BOOL SINT INT DINT REAL STRUCTURE BOOL SINT INT DINT REAL
point
donnes de ce sous-programme que vous voulez copier dans une variable du sous-programme externe Les paramtres sont facultatifs. Entrez plusieurs paramtres, si ncessaire. vous pouvez avoir jusqu' 10 paramtres. point de ce sous-programme dans lequel vous voulez copier un rsultat du sous-programme externe Le paramtre de retour est facultatif. Vous pouvez avoir un paramtre de retour seulement.
Paramtre de retour
point
10-14
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
Structure EXT_ROUTINE_CONTROL
Mnmonique ErrorCode Type de donnes SINT Description Si une erreur se produit, cette valeur identifie l'erreur. Les valeurs correctes vont de 0 255. Cette valeur indique le nombre de paramtres associs cette instruction. Ce tableau contient les dfinitions des paramtres transmettre au sous-programme externe. L'instruction peut transmettre jusqu' 10 paramtres. Cette valeur contient les dfinitions du paramtre de retour du sous-programme externe. Il n'y a qu'un paramtre de retour. Lorsqu'il est activ, le bit d'activation indique que l'instruction JXR est active. S'il est activ, ce bit indique qu'un paramtre de retour a t entr pour l'instruction. S'il est effac, ce bit indique qu'aucun paramtre de retour n'a t entr pour l'instruction. Le bit de fin est activ lorsque le sous-programme externe a t compltement excut une fois. Le bit d'erreur est activ si une erreur se produit. L'instruction s'arrte jusqu' ce que le programme remette le bit d'erreur 0. Ce bit indique si c'est la premire scrutation aprs le passage de l'automate en mode Excution (Run). Utilisez FirstScan pour lancer le sous-programme externe, si ncessaire. Sortie active. Entre active. Application Il n'y a pas de codes d'erreurs prdfinis. Le dveloppeur du sous-programme externe doit fournir les codes d'erreurs. Affichage uniquement : cette information est drive de l'entre de l'instruction. Affichage uniquement : cette information est drive de l'entre de l'instruction.
NumParams ParameterDefs
ReturnParamDef
Affichage uniquement : cette information est drive de l'entre de l'instruction. Le sous-programme externe active ce bit. Affichage uniquement : cette information est drive de l'entre de l'instruction.
EN ReturnsValue
DN
BOOL
ER
BOOL
FirstScan
BOOL
EnableOut EnableIn
BOOL BOOL
Le sous-programme externe active ce bit. L'automate active ce bit pour reflter l'tat d'entre de la ligne. L'instruction est excute quel que soit l'tat de la ligne. Le dveloppeur du sous-programme doit surveiller cet tat et agir en consquence. Ces bits peuvent tre activs par le sous-programme externe ou le programme utilisateur. L'automate active ces bits pour reflter l'tat de la scrutation.
Ces bits peuvent tre utiliss par l'utilisateur. L'automate n'initialise pas ces bits. Ces bits identifient le type de scrutation en cours. Valeurs de bit : Type de scrutation : 00 Normale 01 Pr-scrutation 10 Post-scrutation (pas pour les programmes logiques relais)
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
10-15
L'instruction JXR est similaire l'instruction Saut vers sous-programme (JSR). L'instruction JXR lance l'excution du sous-programme externe indiqu : le sous-programme externe est excut une fois ; une fois le sous-programme externe excut, l'excution logique revient au sous-programme contenant l'instruction JXR.
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique ne sont pas affects. Conditions d'erreur :
Un dfaut majeur se produit si une exception se produit dans la DLL du sous-programme externe la DLL n'a pas pu tre charge le point d'entre n'a pas t trouv dans la DLL Type du dfaut 4 Code du dfaut 88
10-16
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
Texte structur
aucune Vous devez entrer les parenthses () aprs le mnmonique de l'instruction, bien qu'il n'y ait pas d'oprandes.
Exemple : Vous pouvez utiliser l'instruction TND lors d'un dbogage ou d'un
dpannage pour excuter la logique jusqu' un certain point. Dplacez l'instruction TND progressivement dans la logique pour le dbogage de chaque nouvelle section. Lorsque l'instruction TND est active, l'automate arrte de scruter le sous-programme en cours.
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
10-17
Logique relais
Texte structur
TND();
10-18
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
L'instruction MCR, utilise par paire, cre une zone programme qui peut dsactiver toutes les lignes dans les instructions MCR.
Logique relais
aucune
Description : Lorsque la zone MCR est active, les lignes de cette zone sont scrutes
la recherche d'tats vrai ou faux normaux. Lorsqu'elle est dsactive, l'automate scrute toujours les lignes de la zone MCR, mais la dure de scrutation est rduite parce que les sorties non rmanentes de la zone sont dsactives. L'tat d'entre de la ligne est faux pour toutes les instructions dans la zone MCR dsactive. Lorsque vous programmez une zone MCR, notez que : vous devez terminer la zone par une instruction MCR sans condition ; vous ne pouvez pas imbriquer une zone MCR dans une autre ; vous ne devez pas sauter une autre zone MCR. Si la zone est fausse, sautez dans la zone l'active partir du point o vous avez saut jusqu' la fin de la zone ; vous n'avez pas besoin de programmer une instruction MCR pour terminer la zone si elle continue jusqu' la fin du sous-programme. L'instruction MCR ne remplace pas un relais de contrle matre cbl offrant la capacit d'arrt d'urgence. Vous devez quand mme installer un relais de contrle matre cbl pour pouvoir couper l'alimentation des E/S en cas d'urgence. Ne superposez pas et n'imbriquez pas les zones MCR. Chaque zone MCR doit tre spare et complte. Une superposition ou une imbrication peut entraner un fonctionnement imprvisible de la machine, risquant de dtriorer l'quipement et/ou d'occasionner des blessures. Placez les oprations critiques en dehors de la zone MCR. Si vous commencez des instructions telles que des temporisateurs dans une zone MCR, l'excution de l'instruction s'arrte lorsque la zone est dsactive et le temporisateur est effac.
ATTENTION
!
Indicateurs d'tat arithmtique : non affects Conditions d'erreur : aucune
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
10-19
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. Les instructions de la zone sont scrutes, mais l'tat de la ligne est faux et les sorties non rmanentes de la zone sont dsactives. L'tat de sortie de la ligne est rgl sur vrai. Les instructions de la zone sont scrutes normalement. L'tat de sortie de la ligne est rgl sur faux.
10-20
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
Les instructions UID et UIE travaillent ensemble pour empcher un petit nombre de lignes critiques d'tre interrompues par d'autres tches.
Logique relais
aucune
UID(); UIE();
Texte structur
aucune Vous devez entrer les parenthses () aprs le mnmonique de l'instruction, bien qu'il n'y ait pas d'oprandes.
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
10-21
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai si EnableIn est activ pendant l'excution de l'instruction pendant la post-scrutation Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute. L'tat de sortie de la ligne est rgl sur vrai. Action du texte structur Aucune. EnableIn est toujours activ. L'instruction est excute.
L'instruction UID empche l'interruption par des tches de priorit plus leve. L'instruction UIE permet l'interruption par des tches de priorit plus leve. L'tat de sortie de la ligne est rgl sur faux. Aucune.
Logique relais
UID error_bit FSC File Search/Compare Control error_check Length 10 Position 8 Mode ALL Expression error_code=error_list[error_check.POS]
EN DN ER
error_check.FD
alarm
UIE
Texte structur
UID(); <instructions> UIE();
10-22
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
Logique relais
aucune
Description : L'instruction AFI rgle son tat de sortie de ligne sur faux. Indicateurs d'tat arithmtique : non affects Conditions d'erreur : aucune Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai pendant la post-scrutation Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux.
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
10-23
Logique relais
aucune
Description : Vous pouvez placer l'instruction NOP n'importe o sur une ligne.
Active ou dsactive, cette instruction n'effectue aucune opration.
Exemple : Cette instruction est utile pour localiser des lignes sans condition
lorsque vous placez l'instruction NOP sur la ligne. L'instruction NOP contourne l'instruction XIC pour activer la sortie.
10-24
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
Logique relais
Oprande bit de donnes
EOT(data_bit);
Type BOOL
Format point
Texte structur
Les oprandes sont les mmes que ceux de l'instruction EOT en logique relais.
L'instruction renvoie la valeur du bit de donnes au sous-programme appelant. L'tat de sortie de la ligne est rgl sur faux. Aucune.
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
10-25
Exemple : Lorsque limit_switch1 et interlock_1 sont activs, l'tat est activ. Une
fois timer_1 termin, l'instruction EOT renvoie la valeur de state au sous-programme appelant.
Logique relais
Texte structur
state := limit_switch1 AND interlock_1; IF timer_1.DN THEN EOT(state); END_IF;
10-26
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
Logique relais
Oprande Nom de SFCRoutine TargetState Type ROUTINE DINT Format nom immdiat point Description Arrt temporaire du sous-programme SFC slectionnez une solution : excution (ou entrez 0) pause (ou entrez 1)
Texte structur
SFP(SFCRoutineName, TargetState);
Les oprandes sont les mmes que ceux de l'instruction SFP en logique relais.
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai si EnableIn est activ pendant l'excution de l'instruction pendant la post-scrutation Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute. L'tat de sortie de la ligne est rgl sur vrai. Action du texte structur Aucune. EnableIn est toujours activ. L'instruction est excute. Aucune.
L'instruction arrte temporairement ou reprend l'excution du sous-programme SFC indiqu. L'tat de sortie de la ligne est rgl sur faux.
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
10-27
Logique relais
Arrt temporaire du sous-programme SFC.
10-28
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
L'instruction SFR reprend l'excution d'un sous-programme SFC une tape particulire.
Texte structur
SFR(SFCRoutineName,StepName);
Les oprandes sont les mmes que ceux de l'instruction SFR en logique relais.
le sous-programme n'est pas un sous-programme 4 SFC l'tape indique n'existe pas dans le sous-programme SFC 4
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
10-29
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai si EnableIn est activ pendant l'excution de l'instruction pendant la post-scrutation Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute. L'tat de sortie de la ligne est rgl sur vrai. L'instruction rinitialise le sous-programme SFC indiqu. Aucune. Action du texte structur Aucune. EnableIn est toujours activ. L'instruction est excute. L'instruction rinitialise le sous-programme SFC indiqu. Aucune.
Logique relais
Texte structur
IF shutdown THEN SFR(mySFC,initialize); END_IF;
10-30
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)
Notes :
Chapitre
11
Instruction pour/d'interruption
(FOR, FOR...DO, BRK, EXIT, RET)
Introduction
Utilisez l'instruction FOR pour appeler un sous-programme de faon rpte. Utilisez l'instruction BRK pour interrompre l'excution d'un sous-programme.
Utilisez cette instruction FOR FOR...DO(1) BRK EXIT(1) RET Disponible dans ces langages logique relais texte structur logique relais texte structur logique relais Voir page 11-2 11-4 11-5
Si vous voulez excuter un sous-programme de faon rpte terminer l'excution rptitive d'un sous-programme revenir l'instruction FOR
(1)
11-2
Pour (FOR)
Oprandes :
Logique relais
Oprande Nom du sous-programme Index Valeur initiale Type ROUTINE DINT SINT INT DINT SINT INT DINT SINT INT DINT Format nom du sous-programme point immdiat point immdiat point immdiat point Description sous-programme excuter compte le nombre d'excutions du sous-programme valeur laquelle l'index commence
Valeur terminale
valeur laquelle l'excution du sous-programme s'arrte quantit ajouter l'index chaque fois que l'instruction FOR excute le sous-programme
Taille de l'incrment
Texte structur
FOR count:= initial_value TO final_value BY increment DO <instruction>; END_FOR;
Utilisez l'instruction de test FOR...DO. Pour des informations sur les instructions de test en texte structur, reportez-vous l'Annexe C.
Description :
IMPORTANT N'utilisez pas d'instruction FOR pour appeler (excuter) le sous-programme principal. Vous pouvez insrer une instruction FOR dans le sous-programme principal ou dans tout autre sous-programme. Si vous utilisez une instruction FOR pour appeler le sous-programme principal, puis insrez une instruction RET dans ce sous-programme principal, un dfaut majeur se produit (type 4, code 31). Lorsqu'elle est active, l'instruction FOR excute le sous-programme de faon rpte jusqu' ce que la valeur de l'index dpasse la valeur terminale. Cette instruction ne transfre pas de paramtres dans le sous-programme. Chaque fois que l'instruction FOR excute le sous-programme, elle augmente l'index de la taille de l'incrment. Veillez ne pas faire trop de boucles dans une seule scrutation. Si les rptitions sont trop nombreuses, le dlai d'attente du chien de garde risque d'tre dpass, ce qui entrane un dfaut majeur.
Publication 1756-RM003F-FR-P - Mai 2002
11-3
Excution :
Condition pendant la pr-scrutation Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'automate excute le sous-programme une fois. S'il y a des instructions FOR rcurrentes dans le mme sous-programme, il est pr-scrut la premire fois uniquement. S'il y a de multiples instructions FOR (non rcurrentes) dans le mme sous-programme, il est pr-scrut chaque fois. L'tat de sortie de la ligne est rgl sur faux.
index = initial_value
non
oui
non
fin de goto
fin
fin
pendant la post-scrutation
rpte et augmente value_2 chaque fois de 1. Lorsque value_2 est > 10 ou qu'une instruction BRK est active, l'instruction FOR n'excute plus routine_2.
11-4
Interruption (BRK)
Oprandes :
L'instruction BRK interrompt l'excution d'un sous-programme appel par l'instruction FOR.
Logique relais
aucune
EXIT;
Texte structur
Utilisez l'expression EXIT dans une construction en boucle. Pour des informations sur les instructions de test en texte structur, reportez-vous au chapitre Programmation en texte structur .
11-5
Retour (RET)
Oprandes :
Logique relais
aucune
Description :
IMPORTANT N'insrez pas d'instruction RET dans le sous-programme principal. Si vous insrez une instruction RET dans le sous-programme principal, un dfaut majeur se produit (type 4, code 31).
Lorsqu'elle est active, l'instruction RET retourne l'instruction FOR. L'instruction FOR augmente la valeur de l'index de la taille de l'incrment et excute le sous-programme de nouveau. Si la valeur de l'index est suprieure la valeur terminale, l'instruction FOR est termine et l'excution passe l'instruction qui suit l'instruction FOR. L'instruction FOR n'utilise pas de paramtres. Elle ignore tout paramtre que vous entrez dans une instruction RET. Vous pouvez galement utiliser une instruction TND pour terminer l'excution du sous-programme.
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai pendant la post-scrutation Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. Renvoie les paramtres indiqus au sous-programme appelant. L'tat de sortie de la ligne est rgl sur vrai. L'tat de sortie de la ligne est rgl sur faux.
11-6
L'instruction RET retourne l'instruction FOR appelante. L'instruction FOR excute de nouveau le sous-programme et augmente la valeur de l'index de la taille de l'incrment ou, si la valeur de l'index est suprieure la valeur terminale, l'instruction FOR est termine et l'excution passe l'instruction qui suit l'instruction FOR.
sous-programme appelant sous-programme secondaire
Chapitre
12
Instructions spciales
(FBC, DDT, DTR, PID)
Introduction
Si vous voulez
comparer des donnes une rfrence correcte FBC connue et enregistrer toute diffrence comparer des donnes une rfrence correcte DDT connue, enregistrer toute diffrence et mettre la rfrence jour pour qu'elle corresponde la source passer les donnes de la source par un masque et comparer le rsultat aux donnes de rfrence, puis crire la source dans la rfrence pour la comparaison suivante commander une boucle PID DTR
logique relais
12-16
PID
12-19
12-2
L'instruction FBC compare les bits d'un tableau Source avec ceux d'un tableau Rfrence.
Logique relais
Oprande Source Rfrence Rsultat Type DINT DINT DINT Format point de tableau point de tableau point de tableau structure immdiat immdiat structure immdiat immdiat Description tableau comparer la rfrence n'utilisez pas CONTROL.POS dans l'indice tableau comparer la source n'utilisez pas CONTROL.POS dans l'indice tableau pour le stockage du rsultat n'utilisez pas CONTROL.POS dans l'indice structure de contrle pour la comparaison nombre de bits comparer position en cours dans la source la valeur initiale est gnralement 0 structure de contrle du rsultat nombre d'emplacements de stockage dans le rsultat position en cours dans le rsultat la valeur initiale est gnralement 0
Contrle de CONTROL comparaison Longueur Position Contrle de rsultat Longueur Position DINT DINT CONTROL DINT DINT
ATTENTION
Utilisez des points diffrents pour la structure de contrle de comparaison et la structure de contrle de rsultat. L'utilisation du mme point pour les deux peut entraner un fonctionnement imprvisible risquant de dtriorer l'quipement et/ou de provoquer des blessures.
12-3
Structure COMPARE
Mnmonique .EN .DN .FD .IN Type de donnes BOOL BOOL BOOL BOOL Description Le bit d'activation indique que l'instruction FBC est active. Le bit de fin est activ lorsque l'instruction FBC compare le dernier bit dans les tableaux Source et Rfrence. Le bit trouv est activ chaque fois que l'instruction FBC enregistre une diffrence (opration par opration) ou aprs l'enregistrement de toutes les diffrences (opration tout en une scrutation). Le bit d'inhibition indique le mode de recherche FBC. 0 = mode tout 1 = mode une diffrence la fois Le bit d'erreur est activ si la comparaison .POS < 0, la comparaison .LEN < 0, le rsultat .POS < 0 ou le rsultat .LEN < 0. L'instruction arrte l'excution jusqu' ce que le programme efface le bit .ER. La valeur de longueur indique le nombre de bits comparer. La valeur de position indique le bit en cours.
.ER
BOOL
.LEN .POS
DINT DINT
Structure RESULT
Mnmonique .DN .LEN .POS Type de donnes BOOL DINT DINT Description Le bit de fin est activ lorsque le tableau Rsultat est plein. La valeur de longueur indique le nombre d'emplacements de stockage dans le tableau Rsultat. La valeur de position indique la position en cours dans le tableau Rsultat.
Description : Lorsqu'elle est active, l'instruction FBC compare les bits du tableau
Source avec ceux du tableau Rfrence et enregistre le nombre de bits de chaque diffrence dans le tableau Rsultat. L'instruction FBC fonctionne sur de la mmoire contigu. La diffrence entre les instructions DDT et FBC est la suivante : chaque fois que l'instruction DDT trouve une diffrence, elle modifie le bit de rfrence afin qu'il corresponde au bit source. L'instruction FBC ne change pas le bit de rfrence.
12-4
Conditions d'erreur :
Un dfaut majeur se produit si Result.POS > taille du tableau de rsultat Type du dfaut 4 Code du dfaut 20
Excution :
Condition pendant la pr-scrutation Action de la logique relais
compare.DN = 0
compare.DN = 1 le bit compare.DN est effac la valeur compare.POS est efface le bit result.DN est effac la valeur result.POS est efface
fin
12-5
compare.DN = 0
compare.DN = 1 le bit compare.DN est effac la valeur compare.POS est efface le bit result.DN est effac la valeur result.POS est efface
fin
12-6
compare.EN = 1
compare.EN = 0 le bit compare.EN est activ examine le bit compare.DN compare.DN = 1 sortie instruction goto
compare.DN = 0 le bit compare.ER est effac le bit compare.FD est effac oui
compare.LEN 0
non
exit
compare.POS < 0
oui
non l'tat de sortie de la ligne est vrai comparaison fin page 12-7
12-7
Condition
comparaison
compare.POS compare.LEN
oui
non result.DN = 1 source[compare.POS]= rfrence[compare.POS] non le bit compare.FD est activ examine le bit result.DN le bit result.DN est effac la valeur result.POS est efface result.DN = 0
non
oui result.LEN 0
non
non
pendant la post-scrutation
12-8
source array_dint1
rfrence array_dint2
rsultat array_dint3
12-9
L'instruction DDT compare les bits d'un tableau Source avec les bits d'un tableau Rfrence pour dterminer les changements d'tat.
Logique relais
Oprande Source Rfrence Rsultat Contrle de comparaiso n Longueur Position Contrle de rsultat Longueur Position Type DINT DINT DINT CONTROL Format point de tableau point de tableau point de tableau structure Description tableau comparer la rfrence n'utilisez pas CONTROL.POS dans l'indice tableau comparer la source n'utilisez pas CONTROL.POS dans l'indice tableau pour le stockage des rsultats n'utilisez pas CONTROL.POS dans l'indice structure de contrle pour la comparaison
nombre de bits comparer position en cours dans la source la valeur initiale est gnralement 0 structure de contrle du rsultat nombre d'emplacements de stockage dans le rsultat position en cours dans le rsultat la valeur initiale est gnralement 0
ATTENTION
Utilisez des points diffrents pour la structure de contrle de comparaison et la structure de contrle de rsultat. L'utilisation du mme point pour les deux peut entraner un fonctionnement imprvisible risquant de dtriorer l'quipement et/ou de provoquer des blessures.
12-10
Structure COMPARE
Mnmonique .EN .DN .FD Type de donnes BOOL BOOL BOOL Description Le bit d'activation indique que l'instruction DDT est active. Le bit de fin est activ lorsque l'instruction DDT compare le dernier bit dans les tableaux Source et Rfrence. Le bit trouv est activ chaque fois que l'instruction DDT enregistre une diffrence (opration par opration) ou aprs l'enregistrement de toutes les diffrences (opration tout en une scrutation). Le bit d'inhibition indique le mode de recherche DDT. 0 = mode tout 1 = mode une diffrence la fois Le bit d'erreur est activ si la comparaison .POS < 0, la comparaison .LEN < 0, le rsultat .POS < 0 ou le rsultat .LEN < 0. L'instruction arrte l'excution jusqu' ce que le programme efface le bit .ER. La valeur de longueur indique le nombre de bits comparer. La valeur de position indique le bit en cours.
.IN
BOOL
.ER
BOOL
.LEN .POS
DINT DINT
Structure RESULT
Mnmonique .DN .LEN .POS Type de donnes BOOL DINT DINT Description Le bit de fin est activ lorsque le tableau Rsultat est plein. La valeur de longueur indique le nombre d'emplacements de stockage dans le tableau Rsultat. La valeur de position indique la position en cours dans le tableau Rsultat.
Description : Lorsqu'elle est active, l'instruction DDT compare les bits du tableau
Source avec ceux du tableau Rfrence, enregistre le numro de chaque diffrence dans le tableau Rsultat et modifie la valeur du bit de Rfrence afin qu'il corresponde la valeur du bit Source correspondant. L'instruction DDT fonctionne sur de la mmoire contigu. La diffrence entre les instructions DDT et FBC est la suivante : chaque fois que l'instruction DDT trouve une diffrence, elle modifie le bit de rfrence afin qu'il corresponde au bit source. L'instruction FBC ne change pas le bit de rfrence.
12-11
Excution :
Condition pendant la pr-scrutation Action de la logique relais
compare.DN = 0
compare.DN = 1 le bit compare.DN est effac la valeur compare.POS est efface le bit result.DN est effac la valeur result.POS est efface
fin
12-12
compare.DN = 0
compare.DN = 1 le bit compare.DN est effac la valeur compare.POS est efface le bit result.DN est effac la valeur result.POS est efface
fin
12-13
compare.EN = 1
compare.EN = 0 le bit compare.EN est activ examine le bit compare.DN le bit compare.DN = 1 sortie instruction goto
le bit compare.DN = 0 le bit compare.ER est effac le bit compare.FD est effac oui
compare.LEN 0
non
exit
compare.POS < 0
oui
non l'tat de sortie de la ligne est vrai comparaison fin page 12-14
12-14
Condition
comparaison
compare.POS compare.LEN
oui
non result.DN = 1 source[compare.POS]= rfrence[compare.POS] non le bit compare.FD est activ rfrence[compare.POS] = source[compare.POS] examine le bit result.DN le bit result.DN est effac la valeur result.POS est efface result.DN = 0
non
oui result.LEN 0
non
non
result.POS result.LEN
pendant la post-scrutation
12-15
source array_dint1
12-16
L'instruction DTR passe la valeur Source par un masque et compare le rsultat la valeur Rfrence.
Logique relais
Oprande Source Masque Rfrence Type DINT DINT DINT Format immdiat point immdiat point point Description tableau comparer la rfrence bits bloquer ou passer tableau comparer la source
ATTENTION
12-17
non
la rfrence est gale la source masque l'tat de sortie de la ligne est rgl sur vrai
oui
fin
pendant la post-scrutation
12-18
Exemple : Lorsqu'elle est active, l'instruction DTR masque value_1. S'il y a une
diffrence entre les deux valeurs, l'tat de sortie de la ligne est rgl sur vrai.
exemple 2
rfrence value_2 0 0 1 1 8 8 3 3 0 0
1 1
8 8
7 3
La ligne reste sur faux tant que la valeur d'entre ne change pas.
La ligne reste sur faux pendant une scrutation lorsqu'un changement est dtect.
13385
12-19
L'instruction PID commande une variable de procd, telle que dbit, pression, temprature ou niveau.
Logique relais
Type PID SINT INT DINT REAL SINT INT DINT REAL SINT INT DINT REAL PID
Elment Tieback
immdiat point
(facultatif) sortie d'une station manuelle/auto qui contourne la sortie de l'automate Entrez 0 si vous ne voulez pas utiliser ce paramtre.
Variable de contrle
point
valeur qui va vers le dispositif de commande final (vanne, clapet, etc.) Si vous utilisez la zone morte, la variable de contrle doit tre REAL ou elle sera force 0 lorsque l'erreur sera dans la zone morte. (facultatif) point PID pour le PID matre Si vous effectuez une commande en cascade et si ce PID est une boucle esclave, entrez le nom du PID matre.Entrez 0 si vous ne voulez pas utiliser ce paramtre. (en option) tat en cours du bit de maintien d'un canal de sorties analogiques 1756 pour accepter le redmarrage sans -coups Entrez 0 si vous ne voulez pas utiliser ce paramtre. (facultatif) valeur de retour de donnes d'un canal de sorties analogiques 1756 pour accepter le redmarrage sans coups Entrez 0 si vous ne voulez pas utiliser ce paramtre. affichage de la valeur en cours du point de consigne affichage de la valeur en cours de la variable de procd mise l'chelle affichage de la valeur du pourcentage de sortie en cours
structure
BOOL
point
point
Texte structur
PID(PID,ProcessVariable, Tieback,ControlVariable, PIDMasterLoop,InholdBit, InHoldValue);
Les oprandes sont les mmes que ceux de l'instruction PID en logique relais. Indiquez cependant le point de consigne, la variable de procd et le % de sortie en accdant aux membres .SP, .PV et .OUT de la structure PID, plutt qu'en incluant des valeurs dans la liste des oprandes.
12-20
Structure PID
Mnmonique .CTL Type de donnes DINT Description Le membre .CTL permet l'accs aux membres d'tat (bits) par un mot de 32 bits. L'instruction PID active les bits 07 15. Ce bit 31 30 29 28 27 26 25 24 23 22 21 20 Ce bit 15 14 13 12 11 10 09 08 07 .SP .KP .KI .KD .BIAS .MAXS .MINS .DB .SO .MAXO REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL point de consigne indpendant dpendant indpendant dpendant indpendant dpendant gain proportionnel (sans unit) gain automate (sans unit) gain intgral (1/s) dure de rinitialisation (minutes par rptition) gain driv (secondes) frquence (minutes) est le membre .EN .CT .CL .PVT .DOE .SWM .CA .MO .PE .NDF .NOBC .NOZC est le membre suivant, activ par l'instruction PID .INI .SPOR .OLL .OLH .EWD .DVNA .DVPA .PVLA .PVHA
anticipation de vitesse ou % de dcalage valeur maximum de mise l'chelle en units procd valeur minimum de mise l'chelle en units procd units procd de zone morte dfinition du % de sortie limite de sortie maximale (% de sortie)
12-21
Mnmonique .MINO .UPD .PV .ERR .OUT .PVH .PVL .DVP .DVN .PVDB .DVDB .MAXI .MINI .TIE .MAXCV .MINCV .MINTIE .MAXTIE .DATA
Type de donnes REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL[17]
Description limite de sortie minimale (% de sortie) temps de rafrachissement de boucle (secondes) valeur PV mise l'chelle valeur d'erreur mise l'chelle % de sortie limite d'alarme haute de la variable de procd limite d'alarme basse de la variable de procd limite d'alarme d'cart positif limite d'alarme d'cart ngatif zone morte d'alarme de la variable de procd zone morte d'alarme de dviation valeur PV maximum (entre non mise l'chelle) valeur PV minimum (entre non mise l'chelle) valeur de tieback pour la commande manuelle valeur CV maximum (correspondant 100 %) valeur CV minimum (correspondant 0 %) valeur de tieback minimum (correspondant 100 %) valeur de tieback maximum (correspondant 0 %) Le membre .DATA stocke : Elment .DATA[0] .DATA[1] .DATA[2] .DATA[3] .DATA[4] .DATA[5] .DATA[6] .DATA[7] .DATA[8] .DATA[9] .DATA[10] .DATA[11] .DATA[12] .DATA[13] .DATA[14] .DATA[15] .DATA[16] Description cumul intgral valeur temporaire de lissage driv valeur .PV prcdente valeur .ERR prcdente valeur .SP correcte prcdente constante de mise l'chelle en pourcentage constante de mise l'chelle .PV constante de mise l'chelle drive valeur .KP prcdente valeur .KI prcdente valeur .KD prcdente gain dpendant .KP gain dpendant .KI gain dpendant .KD valeur .CV prcdente constante .CV de non-mise l'chelle constante de non-mise l'chelle de tieback
.EN .CT
BOOL BOOL
12-22
Mnmonique .CL .PVT .DOE .SWM .CA .MO .PE .NDF .NOBC .NOZC .INI .SPOR .OLL .OLH .EWD .DVNA .DVPA .PVLA .PVHA
Type de donnes BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL
Description boucle en cascade (0=non ; 1=oui) suivi de variable de procd (0=non ; 1=oui) driv de (0=PV; 1=erreur) mode logiciel manuel (0=non - auto ; 1=oui - logiciel manuel) Action de contrle pour le calcul de l'erreur (0 signifie E=SP-PV ; 1 signifie E=PV-SP) mode station (0=automatique ; 1=manuel) quation PID (0=indpendant ; 1=dpendant) pas de lissage de la drive (0=filtre de lissage de la drive activ ; 1=filtre de lissage de la drive dsactiv) pas de calcul sur retour de dcalage (0=calcul sur retour de dcalage activ ; 1=calcul sur retour de dcalage dsactiv) pas de passage par zro pour zone morte (0=la zone morte passe par zro ; 1=la zone morte ne passe pas par zro) PID initialis (0=non ; 1=oui) consigne hors limites (0=non ; 1=oui) CV infrieur la limite de sortie minimum (0=non ;1=oui) CV suprieur la limite de sortie maximum (0=non ; 1=oui) erreur dans les limites de la zone morte (0=non ; 1=oui) alarme de drivation basse (0=non ; 1=oui) alarme de drivation haute (0=non ; 1=oui) alarme PV basse (0=non ; 1=oui) alarme PV haute (0=non ; 1=oui)
12-23
Conditions d'erreur :
IMPORTANT Dans le processeur PLC-5, ces dfauts taient des dfauts majeurs.
Type du dfaut 4 4 Code du dfaut 35 36
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est vrai si EnableIn est activ pendant l'excution de l'instruction pendant la post-scrutation Action L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute. L'tat de sortie de la ligne est rgl sur vrai. L'instruction excute la boucle PID. L'tat de sortie de la ligne est rgl sur faux. Action Aucune. EnableIn est toujours activ. L'instruction est excute. L'instruction excute la boucle PID. Aucune.
si l'tat d'entre de la ligne est faux L'tat de sortie de la ligne est rgl sur faux.
Aprs avoir entr l'instruction PID et indiqu sa structure, utilisez les onglets de configuration pour dfinir le fonctionnement de cette instruction.
12-24
Proportional gain (Kp) (Gain proportionnel (Kp)) Entrez le gain proportionnel (.KP). Pour les gains indpendants, c'est le gain proportionnel (sans unit). Pour les gains dpendants, c'est le gain automate (sans unit). Integral gain (Ki) (Gain intgral (Ki) Entrez le gain intgral (.KI). Pour les gains indpendants, c'est le gain intgral (1/sec). Pour les gains dpendants, c'est la dure de rinitialisation (minutes par rptition). Entrez le gain driv (.KD). Pour les gains indpendants, c'est le gain driv (secondes). Pour les gains dpendants, c'est la frquence (minutes). Slectionnez manuel (.MO) ou logiciel manuel (.SWM). Si les deux sont slectionns, le mode manuel supplante le mode logiciel manuel.
Dfinition de la configuration
Slectionnez l'onglet Configuration. Vous devez cliquer sur OK ou sur Appliquer pour que les modifications prennent effet.
Dans ce champ PID equation (Equation PID) Indiquez Slectionnez les gains indpendants ou dpendants (.PE). Utilisez les gains indpendants quand vous voulez que les trois gains (P, I et D) fonctionnent indpendamment. Utilisez les gains dpendants quand vous voulez un gain automate global qui affecte les trois termes (P, I et D). Slectionnez E=PV-SP ou E=SP-PV comme sens de calcul de l'erreur (.CA). Slectionnez PV ou erreur (.DOE). Utilisez la drive de PV pour liminer les pics de sortie rsultant des modifications de point de consigne. Utilisez la drive de l'erreur pour obtenir des rponses rapides aux changements de point de consigne lorsque l'algorithme peut tolrer les oscillations. Entrez la frquence de d'actualisation (.UPD) de l'instruction. Entrez une limite haute pour la variable de contrle (.MAXO). Entrez une limite basse pour la variable de contrle (.MINO). Entrez une valeur de zone morte (.DB). Activez ou dsactivez cette slection (.NDF). Activez ou dsactivez cette slection (.NOBC).
Loop update time (Heure de mise jour de la boucle) CV high limit (Limite haute de CV) CV low limit (Limite basse de CV) Deadband value (Valeur de zone morte) No derivative smoothing (Pas de lissage driv) No bias calculation (Pas de calcul de dcalage)
12-25
Dans ce champ No zero crossing in deadband (Pas de passage par zro en zone morte) PV tracking (Suivi de PV) Cascade loop (Boucle en cascade) Cascade type (Type de cascade)
Indiquez Activez ou dsactivez cette slection (.NOZC). Activez ou dsactivez cette slection (.PVT). Activez ou dsactivez cette slection (.CL). Si Cascade loop est activ, slectionnez esclave ou matre (.CT).
Deviation deadband (Zone morte de dviation) Entrez une valeur de zone morte d'alarme de dviation (.DVDB).
12-26
La commande en boucle ferme PID maintient une variable de procd un point de consigne voulu. L'illustration suivante donne un exemple de dbit/niveau de liquide :
point de consigne
dtecteur de niveau
14271
Dans l'exemple ci-dessus, le niveau du rservoir est compar au point de consigne. Si le niveau est suprieur au point de consigne, l'quation PID augmente la variable de contrle et la vanne de sortie du rservoir s'ouvre, faisant baisser le niveau du rservoir. L'quation PID utilise dans l'instruction PID est une quation avec possibilit d'utiliser les gains indpendants ou dpendants. Lors de l'utilisation des gains indpendants, les gains proportionnels, intgraux et drivs n'affectent respectivement que leurs termes proportionnels, intgraux et drivs. Lors de l'utilisation des gains dpendants, le gain proportionnel est remplac par un gain automate qui affecte les trois termes. Vous pouvez utiliser les deux formes d'quation pour effectuer le mme type de commande. Ces deux
12-27
types d'quation sont fournis uniquement pour vous permettre d'utiliser le type que vous connaissez le mieux.
Option de gains Gains dpendants (standard ISA) Driv de erreur (E)
t
Equation
CV = K C
E = SP - PV
t
CV = K C
E = PV - SP
t
Gains indpendants
erreur (E)
t
E = SP - PV
E = PV - SP
O :
Variable KP Ki Description gain proportionnel (sans unit) Kp = Kc sans unit gain intgral (secondes -1) Pour convertir Ki (gain intgral) en Ti (dure de rinitialisation), utilisez :
KC K i = ---------60 T i
Kd
gain driv (secondes) Pour convertir Kd (gain driv) en Td (frquence), utilisez : Kd = Kc (Td) 60 gain automate (sans unit) dure de rinitialisation (minutes/rptition) frquence (minutes)
KC Ti Td
12-28
Variable SP PV E BIAS CV dt
Description point de consigne variable de procd erreur [(SP-PV) ou (PV-SP)] anticipation de vitesse ou dcalage variable de contrle frquence de rafrachissement de boucle
Si vous ne voulez pas utiliser un terme particulier de l'quation PID, rglez son gain sur zro. Par exemple, si vous ne voulez pas d'action drive, rglez Kd ou Td sur zro.
manuel (.MO)
L'instruction PID fournit galement automatiquement les transferts sans -coups partir du mode logiciel manuel vers le mode auto ou partir du mode manuel vers le mode auto. L'instruction PID rtrocalcule la valeur du terme de cumul intgral requis pour permettre la sortie CV de suivre la valeur du rglage de sortie (.SO) en mode logiciel manuel ou l'entre tieback en mode manuel. De cette faon, lorsque la boucle passe en mode auto, la sortie CV commence la valeur de rglage de sortie ou tieback et aucun -coup ne se produit dans la valeur de sortie.
12-29
L'instruction PID peut galement fournir automatiquement un transfert sans -coups de manuel auto, mme si la commande intgrale n'est pas utilise (ex. Ki = 0). Dans ce cas, l'instruction modifie le terme .BIAS pour permettre la sortie CV de suivre la valeur de rglage de sortie ou la valeur de tieback. Lorsque la commande automatique reprend, le terme .BIAS garde sa dernire valeur. Vous pouvez dsactiver le rtrocalcul du terme .BIAS en activant le bit .NOBC dans la structure de donnes PID. Remarquez que si vous mettez .NOBC sur vrai, l'instruction PID ne fournit plus de transfert sans -coups au passage de manuel auto lorsque la commande intgrale n'est pas utilise.
Logique relais
12-30
Texte structur
PID(TIC101,Local:0:I.Ch0Data,Local:0:I.Ch1Data, Local:1:O.Ch4Data,0,Local:1:I.Ch4InHold, Local:1:I.Ch4Data);
Lorsque vous utilisez une tche priodique, assurez-vous que l'entre analogique utilise pour la variable de procd est mise jour avec le processeur une frquence bien plus rapide que la frquence de la tche priodique. Idalement, la variable de procd doit tre envoye au processeur au moins cinq dix fois plus rapidement que la tche priodique. Ceci permet de minimiser la diffrence de temps entre les chantillonnages rels de la variable de procd et l'excution de la boucle PID. Par exemple, si la boucle PID est dans une tche priodique de 250 millisecondes, utilisez une frquence de rafrachissement de boucle de 250 millisecondes (.UPD = .25) et configurez le module d'entres analogiques pour produire des donnes au moins toutes les 25 50 ms. Une autre mthode moins prcise pour l'excution d'une instruction PID consiste placer cette instruction dans une tche continue et utiliser un bit de fin de temporisation pour dclencher l'excution de l'instruction PID.
Logique relais
Texte structur
PID_timer.pre := 1000 TONR(PID_timer); IF PID_timer.DN THEN PID(TIC101,Local:0:I.Ch0Data,Local:0:I.Ch1Data, Local:1:O.Ch0Data,0,Local:1:I.Ch0InHold, Local:1:I.Ch0Data); END_IF;
12-31
Dans cette mthode, la frquence de rafrachissement de boucle pour l'instruction PID doit tre gale au prrglage du temporisateur. Comme pour l'emploi d'une tche priodique, vous devez rgler le module analogique afin qu'il produise la variable de procd une frquence bien plus rapide que la frquence de rafrachissement de boucle. Vous ne devez utiliser la mthode temporisateur pour l'excution PID de boucles qu'avec des frquences de rafrachissement correspondant au moins plusieurs fois la dure d'excution de la tche continue dans le cas le plus dfavorable. La faon la plus prcise d'excuter l'instruction PID est d'utiliser la fonction d'chantillonnage en temps rel (RTS) des modules d'entres analogiques. Le module d'entres analogiques chantillonne ses entres la frquence d'chantillonnage en temps rel que vous dterminez lorsque vous configurez le module. Lorsque la priode d'chantillonnage en temps rel du module expire, il rafrachit ses entres et met jour un horodatage cyclique (reprsent par le membre .RollingTimestamp de la structure de donnes d'entres analogiques) produit par le module. L'horodatage va de 0 32 767 millisecondes. Surveillez l'horodatage. Lorsqu'il change, un nouvel chantillon de variable de procd a t reu. Chaque fois que l'horodatage change, excutez l'instruction PID une fois. Comme l'chantillon de variable de procd est gr par le module d'entres analogiques, la frquence d'chantillonnage des entres est trs prcise et la frquence de rafrachissement de boucle utilise par l'instruction PID doit tre gale la dure RTS du module d'entres analogiques. Pour ne pas manquer d'chantillons de la variable de procd, excutez votre logique une frquence suprieure la dure du RTS. Par exemple, si la dure du RTS est de 250 ms, vous pouvez mettre la logique PID dans une tche priodique qui s'excute toutes les 100 ms pour tre sr de ne pas rater un chantillon. Vous pouvez mme placer la logique PID dans une tche continue, dans la mesure o vous vous assurez que la logique sera mise jour plus frquemment que toutes les 250 millisecondes. Un exemple de la mthode d'excution RTS est donn ci-dessous. L'excution de l'instruction PID dpend de la rception de nouvelles donnes d'entres analogiques. Si le module d'entres analogiques est dfectueux ou retir, l'automate cesse de recevoir les horodatages cycliques et la boucle PID stoppe son excution. Vous devez surveiller le bit d'tat de l'entre analogique PV et si son tat est incorrect, vous devez forcer la boucle en mode logiciel manuel et excuter la boucle chaque scrutation. Ceci permet l'oprateur de changer la sortie de la boucle PID manuellement.
12-32
Logique relais
Texte structur
IF (Local:0:I.Ch0Fault) THEN TIC101.SWM [:=] 1; ELSE TIC101.SWM := 0; END_IF; IF (Local:0:I.RollingTimestamp<>PreviousTimestamp) OR (Local:0:I.Ch0Fault) THEN PreviousTimestamp := Local:0:I.RollingTimestamp; PID(TIC101,Local:0:I.Ch0Data,Local:0:I.Ch1Data, Local:1:O.Ch0Data,0,Local:1:I.Ch0InHold, Local:1:I.Ch0Data); END_IF;
12-33
Lissage de la drive
Le calcul de la drive est amlior par un filtre de lissage. Ce filtre numrique passe-bas de premier ordre aide minimiser les grands pics de terme driv produits par les parasites dans la PV. Ce lissage est plus important avec les valeurs plus leves du gain driv. Vous pouvez dsactiver le lissage de la drive si votre processus demande de grandes valeurs de gain driv (Kd > 10, par exemple). Pour dsactiver le lissage de la drive, slectionnez l'option Pas de lissage driv dans l'onglet Configuration ou activez le bit .NDF dans la structure PID.
12-34
zone morte + point de consigne zone morte erreur dans la plage de la zone morte
dure
41026
Le passage par zro est une commande de zone morte qui permet l'instruction d'utiliser l'erreur pour les calculs, depuis le moment o la variable de procd traverse la zone morte jusqu'au moment o elle traverse le point de consigne. Une fois que la variable de procd traverse le point de consigne (l'erreur passe par zro et change de signe) et tant qu'elle reste dans la zone morte, la sortie ne change pas. La zone morte s'tend au-dessus et en-dessous du point de consigne selon la valeur que vous indiquez. Entrez zro pour inhiber la zone morte. La zone morte a les mmes units d'chelle que le point de consigne. Vous pouvez utiliser la zone morte sans le passage par zro en slectionnant Pas de passage par zro en zone morte dans l'onglet Configuration ou en activant le bit .NOZC dans la structure PID. Si vous utilisez la zone morte, la variable de contrle doit tre REAL ou elle sera force 0 lorsque l'erreur sera dans la zone morte.
12-35
applications avec dphasage de transport. Par exemple, une valeur d'anticipation reprsentant eau froide verse dans mlange chaud peut activer la valeur de sortie plus rapidement que le changement de la variable de procd d au mlange. Une valeur d'anticipation est gnralement utilise lorsque la commande intgrale n'est pas utilise. Dans ce cas, la valeur d'anticipation peut tre ajuste pour maintenir la sortie dans la plage requise, afin de garder la variable de procd prs du point de consigne.
Logique relais
Texte structur
PID(master,pv_master,0,cv_master,0,0,0); PID (slave,pv_slave,0,cv_slave,master,0,0);
Contrle de ratio
Vous pouvez maintenir deux valeurs dans un ratio en utilisant ces paramtres : valeur non contrle ; valeur contrle (le point de consigne rsultant devant tre utilis par l'instruction PID) ; ratio entre ces deux valeurs.
12-36
Logique relais
Texte structur
pid_2.sp := uncontrolled_flow * ratio PID(pid_2,pv_2,tieback_2,cv_2,0,0,0);
12-37
Thorie PID
Processus PID
SP affich en units procd A/M Logiciel OU A/M Station oprateur Auto
+ -
% dcalage de sortie A/M Logiciel Calcul PID (Sortie%) Auto Auto Manuel PV affiche en units procd Dfinition % de sortie Manuel Sortie (CV) affiche en % d'units procd Conversion units Tieback en % tieback-mintie maxtie-mintie x 100 Limite de sortie A/M Station oprateur Dfinition % de sortie Conversion % en units CV CV%(maxcv-mincv) 100 CV + mincv
SP-PV (Erreur)
-1
SP
PV-SP
Oui Conversion des binaires en units procd (PV-min.)(max. UP-min. UP) + min. UP max.-min.
PV
Action de contrle Conversion des units en % Erreur X 100 max. UP-min. UP Dfinition % de sortie
% dcalage de sortie A/M Logiciel A/M Station oprateur Auto Manuel Manuel A/M Logiciel Limite de sortie Dfinition % de sortie
(Erreur)
-1
Calcul PID
(Sortie%)
Auto
SP
PV-SP
(Sortie
Oui Auto Conversion des binaires en units procd (PV-min.)(max. UP-min. UP) + min. UP max.-min. SP PV Conversion des units en % Erreur X 100 max. UP-min. UP Manuel Manuel
Les lments rfrencs dans cette case sont des paramtres, des units et des modes en fonction de leur appartenance la boucle esclave dsigne. % dcalage de sortie A/M Logiciel
Boucle esclave
PV Action de contrle Conversion % en .SP units procd + X (max. UP-min. UP) + min. UP 100 SP-PV
-1
(Sortie matre)
PV-SP
Calcul PID
Dfinition % de sortie
max.-min.
+ min. UP
PV
12-38
Notes :
Chapitre
13
Instructions trigonomtriques
(SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Introduction
Si vous voulez trouver le sinus d'une valeur
Les instructions trigonomtriques valuent les oprations arithmtiques l'aide d'oprations trigonomtriques.
Utilisez cette instruction SIN Disponible dans ces langages logique relais texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel logique relais texte structur bloc fonctionnel Voir page 13-2
COS
13-4
TAN
13-6
13-8
13-10
13-12
(1)
Vous pouvez combiner diffrents types de donnes, mais des erreurs de prcision et un arrondissement des valeurs peuvent se produire et l'instruction est plus longue excuter. Vrifiez le bit de dpassement (S:V) pour voir si le rsultat a t tronqu. Pour les instructions de logique relais, les types de donnes en gras indiquent les types de donnes optimaux. Une instruction est excute plus rapidement et demande moins de mmoire si tous les oprandes de l'instruction utilisent le mme type de donnes optimal, gnralement DINT ou REAL.
13-2
Instructions trigonomtriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Sinus (SIN)
Oprandes :
L'instruction SIN prend le sinus de la valeur Source (en radians) et stocke le rsultat dans la Destination.
Logique relais
Oprande Source Type SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description cherche le sinus de cette valeur
Destination
point
Texte structur
dest := SIN(source);
Utilisez SIN comme une fonction. Cette fonction calcule le sinus de source et stocke le rsultat dans dest. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point SIN Type FBD_MATH_ADVANCED Format structure Description structure SIN
Structure FBD_MATH_ADVANCED
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Entre dans l'instruction mathmatique. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction mathmatique. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Description : La Source doit tre suprieure ou gale -205 887,4 (-2 x 215) et
infrieure ou gale 205 887,4 (2 x 215). La valeur rsultante dans la Destination est toujours suprieure ou gale -1 et infrieure ou gale 1.
Instructions trigonomtriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
13-3
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune Excution : Logique relais
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai pendant la post-scrutation Action L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'automate calcule le sinus de la Source et place le rsultat dans la Destination. L'tat de sortie de la ligne est rgl sur vrai. L'tat de sortie de la ligne est rgl sur faux.
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Exemple : Calculer le sinus de value et placer le rsultat dans result. Logique relais
Texte structur
result := SIN(value);
Bloc fonctionnel
13-4
Instructions trigonomtriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Cosinus (COS)
Oprandes :
L'instruction COS prend le cosinus de la valeur Source (en radians) et stocke le rsultat dans la Destination.
Logique relais
Oprande Source Type SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description cherche le cosinus de cette valeur
Destination
point
Texte structur
dest := COS(source);
Utilisez COS comme une fonction. Cette fonction calcule le cosinus de source et stocke le rsultat dans dest. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point COS Type FBD_MATH_ADVANCED Format structure Description structure COS
Structure FBD_MATH_ADVANCED
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Entre dans l'instruction mathmatique. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction mathmatique. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Description : La Source doit tre suprieure ou gale -205 887,4 (-2 x 215) et
infrieure ou gale 205 887,4 (2 x 215). La valeur rsultante dans la Destination est toujours suprieure ou gale -1 et infrieure ou gale 1.
Instructions trigonomtriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
13-5
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune Excution : Logique relais
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai pendant la post-scrutation Action L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'automate calcule le cosinus de la Source et place le rsultat dans la Destination. L'tat de sortie de la ligne est rgl sur vrai. L'tat de sortie de la ligne est rgl sur faux.
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Exemple : Calculer le cosinus de value et placer le rsultat dans result. Logique relais
Texte structur
result := COS(value);
Bloc fonctionnel
13-6
Instructions trigonomtriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Tangente (TAN)
Oprandes :
L'instruction TAN prend la tangente de la valeur Source (en radians) et stocke le rsultat dans la Destination.
Logique relais
Oprande Source Type SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description cherche la tangente de cette valeur
Destination
point
Texte structur
dest := TAN(source);
Utilisez TAN comme une fonction. Cette fonction calcule la tangente de source et stocke le rsultat dans dest. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point TAN Type FBD_MATH_ADVANCED Format structure Description structure TAN
Structure FBD_MATH_ADVANCED
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Entre dans l'instruction mathmatique. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction mathmatique. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Instructions trigonomtriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
13-7
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Exemple : Calculer la tangente de value et placer le rsultat dans result. Logique relais
Texte structur
result := TAN(value);
Bloc fonctionnel
13-8
Instructions trigonomtriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
L'instruction ASN prend le sinus d'arc de la valeur Source et stocke le rsultat dans la Destination (en radians).
Logique relais
Oprande Source Type SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description cherche le sinus d'arc de cette valeur
Destination
point
Texte structur
dest := ASIN(source);
Utilisez ASIN comme une fonction. Cette fonction calcule le sinus d'arc de source et stocke le rsultat dans dest. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point ASN Type FBD_MATH_ADVANCED Format structure Description structure ASN
Structure FBD_MATH_ADVANCED
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Entre dans l'instruction mathmatique. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction mathmatique. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Instructions trigonomtriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
13-9
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Exemple : Calculer le sinus d'arc de value et placer le rsultat dans result. Logique relais
Texte structur
result := ASIN(value);
Bloc fonctionnel
13-10
Instructions trigonomtriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
L'instruction ACS prend le cosinus d'arc de la valeur Source et stocke le rsultat dans la Destination (en radians).
Logique relais
Oprande Source Type SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description cherche le cosinus d'arc de cette valeur
Destination
point
Texte structur
dest := ACOS(source);
Utilisez ACOS comme une fonction. Cette fonction calcule le cosinus d'arc de source et stocke le rsultat dans dest. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point ACS Type FBD_MATH_ADVANCED Format structure Description structure ACS
Structure FBD_MATH_ADVANCED
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Entre dans l'instruction mathmatique. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction mathmatique. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Instructions trigonomtriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
13-11
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Exemple : Calculer le cosinus d'arc de value et placer le rsultat dans result. Logique relais
Texte structur
result := ACOS(value);
Bloc fonctionnel
13-12
Instructions trigonomtriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
L'instruction ATN prend la tangente d'arc de la valeur Source et stocke le rsultat dans la Destination (en radians).
Logique relais
Oprande Source Type SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description cherche la tangente d'arc de cette valeur
Destination
point
Texte structur
dest := ATAN(source);
Utilisez ATAN comme une fonction. Cette fonction calcule la tangente d'arc de source et stocke le rsultat dans dest. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point ATN Type FBD_MATH_ADVANCED Format structure Description structure ATN
Structure FBD_MATH_ADVANCED
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Entre dans l'instruction mathmatique. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction mathmatique. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Instructions trigonomtriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
13-13
pendant la post-scrutation
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Exemple : Calculer la tangente d'arc de value et placer le rsultat dans result. Logique relais
Texte structur
result := ATAN(value);
Bloc fonctionnel
13-14
Instructions trigonomtriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Notes :
Chapitre
14
Introduction
Si vous voulez trouver le logarithme naturel d'une valeur
LOG
14-4
XPY
14-6
Il n'existe pas d'instruction quivalente en texte structur. Utilisez l'oprateur dans une expression.
Vous pouvez combiner diffrents types de donnes, mais des erreurs de prcision et un arrondissement des valeurs peuvent se produire et l'instruction est plus longue excuter. Vrifiez le bit S:V pour voir si le rsultat a t tronqu. Pour les instructions de logique relais, les types de donnes en gras indiquent les types de donnes optimaux. Une instruction est excute plus rapidement et demande moins de mmoire si tous les oprandes de l'instruction utilisent le mme type de donnes optimal, gnralement DINT ou REAL.
14-2
Logique relais
Oprande Source Type SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description cherche le logarithme naturel de cette valeur
Destination
point
Texte structur
dest := LN(source);
Utilisez LN comme une fonction. Cette fonction calcule le logarithme naturel de source et stocke le rsultat dans dest. Pour des informations sur la syntaxe des expressions en texte structur, voir l'Annexe C.
Bloc fonctionnel
Oprande point LN Type FBD_MATH_ADVANCED Format structure Description structure LN
Structure FBD_MATH_ADVANCED
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Entre dans l'instruction mathmatique. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct.
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune
14-3
pendant la post-scrutation
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction EnableIn est effac EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Exemple : Calculer le logarithme naturel de value et placer le rsultat dans result. Logique relais
Texte structur
result := LN(value);
Bloc fonctionnel
14-4
L'instruction LOG prend le logarithme dcimal de la Source et stocke le rsultat dans la Destination.
Logique relais
Oprande Source Type SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description cherche le logarithme de cette valeur
Destination
point
Texte structur
dest := LOG(source);
Utilisez LOG comme une fonction. Cette fonction calcule le logarithme de source et stocke le rsultat dans dest. Pour des informations sur la syntaxe des expressions en texte structur, voir l'Annexe C.
Bloc fonctionnel
Oprande point LOG Type FBD_MATH_ADVANCED Format structure Description structure LOG
Structure FBD_MATH_ADVANCED
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Entre dans l'instruction mathmatique. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction mathmatique. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
14-5
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Exemple : Calculer le logarithme de value et placer le rsultat dans result. Logique relais
Texte structur
result := LOG(value);
Bloc fonctionnel
14-6
X la puissance Y (XPY)
Oprandes :
L'instruction XPY lve Source A (X) la puissance de Source B (Y) et stocke le rsultat dans la Destination.
Logique relais
Oprande Source X Type SINT INT DINT REAL SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description valeur de base
Source Y
immdiat point
exposant
Destination
point
Texte structur
dest := sourceX ** sourceY;
Utilisez deux signes de multiplication juxtaposs comme oprateur dans une expression. Cette expression lve sourceX la puissance de sourceY et stocke le rsultat dans dest. Pour des informations sur la syntaxe des expressions en texte structur, voir l'Annexe C.
Bloc fonctionnel
Oprande point XPY Type FBD_MATH Format structure Description structure XPY
14-7
Structure FBD_MATH
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Valeur de base Valeurs correctes = toute virgule flottante. Exposant. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction mathmatique. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur :
Un dfaut mineur se produit si Source X est ngatif et Source Y n'est pas un nombre entier Type du dfaut 4 Code du dfaut 4
pendant la post-scrutation
14-8
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Logique relais
Texte structur
result := (value_1 value_2);
Bloc fonctionnel
Chapitre
15
Introduction
Si vous voulez convertir des radians en degrs
RAD
15-4
convertir un nombre entier en valeur DCB convertir une valeur DCB en un nombre entier retirer la partie dcimale d'une valeur
(1)
Vous pouvez combiner diffrents types de donnes, mais des erreurs de prcision et un arrondissement des valeurs peuvent se produire et l'instruction est plus longue excuter. Vrifiez le bit S:V pour voir si le rsultat a t tronqu. Pour les instructions de logique relais, les types de donnes en gras indiquent les types de donnes optimaux. Une instruction est excute plus rapidement et demande moins de mmoire si tous les oprandes de l'instruction utilisent le mme type de donnes optimal, gnralement DINT ou REAL.
15-2
Degrs (DEG)
Oprandes :
L'instruction DEG convertit la Source (en radians) en degrs et stocke le rsultat dans la Destination.
Logique relais
Oprande Source Type SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description valeur convertir en degrs
Destination
point
Texte structur
dest := DEG(source);
Utilisez DEG comme une fonction. Cette fonction convertit source en degrs et stocke le rsultat dans dest. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point DEG Type FBD_MATH_ADVANCED Format structure Description structure DEG
Structure FBD_MATH_ADVANCED
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Entre dans l'instruction de conversion. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction de conversion. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
15-3
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Exemple : Convertir value en degrs et placer le rsultat dans result. Logique relais
Texte structur
result := DEG(value);
Bloc fonctionnel
15-4
Radians (RAD)
Oprandes :
L'instruction RAD convertit la Source (en degrs) en radians et stocke le rsultat dans la Destination.
Logique relais
Oprande Source Type SINT INT DINT REAL SINT INT DINT REAL Format immdiat point Description valeur convertir en radians
Destination
point
Texte structur
dest := RAD(source);
Utilisez RAD comme une fonction. Cette fonction convertit source en radians et stocke le rsultat dans dest. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point RAD Type FBD_MATH_ADVANCED Format structure Description structure RAD
Structure FBD_MATH_ADVANCED
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Entre dans l'instruction de conversion. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction de conversion. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
15-5
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Exemple : Convertir value en radians et placer le rsultat dans result. Logique relais
Texte structur
result := RAD(value);
Bloc fonctionnel
15-6
L'instruction TOD convertit une valeur dcimale (0 Source 99 999 999) en valeur DCB et stocke le rsultat dans la Destination.
Logique relais
Oprande Source Type SINT INT DINT Format immdiat point Description valeur convertir en dcimal
Un point SINT ou INT est converti en valeur DINT par remplissage par zros. Destination SINT INT DINT point point pour le stockage du rsultat
Bloc fonctionnel
Oprande point TOD Type FBD_CONVERT Format structure Description structure TOD
Structure FBD_CONVERT
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Entre dans l'instruction de conversion. Valeurs correctes = tout nombre entier. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction de conversion. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Description : DCB est le systme nombre Dcimal Cod Binaire qui exprime des
chiffres dcimaux individuels (0 9) dans une numration binaire sur 4 bits. Si vous entrez une Source ngative, l'instruction gnre un dfaut mineur et efface la Destination.
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur :
Un dfaut mineur se produit si Source < 0
Publication 1756-RM003F-FR-P - Mai 2002
Type du dfaut 4
Code du dfaut 4
15-7
non
oui
oui
fin
L'automate convertit la Source en DCB et place le rsultat dans la Destination. L'tat de sortie de la ligne est rgl sur vrai. L'tat de sortie de la ligne est rgl sur faux.
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
15-8
Logique relais
Bloc fonctionnel
15-9
L'instruction FRD convertit une valeur DCB (Source) en valeur dcimale et stocke le rsultat dans la Destination.
Logique relais
Oprande Source Type SINT INT DINT Format immdiat point Description valeur convertir en dcimal
Un point SINT ou INT est converti en valeur DINT par remplissage par zros. Destination SINT INT DINT point point pour le stockage du rsultat
Bloc fonctionnel
Oprande point FRD Type FBD_CONVERT Format structure Description structure FRD
Structure FBD_CONVERT
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Entre dans l'instruction de conversion. Valeurs correctes = tout nombre entier. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction de conversion. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune Excution :
15-10
Logique relais
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'automate convertit la Source en valeur dcimale et place le rsultat dans la Destination. L'tat de sortie de la ligne est rgl sur vrai. L'tat de sortie de la ligne est rgl sur faux.
pendant la post-scrutation
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Logique relais
Bloc fonctionnel
15-11
Troncation (TRN)
Oprandes :
L'instruction TRN retire (tronque) la partie dcimale de la Source et stocke le rsultat dans la Destination.
Logique relais
Oprande Source Destination Type REAL SINT INT DINT REAL Format immdiat point point Description valeur tronquer point pour le stockage du rsultat
Texte structur
dest := TRUNC(source);
Utilisez TRUNC comme une fonction. Cette fonction tronque source et stocke le rsultat dans dest. Pour des informations sur la syntaxe des expressions en texte structur, reportez-vous l'Annexe C.
Bloc fonctionnel
Oprande point TRN Type FBD_TRUNCATE Format structure Description structure TRN
Structure FBD_TRUNCATE
Paramtre d'entre EnableIn Type de donnes BOOL Description Entre active. Si effac, l'instruction n'est pas excute et les sorties ne sont pas actualises. Activ par dfaut. Entre dans l'instruction de conversion. Valeurs correctes = toute virgule flottante. Description L'instruction a fourni un rsultat correct. Rsultat de l'instruction de conversion. Les indicateurs d'tat arithmtiques sont activs pour cette sortie.
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur : aucune
15-12
pendant la post-scrutation
Bloc fonctionnel
Condition pendant la pr-scrutation pendant la premire scrutation de l'instruction pendant la premire excution de l'instruction si EnableIn est effac si EnableIn est activ pendant la post-scrutation Action Aucune. Aucune. Aucune. EnableOut est effac. L'instruction est excute. EnableOut est activ. Aucune.
Logique relais
Texte structur
float_value_1_truncated := TRUNC(float_value_1);
Bloc fonctionnel
Chapitre
16
Introduction
Si vous voulez dterminer quand le buffer contient des caractres de fin
Utilisez les instructions du port srie ASCII pour lire et crire des caractres ASCII.
Par exemple trouver les donnes contenant des caractres de fin Utilisez cette instruction ABL ACB Disponible dans ces langages logique relais texte structur logique relais texte structur logique relais texte structur Voir page 16-5 16-8
compter les caractres dans le buffer vrifier qu'il y a le nombre de caractres voulu avant de lire le buffer effacer le contenu du buffer effacer les instructions port srie ASCII qui sont en cours d'excution ou qui sont en attente obtenir l'tat des lignes de commande du port srie activer ou dsactiver le signal DTR activer ou dsactiver le signal RTS lire un nombre fixe de caractres lire des donnes d'un quipement qui envoie le mme nombre de caractres chaque transmission effacer les anciennes donnes du buffer au dmarrage synchroniser le buffer avec un quipement faire raccrocher un modem
ACL
16-10
AHL
16-12
ARD
logique relais texte structur logique relais texte structur logique relais texte structur
16-16
lire un nombre variable de caractres, lire des donnes d'un quipement qui jusqu'au premier jeu de caractres de envoie un nombre variable de caractres chaque transmission fin inclus envoyer des caractres et ajouter automatiquement un ou deux caractres supplmentaires pour marquer la fin des donnes envoyer des caractres envoyer des messages utilisant toujours le ou les mmes caractres de fin envoyer des messages utilisant diffrents caractres de fin
ARL
16-19
AWA
16-23
AWT
16-27
IMPORTANT
Pour utiliser les instructions port srie ASCII, vous devez configurer le port srie de l'automate. Voir Automate Logix5000 - Procdures gnrales (publication 1756-PM001).
16-2
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Excution de l'instruction
Les instructions port srie ASCII sont excutes de faon asynchrone par rapport la scrutation de la logique.
Logique L'tat d'entre de la ligne passe de faux vrai File d'attente Instruction 1 Instruction 2 Instruction 3 Instruction 4 L'instruction entre dans la file d'attente ASCII. Les donnes circulent entre le buffer et le port srie. Contrle Buffer Les donnes circulent entre la tche et le buffer. Tche ASCII La premire instruction de la file d'attente est excute.
Chaque instruction port srie ASCII (sauf l'instruction ACL) utilise une structure SERIAL_PORT_CONTROL pour excuter les fonctions suivantes : contrler l'excution de l'instruction ; fournir des informations d'tat sur l'instruction.
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
16-3
Le schma suivant montre les changements dans les bits d'tat pendant que l'instruction ABL teste le buffer pour les caractres de fin.
scrutation scrutation scrutation scrutation
faux
vrai
faux
vrai
faux
.EN
dsactiv
activ
dsactiv
activ
dsactiv
.EU
dsactiv
activ
.RN
ds acti v
acti v
ds acti v
acti v
ds acti v
.DN ou .ER
ds acti v
acti v
ds acti v
acti v
.FD
ds acti v entre dans la file d'attente excute dans cet exemple, trouve les caractres de fin
acti v
ds acti v
acti v
remet les bits d'tat zro quand scrut et .DN ou .ER est activ, active le bit EM
La file d'attente ASCII peut contenir jusqu' 16 instructions. Lorsque la file d'attente est pleine, une instruction tente d'entrer dans la file chacune des scrutations suivantes de l'instruction, comme indiqu ci-dessous :
scrutation scrutation scrutation scrutation
faux
vrai
faux
.EN
dsactiv
activ
.EU
dsactiv
activ
tente d'entrer dans la file, mais celle-ci est pleine entre dans la file d'attente
16-4
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
16-5
L'instruction ABL compte le nombre de caractres dans le buffer, jusqu'au premier caractre de fin inclus.
Logique relais
ABL ASCII Test For Buffer Line Channel SerialPort Control Character Count EN DN ER
Description 0 point qui commande l'opration 0 Pendant l'excution, affiche le nombre de caractres dans le buffer, y compris le premier jeu de caractres de fin.
? ? ?
Texte structur
ABL(Channel SerialPortControl);
Les oprandes sont les mmes que ceux de l'instruction ABL en logique relais. Accdez la valeur de Comptage des caractres par le membre .POS de la structure SERIAL_PORT_CONTROL.
16-6
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Structure SERIAL_PORT_CONTROL
Mnmonique .EN .EU .DN .RN .EM .ER .FD .POS Type de donnes BOOL BOOL BOOL BOOL BOOL BOOL BOOL DINT Description Le bit d'activation indique que l'instruction est active. Le bit de file d'attente indique que l'instruction est dans la file d'attente ASCII. Le bit de fin indique que l'instruction est termine, mais il est asynchrone par rapport la scrutation logique. Le bit d'excution indique que l'instruction est en cours d'excution. Le bit vide indique que l'instruction est termine, mais il est synchrone par rapport la scrutation logique. Le bit d'erreur indique quand l'instruction choue (erreurs). Le bit trouv indique que l'instruction a trouv le ou les caractres de fin. La position dtermine le nombre de caractres dans le buffer, jusqu'au premier jeu de caractres de fin inclus. L'instruction renvoie ce nombre uniquement aprs avoir trouv le ou les caractres de fin. L'erreur contient une valeur hexadcimale qui identifie la cause d'une erreur.
.ERROR
DINT
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
16-7
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute lorsque l'tat d'entre de la ligne passe d'effac activ. L'tat de sortie de la ligne est rgl sur vrai. L'instruction compte les caractres dans le buffer. Le bit .EN est activ. Les autres bits d'tat sont effacs, sauf le bit .UL. L'instruction tente d'entrer dans la file d'attente ASCII. L'tat de sortie de la ligne est rgl sur faux. Aucune. Action du texte structur Aucune. -
pendant la post-scrutation
Logique relais
MV_line.EN /
ABL ASCII Test For Buffer Line Channel 0 SerialPort Control MV_line Character Count 0
EN DN ER
Texte structur
ABL(0,MV_line);
16-8
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Logique relais
ACB ASCII Chars in Buffer Channel SerialPort Control Character Count EN DN ER
Entrez 0 point qui commande l'opration 0 Pendant l'excution, affiche le nombre de caractres dans le buffer.
? ? ?
Texte structur
ACB(Channel SerialPortControl);
Les oprandes sont les mmes que ceux de l'instruction ACB en logique relais. Indiquez cependant la valeur de Comptage des caractres en accdant au membre .POS de la structure SERIAL_PORT_CONTROL, plutt qu'en incluant la valeur dans la liste des oprandes.
Structure SERIAL_PORT_CONTROL
Mnmonique .EN .EU .DN .RN .EM .ER .FD .POS .ERROR Type de donnes BOOL BOOL BOOL BOOL BOOL BOOL BOOL DINT DINT Description Le bit d'activation indique que l'instruction est active. Le bit de file d'attente indique que l'instruction est dans la file d'attente ASCII. Le bit de fin indique que l'instruction est termine, mais il est asynchrone par rapport la scrutation logique. Le bit d'excution indique que l'instruction est en cours d'excution. Le bit vide indique que l'instruction est termine, mais il est synchrone par rapport la scrutation logique. Le bit d'erreur indique quand l'instruction choue (erreurs). Le bit trouv indique que l'instruction a trouv un caractre. La position dtermine le nombre de caractres dans le buffer, jusqu'au premier jeu de caractres de fin inclus. L'erreur contient une valeur hexadcimale qui identifie la cause d'une erreur.
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
16-9
2. Il s'agit d'une instruction de transition : en logique relais, fait passer l'tat d'entre de la ligne d'effac activ chaque fois que l'instruction doit tre excute ; en texte structur, conditionne l'instruction afin qu'elle soit excute uniquement lors d'une transition. Voir Annexe C.
pendant la post-scrutation
EN DN ER
Texte structur
ACB(0,bar_code_count);
16-10
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Logique relais
ACL ASCII Clear Buffer Channel Clear Serial Port Read Clear Serial Port Write
Oprande
? ? ?
Entrez 0 Pour effacer le buffer et retirer les instructions ARD et ARL de la file d'attente, entrez Oui. Pour retirer les instructions AWA et AWT de la file d'attente, entrez Oui.
Texte structur
ACL(Channel, ClearSerialPortRead, ClearSerialPortWrite);
Les oprandes sont les mmes que ceux de l'instruction ACL en logique relais.
2. Pour dterminer si une instruction a t retire de la file d'attente ou si elle a t abandonne, examinez les lments suivants dans l'instruction approprie : le bit .ER est activ ; le membre .ERROR est 16#E.
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
16-11
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai si EnableIn est activ pendant l'excution de l'instruction pendant la post-scrutation Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute. L'tat de sortie de la ligne est rgl sur vrai. Action du texte structur Aucune. EnableIn est toujours activ. L'instruction est excute. Aucune.
L'instruction efface les instructions et le contenu du (des) buffer(s) indiqus. L'tat de sortie de la ligne est rgl sur faux.
Logique relais
S:FS
ACL ASCII Clear Buffer Channel Clear Serial Port Read Clear Serial Port Write
0 1 1
Texte structur
osri_1.InputBit := S:FS; OSRI(osri_1); IF (osri_1.OutputBit) THEN ACL(0,0,1); END_IF;
16-12
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
L'instruction AHL obtient l'tat des lignes de commande et active ou dsactive les signaux DTR et RTS.
Logique relais
AHL ASCII Handshake Lines Channel AND Mask OR Mask SerialPort Control Channel Status(Decimal) EN ? ? ?? ? ?? ? ? DN ER
Oprande Canal ANDMask ORMask Contrle du port srie Etat du canal (dcimal)
point qui commande l'opration 0 Pendant l'excution, affiche l'tat des lignes de commande. Pour l'tat de cette ligne de commande CTS RTS DSR DCD DTR Caractre XOFF reu Examinez ce bit 0 1 2 3 4 5
Texte structur
AHL(Channel,ANDMask,ORMask, SerialPortControl);
Les oprandes sont les mmes que ceux de l'instruction AHL en logique relais. Indiquez cependant la valeur d'Etat du canal en accdant au membre .POS de la structure SERIAL_PORT_CONTROL, plutt qu'en incluant la valeur dans la liste des oprandes.
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
16-13
Structure SERIAL_PORT_CONTROL
Mnmonique .EN .EU .DN .RN .EM .ER .FD .POS .ERROR Type de donnes BOOL BOOL BOOL BOOL BOOL BOOL BOOL DINT DINT Description Le bit d'activation indique que l'instruction est active. Le bit de file d'attente indique que l'instruction est dans la file d'attente ASCII. Le bit de fin indique que l'instruction est termine, mais il est asynchrone par rapport la scrutation logique. Le bit d'excution indique que l'instruction est en cours d'excution. Le bit vide indique que l'instruction est termine, mais il est synchrone par rapport la scrutation logique. Le bit d'erreur indique quand l'instruction choue (erreurs). Le bit trouv ne s'applique pas cette instruction. La position stocke l'tat des lignes de commande. L'erreur contient une valeur hexadcimale qui identifie la cause d'une erreur.
n'utilise pas d'instructions ARD ou ARL Slectionnez le mode Systme (System) ou Utilisateur.
2. Utilisez le tableau suivant pour slectionner les valeurs correctes pour les oprandes ANDMask et ORMask :
Pour que DTR soit dsactiv Et pour que RTS soit dsactiv activ inchang activ dsactiv activ inchang inchang dsactiv activ inchang Entrez cette valeur Et entrez cette ANDMask valeur ORMask 3 1 1 2 0 0 2 0 0 0 2 0 1 3 1 0 2 0
16-14
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
3. Il s'agit d'une instruction de transition : en logique relais, fait passer l'tat d'entre de la ligne d'effac activ chaque fois que l'instruction doit tre excute ; en texte structur, conditionne l'instruction afin qu'elle soit excute uniquement lors d'une transition. Voir Annexe C.
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute lorsque l'tat d'entre de la ligne passe d'effac activ. L'tat de sortie de la ligne est rgl sur vrai. Action du texte structur Aucune. -
L'instruction obtient l'tat de la ligne de commande et active ou dsactive les signaux DTR et RTS. Le bit .EN est activ. Les autres bits d'tat sont effacs, sauf le bit .UL. L'instruction tente d'entrer dans la file d'attente ASCII. L'tat de sortie de la ligne est rgl sur faux. Aucune.
pendant la post-scrutation
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
16-15
Logique relais
get_control_line_status AHL ASCII Handshake Lines Channel AND Mask OR Mask SerialPort Control Channel Status(Decimal)
EN 0 0 0 serial_port 29 DN ER
Texte structur
osri_1.InputBit := get_control_line_status; OSRI(osri_1); IF (osri_1.OutputBit) THEN AHL(0,0,0,serial_port); END_IF;
16-16
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
L'instruction ARD retire des caractres du buffer et les stocke dans la Destination.
Logique relais
ARD ASCII Read Channel Destination SerialPort Control SerialPort Control Length Characters Read EN ? ? ?? ? ? ? DN ER
Entrez 0 point dans lequel les caractres sont dplacs (lecture) : pour un type de donnes chane, entrez le nom du point ; pour un tableau SINT, INT ou DINT, entrez le premier lment du tableau. point qui commande l'opration nombre de caractres transfrer vers la destination (lecture)
Remarques
Si vous voulez comparer, convertir ou manipuler les caractres, utilisez un type de donnes chane. Les types de donnes chane sont : type de donnes STRING par dfaut ; tout nouveau type de donnes chane que vous crez.
point immdiat
La longueur de contrle du port srie doit tre infrieure ou gale la taille de la Destination. Si vous voulez que la longueur de contrle du port srie soit gale la taille de la Destination, entrez 0. Pendant l'excution, affiche le nombre de caractres lus.
Caractres lus
DINT
immdiat
Texte structur
ARD(Channel,Destination, SerialPortControl);
Les oprandes sont les mmes que ceux de l'instruction ARD en logique relais. Indiquez cependant les valeurs de Longueur de contrle du port srie et de Caractres lus en accdant aux membres .LEN et .POS de la structure SERIAL_PORT_CONTROL, plutt qu'en incluant les valeurs dans la liste des oprandes.
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
16-17
Structure SERIAL_PORT_CONTROL
Mnmonique .EN .EU .DN .RN .EM .ER .FD .LEN .POS .ERROR Type de donnes BOOL BOOL BOOL BOOL BOOL BOOL BOOL DINT DINT DINT Description Le bit d'activation indique que l'instruction est active. Le bit de file d'attente indique que l'instruction est dans la file d'attente ASCII. Le bit de fin indique que l'instruction est termine, mais il est asynchrone par rapport la scrutation logique. Le bit d'excution indique que l'instruction est en cours d'excution. Le bit vide indique que l'instruction est termine, mais il est synchrone par rapport la scrutation logique. Le bit d'erreur indique quand l'instruction choue (erreurs). Le bit trouv ne s'applique pas cette instruction. La longueur indique le nombre de caractres dplacer dans la Destination (lecture). La position affiche le nombre de caractres lus. L'erreur contient une valeur hexadcimale qui identifie la cause d'une erreur.
16-18
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute lorsque l'tat d'entre de la ligne passe d'effac activ. L'tat de sortie de la ligne est rgl sur vrai. Action du texte structur Aucune. -
L'instruction retire des caractres du buffer et les stocke dans la Destination. Le bit .EN est activ. Les autres bits d'tat sont effacs, sauf le bit .UL. L'instruction tente d'entrer dans la file d'attente ASCII. L'tat de sortie de la ligne est rgl sur faux. Aucune.
pendant la post-scrutation
Logique relais
bar_code_count.EN / ACB ASCII Chars in Buffer Channel 0 SerialPort Control bar_code_count Character Count 0
EN DN ER
ARD ASCII Read Channel Destination EN DN ER 0 bag_bar_code '' SerialPort Control bar_code_read SerialPort Control Length 24 Characters Read 0
Texte structur
ACB(0,bar_code_count); IF bar_code_count.POS >= 24 THEN bar_code_read.LEN := 24; ARD(0,bag_bar_code,bar_code_read); END_IF;
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
16-19
L'instruction ARL retire des caractres dfinis du buffer et les stocke dans la Destination.
Logique relais
ARL ASCII Read Line Channel Destination SerialPort Control SerialPort Control Length Characters Read EN ? ? ?? ? ? ? DN ER
Entrez 0 point dans lequel les caractres sont dplacs (lecture) : pour un type de donnes chane, entrez le nom du point ; pour un tableau SINT, INT ou DINT, entrez le premier lment du tableau. point qui commande l'opration nombre maximum de caractres lire si aucun caractre de fin n'est trouv.
Remarques
Si vous voulez comparer, convertir ou manipuler les caractres, utilisez un type de donnes chane. Les types de donnes chane sont : type de donnes STRING par dfaut ; tout nouveau type de donnes chane que vous crez.
point immdiat
Entrez le nombre maximum de caractres qu'un message peut contenir (ex. : quand arrter la lecture si aucun caractre de fin n'est trouv). Par exemple, si les messages ont une longueur de 3 6 caractres, entrez 6. La longueur de contrle du port srie doit tre infrieure ou gale la taille de la Destination. Si vous voulez que la longueur de contrle du port srie soit gale la taille de la Destination, entrez 0.
Caractres lus
DINT
immdiat
Texte structur
ARL(Channel,Destination, SerialPortControl);
Les oprandes sont les mmes que ceux de l'instruction ARL en logique relais. Indiquez cependant les valeurs de Longueur de contrle du port srie et de Caractres lus en accdant aux membres .LEN et .POS de la structure SERIAL_PORT_CONTROL, plutt qu'en incluant les valeurs dans la liste des oprandes.
16-20
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Structure SERIAL_PORT_CONTROL
Mnmonique .EN .EU .DN .RN .EM .ER .FD .LEN .POS .ERROR Type de donnes BOOL BOOL BOOL BOOL BOOL BOOL BOOL DINT DINT DINT Description Le bit d'activation indique que l'instruction est active. Le bit de file d'attente indique que l'instruction est dans la file d'attente ASCII. Le bit de fin indique que l'instruction est termine, mais il est asynchrone par rapport la scrutation logique. Le bit d'excution indique que l'instruction est en cours d'excution. Le bit vide indique que l'instruction est termine, mais il est synchrone par rapport la scrutation logique. Le bit d'erreur indique quand l'instruction choue (erreurs). Le bit trouv ne s'applique pas cette instruction. La longueur indique le nombre maximum de caractres dplacer dans la destination (ex. : quand arrter la lecture si aucun caractre de fin n'est trouv). La position affiche le nombre de caractres lus. L'erreur contient une valeur hexadcimale qui identifie la cause d'une erreur.
Description : L'instruction ARL retire des caractres du buffer et les stocke dans la
Destination comme suit : l'excution de l'instruction ARL continue jusqu' ce qu'elle ait retir un des lments suivants : le premier jeu de caractres de fin ; le nombre de caractres indiqu (Longueur de contrle du port srie) ; pendant l'excution de l'instruction ARL, aucune autre instruction port srie ASCII n'est excute. Pour programmer l'instruction ARL, suivez ces directives : 1. Configurez le port srie de l'automate. a. Slectionnez le mode Utilisateur (User). b. Dfinissez les caractres qui servent de caractres de fin. 2. Utilisez les rsultats d'une instruction ABL pour dclencher l'instruction ARL. Ceci empche l'instruction ARL d'arrter la file d'attente ASCII pendant qu'elle attend les caractres de fin. 3. Il s'agit d'une instruction de transition : en logique relais, fait passer l'tat d'entre de la ligne d'effac activ chaque fois que l'instruction doit tre excute. en texte structur, conditionne l'instruction afin qu'elle soit excute uniquement lors d'une transition. Voir Annexe C. 4. Pour dclencher une action aprs l'excution de l'instruction, examinez le bit EM.
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
16-21
L'instruction retire les caractres dfinis du buffer et les stocke dans la Destination. Le bit .EN est activ. Les autres bits d'tat sont effacs, sauf le bit .UL. L'instruction tente d'entrer dans la file d'attente ASCII. L'tat de sortie de la ligne est rgl sur faux. Aucune.
pendant la post-scrutation
16-22
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Logique relais
MV_line.EN / ABL ASCII Test For Buffer Line Channel 0 SerialPort Control MV_line Character Count 0
EN DN ER
Texte structur
ABL(0,MV_line); osri_1.InputBit := MVLine.FD; OSRI(osri_1); IF (osri_1.OutputBit) THEN mv_read.LEN := 12; ARL(0,MV_msg,MV_read); END_IF;
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
16-23
L'instruction AWA envoie un nombre dfini de caractres du point Source vers un quipement srie et ajoute un ou deux caractres prdfinis.
Logique relais
AWA ASCII Write Append Channel Source SerialPort Control SerialPort Control Length Characters Sent EN ? ? ?? ? ? ? DN ER
Entrez 0 point contenant les caractres envoyer : pour un type de donnes chane, entrez le nom du point ; pour un tableau SINT, INT ou DINT, entrez le premier lment du tableau. point qui commande l'opration nombre de caractres envoyer
Remarques
Si vous voulez comparer, convertir ou manipuler les caractres, utilisez un type de donnes chane. Les types de donnes chane sont : type de donnes STRING par dfaut ; tout nouveau type de donnes chane que vous crez.
point immdiat
La longueur de contrle du port srie doit tre infrieure ou gale la taille de la Source. Si vous voulez que la longueur de contrle du port srie soit gale au nombre de caractres de la Source, entrez 0. Pendant l'excution, affiche le nombre de caractres envoys.
Caractres envoys
DINT
immdiat
Texte structur
AWA(Channel,Source, SerialPortControl);
Les oprandes sont les mmes que ceux de l'instruction AWA en logique relais. Indiquez cependant les valeurs de Longueur de contrle du port srie et de Caractres envoys en accdant aux membres .LEN et .POS de la structure SERIAL_PORT_CONTROL, plutt qu'en incluant les valeurs dans la liste des oprandes.
16-24
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Structure SERIAL_PORT_CONTROL
Mnmonique .EN .EU .DN .RN .EM .ER .FD .LEN .POS .ERROR Type de donnes BOOL BOOL BOOL BOOL BOOL BOOL BOOL DINT DINT DINT Description Le bit d'activation indique que l'instruction est active. Le bit de file d'attente indique que l'instruction est dans la file d'attente ASCII. Le bit de fin indique que l'instruction est termine, mais il est asynchrone par rapport la scrutation logique. Le bit d'excution indique que l'instruction est en cours d'excution. Le bit vide indique que l'instruction est termine, mais il est synchrone par rapport la scrutation logique. Le bit d'erreur indique quand l'instruction choue (erreurs). Le bit trouv ne s'applique pas cette instruction. La longueur indique le nombre de caractres envoyer. La position affiche le nombre de caractres envoys. L'erreur contient une valeur hexadcimale qui identifie la cause d'une erreur.
b. Dfinissez les caractres ajouter aux donnes. 2. Il s'agit d'une instruction de transition : en logique relais, fait passer l'tat d'entre de la ligne d'effac activ chaque fois que l'instruction doit tre excute. en texte structur, conditionne l'instruction afin qu'elle soit excute uniquement lors d'une transition. Voir Annexe C.
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
16-25
L'instruction envoie un nombre dfini de caractres et ajoute un ou deux caractres prdfinis. Le bit .EN est activ. Les autres bits d'tat sont effacs, sauf le bit .UL. L'instruction tente d'entrer dans la file d'attente ASCII. L'tat de sortie de la ligne est rgl sur faux. Aucune.
pendant la post-scrutation
Logique relais
temp_high AWA ASCII Write Append Channel Source
EN DN ER
0 string[1] '$1425\1' SerialPort Control temp_high_write SerialPort Control Length 5 Characters Sent 6
16-26
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Texte structur
IF temp_high THEN temp_high_write.LEN := 5; AWA(0,string[1],temp_high_write); temp_high := 0; END_IF;
Logique relais
alarm MOV Move Source alarm_msg.LEN 5 Dest alarm_write.LEN 5 AWA ASCII Write Append Channel Source SerialPort Control SerialPort Control Length Characters Sent
Texte structur
osri_1.InputBit := alarm; OSRI(osri_1); IF (osri_1.OutputBit) THEN alarm_write.LEN := alarm_msg.LEN; AWA(0,alarm_msg,alarm_write); END_IF;
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
16-27
L'instruction AWT envoie un nombre dfini de caractres du point Source vers un quipement srie.
Logique relais
AWT ASCII Write Channel Source SerialPort Control SerialPort Control Length Characters Sent EN ? ? ?? ? ? ? DN ER
Entrez 0 point contenant les caractres envoyer : pour un type de donnes chane, entrez le nom du point ; pour un tableau SINT, INT ou DINT, entrez le premier lment du tableau. point qui commande l'opration nombre de caractres envoyer
Remarques
Si vous voulez comparer, convertir ou manipuler les caractres, utilisez un type de donnes chane. Les types de donnes chane sont : type de donnes STRING par dfaut ; tout nouveau type de donnes chane que vous crez.
point immdiat
La longueur de contrle du port srie doit tre infrieure ou gale la taille de la Source. Si vous voulez que la longueur de contrle du port srie soit gale au nombre de caractres de la Source, entrez 0. Pendant l'excution, affiche le nombre de caractres envoys.
Caractres envoys
DINT
immdiat
Texte structur
AWT(Channel,Source, SerialPortControl);
Les oprandes sont les mmes que ceux de l'instruction AWT en logique relais. Indiquez cependant les valeurs de Longueur de contrle du port srie et Caractres envoys en accdant aux membres .LEN et .POS de la structure SERIAL_PORT_CONTROL, plutt qu'en incluant les valeurs dans la liste des oprandes.
16-28
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Structure SERIAL_PORT_CONTROL
Mnmonique .EN .EU .DN .RN .EM .ER .FD .LEN .POS .ERROR Type de donnes BOOL BOOL BOOL BOOL BOOL BOOL BOOL DINT DINT DINT Description Le bit d'activation indique que l'instruction est active. Le bit de file d'attente indique que l'instruction est dans la file d'attente ASCII. Le bit de fin indique que l'instruction est termine, mais il est asynchrone par rapport la scrutation logique. Le bit d'excution indique que l'instruction est en cours d'excution. Le bit vide indique que l'instruction est termine, mais il est synchrone par rapport la scrutation logique. Le bit d'erreur indique quand l'instruction choue (erreurs). Le bit trouv ne s'applique pas cette instruction. La longueur indique le nombre de caractres envoyer. La position affiche le nombre de caractres envoys. L'erreur contient une valeur hexadcimale qui identifie la cause d'une erreur.
2. Il s'agit d'une instruction de transition : en logique relais, fait passer l'tat d'entre de la ligne d'effac activ chaque fois que l'instruction doit tre excute. en texte structur, conditionne l'instruction afin qu'elle soit excute uniquement lors d'une transition. Voir Annexe C. 3. Envoyez-vous toujours le mme nombre de caractres chaque excution de l'instruction ?
Si Oui Non Action Entrez le nombre de caractres envoyer dans la longueur de contrle du port srie. Avant que l'instruction ne soit excute, dplacez le membre LEN du point Source dans le membre LEN du point Contrle du port srie.
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
16-29
pendant la post-scrutation
Logique relais
temp_low ASCII Write Channel Source AWT EN DN ER 0 string[2] '$142224\01$r' SerialPort Control temp_low_write SerialPort Control Length 9 Characters Sent 9
Texte structur
osri_1.InputBit := temp_low; OSRI(osri_1); IF (osri_1.OutputBit) THEN temp_low_write.LEN := 9; AWT(0,string[2],temp_low_write); END_IF;
Exemple 2 : Lorsque MV_update est activ, l'instruction AWT envoie les caractres
dans MV_msg. Le nombre de caractres dans MV_msg variant, la ligne commence par dplacer la longueur de la chane (MV_msg.LEN) dans la longueur de contrle du port srie de l'instruction AWT
16-30
Instructions port srie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Notes :
Chapitre
17
Introduction
Si vous voulez ajouter des caractres la fin d'une chane effacer des caractres d'une chane dterminer le caractre de dbut d'une sous-chane insrer des caractres dans une chane extraire des caractres d'une chane
Utilisez les instructions de chane ASCII pour crer et modifier des chanes de caractres ASCII.
Par exemple ajouter des caractres de fin ou des sparateurs dans une chane supprimer les caractres d'en-tte ou de contrle d'une chane localiser un groupe de caractres dans une chane crer une chane qui utilise des variables extraire des informations d'un code-barres Utilisez cette instruction CONCAT DELETE FIND INSERT MID Disponible dans ces langages logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur logique relais texte structur Voir page 17-3 17-5 17-7 17-9 17-11
Vous pouvez galement utiliser les instructions suivantes pour comparer ou convertir des caractres ASCII :
Si vous voulez comparer une chane une autre voir si les caractres sont gaux des caractres spcifiques voir si les caractres ne sont pas gaux des caractres spcifiques voir si les caractres sont suprieurs ou gaux des caractres spcifiques voir si les caractres sont suprieurs des caractres spcifiques voir si les caractres sont infrieurs ou gaux des caractres spcifiques voir si les caractres sont infrieurs des caractres spcifiques rorganiser les octets d'un point INT, DINT ou REAL trouver une chane dans un tableau de chanes convertir des caractres en une valeur SINT, INT, DINT ou REAL convertir des caractres en une valeur REAL convertir une valeur SINT, INT, DINT ou REAL en une chane de caractres ASCII convertir une valeur REAL en une chane de caractres ASCII Utilisez cette instruction CMP EQU NEQ GEQ GRT LEQ LES SWPB FSC STOD STOR DTOS RTOS Voir page 4-2 4-7 4-38 4-11 4-15 4-19 4-23 6-18 7-18 18-3 18-5 18-7 18-9
17-2
17-3
Logique relais
CONCAT String Concatenate Source A ? ?? Source B ? ?? Dest ? ??
Entrez le point contenant les caractres de dbut le point contenant les caractres de fin le point pour le stockage du rsultat
Remarques Les types de donnes chane sont : type de donnes STRING par dfaut ; tout nouveau type de donnes chane que vous crez.
Texte structur
CONCAT(SourceA,SourceB, Dest);
Les oprandes sont les mmes que ceux de l'instruction CONCAT en logique relais.
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute. L'tat de sortie de la ligne est rgl sur vrai. Action du texte structur Aucune. -
17-4
Action de la logique relais L'instruction assemble (concatne) les chanes. L'tat de sortie de la ligne est rgl sur faux.
Action du texte structur EnableIn est toujours activ. L'instruction est excute. Aucune.
Logique relais
add_node CONCAT String Concatenate Source A string_1 '$1423\' Source B node_num_ascii '1' Dest msg '$1423\1'
Texte structur
IF add_node THEN CONCAT(string_1,node_num_ascii,msg); add_node := 0; END_IF;
17-5
Logique relais
? ?? ? ?? ? ?? ? ??
Oprande Source
Type STRING
Format point
Entrez
Remarques
le point qui contient la chane dont Les types de donnes chane sont : vous voulez retirer des caractres type de donnes STRING par dfaut ; tout nouveau type de donnes chane que vous crez. le nombre de caractres effacer La valeur de Dbut plus la valeur de Quantit doit tre infrieure ou gale la taille DATA de la Source. Entrez un numro entre 1 et la taille DATA de la Source.
Quantit
Dbut
Destination
Texte structur
DELETE(Source,Qty,Start, Dest);
Les oprandes sont les mmes que ceux de l'instruction DELETE en logique relais.
56
17-6
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai si EnableIn est activ pendant l'excution de l'instruction pendant la post-scrutation Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute. L'tat de sortie de la ligne est rgl sur vrai. L'instruction efface les caractres dfinis. L'tat de sortie de la ligne est rgl sur faux. Aucune. Action du texte structur Aucune. EnableIn est toujours activ. L'instruction est excute.
Logique relais
term_read.EM DELETE String Delete Source term_input '$0655' Qty 1 Start Dest 1 term_text '55'
Texte structur
IF term_read.EM THEN DELETE(term_input,1,1,term_text); term_read.EM := 0; END_IF;
17-7
L'instruction FIND repre la position de dbut d'une chane dfinie, l'intrieur d'une autre chane.
Logique relais
? ?? ? ?? ? ?? ? ??
Remarques Les types de donnes chane sont : type de donnes STRING par dfaut ; tout nouveau type de donnes chane que vous crez.
la position dans la Source Entrez un numro entre 1 et la taille DATA de la Source. partir de laquelle la recherche doit commencer le point qui stocke la position de dbut de la chane rechercher
Rsultat
Texte structur
FIND(Source,Search,Start, Result);
Les oprandes sont les mmes que ceux de l'instruction FIND en logique relais dcrite ci-dessus.
56
17-8
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai si EnableIn est activ pendant l'excution de l'instruction pendant la post-scrutation Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute. L'tat de sortie de la ligne est rgl sur vrai. L'instruction recherche les caractres dfinis. L'tat de sortie de la ligne est rgl sur faux. Aucune. Action du texte structur Aucune. EnableIn est toujours activ. L'instruction est excute.
Logique relais
MV_read.EM FIND Find String Source MV_msg '$06324\12\1\$r' Search find '\' Start 1 Result find_pos 5
Texte structur
IF MV_read.EM THEN FIND(MV_msg,find,1,find_pos); MV_read.EM := 0; END_IF;
17-9
L'instruction INSERT ajoute des caractres ASCII un emplacement dfini d'une chane.
Logique relais
? ?? ? ?? ? ?? ? ??
Oprande Source A
Type STRING
Format point
Entrez la chane dans laquelle vous voulez insrer des caractres la chane contenant les caractres insrer la position dans Source A o les caractres doivent tre insrs la chane pour le stockage du rsultat
Remarques Les types de donnes chane sont : type de donnes STRING par dfaut ; tout nouveau type de donnes chane que vous crez. Entrez un numro entre 1 et la taille DATA de la Source.
Source B Dbut
Rsultat
Texte structur
INSERT(SourceA,SourceB, Start,Dest);
Les oprandes sont les mmes que ceux de l'instruction INSERT en logique relais.
56
17-10
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai si EnableIn est activ pendant l'excution de l'instruction pendant la post-scrutation Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute. L'tat de sortie de la ligne est rgl sur vrai. L'instruction insre les caractres dfinis. L'tat de sortie de la ligne est rgl sur faux. Aucune. Action du texte structur Aucune. EnableIn est toujours activ. L'instruction est excute.
Exemple : Lorsque temp_high est activ, l'instruction INSERT insre les caractres
de string_2 la position 2 dans string_1 et place le rsultat dans string_3:
Logique relais
temp_high INSERT Insert String Source A string_1 'AD' Source B string_2 'BC' Start 2 Dest string_3 'ABCD'
Texte structur
IF temp_high THEN INSERT(string_1,string_2,2,string_3); temp_high := 0; END_IF;
17-11
L'instruction MID copie un nombre dtermin de caractres ASCII partir d'une chane et les stocke dans une autre chane.
Logique relais
MID Middle String Source Qty Start Dest ? ?? ? ?? ? ?? ? ??
Oprande Source
Type STRING
Format point
Entrez la chane partir de laquelle vous voulez copier des caractres le nombre de caractres copier la position du premier caractre copier la chane dans laquelle les caractres doivent tre copis
Remarques Les types de donnes chane sont : type de donnes STRING par dfaut ; tout nouveau type de donnes chane que vous crez. La valeur de Dbut plus la valeur de Quantit doit tre infrieure ou gale la taille DATA de la Source. Entrez un numro entre 1 et la taille DATA de la Source.
Quantit
Dbut
Destination
Texte structur
MID(Source,Qty,Start, Dest);
Les oprandes sont les mmes que ceux de l'instruction MID en logique relais.
17-12
Conditions d'erreur :
Type 4 Code 51 Cause La valeur LEN de la chane de caractres est suprieure la taille DATA de la chane de caractres. La valeur de Dbut ou de Quantit est incorrecte. Mthode de correction 1. Vrifiez qu'aucune instruction n'crit dans le membre LEN de la chane. 2. Dans la valeur LEN, entrez le nombre de caractres contenus dans la chane. 1. Vrifiez que la valeur de Dbut est entre 1 et la taille DATA de la Source. 2. Vrifiez que la valeur de Dbut plus la valeur de Quantit est infrieure ou gale la taille DATA de la Source.
56
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai si EnableIn est activ pendant l'excution de l'instruction pendant la post-scrutation Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute. L'tat de sortie de la ligne est rgl sur vrai. Action du texte structur Aucune. EnableIn est toujours activ. L'instruction est excute.
L'instruction copie les caractres dfinis partir d'une chane et les stocke dans une autre chane. L'tat de sortie de la ligne est rgl sur faux. Aucune.
Exemple : Sur les tapis roulants d'un aroport, chaque valise reoit un
code-barres. Les caractres 9 17 de ce code reprsentent le numro du vol et l'aroport de destination. Une fois que le code a t lu (bag_read.EM est activ), l'instruction MID copie le numro du vol et l'aroport de destination dans la chane bag_flt_and_dest.
Logique relais
bag_read.EM MID Middle String Source bag_barcode 'NWA HOP 5058 AMS 01' Qty 9 Start Dest 9 bag_flt_and_dest '5058 AMS '
Texte structur
IF bag_read.EM THEN MID(bar_barcode,9,9,bag_flt_and_dest); bag_read.EM := 0; END_IF;
Chapitre
18
Introduction
Si vous voulez convertir la reprsentation ASCII d'un nombre entier en une valeur SINT, INT, DINT ou REAL
Utilisez les instructions de conversion ASCII pour modifier le format des donnes.
Par exemple Utilisez cette instruction Disponible dans ces langages logique relais texte structur Voir page 18-3
STOD convertir une valeur de balance de pesage, ou d'un autre quipement ASCII, en nombre entier pour l'utiliser dans votre programme STOR
convertir la reprsentation ASCII d'une valeur convertir une valeur de balance de virgule flottante en une valeur REAL pesage, ou d'un autre quipement ASCII, en une valeur REAL pour l'utiliser dans votre programme convertir une valeur SINT, INT, DINT ou REAL en une chane de caractres ASCII convertir une valeur REAL en une chane de caractres ASCII convertir les lettres d'une chane de caractres ASCII en majuscules convertir une variable en une chane ASCII pour l'envoyer un terminal MessageView convertir une variable en une chane ASCII pour l'envoyer un terminal MessageView
18-5
DTOS
logique relais texte structur logique relais texte structur logique relais texte structur
18-7
RTOS
18-9
UPPER convertir une entre effectue en majuscules par un oprateur pour que vous puissiez la chercher dans un tableau LOWER convertir une entre effectue en minuscules par un oprateur pour que vous puissiez la chercher dans un tableau
18-11
18-13
18-2
Vous pouvez galement utiliser les instructions suivantes pour comparer ou manipuler des caractres ASCII :
Si vous voulez ajouter des caractres la fin d'une chane effacer des caractres d'une chane dterminer le caractre de dbut d'une sous-chane insrer des caractres dans une chane extraire des caractres d'une chane rorganiser les octets d'un point INT, DINT ou REAL comparer une chane une autre voir si les caractres sont gaux des caractres spcifiques voir si les caractres ne sont pas gaux des caractres spcifiques voir si les caractres sont suprieurs ou gaux des caractres spcifiques voir si les caractres sont suprieurs des caractres spcifiques voir si les caractres sont infrieurs ou gaux des caractres spcifiques voir si les caractres sont infrieurs des caractres spcifiques trouver une chane dans un tableau de chanes Utilisez cette instruction CONCAT DELETE FIND INSERT MID SWPB CMP EQU NEQ GEQ GRT LEQ LES FSC Voir page 17-3 17-5 17-7 17-9 17-11 6-18 4-2 4-7 4-38 4-11 4-15 4-19 4-23 7-18
18-3
L'instruction STOD convertit la reprsentation ASCII d'un nombre entier en une valeur de nombre entier ou REAL.
Logique relais
STOD String To DINT Source Dest ? ?? ? ??
Oprande Source
Type STRING
Format point
Remarques Les types de donnes chane sont : type de donnes STRING par dfaut ; tout nouveau type de donnes chane que vous crez.
Destination
point
le point qui stocke la valeur Si la valeur Source est un nombre virgule de nombre entier flottante, l'instruction convertit uniquement la partie non dcimale du nombre (quel que soit le type de donnes de la destination).
STOD(Source,Dest);
Texte structur
Les oprandes sont les mmes que ceux de l'instruction STOD en logique relais.
18-4
Conditions d'erreur :
Type 4 Code 51 Cause La valeur LEN de la chane de caractres est suprieure la taille DATA de la chane de caractres. Mthode de correction 1. Vrifiez qu'aucune instruction n'crit dans le membre LEN de la chane. 2. Dans la valeur LEN, entrez le nombre de caractres contenus dans la chane. Vous pouvez au choix : rduire la taille de la valeur ASCII ; utiliser un type de donnes plus grand pour la destination.
53
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai si EnableIn est activ pendant l'excution de l'instruction Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute. L'tat de sortie de la ligne est rgl sur vrai. S:C est activ. La Destination est efface. L'instruction convertit la Source. Si le rsultat est zro, S:Z est activ. L'tat de sortie de la ligne est rgl sur faux. Aucune. Action du texte structur Aucune. EnableIn est toujours activ. L'instruction est excute.
pendant la post-scrutation
Logique relais
MV_read.EM STOD String To DINT Source MV_msg '$06324\12\1\$r' Dest MV_msg_nmbr 324
Texte structur
IF MV_read.EM THEN STOD(MV_msg,MV_msg_nmbr); MV_read.EM := 0; END_IF;
18-5
L'instruction STOR convertit la reprsentation ASCII d'une valeur virgule flottante en valeur REAL.
Oprande Source
Type STRING
Format point
Remarques Les types de donnes chane sont : type de donnes STRING par dfaut ; tout nouveau type de donnes chane que vous crez.
Destination
REAL
point
STOR(Source,Dest);
Texte structur
Les oprandes sont les mmes que ceux de l'instruction STOR en logique relais.
Indicateurs d'tat arithmtique : Les indicateurs d'tat arithmtique sont affects. Conditions d'erreur :
Type 4 Code 51 Cause La valeur LEN de la chane de caractres est suprieure la taille DATA de la chane de caractres. Mthode de correction 1. Vrifiez qu'aucune instruction n'crit dans le membre LEN de la chane. 2. Dans la valeur LEN, entrez le nombre de caractres contenus dans la chane. Vous pouvez au choix : rduire la taille de la valeur ASCII ; utiliser un type de donnes plus grand pour la destination.
53
18-6
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai si EnableIn est activ pendant l'excution de l'instruction Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute. L'tat de sortie de la ligne est rgl sur vrai. S:C est activ. La Destination est efface. L'instruction convertit la Source. Si le rsultat est zro, S:Z est activ. L'tat de sortie de la ligne est rgl sur faux. Aucune. Action du texte structur Aucune. EnableIn est toujours activ. L'instruction est excute.
pendant la post-scrutation
Logique relais
weight_read.EM STOR String to Real Source weight_ascii '428.259' Dest weight 428.259
Texte structur
IF weight_read.EM THEN STOR(weight_ascii,weight); weight_read.EM := 0; END_IF;
18-7
Logique relais
? ?? ? ??
Oprande Source
Format point
Remarques Si la source est une valeur REAL, l'instruction la convertit en valeur DINT. Reportez-vous REAL en nombre entier, page A-5.
Destination
point
le point qui stocke la valeur Les types de donnes chane sont : ASCII type de donnes STRING par dfaut ; tout nouveau type de donnes chane que vous crez.
DTOS(Source,Dest);
Texte structur
Les oprandes sont les mmes que ceux de l'instruction DTOS en logique relais.
52
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute. L'tat de sortie de la ligne est rgl sur vrai. Action du texte structur Aucune. -
18-8
Action de la logique relais L'instruction convertit la Source. L'tat de sortie de la ligne est rgl sur faux.
Action du texte structur EnableIn est toujours activ. L'instruction est excute.
Aucune.
Logique relais
temp_high DTOS DINT to String Source msg_num 23 Dest msg_num_ascii '23'
Texte structur
IF temp_high THEN DTOS(msg_num,msg_num_ascii); temp_high := 0; END_IF;
18-9
Logique relais
RTOS Real to String Source Dest ? ?? ? ??
Remarques
le point qui stocke la valeur Les types de donnes chane sont : ASCII type de donnes STRING par dfaut ; tout nouveau type de donnes chane que vous crez.
RTOS(Source,Dest);
Texte structur
Les oprandes sont les mmes que ceux de l'instruction RTOS en logique relais.
52
18-10
Excution :
Condition pendant la pr-scrutation si l'tat d'entre de la ligne est faux si l'tat d'entre de la ligne est vrai si EnableIn est activ pendant l'excution de l'instruction pendant la post-scrutation Action de la logique relais L'tat de sortie de la ligne est rgl sur faux. L'tat de sortie de la ligne est rgl sur faux. L'instruction est excute. L'tat de sortie de la ligne est rgl sur vrai. L'instruction convertit la Source. L'tat de sortie de la ligne est rgl sur faux. Aucune. Action du texte structur Aucune. EnableIn est toujours activ. L'instruction est excute.
Logique relais
send_data RTOS Real to String Source data_1 15.3001 Dest data_1_ascii '15.3001003'
Texte structur
IF send_data THEN RTOS(data_1,data_1_ascii); send_data := 0; END_IF;
18-11
Majuscule (UPPER)
Oprandes :
L'instruction UPPER convertit les caractres alphabtiques d'une chane en caractres majuscules.
Logique relais
Oprande Source Destination Type STRING STRING Format point point Description point qui contient les caractres que vous voulez convertir en majuscules point qui stocke les caractres en majuscules
UPPER(Source,Dest);
Texte structur
Les oprandes sont les mmes que ceux de l'instruction UPPER en logique relais.
18-12
Logique relais
Texte structur
IF terminal_read.EM THEN UPPER(catalog_number,catalog_number_upper_case); terminal_read.EM := 0; END_IF;
18-13
Minuscule (LOWER)
Oprandes :
L'instruction LOWER convertit les caractres alphabtiques d'une chane en caractres minuscules.
Logique relais
Oprande Source Destination Type STRING STRING Format point point Description point qui contient les caractres que vous voulez convertir en minuscules point qui stocke les caractres en minuscules
LOWER(Source,Dest);
Texte structur
Les oprandes sont les mmes que ceux de l'instruction LOWER en logique relais.
18-14
Logique relais
Texte structur
IF terminal_read.EM THEN LOWER(item_number,item_number_lower_case); terminal_read.EM := 0; END_IF;
Annexe
Attributs communs
Introduction
Valeurs immdiates
Lorsque vous entrez une valeur immdiate (constante) en format dcimal (ex. : -2, 3), l'automate stocke la valeur en utilisant 32 bits. Si vous entrez une valeur dans une base numrique autre que dcimale, telle que binaire ou hexadcimale, et si vous ne prcisez pas la totalit des 32 bits, l'automate place un zro dans les bits que vous ne prcisez pas (remplissage par des zros). EXEMPLE
Si vous entrez -1 16#ffff (-1) 8#1234 (668) 2#1010 (10)
Conversions de donnes
Des conversions de donnes ont lieu lorsque vous combinez diffrents types de donnes dans votre programmation.
En programmation en logique relais blocs fonctionnels Des conversions peuvent avoir lieu quand vous combinez diffrents types de donnes pour les paramtres d'une instruction vous relier deux paramtres ayant des types de donnes diffrents
A-2
Attributs communs
Les instructions sont excutes plus rapidement et requirent moins de mmoire si tous les oprandes de l'instruction utilisent : le mme type de donnes ; un type de donnes optimal : dans la section Oprandes de chaque instruction dcrite dans ce manuel, le type de donnes en gras indique le type de donnes optimal, les types de donnes DINT et REAL sont gnralement les types optimaux, la plupart des instructions de bloc fonctionnel n'acceptent qu'un type de donnes (le type optimal) pour ses oprandes. Si vous combinez diffrents types de donnes et utilisez des points qui ne sont pas le type de donnes optimal, l'automate convertit les donnes selon ces rgles. Au moins un des oprandes est-il une valeur REAL ?
Si Oui Non Les oprandes d'entre (source, point dans une expression, limite) sont convertis en REAL DINT
Aprs l'excution de l'instruction, le rsultat (une valeur DINT ou REAL) est converti dans le type de donnes de la destination, si ncessaire. Vous ne pouvez pas spcifier un point BOOL dans une instruction fonctionnant sur des types de donnes de nombres entiers ou REAL. La conversion des donnes ncessitant du temps et de la mmoire supplmentaires, vous pouvez amliorer l'efficacit de vos programmes en : utilisant le mme type de donnes dans toute l'instruction ; minimisant l'utilisation des types de donnes SINT ou INT. En d'autres termes, utilisez tous les points DINT ou REAL, avec des valeurs immdiates, dans vos instructions. Les sections suivantes indiquent comment les donnes sont converties lorsque vous utilisez les points SINT ou INT, ou lorsque vous combinez diffrents types de donnes.
Attributs communs
A-3
L'exemple suivant montre les rsultats de la conversion d'une valeur l'aide de l'extension de signe et du remplissage par des zros.
Cette valeur Est convertie en cette valeur par extension de signe Est convertie en cette valeur par remplissage par des zros 2#1111_1111_1111_1111 (-1)
2#1111_1111_1111_1111_1111_1111_1111_1111 (-1)
2#0000_0000_0000_0000_1111_1111_1111_1111 (65535)
Les valeurs immdiates tant toujours converties par remplissage par des zros, la conversion d'une valeur SINT ou INT peut produire des rsultats inattendus. Dans l'exemple suivant, la comparaison est fausse parce que Source A, une valeur INT, est convertie par extension de signe, alors que Source B, une valeur immdiate, est convertie par remplissage par des zros.
42093
Si vous utilisez un point SINT ou INT et une valeur immdiate dans une instruction qui convertit des donnes par extension de signe, utilisez l'une des mthodes suivantes pour manipuler les valeurs immdiates : indiquez toute valeur immdiate en base dcimale ; si vous entrez la valeur dans une base numrique autre que dcimale, prcisez la totalit des 32 bits de la valeur immdiate. Pour cela, entrez la valeur du bit le plus gauche dans chaque position de bit sa gauche, jusqu' ce qu'il y ait 32 bits ;
A-4
Attributs communs
crez un point pour chaque oprande et utilisez le mme type de donnes dans toute l'instruction. Pour attribuer une valeur constante, procdez de l'une des faons suivantes : entrez-la dans l'un des points, ajoutez une instruction MOV qui dplace la valeur dans l'un des points. utilisez une instruction MEQ pour vrifier uniquement les bits requis. Les exemples suivants montrent deux faons de combiner une valeur immdiate avec un point INT. Ces deux exemples vrifient les bits d'un module d'E/S 1771 pour dterminer si tous les bits sont activs. Le mot de donnes d'entre d'un module d'E/S 1771 tant un point INT, le plus simple est d'utiliser une valeur constante de 16 bits. EXEMPLE Combinaison d'un point INT avec une valeur immdiate remote_rack_1:I.Data[0] tant un point INT, la valeur par rapport laquelle il est vrifi est galement entre comme un point INT.
EQU Equal Source A remote_rack_1:I.Data[0] 2#1111_1111_1111_1111 Source B int_0 2#1111_1111_1111_1111
42093
EXEMPLE
Combinaison d'un point INT avec une valeur immdiate remote_rack_1:I.Data[0] tant un point INT, la valeur par rapport laquelle il est vrifi est d'abord dplace dans int_0, un point INT galement. L'instruction EQU compare alors les deux points.
EQU Equal Source A remote_rack_1:I.Data[0] 2#1111_1111_1111_1111 Source B int_0 2#1111_1111_1111_1111
2#1111_1111_1111_1111
42093
Attributs communs
A-5
instruction, l'automate convertit la valeur de nombre entier en valeur REAL avant que l'instruction ne soit excute. Une valeur SINT ou INT est toujours convertie dans la mme valeur REAL. Une valeur DINT peut ne pas tre convertie dans la mme valeur REAL : une valeur REAL utilise jusqu' 24 bits pour la valeur de base (23 bits stocks, plus un bit cach ) ; une valeur DINT utilise jusqu' 32 bits pour la valeur (un pour le signe et 31 pour la valeur) ; si la valeur DINT requiert plus de 24 bits significatifs, elle peut ne pas tre convertie dans la mme valeur REAL. Si c'est le cas, l'automate arrondit la valeur REAL la plus proche avec 24 bits significatifs.
A-6
Attributs communs
L'exemple suivant donne le rsultat de la conversion de valeurs REAL en valeurs DINT. EXEMPLE
Cette valeur REAL -2,5 -1,6 -1,5 -1,4 1,4 1,5 1,6 2,5
IMPORTANT
Les indicateurs d'tat arithmtique sont activs en fonction de la valeur stocke. Les instructions qui, en principe, n'affectent pas les mots-cls d'tat arithmtique peuvent sembler le faire si une conversion de type se produit cause de types de donnes combins dans les paramtres de l'instruction. Le processus de conversion de type active les mots-cls d'tat arithmtique.
Annexe
Introduction
Cette annexe dcrit des caractristiques propres aux instructions de bloc fonctionnel. Lisez les informations contenues dans cette annexe pour vous assurer que vous comprenez le fonctionnement de vos sous-programmes de blocs fonctionnels.
IMPORTANT
Lorsque vous programmez en blocs fonctionnels, limitez la plage des units procd +/-10+/-15 car les calculs virgule flottante internes sont effectus en virgule flottante simple prcision. Les units procd en dehors de cette plage peuvent entraner une perte de prcision si les rsultats approchent les limites de virgule flottante simple prcision (+/-10+/-38).
Si vous utilisez une instruction IREF pour spcifier les donnes d'entre d'une instruction de bloc fonctionnel, les donnes dans l'instruction IREF sont verrouilles durant la scrutation du sous-programme de blocs fonctionnels, qu'elles proviennent de points d'accs programme ou d'accs automate. L'automate actualise toutes les donnes IREF au dbut de chaque scrutation.
IREF
Dans cet exemple, la valeur de pointA est stocke au dbut de l'excution du sous-programme. La valeur stocke est utilise lorsque Bloc_01 est excut. Cette valeur est galement utilise lorsque Bloc_02 est excut. Si la valeur de pointA change pendant l'excution du sous-programme, la valeur stocke de pointA dans l'instruction IREF ne change pas avant l'excution suivante du sous-programme.
Bloc_01
pointA
Bloc_02
B-2
Cet exemple est identique au prcdent. La valeur de pointA est stocke une seule fois au dbut de l'excution du sous-programme. Le sous-programme utilise cette valeur pour l'ensemble du sous-programme.
Bloc_01
pointA
Bloc_02
pointA
Dans la version 11 du logiciel RSLogix 5000, vous pouvez utiliser le mme point dans plusieurs instructions IREF et une instruction OREF dans le mme sous-programme. Les valeurs des points dans les instructions IREF tant verrouilles par le sous-programme chaque scrutation, les instructions IREF utilisent toutes la mme valeur, mme si une instruction OREF reoit une valeur de point diffrente pendant l'excution du sous-programme. Dans cet exemple, si pointA a une valeur de 25,4 lorsque le sous-programme commence cette scrutation, et si le Bloc_01 change la valeur de pointA en 50,9, la seconde instruction IREF lie Bloc_02 utilise toujours une valeur de 25,4 lorsque Bloc_02 excute cette scrutation. La nouvelle valeur 50,9 de pointA n'est utilise par aucune instruction IREF de ce sous-programme jusqu' la scrutation suivante.
B-3
Ordre d'excution
Le logiciel de programmation RSLogix 5000 dtermine automatiquement l'ordre d'excution des blocs fonctionnels dans un sous-programme lorsque vous : vrifiez un sous-programme de blocs fonctionnels ; vrifiez un projet contenant un sous-programme de blocs fonctionnels ; chargez un projet contenant un sous-programme de blocs fonctionnels. Vous dfinissez l'ordre d'excution lors du cblage des blocs fonctionnels et en indiquant les boucles de retour, si ncessaire. Si les blocs fonctionnels ne sont pas relis entre eux, il n'y a pas d'ordre d'excution dterminer.
Si vous reliez les blocs de faon squentielle, l'ordre d'excution va de l'entre la sortie. Les entres d'un bloc doivent tre disponibles avant que l'automate ne puisse excuter ce bloc. Par exemple, le bloc 2 doit tre excut avant le bloc 3 parce que les sorties du bloc 2 alimentent les entres du bloc 3.
1 2 3
L'ordre d'excution est valable uniquement pour les blocs relis entre eux. L'exemple suivant est correct parce que les deux groupes de blocs ne sont pas relis entre eux. Les blocs d'un groupe particulier sont excuts dans l'ordre appropri par rapport aux blocs de ce groupe.
1 3 5
B-4
Si les blocs d'un groupe sont dans une boucle, l'automate ne peut pas dterminer les entres qui doivent tre accessibles en premier. Utilisez une boucle de retour pour dterminer les entres qui doivent tre accessibles en premier. Si un connecteur d'entre est connect une boucle de retour, il n'est pas ncessaire que l'entre soit accessible pour que le bloc soit excut. Dans cet exemple, le bloc 1 utilise la sortie du bloc 3 produite lors de la prcdente excution du sous-programme.
1 2 3
boucle de retour
En rsum, un sous-programme de blocs fonctionnels est excut dans l'ordre suivant : 1. L'automate verrouille toutes les valeurs de donnes dans les instructions IREF. 2. L'automate excute les autres blocs fonctionnels dans l'ordre dtermin par leur cblage. 3. L'automate crit les sorties dans des instructions OREF.
B-5
En gnral, les instructions de bloc fonctionnel qui intgrent une valeur ne mettent pas jour cette valeur lorsqu'un dpassement se produit. Chaque instruction rpond de l'une des faons suivantes un dpassement :
Rponse 2 : Les blocs avec limite de sortie excutent leur algorithme et vrifient le rsultat pour NAN ou INF. Les limites de sortie sont dfinies par les paramtres d'entre HighLimit et LowLimit. Si INF, la sortie du bloc donne un rsultat limit. Si NAN, les limites de sortie ne sont pas utilises et la sortie du bloc est NAN. HLL INTG PI PIDE SCL SOC Rponse 3 : Il n'y a pas de condition de dpassement. Ces instructions ont gnralement une sortie boolenne.
ALM DEDT DERV ESEL FGEN HPF LDL2 LDLG LPF MAVE MAXC MINC MSTD MUX
NTCH PMUL POSP RLIM RMPS SCRV SEL SNEG SRTP SSUM TOT UPDN
BAND BNOT BOR BXOR CUTD D2SD D3SD DFF JKFF OSFI
Modes de temporisation
Ces instructions de commande de procd et de variation de vitesse prennent en charge diffrents modes de temporisation. DEDT DERV HPF INTG LDLG LDL2 LPF NTCH PI PIDE RLIM SCRV SOC TOT
B-6
Les instructions bases sur le temps requirent une valeur constante pour DeltaT pour que l'algorithme de commande calcule correctement la sortie procd. Si DeltaT varie, une discontinuit se produit dans la sortie procd. L'importance de cette discontinuit dpend de l'instruction et de la plage dans laquelle DeltaT varie. Une discontinuit se produit si : l'instruction n'est pas excute pendant une scrutation ; l'instruction est excute plusieurs fois pendant une tche ; la tche est en cours d'excution et sa frquence de scrutation ou le temps d'chantillonnage de l'entre procd change ; l'utilisateur change le mode de temporisation pendant l'excution de la tche ; le paramtre Ordre est modifi sur un bloc filtre pendant l'excution de la tche. La modification du paramtre Ordre slectionne un algorithme de commande diffrent dans l'instruction.
B-7
Paramtres d'entre
Paramtre d'entre TimingMode Type de donnes DINT Description Slectionne le mode de temporisation. Valeur : Description : 0 mode priodique 1 mode de surchantillonnage 2 mode d'chantillonnage en temps rel Valeurs correctes = 0 2. Par dfaut = 0. Lorsque TimingMode = 0 et lorsque la tche est priodique, le mode priodique est activ et DeltaT est rgle sur la frquence de scrutation de la tche. Lorsque TimingMode = 0 et que la tche est continue, le mode priodique est activ et DeltaT est rgle pour tre gale au temps coul depuis la dernire excution de l'instruction. Lorsque TimingMode = 1, le mode de surchantillonnage est activ et DeltaT est rgle sur la valeur du paramtre OversampleDT. Lorsque TimingMode = 2, le mode d'chantillonnage en temps rel est activ et DeltaT correspond la diffrence entre la valeur d'horodatage en cours et la valeur prcdente lues partir du module associ l'entre. Si TimingMode est incorrect, l'instruction active le bit appropri dans Status. OversampleDT REAL Dure d'excution pour la temporisation de surchantillonnage. La valeur utilise pour DeltaT est en secondes. Si TimingMode = 1, alors OversampleDT = 0,0 dsactive l'excution de l'algorithme de commande. Si la valeur est incorrecte, l'instruction rgle DeltaT = 0,0 et active le bit appropri dans Status. Valeurs correctes = 0 4194,303 secondes. Par dfaut = 0,0. Frquence d'actualisation du module en mode d'chantillonnage en temps rel. La frquence d'actualisation DeltaT attendue est en millisecondes. La frquence d'actualisation est, en principe, la valeur utilise pour configurer la frquence d'actualisation du module. Si la valeur est incorrecte, l'instruction active le bit appropri dans Status et dsactive la vrification de RTSMissed. Valeurs correctes = 1 32 767 ms. Par dfaut = 1. Valeur d'horodatage en mode d'chantillonnage en temps rel. Valeur d'horodatage correspondant la dernire mise jour du signal d'entre. Cette valeur est utilise pour calculer DeltaT. Si la valeur est incorrecte, l'instruction active le bit appropri dans Status, dsactive l'excution de l'algorithme de commande, ainsi que la vrification de RTSMissed. Valeurs correctes = 1 32 767 ms (revient de 32 767 0). 1 comptage = 1 milliseconde. Par dfaut = 0.
RTSTime
DINT
RTSTimeStamp
DINT
B-8
Paramtres de sortie
Paramtre de sortie DeltaT Type de donnes REAL Description Temps coul entre les mises jour. Temps coul en secondes, utilis par l'algorithme de commande pour calculer la sortie procd. Priodique : DeltaT = frquence de scrutation de la tche si la tche est priodique ; DeltaT = temps coul depuis la prcdente 'excution de l'instruction si la tche est continue. Surchantillonnage : DeltaT = OversampleDT Echantillonnage en temps rel :DeltaT = (RTSTimeStampn - RTSTimeStampn-1) Status TimingModeInv (Status.27) DINT BOOL Etat du bloc fonctionnel. Valeur TimingMode incorrecte. Utilis uniquement en mode d'chantillonnage en temps rel. Activ quand ABS | DeltaT RTSTime | > 1 (0,001 seconde). Valeur RTSTime incorrecte. Valeur RTSTimeStamp incorrecte. Valeur DeltaT incorrecte.
RTSMissed (Status.28) BOOL RTSTimeInv (Status.29) RTSTimeStampInv (Status.30) DeltaTInv (Status.31) BOOL BOOL BOOL
B-9
Temporisation priodique
Temporisation de surchantillonnage
DeltaT = OversampleDT Si DeltaT < 0 ou DeltaT > 4 194,303 s, l'instruction rgle DeltaT = 0,0 et active le bit appropri dans Status. Si DeltaT > 0, l'instruction est excute. Dtermine le type de tche
DeltaT = RTSTimeStampn - RTSTimeStampn-1 Si DeltaT > 0, l'instruction est excute. Si |RTSTIME - DeltaT| > 1, l'instruction active le bit RTSMissed dans Status.
Tche priodique
DeltaT = temps coul depuis la dernire excution Si DeltaT > 0, l'instruction est excute.
B-10
Commande Programme/Oprateur
Plusieurs instructions prennent en charge le concept de commande Programme/Oprateur. Ces instructions comprennent : Slection tendue (ESEL) ; Totalisateur (TOT) ; PID tendu (PIDE) ; Rampe/Palier (RMPS) Dispositif 2 tats TOR (D2SD) ; Dispositif 3 tats TOR (D3SD).
La commande Programme/Oprateur vous permet de commander ces instructions simultanment depuis votre programme utilisateur et depuis interface oprateur. En commande Programme, l'instruction est commande par les entres programme dans l'instruction ; en commande Oprateur, l'instruction est commande par les entres oprateur dans l'instruction. La commande Programme ou Oprateur est dtermine par l'utilisation des entres suivantes :
Entre .ProgProgReq .ProgOperReq .OperProgReq .OperOperReq Description Demande du programme pour passer en commande Programme. Demande du programme pour passer en commande Oprateur. Demande de l'oprateur pour passer en commande Programme. Demande de l'oprateur pour passer en commande Oprateur.
Pour dterminer si une instruction est en commande Programme ou Oprateur, examinez la sortie ProgOper. Si ProgOper est active, l'instruction est en commande Programme ; si ProgOper est dsactive, l'instruction est en commande oprateur. La commande Oprateur est prioritaire sur la commande Programme si les deux bits de demande d'entre sont activs. Par exemple, si ProgProgReq et ProgOperReq sont activs, l'instruction passe en commande Oprateur. Les entres de demande Programme sont prioritaires sur les entres de demande Oprateur. Ceci permet d'utiliser les entres ProgProgReq et ProgOperReq pour verrouiller une instruction dans la commande dsire. Supposons par exemple qu'une instruction Totalisateur soit toujours utilise en commande Oprateur et que votre programme utilisateur ne commande jamais le fonctionnement ou l'arrt du Totalisateur. Dans ce cas, vous pouvez entrer une valeur littrale de 1 dans ProgOperReq, ce qui empche l'oprateur de mettre le
B-11
Totalisateur en commande Programme par l'activation d'OperProgReq partir d'une interface oprateur.
L'entre ProgOperReq tant toujours active, appuyer sur le bouton Program sur la face avant (ce qui active l'entre OperProgReg) n'a aucun effet. Normalement, l'activation de OperProgReq met le Totalisateur (TOT) en commande Programme. Entrer un 1 dans ProgOperReq signifie que le programme utilisateur veut toujours TOT en commande Oprateur.
De mme, l'activation constante de ProgProgReq peut verrouiller l'instruction en commande Programme. C'est utile pour les squences de dmarrage automatique lorsque vous voulez que le programme commande l'action de l'instruction, sans avoir vous soucier d'un oprateur qui prendrait la commande de l'instruction par inadvertance. Dans cet exemple, le programme active l'entre ProgProgReq au dmarrage, puis l'efface une fois le dmarrage termin. Une fois l'entre ProgProgReq efface, l'instruction reste en commande Programme jusqu' ce qu'elle reoive une demande de changement. Par exemple, l'oprateur peut activer l'entre OperOperReq partir de la face avant pour reprendre la commande de cette instruction. L'exemple suivant montre comment verrouiller une instruction en commande Programme.
Lorsque StartupSequenceActive est activ, l'instruction PIDE passe en commande Programme et en mode Manuel. La valeur StartupCV est utilise comme sortie de boucle.
B-12
Les entres de demande Oprateur d'une instruction sont toujours effaces par l'instruction lors de son excution. De cette faon, les interfaces oprateur peuvent fonctionner avec ces instructions simplement en activant le bit de demande de mode souhait. Vous n'avez pas besoin de programmer l'interface oprateur pour rinitialiser les bits de demande. Par exemple, si une interface oprateur active l'entre OperAutoReq d'une instruction PIDE, lors de l'excution de cette instruction, elle dtermine la rponse approprie et efface OperAutoReq. En principe, les entres de demande Programme ne sont pas effaces par l'instruction, parce qu'elles sont normalement cbles comme entres dans l'instruction. Si l'instruction efface ces entres, l'entre est ractive par l'entre cble. Il peut arriver que vous souhaitiez utiliser une autre logique pour activer les demandes Programme, de sorte que ces dernires soient effaces par l'instruction. Dans ce cas, vous pouvez activer l'entre ProgValueReset et l'instruction, lors de son excution, effacera systmatiquement les entres de demande de mode Programme. Dans cet exemple, une ligne de logique relais d'un autre sous-programme est utilise comme commande impulsionnelle de verrouillage en mode Auto (ProgAutoReq) d'une instruction PIDE, sur activation d'un bouton-poussoir. L'instruction PIDE efface automatiquement les demandes de mode Programme, vous n'avez donc pas besoin d'crire une logique relais pour effacer ProgAutoReq aprs l'excution du sous-programme : l'instruction PIDE reoit seulement une demande pour passer en mode Auto chaque fois que le bouton-poussoir est activ.
Appuyer sur le bouton-poussoir TIC101AutoReq verrouille ProgAutoReq pour l'instruction PIDE TIC101. TIC101 a t configur avec l'entre ProgValueReset active : par consquent, lorsque l'instruction PIDE est excute, elle efface automatiquement ProgAutoReq.
Annexe
Introduction
Cette annexe dcrit des caractristiques propres la programmation en texte structur. Lisez les informations contenues dans cette annexe pour vous assurer que vous comprenez comment votre programmation en texte structur sera excute.
Pour des informations sur Syntaxe du texte structur Affectations Expressions Instructions Instructions de test Commentaires Voir page C-1 C-2 C-4 C-10 C-11 C-26
Le texte structur est un langage de programmation textuel qui utilise des instructions pour dfinir ce qui doit tre excut. Le texte structur ne fait pas de distinction entre majuscules et minuscules. Il peut contenir les composants suivants :
Exemples point := expression;
Dfinition Utilisez une instruction d'affectation pour attribuer des valeurs des points. L'oprateur := est l'oprateur d'affectation. Terminez l'affectation par un point-virgule ;. Une expression fait partie d'une affectation complte ou d'une commande construite. Une expression se traduit par un nombre (expression numrique) ou par un tat vrai ou faux (expression boolenne). Une expression contient les lments suivants : des points des immdiats des oprateurs des fonctions Zone dnomme de la mmoire o les donnes sont stockes (BOOL, SINT, INT, DINT, REAL, STRING). Constante. Symbole ou mnmonique qui dfinit un oprateur dans une expression. Lorsqu'elle est excute, une fonction donne une valeur. Mettez l'oprande d'une fonction entre parenthses. Bien que leurs syntaxes soient similaires, les fonctions diffrent des instructions dans la mesure o elles ne peuvent tre utilises que dans des expressions, alors que les instructions ne peuvent pas l'tre.
C-2
Dfinition Instruction autonome. Dans une instruction, les oprandes sont entre parenthses. Suivant l'instruction, il peut y avoir aucun, un ou plusieurs oprandes. Lorsqu'elle est excute, une instruction donne une ou plusieurs valeurs qui font partie d'une structure de donnes. Terminez l'instruction par un point-virgule ;. Bien que leurs syntaxes soient similaires, les instructions diffrent des fonctions dans la mesure o elles ne peuvent pas tre utilises dans des expressions, alors que les fonctions ne peuvent tre utilises que dans des expressions.
Instructions conditionnelles utilises pour dclencher un code en texte structur (ex. : d'autres instructions). Terminez l'instruction de test par un point-virgule ;.
IF...THEN CASE FOR...DO WHILE...DO REPEAT...UNTIL EXIT //commentaire (*dbut de commentaire . . . fin de commentaire*) /*dbut de commentaire . . . fin de commentaire*/
Texte expliquant ce que fait une section de texte structur. Utilisez les commentaires pour faciliter l'interprtation du texte structur. Les commentaires n'affectent pas l'excution du texte structur. Les commentaires peuvent apparatre n'importe o dans le texte structur.
Affectations
Utilisez une affectation pour changer la valeur stocke dans un point. La syntaxe d'une affectation est la suivante : point := expression ; o :
Composant point := expression Description reprsente le point qui obtient la nouvelle valeur le point doit tre de type BOOL, SINT, INT, DINT ou REAL symbole de l'affectation reprsente la nouvelle valeur attribuer au point Si point est de ce type : BOOL SINT INT DINT REAL ; termine l'affectation Utilisez ce type d'expression : expression boolenne expression numrique
Le point garde la valeur de l'affectation jusqu' ce qu'une autre affectation change la valeur. L'expression peut tre simple, comme une valeur immdiate ou un autre nom de point, ou complexe et inclure plusieurs oprateurs et/ou fonctions. Pour plus de dtails, voir la section Expressions , page C-4.
C-3
C-4
Pour ajouter ou insrer des caractres dans une chane, utilisez l'une de ces instructions de chane ASCII :
Pour ajouter des caractres la fin d'une chane insrer des caractres dans une chane Utilisez cette instruction CONCAT INSERT
Expressions
Une expression est un nom de point, une quation ou une comparaison. Pour crire une expression, utilisez l'un des lments suivants : nom du point qui stocke la valeur (variable) ; nombre entrer directement dans l'expression (valeur immdiate) ; fonction telle que ABS, TRUNC ; oprateurs tels que +, -, <, >, And, Or. Pour crire une expression, observez les rgles gnrales suivantes : utilisez indiffremment des lettres majuscules ou minuscules. Par exemple, ces trois variantes de ET sont correctes : ET, Et, et ; pour des besoins plus complexes, utilisez des parenthses pour regrouper des expressions dans d'autres expressions. Ceci facilite la lecture de l'expression et vous permet de vous assurer que l'expression sera excute dans l'ordre souhait. Voir Dtermination de l'ordre d'excution , page C10. En texte structur, vous utilisez deux types d'expressions : Expression boolenne : expression qui produit la valeur boolenne 1 (vrai) ou 0 (faux). Une expression boolenne utilise des points boolens, des oprateurs de relation et des oprateurs logiques pour comparer des valeurs ou vrifier si des conditions sont vraies ou fausses. Par exemple, tag1>65. Une expression boolenne simple peut tre un seul point BOOL.
C-5
Gnralement, vous utilisez des expressions boolennes pour conditionner l'excution d'une autre logique. Expression numrique : expression qui calcule une valeur de nombre entier ou virgule flottante. Une expression numrique utilise des oprateurs et des fonctions arithmtiques et des oprateurs sur bits. Par exemple, tag1+5. Une expression numrique est souvent imbrique dans une expression de comparaison. Par exemple, (tag1+5)>65. Utilisez le tableau suivant pour choisir des oprateurs pour vos expressions :
Si vous voulez calculer une valeur arithmtique comparer deux valeurs ou chanes vrifier si des conditions sont vraies ou fausses comparer les bits dans des valeurs Voir Utilisation d'oprateurs et de fonctions arithmtiques , page C-5. Utilisation d'oprateurs de relation , page C-7. Utilisation d'oprateurs logiques , page C-8. Utilisation d'oprateurs sur bits , page C-9.
C-6
Les fonctions arithmtiques effectuent des oprations mathmatiques. Indiquez une constante, un point non boolen ou une expression pour la fonction.
Pour valeur absolue cosinus d'arc sinus d'arc tangente d'arc cosinus radians en degrs logarithme naturel logarithme dcimal degrs en radians sinus racine carre tangente troncation Utilisez cette fonction ABS (expression_numrique) ACOS (expression_numrique) ASIN (expression_numrique) ATAN (expression_numrique) COS (expression_numrique) DEG (expression_numrique) LN (expression_numrique) LOG (expression_numrique) RAD (expression_numrique) SIN (expression_numrique) SQRT (expression_numrique) TAN (expression_numrique) TRUNC (expression_numrique) Type de donnes optimal DINT, REAL REAL REAL REAL REAL DINT, REAL REAL REAL DINT, REAL REAL DINT, REAL REAL DINT, REAL
Par exemple
Utilisez ce format Exemple Pour cette situation valeur1 oprateur valeur2 Si "gain_4" et "gain_4_adj" sont des points DINT et votre spcification indique : Ajouter 15 "gain_4" et stocker le rsultat dans "gain_4_adj". Ecrivez gain_4_adj := gain_4+15;
oprateur valeur1
Si "alarm" et "high_alarm" sont des points DINT et alarm:= votre spcification indique : Inverser "high_alarm" -high_alarm; et stocker le rsultat dans "alarm". Si "overtravel" et "overtravel_POS" sont des points DINT et votre spcification indique : Calculer la valeur absolue de "overtravel" et stocker le rsultat dans "overtravel_POS". Si "adjustment" et "position" sont des points DINT, "sensor1" et "sensor2" des points REAL et si votre spcification indique : Trouver la valeur absolue de la moyenne de "sensor1" et "sensor2", ajouter "adjustment" et stocker le rsultat dans "position". overtravel_POS := ABS(overtravel);
fonction(expression_numrique)
C-7
Par exemple :
Utilisez ce format Exemple Pour cette situation valeur1 oprateur valeur2 Si "temp" est un point DINT et votre spcification indique : Si "temp" est infrieur 100, alors Si "bar_code" et "dest" sont des chanes de caractres et votre spcification indique : Si "bar_code" est gal "dest", alors Si "bar_code" est une chane de caractres et votre spcification indique : Si "bar_code.DATA[0]" est gal "A", alors Ecrivez IF temp<100 THEN...
chane_de_caractres1 oprateur chane_de_caractres2 caractre1 oprateur caractre2 Pour entrer un caractre ASCII directement dans l'expression, entrez la valeur dcimale du caractre. point_bool := expressions_boolennes
IF bar_code=dest THEN...
IF bar_code.DATA[0]=65 THEN...
Si "count" et "length" sont des points DINT, "done" un point BOOL et si votre spcification indique : Si "count" est suprieur ou gal "length", fin du comptage.
C-8
Codes Hex $31$61$62 $31$62 $41 $41$42 $42 $61 $61$62 a>B AB < B
1b A AB B a ab
Les chanes sont gales si leurs caractres concordent. Les caractres sont diffrents s'ils sont en majuscules ou en minuscules. Un A majuscule ($41) n'est pas gal un a minuscule ($61). Pour trouver la valeur dcimale et le code hexadcimal d'un caractre, reportez-vous la dernire page de ce manuel.
C-9
Par exemple :
Utilisez ce format Exemple Pour cette situation
pointBOOL
Si "photoeye" est un point BOOL et votre spcification indique : Si "photoeye_1" est active, alors Si "photoeye" est un point BOOL et votre spcification indique : Si "photoeye" est dsactive, alors Si "photoeye" est un point BOOL, "temp" un point DINT et si votre spcification indique : Si "photoeye" est active et "temp" infrieure 100, alors Si "photoeye" est un point BOOL, "temp" un point DINT et si votre spcification indique : Si "photoeye" est active ou "temp" infrieure 100, alors Si "photoeye1" et "photoeye2" sont des points BOOL et votre spcification indique : Si : "photoeye1" est active et "photoeye2" dsactive, ou "photoeye1" est dsactive et "photoeye2" active, alors Si "photoeye1" et "photoeye2" sont des points BOOL, "open" un point BOOL et si votre spcification indique : Si "photoeye1" et "photoeye2" sont actives, rgler "open" sur vrai.
NOT pointBOOL
expression1 OR expression2
Par exemple :
Utilisez ce format Exemple Pour cette situation valeur1 oprateur valeur2 Si "input1", "input2" et "result1" sont des points DINT et votre spcification indique : Calculer le rsultat sur bits de "input1" et "input2" et stocker le rsultat dans "result1" Ecrivez result1 := input1 AND input2;
C-10
Instructions
Les instructions en texte structur peuvent tre galement des instructions. Pour connatre les instructions disponibles en texte structur, reportez-vous au tableau de reprage des instructions au dbut de ce manuel. Une instruction en texte structur est excute chaque fois qu'elle est scrute. Une instruction en texte structur dans une instruction de test est excute chaque fois que les conditions de cette instruction de test sont vraies. Si les conditions de l'instruction de test sont fausses, les instructions figurant dans l'instruction de test ne sont pas scrutes. Il n'est pas possible de conditionner l'excution de l'instruction extrieurement. Ceci diffre des instructions de bloc fonctionnel qui utilisent EnableIn pour dclencher l'excution. Les instructions en texte structur sont excutes comme si EnableIn tait toujours activ. Ceci diffre galement des instructions de logique relais qui utilisent l'tat d'entre de la ligne pour dclencher l'excution. Certaines instructions de logique relais sont excutes uniquement lorsque l'tat d'entre de la ligne passe de faux vrai. Ce sont des instructions de logique relais de transition. En texte structur, les instructions
C-11
sont excutes chaque fois qu'elles sont scrutes, moins qu'elles ne soient imbriques dans un test. L'instruction ABL, par exemple, est une instruction de logique relais de transition. Dans cet exemple, l'instruction ABL est excute lors d'une scrutation uniquement si tag_xic passe d'effac activ. L'instruction ABL n'est pas excute si tag_xic reste activ ou si tag_xic est effac.
En texte structur, si vous crivez cet exemple comme suit : IF tag_xic THEN ABL(0,serial_control); END_IF; l'instruction ABL est excute chaque scrutation pendant laquelle tag_xic est activ, et pas seulement lorsque tag_xic passe d'effac activ. Si vous souhaitez que l'instruction ABL soit excute uniquement lorsque tag_xic passe d'effac activ, vous devez conditionner l'instruction en texte structur. Utilisez une instruction d'excution sur front pour dclencher l'excution.
osri_1.InputBit := tag_xic; OSRI(osri_1);
Instructions de test
Si vous voulez excuter une action si ou lorsque des conditions particulires se produisent slectionner l'action excuter en fonction d'une valeur numrique excuter une action un certain nombre de fois avant l'excution d'une autre action continuer l'excution d'une action tant que certaines conditions sont vraies continuer l'excution d'une action jusqu' ce qu'une condition soit vraie
Les instructions de test peuvent tre programmes seules ou imbriques dans d'autres instructions de test.
Utilisez cette instruction de test IF...THEN CASE...OF FOR...DO WHILE...DO REPEAT...UNTIL Disponible dans ces langages texte structur texte structur texte structur texte structur texte structur Voir page C-12 C-15 C-17 C-20 C-23
C-12
Utilisez l'instruction de test IFTHEN pour excuter une action si ou lorsque des conditions particulires se produisent.
Texte structur
IF expression_boolenne THEN <instruction>; END_IF;
Type BOOL
Entrez un point ou une expression boolenne qui donne une valeur boolenne (expression boolenne)
. . .
facultatif
. . .
facultatif
ELSE <instruction>;
instructions excuter lorsque les deux expressions sont fausses
. . .
END_IF;
Pour utiliser ELSIF ou ELSE, suivez ces directives : 1. Pour faire une slection dans plusieurs groupes d'instructions possibles, ajoutez une ou plusieurs instructions ELSIF. Chaque condition ELSIF reprsente un chemin alternatif. Indiquez autant de conditions ELSIF que de chemins ncessaires. L'automate excute la premire condition IF ou ELSIF vraie et saute les autres conditions ELSIF et la condition ELSE. 2. Pour excuter une action lorsque toutes les conditions IF ou ELSIF sont fausses, ajoutez une instruction ELSE.
C-13
ne rien faire si les conditions sont fausses choisir parmi des instructions (ou groupes d'instructions) alternatives en attribuer des instructions par dfaut si toutes fonction des conditions d'entre les conditions sont fausses
Exemple 1 : IFTHEN
Si vous voulez ceci SI rejette > 3 alors convoyeur = dsactiv (0) alarme = active (1) Entrez ce texte structur IF rejects > 3 THEN conveyor := 0; alarm := 1; END_IF;
Exemple 2 : IFTHENELSE
Si vous voulez ceci Si contact de direction du convoyeur = avant (1) alors voyant = teint Sinon voyant = allum Entrez ce texte structur IF conveyor_direction THEN light := 0; ELSE light [:=] 1; END_IF;
[:=] indique l'automate d'effacer light lorsque ce dernier : passe en mode Excution (Run) ; sort de l'tape d'un graphe de fonctionnement squentiel si vous configurez le graphe pour une Rinitialisation automatique (Automatic reset) (ceci est valable uniquement si vous intgrez l'affectation dans l'action de l'tape ou si vous utilisez l'action pour appeler un sous-programme en texte structur au moyen d'une instruction JSR).
C-14
Exemple 3 : IFTHENELSIF
Si vous voulez ceci Si dtecteur de niveau bas sucre = bas (activ) et dtecteur de niveau haut sucre = pas haut (activ) alors vanne d'entre = ouverte (active) Entrez ce texte structur IF Sugar.Low & Sugar.High THEN Sugar.Inlet [:=] 1;
Jusqu' ce que dtecteur de niveau haut sucre = haut (dsactiv) ELSIF NOT(Sugar.High) THEN Sugar.Inlet := 0; END_IF;
[:=] indique l'automate d'effacer Sugar.Inlet lorsque ce dernier : passe en mode Excution (Run) ; sort de l'tape d'un graphe de fonctionnement squentiel si vous configurez le graphe pour une Rinitialisation automatique (Automatic reset) (ceci est valable uniquement si vous intgrez l'affectation dans l'action de l'tape ou si vous utilisez l'action pour appeler un sous-programme en texte structur au moyen d'une instruction JSR).
Exemple 4 : IFTHENELSIFELSE
Si vous voulez ceci Si temprature du rservoir > 100 alors pompe = lente Si temprature de rservoir > 200 alors pompe = rapide Sinon pompe = arrte ELSE pump.fast :=0; pump.slow :=0; pump.off :=1; END_IF; Entrez ce texte structur IF tank.temp > 200 THEN pump.fast :=1; pump.slow :=0; pump.off :=0; ELSIF tank.temp > 100 THEN pump.fast :=0; pump.slow :=1; pump.off :=0;
C-15
Utilisez CASE pour dterminer ce qu'il faut faire en fonction d'une valeur numrique.
Texte structur
CASE expression_numrique OF slecteur1: instruction; slecteurN: instruction; ELSE instruction; END_CASE; slecteur
Oprande
expression_ numrique
immdiat
IMPORTANT
Si vous utilisez des valeurs REAL, utilisez une plage de valeurs pour un slecteur car il est plus probable qu'une valeur REAL se trouve dans une plage de valeurs qu'elle ne corresponde exactement une valeur particulire.
slecteur2 :
. . .
slecteur3 : <instruction >;
. . .
ELSE <instruction >;
facultatif
. . .
END_CASE;
C-16
Pour connatre les valeurs de slecteur correctes, reportez-vous au tableau page suivante. La syntaxe pour l'entre des valeurs de slecteur est la suivante :
Lorsque le slecteur est une valeur plusieurs valeurs diffrentes Entrez valeur: instruction valeur1, valeur2, valeurN : <instruction> Utilisez une virgule (,) pour sparer chaque valeur. une plage de valeurs valeur1..valeurN : <instruction> Utilisez deux points (..) pour identifier la plage. des valeurs diffrentes plus une plage valeura, valeurb, valeur1..valeurN : <instruction> de valeurs
Exemple
Si vous voulez ceci Si numro de recette = 1 alors Ingrdient A sortie 1 = ouvert (1) Ingrdient B sortie 4 = ouvert (1) Si numro de recette = 2 ou 3 alors Ingrdient A sortie 4 = ouvert (1) Ingrdient B sortie 2 = ouvert (1) Si numro de recette = 4, 5, 6 ou 7, alors Ingrdient A sortie 4 = ouverte (1) Ingrdient B sortie 2 = ouverte (1) Si numro de recette = 8, 11, 12 ou 13, alors Ingrdient A sortie 1 = ouverte (1) Ingrdient B sortie 4 = ouverte (1) Sinon toutes les sorties = fermes (0)
ELSE Ingredient_A.Outlet_1 [:=]0; Ingredient_A.Outlet_4 [:=]0; Ingredient_B.Outlet_2 [:=]0; Ingredient_B.Outlet_4 [:=]0; END_CASE; 8,11-13 Ingredient_A.Outlet_1 :=1; Ingredient_B.Outlet_4 :=1; 4..7: Ingredient_A.Outlet_4 :=1; Ingredient_B.Outlet_2 :=1; 2,3:
[:=] indique l'automate d'effacer galement le point de sortie lorsque ce dernier : passe en mode Excution (Run) ; sort de l'tape d'un graphe de fonctionnement squentiel si vous configurez le graphe pour une Rinitialisation automatique (Automatic reset) (ceci est valable uniquement si vous intgrez l'affectation dans l'action de l'tape ou si vous utilisez l'action pour appeler un sous-programme en texte structur au moyen d'une instruction JSR).
Publication 1756-RM003F-FR-P - Mai 2002
C-17
Utilisez la boucle FORDO pour excuter une action un certain nombre de fois avant l'excution d'une autre action.
Texte structur
FOR comptage:= valeur_initiale TO valeur_finale BY incrment DO <instruction>; END_FOR;
Oprande comptage
Format point
Description point pour le stockage de la position de comptage pendant l'excution de FORDO doit donner un nombre dfinit la valeur initiale du comptage dfinit la valeur finale du comptage, qui indique quand sortir de la boucle (facultatif) valeur d'incrmentation du comptage chaque passage dans la boucle Si vous n'indiquez pas d'incrment, le comptage s'effectue de 1 en 1.
valeur_ini SINT tiale INT DINT valeur_fin SINT ale INT DINT incrment SINT INT DINT
IMPORTANT
Veillez ne pas trop rpter la boucle lors d'une mme scrutation. L'automate n'excute pas d'autres instructions du sous-programme tant qu'il n'a pas termin la boucle. Si le temps ncessaire pour terminer la boucle est suprieur au chien de garde de la tche, un dfaut majeur se produit. Pensez utiliser une instruction de test diffrente, telle que IF...THEN.
facultatif
END_IF;
S'il y a des conditions pour lesquelles vous voulez quitter la boucle avant qu'elle ne soit termine, utilisez d'autres instructions, telle qu'une instruction de test IF...THEN, pour conditionner une instruction de sortie (EXIT).
END_FOR;
C-18
Les diagrammes suivants montrent comment une boucle FOR...DO est excute et comment une instruction EXIT quitte la boucle avant que cette dernire ne soit termine.
Excute x fois ? non instruction 1 instruction 2 instruction 3 instruction 4 reste du sous-programme oui Excute x fois ? non instruction 1 instruction 2 instruction 3 instruction 4 Sortir ? non reste du sous-programme oui
oui
Pour arrter la boucle avant que le compte n'atteigne la dernire valeur, utilisez une instruction de sortie (EXIT).
Exemple 1 :
Si vous voulez ceci Effacer les bits 0 31 dans un tableau de bits : 1. Initialiser le point "subscript" (0). 2. Effacer "array[ subscript ]". Par exemple, lorsque "subscript" = 5, effacer "array[5]." 3. Ajouter 1 "subscript". 4. Si "subscript" est 31, rpter 2 et 3. Sinon, arrter. Entrez ce texte structur For subscript:=0 to 31 by 1 do array[subscript] := 0; End_for;
C-19
Exemple 2 :
Si vous voulez ceci Entrez ce texte structur
SIZE(Inventory,0,Inventory_Items); Un type de donnes dfini par l'utilisateur (structure) stocke les informations suivantes sur un article de votre inventaire : For position:=0 to Inventory_Items - 1 do numro d'identification du code-barres de l'article (donnes de type chane) If Barcode = Inventory[position].ID then quantit d'articles de ce type en stock (donnes de Quantity := Inventory[position].Qty; type DINT) Un tableau correspondant la structure ci-dessus contient Exit; une entre pour chaque article de votre inventaire. Vous End_if; voulez rechercher un article particulier (utilisez son code-barres) dans le tableau et en dterminer la quantit en End_for; stock. 1. Chercher la taille (nombre d'articles) du tableau "Inventory" et stocker le rsultat dans "Inventory_Items" (point DINT). 2. Initialiser le point "position" (0). 3. Si "Barcode" correspond au numro d'identification d'un article du tableau, alors : a. Dfinir le point "Quantity = "Inventory[position].Qty." Ceci indique la quantit d'articles de ce type en stock. b. Arrter. "Barcode" est une chane de caractres qui stocke le code-barres de l'article que vous recherchez. Par exemple, lorsque "position" = 5, comparer "Barcode" "Inventory[5].ID". 4. Ajouter 1 "position". 5. Si "position" est ("Inventory_Items -1)", rpter 3 et 4. Les numros d'lments commenant 0, le dernier lment est 1 de moins que le nombre d'lments dans le tableau. Sinon, arrter.
C-20
Utilisez la boucle WHILEDO pour poursuivre l'excution d'une action tant que certaines conditions sont vraies.
Texte structur
WHILE expression_boolenne DO <instruction>; END_WHILE;
Type BOOL
Entrez un point ou une expression boolenne qui donne une valeur boolenne
IMPORTANT
Veillez ne pas trop rpter la boucle lors d'une mme scrutation. L'automate n'excute pas d'autres instructions du sous-programme tant qu'il n'a pas termin la boucle. Si le temps ncessaire pour terminer la boucle est suprieur au chien de garde de la tche, un dfaut majeur se produit. Pensez utiliser une instruction de test diffrente, telle que IF...THEN.
EXIT; END_IF;
S'il y a des conditions pour lesquelles vous voulez quitter la boucle avant qu'elle ne soit termine, utilisez d'autres instructions, telles qu'une instruction de test IF...THEN, pour conditionner une instruction de sortie (EXIT).
END_WHILE;
C-21
Les diagrammes suivants montrent comment une boucle WHILE...DO est excute et comment une instruction EXIT quitte la boucle avant que cette dernire ne soit termine.
expression boolenne vraie instruction 1 instruction 2 instruction 3 instruction 4 fausse expression boolenne vraie instruction 1 instruction 2 instruction 3 instruction 4 Sortir ? reste du sous-programme non reste du sous-programme fausse
oui
Tant que expression_boolenne est vraie, l'automate excute uniquement les instructions de la boucle WHILEDO.
Pour arrter la boucle avant que les conditions ne soient vraies, utilisez une instruction de sortie (EXIT).
Exemple 1 :
Si vous voulez ceci La boucle WHILE...DO value d'abord ses conditions. Si les conditions sont vraies, l'automate excute les instructions de la boucle. Ceci est diffrent de la boucle REPEAT...UNTIL dans la mesure o la boucle REPEAT...UNTIL excute les instructions du test, puis dtermine si les conditions sont vraies avant d'excuter de nouveau les instructions. Les instructions d'une boucle REPEAT...UNTIL sont toujours excutes au moins une fois. Les instructions d'une boucle WHILE...DO peuvent ne jamais tre excutes. Entrez ce texte structur pos := 0; While ((pos <= 100) & structarray[pos].value <> targetvalue)) do pos := pos + 2; String_tag.DATA[pos] := SINT_array[pos]; end_while;
C-22
Exemple 2 :
Si vous voulez ceci Dplacer des caractres ASCII d'un tableau SINT dans une chane de caractres (dans un tableau SINT, chaque lment garde un caractre). Arrter lorsque vous atteignez le retour chariot. 1. Initialiser "Element_number" (0). 2. Compter le nombre d'lments dans "SINT_array" (tableau contenant les caractres ASCII) et stocker le rsultat dans "SINT_array_size" (point DINT). 3. Si le caractre au niveau de "SINT_array[element_number] " = 13 (valeur dcimale du retour chariot), alors arrter. 4. Dfinir "String_tag[element_number]" = caractre au niveau de "SINT_array[element_number]". 5. Ajouter 1 "element_number". Ceci permet l'automate de vrifier le caractre suivant dans "SINT_array". 6. Dfinir le membre Longueur de "String_tag" = "element_number" (ceci enregistre le nombre de caractres dans "String_tag" jusqu' ce caractre). 7. Si "element_number" = "SINT_array_size", alors arrter (vous avez atteint la fin du tableau et il ne contient pas de retour chariot). 8. Aller 3. Entrez ce texte structur element_number := 0; SIZE(SINT_array, 0, SINT_array_size); While SINT_array[element_number] <> 13 do String_tag.DATA[element_number] := SINT_array[element_number]; element_number:= element_number + 1; String_tag.LEN := element_number; If element_number = SINT_array_size then exit; end_if; end_while;
C-23
Utilisez la boucle REPEATUNTIL pour poursuivre l'excution d'une action jusqu' ce que les conditions soient vraies.
Texte structur
REPEAT <instruction>; UNTIL expression_boolenne END_REPEAT;
Type BOOL
Entrez un point ou une expression boolenne qui donne une valeur boolenne (expression boolenne)
IMPORTANT
Veillez ne pas trop rpter la boucle lors d'une mme scrutation. L'automate n'excute pas d'autres instructions du sous-programme tant qu'il n'a pas termin la boucle. Si le temps ncessaire pour terminer la boucle est suprieur au chien de garde de la tche, un dfaut majeur se produit. Pensez utiliser une instruction de test diffrente, telle que IF...THEN.
EXIT; END_IF;
S'il y a des conditions pour lesquelles vous voulez quitter la boucle avant qu'elle ne soit termine, utilisez d'autres instructions, telle qu'une instruction de test IF...THEN, pour conditionner une instruction de sortie (EXIT).
C-24
Les diagrammes suivants montrent comment une boucle REPEAT...UNTIL est excute et comment une instruction EXIT quitte la boucle avant que cette dernire ne soit termine.
instruction 1 instruction 2 instruction 3 instruction 4 expression boolenne fausse expression boolenne reste du sous-programme fausse reste du sous-programme vraie instruction 1 instruction 2 instruction 3 instruction 4 Sortir ? non vraie
oui
Tant que expression_boolenne est fausse, l'automate excute uniquement les instructions de la boucle REPEATUNTIL.
Pour arrter la boucle avant que les conditions ne soient fausses, utilisez une instruction de sortie (EXIT).
Exemple 1 :
Si vous voulez ceci La boucle REPEAT...UNTIL excute les instructions du test, puis dtermine si les conditions sont vraies avant d'excuter de nouveau les instructions. Ceci diffre de la boucle WHILE...DO dans la mesure o la boucle WHILE...DO value d'abord ses conditions. Si les conditions sont vraies, l'automate excute les instructions de la boucle. Les instructions d'une boucle REPEAT...UNTIL sont toujours excutes au moins une fois. Les instructions d'une boucle WHILE...DO peuvent ne jamais tre excutes. Entrez ce texte structur pos := -1; REPEAT pos := pos + 2; UNTIL ((pos = 101) OR (structarray[pos].value = targetvalue)) end_repeat;
C-25
Exemple 2 :
Si vous voulez ceci Dplacer des caractres ASCII d'un tableau SINT dans une chane de caractres (dans un tableau SINT, chaque lment garde un caractre). Arrter lorsque vous atteignez le retour chariot. 1. Initialiser "Element_number" (0). 2. Compter le nombre d'lments dans "SINT_array" (tableau contenant les caractres ASCII) et stocker le rsultat dans "SINT_array_size" (point DINT). 3. Dfinir "String_tag[element_number]" = caractre au niveau de "SINT_array[element_number]". 4. Ajouter 1 "element_number". Ceci permet l'automate de vrifier le caractre suivant dans "SINT_array". 5. Dfinir le membre Longueur de "String_tag" = "element_number" (ceci enregistre le nombre de caractres dans "String_tag" jusqu' ce caractre). 6. Si "element_number" = "SINT_array_size", alors arrter (vous avez atteint la fin du tableau et il ne contient pas de retour chariot). 7. Si le caractre au niveau de "SINT_array[element_number]" = 13 (valeur dcimale du retour chariot), alors arrter. Sinon, aller 3. Entrez ce texte structur element_number := 0; SIZE(SINT_array, 0, SINT_array_size); Repeat String_tag.DATA[element_number] := SINT_array[element_number]; element_number := element_number + 1; String_tag.LEN := element_number; If element_number = SINT_array_size then exit; end_if; Until SINT_array[element_number] = 13 end_repeat;
C-26
Commentaires
Ajoutez des commentaires votre texte structur pour en faciliter l'interprtation. Les commentaires vous permettent d'utiliser du langage clair pour dcrire le fonctionnement de votre texte structur. Les commentaires n'affectent pas l'excution du texte structur. Pour ajouter des commentaires votre texte structur :
Pour ajouter un commentaire sur une seule ligne la fin d'une ligne de texte structur Utilisez l'un de ces formats //commentaire (*commentaire*) /*commentaire*/ dans une ligne de texte structur (*commentaire*) /*commentaire*/ qui couvre plusieurs lignes (*dbut du commentaire . . . fin du commentaire*) /*dbut du commentaire . . . fin du commentaire*/
Par exemple :
Format //commentaire Exemple Au dbut d'une ligne //Vrifie la direction de la courroie du convoyeur IF conveyor_direction THEN... A la fin d'une ligne ELSE //Si le convoyeur est immobile, allume le voyant d'alarme light := 1; END_IF; (*commentaire*) Sugar.Inlet[:=]1;(*ouvre l'entre*) IF Sugar.Low (*dtecteur niveau bas*)& Sugar.High (*dtecteur niveau haut*)THEN... (*Contrle la vitesse de la pompe de recirculation. La vitesse dpend de la temprature dans le rservoir.*) IF tank.temp > 200 THEN... /*commentaire*/ Sugar.Inlet:=0;/*ferme l'entre*/ IF bar_code=65 /*A*/ THEN... /*Prend le nombre d'lments dans le tableau Inventory et stocke la valeur dans le point Inventory_Items*/ SIZE(Inventory,0,Inventory_Items);
Index
A
activation d'interruption utilisateur 10-20 activation de sortie 1-6 addition 5-6 ajout d'criture ASCII 16-23 alarmes 12-25 anticipation de vitesse 12-34 attributs conversion des types de donnes A-1 valeurs immdiates A-1 attributs communs A-1 conversion des types de donnes A-1 valeurs immdiates A-1 conversion en nombre entier 15-9 copie 7-26 Copie dans une chane 17-11 copie synchrone 7-26 cosinus 13-4 cosinus d'arc 13-10
D
dcalage binaire droite 8-5 dcalage binaire gauche 8-2 dcalage de sortie 12-34 dchargement FIFO 8-14 dchargement LIFO 8-26 dfinir la valeur systme 3-30 degr 15-2 dsactivation d'interruption utilisateur 10-20 dtection par diagnostic 12-9 dverrouillage de sortie 1-9 diffrent 4-38 DINT vers chane 18-7 distribution d'un champ de bits 6-11 distribution d'un champ de bits avec cible 6-14 division 5-15
B
BAND 6-34 BNOT 6-42 BOR 6-37 BXOR 6-40
C
calcul 5-2 caractres ASCII dans buffer 16-8 CASE (EN FONCTION) C-15 chane vers DINT 18-3 chane vers REAL 18-5 chargement FIFO 8-8 chargement LIFO 8-20 chargement squenceur 9-10 codes d'erreur ASCII 16-4 instruction MSG 3-8 combinaison des types de donnes A-1 commande Programme/Oprateur prsentation B-10 comparaison 4-2 comparaison des bits de fichier 12-2 COMPLEMENT boolen 6-42 COMPLEMENT sur bits 6-31 comptage dcrmental 2-25 comptage incrmental 2-22 comptage incrmental/dcrmental 2-29 concatnation de chanes 17-3 conditions de dpassement B-5 configuration 3-13 instruction MSG 3-13 instruction PID 12-23 conversion des types de donnes A-1 conversion en DCB 15-6
E
cart type 7-46 criture ASCII 16-27 effacement buffer ASCII 16-10 effacement dans une chane 17-5 effacer 6-17 gal 4-7 galit avec masque 4-33 lments instruction SIZE 7-52 entre squenceur 9-2 ET boolen 6-34 ET sur bits 6-22 tiquette 10-2 examine si contact ouvert 1-4 excution sur front 1-11 exposant 14-6 expressions format 4-4, 5-4, 7-17, 7-23 oprateurs valables 4-4, 5-4, 7-16, 7-23 ordre d'excution des oprations 4-5, 5-4, 7-17, 7-24
F
fichier arithmtique et logique 7-7
Publication 1756-RM003F-FR-P - Mai 2002
Index
I
impulsion front descendant 1-16 impulsion front descendant avec entre 1-20 impulsion front montant 1-14 impulsion front montant avec entre 1-18 indicateurs d'tat arithmtique dpassement B-5 infrieur 4-23 infrieur ou gal 4-19 insrer chane 17-9 instruction ABL 16-5 instruction ABS 5-29 instruction ACB 16-8 instruction ACL 16-10 instruction ACS 13-10 instruction ADD 5-6 instruction AFI 10-22 instruction AHL 16-12 instruction AND 6-22 instruction ARD 16-16 instruction ARL 16-19 instruction ASN 13-8 instruction ATN 13-12 instruction AVE 7-36 instruction AWA 16-23 instruction AWT 16-27 instruction BRK 11-4 instruction BSL 8-2 instruction BSR 8-5 instruction BTD 6-11 instruction BTDT 6-14 instruction CLR 6-17 instruction CMP 4-2 instruction CONCAT 17-3 instruction COP 7-26 instruction COS 13-4 instruction CPS 7-26 instruction CPT 5-2 instruction CTD 2-25 instruction CTU 2-22 instruction CTUD 2-29 instruction DDT mode de recherche 12-11 oprandes 12-9 instruction de pause SFC 10-26 instruction de positionnement SFC 10-28 instruction DEG 15-2 instruction DELETE 17-5 instruction DIV 5-15 instruction DTOS 18-7
Publication 1756-RM003F-FR-P - Mai 2002
instruction DTR 12-16 instruction EOT 10-24 instruction EQU 4-7 instruction FAL mode de fonctionnement 7-2 oprandes 7-7 instruction FBC mode de recherche 12-3 oprandes 12-2 instruction FFL 8-8 instruction FFU 8-14 instruction Fin de transition 10-24 instruction FIND 17-7 instruction FLL 7-32 instruction FOR 11-2 instruction FRD 15-9 instruction FSC mode de fonctionnement 7-2 oprandes 7-18 instruction GEQ 4-11 instruction GRT 4-15 instruction GSV objets 3-32 oprandes 3-30 instruction INSERT 17-9 instruction JMP 10-2 instruction JSR 10-4 instruction JXR structure de contrle 10-14 instruction LBL 10-2 instruction LEQ 4-19 instruction LES 4-23 instruction LFL 8-20 instruction LFU 8-26 instruction LIM 4-27 instruction LN 14-2 instruction LOWER 18-13 instruction MCR 10-18 instruction MEQ 4-33 instruction MID 17-11 instruction MOD 5-19 instruction MOV 6-3 instruction MSG 3-13 codes d'erreur 3-8 mthode de communication 3-27 oprandes 3-2 structure 3-2 instruction MUL 5-12 instruction MVM 6-5 instruction MVMT 6-8 instruction NEG 5-26 instruction NEQ 4-38 instruction NOP 10-23 instruction NOT 6-31
Index
instruction ONS 1-11 instruction OR 6-25 instruction OSF 1-16 instruction OSFI 1-20 instruction OSR 1-14 instruction OSRI 1-18 instruction OTE 1-6 instruction OTL 1-7 instruction OTU 1-9 instruction PID alarmes 12-25 anticipation de vitesse 12-34 configuration 12-23 dcalage de sortie 12-34 mise l'chelle 12-25 oprandes 12-19 rglages 12-24 zone morte 12-33 instruction RAD 15-4 instruction RES 2-33 instruction RET 10-4, 11-5 instruction RTO 2-9 instruction RTOR 2-19 instruction RTOS 18-9 instruction SBR 10-4 instruction SFP 10-26 instruction SFR 10-28 instruction SIN 13-2 instruction SIZE 7-52 instruction SQI 9-2 instruction SQL 9-10 instruction SQO 9-6 instruction SQR 5-23 instruction SRT 7-41 instruction SSV objets 3-32 oprandes 3-30 instruction STD 7-46 instruction STOD 18-3, C-12 instruction STOR 18-5 instruction SUB 5-9 instruction SWPB 6-18 instruction TAN 13-6 instruction TND 10-16 instruction TOD 15-6 instruction TOF 2-5 instruction TOFR 2-16 instruction TON 2-2 instruction TONR 2-13 instruction TRN 15-11 instruction UID 10-20 instruction UIE 10-20 instruction UPPER 18-11 instruction XIO 1-4
MOD 5-19
d'entre/de sortie 3-1 de calcul 5-1 de commande de programme 10-1 de comparaison 4-1 de comptage 2-1 de conversion 15-1 de conversion ASCII 18-1 de conversion de chane 18-1 de conversion mathmatique 15-1 de dcalage 8-1 de manipulation de chane 17-1 de temporisation 2-1 de transfert 6-1 logiques 6-1 manipulation de chane ASCII 17-1 mathmatiques volues 14-1 port srie 16-1 port srie ASCII 16-1 pour/d'interruption 11-1 squenceur 9-1 spciales 12-1 sur bits 1-1 sur tableau trigonomtriques 13-1 instructions ASCII ABL 16-5 ACB 16-8 ACL 16-10 AHL 16-12 ARD 16-16 ARL 16-19 AWA 16-23 AWT 16-27 CONCAT 17-3 DELETE 17-5 DTOS 18-7 FIND 17-7 INSERT 17-9 LOWER 18-13 MID 17-11 RTOS 18-9 STOD 18-3, C-12 STOR 18-5 SWPB 6-18 UPPER 18-11 instructions d'entre/de sortie GSV 3-30 introduction 3-1 MSG 3-2
Publication 1756-RM003F-FR-P - Mai 2002
Index
SSV 3-30 instructions de calcul ABS 5-29 ADD 5-6 CPT 5-2 DIV 5-15 format d'expression 5-4, 7-17 introduction 5-1 MUL 5-12 NEG 5-26 oprateurs valables 5-4, 7-16 ordre d'excution des oprations 5-4, 7-17 SQR 5-23 SUB 5-9 instructions de commande de programme AFI 10-22 EOT 10-24 introduction 10-1 JMP 10-2 JSR 10-4 LBL 10-2 MCR 10-18 NOP 10-23 RET 10-4 SBR 10-4 TND 10-16 UID 10-20 UIE 10-20 instructions de comparaison CMP 4-2 EQU 4-7 format d'expression 4-4, 7-23 GEQ 4-11 GRT 4-15 introduction 4-1 LEQ 4-19 LES 4-23 LIM 4-27 MEQ 4-33 NEQ 4-38 oprateurs valables 4-4, 7-23 ordre d'excution des oprations 4-5, 7-24 instructions de comptage CTD 2-25 CTU 2-22 CTUD 2-29 introduction 2-1 RES 2-33 instructions de conversion DEG 15-2 FRD 15-9 introduction 15-1 RAD 15-4 TOD 15-6
Publication 1756-RM003F-FR-P - Mai 2002
TRN 15-11 instructions de conversion de chane DTOS 18-7 introduction 18-1 LOWER 18-13 RTOS 18-9 STOD 18-3, C-12 STOR 18-5 SWPB 6-18 UPPER 18-11 instructions de conversion mathmatique DEG 15-2 FRD 15-9 introduction 15-1 RAD 15-4 TOD 15-6 TRN 15-11 instructions de dcalage BSL 8-2 BSR 8-5 FFL 8-8 FFU 8-14 introduction 8-1 LFL 8-20 LFU 8-26 instructions de fichier voir instructions sur tableau instructions de manipulation de chane CONCAT 17-3 DELETE 17-5 FIND 17-7 INSERT 17-9 introduction 17-1 MID 17-11 instructions de temporisation introduction 2-1 RES 2-33 RTO 2-9 RTOR 2-19 TOF 2-5 TOFR 2-16 TON 2-2 TONR 2-13 instructions de transfert BTD 6-11 BTDT 6-14 CLR 6-17 introduction 6-1 MOV 6-3 MVM 6-5 MVMT 6-8 instructions de transfert/logiques BAND 6-34 BNOT 6-42
Index
BOR 6-37 BXOR 6-40 instructions LOG 14-4 instructions logiques AND 6-22 COMPLEMENT 6-31 introduction 6-1 OR 6-25 XOR 6-28 instructions mathmatiques volues introduction 14-1 LN 14-2 LOG 14-4 XPY 14-6 instructions port srie ABL 16-5 ACB 16-8 ACL 16-10 AHL 16-12 ARD 16-16 ARL 16-19 AWA 16-23 AWT 16-27 introduction 16-1 instructions pour/d'interruption BRK 11-4 FOR 11-2 introduction 11-1 RET 11-5 instructions squenceur introduction 9-1 SQI 9-2 SQL 9-10 SQO 9-6 instructions spciales DDT 12-9 DTR 12-16 FBC 12-2 introduction 12-1 PID 12-19 SFP 10-26 SFR 10-28 instructions sur bits introduction 1-1 ONS 1-11 OSF 1-16 OSFI 1-20 OSR 1-14 OSRI 1-18 OTE 1-6 OTL 1-7 OTU 1-9 XIO 1-4 instructions sur tableau
AVE 7-36 BSL 8-2 BSR 8-5 COP 7-26 CPS 7-26 DDT 12-9 de fichier/diverses 7-1 dcalage 8-1 FAL 7-7 FBC 12-2 FFL 8-8 FFU 8-14 FLL 7-32 FSC 7-18 LFL 8-20 LFU 8-26 mode de fonctionnement 7-2 RES 2-33 squenceur 9-1 SIZE 7-52 SQI 9-2 SQL 9-10 SQO 9-6 SRT 7-41 STD 7-46 instructions trigonomtriques ACS 13-10 ASN 13-8 ATN 13-12 COS 13-4 introduction 13-1 SIN 13-2 TAN 13-6 interruption 11-4
L
lecture ASCII 16-16 ligne de lecture ASCII 16-19 lignes d'change ASCII 16-12 lire la valeur systme 3-30 logarithme dcimal 14-4 naturel 14-2 logarithme dcimal 14-4 logarithme naturel 14-2
M
majuscule 18-11 masque 12-16 message 3-2
Publication 1756-RM003F-FR-P - Mai 2002
Index
minuscule 18-13 mise l'chelle 12-25 mode de fonctionnement 7-2 mode de recherche 12-3, 12-11 mode Incrmental 7-5 mode Numrique 7-3 mode TOUT 7-2 modes de temporisation B-5 Modulo 5-19 moyenne 7-36 multiplication 5-12
P
pas d'opration 10-23 permutation d'octets 6-18 proportionnel, intgral et driv 12-19
R N
ngation 5-26 racine carre 5-23 radians 15-4 REAL vers chane 18-9 Recherche de chane 17-7 recherche et comparaison de fichiers 7-18 rechercher une chane 17-7 rglages 12-24 relais de contrle matre 10-18 remise zro 2-33 remplissage de fichier 7-32 retour 10-4, 11-5
O
objet CONTROLLER 3-32 objet CONTROLLERDEVICE 3-33 objet CST 3-35 objet DF1 3-36 objet FAULTLOG 3-39 objet MESSAGE 3-40 objet MODULE 3-42 objet MOTIONGROUP 3-43 objet PROGRAM 3-44 objet ROUTINE 3-45 objet SERIALPORT 3-45 objet TASK 3-47 objet WALLCLOCKTIME 3-47 objets CONTROLLER 3-32 CONTROLLERDEVICE 3-33 CST 3-35 DF1 3-36 FAULTLOG 3-39 instruction GSV/SSV 3-32 MESSAGE 3-40 MODULE 3-42 MOTIONGROUP 3-43 PROGRAM 3-44 ROUTINE 3-45 SERIALPORT 3-45 TASK 3-47 WALLCLOCKTIME 3-47 oprateurs 4-4, 5-4, 7-16, 7-23 ordre d'excution B-3 ordre d'excution des oprations 4-5, 7-24 ordre des oprations 5-4, 7-17 OU boolen 6-37 OU exclusif boolen 6-40
Publication 1756-RM003F-FR-P - Mai 2002
S
saut 10-2 saut vers sous-programme 10-4 sinus 13-2 sinus d'arc 13-8 sortie squenceur 9-6 sous-programme 10-4 soustraction 5-9 STRING vers DINT C-12 structure COMPARE 12-3, 12-10 structure CONTROL 7-8, 7-18, 7-37, 7-41, 7-46, 8-2, 8-5, 8-8, 8-14, 8-20, 8-26, 9-2, 9-6, 9-10 structure COUNTER 2-22, 2-25 structure de contrle 10-14 structure FBD_BIT_FIELD_DISTRIBUTE 6-14 structure FBD_BOOLEAN_AND 6-34 structure FBD_BOOLEAN_NOT 6-42 structure FBD_BOOLEAN_OR 6-37 structure FBD_BOOLEAN_XOR 6-40 structure FBD_COMPARE 4-8, 4-12, 4-16, 4-20, 4-24, 4-39 structure FBD_CONVERT 15-6, 15-9 structure FBD_COUNTER 2-29 structure FBD_LIMIT 4-28 structure FBD_LOGICAL 6-23, 6-26, 6-29, 6-31 structure FBD_MASK_EQUAL 4-34 structure FBD_MASKED_MOVE 6-8
Index
structure FBD_MATH 5-7, 5-10, 5-13, 5-16, 5-20, 5-26, 14-7 structure FBD_MATH_ADVANCED 5-23, 5-29, 13-2, 13-4, 13-6, 13-8, 13-10, 13-12, 14-2, 14-4, 15-2, 15-4 structure FBD_ONESHOT 1-18, 1-20 structure FBD_TIMER 2-13, 2-16, 2-19 structure FBD_TRUNCATE 15-11 structure MESSAGE 3-2 structure PID 12-20 structure RESULT 12-3, 12-10 structure SERIAL_PORT_CONTROL 16-2, 16-4, 16-6, 16-8, 16-13, 16-17, 16-20, 16-24, 16-28 structure STRING 16-3, 17-2, 18-2 structure TIMER 2-2, 2-5, 2-9 structures chane 17-2, 18-2 COMPARE 12-3, 12-10 CONTROL 7-8, 7-18, 7-37, 7-41, 7-46, 8-2, 8-5, 8-8, 8-14, 8-20, 8-26, 9-2, 9-6, 9-10 COUNTER 2-22, 2-25 FBD_BIT_FIELD_DISTRIBUTE 6-14 FBD_BOOLEAN_AND 6-34 FBD_BOOLEAN_NOT 6-42 FBD_BOOLEAN_OR 6-37 FBD_BOOLEAN_XOR 6-40 FBD_COMPARE 4-8, 4-12, 4-16, 4-20, 4-24, 4-39 FBD_CONVERT 15-6, 15-9 FBD_COUNTER 2-29 FBD_LIMIT 4-28 FBD_LOGICAL 6-23, 6-26, 6-29, 6-31 FBD_MASK_EQUAL 4-34 FBD_MASKED_MOVE 6-8 FBD_MATH 5-7, 5-10, 5-13, 5-16, 5-20, 5-26, 14-7 FBD_MATH_ADVANCED 5-23, 5-29, 13-2, 13-4, 13-6, 13-8, 13-10, 13-12, 14-2, 14-4, 15-2, 15-4 FBD_ONESHOT 1-18, 1-20 FBD_TIMER 2-13, 2-16, 2-19 FBD_TRUNCATE 15-11 instruction RES 2-33 MESSAGE 3-2 PID 12-20 RESULT 12-3, 12-10 SERIAL_PORT_CONTROL 16-2, 16-4, 16-6, 16-8, 16-13, 16-17, 16-20, 16-24, 16-28 STRING 16-3, 17-2, 18-2 TIMER 2-2, 2-5, 2-9
T
taille en lments 7-52 tangente 13-6 tangente d'arc 13-12 temporisateur l'enclenchement 2-2 temporisateur l'enclenchement avec RAZ 2-13 temporisateur au dclenchement 2-5 temporisateur au dclenchement avec RAZ 2-16 temporisateur rmanent 2-9 temporisateur rmanent avec RAZ 2-19 test ASCII du buffer 16-5 test sur limites 4-27 texte structur CASE (EN FONCTION) C-15 toujours faux 10-22 transfert 6-3 transfert avec masque 6-5 transfert avec masque et cible 6-8 transition de donnes 12-16 tri 7-41 troncation 15-11 type de donnes chane 16-3, 17-2, 18-2
V
valeur absolue 5-29 valeurs immdiates A-1 verrouillage de sortie 1-7 verrouillage des donnes B-1
X
X la puissance Y 14-6
Z
zone morte 12-33
Index
[ctrl-@] NUL 0
Quatrime de couverture
PN 957707-64
Copyright 2002 Rockwell Automation. Tous droits rservs. Imprim aux Etats-Unis.