570
Automate Logix5000™ - Jeu d'instructions 1756-Lx, 1769-Lx, 1789-Lx, 1794-Lx, PowerFlex 700S Manuel de référence

1756 Rm003f Fr p Jeux d'Instruction Avril2002

Embed Size (px)

DESCRIPTION

1756-rm003f-fr-p_Jeux d'instruction_Avril2002.pdf

Citation preview

Page 1: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Automate Logix5000™ - Jeu d'instructions1756-Lx, 1769-Lx, 1789-Lx, 1794-Lx, PowerFlex 700S

Manuel de référence

Page 2: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Informations importantes destinées à l'utilisateur

En raison de la diversité des utilisations des produits décrits dans le présent 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 sécurité, ainsi qu'aux lois, règlements, codes et normes en vigueur. La société Allen-Bradley ne saurait être tenue pour responsable des dommages indirects ou résultant de l'utilisation de ces produits.

Les illustrations, schémas et exemples de programmes contenus dans cette publication sont présentés à titre indicatif seulement. En raison du nombre important de variables et d'impératifs associés à chaque installation, la société Allen-Bradley ne saurait être tenue pour responsable ni être redevable (y compris en matière de propriété intellectuelle) des suites d'utilisation réelle basée sur les exemples et schémas présentés dans ce manuel.

La publication SGI-1.1, Safety Guidelines for the Application, Installation and Maintenance of Solid-State Control (disponible auprès de votre agence commerciale Allen-Bradley), décrit certaines différences importantes entre les équipements électroniques et les équipements électromagnétiques, qui devront être prises en compte lors de l'application de ces produits comme indiqué dans la présente publication.

Toute reproduction totale ou partielle du présent manuel sans autorisation écrite de la société Rockwell Automation est interdite.

Des remarques sont utilisées tout au long de cette publication pour attirer votre attention sur les mesures de sécurité à prendre en compte. Les messages suivants vous aident à identifier un danger potentiel, à l'éviter et à en discerner les conséquences.

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.

ATTENTION

!Actions ou situations risquant d'entraîner des blessures pouvant être mortelles, des dégâts matériels ou des pertes financières.

IMPORTANT Informations particulièrement importantes dans le cadre de l'utilisation du produit.

Page 3: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Assistance Rockwell Automation

Avant de contacter l'assistance technique Rockwell Automation, nous vous conseillons de lire d'abord les informations de dépannage présentées dans ce manuel.

Si le problème persiste, appelez votre représentant Rockwell Automation ou contactez Rockwell Automation de l'une des façons suivantes :

Téléphone Etats-Unis/Canada

+1.440.646.5800

Hors Etats-Unis/Canada

Vous pouvez obtenir le numéro de téléphone pour votre pays par Internet :

1. Allez sur le site http://www.ab.com2. Cliquez sur Product Support

(http://support.automation.rockwell.com)3. Sous Support Centers, cliquez sur Contact

Information

Internet ⇒ 1. Allez sur le site http://www.ab.com2. Cliquez sur Product Support

(http://support.automation.rockwell.com)

Page 4: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Notes :

Page 5: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Sommaire des modifications

Introduction Ce document contient des informations actualisées et nouvelles.

Modifications Les modifications générales apportées à ce document sont les suivantes :

• ce document comprend à présent le texte structuré, en plus de la logique à relais et des blocs fonctionnels ;

• une liste, en début de chaque chapitre, indique les langages dans lesquels les instructions décrites dans le chapitre sont disponibles ;

• la table d'exécution de chaque instruction comprend à présent une condition de post-scrutation.

Ce document inclut les modifications suivantes :

Modification Voir le chapitre

Les instructions booléennes 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 réunies dans un seul manuel. Elles ont été supprimées de la publication 1756-RM006, Logix5000 Controllers Process Control and Drives Instruction Set Reference Manual.

6

La source d'une instruction TAILLE (SIZE) peut désormais être un point de tableau. Vous n'avez plus besoin de préciser le premier élément du tableau.

7

L'instruction Saut vers sous-programme externe (Jump to External Subroutine - JXR) a été ajoutée : elle est prise en charge uniquement par les automates SoftLogix5800.

10

Les instructions Fin de transition (End of Transition - EOT), Pause SFC (SFC Pause - SFP) et Positionnement SFC (SFC Reset - SFR) ont été ajoutées.

10

L'annexe A comprend des informations supplémentaires sur le verrouillage des instructions IREF et OREF. Les instructions IREF et OREF peuvent utiliser le même nom de point sans changer les valeurs de IREF pendant une scrutation.

A

Une nouvelle annexe explique comment programmer en texte structuré.

B

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 6: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

2 Sommaire des modifications

Notes :

Publication 1756-RM003F-FR-P - Mai 2002

Page 7: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Repérage des instructions

Où trouver une instruction Utilisez cette section pour trouver des informations sur les instructions Logix (les instructions grisées sont disponibles dans d'autres manuels). Cette section indique également quels langages de programmation sont disponibles pour les instructions.

Si le tableau indique L'instruction se trouve dans

un numéro de page ce manuel

une commande de procédé Logix5000 Controllers Process Control and Drives Instruction Set Reference Manual (publication 1756-RM006)

une commande de mouvement Logix5000 Controllers Motion Instruction Set Reference Manual (publication 1756-RM007)

Instruction Emplacement Langages

ABL 16-5 logique à relaistexte structuré

ABS 5-29 logique à relaistexte structurébloc fonctionnel

ACB 16-8 logique à relaistexte structuré

ACL 16-10 logique à relaistexte structuré

ACOS 13-10 texte structuré

ACS 13-10 logique à relaisbloc fonctionnel

ADD 5-6 logique à relaistexte structurébloc fonctionnel

AFI 10-22 logique à relais

AHL 16-12 logique à relaistexte structuré

ALM une commande de procédé

texte structurébloc fonctionnel

AND 6-22 logique à relaistexte structurébloc fonctionnel

ARD 16-16 logique à relaistexte structuré

ARL 16-19 logique à relaistexte structuré

ASIN 13-8 texte structuré

ASN 13-8 logique à relaisbloc fonctionnel

ATAN 13-12 texte structuré

ATN 13-12 logique à relaisbloc fonctionnel

AVE 7-36 logique à relais

AWA 16-23 logique à relaistexte structuré

AWT 16-27 logique à relaistexte structuré

BAND 6-34 texte structurébloc fonctionnel

BNOT 6-42 texte structurébloc fonctionnel

BOR 6-37 texte structurébloc fonctionnel

BRK 11-4 logique à relais

BSL 8-2 logique à relais

BSR 8-5 logique à relais

BTD 6-11 logique à relais

BTDT 6-14 texte structurébloc fonctionnel

BTR (type MSG) 3-2 logique à relaistexte structuré

BTW (type MSG) 3-2 logique à relaistexte structuré

BXOR 6-40 texte structurébloc fonctionnel

CLR 6-17 logique à relaistexte structuré

CMP 4-2 logique à relais

CONCAT 17-3 logique à relaistexte structuré

COP 7-26 logique à relaistexte structuré

Instruction Emplacement Langages

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 8: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

2 Repérage des instructions

COS 13-4 logique à relaistexte structurébloc fonctionnel

CPS 7-26 logique à relaistexte structuré

CPT 5-2 logique à relais

CTD 2-25 logique à relais

CTU 2-22 logique à relais

CTUD 2-29 texte structurébloc fonctionnel

D2SD une commande de procédé

texte structurébloc fonctionnel

D3SD une commande de procédé

texte structurébloc fonctionnel

DDT 12-9 logique à relais

DEDT une commande de procédé

texte structurébloc fonctionnel

DEG 15-2 logique à relaistexte structurébloc fonctionnel

DELETE 17-5 logique à relaistexte structuré

DERV une commande de procédé

texte structurébloc fonctionnel

DFF une commande de procédé

texte structurébloc fonctionnel

DIV 5-15 logique à relaistexte structurébloc fonctionnel

DTOS 18-7 logique à relaistexte structuré

DTR 12-16 logique à relais

EOT 10-24 logique à relaistexte structuré

EQU 4-7 logique à relaistexte structurébloc fonctionnel

ESEL une commande de procédé

texte structurébloc fonctionnel

FAL 7-7 logique à relais

FBC 12-2 logique à relais

FFL 8-8 logique à relais

FFU 8-14 logique à relais

FGEN une commande de procédé

texte structurébloc fonctionnel

Instruction Emplacement Langages

FIND 17-7 logique à relaistexte structuré

FLL 7-32 logique à relais

FOR 11-2 logique à relais

FRD 15-9 logique à relaisbloc fonctionnel

FSC 7-18 logique à relais

GEQ 4-11 logique à relaistexte structurébloc fonctionnel

GRT 4-15 logique à relaistexte structurébloc fonctionnel

GSV 3-30 logique à relaistexte structuré

HLL une commande de procédé

texte structurébloc fonctionnel

HPF une commande de procédé

texte structurébloc fonctionnel

INSERT 17-9 logique à relaistexte structuré

INTG une commande de procédé

texte structurébloc fonctionnel

JKFF une commande de procédé

texte structurébloc fonctionnel

JMP 10-2 logique à relais

JSR 10-4 logique à relaistexte structurébloc fonctionnel

JXR 10-13 logique à relais

LBL 10-2 logique à relais

LDL2 une commande de procédé

texte structurébloc fonctionnel

LDLG une commande de procédé

texte structurébloc fonctionnel

LEQ 4-19 logique à relaistexte structurébloc fonctionnel

LES 4-23 logique à relaistexte structurébloc fonctionnel

LFL 8-20 logique à relais

LFU 8-26 logique à relais

LIM 4-27 logique à relaisbloc fonctionnel

Instruction Emplacement Langages

Publication 1756-RM003F-FR-P - Mai 2002

Page 9: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Repérage des instructions 3

LN 14-2 logique à relaistexte structurébloc fonctionnel

LOG 14-4 logique à relaistexte structurébloc fonctionnel

LOWER 18-13 logique à relaistexte structuré

LPF une commande de procédé

texte structurébloc fonctionnel

MAAT une commande de mouvement

logique à relaistexte structuré

MAFR une commande de mouvement

logique à relaistexte structuré

MAG une commande de mouvement

logique à relaistexte structuré

MAH une commande de mouvement

logique à relaistexte structuré

MAHD une commande de mouvement

logique à relaistexte structuré

MAJ une commande de mouvement

logique à relaistexte structuré

MAM une commande de mouvement

logique à relaistexte structuré

MAOC une commande de mouvement

logique à relaistexte structuré

MAPC une commande de mouvement

logique à relaistexte structuré

MAR une commande de mouvement

logique à relaistexte structuré

MAS une commande de mouvement

logique à relaistexte structuré

MASD une commande de mouvement

logique à relaistexte structuré

MASR une commande de mouvement

logique à relaistexte structuré

MATC une commande de mouvement

logique à relaistexte structuré

MAVE une commande de procédé

texte structurébloc fonctionnel

MAW une commande de mouvement

logique à relaistexte structuré

MAXC une commande de procédé

texte structurébloc fonctionnel

MCCP une commande de mouvement

logique à relaistexte structuré

Instruction Emplacement Langages

MCD une commande de mouvement

logique à relaistexte structuré

MCR 10-18 logique à relais

MDF une commande de mouvement

logique à relaistexte structuré

MDO une commande de mouvement

logique à relaistexte structuré

MDOC une commande de mouvement

logique à relaistexte structuré

MDR une commande de mouvement

logique à relaistexte structuré

MDW une commande de mouvement

logique à relaistexte structuré

MEQ 4-33 logique à relaistexte structurébloc fonctionnel

MGS une commande de mouvement

logique à relaistexte structuré

MGSD une commande de mouvement

logique à relaistexte structuré

MGSP une commande de mouvement

logique à relaistexte structuré

MGSR une commande de mouvement

logique à relaistexte structuré

MID 17-11 logique à relaistexte structuré

MINC une commande de procédé

texte structurébloc fonctionnel

MOD 5-19 logique à relaistexte structurébloc fonctionnel

MOV 6-3 logique à relais

MRAT une commande de mouvement

logique à relaistexte structuré

MRHD une commande de mouvement

logique à relaistexte structuré

MRP une commande de mouvement

logique à relaistexte structuré

MSF une commande de mouvement

logique à relaistexte structuré

MSG 3-2 logique à relaistexte structuré

MSO une commande de mouvement

logique à relaistexte structuré

MSTD une commande de procédé

texte structurébloc fonctionnel

Instruction Emplacement Langages

Publication 1756-RM003F-FR-P - Mai 2002

Page 10: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4 Repérage des instructions

MUL 5-12 logique à relaistexte structurébloc fonctionnel

MUX une commande de procédé

bloc fonctionnel

MVM 6-5 logique à relais

MVMT 6-8 texte structurébloc fonctionnel

NEG 5-26 logique à relaistexte structurébloc fonctionnel

NEQ 4-38 logique à relaistexte structurébloc fonctionnel

NOP 10-23 logique à relais

NOT 6-31 logique à relaistexte structurébloc fonctionnel

NTCH une commande de procédé

texte structurébloc fonctionnel

ONS 1-11 logique à relais

OR 6-25 logique à relaistexte structurébloc fonctionnel

OSF 1-16 logique à relais

OSFI 1-20 texte structurébloc fonctionnel

OSR 1-14 logique à relais

OSRI 1-18 texte structurébloc fonctionnel

OTE 1-6 logique à relais

OTL 1-7 logique à relais

OTU 1-9 logique à relais

PI une commande de procédé

texte structurébloc fonctionnel

PID 12-19 logique à relaistexte structuré

PIDE une commande de procédé

texte structurébloc fonctionnel

PMUL une commande de procédé

texte structurébloc fonctionnel

Instruction Emplacement Langages

POSP une commande de procédé

texte structurébloc fonctionnel

RAD 15-4 logique à relaistexte structurébloc fonctionnel

RES 2-33 logique à relais

RESD une commande de procédé

texte structurébloc fonctionnel

RET 10-4 et 11-5 logique à relaistexte structurébloc fonctionnel

RLIM une commande de procédé

texte structurébloc fonctionnel

RMPS une commande de procédé

texte structurébloc fonctionnel

RTO 2-9 logique à relais

RTOR 2-19 texte structurébloc fonctionnel

RTOS 18-9 logique à relaistexte structuré

SBR 10-4 logique à relaistexte structurébloc fonctionnel

SCL une commande de procédé

texte structurébloc fonctionnel

SCRV une commande de procédé

texte structurébloc fonctionnel

SEL une commande de procédé

bloc fonctionnel

SETD une commande de procédé

texte structurébloc fonctionnel

SFP 10-26 logique à relaistexte structuré

SFR 10-28 logique à relaistexte structuré

SIN 13-2 logique à relaistexte structurébloc fonctionnel

SIZE 7-52 logique à relaistexte structuré

SNEG une commande de procédé

texte structurébloc fonctionnel

Instruction Emplacement Langages

Publication 1756-RM003F-FR-P - Mai 2002

Page 11: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Repérage des instructions 5

SOC une commande de procédé

texte structurébloc fonctionnel

SQI 9-2 logique à relais

SQL 9-10 logique à relais

SQO 9-6 logique à relais

SQR 5-23 logique à relaisbloc fonctionnel

SQRT 5-23 texte structuré

SRT 7-41 logique à relaistexte structuré

SRTP une commande de procédé

texte structurébloc fonctionnel

SSUM une commande de procédé

texte structurébloc fonctionnel

SSV 3-30 logique à relaistexte structuré

STD 7-46 logique à relais

STOD 18-3 logique à relaistexte structuré

STOR 18-5 logique à relaistexte structuré

SUB 5-9 logique à relaistexte structurébloc fonctionnel

SWPB 6-18 logique à relaistexte structuré

TAN 13-6 logique à relaistexte structurébloc fonctionnel

TND 10-16 logique à relais

TOD 15-6 logique à relaisbloc fonctionnel

TOF 2-5 logique à relais

TOFR 2-16 texte structurébloc fonctionnel

TON 2-2 logique à relais

TONR 2-13 texte structurébloc fonctionnel

TOT une commande de procédé

texte structurébloc fonctionnel

TRN 15-11 logique à relaisbloc fonctionnel

TRUNC 15-11 texte structuré

Instruction Emplacement Langages

UID 10-20 logique à relaistexte structuré

UIE 10-20 logique à relaistexte structuré

UPDN une commande de procédé

texte structurébloc fonctionnel

UPPER 18-11 logique à relaistexte structuré

XIC 1-2 logique à relais

XIO 1-4 logique à relais

XOR 6-28 logique à relaistexte structurébloc fonctionnel

XPY 14-6 logique à relaistexte structurébloc fonctionnel

Instruction Emplacement Langages

Publication 1756-RM003F-FR-P - Mai 2002

Page 12: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6 Repérage des instructions

Notes :

Publication 1756-RM003F-FR-P - Mai 2002

Page 13: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Préface

Introduction Ce manuel fait partie d'une série de documents d'instructions sur les produits Logix.

A qui s’adresse ce manuel 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 données.

Si vous êtes un programmeur novice, lisez toutes les informations relatives à une instruction avant de l'utiliser. Les programmeurs expérimentés peuvent se reporter aux informations sur les instructions pour vérifier des détails.

Tâche/Objet Documents

Programmation de l'automate pour les applications séquentielles

Automate Logix5000 - Jeu d'instructions - Manuel de référence (publication 1756-RM003)

Programmation de l'automate pour les applications de procédé ou de variation de vitesse

Logix5000 Controllers Process Control and Drives Instructions Reference Manual (publication 1756-RM006)

Programmation de l'automate pour les applications de commande de mouvement

Logix5000 Controllers Motion Instructions Reference Manual (publication 1756-RM007)

Importation d'un fichier texte ou de points dans un projet

Logix5000 Controllers Import/Export Reference Manual (publication 1756-RM084)

Exportation d'un projet ou de points dans un fichier texte

Conversion d'une application PLC-5 ou SLC 500 en une application Logix5000

Automate Logix5550, conversion d'un programme PLC-5/SLC 500 en programme Logix5550 - Manuel de référence (publication 1756-RM085)

Vous êtes dans ce document

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 14: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

2 Préface

Objet de ce manuel Ce manuel fournit une description de chaque instruction dans le format suivant :

Les icônes suivantes aident à identifier les informations propres à un langage.

Cette section Fournit ce type d'information

Nom de l'instruction identifie l'instructiondétermine si l'instruction est une instruction d'entrée ou de sortie

Opérandes liste tous les opérandes de l'instruction

Structure de l'instruction indique les bits et les valeurs d'état de la commande de l'instruction, s'il y en a

Description décrit l'utilisation de l'instructiondéfinit les différences entre l'activation et la désactivation de l'instruction, si nécessaire

Indicateurs d'état arithmétique détermine si l'instruction a un effet sur les indicateurs d'état arithmétiquevoir l'annexe Attributs communs

Conditions d'erreur détermine si l'instruction génère des défauts mineurs ou majeursle cas échéant, définit le type et le code de défaut

Exécution définit le fonctionnement de l'instruction

Exemple fournit au moins un exemple de programmation pour chaque langage de programmation disponiblecomprend une description expliquant chaque exemple

si disponible en logique à relais, décrit les opérandes

si disponible en bloc fonctionnel, décrit les opérandes

Les connecteurs affichés sur un bloc fonctionnel par défaut sont ceux définis par défaut. Le tableau des opérandes répertorie tous les connecteurs possibles pour un bloc fonctionnel.

si disponible en texte structuré, décrit les opérandes

Cette icône Indique ce langage de programmation

logique à relais

texte structuré

bloc fonctionnel

Publication 1756-RM003F-FR-P - Mai 2002

Page 15: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Préface 3

Informations communes à toutes les instructions

Le jeu d'instructions de l'automate Logix5000 a des attributs communs.

Conventions et terminologie

Activer et effacer

Dans ce manuel, les termes « activer » et « effacer » sont utilisés pour définir l'état des bits (booléens) et leurs valeurs (non-booléennes).

Si un opérande ou un paramètre accepte plus d'un type de données, les types de données en gras indiquent les types de données optimaux. Une instruction est exécutée plus rapidement et demande moins de mémoire si tous les opérandes de l'instruction utilisent le même type de données optimal, généralement DINT ou REAL.

Condition de ligne de logique à relais

L’automate évalue les instructions à relais selon la condition de la ligne précédant l’instruction (état d'entrée de la ligne). Selon la condition d’entrée de la ligne et l’instruction, l’automate règle la condition de la ligne suivant l’instruction (état de sortie de la ligne), ce qui affecte toutes les instructions qui suivent.

Si l'état d’entrée de la ligne vers une instruction d’entrée est vrai, l’automate évalue l’instruction et règle l'état de sortie de la ligne selon le résultat de l’instruction. Si l'instruction est vraie, l'état de sortie de la

Pour des informations sur Voir cette annexe

les attributs communs l'annexe Attributs communs définit :• les indicateurs d'état arithmétique ;• les types de données ;• les mots-clés.

les attributs de bloc fonctionnel

l'annexe Attributs de bloc fonctionnel définit :• les commandes Programme et Opérateur ;• les modes de temporisation.

Ce terme Indique que

activer le bit est mis à 1 (ON)une valeur est attribuée à tout nombre autre que zéro

effacer le bit est mis à 0 (OFF)tous les bits d'une valeur sont mis à 0

instruction d’entrée

état d'entrée de la ligne

instruction de sortie

état de sortie de la ligne

Publication 1756-RM003F-FR-P - Mai 2002

Page 16: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4 Préface

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 spéciale 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'exécution d'instructions. L'automate exécute toutes les boucles FOR et les appels de sous-programmes. Si un sous-programme est appelé plus d'une fois, il est exécuté chaque fois qu'il est appelé. L'automate utilise la pré-scrutation et les instructions de logique à relais pour réinitialiser les E/S non rémanentes et les valeurs internes.

Pendant la pré-scrutation, les valeurs d'entrées ne sont pas actualisées et les sorties ne sont pas écrites. Les conditions suivantes génèrent une pré-scrutation :

• le passage du mode Programme (Program) au mode Exécution (Run) ;

• le passage automatique au mode Exécution à partir d'une condition de démarrage.

La pré-scrutation d'un programme ne se fait pas si :

• le programme est lancé alors que l'automate est déjà en mode Exécution ;

• le programme n'est pas lancé lorsque l'automate passe en mode Exécution (Run).

Etats de bloc fonctionnel

L'automate évalue les instructions de bloc fonctionnel en fonction de l'état de diverses conditions.

Condition possible Description

pré-scrutation La pré-scrutation des sous-programmes de blocs fonctionnels est la même que pour les sous-programmes en logique à relais. La seule différence réside dans le paramètre EnableIn de chaque instruction de bloc fonctionnel, qui est effacé pendant la pré-scrutation.

première scrutation de l'instruction

La première scrutation de l'instruction est la première exécution d'une instruction après la pré-scrutation. L'automate utilise la première scrutation de l'instruction pour lire les entrées en cours et déterminer l'état approprié dans lequel se mettre.

première exécution de l'instruction

La première exécution de l'instruction est la première exécution d'une instruction avec une nouvelle valeur de structure de données. L'automate utilise la première exécution de l'instruction pour générer des coefficients et d'autres enregistrements de données qui ne changent pas pour un bloc fonctionnel après le chargement initial.

Publication 1756-RM003F-FR-P - Mai 2002

Page 17: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Préface 5

Chaque instruction de bloc fonctionnel comprend également des paramètres EnableIn et EnableOut :

• les instructions de bloc fonctionnel sont exécutées normalement lorsque EnableIn est activé ;

• lorsque EnableIn est effacé, l'instruction de bloc fonctionnel exécute une logique de pré-scrutation, une logique de post-scrutation ou saute simplement l'exécution normale de l'algorithme ;

• EnableOut est identique à EnableIn ; cependant, si l'exécution du bloc fonctionnel détecte un dépassement, EnableOut est également effacé ;

• l'exécution 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 définissent des fonctionnalités spéciales, telles que la réinitialisation lorsque EnableIn passe d'effacé à activé. Pour les instructions de bloc fonctionnel avec des paramètres avec base de temps, lorsque le mode de temporisation est Oversample (suréchantillonnage), l'instruction reprend toujours là où elle a été interrompue lorsque EnableIn passe d'effacé à activé.

Si le paramètre EnableIn n'est pas câblé, l'instruction est toujours exécutée normalement et EnableIn reste activé. Si vous effacez EnableIn, il est activé lors de l'exécution suivante de l'instruction.

IMPORTANT Lorsque vous programmez en blocs fonctionnels, limitez la plage

des unités procédé à +/-10+/-15 car les calculs à virgule flottante internes sont effectués en virgule flottante simple précision. Les unités procédé en dehors de cette plage peuvent entraîner une perte de précision si les résultats approchent les limites de virgule

flottante simple précision (+/-10+/-38).

Publication 1756-RM003F-FR-P - Mai 2002

Page 18: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6 Préface

Notes :

Publication 1756-RM003F-FR-P - Mai 2002

Page 19: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Table des matières

Chapitre 1

Instructions sur bits(XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1Examine si contact fermé (XIC) . . . . . . . . . . . . . . . . . . . . . 1-2Examine si contact ouvert (XIO) . . . . . . . . . . . . . . . . . . . . 1-4Activation de sortie (OTE) . . . . . . . . . . . . . . . . . . . . . . . . . 1-6Verrouillage de sortie (OTL) . . . . . . . . . . . . . . . . . . . . . . . 1-7Déverrouillage de sortie (OTU) . . . . . . . . . . . . . . . . . . . . . 1-9Exécution sur front (ONS) . . . . . . . . . . . . . . . . . . . . . . . . . 1-11Impulsion front montant (OSR) . . . . . . . . . . . . . . . . . . . . . 1-14Impulsion front descendant (OSF) . . . . . . . . . . . . . . . . . . . 1-16Impulsion front montant avec entrée (OSRI) . . . . . . . . . . . 1-18Impulsion front descendant avec entrée (OSFI) . . . . . . . . . 1-20

Chapitre 2

Instructions de temporisation et de comptage(TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1Temporisateur à l'enclenchement (TON) . . . . . . . . . . . . . . 2-2Temporisateur au déclenchement (TOF) . . . . . . . . . . . . . . 2-5Temporisateur rémanent (RTO) . . . . . . . . . . . . . . . . . . . . . 2-9Temporisateur à l'enclenchement avec RAZ (TONR). . . . . . 2-13Temporisateur au déclenchement avec RAZ (TOFR) . . . . . . 2-16Temporisateur rémanent avec RAZ (RTOR) . . . . . . . . . . . . 2-19Comptage incrémental (CTU) . . . . . . . . . . . . . . . . . . . . . . 2-22Comptage décrémental (CTD) . . . . . . . . . . . . . . . . . . . . . . 2-25Comptage incrémental/décrémental (CTUD) . . . . . . . . . . . 2-29Remise à zéro (RES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-33

Chapitre 3

Instructions d'entrée/de sortie(MSG, GSV, SSV)

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1Message (MSG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2Codes d'erreur MSG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-8

Codes d'erreur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-8Codes d'erreur étendus . . . . . . . . . . . . . . . . . . . . . . . . 3-9Codes d'erreur PLC et SLC (.ERR) . . . . . . . . . . . . . . . . . 3-11Codes d'erreur de bloc-transfert . . . . . . . . . . . . . . . . . . 3-12

Spécification de la configuration . . . . . . . . . . . . . . . . . . . . 3-13Spécification des messages de lecture et d'écriture du fichier de données CIP . . . . . . . . . . . . . . . . . . . . . . 3-14Reconfiguration d'un module d'E/S. . . . . . . . . . . . . . . . 3-14Définition des messages CIP génériques . . . . . . . . . . . . 3-16Définition des messages PLC-5 . . . . . . . . . . . . . . . . . . . 3-17Définition des messages SLC . . . . . . . . . . . . . . . . . . . . 3-18Définition des messages de blocs-transferts . . . . . . . . . . 3-19Définition des messages PLC-3 . . . . . . . . . . . . . . . . . . . 3-20Définition des messages PLC-2 . . . . . . . . . . . . . . . . . . . 3-21

Exemples de configuration MSG . . . . . . . . . . . . . . . . . . . . 3-22Définition de la communication. . . . . . . . . . . . . . . . . . . . . 3-23

Définition d'un chemin . . . . . . . . . . . . . . . . . . . . . . . . 3-23

vii Publication 1756-RM003F-FR-P - Mai 2002

Page 20: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

viii Table des matières

Définition d'une méthode de communication ou d'une adresse de module . . . . . . . . . . . . . . . . . . . . . . . 3-27Choix d'une option de cache . . . . . . . . . . . . . . . . . . . . 3-28

Lire la valeur système (GSV) et Définir la valeur système (SSV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-30Objets GSV/SSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-32

Accès à l'objet CONTROLLER . . . . . . . . . . . . . . . . . . . . 3-32Accès à l'objet CONTROLLERDEVICE . . . . . . . . . . . . . . 3-33Accès à l'objet CST. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-35Accès à l'objet DF1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-36Accès à l'objet FAULTLOG . . . . . . . . . . . . . . . . . . . . . . 3-39Accès à l'objet MESSAGE . . . . . . . . . . . . . . . . . . . . . . . 3-40Accès à l'objet MODULE . . . . . . . . . . . . . . . . . . . . . . . 3-42Accès à l'objet MOTIONGROUP . . . . . . . . . . . . . . . . . . 3-43Accès à l'objet PROGRAM . . . . . . . . . . . . . . . . . . . . . . 3-44Accès à l'objet ROUTINE . . . . . . . . . . . . . . . . . . . . . . . 3-45Accès à l'objet SERIALPORT . . . . . . . . . . . . . . . . . . . . . 3-45Accès à l'objet TASK . . . . . . . . . . . . . . . . . . . . . . . . . . 3-47Accès à l'objet WALLCLOCKTIME . . . . . . . . . . . . . . . . . 3-47

Exemple de programmation GSV/SSV . . . . . . . . . . . . . . . . 3-49Obtenir des informations sur les défauts . . . . . . . . . . . . 3-49Configuration de marqueurs d'activation et de désactivation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-50

Chapitre 4

Instructions de comparaison(CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1Comparaison (CMP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2

Expressions CMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4Opérateurs valables . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4Formatage des expressions. . . . . . . . . . . . . . . . . . . . . . 4-4Définition de l'ordre d'exécution des opérations . . . . . . 4-5Utilisation de chaînes dans une expression . . . . . . . . . . 4-6

Egal à (EQU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-7Supérieur ou égal à (GEQ) . . . . . . . . . . . . . . . . . . . . . . . . 4-11Supérieur à (GRT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-15Inférieur ou égal à (LEQ). . . . . . . . . . . . . . . . . . . . . . . . . . 4-19Inférieur à (LES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-23Test sur limites (LIM). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-27Egalité avec masque (MEQ). . . . . . . . . . . . . . . . . . . . . . . . 4-33

Entrée d'une valeur de masque immédiate . . . . . . . . . . 4-34Différent de (NEQ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-38

Chapitre 5

Instructions de calcul/mathématiques(CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-1Calcul (CPT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2

Opérateurs valables . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-4Formatage des expressions. . . . . . . . . . . . . . . . . . . . . . 5-4Définition de l'ordre d'exécution des opérations . . . . . . 5-4

Publication 1756-RM003F-FR-P - Mai 2002

Page 21: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Table des matières ix

Addition (ADD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-6Soustraction (SUB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-9Multiplication (MUL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-12Division (DIV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-15Modulo (MOD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-19Racine carrée (SQR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-23Négation (NEG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-26Valeur absolue (ABS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-29

Chapitre 6

Instructions de transfert/logiques(MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1Transfert (MOV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-3Transfert avec masque (MVM) . . . . . . . . . . . . . . . . . . . . . . 6-5

Entrée d'une valeur de masque immédiate . . . . . . . . . . 6-6Transfert avec masque et cible (MVMT) . . . . . . . . . . . . . . . 6-8Distribution d'un champ de bits (BTD) . . . . . . . . . . . . . . . 6-11Distribution d'un champ de bits avec cible (BTDT). . . . . . . 6-14Effacer (CLR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-17Permutation d'octets (SWPB) . . . . . . . . . . . . . . . . . . . . . . . 6-18ET sur bits (AND) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-22OU sur bits (OR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-25OU exclusif sur bits (XOR) . . . . . . . . . . . . . . . . . . . . . . . . 6-28COMPLEMENT sur bits (NOT) . . . . . . . . . . . . . . . . . . . . . . 6-31ET booléen (BAND) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-34OU booléen (BOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-37OU exclusif booléen (BXOR). . . . . . . . . . . . . . . . . . . . . . . 6-40COMPLEMENT booléen (BNOT) . . . . . . . . . . . . . . . . . . . . 6-42

Chapitre 7

Instructions sur tableau (fichier)/Instructions diverses(FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-1Sélection du mode de fonctionnement . . . . . . . . . . . . . . . . 7-2

Mode Tout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-2Mode Numérique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-3Mode Incrémental . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-5

Fichier arithmétique et logique (FAL) . . . . . . . . . . . . . . . . . 7-7Expressions FAL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-16Opérateurs valables . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-16Formatage des expressions. . . . . . . . . . . . . . . . . . . . . . 7-17Définition de l'ordre d'exécution des opérations . . . . . . 7-17

Recherche et comparaison de fichiers (FSC) . . . . . . . . . . . . 7-18Expressions FSC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-22Opérateurs valables . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-23Formatage des expressions. . . . . . . . . . . . . . . . . . . . . . 7-23Définition de l'ordre d'exécution des opérations . . . . . . 7-24Utilisation de chaînes dans une expression . . . . . . . . . . 7-25

Copie de fichier (COP) Copie de fichier synchrone (CPS) . . 7-26Remplissage de fichier (FLL) . . . . . . . . . . . . . . . . . . . . . . . 7-32Moyenne (AVE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-36

Publication 1756-RM003F-FR-P - Mai 2002

Page 22: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

x Table des matières

Tri de fichier (SRT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-41Ecart type de fichier (STD) . . . . . . . . . . . . . . . . . . . . . . . . 7-46Taille en éléments (SIZE). . . . . . . . . . . . . . . . . . . . . . . . . . 7-52

Chapitre 8

Instructions sur tableau (fichier)/décalage(BSL, BSR, FFL, FFU, LFL, LFU)

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-1Décalage binaire à gauche (BSL) . . . . . . . . . . . . . . . . . . . . 8-2Décalage binaire à droite (BSR) . . . . . . . . . . . . . . . . . . . . . 8-5Chargement FIFO (FFL). . . . . . . . . . . . . . . . . . . . . . . . . . . 8-8Déchargement FIFO (FFU) . . . . . . . . . . . . . . . . . . . . . . . . 8-14Chargement LIFO (LFL) . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-20Déchargement LIFO (LFU). . . . . . . . . . . . . . . . . . . . . . . . . 8-26

Chapitre 9

Instructions séquenceur(SQI, SQO, SQL)

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-1Entrée séquenceur (SQI) . . . . . . . . . . . . . . . . . . . . . . . . . . 9-2

Entrée d'une valeur de masque immédiate . . . . . . . . . . 9-3Utilisation de SQI sans SQO . . . . . . . . . . . . . . . . . . . . . 9-5

Sortie séquenceur (SQO). . . . . . . . . . . . . . . . . . . . . . . . . . 9-6Entrée d'une valeur de masque immédiate . . . . . . . . . . 9-7Utilisation de SQI avec SQO. . . . . . . . . . . . . . . . . . . . . 9-9Remise à zéro de la position de SQO . . . . . . . . . . . . . . 9-9

Chargement séquenceur (SQL) . . . . . . . . . . . . . . . . . . . . . 9-10

Chapitre 10

Instructions de commande de programme(JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-1Saut vers étiquette (JMP)Etiquette (LBL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-2Saut vers sous-programme (JSR)Sous-programme (SBR)Retour (RET). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-4Saut vers sous-programme externe (JXR) . . . . . . . . . . . . . 10-13Fin temporaire (TND) . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-16Relais de contrôle maître (MCR). . . . . . . . . . . . . . . . . . . . 10-18Désactivation de l'interruption utilisateur (UID) Activation d'interruption utilisateur (UIE) . . . . . . . . . . . . . 10-20Toujours faux (AFI). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-22Pas d'opération (NOP) . . . . . . . . . . . . . . . . . . . . . . . . . . 10-23Fin de transition (EOT) . . . . . . . . . . . . . . . . . . . . . . . . . . 10-24Pause SFC (SFP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-26Positionnement SFC (SFR) . . . . . . . . . . . . . . . . . . . . . . . . 10-28

Chapitre 11

Instruction pour/d'interruption(FOR, FOR...DO, BRK, EXIT, RET)

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-1Pour (FOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-2Interruption (BRK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-4Retour (RET). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-5

Publication 1756-RM003F-FR-P - Mai 2002

Page 23: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Table des matières xi

Chapitre 12

Instructions spéciales(FBC, DDT, DTR, PID)

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-1Comparaison des bits de fichier (FBC) . . . . . . . . . . . . . . . . 12-2

Sélection du mode de recherche. . . . . . . . . . . . . . . . . . 12-3Détection par diagnostic (DDT) . . . . . . . . . . . . . . . . . . . . . 12-9

Sélection du mode de recherche. . . . . . . . . . . . . . . . . 12-11Transition de données (DTR). . . . . . . . . . . . . . . . . . . . . . 12-16

Entrée d'une valeur de masque immédiate . . . . . . . . . 12-16Proportionnel, intégral et dérivé (PID) . . . . . . . . . . . . . . . 12-19Configuration d'une instruction PID . . . . . . . . . . . . . . . . . 12-23

Spécification des réglages. . . . . . . . . . . . . . . . . . . . . . 12-24Définition de la configuration. . . . . . . . . . . . . . . . . . . 12-24Définition des alarmes . . . . . . . . . . . . . . . . . . . . . . . . 12-25Définition de la mise à l'échelle . . . . . . . . . . . . . . . . . 12-25

Utilisation des instructions PID . . . . . . . . . . . . . . . . . . . . 12-26Anti-saturation de l'action intégrale et transfert sans à-coup de manuel à auto . . . . . . . . . . . . . . . . . . 12-28Temporisation de l'instruction PID . . . . . . . . . . . . . . . 12-29Redémarrage sans à-coups . . . . . . . . . . . . . . . . . . . . . 12-32Lissage de la dérivée . . . . . . . . . . . . . . . . . . . . . . . . . 12-33Configuration de la zone morte . . . . . . . . . . . . . . . . . 12-33Utilisation de la limite de sortie . . . . . . . . . . . . . . . . . 12-34Anticipation de vitesse ou décalage de sortie . . . . . . . 12-34Mises de boucles en cascade . . . . . . . . . . . . . . . . . . . 12-35Contrôle de ratio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-35

Théorie PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-37Processus PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-37Processus PID avec boucles maître/esclave . . . . . . . . . 12-37

Chapitre 13

Instructions trigonométriques(SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-1Sinus (SIN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-2Cosinus (COS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-4Tangente (TAN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-6Sinus d'arc (ASN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-8Cosinus d'arc (ACS). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-10Tangente d'arc (ATN) . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-12

Chapitre 14

Instructions mathématiques évoluées(LN, LOG, XPY)

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-1Logarithme naturel (LN) . . . . . . . . . . . . . . . . . . . . . . . . . . 14-2Logarithme décimal (LOG) . . . . . . . . . . . . . . . . . . . . . . . . 14-4X à la puissance Y (XPY) . . . . . . . . . . . . . . . . . . . . . . . . . 14-6

Publication 1756-RM003F-FR-P - Mai 2002

Page 24: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

xii Table des matières

Chapitre 15

Instructions de conversion mathématique(DEG, RAD, TOD, FRD, TRN, TRUNC)

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-1Degrés (DEG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-2Radians (RAD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-4Conversion en DCB (TOD) . . . . . . . . . . . . . . . . . . . . . . . . 15-6Conversion en nombre entier (FRD) . . . . . . . . . . . . . . . . . 15-9Troncation (TRN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-11

Chapitre 16

Instructions port série ASCII(ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-1Exécution de l'instruction . . . . . . . . . . . . . . . . . . . . . . . 16-2Codes d'erreur ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . 16-4Types de données chaîne. . . . . . . . . . . . . . . . . . . . . . . 16-4

Test ASCII du buffer (ABL) . . . . . . . . . . . . . . . . . . . . . . . . 16-5Caractères ASCII dans buffer (ACB) . . . . . . . . . . . . . . . . . . 16-8Effacement buffer ASCII (ACL). . . . . . . . . . . . . . . . . . . . . 16-10Lignes d'échange ASCII (AHL) . . . . . . . . . . . . . . . . . . . . . 16-12Lecture ASCII (ARD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-16Ligne de lecture ASCII (ARL) . . . . . . . . . . . . . . . . . . . . . . 16-19Ajout d'écriture ASCII (AWA). . . . . . . . . . . . . . . . . . . . . . 16-23Ecriture ASCII (AWT) . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-27

Chapitre 17

Instructions de chaîne ASCII(CONCAT, DELETE, FIND, INSERT, MID)

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-1Types de données chaîne. . . . . . . . . . . . . . . . . . . . . . . 17-2

Concaténation de chaînes (CONCAT). . . . . . . . . . . . . . . . . 17-3Effacement dans une chaîne (DELETE) . . . . . . . . . . . . . . . 17-5Recherche de chaîne (FIND) . . . . . . . . . . . . . . . . . . . . . . . 17-7 Insérer chaîne (INSERT) . . . . . . . . . . . . . . . . . . . . . . . . . . 17-9Copie dans une chaîne (MID) . . . . . . . . . . . . . . . . . . . . . 17-11

Chapitre 18

Instructions de conversion ASCII(STOD, STOR, DTOS, RTOS, UPPER, LOWER)

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-1Types de données chaîne. . . . . . . . . . . . . . . . . . . . . . . 18-2

Chaîne vers DINT (STOD) . . . . . . . . . . . . . . . . . . . . . . . . . 18-3Chaîne vers REAL (STOR) . . . . . . . . . . . . . . . . . . . . . . . . . 18-5DINT vers chaîne (DTOS) . . . . . . . . . . . . . . . . . . . . . . . . . 18-7REAL vers chaîne (RTOS) . . . . . . . . . . . . . . . . . . . . . . . . . 18-9Majuscule (UPPER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-11Minuscule (LOWER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-13

Publication 1756-RM003F-FR-P - Mai 2002

Page 25: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Table des matières xiii

Annexe A

Attributs communs Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-1Valeurs immédiates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-1Conversions de données . . . . . . . . . . . . . . . . . . . . . . . . . . A-1

SINT ou INT en DINT . . . . . . . . . . . . . . . . . . . . . . . . . A-3Nombre entier en REAL . . . . . . . . . . . . . . . . . . . . . . . . A-4DINT en SINT ou INT . . . . . . . . . . . . . . . . . . . . . . . . . A-5REAL en nombre entier . . . . . . . . . . . . . . . . . . . . . . . . A-5

Annexe B

Attributs de bloc fonctionnel Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-1Verrouillage des données . . . . . . . . . . . . . . . . . . . . . . . . . B-1Ordre d'exécution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-3Réponses de bloc fonctionnel aux conditions de dépassement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-5Modes de temporisation . . . . . . . . . . . . . . . . . . . . . . . . . . B-5

Paramètres d'instruction communs pour les modes de temporisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-7Présentation des modes de temporisation . . . . . . . . . . . B-9

Commande Programme/Opérateur . . . . . . . . . . . . . . . . . B-10

Annexe C

Programmation en texte structuré

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-1Syntaxe du texte structuré . . . . . . . . . . . . . . . . . . . . . . . . . C-1Affectations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-2

Spécification d'une affectation non rémanente. . . . . . . . C-3Attribution d'un caractère ASCII à une chaîne . . . . . . . . C-4

Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-4Utilisation d'opérateurs et de fonctions arithmétiques . . C-5Utilisation d'opérateurs de relation . . . . . . . . . . . . . . . . C-7Utilisation d'opérateurs logiques . . . . . . . . . . . . . . . . . . C-8Utilisation d'opérateurs sur bits. . . . . . . . . . . . . . . . . . . C-9Détermination de l'ordre d'exécution . . . . . . . . . . . . . C-10

Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-10Instructions de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-11IF...THEN (SI... ALORS) . . . . . . . . . . . . . . . . . . . . . . . . . . C-12CASE...OF (EN FONCTION... DE) . . . . . . . . . . . . . . . . . . C-15FOR…DO (POUR... FAIRE) . . . . . . . . . . . . . . . . . . . . . . . C-17WHILE…DO (TANT QUE... FAIRE) . . . . . . . . . . . . . . . . . C-20REPEAT…UNTIL (REPETER... JUSQU'A). . . . . . . . . . . . . . C-23Commentaires. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-26

Codes des caractères ASCII

Publication 1756-RM003F-FR-P - Mai 2002

Page 26: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

xiv Table des matières

Publication 1756-RM003F-FR-P - Mai 2002

Page 27: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Chapitre 1

Instructions sur bits(XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Introduction Utilisez les instructions sur bits (type à relais) pour surveiller et commander l'état des bits.

Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page

activer les sorties lorsqu'un bit est activé XIC logique à relaistexte structuré(1)

1-2

activer les sorties lorsqu'un bit est effacé XIO logique à relaistexte structuré(1)

1-4

activer un bit OTE logique à relaistexte structuré(1)

1-6

activer un bit (rémanent) OTL logique à relaistexte structuré(1)

1-7

effacer un bit (rémanent) OTU logique à relaistexte structuré(1)

1-9

activer les sorties pour une scrutation chaque fois qu'une ligne devient vraie

ONS logique à relaistexte structuré(1)

1-11

activer un bit pour une scrutation chaque fois qu'une ligne devient vraie

OSR logique à relais 1-14

activer un bit pour une scrutation chaque fois qu'une ligne devient fausse

OSF logique à relais 1-16

activer un bit pour une scrutation chaque fois que le bit d'entrée est activé dans le bloc fonctionnel

OSRI texte structurébloc fonctionnel

1-18

activer un bit pour une scrutation chaque fois que le bit d'entrée est effacé dans le bloc fonctionnel

OSFI texte structurébloc fonctionnel

1-20

(1) Il n'existe pas d'instruction équivalente en texte structuré. Utilisez une autre programmation en texte structuré pour obtenir le même résultat. Voir la description de l'instruction.

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 28: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

1-2 Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Examine si contact fermé (XIC)

L'instruction XIC vérifie si le bit de données est activé.

Opérandes :

Logique à relais

Texte structuré

Il n'y a pas d'instruction XIC en texte structuré, mais vous pouvez obtenir le même résultat 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 vérifie si le bit de données est activé.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Opérande Type Format Description

bit de données BOOL point bit à tester

Condition Action de la logique à relais

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

examine le bit de données

bit de données = 0

bit de données = 1

l'état de sortie de la ligne est réglé sur faux

l'état de sortie de la ligne est réglé sur vrai

si l'état d'entrée de la ligne est vrai

fin

Publication 1756-RM003F-FR-P - Mai 2002

Page 29: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-3

Exemple 1 : Si limit_switch_1 est activé, l'instruction suivante est activée (l'état de sortie de la ligne est vrai).

Logique à relais

Texte structuré

IF limit_switch THEN

<instruction>;

END_IF;

Exemple 2 : Si S:V est activé (indique qu'un dépassement supérieur s'est produit), l'instruction suivante est activée (l'état de sortie de la ligne est vrai).

Logique à relais

Texte structuré

IF S:V THEN

<instruction>;

END_IF;

Publication 1756-RM003F-FR-P - Mai 2002

Page 30: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

1-4 Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Examine si contact ouvert (XIO)

L'instruction XIO vérifie si le bit de données est effacé.

Opérandes :

Logique à relais

Texte structuré

Il n'y a pas d'instruction XIO en texte structuré, mais vous pouvez obtenir le même résultat 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 vérifie si le bit de données est effacé.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Opérande Type Format Description

bit de données BOOL point bit à tester

Condition Action de la logique à relais

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

examine le bit de données

bit de données = 0

bit de données = 1

l'état de sortie de la ligne est réglé sur vrai

l'état de sortie de la ligne est réglé sur faux

si l'état d'entrée de la ligne est vrai

fin

Publication 1756-RM003F-FR-P - Mai 2002

Page 31: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-5

Exemple 1 : Si limit_switch_2 est effacé, l'instruction suivante est activée (l'état de sortie de la ligne est vrai).

Logique à relais

Texte structuré

IF NOT limit_switch_2 THEN

<instruction>;

END_IF;

Exemple 2 : Si S:V est effacé (indique qu'un dépassement supérieur s'est produit), l'instruction suivante est activée (l'état de sortie de la ligne est vrai).

Logique à relais

Texte structuré

IF NOT S:V THEN

<instruction>;

END_IF;

Publication 1756-RM003F-FR-P - Mai 2002

Page 32: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

1-6 Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Activation de sortie (OTE) L'instruction OTE active ou efface le bit de données.

Opérandes :

Logique à relais

Texte structuré

Il n'y a pas d'instruction OTE en texte structuré, mais vous pouvez obtenir le même résultat en utilisant une affectation non rémanente.

data_bit [:=] expression_booléenne;

Pour des informations sur la syntaxe des affectations et expressions en texte structuré, reportez-vous à l'Annexe C.

Description : Lorsque l'instruction OTE est activée, l'automate active le bit de données. Lorsque l'instruction OTE est désactivée, l'automate efface le bit de données.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

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;

Opérande Type Format Description

bit de données BOOL point bit à activer ou à effacer

Condition Action de la logique à relais

pendant la pré-scrutation Le bit de données est effacé.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux Le bit de données est effacé.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai Le bit de données est activé.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation Le bit de données est effacé.L'état de sortie de la ligne est réglé sur faux.

Publication 1756-RM003F-FR-P - Mai 2002

Page 33: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-7

Verrouillage de sortie (OTL) L'instruction OTL active (verrouille) le bit de données.

Opérandes :

Logique à relais

Texte structuré

Il n'y a pas d'instruction OTL en texte structuré, mais vous pouvez obtenir le même résultat en utilisant une instruction de test IF...THEN (SI...ALORS) et une affectation.

IF expression_booléenne 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.

Description : Lorsqu'elle est activée, l'instruction OTL active le bit de données. Ce bit de données reste activé jusqu'à ce qu'il soit effacé, généralement par une instruction OTU. Lorsqu'elle est désactivée, l'instruction OTL ne change pas l'état du bit de données.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Opérande Type Format Description

bit de données BOOL point bit à activer

Condition Action de la logique à relais

pendant la pré-scrutation Le bit de données n'est pas modifié.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux Le bit de données n'est pas modifié.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai Le bit de données est activé.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation Le bit de données n'est pas modifié.L'état de sortie de la ligne est réglé sur faux.

Publication 1756-RM003F-FR-P - Mai 2002

Page 34: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

1-8 Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Exemple : Lorsqu'elle est activée, l'instruction OTL active light_2. Ce bit reste activé jusqu'à ce qu'il soit effacé, généralement par une instruction OTU.

Logique à relais

Texte structuré

IF expression_booléenne THEN

light_2 := 1;

END_IF;

Publication 1756-RM003F-FR-P - Mai 2002

Page 35: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-9

Déverrouillage de sortie (OTU)

L'instruction OTU efface (déverrouille) le bit de données.

Opérandes :

Logique à relais

Texte structuré

Il n'y a pas d'instruction OTU en texte structuré, mais vous pouvez obtenir le même résultat en utilisant une instruction de test IF...THEN (SI...ALORS) et une affectation.

IF expression_booléenne 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.

Description : Lorsqu'elle est activée, l'instruction OTU efface le bit de données. Lorsqu'elle est désactivée, l'instruction OTU ne change pas l'état du bit de données.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Opérande Type Format Description

bit de données BOOL point bit à effacer

Condition Action de la logique à relais

pendant la pré-scrutation Le bit de données n'est pas modifié.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux Le bit de données n'est pas modifié.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai Le bit de données est effacé.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation Le bit de données n'est pas modifié.L'état de sortie de la ligne est réglé sur faux.

Publication 1756-RM003F-FR-P - Mai 2002

Page 36: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

1-10 Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Exemple : Lorsqu'elle est activée, l'instruction OTU efface light_2.

Logique à relais

Texte structuré

IF expression_booléenne THEN

light_2 := 0;

END_IF;

Publication 1756-RM003F-FR-P - Mai 2002

Page 37: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-11

Exécution sur front (ONS) L'instruction ONS active ou désactive le reste de la ligne, selon l'état du bit de stockage.

Opérandes :

Logique à relais

Texte structuré

Il n'y a pas d'instruction ONS en texte structuré, mais vous pouvez obtenir le même résultat en utilisant une instruction de test IF...THEN (SI...ALORS).

IF expression_booléenne AND NOT storage_bit THEN

<instruction>;

END_IF;

storage_bit := expression_booléenne;

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 activée et que le bit de stockage est effacé, l'instruction ONS active le reste de la ligne. Lorsqu'elle est désactivée ou lorsque le bit de stockage est activé, l'instruction ONS désactive le reste de la ligne.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Opérande Type Format Description

bit de stockage

BOOL point bit de mémoire interneenregistre l'état d'entrée de la ligne de la dernière exécution de l'instruction

Publication 1756-RM003F-FR-P - Mai 2002

Page 38: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

1-12 Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Exécution :

Exemple : Une instruction ONS est généralement précédée d'une instruction d'entrée car pour qu'elle fonctionne correctement, vous devez la scruter lorsqu'elle est activée et lorsqu'elle est désactivée. Une fois l'instruction ONS activée, l'état d'entrée de la ligne doit être effacé ou le bit de stockage effacé pour que l'instruction ONS soit de nouveau activée.

Condition Action de la logique à relais

pendant la pré-scrutation Le bit de stockage est activé pour empêcher un déclenchement incorrect pendant la première scrutation.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux Le bit de stockage est effacé.L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation Le bit de stockage est effacé.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai

fin

examine le bit de stockage

bit de stockage = 0

bit de stockage = 1

le bit de stockage est activél'état de sortie de la ligne

est réglé sur vrai

le bit de stockage reste activé

l'état de sortie de la ligne est réglé sur faux

Publication 1756-RM003F-FR-P - Mai 2002

Page 39: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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 même 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;

Publication 1756-RM003F-FR-P - Mai 2002

Page 40: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

1-14 Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Impulsion front montant (OSR)

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).

Opérandes :

Logique à relais

Description : Lorsqu'elle est activée et que le bit de stockage est effacé, l'instruction OSR active le bit de sortie. Lorsqu'elle est activée et que le bit de stockage est activé, ou lorsqu'elle est désactivée, l'instruction OSR efface le bit de sortie.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Opérande Type Format Description

bit de stockage

BOOL point bit de mémoire interneenregistre l'état d'entrée de la ligne de la dernière exécution de l'instruction

bit de sortie BOOL point bit à activer

état d'entrée de la ligne

bit de stockage

bit de sortie

l'instruction estexécutée

l'instruction est réinitialisée lors de la scrutation suivante

Publication 1756-RM003F-FR-P - Mai 2002

Page 41: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-15

Exécution :

Exemple : Chaque fois que limit_switch_1 passe d'effacé à activé, l'instruction OSR active output_bit_1 et l'instruction ADD augmente sum de 5. Tant que limit_switch_1 reste activé, sum garde la même valeur. limit_switch_1 doit repasser d'effacé à activé pour que sum augmente à nouveau. Vous pouvez utiliser output_bit_1 sur plusieurs lignes pour déclencher d'autres opérations.

Condition Action de la logique à relais

pendant la pré-scrutation Le bit de stockage est activé pour empêcher un déclenchement incorrect pendant la première scrutation.Le bit de sortie est effacé.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux Le bit de stockage est effacé.Le bit de sortie n'est pas modifié.L'état de sortie de la ligne est réglé sur faux.

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 réglé sur faux.

si l'état d'entrée de la ligne est vrai

fin

examine le bit de stockage

bit de stockage = 0

bit de stockage = 1

le bit de stockage est activéle bit de sortie est activél'état de sortie de la ligne

est réglé sur vrai

le bit de stockage reste activéle bit de sortie est effacé

l'état de sortie de la ligne est réglé sur vrai

Publication 1756-RM003F-FR-P - Mai 2002

Page 42: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

1-16 Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Impulsion front descendant (OSF)

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).

Opérandes :

Opérandes de logique à relais

Description : Lorsqu'elle est désactivée et que le bit de stockage est activé, l'instruction OSF active le bit de sortie. Lorsqu'elle est désactivée et que le bit de stockage est effacé, ou lorsqu'elle est activée, l'instruction OSF efface le bit de sortie.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Opérande Type Format Description

bit de stockage

BOOL point bit de mémoire interneenregistre l'état d'entrée de la ligne de la dernière exécution de l'instruction

bit de sortie BOOL point bit à activer

état d'entrée de la ligne

bit de stockage

bit de sortie

l'instruction estexécutée

l'instruction est réinitialisée pendant la

scrutation suivante

Publication 1756-RM003F-FR-P - Mai 2002

Page 43: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-17

Exécution :

Exemple : Chaque fois que limit_switch_1 passe d'activé à effacé, l'instruction OSF active output_bit_2 et l'instruction ADD augmente sum de 5. Tant que limit_switch_1 reste effacé, sum garde la même valeur. limit_switch_1 doit repasser d'activé à effacé pour que sum augmente à nouveau. Vous pouvez utiliser output_bit_2 sur plusieurs lignes pour déclencher d'autres opérations.

Condition Action de la logique à relais

pendant la pré-scrutation Le bit de stockage est désactivé pour empêcher un déclenchement incorrect pendant la première scrutation.Le bit de sortie est effacé.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai Le bit de stockage est activé.Le bit de sortie est effacé.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation Voir l'état d'entrée de la ligne réglé sur faux ci-dessus.

si l'état d'entrée de la ligne est faux

fin

examine le bit de stockage

bit de stockage = 0

bit de stockage = 1

le bit de stockage reste effacé

le bit de sortie est effacél'état de sortie de la ligne est

réglé sur faux

le bit de stockage est effacé

le bit de sortie est activél'état de sortie de la ligne

est réglé sur faux

Publication 1756-RM003F-FR-P - Mai 2002

Page 44: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

1-18 Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Impulsion front montant avec entrée (OSRI)

L'instruction OSRI active le bit de sortie pour une exécution lorsque le bit d'entrée passe d'effacé à activé.

Cette instruction existe en logique à relais comme instruction OSR (voir page 1-14).

Opérandes :

Texte structuré

Bloc fonctionnel

Structure FBD_ONESHOT

Description : Lorsque InputBit est activé et InputBitn-1 effacé, l'instruction OSRI

active OutputBit. Lorsque InputBitn-1 est activé ou lorsque InputBit est

effacé, l'instruction OSRI efface OutputBit.

Opérande Type Format Description

point OSRI FBD_ONESHOT structure structure OSRI

Opérande Type Format Description

point OSRI FBD_ONESHOT structure structure OSRI

OSRI(OSRI_tag);

Paramètre d'entrée Type de données Description

EnableIn BOOL Bloc fonctionnel :Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Si activé, l'instruction est exécutée.Activé par défaut.Texte structuré :Aucun effet. L'instruction est exécutée.

InputBit BOOL Bit d'entrée. Ceci est équivalent à l'état de la ligne pour l'instruction logique à relais OSR.Effacé par défaut.

Paramètre de sortie Type de données Description

EnableOut BOOL L'instruction a fourni un résultat correct.

OutputBit BOOL Bit de sortie

InputBit

OutputBit

l'instruction estexécutée

l'instruction est réinitialisée lors de la scrutation suivante

InputBitn-1

Publication 1756-RM003F-FR-P - Mai 2002

Page 45: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-19

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Exemple : Lorsque limit_switch1 passe d'effacé à activé, l'instruction OSRI active OutputBit pour une scrutation.

Texte structuré

OSRI_01.InputBit := limit_switch1;

OSRI(OSRI_01);

State := OSRI_01.OutputBit;

Bloc fonctionnel

Condition Action du bloc fonctionnel Action du texte structuré

pendant la pré-scrutation Aucune. Aucune.

pendant la première scrutation de l'instruction

InputBitn-1 est activé. InputBitn-1 est activé.

pendant la première exécution de l'instruction

InputBitn-1 est activé. InputBitn-1 est activé.

si EnableIn est effacé EnableOut est effacé, l'instruction ne fait rien et les sorties ne sont pas actualisées.

-

si EnableIn est activé Lorsque InputBit passe d'effacé à activé, l'instruction active InputBitn-1.L'instruction est exécutée.EnableOut est activé.

Lorsque InputBit passe d'effacé à activé, l'instruction active InputBitn-1.EnableIn est toujours activé.L'instruction est exécutée.

pendant la post-scrutation Aucune. Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 46: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

1-20 Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Impulsion front descendant avec entrée (OSFI)

L'instruction OSFI active OutputBit pour une exécution lorsque InputBit passe d'activé à effacé.

Cette instruction existe en logique à relais comme instruction OSF (voir page 1-16).

Opérandes :

Texte structuré

Bloc fonctionnel

Structure FBD_ONESHOT

Description : Lorsque InputBit est effacé et InputBitn-1 activé, l'instruction OSFI

active OutputBit. Lorsque InputBitn-1 est effacé ou lorsque InputBit est

activé, l'instruction OSFI efface OutputBit.

Opérande Type Format Description

point OSFI FBD_ONESHOT structure structure OSFI

Opérande Type Format Description

point OSFI FBD_ONESHOT structure structure OSFI

OSFI(OSFI_tag);

Paramètre d'entrée Type de données Description

EnableIn BOOL Bloc fonctionnel :Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Si activé, l'instruction est exécutée.Activé par défaut.Texte structuré :Aucun effet. L'instruction est exécutée.

InputBit BOOL Bit d'entrée. Ceci est équivalent à l'état de la ligne pour l'instruction logique à relais OSF.Effacé par défaut.

Paramètre de sortie Type de données Description

EnableOut BOOL L'instruction a fourni un résultat correct.

OutputBit BOOL bit de sortie

InputBit

OutputBit

l'instruction estexécutée

l'instruction est réinitialisée lors de la scrutation suivante

InputBit n-1

40047

Publication 1756-RM003F-FR-P - Mai 2002

Page 47: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-21

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Exemple : Lorsque limit_switch1 passe d'activé à effacé, l'instruction OSFI active OutputBit pour une scrutation.

Texte structuré

OSFI_01.InputBit := limit_switch1;

OSFI(OSFI_01);

Output_state := OSFI_01.OutputBit;

Bloc fonctionnel

Condition Action du bloc fonctionnel Action du texte structuré

pendant la pré-scrutation Aucune. Aucune.

pendant la première scrutation de l'instruction

InputBitn-1 est effacé. InputBitn-1 est effacé.

pendant la première exécution de l'instruction

InputBitn-1 est effacé. InputBitn-1 est effacé.

si EnableIn est effacé EnableOut est effacé, l'instruction ne fait rien et les sorties ne sont pas actualisées.

-

si EnableIn est activé Lorsque InputBit passe d'effacé à activé, l'instruction efface InputBitn-1.L'instruction est exécutée.EnableOut est activé.

Lorsque InputBit passe de désactivé à activé, l'instruction efface InputBitn-1.EnableIn est toujours activé.L'instruction est exécutée.

pendant la post-scrutation Aucune. Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 48: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

1-22 Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Notes :

Publication 1756-RM003F-FR-P - Mai 2002

Page 49: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Chapitre 2

Instructions de temporisation et de comptage(TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Introduction Les temporisateurs et les compteurs commandent les opérations en fonction du temps ou du nombre d'événements.

La base de temps de tous les temporisateurs est 1 ms.

Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page

mesurer le temps pendant lequel un temporisateur est actif

TON logique à relais 2-2

mesurer le temps pendant lequel un temporisateur est inactif

TOF logique à relais 2-5

cumuler du temps RTO logique à relais 2-9

calculer combien de temps un temporisateur est actif avec RAZ intégrée en bloc fonctionnel

TONR texte structurébloc fonctionnel

2-13

calculer combien de temps un temporisateur est inactif avec RAZ intégrée en bloc fonctionnel

TOFR texte structurébloc fonctionnel

2-16

cumuler la durée avec RAZ intégrée en bloc fonctionnel

RTOR texte structurébloc fonctionnel

2-19

faire un comptage incrémental CTU logique à relais 2-22

faire un comptage décrémental CTD logique à relais 2-25

faire des comptages incrémental et décrémental en bloc fonctionnel

CTUD texte structurébloc fonctionnel

2-29

remettre un temporisateur ou un compteur à zéro

RES logique à relais 2-33

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 50: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

2-2 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Temporisateur à l'enclenchement (TON)

L'instruction TON est un temporisateur non rémanent qui cumule le temps lorsque l'instruction est activée (l'état d'entrée de la ligne est vrai).

Cette instruction existe en texte structuré et en bloc fonctionnel comme instruction TONR (voir page 2-13).

Opérandes :

Logique à relais

Structure TIMER

Description : L'instruction TON cumule le temps jusqu'à ce que :

• l'instruction TON soit désactivée ;

• .ACC ≥ .PRE.

La base de temps est toujours 1 ms. Pour un temporisateur de 2 secondes par exemple, entrez 2000 pour la valeur .PRE.

Lorsque l'instruction TON est désactivée, la valeur .ACC est effacée.

Opérande Type Format Description

Temporisateur TIMER point structure de temporisateur

Présélection DINT immédiat durée avant le délai (durée cumulée)

Accumulateur DINT immédiat nombre total de ms que le temporisateur a comptéesla valeur initiale est généralement 0

Mnémonique Type de données Description

.EN BOOL Le bit d'activation indique que l'instruction TON est activée.

.TT BOOL Le bit de temporisation indique qu'une opération de temporisation est en cours.

.DN BOOL Le bit de fin est activé lorsque .ACC ≥ .PRE.

.PRE DINT La valeur prédéterminée définit la valeur (par unités d'1 ms) que la valeur cumulée doit atteindre avant que l'instruction n'active le bit .DN.

.ACC DINT La valeur cumulée définit le nombre de millisecondes qui se sont écoulées depuis l'activation de l'instruction TON.

état d'entrée de la ligne

bit d'activation de temporisateur (.EN)

bit de fin de temporisation (.DN)

valeur cumulée du temporisateur (.ACC)

bit de temporisation en cours (.TT)

présélection

0 16649

le temporisateur n'a pas atteint la valeur .PRE

Encl.

Publication 1756-RM003F-FR-P - Mai 2002

Page 51: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-3

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur :

Exécution :

Un défaut majeur se produit si Type du défaut Code du défaut

.PRE < 0 4 34

.ACC < 0 4 34

Condition Action de la logique à relais

pendant la pré-scrutation Les bits .EN, .TT et .DN sont effacés.La valeur .ACC est effacée.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux Les bits .EN, .TT et .DN sont effacés.La valeur .ACC est effacée.L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

examine le bit .DNbit .DN = 1

bit .DN = 0

le bit .EN est activéle bit .TT est activé

last_time = current_time

si l'état d'entrée de la ligne est

examine .ACC.ACC ≥ .PRE

.ACC < .PRE

le bit .TT est activé.ACC = .ACC + (current_time - last_time)

last_time = current_time

la valeur .ACC passe à zéro

non

oui

.ACC = 2 147 483 647

examine le bit .ENbit .EN = 0

bit .EN = 1

l'état de sortie de la ligne est réglé sur vrai

fin

le bit .DN est activéle bit .TT est effacéle bit .EN est activé

Publication 1756-RM003F-FR-P - Mai 2002

Page 52: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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 désactivée. Si limit_switch_1 est effacé pendant que timer_1 compte, light_2 s'éteint.

Publication 1756-RM003F-FR-P - Mai 2002

Page 53: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-5

Temporisateur au déclenchement (TOF)

L'instruction TOF est un temporisateur non rémanent qui cumule le temps lorsque l'instruction est activée (l'état d'entrée de la ligne est faux).

Cette instruction existe en texte structuré et en bloc fonctionnel comme instruction TOFR (voir page 2-16).

Opérandes :

Logique à relais

Structure TIMER

Description : L'instruction TOF cumule le temps jusqu'à ce que :

• l'instruction TOF soit activée ;

• .ACC ≥ .PRE.

La base de temps est toujours 1 ms. Pour un temporisateur de 2 secondes par exemple, entrez 2000 pour la valeur .PRE.

Opérande Type Format Description

Temporisateur TIMER point structure de temporisateur

Présélection DINT immédiat durée avant le délai (durée cumulée)

Accumulateur DINT immédiat nombre total de ms que le temporisateur a comptéesla valeur initiale est généralement 0

Mnémonique Type de données Description

.EN BOOL Le bit d'activation indique que l'instruction TOF est activée.

.TT BOOL Le bit de temporisation indique qu'une opération de temporisation est en cours.

.DN BOOL Le bit de fin est effacé lorsque .ACC ≥ .PRE.

.PRE DINT La valeur prédéterminée définit la valeur (par unités d'1 ms) que la valeur cumulée doit atteindre avant que l'instruction n'efface le bit .DN.

.ACC DINT La valeur cumulée définit le nombre de millisecondes qui se sont écoulées depuis l'activation de l'instruction TOF.

Publication 1756-RM003F-FR-P - Mai 2002

Page 54: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

2-6 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Lorsque l'instruction TOF est désactivée, la valeur .ACC est effacée.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur :

état d'entrée de la ligne

bit d'activation de temporisateur (.EN)

bit de fin de temporisation (.DN)

valeur cumulée du temporisateur (.ACC)

bit de temporisation en cours (.TT)

0 16650

le temporisateur n'a pas atteint la valeur .PRE

présélection

Déclenchement

Un défaut majeur se produit si Type du défaut Code du défaut

.PRE < 0 4 34

.ACC < 0 4 34

Publication 1756-RM003F-FR-P - Mai 2002

Page 55: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-7

Exécution :

Condition Action de la logique à relais

pendant la pré-scrutation Les bits .EN, .TT et .DN sont effacés.La valeur .ACC est réglée pour être égale à la valeur .PRE.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai Les bits .EN, .TT et .DN sont activés.La valeur .ACC est effacée.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

examine le bit .DN bit .DN = 0

bit .DN = 1

le bit .EN est effacéle bit .TT est activé

last_time = current_time

si l'état d'entrée de la ligne est

examine .ACC.ACC ≥ .PRE

.ACC < .PRE

le bit .TT est activé.ACC = .ACC + (current_time - last_time)

last_time = current_time

la valeur .ACC passe à zéro

non

oui

.ACC = 2 147 483 647

examine le bit .ENbit .EN = 1

bit .EN = 0

l'état de sortie de la ligne est réglé sur faux

fin

le bit .DN est effacé.le bit .TT est effacéle bit .EN est effacé

Publication 1756-RM003F-FR-P - Mai 2002

Page 56: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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 activée. Si limit_switch_2 est activé pendant que timer_2 compte, light_2 s'éteint.

Publication 1756-RM003F-FR-P - Mai 2002

Page 57: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-9

Temporisateur rémanent (RTO)

L'instruction RTO est un temporisateur rémanent qui cumule le temps lorsque l'instruction est activée.

Cette instruction existe en texte structuré et en bloc fonctionnel comme instruction RTOR (voir page 2-19).

Opérandes :

Logique à relais

Structure TIMER

Description : L'instruction RTO cumule le temps jusqu'à ce qu'elle soit désactivée. Lorsqu'elle est désactivée, l'instruction RTO garde sa valeur .ACC. Vous devez effacer la valeur .ACC, généralement à l'aide d'une instruction RES renvoyant à la même structure de temporisateur.

Opérande Type Format Description

Temporisateur TIMER point structure de temporisateur

Présélection DINT immédiat durée avant le délai (durée cumulée)

Accumulateur DINT immédiat nombre de ms que le temporisateur a comptéesla valeur initiale est généralement 0

Mnémonique Type de données Description

.EN BOOL Le bit d'activation indique que l'instruction RTO est activée.

.TT BOOL Le bit de temporisation indique qu'une opération de temporisation est en cours.

.DN BOOL Le bit de fin indique que .ACC ≥ .PRE.

.PRE DINT La valeur prédéterminée définit la valeur (par unités d'1 ms ) que la valeur cumulée doit atteindre avant que l'instruction n'active le bit .DN.

.ACC DINT La valeur cumulée définit le nombre de millisecondes qui se sont écoulées depuis l'activation de l'instruction RTO.

Publication 1756-RM003F-FR-P - Mai 2002

Page 58: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur :

état d'entrée de la ligne

bit d'activation de temporisateur (.EN)

bit de fin de temporisation (.DN)

valeur cumulée du temporisateur (.ACC)

bit de temporisation en cours (.TT)

présélection

0

16651

état de ligne qui commande l'instruction RES

le temporisateur n'a pas atteint la valeur .PRE

Un défaut majeur se produit si Type du défaut Code du défaut

.PRE < 0 4 34

.ACC < 0 4 34

Publication 1756-RM003F-FR-P - Mai 2002

Page 59: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-11

Exécution :

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 réinitialisé. Si limit_switch_2 est effacé pendant que timer_3 compte, light_1 reste allumé. Lorsque limit_switch_2 est activé, l'instruction RES réinitialise timer_3 (efface les bits d'état et la valeur .ACC).

Condition Action de la logique à relais

pendant la pré-scrutation Les bits .EN, .TT et .DN sont effacés.La valeur .ACC n'est pas modifiée.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux Les bits .EN et .TT sont effacés.Le bit .DN n'est pas modifié.La valeur .ACC n'est pas modifiée.L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

examine le bit .DNbit .DN = 1

bit .DN = 0

le bit .EN est activéle bit .TT est activé

last_time = current_time

si l'état d'entrée de la ligne est

examine .ACC .ACC ≥ .PRE

.ACC < .PRE

le bit .TT est activé.ACC = .ACC + (current_time - last_time)

last_time = current_time

la valeur .ACC passe à zéro

non

oui

.ACC = 2 147 483 647

examine le bit .EN bit .EN = 0

bit .EN = 1

l'état de sortie de la ligne est réglé sur vrai

fin

le bit .DN est activéle bit .TT est effacéle bit .EN est activé

Publication 1756-RM003F-FR-P - Mai 2002

Page 60: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

2-12 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Publication 1756-RM003F-FR-P - Mai 2002

Page 61: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-13

Temporisateur à l'enclenchement avec RAZ (TONR)

L'instruction TONR est un temporisateur non rémanent qui cumule le temps lorsque TimerEnable est activé.

Cette instruction est disponible en logique à relais sous forme de deux instructions séparées : TON (voir page 2-2) et RES (voir page 2-33).

Opérandes :

Texte structuré

Bloc fonctionnel

Structure FBD_TIMER

Variable Type Format Description

point TONR FBD_TIMER structure structure TONR

Opérande Type Format Description

point TONR FBD_TIMER structure structure TONR

TONR(TONR_tag);

Paramètre d'entrée Type de données Description

EnableIn BOOL Bloc fonctionnel :Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Si activé, l'instruction est exécutée.Activé par défaut.Texte structuré :Aucun effet. L'instruction est exécutée.

TimerEnable BOOL Si activé, il active le temporisateur pour qu'il exécute et cumule le temps.Effacé par défaut.

PRE DINT Valeur présélectionnée du temporisateur. Valeur, en incréments d'1 ms, que ACC doit atteindre avant que la temporisation ne soit terminée. 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.

Remise à zéro BOOL Demande de réinitialisation du temporisateur. Le temporisateur est réinitialisé lors de son activation.Effacé par défaut.

Paramètre de sortie Type de données Description

EnableOut BOOL L'instruction a fourni un résultat correct.

ACC BOOL Temps cumulé en millisecondes.

EN BOOL Sortie de temporisateur activé. Indique que l'instruction de temporisation est activée.

TT BOOL Sortie de temporisation en cours. Lorsqu'elle est activée, une opération de temporisation est en cours.

DN BOOL Sortie de temporisation terminée. Indique quand la valeur cumulée est supérieure ou égale à la valeur présélectionnée.

Status DINT Etat du bloc fonctionnel.

InstructFault (Status.0)

BOOL L'instruction a détecté une des erreurs d'exécution suivantes. Il ne s'agit pas d'une erreur automate mineure ou majeure. Vérifiez les bits d'état restants pour déterminer ce qui s'est passé.

PresetInv (Status.1) BOOL La valeur présélectionnée est incorrecte.

Publication 1756-RM003F-FR-P - Mai 2002

Page 62: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

2-14 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Description : L'instruction TONR cumule le temps jusqu'à ce que :

• l'instruction TONR soit activée ;

• ACC ≥ PRE.

La base de temps est toujours 1 ms. Pour un temporisateur de 2 secondes par exemple, entrez 2000 pour la valeur .PRE.

Réglez le paramètre d'entrée Reset pour qu'il réinitialise l'instruction. Si TimerEnable est activé quand Reset est actif, l'instruction TONR recommence la temporisation lorsque Reset est effacé.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Exemple : A chaque scrutation pendant laquelle limit_switch1 est activé, l'instruction TONR incrémente la valeur ACC par le temps écoulé jusqu'à ce que la valeur ACC atteigne la valeur PRE. Lorsque ACC ≥ PRE, le paramètre DN est activé et timer_state est activé.

TimerEnable

bit d'activation (EN)

bit de fin de temporisation (.DN)

valeur cumulée du temporisateur (.ACC)

bit de temporisation en cours (.TT)

présélection

0

16649

Encl.

le temporisateur n'a pas atteint la valeur

.PRE

Condition Action du bloc fonctionnel Action du texte structuré

pendant la pré-scrutation Aucune. Aucune.

pendant la première scrutation de l'instruction

EN, TT et DN sont effacés.La valeur ACC est réglée sur 0.

EN, TT et DN sont effacés.La valeur ACC est réglée sur 0.

pendant la première exécution de l'instruction

EN, TT et DN sont effacés.La valeur ACC est réglée sur 0.

EN, TT et DN sont effacés.La valeur ACC est réglée sur 0.

si EnableIn est effacé EnableOut est effacé, l'instruction ne fait rien et les sorties ne sont pas actualisées.

-

si EnableIn est activé Lorsque EnableIn passe d'effacé à activé, l'instruction est initialisée comme indiqué pour la première scrutation de l'instruction.L'instruction est exécutée.EnableOut est activé.

EnableIn est toujours activé.L'instruction est exécutée.

remise à zéro Lorsque le paramètre d'entrée Reset est activé, l'instruction efface EN, TT et DN, puis active ACC = zéro.

Lorsque le paramètre d'entrée Reset est activé, l'instruction efface EN, TT et DN, puis active ACC = zéro.

pendant la post-scrutation Aucune. Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 63: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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

Publication 1756-RM003F-FR-P - Mai 2002

Page 64: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

2-16 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Temporisateur au déclenchement avec RAZ (TOFR)

L'instruction TOFR est un temporisateur non rémanent qui cumule le temps lorsque TimerEnable est effacé.

Cette instruction est disponible en logique à relais sous forme de deux instructions séparées : TOF (voir page 2-5) et RES (voir page 2-33).

Opérandes :

Texte structuré

Opérandes de bloc fonctionnel

Structure FBD_TIMER

Variable Type Format Description

point TOFR FBD_TIMER structure structure TOFR

Opérande Type Format Description

point TOFR FBD_TIMER structure structure TOFR

TOFR(TOFR_tag);

Paramètre d'entrée Type de données

Description

EnableIn BOOL Bloc fonctionnel :Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Si activé, l'instruction est exécutée.Activé par défaut.Texte structuré :Aucun effet. L'instruction est exécutée.

TimerEnable BOOL Si effacé, il active le temporisateur pour qu'il exécute et cumule le temps.Effacé par défaut.

PRE DINT Valeur présélectionnée du temporisateur. Valeur, en incréments d'1 ms, que ACC doit atteindre avant que la temporisation ne soit terminée. 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.

Remise à zéro BOOL Demande de réinitialisation du temporisateur. Le temporisateur est réinitialisé lors de son activation.Effacé par défaut.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

ACC BOOL Temps cumulé en millisecondes.

EN BOOL Sortie de temporisateur activé. Indique que l'instruction de temporisation est activée.

TT BOOL Sortie de temporisation en cours. Lorsqu'elle est activée, une opération de temporisation est en cours.

DN BOOL Sortie de temporisation terminée. Indique quand la valeur cumulée est supérieure ou égale à la valeur présélectionnée.

Publication 1756-RM003F-FR-P - Mai 2002

Page 65: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-17

Description : L'instruction TOFR cumule le temps jusqu'à ce que :

• l'instruction TOFR soit activée ;

• ACC ≥ PRE.

La base de temps est toujours 1 ms. Pour un temporisateur de 2 secondes par exemple, entrez 2000 pour la valeur .PRE.

Réglez le paramètre d'entrée Reset pour qu'il réinitialise l'instruction. Si TimerEnable est effacé quand Reset est actif, l'instruction TOFR ne recommence pas la temporisation lorsque Reset est effacé.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Status DINT Etat du bloc fonctionnel.

InstructFault (Status.0) BOOL L'instruction a détecté une des erreurs d'exécution suivantes. Il ne s'agit pas d'une erreur automate mineure ou majeure. Vérifiez les bits d'état restants pour déterminer ce qui s'est passé.

PresetInv (Status.1) BOOL La valeur présélectionnée est incorrecte.

Paramètre d'entrée Type de données

Description

TimerEnable

bit d'activation (EN)

bit de fin de temporisation (.DN)

valeur cumulée du temporisateur (.ACC)

bit de temporisation en cours (.TT)

0

Déclenchement

16650

le temporisateur n'a pas atteint la valeur .PRE

présélection

Publication 1756-RM003F-FR-P - Mai 2002

Page 66: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

2-18 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Exécution :

Exemple : A chaque scrutation suivant l'effacement de limit_switch1, l'instruction TOFR ajoute le temps écoulé à la valeur ACC jusqu'à ce qu'elle atteigne la valeur PRE. Lorsque ACC ≥ PRE, le paramètre DN est effacé et timer_state2 activé.

Texte structuré

TOFR_01.Preset := 500

TOFR_01.Reset := reset;

TOFR_O1.TimerEnable := limit_switch1;

TOFR(TOFR_01);

timer_state2 := TOFR_01.DN;

Condition Action du bloc fonctionnel Action du texte structuré

pendant la pré-scrutation

Aucune. Aucune.

pendant la première scrutation de l'instruction

EN, TT et DN sont effacés.la valeur ACC est réglée sur PRE.

EN, TT et DN sont effacés.la valeur ACC est réglée sur PRE.

pendant la première exécution de l'instruction

EN, TT et DN sont effacés.la valeur ACC est réglée sur PRE.

EN, TT et DN sont effacés.la valeur ACC est réglée sur PRE.

si EnableIn est effacé EnableOut est effacé, l'instruction ne fait rien et les sorties ne sont pas actualisées.

-

si EnableIn est activé Lorsque EnableIn passe d'effacé à activé, l'instruction est initialisée comme indiqué pour la première scrutation de l'instruction.L'instruction est exécutée.EnableOut est activé.

EnableIn est toujours activé.L'instruction est exécutée.

remise à zéro Lorsque le paramètre d'entrée Reset est activé, l'instruction efface EN, TT et DN, puis active ACC = PRE. Remarquez la différence avec l'utilisation d'une instruction RES sur une instruction TOF.

Lorsque le paramètre d'entrée Reset est activé, l'instruction efface EN, TT et DN, puis active ACC = PRE. Remarquez la différence avec l'utilisation d'une instruction RES sur une instruction TOF.

pendant la post-scrutation

Aucune. Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 67: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-19

Bloc fonctionnel

Publication 1756-RM003F-FR-P - Mai 2002

Page 68: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

2-20 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Temporisateur rémanent avec RAZ (RTOR)

L'instruction RTOR est un temporisateur rémanent qui cumule le temps lorsque TimerEnable est activé.

Cette instruction est disponible en logique à relais sous forme de deux instructions séparées : RTO (voir page 2-9) et RES (voir page 2-33).

Opérandes :

Texte structuré

Opérandes de bloc fonctionnel

Structure FBD_TIMER

Variable Type Format Description

point RTOR FBD_TIMER structure structure RTOR

Opérande Type Format Description

point RTOR FBD_TIMER structure structure RTOR

RTOR(RTOR_tag);

Paramètre d'entrée Type de données

Description

EnableIn BOOL Bloc fonctionnel :Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Si activé, l'instruction est exécutée.Activé par défaut.Texte structuré :Aucun effet. L'instruction est exécutée.

TimerEnable BOOL Si activé, il active le temporisateur pour qu'il exécute et cumule le temps.Effacé par défaut.

PRE DINT Valeur présélectionnée du temporisateur. Valeur, en incréments d'1 ms, que ACC doit atteindre avant que la temporisation ne soit terminée. 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.

Remise à zéro BOOL Demande de réinitialisation du temporisateur. Le temporisateur est réinitialisé lors de son activation.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

ACC DINT Temps cumulé en millisecondes. Cette valeur est retenue même quand l'entrée TimerEnable est effacée, ainsi ce bloc agit différemment du bloc TONR.

EN BOOL Sortie de temporisateur activé. Indique que l'instruction de temporisation est activée.

TT BOOL Sortie de temporisation en cours. Lorsqu'elle est activée, une opération de temporisation est en cours.

DN BOOL Sortie de temporisation terminée. Indique quand la valeur cumulée est supérieure ou égale à la valeur présélectionnée.

Status DINT Etat du bloc fonctionnel.

InstructFault (Status.0) BOOL L'instruction a détecté une des erreurs d'exécution suivantes. Il ne s'agit pas d'une erreur automate mineure ou majeure. Vérifiez les bits d'état restants pour déterminer ce qui s'est passé.

PresetInv (Status.1) BOOL La valeur présélectionnée est incorrecte.

Publication 1756-RM003F-FR-P - Mai 2002

Page 69: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-21

Description : L'instruction RTOR cumule le temps jusqu'à ce qu'elle soit désactivée. Lorsqu'elle est désactivée, l'instruction RTOR garde sa valeur .ACC. Vous devez effacer la valeur .ACC à l'aide de l'entrée Reset.

La base de temps est toujours 1 ms. Pour un temporisateur de 2 secondes par exemple, entrez 2000 pour la valeur .PRE.

Réglez le paramètre d'entrée Reset pour qu'il réinitialise l'instruction. Si TimerEnable est activé quand Reset est actif, l'instruction RTOR recommence la temporisation lorsque Reset est effacé.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

TimerEnable

bit d'activation (EN)

bit de fin de temporisation (.DN)

valeur cumulée du temporisateur (.ACC)

bit de temporisation en cours (.TT)

présélection

0

16651

remise à zéro

le temporisateur n'a pas atteint la valeur .PRE

Publication 1756-RM003F-FR-P - Mai 2002

Page 70: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

2-22 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Exécution :

Exemple : A chaque scrutation pendant laquelle limit_switch1 est activé, l'instruction RTOR incrémente la valeur ACC par le temps écoulé jusqu'à ce que la valeur ACC atteigne la valeur PRE. Lorsque ACC ≥ PRE, le paramètre DN est activé et timer_state3 est activé.

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

Condition Action du bloc fonctionnel Action du texte structuré

pendant la pré-scrutation Aucune. Aucune.

pendant la première scrutation de l'instruction

EN, TT et DN sont effacésLa valeur .ACC n'est pas modifiée

EN, TT et DN sont effacésLa valeur .ACC n'est pas modifiée

pendant la première exécution de l'instruction

EN, TT et DN sont effacésLa valeur .ACC n'est pas modifiée

EN, TT et DN sont effacésLa valeur .ACC n'est pas modifiée

si EnableIn est effacé EnableOut est effacé, l'instruction ne fait rien et les sorties ne sont pas actualisées.

-

si EnableIn est activé Bloc fonctionnel :Lorsque EnableIn passe d'effacé à activé, l'instruction est initialisée comme indiqué pour la première scrutation de l'instruction.L'instruction est exécutée.EnableOut est activé.

EnableIn est toujours activé.L'instruction est exécutée.

remise à zéro Lorsque le paramètre d'entrée Reset est activé, l'instruction efface EN, TT et DN, puis active ACC = zéro.

Lorsque le paramètre d'entrée Reset est activé, l'instruction efface EN, TT et DN, puis active ACC = zéro.

pendant la post-scrutation Aucune. Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 71: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-23

Comptage incrémental (CTU)

L'instruction CTU compte de façon croissante (incrémentale).

Cette instruction existe en texte structuré et en bloc fonctionnel comme instruction CTUD (voir page 2-29).

Opérandes :

Logique à relais

Structure COUNTER

Description : Lorsqu'elle est activée et que le bit .CU est effacé, l'instruction CTU ajoute un au compteur. Lorsqu'elle est activée et que le bit .CU est activé, ou lorsqu'elle est désactivée, l'instruction CTU garde sa valeur .ACC.

Opérande Type Format Description

Compteur COUNTER point structure de compteur

Présélection DINT immédiat limite supérieure de comptage

Accumulateur DINT immédiat nombre de comptages effectués par le compteurla valeur initiale est généralement 0

Mnémonique Type de données Description

.CU BOOL Le bit d'activation de comptage incrémental indique que l'instruction CTU est activée.

.DN BOOL Le bit de fin indique que .ACC ≥ .PRE.

.OV BOOL Le bit de dépassement indique que le compteur a dépassé la limite supérieure de 2 147 483 647. Le compteur passe alors à -2 147 483 648 et recommence à compter de façon incrémentale.

.UN BOOL Le bit de dépassement indique que le compteur a dépassé la limite inférieure de -2 147 483 648. Le compteur passe alors à 2 147 483 647 et recommence à compter de façon décrémentale.

.PRE DINT La valeur prédéterminée définit la valeur que la valeur cumulée doit atteindre avant que l'instruction n'active le bit .DN.

.ACC DINT La valeur cumulée indique le nombre de transitions que l'instruction a comptées.

état d'entrée de la ligne

bit d'activation de comptage incrémental (.CU)

bit de fin de comptage incrémental (.DN)

valeur cumulée du compteur (.ACC)

présélection

16636

Publication 1756-RM003F-FR-P - Mai 2002

Page 72: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

2-24 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

La valeur cumulée continue d'augmenter, même une fois le bit .DN activé. Pour effacer une valeur cumulée, utilisez une instruction RES qui renvoie à la structure du compteur ou écrivez 0 dans la valeur cumulée.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Publication 1756-RM003F-FR-P - Mai 2002

Page 73: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-25

Exécution :

Condition Action de la logique à relais

pendant la pré-scrutation Le bit .CU est activé pour empêcher une incrémentation incorrecte lors de la première scrutation de programme.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux Le bit .CU est effacé.L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

examine le bit .CUbit .CU = 0

bit .CU = 1

si l'état d'entrée de la ligne est

la valeur .ACC passe à zéro

oui

non

examine le bit .UN bit .UN = 0

bit .UN = 1

le bit .CU est activé.ACC = .ACC + 1

examine le bit .OVbit .OV = 0

examine le bit .UNbit .UN = 1

bit .UN = 0

le bit .UN est effacéle bit .DN est effacéle bit .OV est effacé

le bit .OV est activé

examine .ACC.ACC ≥ .PRE

.ACC < .PRE

le bit .DN est activé

l'état de sortie de la ligne est réglé sur vrai

fin

bit .OV = 1

le bit .DN est effacé

Publication 1756-RM003F-FR-P - Mai 2002

Page 74: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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 désactivé à activé, le bit .DN est activé et light_1 s'allume. Si limit_switch_1 continue de passer de désactivé à activé, counter_1 continue d'augmenter et le bit .DN reste activé. Lorsque limit_switch_1 est activé, l'instruction RES réinitialise counter_1 (efface les bits d'état et la valeur .ACC) et light_1 s'éteint.

Publication 1756-RM003F-FR-P - Mai 2002

Page 75: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-27

Comptage décrémental (CTD)

L'instruction CTD compte de façon décroissante (décrémentale).

Cette instruction existe en texte structuré et en bloc fonctionnel comme instruction CTUD (voir page 2-29).

Opérandes :

Logique à relais

Structure COUNTER

Opérande Type Format Description

Compteur COUNTER point structure de compteur

Présélection DINT immédiat limite inférieure de comptage

Accumulateur DINT immédiat nombre de comptages effectués par le compteurla valeur initiale est généralement 0

Mnémonique Type de données Description

.CD BOOL Le bit d'activation de comptage décrémental indique que l'instruction CTD est activée.

.DN BOOL Le bit de fin indique que .ACC ≥ .PRE.

.OV BOOL Le bit de dépassement indique que le compteur a dépassé la limite supérieure de 2 147 483 647. Le compteur passe alors à -2 147 483 648 et recommence à compter de façon incrémentale.

.UN BOOL Le bit de dépassement indique que le compteur a dépassé la limite inférieure de -2 147 483 648. Le compteur passe alors à 2 147 483 647 et recommence à compter de façon décrémentale.

.PRE DINT La valeur prédéterminée définit la valeur que la valeur cumulée doit atteindre avant que l'instruction n'active le bit .DN.

.ACC DINT La valeur cumulée indique le nombre de transitions que l'instruction a comptées.

Publication 1756-RM003F-FR-P - Mai 2002

Page 76: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

2-28 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Description : L'instruction CTD est généralement utilisée avec une instruction CTU qui renvoie à la même structure de compteur.

Lorsqu'elle est activée et que le bit .CD est effacé, l'instruction CTD retire un au compteur. Lorsqu'elle est activée et que le bit .CD est activé, ou lorsqu'elle est désactivée, l'instruction CTD garde sa valeur .ACC.

La valeur cumulée continue de diminuer, même une fois le bit .DN activé. Pour effacer une valeur cumulée, utilisez une instruction RES qui renvoie à la structure du compteur ou écrivez 0 dans la valeur cumulée.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

état d'entrée de la ligne

bit d'activation de comptage décrémental (.CD)

bit de fin de comptage décrémental (.DN)

valeur cumulée du compteur (.ACC)

présélection

16637

Publication 1756-RM003F-FR-P - Mai 2002

Page 77: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-29

Exécution :

Condition Action de la logique à relais

pendant la pré-scrutation Le bit .CD est activé pour empêcher une diminution incorrecte lors de la première scrutation de programme.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux Le bit .CD est effacé.L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

examine le bit .CDbit .CD = 0

bit .CD = 1

si l'état d'entrée de la ligne est

la valeur .ACC passe à zéro

oui

non

examine le bit .UN bit .UN = 0

bit .UN = 1

le bit .CD est activé.ACC = .ACC - 1

examine le bit .OV bit .OV = 0

examine le bit .OVbit .OV = 1

bit .OV = 0

le bit .OV est effacéle bit .DN est effacéle bit .UN est effacé

le bit .UN est activé

examine .ACC.ACC ≥ .PRE

le bit .DN est activé

l'état de sortie de la ligne est réglé sur vrai

fin

bit .OV = 1

.ACC < .PRE

le bit .DN est effacé

Publication 1756-RM003F-FR-P - Mai 2002

Page 78: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

2-30 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Exemple : Un convoyeur apporte les pièces dans une zone tampon. Chaque fois qu'une pièce entre, limit_switch_1 est activé et counter_1 augmente de 1. Chaque fois qu'une pièce sort, limit_switch_2 est activé et counter_1 diminue de 1. S'il y a 100 pièces dans la zone tampon (counter_1.dn est activé), conveyor_a est activé et empêche le convoyeur d'apporter d'autres pièces tant que la zone tampon n'a pas de place disponible.

Publication 1756-RM003F-FR-P - Mai 2002

Page 79: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-31

Comptage incrémental/décrémental (CTUD)

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 séparées : CTU (voir page 2-22), CTD (voir page 2-25) et RES (voir page 2-33).

Opérandes :

Texte structuré

Bloc fonctionnel

Structure FBD_COUNTER

Variable Type Format Description

point CTUD FBD_COUNTER structure structure CTUD

Opérande Type Format Description

point CTUD FBD_COUNTER structure structure CTUD

CTUD(CTUD_tag);

Paramètre d'entrée

Type de données

Description

EnableIn BOOL Bloc fonctionnel :Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Si activé, l'instruction est exécutée.Activé par défaut.Texte structuré :Aucun effet. L'instruction est exécutée.

CUEnable BOOL Activation de comptage incrémental. Lorsque l'entrée passe d'effacée à activée, la valeur cumulée augmente de un. Effacé par défaut.

CDEnable BOOL Activation de comptage décrémental. Lorsque l'entrée passe d'effacée à activée, la valeur cumulée diminue de un. Effacé par défaut.

PRE DINT Valeur de compteur présélectionnée. Valeur que la valeur cumulée doit atteindre avant l'activation de DN.Valeurs correctes = tout nombre entier.La valeur par défaut est 0.

Remise à zéro BOOL Demande de réinitialisation du temporisateur. Le compteur est réinitialisé lors de son activation.Effacé par défaut.

Publication 1756-RM003F-FR-P - Mai 2002

Page 80: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

2-32 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Description Lorsqu'elle est activée et que CUEnable est activé, l'instruction CTUD ajoute un au compteur. Lorsqu'elle est activée et que CDEnable est activé, l'instruction CTUD retire un au compteur.

Les paramètres d'entrée CUEnable et CDEnable peuvent être modifiés pendant la même scrutation. L'instruction exécute le comptage incrémental avant le comptage décrémental.

Comptage incrémental

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

ACC DINT Valeur cumulée.

CU BOOL Comptage incrémental activé.

CD BOOL Comptage décrémental activé.

DN BOOL Comptage terminé. Activé quand la valeur cumulée est supérieure ou égale à la valeur présélectionnée.

OV BOOL Dépassement supérieur du compteur. Indique que le compteur a dépassé la limite supérieure de 2 147 483 647.Le compteur repasse alors à −2 147 483 648 et recommence à compter de façon incrémentale.

UN BOOL Dépassement inférieur du compteur. Indique que le compteur a dépassé la limite inférieure de −2 147 483 648.Le compteur repasse alors à 2 147 483 647 et recommence à compter de façon décrémentale.

CUEnable

bit d'activation de comptage incrémental (CU)

bit de fin de comptage incrémental (DN)

valeur cumulée du compteur (ACC)

présélection

16636

Publication 1756-RM003F-FR-P - Mai 2002

Page 81: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-33

Comptage décrémental

Lorsqu'elle est désactivée, l'instruction CTUD, elle garde sa valeur cumulée. Activez le paramètre d'entrée Reset de la structure FBD_COUNTER pour qu'il réinitialise l'instruction.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

CDEnable

bit d'activation de comptage décrémental (CD)

bit de fin de comptage décrémental (DN)

valeur cumulée du compteur (ACC)

présélection

16637

Condition Action du bloc fonctionnel Action du texte structuré

pendant la pré-scrutation Pas d'initialisation nécessaire. Pas d'initialisation nécessaire.

pendant la première scrutation de l'instruction

CUEnablen-1 et CDEnablen-1 sont activés. CUEnablen-1 et CDEnablen-1 sont activés.

pendant la première exécution de l'instruction

CUEnablen-1 et CDEnablen-1 sont activés. CUEnablen-1 et CDEnablen-1 sont activés.

si EnableIn est effacé EnableOut est effacé, l'instruction ne fait rien et les sorties ne sont pas actualisées.

-

si EnableIn est activé L'instruction active CUEnablen-1 et CDEnablen-1.Lorsque EnableIn passe d'effacé à activé :

• l'instruction est exécutée ;• EnableOut est activé.

L'instruction active CUEnablen-1 et CDEnablen-1.EnableIn est toujours activé.L'instruction est exécutée.

remise à zéro Lorsqu'elle est activée, l'instruction efface CUEnablen-1, CDEnablen-1, CU, CD, DN, OV et UN, puis active ACC = zéro.

Lorsqu'elle est activée, l'instruction efface CUEnablen-1, CDEnablen-1, CU, CD, DN, OV et UN, puis active ACC = zéro.

pendant la post-scrutation Aucune. Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 82: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

2-34 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Exemple : Lorsque limit_switch1 passe d'effacé à activé, CUEnable est activé pour une scrutation et l'instruction CTUD augmente la valeur ACC de 1. Lorsque ACC ≥ PRE, le paramètre DN est activé, ce qui active l'instruction de bloc fonctionnel suivant l'instruction CTUD.

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

Publication 1756-RM003F-FR-P - Mai 2002

Page 83: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-35

Remise à zéro (RES) L'instruction RES réinitialise une structure TIMER, COUNTER ou CONTROL.

Opérandes :

Logique à relais

Description : Lorsqu'elle est activée, l'instruction RES efface les éléments suivants :

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Opérande Type Format Description

structure TIMERCONTROLCOUNTER

point structure à réinitialiser

Lors de l'utilisation d'une instruction RES pour une structure L'instruction efface

TIMER la valeur .ACCles bits d'état de la commande

COUNTER la valeur .ACCles bits d'état de la commande

CONTROL la valeur .POSles bits d'état de la commande

ATTENTION

!Comme l'instruction RES efface la valeur .ACC, le bit .DN et le bit .TT, n'utilisez pas cette instruction pour réinitialiser un temporisateur TOF.

Condition Action de la logique à relais

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'instruction RES réinitialise la structure indiquée.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Publication 1756-RM003F-FR-P - Mai 2002

Page 84: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

2-36 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Exemples :

Exemple Description

Si activé, réinitialise timer_3.

Si activé, réinitialise counter_1.

Si activé, réinitialise control_1.

Publication 1756-RM003F-FR-P - Mai 2002

Page 85: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Chapitre 3

Instructions d'entrée/de sortie(MSG, GSV, SSV)

Introduction Les instructions d'entrée/de sortie lisent ou écrivent, soit des données vers ou à partir de l'automate, soit un bloc de données vers ou à partir d'un autre module sur un autre réseau.

Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page

échanger des données avec un autre module MSG logique à relaistexte structuré

3-2

obtenir des informations sur l'état de l'automate

GSV logique à relaistexte structuré

3-30

régler les informations sur l'état de l'automate SSV logique à relaistexte structuré

3-30

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 86: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-2 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Message (MSG) L'instruction MSG écrit ou lit un bloc de données de façon asynchrone vers un autre module sur un réseau.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction MSG en logique à relais.

Structure MESSAGE

Opérande Type Format Description

Contrôle de message MESSAGE point structure de message

MSG(MessageControl);

Mnémonique Type de données

Description

.FLAGS INT Le membre .FLAGS permet l'accès aux membres d'état (bits) via un mot de 16 bits.

Ce bit est le membre

2 .EW

4 .ER

5 .DN

6 .ST

7 .EN

8 .TO

9 .EN_CC

Important : la réinitialisation des bits d'état MSG pendant que MSG est actif peut perturber les communications.

.ERR INT Si le bit .ER est activé, le mot de code d'erreur identifie les codes d'erreur pour l'instruction MSG.

.EXERR INT Le mot de code d'erreur étendu donne des informations de code d'erreur supplémentaires pour certains codes d'erreur.

.REQ_LEN INT La longueur requise indique le nombre de mots que l'instruction de message tente de transférer.

.DN_LEN INT La longueur de fin indique le nombre de mots ayant effectivement été transférés.

.EW BOOL Le bit d'activation en attente est activé lorsque l'automate détecte qu'une demande de message est entrée dans la file d'attente. L'automate réinitialise le bit .EW lorsque le bit .ST est activé.

.ER BOOL Le bit d'erreur est activé lorsque l'automate détecte qu'un transfert a échoué. Le bit .ER est réinitialisé au passage de l'état d'entrée de la ligne de faux à vrai suivant.

.DN BOOL Le bit de fin est activé lorsque la dernière trame du message est transférée avec succès. Le bit .DN est réinitialisé au passage de l'état d'entrée de la ligne de faux à vrai suivant.

.ST BOOL Le bit de début est activé lorsque l'automate commence l'exécution de l'instruction MSG. Le bit .ST est réinitialisé lorsque le bit .DN ou le bit .ER est activé.

.EN BOOL Le bit d'activation est activé lorsque l'état d'entrée 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'entrée de la ligne soit faux. Si l'état d'entrée de la ligne passe à faux, mais si le bit .DN et le bit .ER sont effacés, le bit .EN reste activé.

Publication 1756-RM003F-FR-P - Mai 2002

Page 87: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-3

.TO BOOL Si vous activez le bit .TO manuellement, l'automate arrête de traiter le message et active le bit .ER.

.EN_CC BOOL Le bit d'activation de cache détermine 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 série ne sont pas mises en mémoire cache, même si le bit .EN_CC est activé.

.ERR_SRC SINT Utilisé par le logiciel RSLogix 5000 pour indiquer l'erreur de chemin dans la boîte de dialogue Configuration du message.

.DestinationLink INT Pour changer le lien destinataire d'un message DH+ ou CIP avec ID source, réglez le membre sur la valeur requise.

.DestinationNode INT Pour changer la station destinataire d'un message DH+ ou CIP avec ID source, réglez le membre sur la valeur requise.

.SourceLink INT Pour changer le lien source d'un message DH+ ou CIP avec ID source, réglez le membre sur la valeur requise.

.Class INT Pour changer le paramètre de classe d'un message générique CIP, réglez le membre sur la valeur requise.

.Attribute INT Pour changer le paramètre d'attribut d'un message générique CIP, réglez le membre sur la valeur requise.

.Instance DINT Pour changer le paramètre d'occurrence d'un message générique CIP, réglez le membre sur la valeur requise.

.LocalIndex DINT Si vous utilisez un astérisque [*] pour désigner le numéro d'élément du tableau local, LocalIndex fournit le numéro d'élément. Pour changer le numéro d'élément, réglez ce membre sur la valeur requise.

Si le message Le tableau local est

lit les données élément de destination

écrit les données élément source

.Channel SINT Pour envoyer le message par un canal différent du module 1756-DHRIO, réglez ce membre sur la valeur requise. Utilisez le caractère ASCII A ou B.

.Rack SINT Pour changer le numéro de rack d'un message de bloc-transfert, réglez ce membre sur le numéro de rack requis (octal).

.Group SINT Pour changer le numéro de groupe d'un message de bloc-transfert, réglez ce membre sur le numéro de groupe requis (octal).

.Slot SINT Pour changer le numéro d'emplacement d'un message de bloc-transfert, réglez ce membre sur le numéro d'emplacement requis (octal).

Si le message passe par ce réseau

Indiquez le numéro d'emplacement en

RIO octal

ControlNet décimal (0-15)

.Path STRING Pour envoyer le message vers un automate différent, réglez ce membre sur le nouveau chemin.• Entrez le chemin en valeurs hexadécimales.• 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 créer automatiquement une partie de la nouvelle chaîne ou la nouvelle chaîne entière, cliquez avec le bouton droit de la souris sur une chaîne de caractères et choisissez Go to Message Path Editor.

Mnémonique Type de données

Description

Publication 1756-RM003F-FR-P - Mai 2002

Page 88: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-4 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Description L'instruction MSG transfère des éléments de données.

Cette instruction est une instruction de transition :

• en logique à relais, fait passer l'état d'entrée de la ligne d'effacé à activé chaque fois que l'instruction doit être exécutée ;

• en texte structuré, conditionne l'instruction afin qu'elle soit exécutée uniquement lors d'une transition (voir l'annexe C).

.RemoteIndex DINT Si vous utilisez un astérisque [*] pour désigner le numéro d'élément du tableau distant, RemoteIndex fournit le numéro d'élément. Pour changer le numéro d'élément, réglez ce membre sur la valeur requise.

Si le message Le tableau distant est

lit les données élément source

écrit les données élément de destination

.RemoteElement STRING Pour indiquer une adresse ou un point différent dans l'automate auquel est envoyé le message, réglez ce membre sur la valeur requise. Entrez l'adresse ou le point en caractères ASCII.

Si le message Le tableau distant est

lit les données élément source

écrit les données élément de destination

.UnconnnectedTimeout DINT Dépassement de temps pour les messages non connectés. La valeur par défaut est de 30 secondes.

.ConnectionRate DINT Le ConnectionRate multiplié par le TimeoutMultiplier produit le dépassement de temps des messages connectés.

• Le temps de connexion par défaut est de 7,5 secondes.• Le multiplicateur de dépassement de temps (TimeoutMultiplier) par défaut est 0 (ce qui

équivaut à un facteur de multiplication de 4).• Le dépassement de temps par défaut des messages connectés est de 30 secondes

(7,5 secondes x 4 = 30 secondes).• Pour changer le dépassement de temps, changez le taux de connexion (ConnectionRate)

et laissez le multiplicateur de dépassement de temps (TimeoutMultiplier) à sa valeur par défaut.

.TimeoutMultiplier SINT

Mnémonique Type de données

Description

ATTENTION

!L'automate traite les bits .ST, .EW, .DN et .ER de façon asynchrone à la scrutation de programme. Pour examiner ces bits en logique à relais, copiez le mot .FLAGS dans un point INT et vérifiez les bits à partir de là. Dans le cas contraire, des problèmes de temporisation peuvent invalider votre application en provoquant des dégâts matériels et des blessures corporelles.

Publication 1756-RM003F-FR-P - Mai 2002

Page 89: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-5

La taille de chaque élément dépend du type de données que vous indiquez et du type de message de commande que vous utilisez.

Exécution :

connexion avec .EN_CC = 1

état d'entrée de la ligne

bit .EW

connexion avec .EN_CC = 0

41382

bit .ST

bit .DN ou bit .ER

bit .EN

1 2 3 4 5 6 7

Où Description Où Description

1 si l'état d'entrée de la ligne est vrai.EN est activé.EW est activéla connexion est ouverte*

5 le message est envoyé.ST est activé.EW est effacé

2 le message est envoyé.ST est activé.EW est effacé

6 le message est terminé ou une erreur s'est produiteet l'état d'entrée de la ligne est toujours vrai.DN ou .ER est activé.ST est effacéla connexion est fermée (si .EN_CC = 0)

3 le message est terminé ou une erreur s'est produiteet l'état d'entrée de la ligne est faux.DN ou .ER est activé.ST est effacéla connexion est fermée (si .EN_CC = 0).EN est effacé (l'état d'entrée de la ligne est faux)

7 l'état d'entrée de la ligne passe à faux et .DN ou .ER est activé.EN est effacé

4 l'état d'entrée de la ligne est vrai et.DN ou .ER était précédemment activé.EN est activé.EW est activéla connexion est ouverte*.DN ou .ER est effacé

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 90: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-6 Instructions d'entrée/de sortie (MSG, GSV, SSV)

si l'état d'entrée de la ligne est vrai

L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

Condition Action de la logique à relais Action du texte structuré

si l'état d'entrée de la ligne est faux(ne s'applique pas au texte structuré)

fin

l'état de sortie de la ligne est réglé sur faux

examine le bit .ENbit .EN = 1

bit .EN = 0

examine le bit .EWbit .EW = 1

bit .EW = 0

examine le bit .STbit .ST = 1

bit .ST = 0

examine le bit .DNbit .DN =

bit .DN = 0

examine le bit .DNbit .DN = 1

bit .DN = 0

examine le bit .ERbit .ER = 1

bit .ER = 0

le bit .EN est effacé

examine le bit .ERbit .ER = 1 bit .ER = 0 commande de

bloc-transfert chemin du module correct

oui non

non

exécute la demande de message

le bit .EW est activé

connexion du module établie

non

oui

oui

le bit .ER est activé

Condition Action de la logique à relais Action du texte structuré

EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

Publication 1756-RM003F-FR-P - Mai 2002

Page 91: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-7

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

Condition Action de la logique à relais Action du texte structuré

Exécution de l'instruction

fin

l'état de sortie de la ligne est réglé sur faux

bit .EN = 0

examine le bit .EWbit .EW = 1

bit .EW = 0

examine le bit .STbit .ST = 1

bit .ST = 0

examine le bit .DNbit .DN = 1

bit .DN = 0

examine le bit .ERbit .ER = 1 bit .ER = 0 commande de

bloc-transfert chemin du module correct

oui non

non

les bits .EW, .ST, .TO, .DN et .ER sont effacés

le bit .EN est activéexécute la demande de message

le bit .EW est activé

connexion du module établie

non

oui

oui

le bit .ER est activé

examine le bit .ENbit .EN = 1

examine le bit .EW

bit .EW = 0

examine le bit .ST

bit .ST = 0

les bits .EW, .ST, .TO, .DN et .ER sont effacés

le bit .EN est activé

le bit .EN est activé

bit .EW = 1

bit .ST = 1

Publication 1756-RM003F-FR-P - Mai 2002

Page 92: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-8 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Codes d'erreur MSG Les codes d'erreur dépendent du type d'instruction MSG.

Codes d'erreur

Le logiciel RSLogix 5000 n'affiche pas toujours la description complète.

Code d'erreur (hex) Description Affichage dans le logiciel

0001 Echec de la connexion (voir les codes d'erreur étendus) identique à la description

0002 Ressources insuffisantes identique à la description

0003 Valeur incorrecte identique à la description

0004 Erreur de syntaxe ESE (voir les codes d'erreur étendus) identique à la description

0005 Destination inconnue, classe non acceptée, occurrence non définie ou élément de structure non défini (voir les codes d'erreur étendus)

identique à la description

0006 Espace de trame insuffisant identique à la description

0007 Connexion perdue identique à la description

0008 Service non accepté identique à la description

0009 Erreur dans le segment de données ou valeur d'attribut incorrecte identique à la description

000A Erreur de liste d'attributs identique à la description

000B L'état existe déjà identique à la description

000C Conflit de modèle d'objet identique à la description

000D L'objet existe déjà identique à la description

000E Attribut non réglable identique à la description

000F Permission refusée identique à la description

0010 Conflit d'état du dispositif identique à la description

0011 La réponse ne peut être insérée identique à la description

0012 Primitive du fragment identique à la description

0013 Données de commande insuffisantes identique à la description

0014 Attribut non accepté identique à la description

0015 Trop de données identique à la description

001A Demande de passerelle trop longue identique à la description

001B Réponse de passerelle trop longue identique à la description

001C Manque de liste d'attributs identique à la description

001D Liste d'attributs incorrecte identique à la description

001E Erreur de service intégré identique à la description

001F Panne liée à la connexion (voir les codes d'erreur étendus) identique à la description

0022 Réponse reçue incorrecte identique à la description

0025 Erreur de segment clé identique à la description

0026 Erreur ESE incorrecte identique à la description

0027 Attribut inattendu dans la liste identique à la description

0028 Erreur DeviceNet - identité de membre incorrecte identique à la description

Publication 1756-RM003F-FR-P - Mai 2002

Page 93: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-9

Codes d'erreur étendus

Le logiciel RSLogix 5000 n'affiche pas de texte pour les codes d'erreur étendus.

Les codes suivants sont les codes d'erreur étendus pour le code d'erreur 0001.

0029 Erreur DeviceNet - membre non réglable identique à la description

00D1 Le module n'est pas en état de marche erreur inconnue

00FB Port de message non accepté erreur inconnue

00FC Types de données de message non accepté erreur inconnue

00FD Message non initialisé erreur inconnue

00FE Timeout de message erreur inconnue

00FF Erreur générale (voir les codes d'erreur étendus) erreur inconnue

Code d'erreur (hex) Description Affichage dans le logiciel

Code d'erreur étendu (hex)

Description

0100 Connexion en cours d'utilisation

0103 Transport non accepté

0106 Conflit de propriété

0107 Connexion introuvable

0108 Type de connexion incorrecte

0109 Taille de connexion incorrecte

0110 Module non configuré

0111 EPR non accepté

0114 Module incorrect

0115 Type de dispositif incorrect

0116 Révision incorrecte

0118 Format de configuration incorrect

011A Plus de connexions disponibles pour l'application

0203 Timeout de connexion

0204 Timeout de message non connecté

0205 Erreur de paramètre d'envoi non connecté

0206 Message trop long

0301 Pas de mémoire tampon

0302 Bande passante non disponible

0303 Aucun filtre disponible

0305 Correspondance de signature

0311 Port non disponible

0312 Adresse de lien non disponible

0315 Type de segment incorrect

0317 Connexion non programmée

Code d'erreur étendu (hex)

Description

Publication 1756-RM003F-FR-P - Mai 2002

Page 94: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-10 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Les codes suivants sont les codes d'erreur étendus pour le code d'erreur 001F.

Les codes suivants sont les codes d'erreur étendus pour les codes d'erreur 0004 et 0005.

Les codes suivants sont les codes d'erreur étendus pour le code d'erreur 00FF.

Code d'erreur étendu (hex) Description

0203 Timeout de connexion

Code d'erreur étendu (hex) Description

0000 Insuffisance de mémoire pour l'état étendu

0001 Insuffisance d'occurrences pour l'état étendu

Code d'erreur étendu (hex)

Description

2001 ESE excessif

2002 Mauvaise valeur de paramètre

2018 Rejet de sémaphore

201B Taille trop petite

201C Taille incorrecte

2100 Echec de privilège

2101 Position de commutateur à clé incorrecte

2102 Mot de passe incorrect

2103 Aucun mot de passe attribué

2104 Adresse hors limites

2105 Adresse et quantité hors limites

2106 Données utilisées

2107 Type incorrect ou non accepté

2108 Automate en mode de transfert ou de chargement

2109 Essai de changement des dimensions de tableau

210A Nom de symbole incorrect

210B Le symbole n'existe pas

210E Echec de la recherche

210F La tâche ne peut commencer

2110 Ecriture impossible

2111 Lecture impossible

2112 Sous-programme partagé non modifiable

2113 Automate en mode de défaut

2114 Mode Run verrouillé

Code d'erreur étendu (hex)

Description

P

ublication 1756-RM003F-FR-P - Mai 2002
Page 95: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-11

Codes d'erreur PLC et SLC (.ERR)

Pour les codes d'erreur PLC et SLC, le logiciel de programmation n'affiche pas la description complète.

Code d'erreur (hex)

Description

1000 Commande ou format non admis de la part du processeur local

2000 Module de communication hors service

3000 Station décentralisée manquante, déconnectez ou mettez hors tension

4000 Processeur connecté mais en défaut (matériel)

5000 Mauvais numéro de station

6000 La fonction demandée n'est pas disponible

7000 Le processeur est en mode Program

8000 Le fichier de compatibilité du processeur n'existe pas

9000 La station décentralisée ne peut mettre la commande dans le buffer

B000 Le processeur est en cours de chargement et n'est pas accessible

F001 Le processeur a incorrectement converti l'adresse

F002 Adresse incomplète

F003 Adresse incorrecte

F004 Format d'adresse non admis - symbole non trouvé

F005 Format d'adresse non admis - le symbole a 0 ou plus de caractères que le nombre maximum accepté par le dispositif

F006 Le fichier d'adresses n'existe pas dans le processeur cible

F007 Le fichier de destination est trop petit pour le nombre de mots demandé

F008 La demande ne peut être exécutéeLa situation a changé pendant l'opération multitrame

F009 Les données ou le fichier sont trop grandsMémoire non disponible

F00A Le processeur cible ne peut mettre les informations demandées en trames

F00B Erreur de privilège ; accès refusé

F00C La fonction demandée n'est pas disponible

F00D La demande est redondante

F00E La commande ne peut être exécutée

F00F Dépassement ; dépassement d'histogramme

F010 Pas d'accès

F011 Le type de données demandé ne correspond pas aux données disponibles

F012 Paramètres de commande incorrects

F013 La référence d'adresse existe dans une zone effacée

F014 Echec de l'exécution de la commande pour une raison inconnueDépassement d'histogramme de PLC-3

F015 Erreur de conversion des données

F016 Le scrutateur n'est pas disponible pour communiquer avec un adaptateur de rack 1771

F017 L'adaptateur n'est pas disponible pour communiquer avec le module

F018 La réponse du module 1771 n'est incorrecte

F019 Etiquette en double

F01A Le propriétaire du fichier est actif - le fichier est utilisé

F01B Le propriétaire du programme est actif - quelqu'un effectue un chargement ou des modifications en ligne

F01C Le fichier disque est protégé en écriture ou non accessible pour toute autre raison (hors ligne uniquement)

F01D Le fichier disque est utilisé par une autre applicationMise à jour non effectuée (hors ligne uniquement)

Code d'erreur (hex)

Description

Publication 1756-RM003F-FR-P - Mai 2002

Page 96: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-12 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Codes d'erreur de bloc-transfert

Les codes suivants sont les codes d'erreur propres aux blocs-transferts Logix5000.

Code d'erreur (hex)

Description Affichage dans le logiciel

00D0 Le scrutateur n'a pas reçu de réponse de bloc-transfert du module de bloc-transfert dans les 3,5 secondes après la demande.

erreur inconnue

00D1 Le checksum de la réponse de lecture ne correspond pas au checksum des données erreur inconnue

00D2 Le scrutateur a demandé une lecture ou une écriture, mais le module de bloc-transfert a répondu avec l'inverse

erreur inconnue

00D3 Le scrutateur a demandé une longueur et le module de bloc-transfert a répondu avec une longueur différente

erreur inconnue

00D6 Le scrutateur a reçu une réponse du module de bloc-transfert indiquant que la demande d'écriture a échoué

erreur inconnue

00EA Le scrutateur n'a pas été configuré pour communiquer avec le rack qui doit contenir ce module de bloc-transfert

erreur inconnue

00EB L'emplacement logique indiqué n'est pas disponible pour la taille de rack donnée erreur inconnue

00EC Une demande de bloc-transfert est en cours et une réponse est requise avant qu'une autre demande ne puisse commencer

erreur inconnue

00ED La taille des demandes de bloc-transfert ne correspond pas aux tailles de demandes de bloc-transfert valables

erreur inconnue

00EE Le type de demande de bloc-transfert ne correspond pas au BT_READ ou BT_WRITE attendu erreur inconnue

00EF Le scrutateur n'a pas trouvé d'emplacement disponible dans la table des blocs-transferts pour permettre la demande de bloc-transfert

erreur inconnue

00F0 Le scrutateur a reçu une demande de réinitialisation des canaux d'E/S décentralisées alors qu'il y avait des blocs-transferts en attente

erreur inconnue

00F3 Les files d'attente pour les bloc-transferts à distance sont pleines erreur inconnue

00F5 Aucun canal de communication n'est configuré pour le rack ou l'emplacement demandé erreur inconnue

00F6 Aucun canal de communication n'est configuré pour les E/S décentralisées erreur inconnue

00F7 Le timeout du bloc-transfert, défini dans l'instruction, a été dépassé avant la fin erreur inconnue

00F8 Erreur du protocole de bloc-transfert - bloc-transfert non sollicité erreur inconnue

00F9 Les données de bloc-transfert ont été perdues en raison d'un mauvais canal de communication erreur inconnue

00FA Le module de bloc-transfert a demandé une longueur différente de celle de l'instruction de bloc-transfert associée

erreur inconnue

00FB Le checksum des données de lecture du bloc-transfert est faux erreur inconnue

00FC Un transfert incorrect de données d'écriture du bloc-transfert a été effectué entre l'adaptateur et le module de bloc-transfert

erreur inconnue

00FD La taille du bloc-transfert plus celle de l'index de la table des données de bloc-transfert est supérieure à la taille du fichier de la table des données de bloc-transfert

erreur inconnue

Publication 1756-RM003F-FR-P - Mai 2002

Page 97: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-13

Spécification 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 définir les détails du message.

Les détails que vous configurez dépendent du type de message que vous sélectionnez.

Cliquez ici pour configurer l'instruction MSG

42976

Si le dispositif cible est un Sélectionnez l'un de ces types de message Voir page

Automate Logix5000 Lecture de table de données CIP 3-14

Ecriture de table de données CIP

Module d'E/S que vous configurez avec le logiciel RSLogix 5000

Reconfiguration du module 3-14

CIP générique 3-16

Automate PLC-5 Ecriture de type PLC5 3-17

Ecriture de type PLC5

Lecture de gamme de mots PLC5

Ecriture de gamme de mots PLC5

Automate SLCAutomate MicroLogix

Ecriture de type SLC 3-18

Ecriture de type SLC

Module de bloc-transfert Bloc-transfert lecture 3-19

Bloc-transfert écriture

Processeur PLC-3 Ecriture de type PLC3 3-20

Ecriture de type PLC3

Lecture de gamme de mots PLC3

Ecriture de gamme de mots PLC3

Processeur PLC-2 Lecture non protégée PLC2 3-21

Ecriture non protégée PLC2

Publication 1756-RM003F-FR-P - Mai 2002

Page 98: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-14 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Vous devez définir ces informations de configuration

Spécification des messages de lecture et d'écriture du fichier de données CIP

Les types de messages de lecture et d'écriture du fichier de données CIP transfère les données entre les automates Logix5000.

Reconfiguration d'un module d'E/S

Utilisez le message de reconfiguration du module (Module Reconfigure) pour envoyer une nouvelle configuration vers un module d'E/S. Pendant la reconfiguration :

• les modules d'entrées continuent d'envoyer des données d'entrée à l'automate ;

• les modules de sorties continuent de commander leurs équipements de sortie.

Un message de reconfiguration du module requiert les propriétés de configuration suivantes :

Pour cette propriété Indiquez

Elément source • Si vous sélectionnez un type de message de lecture, l'élément source est l'adresse des données que vous voulez lire dans le dispositif cible. Utilisez la syntaxe d'adressage du dispositif cible.

• Si vous sélectionnez un type de message d'écriture, le point source est le premier élément du point que vous voulez envoyer vers l'équipement cible.

Nombre d'éléments Le nombre d'éléments que vous lisez/écrivez dépend du type de données que vous utilisez. Un élément renvoie à un « bloc » de données liées. Par exemple, le point timer1 est un élément constitué d'une structure de contrôle de temporisateur.

Elément de destination • Si vous sélectionnez un type de message de lecture, l'élément de destination est le premier élément du point dans l'automate Logix5000 où vous voulez stocker les données que vous lisez à partir de l'équipement cible.

• Si vous sélectionnez un type de message d'écriture, l'élément de destination est l'adresse de l'emplacement dans le dispositif cible où vous voulez écrire les données.

Sélectionnez cette commande Si vous voulez

Lecture de table de données CIP lire des données à partir d'un autre automate.Les types source et de destination doivent concorder.

Ecriture de table de données CIP écrire des données vers un autre automate.Les types source et de destination doivent concorder.

Dans cette propriété Sélectionnez

Type de message Reconfiguration du module

Publication 1756-RM003F-FR-P - Mai 2002

Page 99: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-15

Exemple : Pour reconfigurer un module d'E/S :

1. Réglez le membre requis du point de configuration du module sur la nouvelle valeur.

2. Envoyez un message de reconfiguration au module.

Lorsque reconfigure[5] est activé, réglez l'alarme haute sur 60 pour le module local dans l'emplacement 4. Le message de reconfiguration du module envoie alors la nouvelle valeur de l'alarme au module. L'instruction ONS empêche la ligne d'envoyer des messages multiples au module pendant que reconfigure[5] est actif.

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];

Publication 1756-RM003F-FR-P - Mai 2002

Page 100: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-16 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Définition des messages CIP génériques

Un message CIP générique exécute une opération particulière sur un module d'E/S.

Si vous voulez Dans cette propriété Tapez ou sélectionnez

Effectuer un test d'impulsion sur un module de sorties TOR

Type de message CIP générique

Type de service Test d'impulsion

Source tag_name de type INT [5]

Ce tableau contient :

tag_name[0] bit de masque de points à tester (ne teste qu'un point à la fois)

tag_name[1] réservé, laisser à 0

tag_name[2] largeur d'impulsion (centaines de µs, généralement 20)

tag_name[3] délai de passage par zéro pour E/S ControlLogix (centaines de µs, généralement 40)

tag_name[4] vérifier le délai

Destination laisser en blanc

Réinitialiser les fusibles électroniques sur un module de sorties TOR

Type de message CIP générique

Type de service Réinitialiser le fusible électronique

Source tag name de type DINTCe point représente un masque de bit des points pour la réinitialisation des fusibles.

Destination laisser en blanc

Réinitialiser les diagnostics verrouillés sur un module d'entrées

Type de message CIP générique

Type de service Réinitialiser les diagnostics verrouillés (I)

Source tag_name de type DINTCe point représente un masque de bit des points pour la réinitialisation des diagnostics.

Réinitialiser les diagnostics verrouillés sur un module de sorties

Type de message CIP générique

Type de service Réinitialiser les diagnostics verrouillés (O)

Source tag_name de type DINTCe point représente un masque de bit des points pour la réinitialisation des diagnostics.

Déverrouiller l'alarme d'un module d'entrées analogiques

Type de message CIP générique

Type de service Sélectionnez l'alarme que vous voulez déverrouiller :• Déverrouiller toutes les alarmes (I)• Déverrouiller l'alarme haute analogique (I)• Déverrouiller l'alarme haute haute analogique (I)• Déverrouiller l'alarme basse analogique (I)• Déverrouiller l'alarme basse basse analogique (I)• Déverrouiller l'alarme de variation (I)

Instance Canal de l'alarme que vous voulez déverrouiller

Publication 1756-RM003F-FR-P - Mai 2002

Page 101: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-17

Définition des messages PLC-5

Utilisez les types de message PLC-5 pour communiquer avec les automates PLC-5.

Le tableau suivant indique les types de données à utiliser avec les messages de lecture et d'écriture de type PLC5.

Déverrouiller l'alarme d'un module de sorties analogiques

Type de message CIP générique

Type de service Sélectionnez l'alarme que vous voulez déverrouiller :• Déverrouiller toutes les alarmes (O)• Déverrouiller l'alarme haute (O)• Déverrouiller l'alarme basse (O)• Déverrouiller l'alarme d'accélération ou de décélération (O)

Instance Canal de l'alarme que vous voulez déverrouiller

Si vous voulez Dans cette propriété Tapez ou sélectionnez

Sélectionnez cette commande Si vous voulez

Ecriture de type PLC5 Lire des données de type nombre entier à 16 bits, virgule flottante ou chaîne et maintenir l'intégrité des données. Voir le tableau 3.1, page 3-17.

Ecriture de type PLC5 Ecrire des données de type nombre entier à 16 bits, virgule flottante ou chaîne et maintenir l'intégrité des données. Voir le tableau 3.1, page 3-17

Lecture de gamme de mots PLC5 Lire une gamme contiguë de mots de 16 bits dans la mémoire du PLC-5 quel que soit le type de données.Cette commande commence à l'adresse définie comme élément source et lit de façon séquentielle le nombre de mots de 16 bits demandé.Les données de l'élément source sont stockées, en commençant à l'adresse indiquée comme point de destination.

Ecriture de gamme de mots PLC5 Ecrire une gamme contiguë de mots de 16 bits à partir de la mémoire du Logix5000 quel que soit le type de données vers la mémoire du PLC-5.Cette commande commence à l'adresse définie comme point source et lit de façon séquentielle le nombre de mots de 16 bits demandé.Les données du point source sont stockées, en commençant à l'adresse indiquée comme élément de destination dans le processeur PLC-5.

Tableau 3.1 Types de données pour les messages de lecture et d'écriture de type PLC5

Pour ce type de données PLC-5

Utilisez ce type de données Logix5000

B INT

F REAL

N INT

DINT (n'écrivez des valeurs DINT sur un automate PLC-5 que si la valeur est ≥ −32 768 et ≤ 32 767.)

S INT

ST STRING

Publication 1756-RM003F-FR-P - Mai 2002

Page 102: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-18 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Les commandes de type lecture et écriture fonctionnent également avec les processeurs SLC 5/03 (OS303 et ultérieur), SLC 5/04 (OS402 et ultérieur) et SLC 5/05.

Le diagramme suivant montre comment les commandes de type lecture directe et lecture ordonnée diffèrent. L'exemple utilise des commandes de lecture d'un processeur PLC-5 vers un automate Logix5000.

Définition des messages SLC

Utilisez les types de message SLC pour communiquer avec les automates SLC et MicroLogix. Le tableau suivant indique à quels types de données l'instruction vous permet d'accéder. Le tableau indique également le type de données Logix5000 correspondant.

mots de 16 bits dans processeur PLC-5

mots de 32 bits dans automate Logix5000

Les commandes de lecture directe conservent la structure et la valeur des données.

1

2

3

4

Commande de lecture directe

1

2

3

4

mots de 16 bits dans processeur PLC-5

mots de 32 bits dans automate Logix5000

Les commandes de lecture ordonnée remplissent le point de destination de façon contiguë. La structure et la valeur des données changent selon

le type des données de destination.

1

2

3

4

Commande de lecture ordonnée

1

3

2

4

Pour ce type de données SLC ou MicroLogix

Utilisez ce type de données Logix5000

F REAL

L (automates MicroLogix 1200 et 1500) DINT

N INT

Publication 1756-RM003F-FR-P - Mai 2002

Page 103: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-19

Définition des messages de blocs-transferts

Les types de message de blocs-transferts servent à communiquer avec les modules de bloc-transfert sur un réseau d'E/S décentralisées (RIO).

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 données demandées, excepté pour les structures MESSAGE, AXIS et MODULE ;

• précisez la quantité de nombres entiers de 16 bits (INT) à envoyer ou à recevoir. Vous pouvez indiquer de 0 à 64 nombres entiers.

Si vous voulez Sélectionnez cette commande

lire des données à partir du module de bloc-transfert.Ce type de message remplace l'instruction BTR.

Bloc-transfert lecture

écrire des données vers un module de bloc-transfert.Ce type de message remplace l'instruction BTW.

Bloc-transfert écriture

Si vous voulez que Indiquez

le module de bloc-transfert détermine la quantité de nombres entiers de 16 bits à envoyer (BTR).

0 comme nombre d'éléments

l'automate envoie 64 nombres entiers (BTW).

Publication 1756-RM003F-FR-P - Mai 2002

Page 104: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-20 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Définition des messages PLC-3

Les messages de type PLC-3 sont conçus pour les processeurs PLC-3.

Le diagramme suivant montre comment les commandes de type lecture directe et lecture ordonnée diffèrent. L'exemple utilise des commandes de lecture d'un processeur PLC-3 vers un automate Logix5000.

Sélectionnez cette commande Si vous voulez

Ecriture de type PLC3 lire des données de nombres entiers ou de type REAL.Pour les nombres entiers, cette commande lit des entiers de 16 bits à partir du processeur PLC-3 et les stocke dans des tableaux de données SINT, INT ou DINT dans l'automate Logix5000 et maintient l'intégrité des données.Cette commande lit également les données à virgule flottante à partir du processeur PLC-3 et les stocke dans un point de type de données REAL dans l'automate Logix5000.

Ecriture de type PLC3 écrire des données de nombres entiers ou de type REAL.Cette commande écrit des données SINT ou INT, dans le fichier de nombres entiers PLC-3 et maintient l'intégrité des données. Vous pouvez écrire des données DINT tant qu'elles entrent dans un type de données INT (−32 768 ≥ données ≤ 32 767).Cette commande écrit également les données REAL à partir de l'automate Logix5000 vers un fichier à virgule flottante PLC-3 (fichier de type F).

Lecture de gamme de mots PLC3 lire une gamme contiguë de mots de 16 bits dans la mémoire du PLC-3 quel que soit le type de données.Cette commande commence à l'adresse définie comme élément source et lit de façon séquentielle le nombre de mots de 16 bits demandé.Les données de l'élément source sont stockées, en commençant à l'adresse indiquée comme point de destination.

Ecriture de gamme de mots PLC3 écrire une gamme contiguë de mots de 16 bits à partir de la mémoire du Logix5000 quel que soit le type de données vers la mémoire du PLC-3.Cette commande commence à l'adresse définie comme point source et lit de façon séquentielle le nombre de mots de 16 bits demandé.Les données du point source sont stockées, en commençant à l'adresse indiquée comme élément de destination dans le processeur PLC-3.

mots de 16 bits dans processeur PLC-3

mots de 32 bits dans automate Logix5000

Les commandes de lecture directe conservent la structure et la valeur des données.

1

2

3

4

Commande de lecture directe

1

2

3

4

mots de 16 bits dans processeur PLC-3

mots de 32 bits dans automate Logix5000

Les commandes de lecture ordonnée remplissent le point de destination de façon contiguë. La structure et la valeur des données changent selon

le type des données de destination.

1

2

3

4

Commande de lecture ordonnée

1

3

2

4

Publication 1756-RM003F-FR-P - Mai 2002

Page 105: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-21

Définition des messages PLC-2

Les messages de type PLC-2 sont conçus pour les processeurs PLC-2.

Le message de transfert utilise des mots de 16 bits : assurez-vous que le point du Logix5000 stocke les données transférées de façon appropriée (généralement sous forme de tableau INT).

Sélectionnez cette commande Si vous voulez

Lecture non protégée PLC2 lire des mots de 16 bits à partir de n'importe quelle zone de la table de données PLC-2 ou du fichier de compatibilité PLC-2 d'un autre processeur.

Ecriture non protégée PLC2 écrire des mots de 16 bits dans n'importe quelle zone de la table de données PLC-2 ou du fichier de compatibilité PLC-2 d'un autre processeur.

Publication 1756-RM003F-FR-P - Mai 2002

Page 106: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-22 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Exemples de configuration MSG

Les exemples suivants montrent des points source et destination et des éléments pour différentes combinaisons d’automates.

Pour des instructions MSG ayant pour origine un automate Logix5000 et écrivant dans un autre automate :

Pour des instructions MSG ayant pour origine un automate Logix5000 et lisant à partir d'un autre automate :

Chemin de message Exemple de source et de destination

Logix5000 → Logix5000 point source array_1[0]

point de destination array_2[0]

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-5Logix5000 → SLC

point source array_1[0]

élément de destination N7:10

Vous pouvez utiliser un point d'alias pour le point source (dans l'automate Logix5000 d'origine).

Logix5000 → PLC-2 point source array_1[0]

élément de destination 010

Chemin de message Exemple de source et de destination

Logix5000 → Logix5000 point source array_1[0]

point de destination 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-5Logix5000 → SLC

élément source N7:10

point de destination array_1[0]

Vous pouvez utiliser un point d'alias pour le point de destination (dans l'automate Logix5000 d'origine).

Logix5000 → PLC-2 élément source 010

point de destination array_1[0]

Publication 1756-RM003F-FR-P - Mai 2002

Page 107: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-23

Définition de la communication

Lorsque vous configurez une instruction MSG, vous précisez ces détails dans l'onglet Communication.

Définition d'un chemin

Le chemin décrit l'acheminement du message vers la destination.

• Si vous ajoutez le module de communication local, le module de communication distant et l'automate ou l'équipement destinataire à la configuration des E/S de l'automate, le bouton Naviguer (Browse) vous permet de sélectionner la destination.

43008

Navigateur du chemin du message

Chemin:

peer_controller

peer_controller

I/O Configuration

[0] 1756-CNB/x Local_CNB

2 [0] 1756-CNB/x chassis_b

[1] 1756-L55/x peer_controller

peer_controller

Publication 1756-RM003F-FR-P - Mai 2002

Page 108: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-24 Instructions d'entrée/de sortie (MSG, GSV, SSV)

• Certains modules ou équipements de communication distants ne sont pas disponibles pour la configuration des E/S de l'automate. Si le cas ce présente, complétez le chemin comme suit :

Où Pour Est

port fond de panier de tout automate ou module 1756 1

port DF1 d’un automate Logix5000 2

port ControlNet d’un module 1756-CNB

port Ethernet d'un module 1756-ENBx ou -ENET

port DH+ via le canal A d’un module 1756-DHRIO

port DH+ via le canal B d’un module 1756-DHRIO 3

address fond de panier ControlLogix le numéro de l'emplacement

réseau DF1 l'adresse de station (0-254)

réseau ControlNet le numéro de station (1-99 décimal)

réseau DH+ 8# suivi du numéro de station (1-77 octal)Par exemple, pour définir l'adresse de station octale de 37, tapez 8#37.

réseau EtherNet/IP Vous pouvez indiquer un module sur un réseau Ethernet/IP à l'aide d'un des formats suivants :

adresse IP (ex. : 130.130.130.5)adresse IP:Port (ex. : 130.130.130.5:24)nom DNS (ex. : tanks)nom DNS:Port (ex. : tanks:24)

1. Utilisez le bouton Naviguer (Browse) pour sélectionner le module de communication local.

2. Dans la boîte 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.

local_module,port,address,port,address

4. Tapez les combinaisons de port et d'adresse supplémentaires, si nécessaire.

Publication 1756-RM00

3F-FR-P - Mai 200 2
Page 109: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-25

• Pour les messages de bloc-transfert, ajoutez les modules suivants à la configuration des E/S de l'automate :

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.

Pour les blocs-transferts sur ce réseau

Ajoutez ces modules à la configuration des E/S

ControlNet • module de communication local (ex. : module 1756-CNB)• module adaptateur distant (ex. : module 1771-ACN)

RIO • 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 châssis• module de bloc-transfert (facultatif)

EXEMPLE Spécification d'un chemin sur ControlNet

Chemin : peer_controller

où :

peer_controller est le nom de l'automate qui reçoit le message.

42042réseau ControlNet

MESSAGE

I/O Configuration

[0] 1756-CNB/x Local_CNB

2 [0] 1756-CNB/x chassis_b

[3] 1756-L55/x peer_controller

Publication 1756-RM003F-FR-P - Mai 2002

Page 110: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-26 Instructions d'entrée/de sortie (MSG, GSV, SSV)

EXEMPLE Spécification d'un chemin sur EtherNet/IP

Chemin : Local_ENB,2,127.127.127.12

MESSAGE

interrupteur

I/O Configuration

[1] 1756-ENBx Local_ENB

Où Est

Local_ENB le nom du module 1756-ENBx dans le châssis local

2 le port Ethernet du module 1756-ENBx dans le châssis local

127.127.127.12 l'adresse IP de l'automate SLC 5/05

EXEMPLE Spécification d'un chemin sur DH+

Chemin : Local_DHRIO

où :

Local_DHRIO est le nom du module 1756-DHRIO dans le même châssis que l'automate qui envoie le message.

réseau DH+

MESSAGE

I/O Configuration

[1] 1756-DHRIO Local_DHRIO

Publication 1756-RM003F-FR-P - Mai 2002

Page 111: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-27

Définition d'une méthode de communication ou d'une adresse de module

Utilisez le tableau suivant pour sélectionner une méthode de communication ou une adresse de module pour le message.

Si le dispositif de destination est un

Sélectionnez Et indiquez

Automate Logix5000 CIP aucune autre spécification requise

Automate PLC-5 sur réseau EtherNet/IP

Automate PLC-5 sur réseau ControlNet

Automate SLC 5/05

Automate PLC-5 sur réseau DH+ DH+ Canal : Canal A ou B du module 1756-DHRIO connecté au réseau DH+

Automate SLC sur réseau DH+ Lien source : Identificateur de liaison attribué au fond de panier de l'automate dans la table d'acheminement du module 1756-DHRIO. (La station source dans la table d'acheminement est automatiquement le numéro d'emplacement de l'automate.)

Processeur PLC-3 Lien destinataire : Identificateur de la liaison DH+ à l'endroit où le dispositif cible réside

Processeur PLC-2 Station destinataire : Adresse de station de l'équipement cible, en octal

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 décentralisées, indiquez 0 pour Lien source et Lien destinataire.

Application sur une station de travail qui reçoit un message non sollicité acheminé via un réseau Ethernet/IP ou ControlNet à l'aide de RSLinx

CIP avec ID source

(Ceci permet à l'application de recevoir des données d'un automate.)

Lien source : Identificateur distant de la rubrique dans le logiciel RSLinx

Lien destinataire : Identificateur de liaison virtuelle réglé dans RSLinx (0-65535)

Station destinataire : Identificateur de destination (0-77 octal) fourni par l'application à RSLinx Pour une rubrique DDE dans RSLinx, utilisez 77.

Le numéro d'emplacement de l'automate ControlLogix est utilisé comme station source.

Module de bloc-transfert sur un réseau d'E/S décentralisées

RIO Canal : Canal A ou B du module 1756-DHRIO connecté au réseau RIO

Rack Numéro de rack (octal) du module

Groupe Numéro de groupe du module

Emplacement Numéro de l'emplacement dans lequel est le module

Module de bloc-transfert sur réseau ControlNet

ControlNet Emplacement Numéro de l'emplacement dans lequel est le module

Publication 1756-RM003F-FR-P - Mai 2002

Page 112: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-28 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Choix d'une option de cache

Certains types de messages utilisent une connexion pour envoyer ou recevoir des données. Certains vous permettent également de laisser la connexion ouverte (cache) ou de la fermer lorsque le message est transmis. Le tableau suivant indique quels messages utilisent une connexion et si vous pouvez ou non la laisser ouverte.

1 Seuls certains types de modules cibles requièrent une connexion.

2 N'utilisez la cache que si le module cible requiert une connexion.

Utilisez la procédure 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 ?)

Ce type de message Utilisant cette méthode de communication

Utilise une connexion

Que vous pouvez laisser ouverte

Lecture ou écriture de table de données CIP

CIP ✓ ✓

PLC2, PLC3, PLC5 ou SLC (tous types) CIP

CIP avec ID source

DH+ ✓ ✓

CIP générique - ✓ 1 ✓ 2

Bloc-transfert lecture ou écriture - ✓ ✓

Si Action

Oui A. Désactivez la case Connexion cache (Cache Connection).B. Sautez l'étape 2.

Non Passez à l'étape 2.

Publication 1756-RM003F-FR-P - Mai 2002

Page 113: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-29

2. Choix d'une option de cache

Si le message est destiné à un Action

automate A combien d'automates cet automate envoie-t-il de messages que vous pouvez mettre en cache ?

Si Action

16 automates maximum Laissez la case Connexion cache sélectionnée (cochée).

plus de 16 automates 1. Sélectionnez les 16 automates qui requièrent les messages les plus fréquents.

2. Ce message va-t-il vers l'un de ces automates ?

module de bloc-transfert Combien d'équipements requièrent des instructions de bloc-transfert ?

Si Action

16 équipements maximum

Laissez la case Connexion cache sélectionnée (cochée).

plus de 16 équipements 1. Sélectionnez 16 équipements qui requièrent les mises à jours les plus fréquentes.

2. Ce message va-t-il vers l'un de ces équipements ?

Si Action

Oui Laissez la case Connexion cache cochée.

Non Désactivez la case Connexion cache.

Si Action

Oui Laissez la case Connexion cache cochée.

Non Désactivez la case Connexion cache.

Publication 1756-RM003F-FR-P - Mai 2002

Page 114: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-30 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Lire la valeur système (GSV) et Définir la valeur système (SSV)

Les instructions GSV/SSV récupèrent et activent les données système de l’automate stockées dans les objets.

Opérandes :

Logique à relais

Texte structuré

Les opérandes de texte structuré sont les mêmes que pour les instructions GSV et SSV en logique à relais.

Description : Les instructions GSV/SSV récupèrent et activent les données système de l’automate stockées dans les objets. L’automate stocke les données système dans des objets. Il n’y a pas de fichier d’état, comme dans le processeur PLC-5.

Lorsqu’elle est activée, l’instruction GSV récupère les informations indiquées et les stocke dans la destination. Lorsqu’elle est activée, l’instruction SSV active l’attribut indiqué avec des données de la source.

Opérande Type Format Description

Nom de la classe nom nom de l'objet

Nom de l'occurrence nom nom de l'objet spécifique, lorsque celui-ci a besoin d'un nom

Nom d'attribut nom attribut de l'objetle type des données dépend de l'attribut sélectionné

Destination (GSV) SINTINTDINTREAL

point destination des données de l'attribut

Source (SSV) SINTINTDINTREAL

point point contenant les données que vous voulez copier dans l'attribut

GSV(ClassName,InstanceName,AttributeName,Dest);

SSV(ClassName,InstanceName,AttributeName,Source);

Publication 1756-RM003F-FR-P - Mai 2002

Page 115: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-31

Lorsque vous entrez une instruction GSV/SSV, le logiciel de programmation affiche les classes d’objets valables, les noms d’objets et les noms d’attributs pour chaque instruction. Pour l’instruction GSV, vous pouvez obtenir des valeurs pour tous les attributs disponibles. Pour l'instruction SSV, le logiciel n'affiche que les attributs pouvant être activés (SSV).

Si la taille de la source ou de la destination est trop petite, l'instruction n'est pas exécutée et un défaut mineur est enregistré. La section suivante, Objets GSV/SSV, définit les attributs de chaque objet et leurs types de données. Par exemple, l'attribut MajorFaultRecord de l'objet Programme nécessite un type de données DINT[11].

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur :

Exécution :

ATTENTION

!Utilisez les instructions GSV/SSV avec précaution. La modification des objets peut entraîner un fonctionnement inattendu de l’automate ou des blessures.

Un défaut mineur se produit si Type du défaut Code du défaut

l'adresse d'objet est incorrecte 4 5

l'objet indiqué n'accepte pas GSV/SSV 4 6

l'attribut est incorrect 4 6

les informations fournies ne sont pas suffisantes pour une instruction SSV

4 6

la destination GSV n'était pas assez longue pour contenir les données demandées

4 7

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction récupère ou active la valeur indiquée. récupère ou active la valeur indiquée.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 116: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-32 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Objets GSV/SSV Lorsque vous entrez une instruction GSV/SSV, vous indiquez l’objet et l’attribut auquel vous voulez accéder. Dans certains cas, il y a plus d’une occurrence du même type d’objet, vous devrez peut-être donc indiquer aussi le nom de l’objet. Par exemple, il peut y avoir plusieurs tâches dans votre application. Chaque tâche a son propre objet TASK auquel vous accédez par le nom de la tâche.

Vous pouvez accéder aux objets suivants :

Accès à l'objet CONTROLLER

L'objet CONTROLLER fournit des informations d'état sur l'exécution d'un automate.

ATTENTION

!Pour l'instruction GSV, seule la taille de données indiquée est copiée vers la destination. Par exemple, si l'attribut est défini comme SINT et la destination est DINT, seuls les 8 bits inférieurs de la destination DINT sont mis à jour, les autres 24 bits restent inchangés.

Pour des informations sur cet objet Voir la page ou la publication suivante

AXIS ControlLogix Motion Module Setup and Configuration Manual (publication 1756-UM006)

CONTROLLER 3-32

CONTROLLERDEVICE 3-33

CST 3-35

DF1 3-36

FAULTLOG 3-39

MESSAGE 3-40

MODULE 3-42

MOTIONGROUP 3-43

PROGRAM 3-44

ROUTINE 3-45

SERIALPORT 3-45

TASK 3-47

WALLCLOCKTIME 3-47

Attribut Type de données

Instruction Description

TimeSlice INT GSVSSV

Pourcentage d'UC disponible attribué aux communications.Les valeurs correctes vont de 10 à 90. La valeur ne peut être changée lorsque le commutateur à clé de l'automate est en position Run.

Publication 1756-RM003F-FR-P - Mai 2002

Page 117: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-33

Accès à l'objet CONTROLLERDEVICE

L'objet CONTROLLERDEVICE identifie la partie matérielle de l'automate.

Attribut Type de données

Instruction Description

DeviceName SINT[33] GSV Chaîne ASCII qui identifie la référence de l'automate et de la carte mémoire.Le premier octet contient le nombre de caractères ASCII renvoyés dans la chaîne de tableau.

ProductCode INT GSV Identifie le type de l'automate

ProductRev INT GSV Identifie la version du produit. L'affichage doit être hexadécimal.L'octet de poids faible contient la révision majeure ; l'octet de poids fort contient la révision mineure.

SerialNumber DINT GSV Numéro de série du dispositif.Le numéro de série est attribué lors de la construction du dispositif.

Ce code produit : Identifie cet automate Logix :

3 5550

15 5860

41 5433

42 5434

43 5320

50 5553

51 5555

Publication 1756-RM003F-FR-P - Mai 2002

Page 118: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-34 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Status INT GSV Les bits identifient l'état :Les bits 3 à 0 sont réservés

Bits d'état du dispositifBits 7-4 : Signification :0000 réservé0001 mise à jour par mémoire flash en cours0010 réservé0011 réservé0100 mémoire flash défectueuse0101 en défaut0110 exécution0111 programme

Bits d'état de défautBits 11-8 : Signification : 0001 défaut mineur récupérable0010 défaut mineur non récupérable0100 défaut majeur récupérable1000 défaut majeur non récupérable

Bits d'état propres au Logix5000Bits 13-12 : Signification : 01 commutateur à clé sur Run10 commutateur à clé sur Program11 commutateur à clé sur RemoteBits 15-14 : Signification : 01 l'automate change de mode10 mode de débogage si l'automate est en

mode Run

Type INT GSV Identifie le dispositif comme automate.Automate = 14

Vendor INT GSV Identifie le fournisseur du dispositif.Allen-Bradley = 0001

Attribut Type de données

Instruction Description

Publication 1756-RM003F-FR-P - Mai 2002

Page 119: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-35

Accès à l'objet CST

L'objet CST (temps système coordonné) fournit le temps système coordonné à des dispositifs dans un châssis.

Attribut Type de données

Instruction Description

CurrentStatus INT GSV Etat en cours du temps système coordonné. Les bits identifient :

Bit : Signification :

0 panne matérielle du temporisateur : le matériel du temporisateur interne du dispositif est en état de défaut

1 effet de rampe activé : la valeur en cours des 16 bits inférieurs du temporisateur monte à la valeur requise, au lieu de sauter à la valeur inférieure. Ces bits sont manipulés par la méthode de synchronisation par incréments propre au réseau.

2 maître de temps système : l'objet CST est une source de temps maître dans le système ControlLogix

3 synchronisé : la valeur en cours de 64 bits de l'objet CST est synchronisée par un objet CST maître via une mise à jour du temps système

4 maître de réseau local : l'objet CST est la source de temps maître du réseau local

5 en mode relais : l'objet CST agit en mode relais temporel

6 doublon de maître détecté : un maître de temps du réseau local en double a été détecté. Ce bit est toujours à 0 pour les stations temporelles

7 non utilisé

8-9 00 = station temporelle01 = station maître temporelle10 = station de relais temporelle11 = non utilisé

10-15 non utilisé

CurrentValue DINT[2] GSV Valeur en cours du temporisateur. DINT[0] contient les 32 bits inférieurs ; DINT[1] contient les 32 bits supérieurs.La source de temporisateur est ajustée pour correspondre à la valeur fournie par les services de mise à jour et par la synchronisation du réseau de communication local. L'ajustement est soit une montée jusqu'à la valeur requise, soit un réglage immédiat à cette valeur, tel qu'indiqué dans l'attribut CurrentStatus.

Publication 1756-RM003F-FR-P - Mai 2002

Page 120: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-36 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Accès à l'objet DF1

L'objet DF1 fournit une interface au driver de communication DF1 que vous pouvez configurer pour le port série.

Attribut Type de données

Instruction Description

ACKTimeout DINT GSV La durée d'attente pour un accusé de réception à une transmission de message (point à point et maître uniquement).Les valeurs correctes vont de 0 à 32 767. Délai par intervalles de 20 ms. La valeur par défaut est 50 (1 seconde).

DiagnosticCounters INT[19] GSV Tableau de compteurs de diagnostic pour le driver de communication DF1.

offset de mot point à point DF1esclave DF1maître0 signature (0x0043)signature (0x0042)signature (0x0044)1 bits de modembits de modembits de modem2 trames envoyéestrames envoyéestrames envoyées3 trames reçuestrames reçuestrames reçues4 trames non délivréestrames non délivréestrames non délivrées5 inutilisémessages réessayésmessages réessayés6 NAK reçusNAK reçusinutilisé7 ENQ reçustrames d'appel reçuesinutilisé8 trames défectueuses non acquittéestrames défectueuses non acquittéestrames défectueuses non acquittées9 pas de mémoire envoyée NAKpas de mémoire non acquittéeinutilisé10 trames reçues en doubletrames reçues en doubletrames reçues en double11 mauvais caractères reçusinutiliséinutilisé12 comptage de récupération DCDcomptage de récupération DCDcomptage de récupération DCD13 comptage de modem perducomptage de modem perducomptage de modem perdu14 inutiliséinutilisédurée de scrutation prioritaire maximum15 inutiliséinutilisédernière durée de scrutation prioritaire16 inutiliséinutilisédurée de scrutation normale maximum17 inutiliséinutilisédernière durée de scrutation normale18 ENQ envoyésinutiliséinutilisé

DuplicateDetection SINT GSV Permet la détection des messages en double.Valeur : Signification : 0 détection de messages en double désactivéeautre que zéro détection de message en double désactivée

EmbeddedResponseEnable SINT GSV Active la fonctionnalité de réponse intégrée (point à point uniquement).Valeur : Signification : 0 lancé uniquement après la réception d'une

réponse (valeur par défaut)1 activé sans condition

ENQTransmitLimit SINT GSV Le nombre de demandes (ENQ) à envoyer après un timeout ACK (point à point uniquement).Les valeurs correctes vont de 0 à 127. La valeur par défaut est 3.

EOTSuppression SINT GSV Active la suppression des transmissions EOT en réponse aux trames d'appel (esclave uniquement).Valeur : Signification : 0 suppression EOT désactivée (désactivé)autre que zéro suppression EOT activée

ErrorDetection SINT GSV Indique le schéma de détection des erreurs.Valeur : Signification : 0 BCC (valeur par défaut)1 CRC

Publication 1756-RM003F-FR-P - Mai 2002

Page 121: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-37

MasterMessageTransmit SINT GSV Valeur en cours de la transmission de message maître (maître uniquement).Valeur : Signification : 0 entre appels de station 1en séquence d'appel

(au lieu du numéro de station du maître)La valeur par défaut est 0.

NAKReceiveLimit SINT GSV Le nombre de NAK reçus en réponse à un message avant l'arrêt de la transmission (communication point à point uniquement).Les valeurs correctes vont de 0 à 127. La valeur par défaut est 3.

NormalPollGroupSize INT GSV Nombre de stations à appeler dans le tableau d'appel normal des stations après l'appel de toutes les stations dans le tableau d'appel prioritaire des stations (maître uniquement).Les valeurs correctes vont de 0 à 255. La valeur par défaut est 0.

PollingMode SINT GSV Mode d'appel en cours (maître uniquement).Valeur : Signification : 0 basé sur message, mais n'autorise pas

les esclaves à initier des messages1 basé sur message, et autorise les esclaves

à initier des messages (valeur par défaut)2 standard, transfert de message unique par scrutation de station3 standard, transfert de multiples messages par scrutation de stationLa valeur par défaut est 1.

ReplyMessageWait DINT GSV La durée (agissant comme maître) d'attente après la réception d'un ACK avant d'appeler l'esclave pour une réponse (maître uniquement).Les valeurs correctes vont 0 à 65 535. Délai par intervalles de 20 ms. La valeur par défaut est de 5 intervalles (100 ms).

StationAddress INT GSV Adresse de station en cours du port série.Les valeurs correctes vont de 0 à 254. La valeur par défaut est 0.

SlavePollTimeout DINT GSV Durée (en ms) pendant laquelle l'esclave attend que le maître appelle avant de déclarer ne pas pouvoir transmettre, parce que le maître est inactif (esclave uniquement).Les valeurs correctes vont de 0 à 32 767. Délai par intervalles de 20 ms. La valeur par défaut est de 3000 intervalles (1 minute).

TransmitRetries SINT GSV Nombre d'envois d'un message sans accusé de réception en retour (maître et esclave uniquement).Les valeurs correctes vont de 0 à 127. La valeur par défaut est 3.

PendingACKTimeout DINT SSV Valeur en attente pour l'attribut ACKTimeout.

PendingDuplicateDetection SINT SSV Valeur en attente pour l'attribut DuplicateDetection.

PendingEmbeddedResponseEnable

SINT SSV Valeur en attente pour l'attribut EmbeddedResponse.

PendingENQTransmitLimit SINT SSV Valeur en attente pour l'attribut ENQTransmitLimit.

PendingEOTSuppression SINT SSV Valeur en attente pour l'attribut EOTSuppression.

PendingErrorDetection SINT SSV Valeur en attente pour l'attribut ErrorDetection.

PendingNormalPollGroupSize INT SSV Valeur en attente pour l'attribut NormalPollGroupSize.

PendingMasterMessageTransmit

SINT SSV Valeur en attente pour l'attribut MasterMessageTransmit.

PendingNAKReceiveLimit SINT SSV Valeur en attente pour l'attribut NAKReceiveLimit.

PendingPollingMode SINT SSV Valeur en attente pour l'attribut PollingMode.

Attribut Type de données

Instruction Description

Publication 1756-RM003F-FR-P - Mai 2002

Page 122: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-38 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Pour attribuer des valeurs à un des attributs DF1 en attente :

1. Utilisez une instruction SSV pour régler 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 réglez. Configurez l'instruction MSG comme suit :

PendingReplyMessageWait DINT SSV Valeur en attente pour l'attribut ReplyMessageWait.

PendingStationAddress INT SSV Valeur en attente pour l'attribut StationAddress.

PendingSlavePollTimeout DINT SSV Valeur en attente pour l'attribut SlavePollTimeout.

PendingTransmitRetries SINT SSV Valeur en attente pour l'attribut TransmitRetries.

Attribut Type de données

Instruction Description

Onglet de configuration MSG Champ Valeur

Configuration Type de message CIP générique

Code de service 0d hex

Type d'objet a2

Identificateur de l'objet 1

Attribut de l'objet laisser en blanc

Source laisser en blanc

Nombre d'éléments 0

Destination laisser en blanc

Communication Chemin chemin de communication vers soi-même (1,s où s = numéro d'emplacement de l'automate)

Publication 1756-RM003F-FR-P - Mai 2002

Page 123: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-39

Accès à l'objet FAULTLOG

L'objet FAULTLOG fournit des informations sur les défauts de l'automate.

Attribut Type de données Instruction Description

MajorEvents INT GSVSSV

Nombre d’événements majeurs qui se sont produits depuis la dernière remise à zéro de ce compteur.

MinorEvents INT GSVSSV

Nombre de défauts mineurs qui se sont produits depuis la dernière remise à zéro de ce compteur.

MajorFaultBits DINT GSVSSV

Les bits individuels indiquent la raison du défaut majeur en cours.Bit : Signification : 1 perte d'alimentation3 E/S4 exécution d'instruction (programme)5 gestionnaire des défauts6 chien de garde7 pile8 changement de mode11 mouvement

MinorFaultBits DINT GSVSSV

Les bits individuels indiquent la raison du défaut mineur en cours.Bit : Signification : 4 exécution d'instruction (programme)6 chien de garde9 port série10 pile

Publication 1756-RM003F-FR-P - Mai 2002

Page 124: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-40 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Accès à l'objet MESSAGE

Vous pouvez accéder à l'objet MESSAGE par les instructions GSV/SSV. Indiquez le nom du point du message pour déterminer l'objet MESSAGE que vous voulez. L'objet MESSAGE fournit une interface pour la configuration et le déclenchement des communications d'égal à égal. Cet objet remplace le type de données MG du processeur PLC-5.

Pour changer l'attribut d'un MESSAGE, procédez 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 régler 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.

Attribut Type de données Instruction Description

ConnectionPath SINT[130] GSVSSV

Données de configuration du chemin de connexion. Les deux premiers octets (octets de poids faible et de poids fort) forment la longueur, en octets, du chemin de connexion.

ConnectionRate DINT GSVSSV

Débit de trame requis de la connexion.

MessageType SINT GSVSSV

Indique le type de message.Valeur : Signification : 0 non initialisé

Port SINT GSVSSV

Indique le port par lequel le message doit être envoyé.Valeur : Signification : 1 fond de panier2 port série

TimeoutMultiplier SINT GSVSSV

Détermine le moment où une connexion doit être considérée comme ayant dépassé le délai autorisé et doit être coupée.Valeur : Signification : 0 le délai d'attente de la connexion correspondra à 4 fois la vitesse d'actualisation (valeur par défaut)1 le délai d'attente de la connexion correspondra à 8 fois la vitesse d'actualisation2 le délai d'attente de la connexion correspondra à 16 fois la vitesse d'actualisation

UnconnectedTimeout DINT GSVSSV

Délai d'attente en microsecondes pour tous les messages non connectés. La valeur par défaut est de 30 000 000 microsecondes (30 secondes).

Publication 1756-RM003F-FR-P - Mai 2002

Page 125: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-41

Exemple : Dans l'exemple suivant, l'attribut ConnectionPath est modifié pour que le message soit envoyé à un automate différent. Lorsque msg_path est activé, règle le chemin du message msg msg_1 sur la valeur de msg_1_path, ce qui envoie le message à un autre automate.

Logique à relais

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;

Où Est

msg_1 message dont vous souhaitez modifier l'attribut

msg_1_type point qui stocke la valeur de l'attribut Type de message

tag_a point qui stocke un 0.

msg_1_path point de tableau qui stocke le nouveau chemin de connexion du message

0 msg_path

Get System ValueClass name MESSAGEInstance name msg_1Attribute Name MessageTypeDest msg_1_type 2

GSVSet System ValueClass name MESSAGEInstance name msg_1Attribute Name MessageTypeSource tag_a 0

SSV

Set System ValueClass name MESSAGEInstance name msg_1Attribute Name ConnectionPathSource msg_1_path[0] 6

SSVSet System ValueClass name MESSAGEInstance name msg_1Attribute Name MessageTypeSource msg_1_type 2

SSV

1 /msg_1.EN

ENDNER

Type - CIP Data Table WriteMessage Control msg_1 ...

MSG

Publication 1756-RM003F-FR-P - Mai 2002

Page 126: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-42 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Accès à l'objet MODULE

L'objet MODULE fournit des informations sur l'état d'un module. Pour sélectionner un objet MODULE particulier, réglez l'opérande Object Name de l'instruction GSV/SSV sur le nom du module. Le module indiqué doit être présent dans la section de configuration des E/S de la fenêtre d'organisation de l'automate et doit avoir un nom de dispositif.

Attribut Type de données

Instruction Description

EntryStatus INT GSV Indique l'état en cours de l'entrée de configuration indiquée. Les 12 bits inférieurs doivent être masqués lors d'une opération de comparaison. Seuls les bits 12 à 15 sont valables.Valeur : Signification : 16#0000 En attente : l'automate est en cours de démarrage.16#1000 En défaut : l'une des connexions de l'objet

MODULE au module associé a échoué. Cette valeur ne doit pas être utilisée pour déterminer si le module a échoué car l'objet MODULE quitte cet état périodiquement lorsqu'il essaie de se reconnecter au

module. Testez plutôt l'état d'exécution (16#4000). Recherchez les FaultCode différents de 0 pour déterminer si un module est en défaut..

Lorsqu'il sont en défaut, les attributs FaultCode et FaultInfo restent valables jusqu'à ce que le défaut

soit corrigé.16#2000 Validation : l'objet MODULE vérifie l'intégrité

de l'objet MODULE avant d'établir des connexions vers le module.16#3000 Connexion : l'objet MODULE établit des

connexions avec le module.16#4000 Exécution : toutes les connexions vers le module

sont établies et les données sont transférées avec succès.16#5000 Arrêt : l'objet MODULE est en train de couper

toutes les connexions avec le module.16#6000 Inhibition : l'objet MODULE est bloqué

(le bit d'inhibition de l'attribut Mode est activé).16#7000 En attente : l'objet MODULE parent dont

cet objet MODULE dépend ne fonctionne pas.

FaultCode INT GSV Nombre identifiant un défaut de module, le cas échéant.

FaultInfo DINT GSV Fournit des informations particulières sur le code de défaut de l'objet MODULE.

ForceStatus INT GSV Indique l'état des forçages.Bit : Signification : 0 forçages installés (1=oui, 0=non)1 forçages activés (1=oui, 0=non)2-15 non utilisé

Publication 1756-RM003F-FR-P - Mai 2002

Page 127: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-43

Accès à l'objet MOTIONGROUP

L'objet MOTIONGROUP fournit des informations sur l'état d'un groupe d'axes du servo-module. Indiquez le nom du point du groupe d'axes pour déterminer l'objet MOTIONGROUP que vous voulez.

Instance DINT GSV Fournit le numéro d'instance de cet objet MODULE.

LEDStatus INT GSV 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 fenêtre 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.

Mode INT GSVSSV

Indique le mode en cours de l'objet MODULE.Bit : Signification : 0 Lorsqu'il est activé, génère un défaut majeur si l'une des connexions de l'objet MODULE se met en défaut

pendant que l'automate est en mode Run.2 Lorsqu'il est activé, fait passer l'objet MODULE à l'état d'inhibition (blocage) après avoir coupé toutes les connexions avec le module.

Attribut Type de données

Instruction Description

Attribut Type de données Instruction Description

Instance DINT GSV Fournit le numéro d'instance de cet objet MOTION_GROUP.

Publication 1756-RM003F-FR-P - Mai 2002

Page 128: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-44 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Accès à l'objet PROGRAM

L'objet PROGRAM fournit des informations d'état sur un programme. Indiquez le nom du programme pour déterminer l'objet MESSAGE que vous voulez.

Attribut Type de données Instruction Description

DisableFlag SINT GSVSSV

Commande l'exécution de ce programme.Valeur : Signification : 0 exécution activée1 exécution désactivée

Instance DINT GSV Fournit le numéro d'instance de cet objet PROGRAM.

LastScanTime DINT GSVSSV

Durée nécessaire à l'exécution de ce programme la dernière fois qu'il a été exécuté. La durée est en microsecondes.

MajorFaultRecord DINT[11] GSVSSV

Enregistre les défauts majeurs pour ce programme.Il est recommandé de créer une structure utilisateur pour simplifier l'accès à l'attribut MajorFaultRecord :

Nom : Type de données : Style : Description :TimeLow DINTDécimal32 bits inférieurs de la valeur d'horodatage du défautTimeHigh DINT Décimal 32 bits supérieurs de la valeur d'horodatage du défautType INT Décimal type du défaut (programme, E/S, etc.)Code INT Décimal code unique pour le défaut (dépend du type du défaut)Info DINT[8] Hexadécimal information particulière sur le défaut (dépend du type et du code du défaut)

MaxScanTime DINT GSVSSV

Durée d'exécution maximale enregistrée pour ce programme. La durée est en microsecondes.

MinorFaultRecord DINT[11] GSVSSV

Enregistre les défauts mineurs pour ce programme.Il est recommandé de créer une structure utilisateur pour simplifier l'accès à l'attribut MinorFaultRecord :

Nom : Type de données : Style : Description :TimeLow DINT Décimal 32 bits inférieurs de la valeur d'horodatage du défautTimeHigh DINT Décimal 3 bits supérieurs de la valeur d'horodatage du défautType INT Décimal type du défaut (programme, E/S, etc.)Code INT Décimal code unique pour le défaut (dépend du type du défaut)Info DINT[8] Hexadécimal information particulière sur le défaut (dépend du type et du code du défaut)

SFCRestart INT GSVSSV

inutilisé (réservé à une utilisation future)

Publication 1756-RM003F-FR-P - Mai 2002

Page 129: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-45

Accès à l'objet ROUTINE

L'objet ROUTINE fournit des informations d'état sur un sous-programme. Indiquez le nom du sous-programme pour déterminer l'objet ROUTINE que vous voulez.

Accès à l'objet SERIALPORT

L'objet SERIALPORT fournit une interface au port de communication série.

Attribut Type de données

Instruction Description

Instance DINT GSV Fournit le numéro d'instance de cet objet ROUTINE.Les valeurs correctes vont de 0 à 65 535.

Attribut Type de données

Instruction Description

BaudRate DINT GSV Indique la vitesse en bauds.Les valeurs correctes sont 110, 300, 600, 1200, 2400, 4800, 9600 et 19 200 (valeur par défaut).

DataBits SINT GSV Indique le nombre de bits de données par caractère.Valeur : Signification : 7 7 bits de données (ASCII uniquement)8 8 bits de données (valeur par défaut)

Parity SINT GSV Indique la parité.Valeur : Signification : 0 pas de parité (pas de valeur par défaut)1 parité impaire (ASCII uniquement)2 parité paire

RTSOffDelay INT GSV Délai d'arrêt de la ligne RTS après la transmission du dernier caractère.Les valeurs correctes vont de 0 à 32 767. Délai par intervalles de 20 ms. La valeur par défaut est de 0 ms.

RTSSendDelay INT GSV Délai de transmission du premier caractère d'un message après le démarrage de la ligne RTS.Les valeurs correctes vont de 0 à 32 767. Délai par intervalles de 20 ms. La valeur par défaut est de 0 ms.

StopBits SINT GSV Indique le nombre de bits d'arrêt.Valeur : Signification : 1 1 bit d'arrêt (valeur par défaut)2 2 bits d'arrêts (ASCII uniquement)

PendingBaudRate DINT SSV Valeur en attente pour l'attribut BaudRate.

PendingDataBits SINT SSV Valeur en attente pour l'attribut DataBits.

PendingParity SINT SSV Valeur en attente pour l'attribut Parity.

PendingRTSOffDelay INT SSV Valeur en attente pour l'attribut RTSOffDelay.

PendingRTSSendDelay INT SSV Valeur en attente pour l'attribut RTSSendDelay.

PendingStopBits SINT SSV Valeur en attente pour l'attribut StopBits.

Publication 1756-RM003F-FR-P - Mai 2002

Page 130: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-46 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Pour attribuer des valeurs à l'un des attributs SERIALPORT en attente :

1. Utilisez une instruction SSV pour régler 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 réglez. Configurez les instructions MSG comme suit :

Onglet de configuration MSG Champ Valeur

Configuration Type de message CIP générique

Code de service 0d hex

Type d'objet 6f hex

Identificateur de l'objet 1

Attribut de l'objet laisser en blanc

Source laisser en blanc

Nombre d'éléments 0

Destination laisser en blanc

Communication Chemin chemin de communication vers soi-même(1,s où s = numéro d'emplacement de l'automate)

Publication 1756-RM003F-FR-P - Mai 2002

Page 131: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-47

Accès à l'objet TASK

L'objet TASK fournit des informations d'état sur une tâche. Indiquez le nom de la tâche pour déterminer l'objet TASK que vous voulez.

Accès à l'objet WALLCLOCKTIME

L'objet WALLCLOCKTIME fournit un horodatage que l'automate peut utiliser pour la planification.

Attribut Type de données

Instruction Description

Instance DINT GSV Fournit le numéro d'instance de cet objet TASK.Les valeurs correctes vont de 0 à 31.

LastScanTime DINT GSVSSV

Durée nécessaire à l'exécution de cette tâche la dernière fois qu'elle a été exécutée. La durée est en microsecondes.

MaxInterval DINT[2] GSVSSV

Intervalle de temps maximum entre les exécutions successives de la tâche. DINT[0] contient les 32 bits inférieurs de la valeur, DINT[1] contient les 32 bits supérieurs de la valeur.Une valeur de 0 indique une exécution ou moins de la tâche.

MaxScanTime DINT GSVSSV

Durée d'exécution maximale enregistrée pour ce programme. La durée est en microsecondes.

MinInterval DINT[2] GSVSSV

Intervalle de temps minimum entre les exécutions successives de la tâche. DINT[0] contient les 32 bits inférieurs de la valeur, DINT[1] contient les 32 bits supérieurs de la valeur.Une valeur de 0 indique une exécution ou moins de la tâche.

Priority INT GSV Priorité relative de cette tâche comparée aux autres tâches.Les valeurs correctes vont de 0 à 15.

Rate DINT GSV Intervalle de temps entre les exécutions de la tâche. La durée est en microsecondes.

StartTime DINT[2] GSVSSV

Valeur de WALLCLOCKTIME au début de la dernière exécution de la tâche. DINT[0] contient les 32 bits inférieurs de la valeur, DINT[1] contient les 32 bits supérieurs de la valeur.

Watchdog DINT GSVSSV

Limite de temps pour l'exécution de tous les programmes associés avec cette tâche. La durée est en microsecondes.Si vous entrez 0, les valeurs suivantes sont attribuées :Temps Type de tâche 0,5 s périodique5 s continue

Publication 1756-RM003F-FR-P - Mai 2002

Page 132: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-48 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Attribut Type de données

Instruction Description

CSTOffset DINT[2] GSVSSV

Décalage positif de CurrentValue de l'objet CST (temps système coordonné : voir page 3-35). DINT[0] contient les 32 bits inférieurs de la valeur, DINT[1] contient les 32 bits supérieurs de la valeur.La valeur est en µs. La valeur par défaut est 0.

CurrentValue DINT[2] GSVSSV

Valeur en cours de l'horloge. DINT[0] contient les 32 bits inférieurs de la valeur, DINT[1] contient les 32 bits supérieurs de la valeur.La valeur est le nombre de microsecondes écoulées depuis le 1er janvier 1972, 00:00 heure.Les objets CST et WALLCLOCKTIME sont mathématiquement reliés dans l'automate. Par exemple, si vous additionnez la valeur CurrentValue CST et la valeur WALLCLOCKTIME CTSOffset, le résultat est la valeur WALLCLOCKTIME CurrentValue.

DateTime DINT[7] GSVSSV

Date et heure dans un format lisible.DINT[0] annéeDINT[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)

Publication 1756-RM003F-FR-P - Mai 2002

Page 133: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 3-49

Exemple de programmation GSV/SSV

Obtenir des informations sur les défauts

Les exemples suivants utilisent des instructions GSV pour obtenir des informations sur les défauts.

Exemple 1 : Cet exemple donne des informations sur les défauts à partir du module d'E/S disc_in_2 et stocke les données dans une structure définie 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 données dans une structure définie par l'utilisateur discrete_info.

Logique à relais

Texte structuré

GSV(PROGRAM,DISCRETE,LASTSCANTIME,discrete_info.LastScanTime);

GSV(PROGRAM,DISCRETE,MAXSCANTIME,discrete_info.MaxScanTime);

Publication 1756-RM003F-FR-P - Mai 2002

Page 134: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-50 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Exemple 3 : Cet exemple donne des informations d'état sur la tâche IO_test et stocke les données dans une structure définie 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);

Configuration de marqueurs d'activation et de désactivation

L'exemple suivant utilise l'instruction SSV pour activer ou désactiver un programme. Vous pouvez également utiliser cette méthode pour activer ou désactiver un module d'E/S, ce qui est similaire à l'utilisation de bits d'inhibition avec un processeur PLC-5.

Exemple : Selon l'état de SW.1, place la valeur appropriée dans l'attribut disableflag du programme discrete.

Logique à relais

Publication 1756-RM003F-FR-P - Mai 2002

Page 135: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions d'entrée/de sortie (MSG, GSV, SSV) 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);

Publication 1756-RM003F-FR-P - Mai 2002

Page 136: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

3-52 Instructions d'entrée/de sortie (MSG, GSV, SSV)

Notes :

Publication 1756-RM003F-FR-P - Mai 2002

Page 137: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Chapitre 4

Instructions de comparaison(CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Introduction Les instructions de comparaison vous permettent de comparer des valeurs à l'aide d'une expression ou d'une instruction de comparaison spécifique.

Vous pouvez comparer des valeurs de différents types de données, tels que virgule flottante et nombre entier.

Pour les instructions de logique à relais, les types de données en gras indiquent les types de données optimaux. Une instruction est exécutée plus rapidement et demande moins de mémoire si tous les opérandes de l'instruction utilisent le même type de données optimal, généralement DINT ou REAL.

Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page

comparer des valeurs sur la base d'une expression CMP logique à relaistexte structuré(1)

4-2

tester si deux valeurs sont égales EQU logique à relaistexte structuré(2)

bloc fonctionnel

4-7

tester si une valeur est supérieure ou égale à une autre valeur

GEQ logique à relaistexte structuré(1)

bloc fonctionnel

4-11

tester si une valeur est supérieure à une autre valeur GRT logique à relaistexte structuré(1)

bloc fonctionnel

4-15

tester si une valeur est inférieure ou égale à une autre valeur

LEQ logique à relaistexte structuré(1)

bloc fonctionnel

4-19

tester si une valeur est inférieure à une autre valeur LES logique à relaistexte structuré(1)

bloc fonctionnel

4-23

tester si une valeur est comprise entre deux autres valeurs

LIM logique à relaisbloc fonctionneltexte structuré(1)

4-27

passer deux valeurs dans un masque et tester si elles sont égales

MEQ logique à relaisbloc fonctionneltexte structuré(1)

4-33

tester si une valeur n'est pas égale à une autre valeur NEQ logique à relaistexte structuré(1)

bloc fonctionnel

4-38

(1) Il n'existe pas d'instruction équivalente en texte structuré. Utilisez une autre programmation en texte structuré pour obtenir le même résultat. Voir la description de l'instruction.

(2) Il n'existe pas d'instruction équivalente en texte structuré. Utilisez l'opérateur dans une expression.

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 138: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4-2 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Comparaison (CMP) L'instruction CMP effectue une comparaison sur les opérations arithmétiques que vous indiquez dans l'expression.

Opérandes :

Logique à relais

Texte structuré

Il n'y a pas d'instruction CMP en texte structuré, mais vous pouvez obtenir le même résultat en utilisant une instruction de test IF...THEN (SI...ALORS) et une expression.

IF expression_booléenne 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 : Définissez l'expression CMP avec des opérateurs, des points et des valeurs immédiates. Utilisez des parenthèses ( ) pour définir les sections d'expressions plus complexes.

L'exécution d'une instruction CMP est légèrement plus lente et utilise davantage de mémoire que l'exécution 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.

Indicateurs d'état arithmétique : L'instruction CMP affecte les indicateurs d'état arithmétique uniquement si l'expression contient un opérateur (ex., +, −, *, /) qui affecte les indicateurs d'état arithmétique.

Conditions d'erreur : aucune

Opérande Type Format Description

Expression SINTINTDINTREALSTRING

immédiatpoint

expression constituée de points et/ou de valeurs immédiates séparées par des opérateurs

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Publication 1756-RM003F-FR-P - Mai 2002

Page 139: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-3

Exécution :

Exemples : Si l'instruction CMP trouve l'expression vraie, l'état de sortie de la ligne est réglé sur vrai.

Si vous entrez une expression sans opérateur de comparaison, telle que value_1 + value_2 ou value_1, l'instruction évalue l'expression ainsi :

Condition Action de la logique à relais

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai

fin

évalue l'expressionl'expression est vraie

l'expression est fausse

l'état de sortie de la ligne est réglé sur vrai

l'état de sortie de la ligne est réglé sur faux

Si l'expression L'état de sortie de la ligne est réglé sur

différent de zéro vrai

zéro faux

Publication 1756-RM003F-FR-P - Mai 2002

Page 140: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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 même façon que les expressions en instructions FSC. Utilisez les sections suivantes pour trouver les informations sur les opérateurs, le format et l'ordre d'opération valables, communs aux deux instructions.

Opérateurs valables

Formatage des expressions

Pour chaque opérateur utilisé dans une expression, vous devez fournir un ou deux opérandes (points ou valeurs immédiates). Utilisez

Opérateur Description Optimal

+ addition DINT, REAL

- soustraction/négation DINT, REAL

* multiplication DINT, REAL

/ division DINT, REAL

= égalité DINT, REAL

< inférieur DINT, REAL

<= inférieur ou égal DINT, REAL

> supérieur DINT, REAL

>= supérieur ou égal DINT, REAL

<> différent DINT, REAL

** exposant (x à y) DINT, REAL

ABS valeur absolue DINT, REAL

ACS cosinus d'arc REAL

AND ET sur bits DINT

ASN sinus d'arc REAL

ATN tangente d'arc REAL

COS cosinus REAL

DEG radians en degrés DINT, REAL

FRD DCB en nombre entier DINT

LN logarithme naturel REAL

LOG logarithme décimal REAL

MOD modulo DINT, REAL

NOT complément sur bits DINT

OR OU sur bits DINT

RAD degrés en radians DINT, REAL

SIN sinus REAL

SQR racine carrée DINT, REAL

TAN tangente REAL

TOD nombre entier en DCB DINT

TRN troncation DINT, REAL

XOR OU exclusif sur bits DINT

Opérateur Description Optimal

Publication 1756-RM003F-FR-P - Mai 2002

Page 141: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-5

le tableau suivant pour formater les opérateurs et les opérandes dans une expression.

Définition de l'ordre d'exécution des opérations

Les opérations que vous écrivez dans l'expression sont exécutées par l'instruction dans un ordre précis, qui n'est pas nécessairement l'ordre dans lequel vous les écrivez. Vous pouvez modifier l'ordre des opérations en groupant des termes entre parenthèses, ce qui force l'instruction à exécuter une opération entre parenthèses avant les autres opérations.

Les opérations d'ordre identique sont exécutées de gauche à droite.

Pour les opérateurs opérant sur

Utilisez ce format Exemples

un opérande opérateur(opérande) ABS(point_a)

deux opérandes opérande_a opérateur opérande_b

• point_b + 5• point_c AND point_d• (point_e ** 2) MOD

(point_f / point_g)

Ordre Opération

1. ( )

2. ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG, RAD, SIN, SQR, TAN, TOD, TRN

3. **

4. − (négation), NOT

5. *, /, MOD

6. <, <=, >, >=, =

7. − (soustraction), +

8. AND

9. XOR

10. OR

Publication 1756-RM003F-FR-P - Mai 2002

Page 142: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4-6 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Utilisation de chaînes dans une expression

Utilisez une expression de logique à relais ou de texte structuré pour comparer des données de type chaîne. Pour utiliser des chaînes dans une expression, suivez ces directives :

• une expression vous permet de comparer deux chaînes de caractères ;

• vous ne pouvez pas entrer des caractères ASCII directement dans l'expression ;

• seuls les opérateurs suivants sont autorisés :

• Les chaînes sont égales si leurs caractères concordent.

• Les caractères ASCII sont différents s'ils sont en majuscules ou en minuscules. Un « A » majuscule ($41) n'est pas égal à un « a » minuscule ($61).

• Les valeurs hexadécimales des caractères déterminent si une chaîne est inférieure ou supérieure à une autre chaîne. Pour trouver le code hexadécimal d'un caractère, reportez-vous à la dernière page de ce manuel.

• Lorsque les deux chaînes sont triées comme dans un répertoire téléphonique, l'ordre des chaînes détermine laquelle est supérieure.

Opérateur Description

= égal

< inférieur

<= inférieur ou égal

> supérieur

>= supérieur ou égal

<> différent

Caractères ASCII Codes Hex

1ab $31$61$62

1b $31$62

A $41

AB $41$42

B $42

a $61

ab $61$62

supérieure

inférieure AB < B

a > B

Publication 1756-RM003F-FR-P - Mai 2002

Page 143: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-7

Egal à (EQU) L'instruction EQU teste si Source A est égale à Source B.

Opérandes :

Logique à relais

• 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 déterminer l'égalité de deux valeurs REAL, utilisez l'instruction LIM.

• Les types de données chaîne sont :

– type de données STRING par défaut ;

– tout nouveau type de données chaîne que vous créez.

• Pour tester les caractères d'une chaîne, entrez un point de type chaîne de caractères pour Source A et Source B.

Texte structuré

Utilisez le signe égal “=” comme opérateur 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

Opérande Type Format Description

Source A SINTINTDINTREALSTRING

immédiatpoint

valeur à tester par rapport à Source B

Source B SINTINTDINTREALSTRING

immédiatpoint

valeur à tester par rapport à Source A

Opérande Type Format Description

point EQU FBD_COMPARE structure structure EQU

IF sourceA = sourceB THEN

<instructions>;

Publication 1756-RM003F-FR-P - Mai 2002

Page 144: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4-8 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Structure FBD_COMPARE

Description : Utilisez l'instruction EQU pour comparer deux nombres ou deux chaînes de caractères ASCII. Lorsque vous comparez des chaînes :

• les chaînes sont égales si leurs caractères concordent ;

• les caractères ASCII sont différents s'ils sont en majuscules ou en minuscules. Un « A » majuscule ($41) n'est pas égal à un « a » minuscule ($61).

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

SourceA REAL Valeur à tester par rapport à SourceB.Valeurs correctes = toute virgule flottante.

SourceB REAL Valeur à tester par rapport à SourceA.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest BOOL Résultat de l'instruction. Ceci est équivalent à l'état de sortie de la ligne de l'instruction EQU en logique à relais.

Publication 1756-RM003F-FR-P - Mai 2002

Page 145: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-9

Logique à relais

Bloc fonctionnel

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai

fin

Source A = Source Boui

non

l'état de sortie de la ligne est réglé sur vrai

l'état de sortie de la ligne est réglé sur faux

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 146: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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 différente de value_2, light_a est effacé.

Logique à relais

Texte structuré

light_a := (value_1 = value_2);

Bloc fonctionnel

Publication 1756-RM003F-FR-P - Mai 2002

Page 147: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-11

Supérieur ou égal à (GEQ) L'instruction GEQ teste si Source A est supérieure ou égale à Source B.

Opérandes :

Logique à relais

• Si vous entrez un point SINT ou INT, la valeur est convertie en valeur DINT par extension de signe.

• Les types de données chaîne sont :

– type de données STRING par défaut ;

– tout nouveau type de données chaîne que vous créez.

• Pour tester les caractères d'une chaîne, entrez un point de type chaîne de caractères pour Source A et Source B.

Texte structuré

Utilisez les signes supérieur et égal “>=” juxtaposés comme opérateur dans une expression. Cette expression évalue si sourceA est supérieure ou égale à sourceB.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Opérande Type Format Description

Source A SINTINTDINTREALSTRING

immédiatpoint

valeur à tester par rapport à Source B

Source B SINTINTDINTREALSTRING

immédiatpoint

valeur à tester par rapport à Source A

Opérande Type Format Description

point GEQ FBD_COMPARE structure structure GEQ

IF sourceA >= sourceB THEN

<instructions>;

Publication 1756-RM003F-FR-P - Mai 2002

Page 148: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4-12 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Structure FBD_COMPARE

Description : L'instruction GEQ teste si Source A est supérieure ou égale à Source B.

Lorsque vous comparez des chaînes :

• les valeurs hexadécimales des caractères déterminent si une chaîne est inférieure ou supérieure à une autre chaîne. Pour trouver le code hexadécimal d'un caractère, reportez-vous à la dernière page de ce manuel ;

• lorsque les deux chaînes sont triées comme dans un répertoire téléphonique, l'ordre des chaînes détermine laquelle est supérieure.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

SourceA REAL Valeur à tester par rapport à SourceB.Valeurs correctes = toute virgule flottante.

SourceB REAL Valeur à tester par rapport à SourceA.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest BOOL Résultat de l'instruction. Ceci est équivalent à l'état de sortie de la ligne pour l'instruction logique à relais GEQ.

Caractères ASCII Codes Hex

1ab $31$61$62

1b $31$62

A $41

AB $41$42

B $42

a $61

ab $61$62

supérieur

inférieur AB < B

a > B

Publication 1756-RM003F-FR-P - Mai 2002

Page 149: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-13

Logique à relais

Bloc fonctionnel

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai

fin

Source A ≥ Source Boui

non

l'état de sortie de la ligne est réglé sur vrai

l'état de sortie de la ligne est réglé sur faux

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 150: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4-14 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Exemple : Si value_1 est supérieure ou égale à value_2, light_b est activé. Si value_1 est inférieure à value_2, light_b est effacé.

Logique à relais

Texte structuré

light_b := (value_1 >= value_2);

Bloc fonctionnel

Publication 1756-RM003F-FR-P - Mai 2002

Page 151: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-15

Supérieur à (GRT) L'instruction GRT teste si Source A est supérieure à Source B.

Opérandes :

Logique à relais

• Si vous entrez un point SINT ou INT, la valeur est convertie en valeur DINT par extension de signe.

• Les types de données chaîne sont :

– type de données STRING par défaut ;

– tout nouveau type de données chaîne que vous créez.

• Pour tester les caractères d'une chaîne, entrez un point de type chaîne de caractères pour Source A et Source B.

Texte structuré

Utilisez le signe supérieur “>” comme opérateur dans une expression. Cette expression évalue si sourceA est supérieure à sourceB.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Opérande Type Format Description

Source A SINTINTDINTREALSTRING

immédiatpoint

valeur à tester par rapport à Source B

Source B SINTINTDINTREALSTRING

immédiatpoint

valeur à tester par rapport à Source A

Opérande Type Format Description

point GRT FBD_COMPARE structure structure GRT

IF sourceA > sourceB THEN

<instructions>;

Publication 1756-RM003F-FR-P - Mai 2002

Page 152: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4-16 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Structure FBD_COMPARE

Description : L'instruction GRT teste si Source A est supérieure à Source B.

Lorsque vous comparez des chaînes :

• les valeurs hexadécimales des caractères déterminent si une chaîne est inférieure ou supérieure à une autre chaîne. Pour trouver le code hexadécimal d'un caractère, reportez-vous à la dernière page de ce manuel ;

• lorsque les deux chaînes sont triées comme dans un répertoire téléphonique, l'ordre des chaînes détermine laquelle est supérieure.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

SourceA REAL Valeur à tester par rapport à SourceB.Valeurs correctes = toute virgule flottante.

SourceB REAL Valeur à tester par rapport à SourceA.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest BOOL Résultat de l'instruction. Ceci est équivalent à l'état de sortie de la ligne pour l'instruction logique à relais GRT.

Caractères ASCII Codes Hex

1ab $31$61$62

1b $31$62

A $41

AB $41$42

B $42

a $61

ab $61$62

supérieur

inférieur AB < B

a > B

Publication 1756-RM003F-FR-P - Mai 2002

Page 153: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-17

Logique à relais

Bloc fonctionnel

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai

fin

Source A > Source Boui

non

l'état de sortie de la ligne est réglé sur vrai

l'état de sortie de la ligne est réglé sur faux

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 154: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4-18 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Exemple : Si value_1 est supérieure à value_2, light_1 est activé. Si value_1 est inférieure ou égale à value_2, light_1 est effacé.

Logique à relais

Texte structuré

light_1 := (value_1 > value_2);

Bloc fonctionnel

Publication 1756-RM003F-FR-P - Mai 2002

Page 155: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-19

Inférieur ou égal à (LEQ) L'instruction LEQ teste si Source A est inférieure ou égale à Source B.

Opérandes :

Logique à relais

• Si vous entrez un point SINT ou INT, la valeur est convertie en valeur DINT par extension de signe.

• Les types de données chaîne sont :

– type de données STRING par défaut ;

– tout nouveau type de données chaîne que vous créez.

• Pour tester les caractères d'une chaîne, entrez un point de type chaîne de caractères pour Source A et Source B.

Texte structuré

Utilisez les signes inférieur et égal “<=“ juxtaposés comme opérateur dans une expression. Cette expression évalue si sourceA est inférieure ou égale à sourceB.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Opérande Type Format Description

Source A SINTINTDINTREALSTRING

immédiatpoint

valeur à tester par rapport à Source B

Source B SINTINTDINTREALSTRING

immédiatpoint

valeur à tester par rapport à Source A

Opérande Type Format Description

point LEQ FBD_COMPARE structure structure LEQ

IF sourceA <= sourceB THEN

<instructions>;

Publication 1756-RM003F-FR-P - Mai 2002

Page 156: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4-20 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Structure FBD_COMPARE

Description : L'instruction LEQ teste si Source A est inférieure ou égale à Source B.

Lorsque vous comparez des chaînes :

• les valeurs hexadécimales des caractères déterminent si une chaîne est inférieure ou supérieure à une autre chaîne. Pour trouver le code hexadécimal d'un caractère, reportez-vous à la dernière page de ce manuel ;

• lorsque les deux chaînes sont triées comme dans un répertoire téléphonique, l'ordre des chaînes détermine laquelle est supérieure.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

SourceA REAL Valeur à tester par rapport à SourceB.Valeurs correctes = toute virgule flottante.

SourceB REAL Valeur à tester par rapport à SourceA.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest BOOL Résultat de l'instruction. Ceci est équivalent à l'état de sortie de la ligne pour l'instruction logique à relais LEQ.

Caractères ASCII Codes Hex

1ab $31$61$62

1b $31$62

A $41

AB $41$42

B $42

a $61

ab $61$62

supérieur

inférieur AB < B

a > B

Publication 1756-RM003F-FR-P - Mai 2002

Page 157: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-21

Logique à relais

Bloc fonctionnel

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai

fin

Source A ≤ Source Boui

non

l'état de sortie de la ligne est réglé sur vrai

l'état de sortie de la ligne est réglé sur faux

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 158: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4-22 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Exemple : Si value_1 est inférieure ou égale à value_2, light_2 est activé. Si value_1 est supérieure à value_2, light_2 est effacé.

Logique à relais

Texte structuré

light_2 := (value_1 <= value_2);

Bloc fonctionnel

Publication 1756-RM003F-FR-P - Mai 2002

Page 159: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-23

Inférieur à (LES) L'instruction LES teste si Source A est inférieure à Source B.

Opérandes :

Logique à relais

• Si vous entrez un point SINT ou INT, la valeur est convertie en valeur DINT par extension de signe.

• Les types de données chaîne sont :

– type de données STRING par défaut ;

• tout nouveau type de données chaîne que vous créez.

• Pour tester les caractères d'une chaîne, entrez un point de type chaîne de caractères pour Source A et Source B.

Texte structuré

Utilisez le signe inférieur “<“ comme opérateur dans une expression. Cette expression évalue si sourceA est inférieure à sourceB.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Opérande Type Format Description

Source A SINTINTDINTREALSTRING

immédiatpoint

valeur à tester par rapport à Source B

Source B SINTINTDINTREALSTRING

immédiatpoint

valeur à tester par rapport à Source A

Opérande Type Format Description

point LES FBD_COMPARE structure structure LES

IF sourceA < sourceB THEN

<instructions>;

Publication 1756-RM003F-FR-P - Mai 2002

Page 160: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4-24 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Structure FBD_COMPARE

Description : L'instruction LES teste si Source A est inférieure à Source B.

Lorsque vous comparez des chaînes :

• les valeurs hexadécimales des caractères déterminent si une chaîne est inférieure ou supérieure à une autre chaîne. Pour trouver le code hexadécimal d'un caractère, reportez-vous à la dernière page de ce manuel ;

• lorsque les deux chaînes sont triées comme dans un répertoire téléphonique, l'ordre des chaînes détermine laquelle est supérieure.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

SourceA REAL Valeur à tester par rapport à SourceB.Valeurs correctes = toute virgule flottante.

SourceB REAL Valeur à tester par rapport à SourceA.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest BOOL Résultat de l'instruction. Ceci est équivalent à l'état de sortie de la ligne pour l'instruction logique à relais LES.

Caractères ASCII Codes Hex

1ab $31$61$62

1b $31$62

A $41

AB $41$42

B $42

a $61

ab $61$62

supérieur

inférieur AB < B

a > B

Publication 1756-RM003F-FR-P - Mai 2002

Page 161: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-25

Logique à relais

Bloc fonctionnel

Exemple : Si value_1 est inférieure à value_2, light_3 est activé. Si value_1 est supérieure ou égale à value_2, light_3 est effacé.

Logique à relais

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai

fin

Source A < Source Boui

non

l'état de sortie de la ligne est réglé sur vrai

l'état de sortie de la ligne est réglé sur faux

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est faux EnableOut est effacé.

si EnableIn est vrai L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 162: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4-26 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Texte structuré

light_3 := (value_1 < value_2);

Bloc fonctionnel

Publication 1756-RM003F-FR-P - Mai 2002

Page 163: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-27

Test sur limites (LIM) L'instruction LIM teste si la valeur Test est comprise entre la limite inférieure (Low Limit) et la limite supérieure (High Limit).

Opérandes :

Logique à relais

Texte structuré

Il n'y a pas d'instruction LIM en texte structuré, mais vous pouvez obtenir le même résultat 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

Opérande Type Format Description

Limite inférieure

SINTINTDINTREAL

immédiatpoint

valeur de la limite inférieure

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Test SINTINTDINTREAL

immédiatpoint

valeur à tester

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Limite supérieure

SINTINTDINTREAL

immédiatpoint

valeur de la limite supérieure

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Opérande Type Format Description

point LIM FBD_LIMIT structure structure LIM

Publication 1756-RM003F-FR-P - Mai 2002

Page 164: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4-28 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Structure FBD_LIMIT

Description : L'instruction LIM teste si la valeur Test est comprise entre la limite inférieure (Low Limit) et la limite supérieure (High Limit).

Les nombres entiers signés passent du nombre positif maximum au nombre négatif 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, représenté en hexadécimal par 16#7FFF (les bits 0 à 14 sont tous activés). Si vous augmentez ce nombre de un, le résultat est 16#8000 (le bit 15 est activé). Pour les nombres entiers signés, hexadécimal 16#8000 est égal à -32 768 décimal. En augmentant à partir de ce point jusqu'à ce que les 16 bits soient activés, on atteint 16#FFFF, qui est égal à -1 décimal.

Paramètre d'entrée Type de données

Description

EnableIn BOOL Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Si activé, l'instruction est exécutée comme décrit dans la section Exécution.Activé par défaut.

LowLimit REAL Valeur de la limite inférieure.Valeurs correctes = toute virgule flottante.

Test REAL Valeur à tester par rapport aux limites.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest BOOL Résultat de l'instruction. Ceci est équivalent à l'état de sortie de la ligne pour l'instruction logique à relais LIM.

HighLimit REAL Valeur de la limite supérieureValeurs correctes = toute virgule flottante.

Si limite inférieure

Et la valeur test est L'état de sortie de la ligne est

≤ limite supérieure égale ou dans les limites vrai

différente ou en dehors des limites

faux

≥ limite supérieure égale ou en dehors des limites vrai

différente ou dans les limites faux

Publication 1756-RM003F-FR-P - Mai 2002

Page 165: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-29

Ceci peut être représenté comme une ligne numérique circulaire (voir les diagrammes suivants). L'instruction LIM commence à la limite inférieure (Low Limit) et augmente dans le sens horaire jusqu'à la limite supérieure (High Limit). Toute valeur Test dans la plage de sens horaire, de la limite inférieure (Low Limit) à la limite supérieure (High Limit), règle l'état de sortie de la ligne sur vrai. Toute valeur Test dans la plage de sens horaire, de la limite supérieure (High Limit) à la limite inférieure (Low Limit), règle l'état de sortie de la ligne sur faux.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

−1

0

+1

limite inférieure

limite supérieure

+n−(n+1)

n = valeur maximum

Limite inférieure ≤ Limite supérieureL'instruction est vraie si la valeur de test est

égale ou dans les limites inférieure et supérieure

Limite inférieure ≥ Limite supérieureL'instruction est vraie si la valeur de test est égale à ou en dehors des limites inférieure et

supérieure

−1

0

+1

limite supérieure

limite inférieure

+n−(n+1)n = valeur maximum

Publication 1756-RM003F-FR-P - Mai 2002

Page 166: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4-30 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Logique à relais

Bloc fonctionnel

Exemple 1 : Limite inférieure ≤ Limite supérieure :Lorsque 0 ≤ value ≥ 100, light_1 est activé. Si value < 0 ou value >100, light_1 est effacé.

Logique à relais

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai

fin

évalue la limitela comparaison est vraie

la comparaison est fausse

l'état de sortie de la ligne est réglé sur vrai

l'état de sortie de la ligne est réglé sur faux

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé, l'instruction ne fait rien et les sorties ne sont pas actualisées.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 167: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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

Publication 1756-RM003F-FR-P - Mai 2002

Page 168: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4-32 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Exemple 2 : Limite inférieure ≥ Limite supérieure :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

Publication 1756-RM003F-FR-P - Mai 2002

Page 169: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-33

Egalité avec masque (MEQ) L'instruction MEQ passe les valeurs Source et Compare par un masque et compare les résultats.

Opérandes :

Logique à relais

Texte structuré

Il n'y a pas d'instruction MEQ en texte structuré, mais vous pouvez obtenir le même résultat en utilisant les instructions suivantes :

IF (Source AND Mask) = (Compare AND Mask) THEN

<instruction>;

END_IF;

Bloc fonctionnel

Opérande Type Format Description

Source SINTINTDINT

immédiatpoint

valeur à tester par rapport à Compare

Un point SINT ou INT est converti en valeur DINT par remplissage par zéros.

Masque SINTINTDINT

immédiatpoint

définit les bits à bloquer ou à passer

Un point SINT ou INT est converti en valeur DINT par remplissage par zéros.

Comparer SINTINTDINT

immédiatpoint

valeur à tester par rapport à Source

Un point SINT ou INT est converti en valeur DINT par remplissage par zéros.

Opérande Type Format Description

point MEQ FBD_MASK_EQUAL structure structure MEQ

Publication 1756-RM003F-FR-P - Mai 2002

Page 170: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4-34 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Structure FBD_MASK_EQUAL

Description : Un « 1 » dans le masque signifie que le bit de données est passé. Un « 0 » dans le masque signifie que le bit de données est bloqué. Généralement, les valeurs Source, Mask et Compare sont du même type.

Si vous mélangez des types d'entiers, l'instruction écrit des 0 pour les bits supérieurs dans des entiers de taille inférieure, pour qu'ils aient la même taille que les entiers de grande taille.

Entrée d'une valeur de masque immédiate

Lorsque vous entrez un masque, le logiciel de programmation passe à des valeurs décimales par défaut. Si vous voulez entrer un masque à l'aide d'un autre format, faites précéder la valeur du préfixe correct.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Paramètre d'entrée Type de données

Description

EnableIn BOOL Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Si activé, l'instruction est exécutée comme décrit dans la section Exécution.Activé par défaut.

Source DINT Valeur à tester par rapport à Compare.Valeurs correctes = tout nombre entier.

Masque DINT Définit les bits à bloquer (masque).Valeurs correctes = tout nombre entier.

Comparer DINT Valeur de comparaison.Valeurs correctes = tout nombre entier.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest BOOL Résultat de l'instruction. Ceci est équivalent à l'état de sortie de la ligne pour l'instruction logique à relais MEQ.

Préfixe Description

16# hexadécimalpar exemple : 16#0F0F

8# octalpar exemple : 8#16

2# binairepar exemple : 2#00110011

Publication 1756-RM003F-FR-P - Mai 2002

Page 171: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-35

Logique à relais

Bloc fonctionnel

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai

fin

source masquée = comparaison

masquée

oui

non

l'état de sortie de la ligne est réglé sur vrai

l'état de sortie de la ligne est réglé sur faux

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé, l'instruction ne fait rien et les sorties ne sont pas actualisées.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 172: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4-36 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Exemple 1 : Si la valeur masquée value_1 est égale à la valeur masquée value_2, light_1 est activé. Si la valeur masquée value_1 n'est pas égale à la valeur masquée value_2, light_1 est effacé. Cet exemple montre des valeurs masquées égales. Un 0 dans le masque empêche l'instruction de comparer ce bit (indiqué par x dans l'exemple).

Logique à relais

Texte structuré

light_1 := ((value_1 AND mask_1)=(value_2 AND mask_2));

Bloc fonctionnel

value_1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 value_2 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0

mask_1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 mask_1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0

Valeur masquée value_1

0 1 0 1 0 1 0 1 1 1 1 1 x x x x Valeur masquée value_2

0 1 0 1 0 1 0 1 1 1 1 1 x x x x

Publication 1756-RM003F-FR-P - Mai 2002

Page 173: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-37

Exemple 2 : Si la valeur masquée value_1 est égale à la valeur masquée value_2, light_1 est activé. Si la valeur masquée value_1 n'est pas égale à la valeur masquée value_2, light_1 est effacé. Cet exemple montre des valeurs masquées différentes. Un 0 dans le masque empêche l'instruction de comparer ce bit (indiqué par x dans l'exemple).

Logique à relais

Texte structuré

light_1 := ((value_1 AND mask_1)=(value_2 AND mask_2));

Bloc fonctionnel

value_1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 value_2 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0

mask_1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 mask_1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1

Valeur masquée value_1

x x x x x x x x x x x x 1 1 1 1 Valeur masquée value_2

x x x x x x x x x x x x 0 0 0 0

Publication 1756-RM003F-FR-P - Mai 2002

Page 174: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4-38 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Différent de (NEQ) L'instruction NEQ teste si Source A est différente de Source B.

Opérandes :

Logique à relais

• Si vous entrez un point SINT ou INT, la valeur est convertie en valeur DINT par extension de signe.

• Les types de données chaîne sont :

– type de données STRING par défaut ;

– tout nouveau type de données chaîne que vous créez.

• Pour tester les caractères d'une chaîne, entrez un point de type chaîne de caractères pour Source A et Source B.

Texte structuré

Utilisez les signes inférieur et supérieur “<>“ comme opérateur dans l'expression. Cette expression évalue si sourceA est différent de sourceB.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Opérande Type Format Description

Source A SINTINTDINTREALSTRING

immédiatpoint

valeur à tester par rapport à Source B

Source B SINTINTDINTREALSTRING

immédiatpoint

valeur à tester par rapport à Source A

Opérande Type Format Description

point NEQ FBD_COMPARE structure structure NEQ

IF sourceA <> sourceB THEN

<instructions>;

Publication 1756-RM003F-FR-P - Mai 2002

Page 175: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-39

Structure FBD_COMPARE

Description : L'instruction NEQ teste si Source A est différente de Source B.

Lorsque vous comparez des chaînes :

• les chaînes de ne sont pas égales si un seul de leurs caractères ne correspond pas dans les deux chaînes ;

• les caractères ASCII sont différents s'ils sont en majuscules ou en minuscules. Un « A » majuscule ($41) n'est pas égal à un « a » minuscule ($61).

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

SourceA REAL Valeur à tester par rapport à SourceB.Valeurs correctes = toute virgule flottante.

SourceB REAL Valeur à tester par rapport à SourceA.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest BOOL Résultat de l'instruction. Ceci est équivalent à l'état de sortie de la ligne pour l'instruction logique à relais NEQ.

Caractères ASCII Codes Hex

1ab $31$61$62

1b $31$62

A $41

AB $41$42

B $42

a $61

ab $61$62

supérieur

inférieur AB < B

a > B

Publication 1756-RM003F-FR-P - Mai 2002

Page 176: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4-40 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Logique à relais

Bloc fonctionnel

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai

fin

Source A = Source Boui

non

l'état de sortie de la ligne est réglé sur vrai

l'état de sortie de la ligne est réglé sur faux

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 177: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-41

Exemple : Si value_1 est différente 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

Publication 1756-RM003F-FR-P - Mai 2002

Page 178: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4-42 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Notes :

Publication 1756-RM003F-FR-P - Mai 2002

Page 179: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Chapitre 5

Instructions de calcul/mathématiques(CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Introduction Les instructions de calcul/mathématiques évaluent les opérations arithmétiques à l'aide d'une expression ou d'une instruction arithmétique particulière.

Vous pouvez combiner différents types de données ; cependant des erreurs de précision et un arrondissement des valeurs peuvent se produire et l'instruction est plus longue à exécuter. Vérifiez le bit S:V pour voir si le résultat a été tronqué.

Pour les instructions de logique à relais, les types de données en gras indiquent les types de données optimaux. Une instruction est exécutée plus rapidement et demande moins de mémoire si tous les opérandes de l'instruction utilisent le même type de données optimal, généralement DINT ou REAL.

Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page

évaluer une expression CPT logique à relaistexte structuré(1)

5-2

additionner deux valeurs ADD logique à relaistexte structuré(2)

bloc fonctionnel

5-6

soustraire deux valeurs SUB logique à relaistexte structuré(2)

bloc fonctionnel

5-9

multiplier deux valeurs MUL logique à relaistexte structuré(2)

bloc fonctionnel

5-12

diviser deux valeurs DIV logique à relaistexte structuré(2)

bloc fonctionnel

5-15

déterminer le reste après la division d'une valeur par une autre

MOD logique à relaistexte structuré(2)

bloc fonctionnel

5-19

calculer la racine carrée d'une valeur SQRSQRT(3)

logique à relaistexte structurébloc fonctionnel

5-23

prendre le signe opposé d'une valeur NEG logique à relaistexte structuré(2)

bloc fonctionnel

5-26

prendre la valeur absolue d'une valeur ABS logique à relaistexte structurébloc fonctionnel

5-29

(1) Il n'existe pas d'instruction équivalente en texte structuré. Utilisez une autre programmation en texte structuré pour obtenir le même résultat. Voir la description de l'instruction.

(2) Il n'existe pas d'instruction équivalente en texte structuré. Utilisez l'opérateur dans une expression.

(3) Texte structuré uniquement.

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 180: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

5-2 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Calcul (CPT) L'instruction CPT effectue les opérations arithmétiques que vous définissez dans l'expression.

Opérandes :

Logique à relais

Texte structuré

Il n'y a pas d'instruction CPT en texte structuré, mais vous pouvez obtenir le même résultat 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.

Description : L'instruction CPT effectue les opérations arithmétiques que vous définissez dans l'expression. Lorsqu’elle est activée, l’instruction CPT évalue l'expression et stocke le résultat dans la Destination.

L'exécution d'une instruction CPT est légèrement plus lente et utilise plus de mémoire que l'exécution des autres instructions de calcul/mathématiques. L'avantage de l'instruction CPT est qu'elle vous permet d'entrer des expressions complexes dans une seule instruction.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Opérande Type Format Description

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Expression SINTINTDINTREAL

immédiatpoint

expression constituée de points et/ou de valeurs immédiates séparées par des opérateurs

Un point SINT ou INT est converti en valeur DINT par extension de signe.

CONSEIL Il n'y a pas de limite à la longueur d'une expression.

Publication 1756-RM003F-FR-P - Mai 2002

Page 181: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-3

Exécution :

Exemple 1 : Lorsqu'elle est activée, l'instruction CPT évalue value_1 multipliée par 5 et divise ce résultat par le résultat de value_2 divisée par 7 et stocke le résultat final dans result_1.

Exemple 2 : Lorsqu'elle est activée, l'instruction CPT tronque float_value_1 et float_value_2, porte la valeur tronquée float_value_2 à la puissance deux et divise la valeur tronquée float_value_1 par ce résultat, puis stocke le reste après la division dans float_value_result_cpt.

Condition Action de la logique à relais

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L’instruction évalue l'expression et stocke le résultat dans la Destination.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Publication 1756-RM003F-FR-P - Mai 2002

Page 182: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

5-4 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Opérateurs valables

Formatage des expressions

Pour chaque opérateur utilisé dans une expression, vous devez fournir un ou deux opérandes (points ou valeurs immédiates). Utilisez le tableau suivant pour formater les opérateurs et les opérandes dans une expression.

Définition de l'ordre d'exécution des opérations

Les opérations que vous écrivez dans l'expression sont exécutées par l'instruction dans un ordre précis, qui n'est pas nécessairement l'ordre dans lequel vous les écrivez. Vous pouvez modifier l'ordre des opérations en groupant des termes entre parenthèses, ce qui force l'instruction à exécuter une opération entre parenthèses avant les autres opérations.

Opérateur Description Optimal

+ addition DINT, REAL

- soustraction/négation DINT, REAL

* multiplication DINT, REAL

/ division DINT, REAL

** exposant (x à y) DINT, REAL

ABS valeur absolue DINT, REAL

ACS cosinus d'arc REAL

AND ET sur bits DINT

ASN sinus d'arc REAL

ATN tangente d'arc REAL

COS cosinus REAL

DEG radians en degrés DINT, REAL

FRD DCB en nombre entier DINT

LN logarithme naturel REAL

LOG logarithme décimal REAL

MOD modulo DINT, REAL

NOT complément sur bits DINT

OR OU sur bits DINT

RAD degrés en radians DINT, REAL

SIN sinus REAL

SQR racine carrée DINT, REAL

TAN tangente REAL

TOD nombre entier en DCB DINT

TRN troncation DINT, REAL

XOR OU exclusif sur bits DINT

Opérateur Description Optimal

Pour les opérateurs opérant sur

Utilisez ce format Exemples

un opérande opérateur(opérande) ABS(point_a)

deux opérandes opérande_a opérateur opérande_b

• point_b + 5• point_c AND point_d• (point_e ** 2) MOD

(point_f / point_g)

Publication 1756-RM003F-FR-P - Mai 2002

Page 183: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-5

Les opérations d'ordre identique sont exécutées de gauche à droite.

Ordre Opération

1. ( )

2. ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG, RAD, SIN, SQR, TAN, TOD, TRN

3. **

4. − (négation), NOT

5. *, /, MOD

6. − (soustraction), +

7. AND

8. XOR

9. OR

Publication 1756-RM003F-FR-P - Mai 2002

Page 184: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

5-6 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Addition (ADD) L'instruction ADD ajoute Source A à Source B et stocke le résultat dans la Destination.

Opérandes :

Logique à relais

Texte structuré

Utilisez le signe plus “+” comme opérateur dans une expression. Cette expression ajoute sourceA à sourceB et stocke le résultat dans dest.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Opérande Type Format Description

Source A SINTINTDINTREAL

immédiatpoint

valeur à ajouter à Source B

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Source B SINTINTDINTREAL

immédiatpoint

valeur à ajouter à Source A

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Opérande Type Format Description

point ADD FBD_MATH structure structure ADD

dest := sourceA + sourceB;

Publication 1756-RM003F-FR-P - Mai 2002

Page 185: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-7

Structure FBD_MATH

Description : L'instruction ADD ajoute Source A à Source B et stocke le résultat dans la Destination.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Exécution :

Logique à relais

Bloc fonctionnel

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

SourceA REAL Valeur à ajouter à SourceB.Valeurs correctes = toute virgule flottante.

SourceB REAL Valeur à ajouter à SourceA.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest REAL Résultat de l'instruction mathématique. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai Destination = Source A + Source BL'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 186: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

5-8 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Exemple : Additionner float_value_1 et float_value_2 et placer le résultat dans add_result.

Logique à relais

Texte structuré

add_result := float_value_1 + float_value_2;

Bloc fonctionnel

Publication 1756-RM003F-FR-P - Mai 2002

Page 187: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-9

Soustraction (SUB) L'instruction SUB soustrait Source B à Source A et stocke le résultat dans la Destination.

Opérandes :

Logique à relais

Texte structuré

Utilisez le signe moins “−” comme opérateur dans une expression. Cette expression soustrait sourceB de sourceA et stocke le résultat dans dest.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Opérande Type Format Description

Source A SINTINTDINTREAL

immédiatpoint

valeur dont Source B est à soustraire

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Source B SINTINTDINTREAL

immédiatpoint

valeur à soustraire de Source A

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Opérande Type Format Description

point SUB FBD_MATH structure structure SUB

dest := sourceA - sourceB;

Publication 1756-RM003F-FR-P - Mai 2002

Page 188: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

5-10 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Structure FBD_MATH

Description : L'instruction SUB soustrait Source B à Source A et stocke le résultat dans la Destination.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Exécution :

Logique à relais

Bloc fonctionnel

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

SourceA REAL Valeur dont SourceB est à soustraire.Valeurs correctes = toute virgule flottante.

SourceB REAL valeur à soustraire de SourceA.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest REAL Résultat de l'instruction mathématique. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai Destination = Source B - Source AL'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 189: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-11

Exemple : Soustraire float_value_2 de float_value_1 et placer le résultat dans subtract_result.

Logique à relais

Texte structuré

subtract_result := float_value_1 - float_value_2;

Bloc fonctionnel

Publication 1756-RM003F-FR-P - Mai 2002

Page 190: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

5-12 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Multiplication (MUL) L'instruction MUL multiplie Source A par Source B et stocke le résultat dans la Destination.

Opérandes :

Logique à relais

Texte structuré

Utilisez le signe multiplier “∗ ” comme opérateur dans une expression. Cette expression multiplie sourceA par sourceB et stocke le résultat dans dest.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Opérande Type Format Description

Source A SINTINTDINTREAL

immédiatpoint

valeur du multiplicande

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Source B SINTINTDINTREAL

immédiatpoint

valeur du multiplicateur

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Opérande Type Format Description

point MUL FBD_MATH structure structure MUL

dest := sourceA * sourceB;

Publication 1756-RM003F-FR-P - Mai 2002

Page 191: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-13

Structure FBD_MATH

Description : L'instruction MUL multiplie Source A par Source B et stocke le résultat dans la Destination.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Exécution :

Logique à relais

Bloc fonctionnel

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source A REAL Valeur du multiplicande.Valeurs correctes = toute virgule flottante.

Source B REAL Valeur du multiplicateur.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest REAL Résultat de l'instruction mathématique. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai Destination = Source B x Source AL'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 192: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

5-14 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Exemple : Multiplier float_value_1 par float_value_2 et placer le résultat dans multiply_result.

Logique à relais

Texte structuré

multiply_result := float_value_1 ∗ float_value_2;

Bloc fonctionnel

Publication 1756-RM003F-FR-P - Mai 2002

Page 193: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-15

Division (DIV) L'instruction DIV divise Source A par Source B et stocke le résultat dans la Destination.

Opérandes :

Logique à relais

Texte structuré

Utilisez le signe diviser “/” comme opérateur dans une expression. Cette expression divise sourceA par sourceB et stocke le résultat dans dest.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Opérande Type Format Description

Source A SINTINTDINTREAL

immédiatpoint

valeur du dividende

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Source B SINTINTDINTREAL

immédiatpoint

valeur du diviseur

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Opérande Type Format Description

point DIV FBD_MATH structure structure DIV

dest := sourceA / sourceB;

Publication 1756-RM003F-FR-P - Mai 2002

Page 194: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

5-16 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Structure FBD_MATH

Description : Si la Destination n'est pas REAL, l'instruction traite la partie décimale du résultat comme suit :

Si Source B (le diviseur) est zéro :

• un défaut mineur se produit :

– type 4 : défaut du programme ;

– code 4 : dépassement arithmétique.

• la destination est réglée comme suit :

Pour détecter une éventuelle division par zéro, examinez le bit de défaut mineur (S:MINOR). Voir Automate Logix5000 - Procédures générales (publication 1756-PM001).

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source A REAL Valeur du dividende.Valeurs correctes = toute virgule flottante.

Source B REAL Valeur du diviseur.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest REAL Résultat de l'instruction mathématique. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Si Source A La partie décimale du résultat

Exemple

et Source B ne sont pas REAL

est tronquée Source A DINT 5

Source B DINT 3

Destination DINT 1

ou Source B est REAL est arrondie Source A REAL 5.0

Source B DINT 3

Destination DINT 2

Si Source B est zéro et Et la destination est un Et le résultat est La destination est réglée sur

tous les opérandes sont des nombres entiers (SINT, INT ou DINT)

Source A

au moins un opérande est un REAL SINT, INT ou DINT positif -1

négatif 0

REAL positif 1.$ (infini positif)

négatif -1.$ (infini négatif)

Publication 1756-RM003F-FR-P - Mai 2002

Page 195: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-17

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur :

Exécution :

Logique à relais

Bloc fonctionnel

Un défaut mineur se produit si

Type du défaut Code du défaut

le diviseur est zéro 4 4

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai Destination = Source A / Source BL'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 196: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

5-18 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Exemple 1 : Diviser float_value_1 par float_value_2 et placer le résultat dans divide_result.

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 résultat et le placer dans un point de nombre entier :

• l'instruction DIV divise dint_a par dint_b ;

• pour arrondir le résultat, la destination est un point REAL (si la destination est un point de nombre entier (SINT, INT ou DINT), l'instruction tronque le résultat) ;

• l'instruction MOV déplace le résultat 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 placée dans la destination DINT.

Logique à relais

43009

Publication 1756-RM003F-FR-P - Mai 2002

Page 197: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-19

Modulo (MOD) L'instruction MOD divise Source A par Source B et stocke le reste dans la Destination.

Opérandes :

Logique à relais

Texte structuré

Utilisez MOD comme opérateur dans une expression. Cette expression divise sourceA par sourceB et stocke le résultat dans dest.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Opérande Type Format Description

Source A SINTINTDINTREAL

immédiatpoint

valeur du dividende

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Source B SINTINTDINTREAL

immédiatpoint

valeur du diviseur

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Opérande Type Format Description

point MOD FBD_MATH structure structure MOD

dest := sourceA MOD sourceB;

Publication 1756-RM003F-FR-P - Mai 2002

Page 198: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

5-20 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Structure FBD_MATH

Description : Si Source B (le diviseur) est zéro :

• un défaut mineur se produit :

– type 4 : défaut du programme ;

– code 4 : dépassement arithmétique.

• la destination est réglée comme suit :

Pour détecter une éventuelle division par zéro, examinez le bit de défaut mineur (S:MINOR). Voir Automate Logix5000 - Procédures générales (publication 1756-PM001).

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source A REAL Valeur du dividende.Valeurs correctes = toute virgule flottante.

Source B REAL Valeur du diviseur.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest REAL Résultat de l'instruction mathématique. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Si Source B est zéro et Et la destination est un Et le résultat est La destination est réglée sur

tous les opérandes sont des nombres entiers (SINT, INT ou DINT)

Source A

au moins un opérande est un REAL SINT, INT ou DINT positif -1

négatif 0

REAL positif 1.$ (infini positif)

négatif -1.$ (infini négatif)

Publication 1756-RM003F-FR-P - Mai 2002

Page 199: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-21

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur :

Exécution :

Logique à relais

Bloc fonctionnel

Un défaut mineur se produit si

Type du défaut Code du défaut

le diviseur est zéro 4 4

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai Destination = Source A – (TRN (Source A / Source B) * Source B)L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 200: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

5-22 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Exemple : Diviser dividend par divisor et placer le résultat 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

Publication 1756-RM003F-FR-P - Mai 2002

Page 201: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-23

Racine carrée (SQR) L'instruction SQR calcule la racine carrée de la Source et stocke le résultat dans la Destination.

Opérandes :

Logique à relais

Texte structuré

Utilisez SQRT comme une fonction. Cette expression calcule la racine carrée de source et stocke le résultat dans dest.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Structure FBD_MATH_ADVANCED

Opérande Type Format Description

Source SINTINTDINTREAL

immédiatpoint

trouve la racine carrée de cette valeur

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Opérande Type Format Description

point SQR FBD_MATH_ADVANCED structure structure SQR

dest := SQRT(source);

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source REAL Trouve la racine carrée de cette valeur.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest REAL Résultat de l'instruction mathématique. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Publication 1756-RM003F-FR-P - Mai 2002

Page 202: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

5-24 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Description : Si la Destination n'est pas REAL, l'instruction traite la partie décimale du résultat comme suit :

Si la valeur Source est négative, l'instruction prend la valeur absolue de la Source avant de calculer la racine carrée.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Exécution :

Logique à relais

Bloc fonctionnel

Si la Source est La partie décimale du résultat

Exemple

n'est pas REAL est tronquée Source DINT 3

Destination DINT 1

est REAL est arrondie Source REAL 3.0

Destination DINT 2

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai

L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Destination Source=

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 203: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-25

Exemple : Calculer la racine carrée de value_1 et placer le résultat dans sqr_result.

Logique à relais

Texte structuré

sqr_result := SQRT(value_1);

Bloc fonctionnel

Publication 1756-RM003F-FR-P - Mai 2002

Page 204: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

5-26 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Négation (NEG) L'instruction NEG change le signe de la Source et stocke le résultat dans la Destination.

Opérandes :

Logique à relais

Texte structuré

Utilisez le signe moins “−” comme opérateur dans une expression. Cette expression change le signe de source et stocke le résultat dans dest.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Structure FBD_MATH

Description : Si vous ajoutez un signe moins à une valeur négative, le résultat est positif. Si vous ajoutez un signe moins à une valeur positive, le résultat est négatif.

Opérande Type Format Description

Source SINTINTDINTREAL

immédiatpoint

valeur de négation

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Opérande Type Format Description

point NEG FBD_MATH_ADVANCED structure structure NEG

dest := -source;

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source REAL Valeur de négation.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest REAL Résultat de l'instruction mathématique. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Publication 1756-RM003F-FR-P - Mai 2002

Page 205: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-27

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Exécution :

Logique à relais

Bloc fonctionnel

Exemple : Changer le signe de value_1 et placer le résultat dans negate_result.

Logique à relais

Texte structuré

negate_result := -value_1;

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai Destination = 0 − SourceL'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 206: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

5-28 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Bloc fonctionnel

Publication 1756-RM003F-FR-P - Mai 2002

Page 207: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-29

Valeur absolue (ABS) L'instruction ABS prend la valeur absolue de la Source et stocke le résultat dans la Destination.

Opérandes :

Logique à relais

Texte structuré

Utilisez ABS comme une fonction. Cette expression calcule la valeur absolue de source et stocke le résultat dans dest.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Structure FBD_MATH_ADVANCED

Description : L'instruction ABS prend la valeur absolue de la Source et stocke le résultat dans la Destination.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Opérande Type Format Description

Source SINTINTDINTREAL

immédiatpoint

valeur de laquelle prendre la valeur absolue

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Opérande Type Format Description

point ABS FBD_MATH_ADVANCED structure structure ABS

dest := ABS(source);

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source REAL Valeur de laquelle prendre la valeur absolue.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest REAL Résultat de l'instruction mathématique. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Publication 1756-RM003F-FR-P - Mai 2002

Page 208: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

5-30 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Conditions d'erreur : aucune

Exécution :

Logique à relais

Bloc fonctionnel

Exemple : Placer la valeur absolue de value_1 dans value_1_absolute. Dans cet exemple, la valeur absolue de moins quatre est quatre.

Logique à relais

Texte structuré

value_1_absolute := ABS(value_1);

Bloc fonctionnel

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai Destination = | Source |L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 209: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Chapitre 6

Instructions de transfert/logiques(MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Introduction Vous pouvez combiner différents types de données, mais des erreurs de précision et un arrondissement des valeurs peuvent se produire et l'instruction est plus longue à exécuter. Vérifiez le bit S:V pour voir si le résultat a été tronqué.

Pour les instructions de logique à relais, les types de données en gras indiquent les types de données optimaux. Une instruction est exécutée plus rapidement et demande moins de mémoire si tous les opérandes de l'instruction utilisent le même type de données optimal, généralement DINT ou REAL.

Les instructions de transfert modifient et déplacent les bits.

Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page

copier une valeur MOV logique à relaistexte structuré(1)

6-3

copier une partie spécifique d'un nombre entier MVM logique à relais 6-5

copier une partie spécifique d'un nombre entier dans un bloc fonctionnel

MVMT texte structurébloc fonctionnel

6-8

transférer des bits à l'intérieur d'un nombre entier ou entre des nombres entiers

BTD logique à relais 6-11

déplacer des bits dans un nombre entier ou entre des nombres entiers dans un bloc fonctionnel

BTDT texte structurébloc fonctionnel

6-14

effacer une valeur CLR texte structuré(1)

logique à relais6-17

réorganiser les octets d'un point INT, DINT ou REAL SWPB logique à relaistexte structuré

6-18

(1) Il n'existe pas d'instruction équivalente en texte structuré. Utilisez une autre programmation en texte structuré pour obtenir le même résultat. Voir la description de l'instruction.

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 210: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6-2 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Les instructions logiques effectuent des opérations sur les bits.

Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page

une opération ET sur bits AND&(1)

logique à relaistexte structuré(2)

bloc fonctionnel

6-22

une opération OU sur bits OR logique à relaistexte structuré(2)

bloc fonctionnel

6-25

une opération OU exclusif sur bits XOR logique à relaistexte structuré(2)

bloc fonctionnel

6-28

une opération COMPLEMENT sur bits NOT logique à relaistexte structuré(2)

bloc fonctionnel

6-31

une opération ET logique sur huit entrées booléennes maximum

BAND texte structuré(2)

bloc fonctionnel6-34

une opération OU logique sur huit entrées booléennes maximum

BOR texte structuré(2)

bloc fonctionnel6-37

effectuer un OU exclusif sur deux entrées booléennes

BXOR texte structuré(2)

bloc fonctionnel6-40

compléter une entrée booléenne BNOT texte structuré(2)

bloc fonctionnel6-42

(1) Texte structuré uniquement.

(2) En texte structuré, les opérations AND, OR, XOR et NOT peuvent être sur bits ou logiques.

Publication 1756-RM003F-FR-P - Mai 2002

Page 211: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-3

Transfert (MOV) L'instruction MOV copie la Source dans la Destination. La Source reste inchangée.

Opérandes :

Logique à relais

Texte structuré

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.

Description : L'instruction MOV copie la Source dans la Destination. La Source reste inchangée.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Opérande Type Format Description

Source SINTINTDINTREAL

immédiatpoint

valeur à transférer (copier)

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Destination SINTINTDINTREAL

point point pour le stockage du résultat

dest := source;

Publication 1756-RM003F-FR-P - Mai 2002

Page 212: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6-4 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Exécution :

Exemple : Transférer les données de value_1 dans value_2.

Logique à relais

Texte structuré

value_2 := value _1;

Condition Action de la logique à relais

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'instruction copie la Source dans la Destination.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Publication 1756-RM003F-FR-P - Mai 2002

Page 213: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-5

Transfert avec masque (MVM)

L'instruction MVM copie la Source dans une Destination et permet de masquer une partie des données.

Cette instruction existe en texte structuré et en bloc fonctionnel comme instruction MVMT (voir page 6-8).

Opérandes :

Logique à relais

Texte structuré

Cette instruction existe en texte structuré comme instruction MVMT. Vous pouvez également combiner une logique sur bits dans une expression et attribuer le résultat à la destination. Cette expression exécute 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 données Source. Un « 1 » dans le masque signifie que le bit de données est passé. Un « 0 » dans le masque signifie que le bit de données est bloqué.

Si vous mélangez des types d'entiers, l'instruction écrit des 0 pour les bits supérieurs dans des entiers de taille inférieure, pour qu'ils aient la même taille que les entiers de grande taille.

Opérande Type Format Description

Source SINTINTDINT

immédiatpoint

valeur à transférer

Un point SINT ou INT est converti en valeur DINT par remplissage par zéros.

Masque SINTINTDINT

immédiatpoint

bits à bloquer ou à passer

Un point SINT ou INT est converti en valeur DINT par remplissage par zéros.

Destination SINTINTDINT

point point pour le stockage du résultat

dest := (Dest AND NOT (Mask))OR (Source AND Mask);

Publication 1756-RM003F-FR-P - Mai 2002

Page 214: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6-6 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Entrée d'une valeur de masque immédiate

Lorsque vous entrez un masque, le logiciel de programmation passe à des valeurs décimales par défaut. Si vous voulez entrer un masque à l'aide d'un autre format, faites précéder la valeur du préfixe correct.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Exécution :

Préfixe Description

16# hexadécimalpar exemple : 16#0F0F

8# octalpar exemple : 8#16

2# binairepar exemple : 2#00110011

Condition Action de la logique à relais

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'instruction passe la Source par le masque et copie le résultat dans la Destination. Les bits non masqués de la Destination restent inchangés.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Publication 1756-RM003F-FR-P - Mai 2002

Page 215: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-7

Exemple : Copier des données de value_a dans value_b, tout en permettant aux données d'être masquées (un 0 masque les données de value_a).

Logique à relais

Texte structuré

value_b := (value_b AND NOT (mask_2)) OR(value_a AND mask_2);

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

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 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1

Les parties grisées montrent les bits qui ont changé dans value_b.

Publication 1756-RM003F-FR-P - Mai 2002

Page 216: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6-8 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Transfert avec masque et cible (MVMT)

L'instruction MVMT copie d'abord la Cible (consigne) dans la Destination. Elle compare ensuite la Source masquée à la Destination et applique les changements nécessaires à la Destination. La Cible et la Source restent inchangées.

Cette instruction est disponible en logique à relais comme instruction MVM (voir page 6-5).

Opérandes :

Texte structuré

Bloc fonctionnel

Structure FBD_MASKED_MOVE

Description : Lorsqu'elle est activée, l'instruction MVMT utilise un masque pour passer ou bloquer les bits de données Source. Un « 1 » dans le masque

Variable Type Format Description

point MVMT FBD_MASKED_MOVE structure structure MVMT

Opérande Type Format Description

point MVMT FBD_MASKED_MOVE structure structure MVMT

MVMT(MVMT_tag);

Paramètre d'entrée Type de données

Description

EnableIn BOOL Bloc fonctionnel :Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Si activé, l'instruction est exécutée.Activé par défaut.Texte structuré :Aucun effet. L'instruction est exécutée.

Source DINT Valeur d'entrée à transférer dans la Destination en fonction de la valeur du Masque.Valeurs correctes = tout nombre entier.

Masque DINT Masque des bits à transférer de Source à Dest. Tous les bits réglés sur un font passer les bits correspondants de Source dans Dest. Tous les bits réglés sur zéro empêchent les bits correspondants de passer de Source dans Dest.Valeurs correctes = tout nombre entier.

Cible DINT Valeur d'entrée à transférer dans Dest avant de transférer les bits de Source à travers le Masque.Valeurs correctes = tout nombre entier.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest DINT Résultat d'une instruction de transfert avec masque. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Publication 1756-RM003F-FR-P - Mai 2002

Page 217: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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 données est passé. Un « 0 » dans le masque signifie que le bit de données est bloqué.

Si vous mélangez des types d'entiers, l'instruction écrit des 0 pour les bits supérieurs dans des entiers de taille inférieure, pour qu'ils aient la même taille que les entiers de grande taille.

Entrée d'une valeur de masque immédiate à l'aide d'une référence d'entrée

Lorsque vous entrez un masque, le logiciel de programmation passe à des valeurs décimales par défaut. Si vous voulez entrer un masque à l'aide d'un autre format, faites précéder la valeur du préfixe correct.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Exécution :

Préfixe Description

16# hexadécimalpar exemple : 16#0F0F

8# octalpar exemple : 8#16

2# binairepar exemple : 2#00110011

Condition Action du bloc fonctionnel Action du texte structuré

pendant la pré-scrutation Aucune. Aucune.

pendant la première scrutation de l'instruction

Aucune. Aucune.

pendant la première exécution de l'instruction

Aucune. Aucune.

si EnableIn est effacé EnableOut est effacé, l'instruction ne fait rien et les sorties ne sont pas actualisées.

-

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

EnableIn est toujours activé.L'instruction est exécutée.

pendant la post-scrutation Aucune. Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 218: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6-10 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Exemple : 1. Copier Cible dans Dest.

2. L'instruction masque Source et la compare à Dest. Les modifications requises sont effectuées dans Dest. Source et Cible restent inchangées. Un 0 dans le masque empêche l'instruction de comparer ce bit (indiqué par x dans l'exemple).

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

Cible 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Dest 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Source 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Mask1 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

Dest 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1

Les parties grisées montrent les bits qui ont changé.

Publication 1756-RM003F-FR-P - Mai 2002

Page 219: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-11

Distribution d'un champ de bits (BTD)

L'instruction BTD copie les bits spécifiés de la Source, les place dans la position appropriée et les écrit dans la Destination.

Cette instruction existe en texte structuré et en bloc fonctionnel comme instruction BTDT (voir page 6-14).

Opérandes :

Logique à relais

Description : Lorsqu'elle est activée, l'instruction BTD copie un groupe de bits de la Source dans la Destination. Le groupe de bits est identifié par le bit Source (plus petit numéro de bit du groupe) et la Longueur (nombre de bits à copier). Le bit de Destination identifie le plus petit numéro de bit par lequel commencer dans la Destination. La Source reste inchangée.

Si la longueur du champ de bit dépasse la Destination, l'instruction n'enregistre pas les bits supplémentaires. Ces bits ne passent pas au mot suivant.

Si vous mélangez des types d'entiers, l'instruction écrit des 0 pour les bits supérieurs dans des entiers de taille inférieure, pour qu'ils aient la même taille que les entiers de grande taille.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Opérande Type Format Description

Source SINTINTDINT

immédiatpoint

point qui contient le bit à transférer

Un point SINT ou INT est converti en valeur DINT par remplissage par zéros.

Bit source DINT immédiat(0-31 DINT)(0-15 INT)(0-7 SINT)

numéro du bit (plus petit numéro de bit) à partir duquel commencer le transfertdoit être dans la plage valable du type de données Source

Destination SINTINTDINT

point point dans lequel transférer les bits

Bit destinataire

DINT immédiat(0-31 DINT)(0-15 INT)(0-7 SINT)

numéro du bit (plus petit numéro de bit) à partir duquel commencer la copie de bits Sourcedoit être dans la plage valable du type de données Destination

Longueur DINT immédiat (1-32)

nombre de bits à transférer

Publication 1756-RM003F-FR-P - Mai 2002

Page 220: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6-12 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Exécution :

Exemple 1 : Lorsqu'elle est activée, l'instruction BTD transfère les bits dans value_1.

Condition Action de la logique à relais

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'instruction copie et déplace les bits de Source dans la Destination.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

value_1 avant l'instruction BTD 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0

value_1 après l'instruction BTD 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Les parties grisées montrent les bits qui ont changé dans value_1.

bit sourcebit destination

Publication 1756-RM003F-FR-P - Mai 2002

Page 221: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-13

Exemple 2 : Lorsqu'elle est activée, l'instruction BTD transfère 10 bits de value_1 dans value_2.

value_1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

value_2 avant l'instruction BTD 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

value_2 après l'instruction BTD 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0

Les parties grisées montrent les bits qui ont changé dans value_2.

bit source

bit destination

Publication 1756-RM003F-FR-P - Mai 2002

Page 222: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6-14 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Distribution d'un champ de bits avec cible (BTDT)

L'instruction BTDT copie d'abord la Cible dans la Destination. L'instruction copie ensuite les bits indiqués de la Source, les place dans la position appropriée et les écrit dans la Destination. La Cible et la Source restent inchangées.

Cette instruction est disponible en logique à relais comme instruction BTD (voir page 6-11).

Opérandes :

Texte structuré

Bloc fonctionnel

Structure FBD_BIT_FIELD_DISTRIBUTE

Variable Type Format Description

point BTDT FBD_BIT_FIELD_DISTRIBUTE structure structure BTDT

Opérande Type Format Description

point BTDT FBD_BIT_FIELD_DISTRIBUTE structure structure BTDT

BTDT(BTDT_tag);

Paramètre d'entrée Type de données

Description

EnableIn BOOL Bloc fonctionnel :Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Si activé, l'instruction est exécutée.Activé par défaut.Texte structuré :Aucun effet. L'instruction est exécutée.

Source DINT Valeur d'entrée contenant les bits à transférer dans la Destination.Valeurs correctes = tout nombre entier.

SourceBit DINT La position du bit dans Source (le plus petit numéro de bit à partir duquel commencer le transfert).Valeurs correctes = 0 à 31.

Longueur DINT Nombre de bits à transférerValeurs correctes = 1 à 32.

DestBit DINT La position du bit dans Dest (le plus petit numéro de bit à partir duquel commencer à copier des bits).Valeurs correctes = 0 à 31.

Cible DINT Valeur d'entrée à transférer dans Dest avant de transférer les bits à partir de la Source.Valeurs correctes = tout nombre entier.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest DINT Résultat de l'opération de transfert de bit. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Publication 1756-RM003F-FR-P - Mai 2002

Page 223: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-15

Description : Lorsqu'elle est activée, l'instruction BTD copie un groupe de bits de la Source dans la Destination. Le groupe de bits est identifié par le bit Source (plus petit numéro de bit du groupe) et la Longueur (nombre de bits à copier). Le bit de Destination identifie le plus petit numéro de bit par lequel commencer dans la Destination. La Source reste inchangée.

Si la longueur du champ de bit dépasse la Destination, l'instruction n'enregistre pas les bits supplémentaires. Ces bits ne passent pas au mot suivant.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Exécution :

Condition Action du bloc fonctionnel Action du texte structuré

pendant la pré-scrutation Aucune. Aucune.

pendant la première scrutation de l'instruction

Aucune. Aucune.

pendant la première exécution de l'instruction

Aucune. Aucune.

si EnableIn est effacé EnableOut est effacé, l'instruction ne fait rien et les sorties ne sont pas actualisées.

-

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

EnableIn est toujours activé.L'instruction est exécutée.

pendant la post-scrutation Aucune. Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 224: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6-16 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Exemple : 1. L'automate copie Cible dans Dest.

2. SourceBit et Length indiquent les bits de Source copiés dans Dest, en commençant par DestBit. Source et Cible restent inchangées.

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

Cible 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0

Dest 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0

Source 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0

Dest 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Les parties grisées montrent les bits qui ont changé..

SourceBitDestBit

Publication 1756-RM003F-FR-P - Mai 2002

Page 225: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-17

Effacer (CLR) L'instruction CLR efface tous les bits de la Destination.

Opérandes :

Logique à relais

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 arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Exécution :

Exemple : Effacer tous les bits de value avec des 0.

Logique à relais

Texte structuré :

value := 0;

Opérande Type Format Description

Destination SINTINTDINTREAL

point point à effacer

dest := 0;

Condition Action de la logique à relais

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'instruction efface la Destination.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Publication 1756-RM003F-FR-P - Mai 2002

Page 226: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6-18 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Permutation d'octets (SWPB)

L'instruction SWPB réorganise les octets d'une valeur.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction SWPB en logique à relais. Si vous sélectionnez le mode HIGH/LOW, entrez-le sous la forme HIGHLOW ou HIGH_LOW (sans barre oblique).

Description : L'instruction SWPB réorganise l'ordre des octets de la Source. Elle place le résultat dans la Destination.

Lorsque vous lisez ou écrivez des caractères ASCII, vous n'avez généralement pas besoin de permuter les caractères. Les instructions

Opérande Type Format Entrez

Source INTDINTREAL

point le point contenant les octets à réorganiser

Mode Ordre Si la source est

Et si vous voulez mettre les octets dans cette configuration (chaque lettre représente un octet différent)

Sélectionnez

INT - n'importe quelle option

DINTREAL

ABCD ⇒ DCBA REVERSE (ou entrez 0)

ABCD ⇒ CDAB WORD (ou entrez 1)

ABCD ⇒ BADC HIGH/LOW (ou entrez 2)

Destination INTDINTREAL

point le point stockant les octets dans le nouvel ordre

Si la source est

La destination doit être

INT INT

DINT

DINT DINT

REAL REAL

SWPB(Source,OrderMode,Dest);

Publication 1756-RM003F-FR-P - Mai 2002

Page 227: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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 caractères, comme indiqué ci-dessous.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

42969

42968

B A Nom du point Valeur Style Type

bar_code[0] AB ASCII INT

A B

lecteur de codes-barres

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai L'état de sortie de la ligne est réglé sur vrai. -

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction L'instruction réorganise les octets indiqués. L'instruction réorganise les octets indiqués.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 228: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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 réorganise les octets de DINT_1 dans un ordre différent. L'affichage est de type ASCII et chaque caractère représente un octet. Chaque instruction place les octets, dans le nouvel ordre, dans une Destination différente.

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 élément 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'éléments dans array et stocke cette valeur dans array_length. Une instruction suivante utilise cette valeur pour déterminer quand le sous-programme a agi sur tous les éléments dans le tableau.

2. Inversion des octets dans un élément de array.

• L'instruction SWPB inverse les octets du numéro d'élément 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 incrémente index. A l'exécution suivante de l'instruction, l'instruction SWPB agit sur l'élément suivant dans array.

3. Détermination du moment où l'instruction SWPB a agi sur tous les éléments dans le tableau.

• Si index est inférieur au nombre d'éléments dans le tableau (array_length), l'instruction continue avec l'élément suivant du tableau.

• Si index est égal à array_length, alors l'instruction SWPB a agi sur tous les éléments du tableau.

Publication 1756-RM003F-FR-P - Mai 2002

Page 229: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-21

Logique à relais

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;

Initialise les points.

Inverse les octets.

Détermine si l'instruction SWPB a agi sur tous les éléments du tableau.

Publication 1756-RM003F-FR-P - Mai 2002

Page 230: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6-22 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

ET sur bits (AND) L'instruction AND effectue une opération ET sur bits à l'aide des bits dans Source A et Source B, et place le résultat dans la Destination.

Pour effectuer un ET logique, voir page 6-34.

Opérandes :

Logique à relais

Texte structuré

Utilisez AND ou le signe “&” comme opérateur 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

Opérande Type Format Description

Source A SINTINTDINT

immédiatpoint

valeur utilisée par l'instruction AND avec Source B

Un point SINT ou INT est converti en valeur DINT par remplissage par zéros.

Source B SINTINTDINT

immédiatpoint

valeur utilisée par l'instruction AND avec Source A

Un point SINT ou INT est converti en valeur DINT par remplissage par zéros.

Destination SINTINTDINT

point stocke le résultat

Opérande Type Format Description

point AND FBD_LOGICAL structure structure AND

dest := sourceA AND sourceB

Publication 1756-RM003F-FR-P - Mai 2002

Page 231: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-23

Structure FBD_LOGICAL

Description : Lorsqu'elle est activée, l'instruction calcule l'opération ET :

Si vous mélangez des types d'entiers, l'instruction écrit des 0 pour les bits supérieurs dans des entiers de taille inférieure, pour qu'ils aient la même taille que les entiers de grande taille.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Exécution :

Logique à relais

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

SourceA DINT Valeur utilisée par l'instruction AND avec SourceB.Valeurs correctes = tout nombre entier.

SourceB DINT Valeur utilisée par l'instruction AND avec SourceA.Valeurs correctes = tout nombre entier.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest DINT Résultat de l'instruction. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Si le bit de Source A est

Si le bit de Source B est

Le bit de Destination est

0 0 0

0 1 0

1 0 0

1 1 1

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'instruction effectue une opération ET sur bits.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Publication 1756-RM003F-FR-P - Mai 2002

Page 232: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6-24 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Bloc fonctionnel

Exemple : Lorsqu'elle est activée, l'instruction AND effectue une opération ET sur bits sur SourceA et SourceB, puis stocke le résultat dans la Destination.

Logique à relais

Texte structuré :

value_result_and := value_1 AND value_2;

Bloc fonctionnel

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

SourceA 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1

SourceB 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0

Dest 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0

Publication 1756-RM003F-FR-P - Mai 2002

Page 233: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-25

OU sur bits (OR) L'instruction OR effectue une opération OU sur bits à l'aide des bits dans Source A et Source B et stocke le résultat dans la Destination.

Pour effectuer un OU logique, voir page 6-37.

Opérandes :

Logique à relais

Texte structuré

Utilisez OR comme opérateur 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

Opérande Type Format Description

Source A SINTINTDINT

immédiatpoint

valeur utilisée par l'instruction OR avec Source B

Un point SINT ou INT est converti en valeur DINT par remplissage par zéros.

Source B SINTINTDINT

immédiatpoint

valeur utilisée par l'instruction OR avec Source A

Un point SINT ou INT est converti en valeur DINT par remplissage par zéros.

Destination SINTINTDINT

point stocke le résultat

Opérande Type Format Description

point OR FBD_LOGICAL structure structure OR

dest := sourceA OR sourceB

Publication 1756-RM003F-FR-P - Mai 2002

Page 234: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6-26 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Structure FBD_LOGICAL

Description : Lorsqu'elle est activée, l'instruction calcule l'opération OU :

Si vous mélangez des types d'entiers, l'instruction écrit des 0 pour les bits supérieurs dans des entiers de taille inférieure, pour qu'ils aient la même taille que les entiers de grande taille.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Exécution :

Logique à relais

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

SourceA DINT Valeur utilisée par l'instruction OR avec SourceB.Valeurs correctes = tout nombre entier.

SourceB DINT Valeur utilisée par l'instruction OR avec SourceA.Valeurs correctes = tout nombre entier.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest DINT Résultat de l'instruction. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Si le bit de Source A est

Si le bit de Source B est

Le bit de Destination est

0 0 0

0 1 1

1 0 1

1 1 1

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'instruction effectue une opération OU sur bits.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Publication 1756-RM003F-FR-P - Mai 2002

Page 235: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-27

Bloc fonctionnel

Exemple : Lorsqu'elle est activée, l'instruction OR effectue une opération OU sur bits sur SourceA et SourceB, puis stocke le résultat dans la Destination.

Logique à relais

Texte structuré :

value_result_or := value_1 OR value_2;

Bloc fonctionnel

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

SourceA 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1

SourceB 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0

Dest 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1

Publication 1756-RM003F-FR-P - Mai 2002

Page 236: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6-28 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

OU exclusif sur bits (XOR) L'instruction XOR effectue une opération OU exclusif sur bits à l'aide des bits dans Source A et Source B et stocke le résultat dans la Destination.

Pour effectuer un OU exclusif logique, voir page 6-40.

Opérandes :

Logique à relais

Texte structuré

Utilisez XOR comme opérateur 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

Opérande Type Format Description

Source A SINTINTDINT

immédiatpoint

valeur utilisée par l'instruction XOR avec Source B

Un point SINT ou INT est converti en valeur DINT par remplissage par zéros.

Source B SINTINTDINT

immédiatpoint

valeur utilisée par l'instruction XOR avec Source A

Un point SINT ou INT est converti en valeur DINT par remplissage par zéros.

Destination SINTINTDINT

point stocke le résultat

Opérande Type Format Description

point XOR FBD_LOGICAL structure structure XOR

dest := sourceA XOR sourceB

Publication 1756-RM003F-FR-P - Mai 2002

Page 237: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-29

Structure FBD_LOGICAL

Description : Lorsqu'elle est activée, l'instruction calcule l'opération OU exclusif :

Si vous mélangez des types d'entiers, l'instruction écrit des 0 pour les bits supérieurs dans des entiers de taille inférieure, pour qu'ils aient la même taille que les entiers de grande taille.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Exécution :

Logique à relais

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

SourceA DINT Valeur utilisée par l'instruction XOR avec SourceB.Valeurs correctes = tout nombre entier.

SourceB DINT Valeur utilisée par l'instruction XOR avec SourceA.Valeurs correctes = tout nombre entier.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest DINT Résultat de l'instruction. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Si le bit de Source A est

Si le bit de Source B est

Le bit de Destination est

0 0 0

0 1 1

1 0 1

1 1 0

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'instruction effectue une opération OU sur bits.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Publication 1756-RM003F-FR-P - Mai 2002

Page 238: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6-30 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Bloc fonctionnel

Exemple : Lorsqu'elle est activée, l'instruction XOR effectue une opération OU exclusif sur bits sur SourceA et SourceB, et place le résultat dans le point de destination.

Logique à relais

Texte structuré :

value_result_xor := value_1 XOR value_2;

Bloc fonctionnel

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

value_1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1

value_2 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0

value_result_xor 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1

Publication 1756-RM003F-FR-P - Mai 2002

Page 239: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-31

COMPLEMENT sur bits (NOT)

L'instruction NOT effectue une opération COMPLEMENT sur bits à l'aide des bits de la Source et stocke le résultat dans la Destination.

Pour effectuer un COMPLEMENT logique, voir page 6-42.

Opérandes :

Logique à relais

Texte structuré

Utilisez NOT comme opérateur 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

Structure FBD_LOGICAL

Opérande Type Format Description

Source SINTINTDINT

immédiatpoint

valeur de négation

Un point SINT ou INT est converti en valeur DINT par remplissage par zéros.

Destination SINTINTDINT

point stocke le résultat

Opérande Type Format Description

point NOT FBD_LOGICAL structure structure NOT

dest := NOT source

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source DINT Valeur de négation.Valeurs correctes = tout nombre entier.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest DINT Résultat de l'instruction. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Publication 1756-RM003F-FR-P - Mai 2002

Page 240: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6-32 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Description : Lorsqu'elle est activée, l'instruction calcule l'opération COMPLEMENT :

Si vous mélangez des types d'entiers, l'instruction écrit des 0 pour les bits supérieurs dans des entiers de taille inférieure, pour qu'ils aient la même taille que les entiers de grande taille.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Exécution :

Logique à relais

Bloc fonctionnel

Exemple : Lorsqu'elle est activée, l'instruction NOT effectue une opération COMPLEMENT sur bits sur Source et place le résultat dans Dest.

Si le bit de la Source est Le bit de Destination est

0 1

1 0

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'instruction effectue une opération COMPLEMENT sur bits.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

value_1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1

value_result_not 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0

Publication 1756-RM003F-FR-P - Mai 2002

Page 241: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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

Publication 1756-RM003F-FR-P - Mai 2002

Page 242: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6-34 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

ET booléen (BAND) L'instruction BAND effectue une opération ET logique de 8 entrées booléennes maximum.

Pour effectuer un ET sur bits, voir page 6-22.

Opérandes :

Texte structuré

Utilisez AND ou le signe “&” comme opérateur dans une expression. Les opérandes doivent être des valeurs BOOL ou des expressions évaluées en valeurs BOOL. Cette expression calcule si operandA et operandB sont tous les deux activés (vrai).

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Structure FBD_BOOLEAN_AND

Opérande Type Format Description

point BAND FBD_BOOLEAN_AND structure structure BAND

IF operandA AND operandB THEN

<instruction>;

END_IF;

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

In1 BOOL Première entrée booléenne.Activé par défaut.

In2 BOOL Deuxième entrée booléenne.Activé par défaut.

In3 BOOL Troisième entrée booléenne.Activé par défaut.

In4 BOOL Quatrième entrée booléenne.Activé par défaut.

In5 BOOL Cinquième entrée booléenne.Activé par défaut.

In6 BOOL Sixième entrée booléenne.Activé par défaut.

In7 BOOL Septième entrée booléenne.Activé par défaut.

In8 BOOL Huitième entrée booléenne.Activé par défaut.

Paramètre de sortie Type de données

Description

EnableOut BOOL Sortie activée.

Out BOOL Sortie de l'instruction.

Publication 1756-RM003F-FR-P - Mai 2002

Page 243: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-35

Description : L'instruction BAND additionne (opération ET) jusqu'à huit entrées booléennes. Si une entrée n'est pas utilisée, elle est activée par défaut (1).

Sortie = In1 ET In2 ET In3 ET In4 ET In5 ET In6 ET In7 ET In8

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Exemple 1 : Additionner (opération ET) bool_in1 et bool_in2, et placer le résultat dans value_result_and.

Texte structuré :

value_result_and := bool_in1 AND bool_in2;

Bloc fonctionnel

Condition Action du bloc fonctionnel

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Si bool_in1 est Si bool_in2 est Alors value_result_and est

0 0 0

0 1 0

1 0 0

1 1 1

Publication 1756-RM003F-FR-P - Mai 2002

Page 244: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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 activés (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;

Publication 1756-RM003F-FR-P - Mai 2002

Page 245: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-37

OU booléen (BOR) L'instruction BOR effectue une opération OU logique sur huit entrées booléennes maximum.

Pour effectuer un OU sur bits, voir page 6-25.

Opérandes :

Texte structuré

Utilisez OR comme opérateur dans une expression. Les opérandes doivent être des valeurs BOOL ou des expressions évaluées en valeurs BOOL. Cette expression calcule si operandA ou operandB, ou les deux, sont activés (vrai).

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Structure FBD_BOOLEAN_OR

Opérande Type Format Description

point BOR FBD_BOOLEAN_OR structure structure BOR

IF operandA OR operandB THEN

<instruction>;

END_IF;

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

In1 BOOL Première entrée booléenne.Effacé par défaut.

In2 BOOL Deuxième entrée booléenne.Effacé par défaut.

In3 BOOL Troisième entrée booléenne.Effacé par défaut.

In4 BOOL Quatrième entrée booléenne.Effacé par défaut.

In5 BOOL Cinquième entrée booléenne.Effacé par défaut.

In6 BOOL Sixième entrée booléenne.Effacé par défaut.

In7 BOOL Septième entrée booléenne.Effacé par défaut.

In8 BOOL Huitième entrée booléenne.Effacé par défaut.

Paramètre de sortie Type de données

Description

EnableOut BOOL Sortie activée.

Out BOOL Sortie de l'instruction.

Publication 1756-RM003F-FR-P - Mai 2002

Page 246: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6-38 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Description : L'instruction BOR effectue une opération OU sur huit entrées booléennes maximum. Si une entrée n'est pas utilisée, elle est effacée par défaut (0).

Sortie = In1 OU In2 OU In3 OU In4 OU In5 OU In6 OU In7 OU In8

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Condition Action du bloc fonctionnel

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction

Aucune.

pendant la première exécution de l'instruction

Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 247: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-39

Exemple 1 : Effectuer une opération OU sur bool_in1 et bool_in2, et placer le résultat dans value_result_or.

Texte structuré :

value_result_or := bool_in1 OR bool_in2;

Bloc fonctionnel

Exemple 2 : Dans cet exemple, light1 est activé (allumé) si :

• seul bool_in1 est activé (vrai) ;

• seul bool_in2 est activé (vrai) ;

• bool_in1 et bool_in2 sont activés (vrai) ;

Sinon, light1 est effacé (éteint).

Texte structuré :

IF bool_in1 OR bool_in2 THEN

light1 := 1;

ELSE

light1 := 0;

END_IF;

Si bool_in1 est Si bool_in2 est Alors value_result_or est

0 0 0

0 1 1

1 0 1

1 1 1

Publication 1756-RM003F-FR-P - Mai 2002

Page 248: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6-40 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

OU exclusif booléen (BXOR)

L'instruction BXOR effectue une opération OU exclusif sur deux entrées booléennes.

Pour effectuer un OU exclusif sur bits, voir page 6-28.

Opérandes :

Texte structuré

Utilisez XOR comme opérateur dans une expression. Les opérandes doivent être des valeurs BOOL ou des expressions qui sont évaluées 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

Structure FBD_BOOLEAN_XOR

Description : L'instruction BXOR effectue une opération OU exclusif sur deux entrées booléennes.

Out = In1 XOR In2

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Opérande Type Format Description

point BXOR FBD_BOOLEAN_XOR structure structure BXOR

IF operandA XOR operandB THEN

<instruction>;

END_IF;

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

In1 BOOL Première entrée booléenne.Effacé par défaut.

In2 BOOL Deuxième entrée booléenne.Effacé par défaut.

Paramètre de sortie Type de données

Description

EnableOut BOOL Sortie activée.

Out BOOL Sortie de l'instruction.

Publication 1756-RM003F-FR-P - Mai 2002

Page 249: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-41

Exécution :

Exemple 1 : Effectuer une opération OU exclusif sur bool_in1 et bool_in2, et placer le résultat dans value_result_xor.

Texte structuré :

value_result_xor := bool_in1 XOR bool_in2;

Bloc fonctionnel

Exemple 2 : Dans cet exemple, light1 est activé (allumé) si :

• seul bool_in1 est activé (vrai) ;

• seul bool_in2 est activé (vrai).

Sinon, light1 est désactivé (éteint).

Texte structuré :

IF bool_in1 XOR bool_in2 THEN

light1 := 1;

ELSE

light1 := 0;

END_IF;

Condition Action du bloc fonctionnel

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Si bool_in1 est Si bool_in2 est Alors value_result_xor est

0 0 0

0 1 1

1 0 1

1 1 0

Publication 1756-RM003F-FR-P - Mai 2002

Page 250: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6-42 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

COMPLEMENT booléen (BNOT)

L'instruction BNOT complète une entrée booléenne.

Pour effectuer un COMPLEMENT sur bits, voir page 6-31.

Opérandes :

Texte structuré

Utilisez NOT comme opérateur dans une expression. Les opérandes doivent être des valeurs BOOL ou des expressions évaluées 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

Structure FBD_BOOLEAN_NOT

Description : L'instruction BNOT complète une entrée booléenne.

Out = NOT In

Indicateurs d'état arithmétique : non affectés

WD1 Writer Designed tag 1Conditions d'erreur :

aucune

Opérande Type Format Description

point BNOT FBD_BOOLEAN_NOT structure structure BNOT

IF NOT operand THEN

<instruction>;

END_IF;

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

In BOOL Entrée dans l'instruction.Activé par défaut.

Paramètre de sortie Type de données

Description

EnableOut BOOL Sortie activée.

Out BOOL Sortie de l'instruction.

Publication 1756-RM003F-FR-P - Mai 2002

Page 251: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-43

Exécution :

Exemple 1 : Compléter bool_in1 et placer le résultat dans value_result_not.

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;

Condition Action du bloc fonctionnel

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Si bool_in1 est Alors value_result_not est

0 1

1 0

Publication 1756-RM003F-FR-P - Mai 2002

Page 252: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6-44 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Notes :

Publication 1756-RM003F-FR-P - Mai 2002

Page 253: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Chapitre 7

Instructions sur tableau (fichier)/Instructions diverses(FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Introduction Les instructions de fichier/instructions diverses fonctionnent sur des tableaux de données.

Vous pouvez combiner différents types de données, mais des erreurs de précision et un arrondissement des valeurs peuvent se produire et l'instruction est plus longue à exécuter. Vérifiez le bit S:V pour voir si le résultat a été tronqué.

Pour les instructions de logique à relais, les types de données en gras indiquent les types de données optimaux. Une instruction est exécutée plus rapidement et demande moins de mémoire si tous les opérandes de l'instruction utilisent le même type de données optimal, généralement DINT ou REAL.

Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page

effectuer des opérations arithmétiques, logiques, de décalage et de fonction sur des valeurs de tableaux

FAL logique à relaistexte structuré(1)

7-7

chercher et comparer des valeurs de tableaux FSC logique à relais 7-18

copier le contenu d'un tableau dans un autre COP logique à relaistexte structuré

7-26

copier le contenu d'un tableau dans un autre sans interruption

CPS logique à relaistexte structuré

7-26

remplir un tableau avec des données particulières

FLL logique à relaistexte structuré(1)

7-32

calculer la moyenne d'un tableau de valeurs AVE logique à relaistexte structuré(1)

7-36

classer une dimension de données de tableau en ordre croissant

SRT logique à relaistexte structuré

7-41

calculer l'écart type d'un tableau de valeurs STD logique à relaistexte structuré(1)

7-46

trouver la taille d'une dimension de tableau SIZE logique à relaistexte structuré

7-52

(1) Il n'existe pas d'instruction équivalente en texte structuré. Utilisez une autre programmation en texte structuré pour obtenir le même résultat. Voir la description de l'instruction.

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 254: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-2 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Sélection du mode de fonctionnement

Pour les instructions FAL et FSC, le mode indique à l'automate comment répartir l'opération sur tableau.

Mode Tout

En mode Tout, tous les éléments indiqués dans le tableau subissent l'opération avant de continuer avec l'instruction suivante. L'opération commence lorsque l'état d'entrée de la ligne de l'instruction passe de faux à vrai. La valeur de position (.POS) de la structure de contrôle indique l'élément du tableau actuellement utilisé par l'instruction. L'opération s'arrête lorsque la valeur .POS est égale à la valeur .LEN.

Le diagramme de temporisation cidessous indique la relation entre les bits d'état et le fonctionnement de l'instruction. Lorsque l'exécution de l'instruction est terminée, le bit .DN est activé. Les bits .DN et .EN, ainsi que la valeur .POS, sont effacés lorsque l'état d'entrée de la ligne est faux. A ce moment seulement, une autre exécution de l'instruction

Si vous voulez Sélectionnez ce mode

agir sur tous les éléments indiqués dans un tableau avant de continuer avec l'instruction suivante

Tout

répartir l'opération sur tableau sur plusieurs scrutationsentrez le nombre d'éléments sur lesquels effectuer l'opération à chaque scrutation (1 à 2147483647)

Numérique

traiter un élément du tableau chaque fois que l'état d'entrée de la ligne passe de faux à vrai

Incrémental

Tableau de données une scrutation

16639

Publication 1756-RM003F-FR-P - Mai 2002

Page 255: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-3

peut être déclenchée par une transition fauxvrai de l'état d'entrée de la ligne.

Mode Numérique

Le mode Numérique répartit l'opération sur tableau entre un certain nombre de scrutations. Ce mode est utile pour travailler avec des données sans temps critique ou avec de grandes quantités de données. Vous entrez le nombre d'éléments sur lesquels agir pour chaque scrutation, ce qui réduit la durée de scrutation.

L'exécution est déclenchée lorsque l'état d'entrée de la ligne passe de faux à vrai. Une fois déclenchée, l'instruction est exécutée continuellement chaque fois qu'elle est scrutée, pendant le nombre de scrutations nécessaires pour terminer l'opération sur le tableau entier. Une fois déclenchée, l'état d'entrée de la ligne peut changer plusieurs fois sans interrompre l'exécution de l'instruction.

unescrutation

opération terminée

efface les bits d'état et la valeur .POS

état d'entrée de la ligne

bit .EN

bit .DN

scrutation de l'instruction

40010aucune exécution

une scrutation

16641

deuxième scrutation

scrutation suivante

Publication 1756-RM003F-FR-P - Mai 2002

Page 256: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-4 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Le diagramme de temporisation cidessous indique la relation entre les bits d'état et le fonctionnement de l'instruction. Lorsque l'exécution de l'instruction est terminée, le bit .DN est activé.

Si l'état d'entrée de la ligne est vrai à la fin de l'opération, les bits .EN et .DN sont activés jusqu'à ce que l'état d'entrée de la ligne passe à faux. Lorsque l'état d'entrée de la ligne passe à faux, ces bits et la valeur .POS sont effacés.

Si l'état d'entrée de la ligne est faux à la fin de l'opération, le bit .EN est immédiatement effacé. Une scrutation après l'effacement du bit .EN, le bit .DN et la valeur .POS sont effacés.

IMPORTANT Evitez d'utiliser les résultats d'une instruction de fichier fonctionnant en mode Numérique tant que le bit .DN n'est pas activé.

scrutations multiples scrutations multiples

état d'entrée de la ligne

bit .EN

bit .DN

scrutation de l'instruction

efface les bits d'état et la valeur .POS

efface les bits d'état et la valeur .POS

La ligne est « vrai » à la fin de l'opération La ligne est « faux » à la fin de l'opération

40013opération terminée opération terminée

Publication 1756-RM003F-FR-P - Mai 2002

Page 257: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-5

Mode Incrémental

Le mode incrémental traite un élément du tableau chaque fois que l'état d'entrée de la ligne de l'instruction passe de faux à vrai.

Le diagramme de temporisation cidessous indique la relation entre les bits d'état et le fonctionnement de l'instruction. L'exécution a lieu uniquement pendant une scrutation au cours de laquelle l'état d'entrée de la ligne passe de faux à vrai. Chaque fois que ceci se produit, un seul élément du tableau est traité. Si l'état d'entrée de la ligne reste vrai pendant plus d'une scrutation, l'instruction n'est exécutée que pendant la première scrutation.

Le bit .EN est activé lorsque l'état d'entrée de la ligne est vrai. Le bit .DN est activé lorsque le dernier élément du tableau a été traité. Lorsque le dernier élément a été traité et que l'état d'entrée de la ligne passe à faux, les bits .EN et .DN, ainsi que la valeur .POS, sont effacés.

16643

1re instruction d'activation2e instruction d'activation3e instruction d'activation

dernière instruction d'activation

unescrutation

état d'entrée de la ligne

bit .EN

bit .DN

scrutation de l'instruction

opération terminée

efface les bits d'état et la valeur .POS

40014

Publication 1756-RM003F-FR-P - Mai 2002

Page 258: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-6 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Différence entre le mode Incrémental et Numérique au rythme d'un élément par scrutation :

• le mode Numérique, quel que soit le nombre d'éléments par scrutation, ne requiert qu'une transition de faux à vrai de l'état d'entrée de la ligne pour commencer l'exécution. L'instruction continue d'exécuter le nombre d'éléments indiqué à chaque scrutation jusqu'à la fin, quel que soit l'état d'entrée de la ligne ;

• en mode Incrémental, l'état d'entrée de la ligne doit passer de faux à vrai pour qu'un élément du tableau soit traité.

Publication 1756-RM003F-FR-P - Mai 2002

Page 259: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-7

Fichier arithmétique et logique (FAL)

L'instruction FAL effectue des opérations de copie, arithmétiques, logiques et de fonction sur des données stockées dans un tableau.

Opérandes :

Logique à relais

Texte structuré

Il n'y a pas d'instruction FAL en texte structuré, mais vous pouvez obtenir le même résultat 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.

Opérande Type Format Description

Commande CONTROL point structure de contrôle pour l'opération

Longueur DINT immédiat nombre d'éléments du tableau à traiter

Position DINT immédiat élément en cours du tableaula valeur initiale est généralement 0

Mode DINT immédiat mode de répartition de l'opérationsélectionner INC, ALL ou entrer un nombre

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Expression SINTINTDINTREAL

immédiatpoint

expression constituée de points et/ou de valeurs immédiates séparées par des opérateurs

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Publication 1756-RM003F-FR-P - Mai 2002

Page 260: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-8 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Structure CONTROL

Description : L'instruction FAL effectue les mêmes opérations sur les tableaux que l'instruction CPT sur les éléments.

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 génère un défaut majeur (type 4, code 20).

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur :

Mnémonique Type de données Description

.EN BOOL Le bit d'activation indique que l'instruction FAL est activée.

.DN BOOL Le bit de fin est activé lorsque l'instruction a été exécutée sur le dernier élément (.POS = .LEN).

.ER BOOL Le bit d'erreur est activé si l'expression génère un dépassement supérieur (S:V est activé). L'instruction s'arrête tant que le programme n'a pas remis le bit .ER à 0. La valeur .POS contient la position de l'élément qui produit le dépassement.

.LEN DINT La longueur indique le nombre d'éléments du tableau sur lesquels l'instruction FAL est exécutée.

.POS DINT La position contient la position de l'élément auquel l'instruction est en train d'accéder.

Un défaut majeur se produit si Type du défaut Code du défaut

l'indice est en dehors des limites 4 20

.POS < 0 ou .LEN < 0 4 21

Publication 1756-RM003F-FR-P - Mai 2002

Page 261: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-9

Exécution :

Condition Action de la logique à relais

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

examine le bit .DNbit .DN = 0

bit .DN = 1

si l'état d'entrée de la ligne est faux

l'état de sortie de la ligne est réglé sur faux

fin

le bit .EN est effacéle bit .ER est effacéle bit .DN est effacé

la valeur .POS est effacée

mode INCnon

oui

mode TOUTnon

oui

le bit .EN est effacé

.POS = .POS + 1

mode Numérique

le bit interne est effacé

.LEN < 0 ou .POS < 0

oui

non

défaut majeur

.POS = .POS - 1

.POS = 0oui

non

le bit .DN est activé le bit .EN est activé

.POS < .LENnon

oui

.LEN > mode

oui

non

mode = .LEN

.LEN = 0oui

non

le bit .DN est activé le bit .EN est effacé

page 7-13

Publication 1756-RM003F-FR-P - Mai 2002

Page 262: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-10 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Condition Action de la logique à relais

si l'état d'entrée de la ligne est vrai

l'état de sortie de la ligne est réglé sur vrai

fin

examine le bit .DN

bit .DN = 0

bit .DN = 1

.LEN = 0non

oui

mode INCnon

oui

mode TOUT

non

oui

loop_count = loop_count - 1

loop_count < 0non

oui

.POS = .POS + 1

évalue l'expression

.POS = .POS + 1

examine S:Vnon

oui

le bit .ER est activé

.POS = .LENnon

oui

le bit .DN est activéle bit .EN est activé .POS = .POS + 1

examine le bit .ERbit .ER = 0

bit .ER = 1

le bit .DN est activéle bit .EN est activé mode

INCmode TOUT

mode Numérique

commun

page 7-13

page 7-11 page 7-12

.LEN < 0 ou .POS < 0

oui

non

défaut majeur

Publication 1756-RM003F-FR-P - Mai 2002

Page 263: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-11

Condition Action de la logique à relais

examine le bit .ENbit .EN = 1

bit .EN = 0

.POS = .POS + 1

.POS ≥ .LENoui

non

le bit .EN est activéloop_count = 1.POS = .POS - 1

examine le bit interne

bit = 1

bit = 0

le bit interne est activé

mode INC

commun

.POS = .POS - 1

.POS = 0oui

non

le bit .DN est activé le bit .EN est activé

l'état de sortie de la ligne est réglé sur vrai

fin

page 7-10

Publication 1756-RM003F-FR-P - Mai 2002

Page 264: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-12 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Condition Action de la logique à relais

examine le bit .ENbit .EN = 0

bit .EN = 1

.POS = .POS + 1

.POS ≥ .LENoui

non

loop_count = .LEN - .POS.POS = .POS - 1

examine le bit interne

bit = 1

bit = 0

le bit .EN est activé

mode TOUT

commun

.POS = .POS - 1

.POS = 0oui

non

le bit .DN est activé le bit .EN est activé

l'état de sortie de la ligne est réglé sur vrai

fin

page 7-10

Publication 1756-RM003F-FR-P - Mai 2002

Page 265: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-13

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action de la logique à relais

examine le bit .ENbit .EN = 1

bit .EN = 0

.POS = .POS + 1

.POS ≥ .LENoui

non

examine le bit interne

bit = 1

bit = 0

le bit interne est activé

mode Numérique

commun

.POS = .POS - 1

.POS = 0oui

non

le bit .DN est activé le bit .EN est activé

l'état de sortie de la ligne est réglé sur vrai

fin

.LEN ≥ mode

oui

nonmode = .LEN

le bit .EN est activéloop_count = .LEN - .POS

.POS = .POS - 1

mode ≥loop_count

non

le bit .EN est activéloop_count = mode

oui

page 7-10

Publication 1756-RM003F-FR-P - Mai 2002

Page 266: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-14 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Exemple 1 : Lorsqu'elle est activée, l'instruction FAL copie chaque élément de array_2 dans array_1, dans la même position.

Exemple 2 : Lorsqu'elle est activée, l'instruction FAL copie value_1 dans les 10 premières positions de la deuxième dimension de array_2.

Exemple 3 : Chaque fois qu'elle est activée, l'instruction FAL copie la valeur en cours de array_1 dans value_1. L'instruction FAL utilise le mode incrémental, ainsi une seule valeur de tableau est copiée chaque fois que l'instruction est activée. Lorsqu'elle est activée la fois suivante, l'instruction écrase value_1 avec la valeur suivante dans array_1.

Exemple 4 : Lorsqu'elle est activée, l'instruction FAL additionne value_1 et value_2 et stocke le résultat dans la position en cours de array_1.

copie de tableau à tableau

Expression :array_2[control_2.pos]

Destination :array_1[control_2.pos]

copie d'élément dans un tableau

Expression :value_1

Destination :array_2[0,control_2.pos]

copie de tableau dans un élément

Expression :array_1[control_1.pos]

Destination :value_1

opération arithmétique : (élément + élément) vers tableau

Expression :value_1 + value_2

Destination :array_1[control_1.pos]

Publication 1756-RM003F-FR-P - Mai 2002

Page 267: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-15

Exemple 5 : Lorsqu'elle est activée, l'instruction FAL divise la valeur de la position en cours de array_2 par la valeur de la position en cours de array_3 et stocke le résultat dans la position en cours de array_1.

Exemple 6 : Lorsqu'elle est activée, l'instruction FAL ajoute la valeur de la position en cours de array_1 à value_1 et stocke le résultat dans la position en cours de array_3. L'instruction doit être exécutée 10 fois pour que array_1 et array_3 soient entièrement traités.

Exemple 7 : Chaque fois qu'elle est activée, l'instruction FAL ajoute value_1 à la valeur en cours de array_1 et stocke le résultat dans value_2. L'instruction FAL utilise le mode incrémental, une seule valeur de tableau est ainsi ajoutée à value_1 chaque fois que l'instruction est activée. Lorsqu'elle est activée la fois suivante, l'instruction écrase value_2.

opération arithmétique : (tableau / tableau) vers tableau

Expression :array_2[control_2.pos] / array_3[control_2.pos]

Destination :array_1[control_2.pos]

opération arithmétique : (tableau + élément) vers tableau

Expression :array_1[control_1.pos] + value_1

Destination :array_3[control_1.pos]

opération arithmétique : (élément + tableau) vers élément

Expression :value_1 + array_1[control_1.pos]

Destination :value_2

Publication 1756-RM003F-FR-P - Mai 2002

Page 268: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-16 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Exemple 8 : Lorsqu'elle est activée, l'instruction FAL multiplie la valeur en cours de array_1 par la valeur en cours de array_3 et stocke le résultat dans value_1. L'instruction FAL utilise le mode incrémental, une seule paire de valeurs de tableau est ainsi multipliée chaque fois que l'instruction est activée. Lorsqu'elle est activée la fois suivante, l'instruction écrase value_1.

Expressions FAL

Les expressions en instructions FAL se programment de la même façon que les expressions en instructions CPT. Utilisez les sections suivantes pour trouver les informations sur les opérateurs, le format et l'ordre d'opération valables, communs aux deux instructions.

Opérateurs valables

opération arithmétique : (tableau ∗ tableau) vers élément

Expression :array_1[control_1.pos] * array_3[control_1.pos]

Destination :value_1

Opérateur Description Optimal

+ addition DINT, REAL

- soustraction/négation DINT, REAL

* multiplication DINT, REAL

/ division DINT, REAL

** exposant (x à y) DINT, REAL

ABS valeur absolue DINT, REAL

ACS cosinus d'arc REAL

AND ET sur bits DINT

ASN sinus d'arc REAL

ATN tangente d'arc REAL

COS cosinus REAL

DEG radians en degrés DINT, REAL

FRD DCB en nombre entier DINT

LN logarithme naturel REAL

LOG logarithme décimal REAL

MOD modulo DINT, REAL

NOT complément sur bits DINT

OR OU sur bits DINT

RAD degrés en radians DINT, REAL

SIN sinus REAL

SQR racine carrée DINT, REAL

TAN tangente REAL

TOD nombre entier en DCB DINT

TRN troncation DINT, REAL

XOR OU exclusif sur bits DINT

Opérateur Description Optimal

Publication 1756-RM003F-FR-P - Mai 2002

Page 269: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-17

Formatage des expressions

Pour chaque opérateur utilisé dans une expression, vous devez fournir un ou deux opérandes (points ou valeurs immédiates). Utilisez le tableau suivant pour formater les opérateurs et les opérandes dans une expression.

Définition de l'ordre d'exécution des opérations

Les opérations que vous écrivez dans l'expression sont exécutées par l'instruction dans un ordre précis, qui n'est pas nécessairement l'ordre dans lequel vous les écrivez. Vous pouvez modifier l'ordre des opérations en groupant des termes entre parenthèses, ce qui force l'instruction à exécuter une opération entre parenthèses avant les autres opérations.

Les opérations d'ordre identique sont exécutées de gauche à droite.

Pour les opérateurs opérant sur

Utilisez ce format Exemples

un opérande opérateur(opérande) ABS(point_a)

deux opérandes opérande_a opérateur opérande_b

• point_b + 5• point_c AND point_d• (point_e ** 2) MOD

(point_f / point_g)

Ordre Opération

1. ( )

2. ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG, RAD, SIN, SQR, TAN, TOD, TRN

3. **

4. − (négation), NOT

5. *, /, MOD

6. − (soustraction), +

7. AND

8. XOR

9. OR

Publication 1756-RM003F-FR-P - Mai 2002

Page 270: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-18 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Recherche et comparaison de fichiers (FSC)

L'instruction FSC compare des valeurs dans un tableau, élément par élément.

Opérandes :

Logique à relais

Structure CONTROL

Description : Lorsque l'instruction FSC est activée et que la comparaison est vraie, l'instruction active le bit .FD et le bit .POS reflète la position du tableau à laquelle l'instruction a trouvé la comparaison vraie. L'instruction active le bit .IN pour empêcher la recherche de continuer.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur :

Opérande Type Format Description

Commande CONTROL point structure de contrôle pour l'opération

Longueur DINT immédiat nombre d'éléments du tableau à traiter

Position DINT immédiat offset dans le tableaula valeur initiale est généralement 0

Mnémonique Type de données Description

.EN BOOL Le bit d'activation indique que l'instruction FSC est activée.

.DN BOOL Le bit de fin est activé lorsque l'instruction a été exécutée sur le dernier élément (.POS = .LEN).

.ER BOOL Le bit d'erreur n'est pas modifié.

.IN BOOL Le bit d'inhibition indique que l'instruction FSC a détecté une vraie comparaison. Vous devez effacer ce bit pour continuer l'opération de recherche.

.FD BOOL Le bit trouvé indique que l'instruction FSC a détecté une vraie comparaison.

.LEN DINT La longueur indique le nombre d'éléments du tableau sur lesquels l'instruction est exécutée.

.POS DINT La position contient la position de l'élément auquel l'instruction est en train d'accéder.

Un défaut majeur se produit si Type du défaut Code du défaut

.POS < 0 ou .LEN < 0 4 21

Publication 1756-RM003F-FR-P - Mai 2002

Page 271: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-19

Exécution :

Condition Action de la logique à relais

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

examine le bit .DNbit .DN = 0

bit .DN = 1

si l'état d'entrée de la ligne est faux

l'état de sortie de la ligne est réglé sur faux

fin

le bit .EN est effacéle bit .ER est effacéle bit .DN est effacé

la valeur .POS est effacée

mode INCnon

oui

mode TOUTnon

oui

le bit .EN est effacé

.POS = .POS + 1

mode Numérique

le bit interne est effacé

.LEN < 0 ou .POS < 0

oui

non

défaut majeur

.POS = .POS - 1

.POS = 0oui

non

le bit .DN est activé le bit .EN est activé

.POS < .LENnon

oui

.LEN > mode

oui

non

mode = .LEN

.LEN = 0oui

non

le bit .DN est activé le bit .EN est effacé

page 7-13

Publication 1756-RM003F-FR-P - Mai 2002

Page 272: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-20 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action de la logique à relais

si l'état d'entrée de la ligne est vrai

l'état de sortie de la ligne est réglé sur vrai

fin

examine le bit .IN

bit .DN = 0

bit .DN = 1

.LEN = 0non

oui

mode INCnon

oui

mode TOUT

non

oui

loop_count = loop_count - 1

loop_count < 0non

oui

.POS = .POS + 1

évalue la comparaison

.POS = .POS + 1

correspondancenon

oui

le bit .EN est activéle bit .FD est activéle bit .IN est activé

.POS = .LENnon

oui

le bit .DN est activéle bit .EN est activé .POS = .POS + 1

examine le bit .ERbit .ER = 0

bit .ER = 1

le bit .DN est activéle bit .EN est activé mode

INCmode TOUT

mode Numérique

commun

page 7-13

page 7-11 page 7-12

.LEN < 0 ou .POS < 0

oui

non

défaut majeur

examine le bit .DN

bit .DN = 1

bit .IN = 0

bit .DN = 0

Publication 1756-RM003F-FR-P - Mai 2002

Page 273: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-21

Exemple 1 : Rechercher une correspondance entre deux tableaux. Lorsqu'elle est activée, l'instruction FSC compare chacun des 10 premiers éléments de array_1 avec les éléments correspondants dans array_2.

Exemple 2 : Rechercher une correspondance dans un tableau. Lorsqu'elle est activée, l'instruction FSC compare MySearchKey avec 10 éléments dans array_1.

00000000000000000000000000000000 0

00000000000000000000000000000000 1

00000000000000000000000000000000 2

00000000000000000000000000000000 3

11111111111111110000000000000000 4

11111111111111111111111111111111 5

11111111111111111111111111111111 6

11111111111111111111111111111111 7

11111111111111111111111111111111 8

11111111111111111111111111111111 9

array_1 array_2

L'instruction FSC trouve que ces éléments ne sont pas égaux. Elle active les bits .FD et .IN. La valeur .POS (4) indique la position des éléments qui ne

sont pas égaux. Pour continuer à comparer le reste du tableau, effacez le bit .IN.

control_3.pos

00000000000000000000000000000000

00000000000000000000000000000000

00000000000000000000000000000000

00000000000000000000000000000000

00000000000000001111111111111111

11111111111111111111111111111111

11111111111111111111111111111111

11111111111111111111111111111111

11111111111111111111111111111111

11111111111111111111111111111111

MySearchKey référence

L'instruction FSC trouve que cet élément de tableau correspond à MySearchKey. Elle active les bits .FD

et .IN. La valeur .POS (4) indique la position de l'élément correspondant. Pour continuer à comparer

le reste du tableau, effacez le bit .IN.

control_3.pos

00000000000000000000000000000000 0

00000000000000000000000000000000 1

00000000000000000000000000000000 2

00000000000000000000000000000000 3

11111111111111110000000000000000 4

11111111111111111111111111111111 5

11111111111111111111111111111111 6

11111111111111111111111111111111 7

11111111111111111111111111111111 8

11111111111111111111111111111111 9

11111111111111110000000000000000

Publication 1756-RM003F-FR-P - Mai 2002

Page 274: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-22 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Exemple 3 : Rechercher une chaîne dans un tableau de chaînes. Lorsqu'elle est activée, l'instruction FSC compare les caractères dans code avec 10 éléments dans code_table.

Expressions FSC

Les expressions en instructions FSC se programment de la même façon que les expressions en instructions CMP. Utilisez les sections suivantes pour trouver les informations sur les opérateurs, le format et l'ordre d'opération valables, communs aux deux instructions.

SAM

AFG 0

BEH 1

HUO 2

SAK 3

SAM 4

FQG 5

CLE 6

CAK 7

DET 8

BWG 9

code code_table

L'instruction FSC trouve que cet élément de tableau correspond à code. Elle active les bits .FD et .IN. La

valeur .POS (4) indique la position de l'élément correspondant. Pour continuer à comparer le reste

du tableau, effacez le bit .IN.

code_table_search.POS

Publication 1756-RM003F-FR-P - Mai 2002

Page 275: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-23

Opérateurs valables

Formatage des expressions

Pour chaque opérateur utilisé dans une expression, vous devez fournir un ou deux opérandes (points ou valeurs immédiates). Utilisez le tableau suivant pour formater les opérateurs et les opérandes dans une expression.

Opérateur Description Optimal

+ addition DINT, REAL

- soustraction/négation DINT, REAL

* multiplication DINT, REAL

/ division DINT, REAL

= égalité DINT, REAL

< inférieur DINT, REAL

<= inférieur ou égal DINT, REAL

> supérieur DINT, REAL

>= supérieur ou égal DINT, REAL

<> différent DINT, REAL

** exposant (x à y) DINT, REAL

ABS valeur absolue DINT, REAL

ACS cosinus d'arc REAL

AND ET sur bits DINT

ASN sinus d'arc REAL

ATN tangente d'arc REAL

COS cosinus REAL

DEG radians en degrés DINT, REAL

FRD DCB en nombre entier DINT

LN logarithme naturel REAL

LOG logarithme décimal REAL

MOD modulo DINT, REAL

NOT complément sur bits DINT

OR OU sur bits DINT

RAD degrés en radians DINT, REAL

SIN sinus REAL

SQR racine carrée DINT, REAL

TAN tangente REAL

TOD nombre entier en DCB DINT

TRN troncation DINT, REAL

XOR OU exclusif sur bits DINT

Opérateur Description Optimal

Pour les opérateurs opérant sur

Utilisez ce format Exemples

un opérande opérateur(opérande) ABS(point_a)

deux opérandes opérande_a opérateur opérande_b

• point_b + 5• point_c AND point_d• (point_e ** 2) MOD

(point_f / point_g)

Publication 1756-RM003F-FR-P - Mai 2002

Page 276: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-24 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Définition de l'ordre d'exécution des opérations

Les opérations que vous écrivez dans l'expression sont exécutées par l'instruction dans un ordre précis, qui n'est pas nécessairement l'ordre dans lequel vous les écrivez. Vous pouvez modifier l'ordre des opérations en groupant des termes entre parenthèses, ce qui force l'instruction à exécuter une opération entre parenthèses avant les autres opérations.

Les opérations d'ordre identique sont exécutées de gauche à droite.

Ordre Opération

1. ( )

2. ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG, RAD, SIN, SQR, TAN, TOD, TRN

3. **

4. − (négation), NOT

5. *, /, MOD

6. <, <=, >, >=, =

7. − (soustraction), +

8. AND

9. XOR

10. OR

Publication 1756-RM003F-FR-P - Mai 2002

Page 277: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-25

Utilisation de chaînes dans une expression

Utilisez une expression de logique à relais ou de texte structuré pour comparer des données de type chaîne. Pour utiliser des chaînes dans une expression, suivez ces directives :

• une expression vous permet de comparer deux chaînes de caractères ;

• vous ne pouvez pas entrer des caractères ASCII directement dans l'expression ;

• seuls les opérateurs suivants sont autorisés :

• Les chaînes sont égales si leurs caractères concordent.

• Les caractères ASCII sont différents s'ils sont en majuscules ou en minuscules. Un « A » majuscule ($41) n'est pas égal à un « a » minuscule ($61).

• Les valeurs hexadécimales des caractères déterminent si une chaîne est inférieure ou supérieure à une autre chaîne. Pour trouver le code hexadécimal d'un caractère, reportez-vous à la dernière page de ce manuel.

• Lorsque les deux chaînes sont triées comme dans un répertoire téléphonique, l'ordre des chaînes détermine laquelle est supérieure.

Opérateur Description

= égal

< inférieur

<= inférieur ou égal

> supérieur

>= supérieur ou égal

<> différent

Caractères ASCII Codes Hex

1ab $31$61$62

1b $31$62

A $41

AB $41$42

B $42

a $61

ab $61$62

supérieure

inférieure AB < B

a > B

Publication 1756-RM003F-FR-P - Mai 2002

Page 278: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-26 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Copie de fichier (COP) Copie de fichier synchrone (CPS)

Les instructions COP et CPS copient les valeurs de la Source dans la Destination. La Source reste inchangée.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que pour les instructions COP et CPS en logique à relais.

Description : Pendant l'exécution des instructions COP et CPS, d'autres actions de l'automate peuvent tenter d'interrompre l'opération de copie et de modifier les données de la source ou de la destination :

Le nombre d'octets copiés est :

Opérande Type Format Description

Source SINTINTDINTREALchaînestructure

point élément initial à copierImportant : les opérandes Source et Destination doivent avoir les mêmes types de données, au risque de produire des résultats inattendus.

Destination SINTINTDINTREALchaînestructure

point élément initial à écraser par la SourceImportant : les opérandes Source et Destination doivent avoir les mêmes types de données, au risque de produire des résultats inattendus.

Longueur DINT immédiatpoint

nombre d'éléments de Destination à copier

COP(Source,Dest,Length);

CPS(Source,Dest,Length);

Si la source ou la destination est

Et si vous voulez Sélectionnez Remarques

• un point produit• un point consommé• des données d'E/S• des données qu'une autre

tâche peut écraser

empêcher les données d'être modifiées pendant l'opération de copie

CPS • Les tâches qui tentent d'interrompre une instruction CPS sont interrompues tant que l'instruction n'est pas terminée.

• Pour estimer la durée d'exécution de l'instruction CPS, voir Système ControlLogix - Manuel utilisateur (publication 1756-UM001).

permettre aux données d'être modifiées pendant l'opération de copie

COP

aucune des solutions ci-dessus COP

Publication 1756-RM003F-FR-P - Mai 2002

Page 279: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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 données de la Destination)

Les instructions COP et CPS fonctionnent sur des données de mémoire contiguës et effectuent une simple copie de mémoire d'octet à octet, ce qui demande une compréhension de la structure de la mémoire de l'automate.

Les instructions COP et CPS n'écrivent pas au-delà de la fin du tableau. Si la longueur est supérieure au nombre total d'éléments dans le tableau de Destination, les instructions COP et CPS s'arrêtent à la fin du tableau. Aucun défaut majeur n'est généré.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

ATTENTION

!Si le nombre d'octets est supérieur à la longueur de la Source, des données imprévisibles sont copiées pour les éléments restants.

Publication 1756-RM003F-FR-P - Mai 2002

Page 280: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-28 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Exécution :

Exemple 1 : array_4 et array_5 ont le même type de données. Lorsqu'elle est activée, l'instruction COP copie les 10 premiers éléments de array_4 dans les 10 premiers éléments de array_5.

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux

L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai

L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

exécution de l'instruction

l'état de sortie de la ligne est réglé sur vrai

fin

end_address = start_address + (Longueur ∗ nombre d'octets dans un élément de

destination)

oui

non

end_address > fin du tableau de destination

end_address = fin du tableau de destination

source_address = Source

oui

non

destination_address = end_address

copie les données de source_address dans destination _address

source_address = source _address + 1

destination_address = destination_address + 1

Publication 1756-RM003F-FR-P - Mai 2002

Page 281: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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);

Exemple 2 : Lorsqu'elle est activée, l'instruction COP copie la structure timer_1 dans l'élément 5 de array_timer. L'instruction ne copie qu'une seule structure dans un élément de tableau.

Logique à relais

Texte structuré :

COP(timer_1,array_timer[5],1);

Exemple 3 : Le tableau project_data (100 éléments) stocke des valeurs qui changent à différents moments de l'application. Pour envoyer une image complète de project_data à un moment donné vers un autre automate, l'instruction CPS copie project_data dans produced_array.

• Pendant que l'instruction CPS copie les données, aucune mise à jour des E/S ni aucune tâche ne peut modifier les données.

• Le point produced_array produit les données sur un réseau ControlNet pour qu'elles soient consommées par d'autres automates.

• Pour utiliser la même image de données (copie synchronisée des données), les automates consommateurs utilisent une instruction CPS pour copier les données du point consommé dans un autre pour leur utilisation dans l'application.

Logique à relais

Texte structuré :

CPS(project_data[0],produced_array[0],100);

Publication 1756-RM003F-FR-P - Mai 2002

Page 282: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-30 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Exemple 4 : Local:0:I.Data stocke les données d'entrées pour le réseau DeviceNet qui est connecté au module 1756-DNB dans l'emplacement 0. Pour synchroniser les entrées avec l'application, l'instruction CPS copie les données d'entrées dans input_buffer.

• Pendant que l'instruction CPS copie les données, aucune mise à jour des E/S ne peut modifier les données.

• Lors de l'exécution de l'application, elle utilise comme entrées les données d'entrées dans input_buffer.

Logique à relais

Texte structuré :

CPS(Local:0:I.Data[0],input_buffer[0],20);

Exemple 5 : Initialiser un tableau de structures temporisateur. Lorsqu'elle est activée, l'instruction MOV initialise les valeurs .PRE et .ACC du premier élément array_timer. Lorsqu'elle est activée, l'instruction COP copie un bloc d'octets contigus, commençant à array_timer[0]. La longueur est de neuf structures temporisateur.

array_timer[0] L'instruction copie d'abord les valeurs timer[0] dans timer[1]

array_timer[1] Puis l'instruction copie les valeurs timer[1] dans timer[2]

array_timer[2] Puis l'instruction copie les valeurs timer[2] dans timer[3]

array_timer[3] Puis l'instruction copie les valeurs timer[3] dans timer[4]

array_timer[4]

array_timer[9] Enfin, l'instruction copie les valeurs timer[9] dans timer[10]

array_timer[10]

Publication 1756-RM003F-FR-P - Mai 2002

Page 283: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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;

Publication 1756-RM003F-FR-P - Mai 2002

Page 284: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-32 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Remplissage de fichier (FLL)

L'instruction FLL remplit les éléments d'un tableau avec la valeur Source. La Source reste inchangée.

Opérandes :

Logique à relais

Texte structuré

Il n'y a pas d'instruction FLL en texte structuré, mais vous pouvez obtenir le même résultat 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.

Description : Le nombre d'octets remplis est :

Nombre d'octets = Longueur ∗ (nombre d'octets du type de données de la Destination)

L'instruction FLL fonctionne sur des données de mémoire contiguës.

L'instruction FLL n'écrit pas au-delà de la fin d'un tableau. Si la longueur est supérieure au nombre total d'éléments dans le tableau de Destination, l'instruction FLL s'arrête à la fin du tableau. Aucun défaut majeur n'est généré.

Pour de meilleurs résultats, la Source et la Destination doivent être de même type. Si vous voulez remplir une structure, utilisez l'instruction COP (voir l'exemple 3, page 7-29). Si vous mélangez les types de

Opérande Type Format Description

Source SINTINTDINTREAL

immédiatpoint

élément à copierImportant : les opérandes Source et Destination doivent avoir les mêmes types de données, au risque de produire des résultats inattendus.

Destination SINTINTDINTREALstructure

point élément initial à écraser par la SourceImportant : les opérandes Source et Destination doivent avoir les mêmes types de données, au risque de produire des résultats inattendus.La meilleure façon d'initialiser une structure est d'utiliser l'instruction COP.

Longueur DINT immédiat nombre d'éléments à remplir

Publication 1756-RM003F-FR-P - Mai 2002

Page 285: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-33

données pour la Source et la Destination, les éléments de Destination sont remplis par des valeurs Source converties.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Si la Source est Et la Destination est La Source est convertie en

SINT, INT, DINT ou REAL SINT SINT

SINT, INT, DINT ou REAL INT INT

SINT, INT, DINT ou REAL DINT DINT

SINT, INT, DINT ou REAL REAL REAL

SINT structure SINT (non convertie)

INT structure INT (non convertie)

DINT structure DINT (non convertie)

REAL structure REAL (non convertie)

Publication 1756-RM003F-FR-P - Mai 2002

Page 286: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-34 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Exécution :

Exemple : L'instruction FLL copie la valeur de value_1 dans dest_1.

Condition Action de la logique à relais

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai

l'état de sortie de la ligne est réglé sur vrai

fin

end_address = start_address + (Longueur ∗ nombre d'octets dans un élément de

destination)

oui

non

end_address > fin du tableau de destination

end_address = fin du tableau de destination

source_address = Source

oui

non

destination_address = end_address

copie les données de source_address dans destination _address

destination_address = destination_address + 1

Publication 1756-RM003F-FR-P - Mai 2002

Page 287: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-35

Logique à relais

Texte structuré

dest_1 := value_1;

Type de données Source (value_1)

Valeur Source (value_1)

Type de données Destination (dest_1)

Valeur Destination (dest_1) après FLL

SINT 16#80 (-128) DINT 16#FFFF FF80 (-128)

DINT 16#1234 5678 SINT 16#78

SINT 16#01 REAL 1.0

REAL 2.0 INT 16#0002

SINT 16#01 TIMER 16#0101 010116#0101 010116#0101 0101

INT 16#0001 TIMER 16#0001 000116#0001 000116#0001 0001

DINT 16#0000 0001 TIMER 16#0000 000116#0000 000116#0000 0001

Publication 1756-RM003F-FR-P - Mai 2002

Page 288: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-36 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Moyenne (AVE) L'instruction AVE calcule la moyenne d'un ensemble de valeurs.

Opérandes :

Logique à relais

Texte structuré

Il n'y a pas d'instruction AVE en texte structuré, mais vous pouvez obtenir le même résultat 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.

Opérande Type Format Description

Tableau SINTINTDINTREAL

point de tableau

trouve la moyenne des valeurs dans ce tableauindique le premier élément du groupe d'éléments sur lequel faire une moyennen'utilisez pas CONTROL.POS dans l'indice

Dimension variable

DINT immédiat(0, 1, 2)

dimension à utiliserselon le nombre de dimensions, l'ordre estarray[dim_0,dim_1,dim_2]array[dim_0,dim_1]array[dim_0]

Destination SINTINTDINTREAL

point résultat de l'opération

Commande CONTROL point structure de contrôle pour l'opération

Longueur DINT immédiat nombre d'éléments du tableau sur lesquels faire la moyenne

Position DINT immédiat élément en cours du tableaula valeur initiale est généralement 0

Publication 1756-RM003F-FR-P - Mai 2002

Page 289: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-37

Structure CONTROL

Description : L'instruction AVE calcule la moyenne d'un ensemble de valeurs.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur :

Mnémonique Type de données Description

.EN BOOL Le bit d'activation indique que l'instruction AVE est activée.

.DN BOOL Le bit de fin est activé lorsque l'instruction a été exécutée sur le dernier élément du tableau (.POS = .LEN).

.ER BOOL Le bit d'erreur est activé si l'instruction génère un dépassement supérieur. L'instruction s'arrête jusqu'à ce que le programme remette à 0 le bit .ER. La position de l'élément qui a provoqué le dépassement est stockée dans la valeur .POS.

.LEN DINT La longueur indique le nombre d'éléments du tableau sur lesquels l'instruction est exécutée.

.POS DINT La position contient la position de l'élément auquel l'instruction est en train d'accéder.

IMPORTANT Assurez-vous que la longueur n'entraîne pas l'instruction au-delà de la variation de Dimension indiquée. Le cas échéant, la Destination sera incorrecte.

Un défaut majeur se produit si Type du défaut Code du défaut

.POS < 0 ou .LEN < 0 4 21

La variation de Dimension n'existe pas dans le tableau indiqué

4 20

Publication 1756-RM003F-FR-P - Mai 2002

Page 290: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-38 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Exécution :

Exemple 1 : Calculer la moyenne de array_dint, soit DINT[4,5].

Condition Action de la logique à relais

pendant la pré-scrutation Le bit .EN est effacé.Le bit .DN est effacé.Le bit .ER est effacé.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'instruction AVE calcule la moyenne en additionnant tous les éléments indiqués dans le tableau et en divisant par le nombre d'éléments.En interne, l'instruction utilise une instruction FAL pour calculer la moyenne :Expression = calcul de moyenneMode = TOUTPour plus de détails sur l'exécution de l'instruction FAL, voir page 7-9.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

examine le bit .DNbit .DN = 0

bit .DN = 1

si l'état d'entrée de la ligne est faux

l'état de sortie de la ligne est réglé sur faux

fin

le bit .EN est effacéle bit .ER est effacéle bit .DN est effacé

la valeur .POS est effacée

dimension 1

dimension 0

0 20 19 18 17 16

15 14 13 12 11

10 9 8 7 6

5 4 3 2 1

1

2

3

0 1 2 3 4

AVE 19 14 9 4+ + +4

------------------------------------- 464

------ 11.5= = =

dint_ave = 12

indices

Publication 1756-RM003F-FR-P - Mai 2002

Page 291: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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;

Publication 1756-RM003F-FR-P - Mai 2002

Page 292: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-40 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Exemple 2 : Calculer la moyenne de array_dint, soit DINT[4,5].

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;

dimension 1

dimension 0

0 20 19 18 17 16

15 14 13 12 11

10 9 8 7 6

5 4 3 2 1

1

2

3

0 1 2 3 4

AVE 5 4 3 2 1+ + + +5

---------------------------------------- 155

------ 3= = =

indices

dint_ave = 3

Publication 1756-RM003F-FR-P - Mai 2002

Page 293: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-41

Tri de fichier (SRT) L'instruction SRT trie un jeu de valeurs dans une dimension (variation de Dimension) du tableau en ordre croissant.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction SRT en logique à relais. Indiquez cependant les valeurs de longueur et de position en accédant aux membres .LEN et .POS de la structure CONTROL, plutôt qu'en incluant des valeurs dans la liste des opérandes.

Structure CONTROL

Description : L'instruction SRT trie un jeu de valeurs dans une dimension (variation de Dimension) du tableau en ordre croissant.

Opérande Type Format Description

Tableau SINTINTDINTREAL

point de tableau

tableau à trierindique le premier élément du groupe d'éléments à triern'utilisez pas CONTROL.POS dans l'indice

Dimension variable

DINT immédiat(0, 1, 2)

dimension à utiliserselon le nombre de dimensions, l'ordre estarray[dim_0,dim_1,dim_2]array[dim_0,dim_1]array[dim_0]

Commande CONTROL point structure de contrôle pour l'opération

Longueur DINT immédiat nombre d'éléments du tableau à trier

Position DINT immédiat élément en cours du tableaula valeur initiale est généralement 0

SRT(Array,Dimtovary,Control);

Mnémonique Type de données

Description

.EN BOOL Le bit d'activation indique que l'instruction SRT est activée.

.DN BOOL Le bit de fin est activé lorsque les éléments indiqués ont été triés.

.ER BOOL Le bit d'erreur est activé lorsque .LEN < 0 ou .POS < 0. Ces deux états entraînent un défaut majeur.

.LEN DINT La longueur indique le nombre d'éléments du tableau sur lesquels l'instruction est exécutée.

.POS DINT La position contient la position de l'élément auquel l'instruction est en train d'accéder.

IMPORTANT Assurez-vous que la longueur n'entraîne pas l'instruction au-delà de la variation de Dimension indiquée. Le cas échéant, des résultats inattendus se produiront.

Publication 1756-RM003F-FR-P - Mai 2002

Page 294: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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'entrée de la ligne d'effacé à activé chaque fois que l'instruction doit être exécutée ;

• en texte structuré, conditionne l'instruction afin qu'elle soit exécutée uniquement lors d'une transition. Voir Annexe C.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur :

Un défaut majeur se produit si Type du défaut Code du défaut

.POS < 0 ou .LEN < 0 4 21

La variation de Dimension n'existe pas dans le tableau indiqué

4 20

L'instruction essaie d'accéder aux données en dehors des limites du tableau

4 20

Publication 1756-RM003F-FR-P - Mai 2002

Page 295: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-43

Exécution :

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation Le bit .EN est effacé.Le bit .DN est effacé.Le bit .ER est effacé.L'état de sortie de la ligne est réglé sur faux.

Le bit .EN est effacé.Le bit .DN est effacé.Le bit .ER est effacé.

-

si l'état d'entrée de la ligne est vrai

L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction

L'instruction trie les éléments indiqués du tableau en ordre croissant.

L'instruction trie les éléments indiqués du tableau en ordre croissant.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

examine le bit .DNbit .DN = 0

bit .DN = 1

l'état de sortie de la ligne est réglé sur faux

fin

le bit .EN est effacéle bit .ER est effacéle bit .DN est effacé

la valeur .POS est effacée

si l'état d'entrée de la ligne est faux

Publication 1756-RM003F-FR-P - Mai 2002

Page 296: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-44 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Exemple 1 : Trier int_array, soit DINT[4,5].

Logique à relais

Texte structuré

control_1.LEN := 4;

control_1.POS := 0;

SRT(int_array[0,2],0,control_1);

dimension 1

dimension 0

0 20 19 18 17 16

15 14 13 12 11

10 9 8 7 6

5 4 3 2 1

1

2

3

0 1 2 3 4

dimension 1

dimension 0

0 20 19 3 17 16

15 14 8 12 11

10 9 13 7 6

5 4 18 2 1

1

2

3

0 1 2 3 4

Avant Après

indices

indices

Publication 1756-RM003F-FR-P - Mai 2002

Page 297: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-45

Exemple 2 : Trier int_array, soit DINT[4,5].

Logique à relais

Texte structuré

control_1.LEN := 5;

control_1.POS := 0;

SRT(int_array[2,0],1,control_1);

dimension 1

dimension 0

0 20 19 18 17 16

15 14 13 12 11

10 9 8 7 6

5 4 3 2 1

1

2

3

0 1 2 3 4

dimension 1

dimension 0

0 20 19 18 17 16

15 14 13 12 11

6 7 8 9 10

5 4 3 2 1

1

2

3

0 1 2 3 4

Avant Après

indices

indices

Publication 1756-RM003F-FR-P - Mai 2002

Page 298: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-46 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Ecart type de fichier (STD) L'instruction STD calcule l'écart type d'un ensemble de valeurs dans une dimension du tableau et stocke le résultat dans la Destination.

Opérandes :

Logique à relais

Structure CONTROL

Opérande Type Format Description

Tableau SINTINTDINTREAL

point de tableau

trouve l'écart type des valeurs dans ce tableauindique le premier élément du groupe d'éléments à utiliser pour calculer l'écart typen'utilisez pas CONTROL.POS dans l'indice

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Dimension variable

DINT immédiat(0, 1, 2)

dimension à utiliserselon le nombre de dimensions, l'ordre estarray[dim_0,dim_1,dim_2]array[dim_0,dim_1]array[dim_0]

Destination REAL point résultat de l'opération

Commande CONTROL point structure de contrôle pour l'opération

Longueur DINT immédiat nombre d'éléments du tableau à utiliser pour calculer l'écart type

Position DINT immédiat élément en cours du tableaula valeur initiale est généralement 0

Mnémonique Type de données

Description

.EN BOOL Le bit d'activation indique que l'instruction STD est activée.

.DN BOOL Le bit de fin est activé lorsque le calcul est terminé.

.ER BOOL Le bit d'erreur est activé lorsque l'instruction génère un dépassement supérieur. L'instruction s'arrête tant que le programme n'a pas remis le bit .ER à 0. La position de l'élément qui a provoqué le dépassement est stockée dans la valeur .POS.

.LEN DINT La longueur indique le nombre d'éléments du tableau sur lesquels l'instruction est exécutée.

.POS DINT La position contient la position de l'élément auquel l'instruction est en train d'accéder.

Publication 1756-RM003F-FR-P - Mai 2002

Page 299: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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 même résultat 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 :

Où :

• start = indice de variation de dimension de l'opérande du tableau

• xi = élément variable dans le tableau

• N = nombre d'éléments indiqués dans le tableau

• AVE =

X start i+( ) AVE–⟨ ⟩2[ ]i 1=

N

N 1–( )--------------------------------------------------------------------

Ecart type =

x start i+( )

i 1=

N

N-----------------------------------------

Publication 1756-RM003F-FR-P - Mai 2002

Page 300: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-48 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur :

Exécution :

IMPORTANT Assurez-vous que la longueur n'entraîne pas l'instruction au-delà de la variation de Dimension indiquée. Le cas échéant, la Destination sera incorrecte.

Un défaut majeur se produit si Type du défaut Code du défaut

.POS < 0 ou .LEN < 0 4 21

La variation de Dimension n'existe pas dans le tableau indiqué

4 20

Condition Action de la logique à relais

pendant la pré-scrutation Le bit .EN est effacé.Le bit .DN est effacé.Le bit .ER est effacé.L'état de sortie de la ligne est réglé sur faux.

Publication 1756-RM003F-FR-P - Mai 2002

Page 301: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-49

Exemple 1 : Calculer l'écart type de dint_array, soit DINT[4,5].

si l'état d'entrée de la ligne est vrai L'instruction STD calcule l'écart type de l'élément indiqué.En interne, l'instruction utilise une instruction FAL pour calculer la moyenne :Expression = calcul de l'écart typeMode = TOUTPour plus de détails sur l'exécution de l'instruction FAL, voir page 7-9.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action de la logique à relais

examine le bit .DN bit .DN = 0

bit .DN = 1

si l'état d'entrée de la ligne est faux

l'état de sortie de la ligne est réglé sur faux

fin

le bit .EN est effacéle bit .ER est effacéle bit .DN est effacé

la valeur .POS est effacée

dimension 1

dimension 0

0 20 19 18 17 16

15 14 13 12 11

10 9 8 7 6

5 4 3 2 1

1

2

3

0 1 2 3 4

STD 16 8.5–⟨ ⟩211 8.5–⟨ ⟩2

6 8.5–⟨ ⟩21 8.5–⟨ ⟩2

+ + +4 1–⟨ ⟩

--------------------------------------------------------------------------------------------------------------------------- 6.454972= =

AVE 16 11 6 1+ + +4

------------------------------------- 344

------ 8.5= = =

indices

real_std = 6,454972

Publication 1756-RM003F-FR-P - Mai 2002

Page 302: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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));

Exemple 2 : Calculer l'écart type de dint_array, soit DINT[4,5].

dimension 1

dimension 0

0 20 19 18 17 16

15 14 13 12 11

10 9 8 7 6

5 4 3 2 1

1

2

3

0 1 2 3 4

STD 20 18–⟨ ⟩219 18–⟨ ⟩2

18 18–⟨ ⟩217 18–⟨ ⟩2

16 18–⟨ ⟩2+ + + +

5 1–⟨ ⟩------------------------------------------------------------------------------------------------------------------------------------------------------------ 1.581139= =

AVE 20 19 18 17 16+ + + +5

------------------------------------------------------- 905

------ 18= = =

indices

real_std = 1,581139

Publication 1756-RM003F-FR-P - Mai 2002

Page 303: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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));

Publication 1756-RM003F-FR-P - Mai 2002

Page 304: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

7-52 Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Taille en éléments (SIZE) L'instruction SIZE cherche la taille d'une dimension d'un tableau.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction SIZE en logique à relais.

Description : L'instruction SIZE cherche le nombre d'éléments (taille) dans la dimension indiquée du tableau Source et place le résultat dans l'opérande Size.

• L'instruction SIZE trouve la taille d'une dimension d'un tableau.

• L'instruction agit sur :

– un tableau ;

– un tableau dans une structure ;

– un tableau inclus dans un tableau plus grand.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Opérande Type Format Description

Source SINTINTDINTREALSTRUCTURESTRING

point de tableau

tableau sur lequel l'instruction agit

Dimension variable

DINT immédiat (0, 1, 2)

dimension à utiliser

SIZE SINTINTDINTREAL

point point dans lequel le nombre d'éléments de la dimension indiquée du tableau est stocké

Pour la taille de Entrez

première dimension 0

deuxième dimension 1

troisième dimension 2

SIZE(Source,Dimtovary,Size);

Publication 1756-RM003F-FR-P - Mai 2002

Page 305: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-53

Exécution :

Exemple 1 : Trouver le nombre d'éléments dans la dimension 0 (première dimension) de array_a et stocker la taille dans array_a_size. Dans cet exemple, la dimension 0 de array_a comporte 10 éléments.

Logique à relais

Texte structuré

SIZE(array_a,0,array_a_size);

Exemple 2 : Trouver le nombre d'éléments dans le membre DATA de string_1, qui est une chaîne, et stocker la taille dans string_1_size. Dans cet exemple, le membre DATA de string_1 comporte 82 éléments (la chaîne utilise le type de données STRING par défaut). Puisque chaque élément comporte un caractère, string_1 peut contenir jusqu'à 82 caractères.

Logique à relais

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction L'instruction cherche la taille d'une dimension. L'instruction cherche la taille d'une dimension.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

Size in ElementsSource array_a[0]

255Dim. To Vary 0Size array_a_size

10

SIZE

Size in ElementsSource string_1.DATA[0]

'$00'Dim. To Vary 0Size string_1_size

82

SIZE

Publication 1756-RM003F-FR-P - Mai 2002

Page 306: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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);

Exemple 3 : Strings_a est un tableau de structures de chaînes. L'instruction SIZE cherche le nombre d'éléments dans le membre DATA de la structure de chaîne, et stocke la taille dans data_size_a. Dans cet exemple, le membre DATA comporte 24 éléments (la structure de la chaîne a une longueur de 24, définie par l'utilisateur).

Logique à relais

Texte structuré

SIZE(strings_a[0].DATA[0],0,data_size_a);

Size in ElementsSource strings_a[0].DATA[0]

'$00'Dim. To Vary 0Size data_size_a

24

SIZE

Publication 1756-RM003F-FR-P - Mai 2002

Page 307: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Chapitre 8

Instructions sur tableau (fichier)/décalage(BSL, BSR, FFL, FFU, LFL, LFU)

Introduction Utilisez les instructions sur tableau (fichier)/décalage pour modifier l'emplacement de données dans des tableaux.

Vous pouvez combiner différents types de données, mais des erreurs de perte de précision et d'arrondissement peuvent se produire.

Pour les instructions de logique à relais, les types de données en gras indiquent les types de données optimaux. Une instruction est exécutée plus rapidement et demande moins de mémoire si tous les opérandes de l'instruction utilisent le même type de données optimal, généralement DINT ou REAL.

Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page

charger, décaler et décharger des bits dans un tableau de bits, un bit à la fois

BSL logique à relais 8-2

BSR logique à relais 8-5

charger et décharger des valeurs dans le même ordre

FFL logique à relais 8-8

FFU logique à relais 8-14

charger et décharger des valeurs dans l'ordre inverse

LFL logique à relais 8-20

LFU logique à relais 8-26

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 308: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

8-2 Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)

Décalage binaire à gauche (BSL)

L'instruction BSL décale les bits indiqués d'une position vers la gauche dans le tableau.

Opérandes :

Logique à relais

Structure CONTROL

Description : Lorsqu'elle est activée, l'instruction décharge le bit le plus élevé des bits indiqués dans le bit .UL, décale 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 mémoire contiguë.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Opérande Type Format Description

Tableau DINT point de tableau

tableau à modifierindique le premier élément du groupe d'élémentsn'utilisez pas CONTROL.POS dans l'indice

Contrôle CONTROL point structure de contrôle pour l'opération

Bit source BOOL point bit à décaler

Longueur DINT immédiat nombre de bits à décaler dans le tableau

Mnémonique Type de données

Description

.EN BOOL Le bit d'activation indique que l'instruction BSL est activée.

.DN BOOL Le bit de fin est activé pour indiquer que des bits ont été décalés d'une position vers la gauche.

.UL BOOL Le bit de déchargement est la sortie de l'instruction. Le bit .UL stocke l'état du bit qui a été décalé hors de la plage de bits.

.ER BOOL Le bit d'erreur est activé lorsque .LEN < 0.

.LEN DINT La longueur définit le nombre de bits de tableau à décaler.

Publication 1756-RM003F-FR-P - Mai 2002

Page 309: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) 8-3

Exécution :

Condition Action de la logique à relais

pendant la pré-scrutation Le bit .EN est effacé.Le bit .DN est effacé.Le bit .ER est effacé.La valeur .POS est effacée.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux Le bit .EN est effacé.Le bit .DN est effacé.Le bit .ER est effacé.La valeur .POS est effacée.L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai

examine le bit .ENbit .EN = 1

bit .EN = 0

fin

le bit .DN est activé

décale le tableau d'une position vers la gauche

le bit .EN est activé

l'état de sortie de la ligne est réglé sur vrai

le bit .DN est activé.POS = .LEN

.LEN = 0oui

non

.LEN < 0oui

non

Bit sourcebit .UL tableau

examine le bit de source

bit .source = 1

bit .source = 0

le bit .UL reste activé

le bit .UL est activé

le bit .ER est activé

Publication 1756-RM003F-FR-P - Mai 2002

Page 310: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

8-4 Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)

Exemple 1 : Lorsqu'elle est activée, l'instruction BSL commence au bit 0 dans array_dint[0]. L'instruction décharge array_dint[0].9 dans le bit .UL, décale les bits restants et charge input_1 dans array_dint[0].0. Les valeurs dans les bits restants (10 à 31) ne sont pas valables.

Exemple 2 : Lorsqu'elle est activée, l'instruction BSL commence au bit 0 dans array_dint[0]. L'instruction décharge array_dint[1].25 dans le bit .UL, décale les bits restants et charge input_1 dans array_dint[0].0. Les valeurs dans les bits restants (31 à 26 dans array_dint[1]) ne sont pas valables. Notez comment array_dint[0].31 décale les mots vers array_dint[1].0.

9 8 7 6 5 4 3 2 1 0

array_dint[0] avant décalage

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

9 8 7 6 5 4 3 2 1 0

array_dint[0] après décalage

0 1 1 1 1 0 0 0 0 1

1

input_10

bit .UL

ces bits sont décalés à gauche

31 0

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

31 0

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

1

input_1ces bits sont décalés à gauche

0

bit .UL

ces bits sont décalés à gauche

Publication 1756-RM003F-FR-P - Mai 2002

Page 311: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) 8-5

Décalage binaire à droite (BSR)

L'instruction BSR décale les bits indiqués d'une position vers la droite dans le tableau.

Opérandes :

Logique à relais

Structure CONTROL

Description : Lorsqu'elle est activée, l'instruction décharge la valeur au bit 0 du tableau vers le bit .UL, décale les bits restants d'une position vers la droite et charge le bit de Source dans le bit le plus élevé des bits indiqués.

L'instruction BSR fonctionne sur de la mémoire contiguë.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Opérande Type Format Description

Tableau DINT point de tableau

tableau à modifierindique l'élément avec lequel commencer le décalagen'utilisez pas CONTROL.POS dans l'indice

Contrôle CONTROL point structure de contrôle pour l'opération

Bit source BOOL point bit à décaler

Longueur DINT immédiat nombre de bits dans le tableau à décaler

Mnémonique Type de données

Description

.EN BOOL Le bit d'activation indique que l'instruction BSR est activée.

.DN BOOL Le bit de fin est activé pour indiquer que des bits ont été décalés d'une position vers la droite.

.UL BOOL Le bit de déchargement est la sortie de l'instruction. Le bit .UL stocke l'état du bit qui a été décalé hors de la plage de bits.

.ER BOOL Le bit d'erreur est activé lorsque .LEN < 0.

.LEN DINT La longueur définit le nombre de bits de tableau à décaler.

Publication 1756-RM003F-FR-P - Mai 2002

Page 312: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

8-6 Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)

Exécution :

Condition Action de la logique à relais

pendant la pré-scrutation Le bit .EN est effacé.Le bit .DN est effacé.Le bit .ER est effacé.La valeur .POS est effacée.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux Le bit .EN est effacé.Le bit .DN est effacé.Le bit .ER est effacé.La valeur .POS est effacée.L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai

examine le bit .ENbit .EN = 1

bit .EN = 0

fin

le bit .DN est activé

décale le tableau d'une position vers la droite

le bit .EN est activé

l'état de sortie de la ligne est réglé sur vrai

le bit .DN est activé.POS = .LEN

.LEN = 0oui

non

.LEN < 0 oui

non

Bit source

bit .ULtableau

examine le bit de source

bit .source = 1

bit .source = 0

le bit .UL reste activé

le bit .UL est activé

le bit .ER est activé

Publication 1756-RM003F-FR-P - Mai 2002

Page 313: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) 8-7

Exemple 1 : Lorsqu'elle est activée, l'instruction BSR commence au bit 9 dans array_dint[0]. L'instruction décharge array_dint[0].0 dans le bit .UL, décale à droite les bits restants et charge input_1 dans array_dint[0].9. Les valeurs dans les bits restants (10 à 31) ne sont pas valables.

Exemple 2 : Lorsqu'elle est activée, l'instruction BSR commence au bit 25 dans array_dint[1]. L'instruction décharge array_dint[0].0 dans le bit .UL, décale à droite les bits restants et charge input_1 dans array_dint[1].25. Les valeurs dans les bits restants (31 à 26 dans array_dint[1]) ne sont pas valables. Notez comment array_dint[1].0 décale les mots dans array_dint[0].31.

9 8 7 6 5 4 3 2 1 0

array_dint[0] avant décalage

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

9 8 7 6 5 4 3 2 1 0

array_dint[0] après décalage

1 0 0 1 1 1 1 0 0 0

ces bits sont décalés à droite0

bit .UL1

input_1

31 0

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

31 0

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

ces bits sont décalés à droite0

bit .UL

ces bits sont décalés à droite1

input_1

Publication 1756-RM003F-FR-P - Mai 2002

Page 314: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

8-8 Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)

Chargement FIFO (FFL) L'instruction FFL copie la valeur de la Source dans le FIFO.

Opérandes :

Logique à relais

Si vous utilisez une structure définie par l'utilisateur comme type de données pour l'opérande Source ou FIFO, utilisez la même structure pour les deux opérandes.

Structure CONTROL

Opérande Type Format Description

Source SINTINTDINTREALSTRINGSTRUCTURE

immédiatpoint

données à stocker dans le FIFO

La source est convertie dans le type de données du point du tableau. Un nombre entier plus petit est converti en un nombre entier plus grand par extension de signe.

FIFO SINTINTDINTREALSTRINGSTRUCTURE

point de tableau

FIFO à modifierindique le premier élément du FIFOn'utilisez pas CONTROL.POS dans l'indice

Contrôle CONTROL point structure de contrôle pour l'opérationutilise généralement le même point CONTROL que l'instruction FFU associée

Longueur DINT immédiat nombre maximum d'éléments que le FIFO peut contenir à la fois

Position DINT immédiat emplacement suivant dans le FIFO où l'instruction charge des donnéesla valeur initiale est généralement 0

Mnémonique Type de données

Description

.EN BOOL Le bit d'activation indique que l'instruction FFL est activée.

.DN BOOL Le bit de fin est activé pour indiquer que le FIFO est plein (.POS = .LEN). Le bit .DN empêche le chargement de FIFO jusqu'à ce que .POS < .LEN.

.EM BOOL Le bit vide indique que le FIFO est vide. Si .LEN ≤ 0 ou .POS < 0, les bits .EM et .DN sont activés.

.LEN DINT La longueur définit le nombre maximum d'éléments que le FIFO peut contenir à la fois.

.POS DINT La position identifie l'emplacement dans le FIFO où l'instruction chargera la nouvelle valeur.

Publication 1756-RM003F-FR-P - Mai 2002

Page 315: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) 8-9

Description : Utilisez l'instruction FFL avec l'instruction FFU pour stocker et récupérer les données dans l'ordre premier entré/premier sorti. Lorsqu'elles sont couplées, les instructions FFL et FFU établissent un registre à décalage asynchrone.

La Source et le FIFO sont généralement le même type de données.

Lorsqu'elle est activée, l'instruction FFL charge la valeur Source de la position dans le FIFO identifié par la valeur .POS. L'instruction charge une valeur chaque fois qu'elle est activée, jusqu'à ce que le FIFO soit plein.

L'instruction FFL fonctionne sur de la mémoire contiguë.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur :

Un défaut majeur se produit si Type du défaut Code du défaut

(élément de départ + .POS) > taille du tableau FIFO

4 20

Publication 1756-RM003F-FR-P - Mai 2002

Page 316: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

8-10 Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)

Exécution :

Condition Action de la logique à relais

pendant la pré-scrutation

fin

le bit .EN est activé pour empêcher un chargement incorrect lorsque la scrutation commence.

l'état de sortie de la ligne est réglé sur faux

.LEN < 0 oui

non

.POS < 0oui

.EM est effacé

.DN est effacé

non

.POS = 0 oui

non

.EM est activé

.POS ≥ .LENoui

non

.DN est activé

.EM est activé

.DN est activé

Publication 1756-RM003F-FR-P - Mai 2002

Page 317: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) 8-11

Condition Action de la logique à relais

si l'état d'entrée de la ligne est faux

fin

le bit .EN est effacé

l'état de sortie de la ligne est réglé sur faux

.LEN < 0oui

non

.POS < 0 oui

.EM est effacé

.DN est effacé

non

.POS = 0oui

non

.EM est activé

.POS ≥ .LENoui

non

.DN est activé

.EM est activé

.DN est activé

Publication 1756-RM003F-FR-P - Mai 2002

Page 318: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

8-12 Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action de la logique à relais

si l'état d'entrée de la ligne est vrai

fin

l'état de sortie de la ligne est réglé sur vrai

examine le bit .EN.EN = 0

.EN = 1

le bit .EN est activé .LEN < 0oui

non

.POS < 0oui

non

le bit .EM est activéle bit .DN est activéle bit .EM est effacé

le bit .DN est effacé.POS = .POS + 1

.POS ≥ .LENoui

non

le bit .DN est activé

.POS ou .LEN > taille du tableau

oui

non

défaut majeur

.POS > .LENoui

non

.POS = .POS - 1

FIFO[.POS - 1] = source

.LEN < 0oui

non

.POS < 0oui

non

le bit .EM est effacéle bit .DN est effacé

.POS = 0oui

non

le bit .EM est activé

.POS ≥ .LENoui

non

le bit .DN est activé

le bit .EM est activé.DN est activé

Publication 1756-RM003F-FR-P - Mai 2002

Page 319: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) 8-13

Exemple : Lorsqu'elle est activée, l'instruction FFL charge value_1 dans la position suivante du FIFO, qui est array_dint[5] dans cet exemple.

avant chargement du FIFO après chargement du FIFO

array_dint[0] 00000 00000

11111 11111

22222 22222

33333 control_1.pos = 5 33333

44444 value_1 = 55555 44444

array_dint[5] 00000 55555

00000 00000 control_1.pos = 6

00000 00000

00000 00000

00000 00000

Publication 1756-RM003F-FR-P - Mai 2002

Page 320: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

8-14 Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)

Déchargement FIFO (FFU) L'instruction FFU décharge la valeur de la position 0 (première position) du FIFO et stocke cette valeur dans la Destination. Les données restantes dans le FIFO sont décalées d'une position.

Opérandes :

Logique à relais

Si vous utilisez une structure définie par l'utilisateur comme type de données pour l'opérande FIFO ou Destination, utilisez la même structure pour les deux opérandes.

Structure CONTROL

Description : Utilisez l'instruction FFU avec l'instruction FFL pour stocker et récupérer les données dans l'ordre premier entré/premier sorti.

Opérande Type Format Description

FIFO SINTINTDINTREALSTRINGSTRUCTURE

point de tableau

FIFO à modifierindique le premier élément du FIFOn'utilisez pas CONTROL.POS dans l'indice

Destination SINTINTDINTREALSTRINGSTRUCTURE

point valeur qui sort du FIFO

La valeur de destination est converti dans le type de données du point de destination. Un nombre entier plus petit est converti en un nombre entier plus grand par extension de signe.

Contrôle CONTROL point structure de contrôle pour l'opérationutilise généralement le même point CONTROL que l'instruction FFL associée

Longueur DINT immédiat nombre maximum d'éléments que le FIFO peut contenir à la fois

Position DINT immédiat emplacement suivant dans le FIFO où l'instruction décharge des donnéesla valeur initiale est généralement 0

Mnémonique Type de données

Description

.EU BOOL Le bit d'activation de déchargement indique que l'instruction FFU est activée. Le bit .EU est réglé pour empêcher un déchargement incorrect lorsque la scrutation commence.

.DN BOOL Le bit de fin est activé pour indiquer que le FIFO est plein (.POS = .LEN).

.EM BOOL Le bit vide indique que le FIFO est vide. Si .LEN ≤ 0 ou .POS < 0, les bits .EM et .DN sont activés.

.LEN DINT La longueur définit le nombre maximum d'éléments dans le FIFO.

.POS DINT La position identifie la fin des données chargées dans le FIFO.

Publication 1756-RM003F-FR-P - Mai 2002

Page 321: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) 8-15

Lorsqu'elle est activée, l'instruction FFU décharge des données du premier élément du FIFO et stocke cette valeur dans la Destination. L'instruction décharge une valeur chaque fois qu'elle est activée, jusqu'à ce que le FIFO soit vide. Si le FIFO est vide, FFU renvoie 0 à la Destination.

L'instruction FFU fonctionne sur de la mémoire contiguë.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur :

Un défaut majeur se produit si Type du défaut Code du défaut

Longueur > taille du tableau FIFO 4 20

Publication 1756-RM003F-FR-P - Mai 2002

Page 322: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

8-16 Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)

Exécution :

Condition Action de la logique à relais

pendant la pré-scrutation

fin

le bit .EU est activé pour empêcher un déchargement incorrect lorsque la scrutation commence.

l'état de sortie de la ligne est réglé sur faux

.LEN < 0oui

non

.POS < 0 oui

.EM est effacé

.DN est effacé

non

.POS = 0oui

non

.EM est activé

.POS ≥ .LENoui

non

.DN est activé

.EM est activé

.DN est activé

Publication 1756-RM003F-FR-P - Mai 2002

Page 323: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) 8-17

Condition Action de la logique à relais

si l'état d'entrée de la ligne est faux

fin

le bit .EU est effacé

l'état de sortie de la ligne est réglé sur faux

.LEN < 0oui

non

.POS < 0 oui

.EM est effacé

.DN est effacé

non

.POS = 0oui

non

.EM est activé

.POS ≥ .LENoui

non

.DN est activé

.EM est activé

.DN est activé

Publication 1756-RM003F-FR-P - Mai 2002

Page 324: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

8-18 Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action de la logique à relais

si l'état d'entrée de la ligne est vrai

fin

examine le bit .EU.EU = 0

.EU = 1

le bit .EU est activé .LEN < 0oui

non

.POS < 0oui

non

le bit .EM est activéle bit .DN est activé

le bit .EM est effacéle bit .DN est effacé

.LEN > taille du tableau

oui

non

défaut majeur

.POS ≤ 1oui

non

le bit .EM est activé

.LEN < 0oui

non

.POS < 0oui

non

le bit .EM est effacéle bit .DN est effacé

.POS = 0oui

non

le bit .EM est activé

.POS ≥ .LENoui

non

le bit .DN est activé

le bit .EM est activé.DN est activé

.POS < 1oui

non

Destination = 0

.POS = .POS - 1Destination = FIFO[0]

i = 1

FIFO[i - 1] = FIFO[i]i = i +1

i < .LENoui

nonl'état de sortie de la ligne

est réglé sur vrai

Publication 1756-RM003F-FR-P - Mai 2002

Page 325: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) 8-19

Exemple : Lorsqu'elle est activée, l'instruction FFU décharge array_dint[0] dans value_2 et décale les éléments restants dans array_dint.

avant déchargement du FIFO

après déchargement du FIFO

array_dint[0] 00000 11111

11111 22222

22222 33333

33333 44444

44444 55555

array_dint[5] 55555 00000 control_1.pos = 5

00000 control_1.pos = 6 00000 value_2 = 00000

00000 00000

00000 00000

00000 00000

Publication 1756-RM003F-FR-P - Mai 2002

Page 326: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

8-20 Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)

Chargement LIFO (LFL) L'instruction LFL copie la valeur de la Source dans le LIFO.

Opérandes :

Logique à relais

Si vous utilisez une structure définie par l'utilisateur comme type de données pour l'opérande Source ou LIFO, utilisez la même structure pour les deux opérandes.

Structure CONTROL

Opérande Type Format Description

Source SINTINTDINTREALSTRINGSTRUCTURE

immédiatpoint

données à stocker dans le LIFO

La source est convertie dans le type de données du point du tableau. Un nombre entier plus petit est converti en un nombre entier plus grand par extension de signe.

LIFO SINTINTDINTREALSTRINGSTRUCTURE

point de tableau

LIFO à modifierindique le premier élément du LIFOn'utilisez pas CONTROL.POS dans l'indice

Contrôle CONTROL point structure de contrôle pour l'opérationutilise généralement le même point CONTROL que l'instruction LFU associée

Longueur DINT immédiat nombre maximum d'éléments que le LIFO peut contenir à la fois

Position DINT immédiat emplacement suivant dans le LIFO où l'instruction charge des donnéesla valeur initiale est généralement 0

Mnémonique Type de données

Description

.EN BOOL Le bit d'activation indique que l'instruction LFL est activée.

.DN BOOL Le bit de fin est activé pour indiquer que le LIFO est plein (.POS = .LEN). Le bit .DN empêche le chargement de LIFO jusqu'à ce que .POS < .LEN.

.EM BOOL Le bit vide indique que le LIFO est vide. Si .LEN ≤ 0 ou .POS < 0, les bits .EM et .DN sont activés.

.LEN DINT La longueur définit le nombre maximum d'éléments que le LIFO peut contenir à la fois.

.POS DINT La position identifie l'emplacement dans le LIFO où l'instruction chargera la nouvelle valeur.

Publication 1756-RM003F-FR-P - Mai 2002

Page 327: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) 8-21

Description : Utilisez l'instruction LFL avec l'instruction LFU pour stocker et récupérer les données dans l'ordre dernier entré/premier sorti. Lorsqu'elles sont couplées, les instructions LFL et LFU établissent un registre à décalage asynchrone.

La Source et le LIFO sont généralement le même type de données.

Lorsqu'elle est activée, l'instruction LFL charge la valeur Source de la position dans le LIFO identifié par la valeur .POS. L'instruction charge une valeur chaque fois qu'elle est activée, jusqu'à ce que le LIFO soit plein.

L'instruction LFL fonctionne sur de la mémoire contiguë.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur :

Un défaut majeur se produit si Type du défaut Code du défaut

(élément de départ + .POS) > taille du tableau LIFO

4 20

Publication 1756-RM003F-FR-P - Mai 2002

Page 328: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

8-22 Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)

Exécution :

Condition Action de la logique à relais

pendant la pré-scrutation

fin

le bit .EN est activé pour empêcher un chargement incorrect lorsque la scrutation commence.

l'état de sortie de la ligne est réglé sur faux

.LEN < 0oui

non

.POS < 0 oui

.EM est effacé

.DN est effacé

non

.POS = 0oui

non

.EM est activé

.POS ≥ .LENoui

non

.DN est activé

.EM est activé

.DN est activé

Publication 1756-RM003F-FR-P - Mai 2002

Page 329: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) 8-23

Condition Action de la logique à relais

si l'état d'entrée de la ligne est faux

fin

le bit .EN est effacé

l'état de sortie de la ligne est réglé sur faux

.LEN < 0oui

non

.POS < 0 oui

.EM est effacé

.DN est effacé

non

.POS = 0oui

non

.EM est activé

.POS ≥ .LENoui

non

.DN est activé

.EM est activé

.DN est activé

Publication 1756-RM003F-FR-P - Mai 2002

Page 330: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

8-24 Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action de la logique à relais

si l'état d'entrée de la ligne est vrai

fin

l'état de sortie de la ligne est réglé sur vrai

examine le bit .EN.EN = 0

.EN = 1

le bit .EN est activé .LEN < 0oui

non

.POS < 0oui

non

le bit .EM est activéle bit .DN est activé

le bit .EM est effacéle bit .DN est effacé

.POS = .POS + 1

.POS ≥ .LENoui

non

le bit .DN est activé

.POS ou .LEN > taille du tableau

oui

non

défaut majeur

.POS > .LENoui

non

.POS = .POS - 1

LIFO[.POS - 1] = source

.LEN < 0oui

non

.POS < 0oui

non

le bit .EM est effacéle bit .DN est effacé

.POS = 0oui

non

le bit .EM est activé

.POS ≥ .LENoui

non

le bit .DN est activé

le bit .EM est activé.DN est activé

Publication 1756-RM003F-FR-P - Mai 2002

Page 331: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) 8-25

Exemple : Lorsqu'elle est activée, l'instruction LFL charge value_1 dans la position suivante du LIFO, qui est array_dint[5] dans cet exemple.

avant chargement du LIFO après chargement du LIFO

array_dint[0] 00000 00000

11111 11111

22222 22222

33333 control_1.pos = 5 33333

44444 value_1 = 55555 44444

array_dint[5] 00000 55555

00000 00000 control_1.pos = 6

00000 00000

00000 00000

00000 00000

Publication 1756-RM003F-FR-P - Mai 2002

Page 332: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

8-26 Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)

Déchargement LIFO (LFU) L'instruction LFU décharge la valeur .POS du LIFO et stocke 0 dans cet emplacement.

Opérandes :

Logique à relais

Si vous utilisez une structure définie par l'utilisateur comme type de données pour l'opérande LIFO ou Destination, utilisez la même structure pour les deux opérandes.

Structure CONTROL

Opérande Type Format Description

LIFO SINTINTDINTREALSTRINGSTRUCTURE

point de tableau

LIFO à modifierindique le premier élément du LIFOn'utilisez pas CONTROL.POS dans l'indice

Destination SINTINTDINTREALSTRINGSTRUCTURE

point valeur qui sort du LIFO

La valeur de destination est converti dans le type de données du point de destination. Un nombre entier plus petit est converti en un nombre entier plus grand par extension de signe.

Contrôle CONTROL point structure de contrôle pour l'opérationutilise généralement le même point CONTROL que l'instruction LFL associée

Longueur DINT immédiat nombre maximum d'éléments que le LIFO peut contenir à la fois

Position DINT immédiat emplacement suivant dans le LIFO où l'instruction décharge des donnéesla valeur initiale est généralement 0

Mnémonique Type de données

Description

.EU BOOL Le bit d'activation de déchargement indique que l'instruction LFU est activée. Le bit .EU est réglé pour empêcher un déchargement incorrect lorsque la scrutation commence.

.DN BOOL Le bit de fin est activé pour indiquer que le LIFO est plein (.POS = .LEN).

.EM BOOL Le bit vide indique que le LIFO est vide. Si .LEN ≤ 0 ou .POS < 0, les bits .EM et .DN sont activés.

.LEN DINT La longueur définit le nombre maximum d'éléments que le LIFO peut contenir à la fois.

.POS DINT La position identifie la fin des données chargées dans le LIFO.

Publication 1756-RM003F-FR-P - Mai 2002

Page 333: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) 8-27

Description : Utilisez l'instruction LFU avec l'instruction LFL pour stocker et récupérer les données dans l'ordre dernier entré/premier sorti.

Lorsqu'elle est activée, l'instruction LFU décharge la valeur .POS du LIFO et stocke cette valeur dans la Destination. L'instruction décharge une valeur et la remplace par un 0 chaque fois qu'elle est activée, jusqu'à ce que le LIFO soit vide. Si le LIFO est vide, LFU renvoie 0 à la Destination.

L'instruction LFU fonctionne sur de la mémoire contiguë.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur :

Un défaut majeur se produit si Type du défaut Code du défaut

Longueur > taille du tableau LIFO 4 20

Publication 1756-RM003F-FR-P - Mai 2002

Page 334: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

8-28 Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)

Exécution :

Condition Action de la logique à relais

pendant la pré-scrutation

fin

le bit .EU est activé pour empêcher un déchargement incorrect lorsque la scrutation commence.

l'état de sortie de la ligne est réglé sur faux

.LEN < 0oui

non

.POS < 0 oui

.EM est effacé

.DN est effacé

non

.POS = 0oui

non

.EM est activé

.POS ≥ .LENoui

non

.DN est activé

.EM est activé

.DN est activé

Publication 1756-RM003F-FR-P - Mai 2002

Page 335: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) 8-29

Condition Action de la logique à relais

si l'état d'entrée de la ligne est faux

fin

le bit .EU est effacé

l'état de sortie de la ligne est réglé sur faux

.LEN < 0oui

non

.POS < 0 oui

.EM est effacé

.DN est effacé

non

.POS = 0oui

non

.EM est activé

.POS ≥ .LENoui

non

.DN est activé

.EM est activé

.DN est activé

Publication 1756-RM003F-FR-P - Mai 2002

Page 336: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

8-30 Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action de la logique à relais

si l'état d'entrée de la ligne est vrai

fin

l'état de sortie de la ligne est réglé sur vrai

examine le bit .EU.EU = 0

.EU = 1

le bit .EU est activé .LEN < 0oui

non

.POS < 0oui

non

le bit .EM est activéle bit .DN est activé

le bit .EM est effacéle bit .DN est effacé

.LEN > taille du tableau

oui

non

défaut majeur

.POS ≤ 1oui

non

le bit .EM est activé

.LEN < 0oui

non

.POS < 0oui

non

le bit .EM est effacéle bit .DN est effacé

.POS = 0oui

non

le bit .EM est activé

.POS ≥ .LENoui

non

le bit .DN est activé

le bit .EM est activé.DN est activé

.POS < 1oui

non

.POS > .LENoui

non

.POS = .LEN

Destination = 0

Destination = LIFO[control.POS]LIFO[control.POS) = 0

.POS = .POS - 1

Publication 1756-RM003F-FR-P - Mai 2002

Page 337: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) 8-31

Exemple : Lorsqu'elle est activée, l'instruction LFU décharge array_dint[5] dans value_2.

avant déchargement du LIFO

après déchargement du LIFO

array_dint[0] 00000 00000

11111 11111

22222 22222

33333 33333

44444 44444

array_dint[5] 55555 00000 control_1.pos = 5

00000 control_1.pos = 6 00000 value_2 = 55555

00000 00000

00000 00000

00000 00000

Publication 1756-RM003F-FR-P - Mai 2002

Page 338: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

8-32 Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)

Notes :

Publication 1756-RM003F-FR-P - Mai 2002

Page 339: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Chapitre 9

Instructions séquenceur(SQI, SQO, SQL)

Introduction Les instructions séquenceur surveillent la cohérence et la répétition d'opérations.

Pour les instructions de logique à relais, les types de données en gras indiquent les types de données optimaux. Une instruction est exécutée plus rapidement et demande moins de mémoire si tous les opérandes de l'instruction utilisent le même type de données optimal, généralement DINT ou REAL.

Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page

détecter si une étape est terminée SQI logique à relais 9-2

configurer les états de sortie pour l'étape suivante

SQO logique à relais 9-6

charger des états de référence dans les tableaux séquenceur

SQL logique à relais 9-10

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 340: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

9-2 Instructions séquenceur (SQI, SQO, SQL)

Entrée séquenceur (SQI) L'instruction SQI détecte la fin d'une étape dans une paire d'instructions séquenceur SQO/SQI.

Opérandes :

Logique à relais

Structure CONTROL

Description : Lorsqu'elle est activée, l'instruction SQI compare un élément Source à un élément de tableau à travers un masque pour voir s'ils sont égaux.

Utilise généralement la même structure CONTROL que les instructions SQO et SQL.

L'instruction SQI fonctionne sur de la mémoire contiguë.

Opérande Type Format Description

Tableau DINT point de tableau

tableau séquenceurindique le premier élément du tableau séquenceurn'utilisez pas CONTROL.POS dans l'indice

Masque SINTINTDINT

pointimmédiat

bits à bloquer ou à passer

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Source SINTINTDINT

point données d'entrée pour le tableau séquenceur

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Contrôle CONTROL point structure de contrôle pour l'opérationutilise généralement le même point CONTROL que les instructions SQO et SQL

Longueur DINT immédiat nombre d'éléments du tableau (tableau séquenceur) à comparer

Position DINT immédiat position en cours du tableaula valeur initiale est généralement 0

Mnémonique Type de données

Description

.ER BOOL Le bit d'erreur est activé lorsque .LEN ≤ 0, .POS < 0 ou .POS > .LEN.

.LEN DINT La longueur définit le nombre d'étapes dans le tableau séquenceur.

.POS DINT La position identifie l'élément que l'instruction est en train de comparer.

Publication 1756-RM003F-FR-P - Mai 2002

Page 341: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions séquenceur (SQI, SQO, SQL) 9-3

Entrée d'une valeur de masque immédiate

Lorsque vous entrez un masque, le logiciel de programmation passe par défaut à des valeurs décimales. Si vous voulez entrer un masque à l'aide d'un autre format, faites précéder la valeur du préfixe correct.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Préfixe Description

16# hexadécimalpar exemple : 16#0F0F

8# octalpar exemple : 8#16

2# binairepar exemple : 2#00110011

Publication 1756-RM003F-FR-P - Mai 2002

Page 342: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

9-4 Instructions séquenceur (SQI, SQO, SQL)

Exécution :

Condition Action de la logique à relais

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai

.LEN ≤ 0

.POS < 0ou

.POS > .LEN

non

oui

fin

le bit .ER est activé

l'état de sortie de la ligne est réglé sur faux

Source masquée = Array[.POS] masqué

oui

le bit .ER est effacé

non

l'état de sortie de la ligne est réglé sur vrai

Publication 1756-RM003F-FR-P - Mai 2002

Page 343: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions séquenceur (SQI, SQO, SQL) 9-5

Exemple : Lorsqu'elle est activée, l'instruction SQI passe value_2 à travers le masque pour déterminer si le résultat est égal à l'élément en cours de array_dint. La comparaison masquée est vraie, l'état de sortie de la ligne passe donc à vrai.

Un 0 dans le masque signifie que le bit n'est pas comparé (désigné par xxxx dans cet exemple).

Utilisation de SQI sans SQO

Si vous utilisez une instruction SQI sans une instruction SQO, vous devez augmenter le tableau séquenceur de l'extérieur.

L'instruction SQI compare la valeur source. L'instruction ADD augmente le tableau séquenceur. GRT détermine s'il y a une autre valeur à vérifier dans le tableau séquenceur. L'instruction MOV réinitialise la valeur de la position après être complètement passée par le tableau séquenceur.

Opérande SQI Valeurs d'exemple (DINT affiché en binaire)

Source xxxxxxxx xxxxxxxx xxxx0101 xxxx1010

Masque 00000000 00000000 00001111 00001111

Tableau xxxxxxxx xxxxxxxx xxxx0101 xxxx1010

Publication 1756-RM003F-FR-P - Mai 2002

Page 344: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

9-6 Instructions séquenceur (SQI, SQO, SQL)

Sortie séquenceur (SQO) L'instruction SQO configure des états de sortie pour l'étape suivante d'une paire d'instructions séquenceur SQO/SQI.

Opérandes :

Logique à relais

Structure CONTROL

Description : Lorsqu'elle est activée, l'instruction SQO augmente la position, déplace les données à la position à travers le masque et stocke le résultat dans la Destination. Si .POS > .LEN, l'instruction va au début du tableau séquenceur et continue avec .POS = 1.

Utilise généralement la même structure CONTROL que les instructions SQI et SQL.

L'instruction SQO fonctionne sur de la mémoire contiguë.

Opérande Type Format Description

Tableau DINT point de tableau

tableau séquenceurindique le premier élément du tableau séquenceurn'utilisez pas CONTROL.POS dans l'indice

Masque SINTINTDINT

pointimmédiat

bits à bloquer ou à passer

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Destination DINT point données de sortie du tableau séquenceur

Contrôle CONTROL point structure de contrôle pour l'opérationutilise généralement le même point CONTROL que les instructions SQI et SQL

Longueur DINT immédiat nombre d'éléments du tableau (tableau séquenceur) à sortir

Position DINT immédiat position en cours du tableaula valeur initiale est généralement 0

Mnémonique Type de données

Description

.EN BOOL Le bit d'activation indique que l'instruction SQO est activée.

.DN BOOL Le bit de fin est activé lorsque tous les éléments indiqués ont été déplacés vers la Destination.

.ER BOOL Le bit d'erreur est activé lorsque .LEN ≤ 0, .POS < 0 ou .POS > .LEN.

.LEN DINT La longueur définit le nombre d'étapes dans le tableau séquenceur.

.POS DINT La position identifie l'élément que l'automate est en train de traiter.

Publication 1756-RM003F-FR-P - Mai 2002

Page 345: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions séquenceur (SQI, SQO, SQL) 9-7

Entrée d'une valeur de masque immédiate

Lorsque vous entrez un masque, le logiciel de programmation passe par défaut à des valeurs décimales. Si vous voulez entrer un masque à l'aide d'un autre format, faites précéder la valeur du préfixe correct.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Préfixe Description

16# hexadécimalpar exemple : 16#0F0F

8# octalpar exemple : 8#16

2# binairepar exemple : 2#00110011

Condition Action de la logique à relais

pendant la pré-scrutation Le bit .EN est réglé pour empêcher un chargement incorrect lorsque la scrutation commence.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux Le bit .EN est effacé.L'état de sortie de la ligne est réglé sur faux.

Publication 1756-RM003F-FR-P - Mai 2002

Page 346: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

9-8 Instructions séquenceur (SQI, SQO, SQL)

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action de la logique à relais

si l'état d'entrée de la ligne est vrai

.LEN ≤ 0 ou .POS < 0

non

oui

le bit .DN est activé

.POS = .LENnon

oui

examine le bit .EN.EN = 0

.EN = 1

le bit .EN est activéle bit .ER est effacéle bit .DN est activé

.POS ≥ .LENoui

non

.POS = .POS + 1

la valeur .POS passe à zéro

oui

non

le bit .ER est activé

fin

l'état de sortie de la ligne est réglé sur vrai

le bit .DN est activé.POS = .LENoui

non

Destination = (Destination AND (NOT(Mask) OU (Array[control.POS] AND Mask)

.POS > .LENnon

oui

.POS = 1

erreur d'instr

erreur

Publication 1756-RM003F-FR-P - Mai 2002

Page 347: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions séquenceur (SQI, SQO, SQL) 9-9

Exemple : Lorsqu'elle est activée, l'instruction SQO augmente la position, passe les données à la position dans array_dint à travers le masque, et stocke le résultat dans value_1.

Un 0 dans le masque signifie que le bit n'est pas comparé (désigné par xxxx dans cet exemple).

Utilisation de SQI avec SQO

Si vous couplez une instruction SQI avec une instruction SQO, assurez-vous qu'elles utilisent les mêmes valeurs de Contrôle, Longueur et Position.

Remise à zéro de la position de SQO

Chaque fois que l'automate passe du mode Programme (Program) au mode Exécution (Run), l'instruction SQO efface (initialise) la valeur .POS. Pour remettre .POS à la valeur d'initialisation (.POS = 0), utilisez une instruction RES pour effacer la valeur positive. Cet exemple utilise l'état du premier bit de scrutation pour effacer la valeur .POS.

Opérande SQO Valeurs d'exemple (INT affiché en binaire)

Tableau xxxxxxxx xxxxxxxx xxxx0101 xxxx1010

Masque 00000000 00000000 00001111 00001111

Destination xxxxxxxx xxxxxxxx xxxx0101 xxxx1010

Publication 1756-RM003F-FR-P - Mai 2002

Page 348: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

9-10 Instructions séquenceur (SQI, SQO, SQL)

Chargement séquenceur (SQL)

L'instruction SQL charge des états de référence dans un tableau séquenceur.

Opérandes :

Logique à relais

Structure CONTROL

Description : Lorsqu'elle est activée, l'instruction SQL augmente à la position suivante du tableau séquenceur et charge la valeur Source dans la position. Si le bit .DN est activé ou si .POS ≥ .LEN, l'instruction active .POS=1.

Utilise généralement la même structure CONTROL que les instructions SQI et SQO.

L'instruction SQL fonctionne sur de la mémoire contiguë.

Indicateurs d'état arithmétique : non affectés

Opérande Type Format Description

Tableau DINT point de tableau

tableau séquenceurindique le premier élément du tableau séquenceurn'utilisez pas CONTROL.POS dans l'indice

Source SINTINTDINT

pointimmédiat

données d'entrée à charger dans le tableau séquenceur

Un point SINT ou INT est converti en valeur DINT par extension de signe.

Contrôle CONTROL point structure de contrôle pour l'opérationutilise généralement le même point CONTROL que les instructions SQI et SQO

Longueur DINT immédiat nombre d'éléments du tableau (tableau séquenceur) à charger

Position DINT immédiat position en cours du tableaula valeur initiale est généralement 0

Mnémonique Type de données

Description

.EN BOOL Le bit d'activation indique que l'instruction SQL est activée.

.DN BOOL Le bit de fin est activé lorsque tous les éléments indiqués ont été chargés dans Array.

.ER BOOL Le bit d'erreur est activé lorsque .LEN ≤ 0, .POS < 0 ou .POS > .LEN.

.LEN DINT La longueur définit le nombre d'étapes dans le tableau séquenceur.

.POS DINT La position identifie l'élément que l'automate est en train de traiter.

Publication 1756-RM003F-FR-P - Mai 2002

Page 349: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions séquenceur (SQI, SQO, SQL) 9-11

Conditions d'erreur :

Exécution :

Un défaut majeur se produit si Type du défaut Code du défaut

Longueur > taille du tableau 4 20

Condition Action de la logique à relais

pendant la pré-scrutation Le bit .EN est réglé pour empêcher un chargement incorrect lorsque la scrutation commence.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux Le bit .EN est effacé.L'état de sortie de la ligne est réglé sur faux.

Publication 1756-RM003F-FR-P - Mai 2002

Page 350: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

9-12 Instructions séquenceur (SQI, SQO, SQL)

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action de la logique à relais

si l'état d'entrée de la ligne est vrai

.LEN ≤ 0 ou .POS < 0

non

oui

le bit .DN est activé

.POS = .LENnon

oui

examine le bit .EN.EN = 0

.EN = 1

le bit .EN est activéle bit .ER est effacéle bit .DN est activé

.POS ≥ .LENoui

non

.POS = .POS + 1

la valeur .POS passe à

zéro

oui

non

le bit .ER est activé

fin

l'état de sortie de la ligne est réglé sur vrai

le bit .DN est activé.POS = .LENoui

non

.POS > .LENnon

oui

.POS = 1

erreur d'instruction goto

erreur

.LEN > taille du tableau

oui

non

Array[control.POS] = Source

défaut majeur

Publication 1756-RM003F-FR-P - Mai 2002

Page 351: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions séquenceur (SQI, SQO, SQL) 9-13

Exemple : Lorsqu'elle est activée, l'instruction SQL charge value_3 dans la position suivante du tableau séquenceur, qui est array_dint[5] dans cet exemple.

avant chargement après chargement

array_dint[0] 00000 00000

11111 11111

22222 22222

33333 control_1.pos = 5 33333

44444 value_3 = 55555 44444

array_dint[5] 00000 55555

00000 00000 control_1.pos = 6

00000 00000

00000 00000

00000 00000

Publication 1756-RM003F-FR-P - Mai 2002

Page 352: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

9-14 Instructions séquenceur (SQI, SQO, SQL)

Notes :

Publication 1756-RM003F-FR-P - Mai 2002

Page 353: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Chapitre 10

Instructions de commande de programme(JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)

Introduction Utilisez les instructions de commande de programme pour changer le débit de la logique.

Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page

sauter une section logique qui n'a pas toujours besoin d'être exécutée

JMPLBL

logique à relais 10-2

passer directement à un sousprogramme séparé, passer des données au sousprogramme, exécuter le sous-programme et produire des résultats

JSRSBRRET

logique à relaistexte structurébloc fonctionnel

10-4

passer à un sous-programme externe (automate SoftLogix5800 uniquement)

JXR logique à relais 10-13

marquer une fin temporaire qui arrête l'exécution du sous-programme

TND logique à relaistexte structuré

10-16

désactiver toutes les lignes dans une section logique MCR logique à relais 10-18

désactiver les tâches utilisateur UID logique à relaistexte structuré

10-20

activer les tâches utilisateur UIE logique à relaistexte structuré

10-20

désactiver une ligne AFI logique à relais 10-22

insérer un marqueur dans la logique NOP logique à relais 10-23

arrêter une transition pour un graphe de fonctionnement séquentiel

EOT logique à relaistexte structuré

10-24

arrêter provisoirement un graphe de fonctionnement séquentiel

SFP logique à relaistexte structuré

10-26

réinitialiser un graphe de fonctionnement séquentiel SFR logique à relaistexte structuré

10-28

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 354: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

10-2 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)

Saut vers étiquette (JMP)Etiquette (LBL)

Les instructions JMP et LBL sautent des portions de logique à relais.

Opérandes :

Logique à relais

Description : Lorsqu'elle est activée, l'instruction JMP passe à l'instruction LBL référencée et l'automate continue l'exécution à partir de là. Lorsqu'elle est désactivée, l'instruction JMP n'affecte pas l'exécution de la logique à relais.

L'instruction JMP peut déplacer l'exécution de la logique à relais vers l'avant ou l'arrière. Le saut avant vers une étiquette réduit la durée de scrutation du programme en laissant de côté un segment logique jusqu'à ce que vous en ayez besoin. Le saut arrière permet à l'automate de répéter des itérations de logique.

Prenez soin de ne pas faire trop de sauts arrière. Le temporisateur du chien de garde risque d'être dépassé car l'automate n'atteint jamais la fin de la logique, ce qui met l'automate en défaut.

L'instruction LBL est la cible de l'instruction JMP qui possède le même nom d'étiquette. Assurez-vous que l'instruction LBL est la première instruction sur sa ligne.

Un nom d'étiquette doit être unique dans un sous-programme. Le nom peut :

• comporter un maximum de 40 caractères ;

• contenir des lettres, des nombres et des caractères de soulignement (_).

Indicateurs d'état arithmétique : non affectés

Opérande Type Format Description

Instruction JMP

Nom de l'étiquette

nom d'étiquette

entrer le nom de l'instruction LBL associée

Instruction LBL

Nom de l'étiquette

nom d'étiquette

l'exécution saute à l'instruction LBL avec nom d'étiquette référencé

ATTENTION

!La logique sautée n'est pas scrutée. Placez la logique critique en dehors de la zone sautée.

Publication 1756-RM003F-FR-P - Mai 2002

Page 355: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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 :

Exécution :

Exemple : Lorsque l'instruction JMP est activée, l'exécution saute des lignes de logique successives jusqu'à atteindre la ligne contenant l'instruction LBL avec label_20.

Un défaut majeur se produit si Type du défaut Code du défaut

l'étiquette n'existe pas 4 42

Condition Action de la logique à relais

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'état de sortie de la ligne est réglé sur vrai.L'exécution saute à la ligne contenant l'instruction LBL avec le nom d'étiquette référencé.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

[autres lignes de code]

Publication 1756-RM003F-FR-P - Mai 2002

Page 356: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

10-4 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)

Saut vers sous-programme (JSR)Sous-programme (SBR)Retour (RET)

L'instruction JSR fait passer l'exécution à un autre sous-programme. Les instructions SBR et RET sont des instructions facultatives qui échangent les données avec l'instruction JSR.

Opérandes JSR :

Logique à relais

Texte structuré

(suite des opérandes JSR page suivante)

Opérande Type Format Description

Nom du sous-programme

ROUTINE nom sous-programme à exécuter (sous-programme secondaire)

Paramètre d'entrée

BOOLSINTINTDINTREALSTRUCTURE

immédiatpointpoint de tableau

données de ce sous-programme que vous voulez copier dans un point dans le sous-programme secondaire

• Les paramètres d'entrée sont facultatifs.

• Entrez plusieurs paramètres d'entrée, si nécessaire.

Paramètre de retour

BOOLSINTINTDINTREALSTRUCTURE

pointpoint de tableau

point de ce sous-programme dans lequel vous voulez copier un résultat du sous-programme secondaire

• Les paramètres de retour sont facultatifs.

• Entrez plusieurs paramètres de retour, si nécessaire.

Opérande Type Format Description

Nom du sous-programme

ROUTINE nom sous-programme à exécuter (sous-programme secondaire)

Comptage des entrées

SINTINTDINTREAL

immédiat nombre de paramètres d'entrée

Paramètre d'entrée

BOOLSINTINTDINTREALSTRUCTURE

immédiatpointpoint de tableau

données de ce sous-programme que vous voulez copier dans un point du sous-programme secondaire

• Les paramètres d'entrée sont facultatifs.

• Entrez plusieurs paramètres d'entrée, si nécessaire.

Paramètre de retour

BOOLSINTINTDINTREALSTRUCTURE

pointpoint de tableau

point de ce sous-programme dans lequel vous voulez copier un résultat du sous-programme secondaire

• Les paramètres de retour sont facultatifs.

• Entrez plusieurs paramètres de retour, si nécessaire.

JSR(RoutineName,InputCount,InputPar,ReturnPar);

Publication 1756-RM003F-FR-P - Mai 2002

Page 357: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR) 10-5

Opérandes JSR (suite)

Bloc fonctionnel

Les opérandes sont les mêmes que ceux de l'instruction JSR en logique à relais.

Opérandes SBR : L'instruction SBR doit être la première instruction d'un sous-programme logique à relais ou en texte structuré.

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction SBR en logique à relais.

Bloc fonctionnel

Les opérandes sont les mêmes que ceux de l'instruction SBR en logique à relais.

ATTENTION

!Pour chaque paramètre dans une instruction SBR ou RET, utilisez le même type de données (y compris les dimensions de tableau) que celui du paramètre correspondant dans l'instruction JSR. L'utilisation de types de données différents peut produire des résultats inattendus.

Paramètres d'entrée Paramètres de retour

❇ ❇

Opérande Type Format Description

Paramètre d'entrée

BOOLSINTINTDINTREALSTRUCTURE

pointpoint de tableau

point de ce sous-programme dans lequel vous voulez copier le paramètre d'entrée correspondant à partir de l'instruction JSR

SBR(InputPar);

Paramètres

Publication 1756-RM003F-FR-P - Mai 2002

Page 358: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

10-6 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)

Opérandes RET :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction RET en logique à relais.

Bloc fonctionnel

Les opérandes sont les mêmes que ceux de l'instruction RET en logique à relais.

Description : L'instruction JSR lance l'exécution du sous-programme indiqué, qui est un sous-programme secondaire :

• le sous-programme est exécuté une fois ;

• une fois le sous-programme exécuté, l'exécution logique revient au sous-programme qui contient l'instruction JSR.

Pour programmer un saut vers un sous-programme, suivez les directives ci-dessous :

Opérande Type Format Description

Paramètre de retour

BOOLSINTINTDINTREALSTRUCTURE

immédiatpointpoint de tableau

données de ce sous-programme que vous voulez copier dans le paramètre de retour correspondant dans l'instruction JSR

RET(ReturnPar);

Paramètres

IMPORTANT N'utilisez pas d'instruction JSR pour appeler (exécuter) le sous-programme principal.

• Vous pouvez insérer une instruction JSR dans le sous-programme principal ou dans tout autre sous-programme.

• Si vous utilisez une instruction JSR pour appeler le sous-programme principal, puis insérez une instruction RET dans ce sous-programme principal, un défaut majeur se produit (type 4, code 31).

Publication 1756-RM003F-FR-P - Mai 2002

Page 359: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR) 10-7

Le diagramme suivant illustre le fonctionnement des instructions.

Il n'y a pas de restrictions, hormis la quantité de mémoire de l'automate, au nombre de sous-programmes imbriqués que vous pouvez avoir ou au nombre de paramètres que vous passez ou renvoyez.

Sous-programme appelant

JSR

SBR

RET

RET

JSR

1. Si vous voulez copier des données dans un point du sous-programme, entrez un paramètre d'entrée.

2. Si vous voulez copier un résultat du sous-programme dans un point du sous-programme, entrez un paramètre de retour.

3. Entrez autant de paramètres d'entrée et de retour que nécessaire.

SBR

1. Si l'instruction JSR comporte un paramètre d'entrée, entrez une instruction SBR.

2. Placez l'instruction SBR comme première instruction dans le sous-programme.

3. Pour chaque paramètre d'entrée dans l'instruction JSR, entrez le point dans lequel vous voulez copier les données.

42974

Sous-programme secondaire

RET

1. Si l'instruction JSR comporte un paramètre de retour, entrez une instruction RET.

2. Placez l'instruction RET comme dernière instruction dans le sous-programme.3. Pour chaque paramètre de retour dans l'instruction JSR, entrez un paramètre

de retour à envoyer à l'instruction JSR.4. Dans un sous-programme à relais, placez des instructions RET

supplémentaires pour quitter le sous-programme secondaire en fonction de différentes conditions d'entrée, si nécessaire (les sous-programmes en blocs fonctionnels ne permettent qu'une instruction RET).

sous-programme principal

niveau 1sous-programme secondaire

action_1

niveau 3sous-programme secondaire

action_3

niveau 2sous-programme secondaire

action_2

JSRJSR

JSR

SBRSBRSBR

RETRETRET

action_1

action_2 action_3

Publication 1756-RM003F-FR-P - Mai 2002

Page 360: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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 arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur :

Exécution :

Logique à relais et texte structuré

Un défaut majeur se produit si Type du défaut Code du défaut

L'instruction JSR a moins de paramètres d'entrée que l'instruction SBR 4 31

L'instruction JSR passe à un sous-programme de gestion des défauts 4 ou défini par l'utilisateur

0 ou défini par l'utilisateur

L'instruction RET a moins de paramètres de retour que l'instruction JSR 4 31

Le sous-programme principal contient une instruction RET 4 31

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'automate exécute 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 antérieures : les entrées et les paramètres de retour sont passés.• Version 7.x et ultérieures : les entrées et les paramètres de retour ne sont pas passés.

S'il y a des appels récurrents dans le même sous-programme, le sous-programme est pré-scruté la première fois uniquement. S'il y a des appels multiples (non récurrents) dans le même sous-programme, le sous-programme est pré-scruté à chaque fois.L'état de sortie de la ligne est réglé sur faux (logique à relais uniquement).

si l'état d'entrée de la ligne de l'instruction JSR est faux

Le sous-programme n'est pas exécuté.Les sorties du sous-programme gardent leur dernier état.L'état de sortie de la ligne est réglé sur faux.

-

si l'état d'entrée de la ligne est vrai

L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

Publication 1756-RM003F-FR-P - Mai 2002

Page 361: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR) 10-9

Bloc fonctionnel

Exécution de l'instruction

pendant la post-scrutation Même action que la pré-scrutation décrite ci-dessus.

Même action que la pré-scrutation décrite ci-dessus.

Condition Action de la logique à relais Action du texte structuré

paramètres d'entréeoui

non

JSR copie les paramètres d'entrée dans les points SBR appropriés

fin

l'exécution de la logique commence dans le sous-programme identifié par JSR

fin du sous-programme

oui

non

l'état de sortie de la ligne est fauxcontinue l'exécution du

sous-programme

paramètres de retour

oui

non

RET copie les paramètres de retour dans les points JSR

appropriés

l'état de sortie de la ligne est vrail'exécution de la logique revient à

JSR

instruction REToui

non

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction

Aucune.

pendant la première exécution de l'instruction

Aucune.

exécution normale 1. Si le sous-programme contient une instruction SBR, l'automate exécute d'abord l'instruction SBR.

2. L'automate verrouille toutes les valeurs de données dans les IREF.3. L'automate exécute les autres blocs fonctionnels dans l'ordre déterminé par leur câblage. 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 exécute l'instruction RET en

dernier.

pendant la post-scrutation Le sous-programme est appelé.S'il s'agit d'un sous-programme SFC, il est initialisé comme pendant la pré-scrutation.

Publication 1756-RM003F-FR-P - Mai 2002

Page 362: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

10-10 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)

Exemple 1 : L'instruction JSR passe value_1 et value_2 dans routine_1.

L'instruction SBR reçoit value_1 et value_2 de l'instruction JSR et copie ces valeurs respectivement dans value_a et value_b. L'exécution de la logique continue dans ce sous-programme.

L'instruction RET envoie float_a vers l'instruction JSR. L'instruction JSR reçoit float_a et copie la valeur dans float_value_1. L'exécution de la logique continue avec l'instruction suivant l'instruction JSR.

Logique à relais

Texte structuré

Sous-programme Programme

Sous-programme principal

Sous-programme secondaire

[autres lignes de code]

Sous-programme Programme

Sous-programme principal JSR(routine_1,2,value_1,value_2,float_value_1);

Sous-programme secondaire SBR(value_a,value_b);

<instructions>;

RET(float_a);

Publication 1756-RM003F-FR-P - Mai 2002

Page 363: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR) 10-11

Exemple 2 :

Logique à relais

MainRoutine

Lorsque abc est activé, subroutine_1 est exécuté, le nombre de cookies est calculé et une valeur placée dans cookies_1.

L'instruction ajoute la valeur de cookies_1 à cookies_2 et stocke le résultat dans total_cookies.

Subroutine_1

Lorsque def est activé, l'instruction RET renvoie value_1 au paramètre JSR cookies_1 et le reste du sous-programme n'est pas scruté.

Lorsque def est désactivé (ligne précédente) et ghi activé, l'instruction RET renvoie value_2 au paramètre JSR cookies_1 et le reste du sous-programme n'est pas scruté.

Lorsque def et ghi sont désactivés (lignes précédentes), l'instruction RET renvoie value_3 au paramètre JSR cookies_1.

Publication 1756-RM003F-FR-P - Mai 2002

Page 364: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

10-12 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)

Exemple 3 :

Bloc fonctionnel

42973

42972

6. Les instructions ADD additionnent Input_A, Input_B et Input_C et placent le résultat dans Sum_A_B_C.

Instruction JSR dans Routine_A

Blocs fonctionnels du sous-programme Add_Three_Inputs

1. Les valeurs dans Add_Input_1, Add_Input_2 et Add_Input_3 sont copiées respectivement dans Input_A, Input_B et Input_C.

6. La valeur de Sum_A_B_C est copiée dans Add_Three_Result.

Publication 1756-RM003F-FR-P - Mai 2002

Page 365: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR) 10-13

Saut vers sous-programme externe (JXR)

L'instruction JXR exécute un sous-programme externe. Cette instruction est prise en charge uniquement par les automates SoftLogix5800.

Opérandes :

Logique à relais

.

Opérande Type Format Description

Nom du sous-programme externe

ROUTINE nom exécution du sous-programme externe

Contrôle du sous-programme externe

EXT_ROUTINE_CONTROL

point structure de contrôle (voir page suivante)

Paramètre BOOLSINTINTDINTREALSTRUCTURE

immédiatpointpoint de tableau

données de ce sous-programme que vous voulez copier dans une variable du sous-programme externe

• Les paramètres sont facultatifs.• Entrez plusieurs paramètres, si nécessaire.• vous pouvez avoir jusqu'à 10 paramètres.

Paramètre de retour

BOOLSINTINTDINTREAL

point point de ce sous-programme dans lequel vous voulez copier un résultat du sous-programme externe

• Le paramètre de retour est facultatif.• Vous pouvez avoir un paramètre de retour seulement.

Publication 1756-RM003F-FR-P - Mai 2002

Page 366: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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

Description : Utilisez l'instruction Saut vers sous-programme externe (JXR) pour appeler le sous-programme externe à partir d'un sous-programme logique à relais de votre projet. L'instruction JXR prend en charge plusieurs paramètres pour que vous puissiez transférer des valeurs entre le sous-programme logique à relais et le sous-programme externe.

Mnémonique Type de données Description Application

ErrorCode SINT Si une erreur se produit, cette valeur identifie l'erreur. Les valeurs correctes vont de 0 à 255.

Il n'y a pas de codes d'erreurs prédéfinis. Le développeur du sous-programme externe doit fournir les codes d'erreurs.

NumParams SINT Cette valeur indique le nombre de paramètres associés à cette instruction.

Affichage uniquement : cette information est dérivée de l'entrée de l'instruction.

ParameterDefs EXT_ROUTINE_PARAMETERS[10]

Ce tableau contient les définitions des paramètres à transmettre au sous-programme externe. L'instruction peut transmettre jusqu'à 10 paramètres.

Affichage uniquement : cette information est dérivée de l'entrée de l'instruction.

ReturnParamDef EXT_ROUTIN_PARAMETERS

Cette valeur contient les définitions du paramètre de retour du sous-programme externe. Il n'y a qu'un paramètre de retour.

Affichage uniquement : cette information est dérivée de l'entrée de l'instruction.

EN BOOL Lorsqu'il est activé, le bit d'activation indique que l'instruction JXR est activée.

Le sous-programme externe active ce bit.

ReturnsValue BOOL S'il est activé, ce bit indique qu'un paramètre de retour a été entré pour l'instruction. S'il est effacé, ce bit indique qu'aucun paramètre de retour n'a été entré pour l'instruction.

Affichage uniquement : cette information est dérivée de l'entrée de l'instruction.

DN BOOL Le bit de fin est activé lorsque le sous-programme externe a été complètement exécuté une fois.

Le sous-programme externe active ce bit.

ER BOOL Le bit d'erreur est activé si une erreur se produit. L'instruction s'arrête jusqu'à ce que le programme remette le bit d'erreur à 0.

Le sous-programme externe active ce bit.

FirstScan BOOL Ce bit indique si c'est la première scrutation après le passage de l'automate en mode Exécution (Run). Utilisez FirstScan pour lancer le sous-programme externe, si nécessaire.

L'automate active ce bit pour refléter l'état de la scrutation.

EnableOut BOOL Sortie activée. Le sous-programme externe active ce bit.

EnableIn BOOL Entrée activée. L'automate active ce bit pour refléter l'état d'entrée de la ligne. L'instruction est exécutée quel que soit l'état de la ligne. Le développeur du sous-programme doit surveiller cet état et agir en conséquence.

User1 BOOL Ces bits peuvent être utilisés par l'utilisateur. L'automate n'initialise pas ces bits.

Ces bits peuvent être activés par le sous-programme externe ou le programme utilisateur.User0 BOOL

ScanType1 BOOL Ces bits identifient le type de scrutation en cours.Valeurs de bit : Type de scrutation :

00 Normale01 Pré-scrutation10 Post-scrutation

(pas pour les programmes logiques à relais)

L'automate active ces bits pour refléter l'état de la scrutation.

ScanType0 BOOL

Publication 1756-RM003F-FR-P - Mai 2002

Page 367: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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'exécution du sous-programme externe indiqué :

• le sous-programme externe est exécuté une fois ;

• une fois le sous-programme externe exécuté, l'exécution logique revient au sous-programme contenant l'instruction JXR.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique ne sont pas affectés.

Conditions d'erreur :

Exécution : L'instruction JXR peut être synchrone ou asynchrone, suivant le type de la DLL. Le code de la DLL détermine aussi comment répondre à l'état de la scrutation, à l'état d'entrée de la ligne et à l'état de sortie de la ligne.

Pour de plus amples informations sur l'utilisation de l'instruction JXR et sur la création de sous-programmes externes, reportez-vous à Système SoftLogix5800 - Manuel utilisateur (publication 1789-UM002).

Un défaut majeur se produit si Type du défaut

Code du défaut

• une exception se produit dans la DLL du sous-programme externe

• la DLL n'a pas pu être chargée• le point d'entrée n'a pas été trouvé dans la DLL

4 88

Publication 1756-RM003F-FR-P - Mai 2002

Page 368: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

10-16 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)

Fin temporaire (TND) L'instruction TND agit comme limite.

Opérandes :

Opérandes de logique à relais

aucune

Texte structuré

aucune

Vous devez entrer les parenthèses () après le mnémonique de l'instruction, bien qu'il n'y ait pas d'opérandes.

Description : Lorsqu'elle est activée, l'instruction TND laisse l'automate exécuter la logique jusqu'à cette instruction.

Lorsqu'elle est activée, l'instruction TND agit comme fin du sous-programme. Lorsque l'automate scrute une instruction TND, il va jusqu'à la fin du sous-programme en cours. Si l'instruction TND est dans un sous-programme, la commande revient au sous-programme appelant. Si l'instruction TND est dans un sous-programme principal, la commande revient au programme suivant dans la tâche en cours.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Exemple : Vous pouvez utiliser l'instruction TND lors d'un débogage ou d'un dépannage pour exécuter la logique jusqu'à un certain point. Déplacez l'instruction TND progressivement dans la logique pour le débogage de chaque nouvelle section.

Lorsque l'instruction TND est activée, l'automate arrête de scruter le sous-programme en cours.

TND();

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l 'exécution de l'instruction Le sous-programme en cours s'arrête. Le sous-programme en cours s'arrête.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 369: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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();

Publication 1756-RM003F-FR-P - Mai 2002

Page 370: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

10-18 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)

Relais de contrôle maître (MCR)

L'instruction MCR, utilisée par paire, crée une zone programme qui peut désactiver toutes les lignes dans les instructions MCR.

Opérandes :

Logique à relais

aucune

Description : Lorsque la zone MCR est activée, les lignes de cette zone sont scrutées à la recherche d'états vrai ou faux normaux. Lorsqu'elle est désactivée, l'automate scrute toujours les lignes de la zone MCR, mais la durée de scrutation est réduite parce que les sorties non rémanentes de la zone sont désactivées. L'état d'entrée de la ligne est faux pour toutes les instructions dans la zone MCR désactivée.

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 contrôle maître câblé offrant la capacité d'arrêt d'urgence. Vous devez quand même installer un relais de contrôle maître câblé pour pouvoir couper l'alimentation des E/S en cas d'urgence.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

ATTENTION

!Ne superposez pas et n'imbriquez pas les zones MCR. Chaque zone MCR doit être séparée et complète. Une superposition ou une imbrication peut entraîner un fonctionnement imprévisible de la machine, risquant de détériorer l'équipement et/ou d'occasionner des blessures.

Placez les opérations critiques en dehors de la zone MCR. Si vous commencez des instructions telles que des temporisateurs dans une zone MCR, l'exécution de l'instruction s'arrête lorsque la zone est désactivée et le temporisateur est effacé.

Publication 1756-RM003F-FR-P - Mai 2002

Page 371: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR) 10-19

Exécution :

Exemple : Lorsque la première instruction MCR est activée (input_1, input_2 et input_3 sont activées), l'automate exécute les lignes de la zone MCR (entre les deux instructions MCR) et active ou efface les sorties, selon l'état des entrées.

Lorsque la première instruction MCR est désactivée (input_1, input_2 et input_3 ne sont pas toutes activées), l'automate exécute les lignes de la zone MCR (entre les deux instructions MCR) et l'état d'entrée de la ligne passe à faux pour toutes les lignes de la zone MCR, quel que soit l'état des entrées.

Condition Action de la logique à relais

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.Les instructions de la zone sont scrutées, mais l'état de la ligne est faux et les sorties non rémanentes de la zone sont désactivées.

si l'état d'entrée de la ligne est vrai L'état de sortie de la ligne est réglé sur vrai.Les instructions de la zone sont scrutées normalement.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Publication 1756-RM003F-FR-P - Mai 2002

Page 372: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

10-20 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)

Désactivation de l'interruption utilisateur (UID) Activation d'interruption utilisateur (UIE)

Les instructions UID et UIE travaillent ensemble pour empêcher un petit nombre de lignes critiques d'être interrompues par d'autres tâches.

Opérandes :

Logique à relais

aucune

Texte structuré

aucune

Vous devez entrer les parenthèses () après le mnémonique de l'instruction, bien qu'il n'y ait pas d'opérandes.

Description : Lorsque l'état d'entrée de la ligne est vrai :

• l'instruction UID empêche les tâches à priorité supérieure d'interrompre la tâche en cours, mais n'empêche pas l'exécution d'un sous-programme de gestion des défauts ou du gestionnaire des défauts de l'automate ;

• l'instruction UIE active d'autres tâches pour interrompre la tâche courante.

Pour empêcher une série de lignes d'être interrompues :

1. Réduisez au minimum le nombre de lignes qui ne doivent pas être interrompues. La désactivation des interruptions pendant une durée prolongée peut entraîner la perte de la communication.

2. Entrez une ligne et une instruction UID avant la première ligne qui ne doit pas être interrompue.

3. Entrez une ligne et une instruction UIE après la dernière ligne qui ne doit pas être interrompue.

4. Si nécessaire, vous pouvez imbriquer des instructions UID/UIE par paires.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

UID();

UIE();

Publication 1756-RM003F-FR-P - Mai 2002

Page 373: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR) 10-21

Exécution :

Exemple : Lorsqu'une erreur se produit (error_bit est activé), l'instruction FSC vérifie le code d'erreur par rapport à la liste des erreurs critiques. Si l'erreur est critique (error_check.FD est activé), un avertissement est généré. Les instructions UID et UIE empêchent les autres tâches d'interrompre la vérification d'erreur et l'avertissement.

Logique à relais

Texte structuré

UID();

<instructions>

UIE();

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction L'instruction UID empêche l'interruption par des tâches de priorité plus élevée.L'instruction UIE permet l'interruption par des tâches de priorité plus élevée.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

UID

error_bit

ENDNER

File Search/CompareControl error_checkLength 10Position 8Mode ALLExpression error_code=error_list[error_check.POS]

FSC

error_check.FD

alarm

UIE

Publication 1756-RM003F-FR-P - Mai 2002

Page 374: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

10-22 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)

Toujours faux (AFI) L'instruction AFI règle son état de sortie de ligne sur faux.

Opérandes :

Logique à relais

aucune

Description : L'instruction AFI règle son état de sortie de ligne sur faux.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Exemple : Utilisez l'instruction AFI pour désactiver temporairement une ligne lorsque vous déboguez un programme.

Lorsqu'elle est activée, l'instruction AFI désactive toutes les instructions sur cette ligne.

Condition Action de la logique à relais

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Publication 1756-RM003F-FR-P - Mai 2002

Page 375: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR) 10-23

Pas d'opération (NOP) L'instruction NOP fonctionne comme marqueur.

Opérandes :

Logique à relais

aucune

Description : Vous pouvez placer l'instruction NOP n'importe où sur une ligne. Activée ou désactivée, cette instruction n'effectue aucune opération.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

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.

Condition Action de la logique à relais

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Publication 1756-RM003F-FR-P - Mai 2002

Page 376: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

10-24 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)

Fin de transition (EOT) L'instruction EOT renvoie un état booléen à une transition SFC.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction EOT en logique à relais.

Description : Du fait que l'instruction EOT renvoie un état booléen, plusieurs sous-programmes SFC peuvent partager le sous-programme contenant l'instruction EOT. Si le sous-programme appelant n'est pas une transition, l'instruction EOT agit comme une instruction TND (voir page 10-16).

L'exécution de l'instruction EOT dans un automate Logix diffère de celle d'un automate PLC-5. Dans un automate PLC-5, l'instruction EOT n'a pas de paramètres : elle renvoie la condition de ligne comme son état. Dans un automate Logix, le paramètre de retour renvoie l'état de la transition puisque la condition de ligne n'est pas disponible dans tous les langages de programmation Logix.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Opérande Type Format Description

bit de données

BOOL point état de la transition(0=exécution, 1=terminé)

EOT(data_bit);

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux

L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai

L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction

L'instruction renvoie la valeur du bit de données au sous-programme appelant.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 377: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

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 activés, 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;

Publication 1756-RM003F-FR-P - Mai 2002

Page 378: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

10-26 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)

Pause SFC (SFP) L'instruction SFP arrête temporairement un sous-programme SFC.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction SFP en logique à relais.

Description : L'instruction SFP vous permet d'arrêter temporairement l'exécution d'un sous-programme SFC. Si un sous-programme SFC est en pause, utilisez de nouveau l'instruction SFP pour reprendre l'exécution du sous-programme.

Utilisez également l'instruction SFP pour reprendre l'exécution du sous-programme SFC après avoir utilisé une instruction SFR (voir page 10-28) pour réinitialiser un sous-programme SFC.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur :

Exécution :

Opérande Type Format Description

Nom de SFCRoutine

ROUTINE nom Arrêt temporaire du sous-programme SFC

TargetState DINT immédiatpoint

sélectionnez une solution :exécution (ou entrez 0)pause (ou entrez 1)

SFP(SFCRoutineName,TargetState);

Un défaut majeur se produit si Type du défaut Code du défaut

le sous-programme n'est pas un sous-programme SFC

4 85

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction L'instruction arrête temporairement ou reprend l'exécution du sous-programme SFC indiqué.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 379: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR) 10-27

Exemple : Si sfc_en_p est activé, le sous-programme SFC appelé normal est temporairement arrêté. Le sous-programme SFC reprend lorsque sfc_en_e est activé.

Logique à relais

Texte structuré

Arrêt temporaire dusous-programme SFC :

IF (sfp_en_p) THEN

SFP(normal,paused);

sfp_en_p := 0;

END_IF;

Reprise de l'exécution dusous-programme SFC :

IF (sfp_en_e) THEN

SFP(normal,executing);

sfp_en_e := 0;

END_IF;

Arrêt temporaire du sous-programme SFC.

Reprise de l'exécution du sous-programme SFC.

Publication 1756-RM003F-FR-P - Mai 2002

Page 380: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

10-28 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)

Positionnement SFC (SFR) L'instruction SFR reprend l'exécution d'un sous-programme SFC à une étape particulière.

Opérandes :

Opérandes de logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction SFR en logique à relais.

Description : Lorsque l'instruction SFR est activée, le sous-programme SFC est exécuté à partir d'une étape particulière.

Si l'étape est 0, le diagramme reprend depuis le début.

L'exécution de l'instruction SFR dans un automate Logix diffère de celle d'un automate PLC-5. Dans l'automate PLC-5, l'instruction SFR est exécutée lorsque la condition de ligne est vrai. Après le postionnement, le sous-programme SFC reste en pause jusqu'à ce que l'état de la ligne contenant l'instruction SFR soit faux. Ceci permet de différer l'exécution suivant un positionnement. Cette fonction de pause/reprise de l'instruction SFR du PLC-5 a été découplée de la condition de ligne et placée dans l'instruction SFP.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur :

Opérande Type Format Description

Nom de SFCRoutine ROUTINE nom positionnement du sous-programme SFC

Nom de l'étape SFC_STEP point étape à laquelle l'exécution doit reprendre

SFR(SFCRoutineName,StepName);

Un défaut majeur se produit si Type du défaut Code du défaut

le sous-programme n'est pas un sous-programme SFC

4 85

l'étape indiquée n'existe pas dans le sous-programme SFC

4 89

Publication 1756-RM003F-FR-P - Mai 2002

Page 381: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR) 10-29

Exécution :

Exemple : Si une condition particulière se produit (shutdown est activé), l'instruction redémarre le sous-programme SFC à l'étape initialize.

Logique à relais

Texte structuré

IF shutdown THEN

SFR(mySFC,initialize);

END_IF;

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction L'instruction réinitialise le sous-programme SFC indiqué.

L'instruction réinitialise le sous-programme SFC indiqué.

pendant la post-scrutation Aucune. Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 382: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

10-30 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR)

Notes :

Publication 1756-RM003F-FR-P - Mai 2002

Page 383: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Chapitre 11

Instruction pour/d'interruption(FOR, FOR...DO, BRK, EXIT, RET)

Introduction Utilisez l'instruction FOR pour appeler un sous-programme de façon répétée. Utilisez l'instruction BRK pour interrompre l'exécution d'un sous-programme.

Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page

exécuter un sous-programme de façon répétée FORFOR...DO(1)

logique à relaistexte structuré

11-2

terminer l'exécution répétitive d'un sous-programme

BRKEXIT(1)

logique à relaistexte structuré

11-4

revenir à l'instruction FOR RET logique à relais 11-5

(1) Texte structuré uniquement.

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 384: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

11-2 Instruction pour/d'interruption (FOR, FOR...DO, BRK, EXIT, RET)

Pour (FOR) L'instruction FOR exécute un sous-programme de façon répétée.

Opérandes :

Logique à relais

Texte structuré

Utilisez l'instruction de test FOR...DO. Pour des informations sur les instructions de test en texte structuré, reportez-vous à l'Annexe C.

Description :

Lorsqu'elle est activée, l'instruction FOR exécute le sous-programme de façon répétée jusqu'à ce que la valeur de l'index dépasse la valeur terminale. Cette instruction ne transfère pas de paramètres dans le sous-programme.

Chaque fois que l'instruction FOR exécute le sous-programme, elle augmente l'index de la taille de l'incrément.

Veillez à ne pas faire trop de boucles dans une seule scrutation. Si les répétitions sont trop nombreuses, le délai d'attente du chien de garde risque d'être dépassé, ce qui entraîne un défaut majeur.

Opérande Type Format Description

Nom du sous-programme

ROUTINE nom du sous-programme

sous-programme à exécuter

Index DINT point compte le nombre d'exécutions du sous-programme

Valeur initiale SINTINTDINT

immédiatpoint

valeur à laquelle l'index commence

Valeur terminale SINTINTDINT

immédiatpoint

valeur à laquelle l'exécution du sous-programme s'arrête

Taille de l'incrément

SINTINTDINT

immédiatpoint

quantité à ajouter à l'index chaque fois que l'instruction FOR exécute le sous-programme

FOR count:= initial_value TOfinal_value BY increment DO

<instruction>;

END_FOR;

IMPORTANT N'utilisez pas d'instruction FOR pour appeler (exécuter) le sous-programme principal.

• Vous pouvez insérer 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 insérez une instruction RET dans ce sous-programme principal, un défaut majeur se produit (type 4, code 31).

Publication 1756-RM003F-FR-P - Mai 2002

Page 385: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instruction pour/d'interruption (FOR, FOR...DO, BRK, EXIT, RET) 11-3

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur :

Exécution :

Exemple : Lorsqu'elle est activée, l'instruction FOR exécute routine_2 de façon répétée et augmente value_2 chaque fois de 1. Lorsque value_2 est > à 10 ou qu'une instruction BRK est activée, l'instruction FOR n'exécute plus routine_2.

Un défaut majeur se produit si Type du défaut Code du défaut

Le sous-programme principal contient une instruction RET

4 31

Condition Action de la logique à relais

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.L'automate exécute le sous-programme une fois.S'il y a des instructions FOR récurrentes dans le même sous-programme, il est pré-scruté la première fois uniquement. S'il y a de multiples instructions FOR (non récurrentes) dans le même sous-programme, il est pré-scruté à chaque fois.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

index ≥ valeur terminalenonoui

exécute le sous-programmeindex =(index + step_size)

si l'état d'entrée de la ligne est

fin

index = initial_value

l'état de sortie de la ligne est réglé sur vrai

taille de l'incrément < 0non

oui

index ≤ valeur terminalenon

oui

fin de goto

finfin de goto

Publication 1756-RM003F-FR-P - Mai 2002

Page 386: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

11-4 Instruction pour/d'interruption (FOR, FOR...DO, BRK, EXIT, RET)

Interruption (BRK) L'instruction BRK interrompt l'exécution d'un sous-programme appelé par l'instruction FOR.

Opérandes :

Logique à relais

aucune

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é ».

Description : Lorsqu'elle est activée, l'instruction BRK quitte le sous-programme et renvoie l'automate à l'instruction qui suit l'instruction FOR.

S'il y a des instructions FOR imbriquées, l'instruction BRK renvoie la commande à l'instruction FOR la plus profonde.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Exemple : Lorsqu'elle est activée, l'instruction BRK arrête l'exécution du sous-programme en cours et retourne à l'instruction qui suit l'instruction FOR.

EXIT;

Condition Action de la logique à relais

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'état de sortie de la ligne est réglé sur vrai.L'exécution revient à l'instruction qui suit l'instruction FOR.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Publication 1756-RM003F-FR-P - Mai 2002

Page 387: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instruction pour/d'interruption (FOR, FOR...DO, BRK, EXIT, RET) 11-5

Retour (RET) L'instruction RET retourne à l'instruction FOR appelante.

Opérandes :

Logique à relais

aucune

Description :

Lorsqu'elle est activée, l'instruction RET retourne à l'instruction FOR. L'instruction FOR augmente la valeur de l'index de la taille de l'incrément et exécute le sous-programme de nouveau. Si la valeur de l'index est supérieure à la valeur terminale, l'instruction FOR est terminée et l'exécution passe à l'instruction qui suit l'instruction FOR.

L'instruction FOR n'utilise pas de paramètres. Elle ignore tout paramètre que vous entrez dans une instruction RET.

Vous pouvez également utiliser une instruction TND pour terminer l'exécution du sous-programme.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur :

Exécution :

Exemple : L'instruction FOR exécute routine_2 de façon répétée et augmente value_2 chaque fois de 1. Lorsque value_2 est > à 10 ou qu'une instruction BRK est activée, l'instruction FOR n'exécute plus routine_2.

IMPORTANT N'insérez pas d'instruction RET dans le sous-programme principal. Si vous insérez une instruction RET dans le sous-programme principal, un défaut majeur se produit (type 4, code 31).

Un défaut majeur se produit si Type du défaut Code du défaut

Le sous-programme principal contient une instruction RET

4 31

Condition Action de la logique à relais

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai Renvoie les paramètres indiqués au sous-programme appelant.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Publication 1756-RM003F-FR-P - Mai 2002

Page 388: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

11-6 Instruction pour/d'interruption (FOR, FOR...DO, BRK, EXIT, RET)

L'instruction RET retourne à l'instruction FOR appelante. L'instruction FOR exécute de nouveau le sous-programme et augmente la valeur de l'index de la taille de l'incrément ou, si la valeur de l'index est supérieure à la valeur terminale, l'instruction FOR est terminée et l'exécution passe à l'instruction qui suit l'instruction FOR.

sous-programme appelant sous-programme secondaire

Publication 1756-RM003F-FR-P - Mai 2002

Page 389: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Chapitre 12

Instructions spéciales(FBC, DDT, DTR, PID)

Introduction Les instructions spéciales effectuent des opérations propres à des applications.

Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page

comparer des données à une référence correcte connue et enregistrer toute différence

FBC logique à relais 12-2

comparer des données à une référence correcte connue, enregistrer toute différence et mettre la référence à jour pour qu'elle corresponde à la source

DDT logique à relais 12-9

passer les données de la source par un masque et comparer le résultat aux données de référence, puis écrire la source dans la référence pour la comparaison suivante

DTR logique à relais 12-16

commander une boucle PID PID logique à relaistexte structuré

12-19

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 390: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

12-2 Instructions spéciales (FBC, DDT, DTR, PID)

Comparaison des bits de fichier (FBC)

L'instruction FBC compare les bits d'un tableau Source avec ceux d'un tableau Référence.

Opérandes :

Logique à relais

Opérande Type Format Description

Source DINT point de tableau

tableau à comparer à la référencen'utilisez pas CONTROL.POS dans l'indice

Référence DINT point de tableau

tableau à comparer à la sourcen'utilisez pas CONTROL.POS dans l'indice

Résultat DINT point de tableau

tableau pour le stockage du résultatn'utilisez pas CONTROL.POS dans l'indice

Contrôle de comparaison

CONTROL structure structure de contrôle pour la comparaison

Longueur DINT immédiat nombre de bits à comparer

Position DINT immédiat position en cours dans la sourcela valeur initiale est généralement 0

Contrôle de résultat

CONTROL structure structure de contrôle du résultat

Longueur DINT immédiat nombre d'emplacements de stockage dans le résultat

Position DINT immédiat position en cours dans le résultatla valeur initiale est généralement 0

ATTENTION

!Utilisez des points différents pour la structure de contrôle de comparaison et la structure de contrôle de résultat. L'utilisation du même point pour les deux peut entraîner un fonctionnement imprévisible risquant de détériorer l'équipement et/ou de provoquer des blessures.

Publication 1756-RM003F-FR-P - Mai 2002

Page 391: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions spéciales (FBC, DDT, DTR, PID) 12-3

Structure COMPARE

Structure RESULT

Description : Lorsqu'elle est activée, l'instruction FBC compare les bits du tableau Source avec ceux du tableau Référence et enregistre le nombre de bits de chaque différence dans le tableau Résultat.

L'instruction FBC fonctionne sur de la mémoire contiguë.

La différence entre les instructions DDT et FBC est la suivante : chaque fois que l'instruction DDT trouve une différence, elle modifie le bit de référence afin qu'il corresponde au bit source. L'instruction FBC ne change pas le bit de référence.

Sélection du mode de recherche

Indicateurs d'état arithmétique : non affectés

Mnémonique Type de données Description

.EN BOOL Le bit d'activation indique que l'instruction FBC est activée.

.DN BOOL Le bit de fin est activé lorsque l'instruction FBC compare le dernier bit dans les tableaux Source et Référence.

.FD BOOL Le bit trouvé est activé chaque fois que l'instruction FBC enregistre une différence (opération par opération) ou après l'enregistrement de toutes les différences (opération tout en une scrutation).

.IN BOOL Le bit d'inhibition indique le mode de recherche FBC.0 = mode tout1 = mode une différence à la fois

.ER BOOL Le bit d'erreur est activé si la comparaison .POS < 0, la comparaison .LEN < 0, le résultat .POS < 0 ou le résultat .LEN < 0. L'instruction arrête l'exécution jusqu'à ce que le programme efface le bit .ER.

.LEN DINT La valeur de longueur indique le nombre de bits à comparer.

.POS DINT La valeur de position indique le bit en cours.

Mnémonique Type de données Description

.DN BOOL Le bit de fin est activé lorsque le tableau Résultat est plein.

.LEN DINT La valeur de longueur indique le nombre d'emplacements de stockage dans le tableau Résultat.

.POS DINT La valeur de position indique la position en cours dans le tableau Résultat.

Pour détecter Sélectionnez ce mode

Une différence à la fois Activez le bit .IN dans la structure de contrôle de comparaison.Chaque fois que l'état d'entrée de la ligne passe de faux à vrai, l'instruction FBC recherche la différence suivante entre les tableaux Source et Référence. Lorsqu'elle trouve une différence, l'instruction active le bit .FD, enregistre la position de la différence et arrête l'exécution.

Toutes les différences Effacez le bit .IN dans la structure de contrôle de comparaison.Chaque fois que l'état d'entrée de la ligne passe de faux à vrai, l'instruction FSC recherche toutes les différences entre les tableaux Source et Référence.

Publication 1756-RM003F-FR-P - Mai 2002

Page 392: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

12-4 Instructions spéciales (FBC, DDT, DTR, PID)

Conditions d'erreur :

Exécution :

Un défaut majeur se produit si Type du défaut Code du défaut

Result.POS > taille du tableau de résultat

4 20

Condition Action de la logique à relais

pendant la pré-scrutation

fin

le bit compare.EN est effacéle bit compare.FD est effacé

l'état de sortie de la ligne est réglé sur faux

examine le bit compare.DN

compare.DN = 0

compare.DN = 1

le bit compare.DN est effacéla valeur compare.POS est

effacéele bit result.DN est effacé

la valeur result.POS est effacée

Publication 1756-RM003F-FR-P - Mai 2002

Page 393: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions spéciales (FBC, DDT, DTR, PID) 12-5

Condition Action de la logique à relais

si l'état d'entrée de la ligne est

fin

le bit compare.EN est effacéle bit compare.FD est effacé

l'état de sortie de la ligne est réglé sur faux

examine le bit compare.DN

compare.DN = 0

compare.DN = 1

le bit compare.DN est effacéla valeur compare.POS est

effacéele bit result.DN est effacé

la valeur result.POS est effacée

Publication 1756-RM003F-FR-P - Mai 2002

Page 394: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

12-6 Instructions spéciales (FBC, DDT, DTR, PID)

Condition Action de la logique à relais

examine le bit compare.EN

compare.EN = 1

compare.EN = 0

si l'état d'entrée de la ligne est

examine le bit compare.DN

compare.DN = 1

compare.DN = 0

le bit compare.EN est activé

le bit compare.ER est effacéle bit compare.FD est effacé compare.LEN ≤ 0

oui

non

compare.POS < 0oui

non le bit compare.ER est activé

comparaison

page 12-7fin

l'état de sortie de la ligne est vrai

sortie instruction

goto

exit

sortie instruction

goto

sortie instruction

goto

Publication 1756-RM003F-FR-P - Mai 2002

Page 395: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions spéciales (FBC, DDT, DTR, PID) 12-7

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action de la logique à relais

compare.POS ≥ compare.LEN

oui

non

compare.POS = compare.LENle bit compare.DN est activé

comparaison

sortie instruction

goto

source[compare.POS]= référence[compare.POS]

non

oui

examine le bit result.DN

result.DN = 1

result.DN = 0

compare.POS =compare.POS + 1

le bit compare.FD est activé

le bit result.DN est effacéla valeur result.POS est

effacée

result.POS < 0oui

non

result.LEN ≤ 0oui

non le bit compare.ER est activé

sortie instruction

goto

oui

non

défaut majeur

result[result.POS] = compare.POSresult.POS = result.POS + 1

result.POS > result.LEN

non

oui

le bit result.DN est activé

page 12-6

page 12-6

Result.POS > taille du tableau de résultat

Publication 1756-RM003F-FR-P - Mai 2002

Page 396: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

12-8 Instructions spéciales (FBC, DDT, DTR, PID)

Exemple : Lorsqu'elle est activée, l'instruction FBC compare la source array_dint1 à la référence array_dint2 et stocke les positions de toutes les différences dans le résultat array_dint3.

source array_dint1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

référence array_dint2

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0

résultat array_dint3 5 3

Publication 1756-RM003F-FR-P - Mai 2002

Page 397: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions spéciales (FBC, DDT, DTR, PID) 12-9

Détection par diagnostic (DDT)

L'instruction DDT compare les bits d'un tableau Source avec les bits d'un tableau Référence pour déterminer les changements d'état.

Opérandes :

Logique à relais

Opérande Type Format Description

Source DINT point de tableau

tableau à comparer à la référencen'utilisez pas CONTROL.POS dans l'indice

Référence DINT point de tableau

tableau à comparer à la sourcen'utilisez pas CONTROL.POS dans l'indice

Résultat DINT point de tableau

tableau pour le stockage des résultatsn'utilisez pas CONTROL.POS dans l'indice

Contrôle de comparaison

CONTROL structure structure de contrôle pour la comparaison

Longueur DINT immédiat nombre de bits à comparer

Position DINT immédiat position en cours dans la sourcela valeur initiale est généralement 0

Contrôle de résultat

CONTROL structure structure de contrôle du résultat

Longueur DINT immédiat nombre d'emplacements de stockage dans le résultat

Position DINT immédiat position en cours dans le résultatla valeur initiale est généralement 0

ATTENTION

!Utilisez des points différents pour la structure de contrôle de comparaison et la structure de contrôle de résultat. L'utilisation du même point pour les deux peut entraîner un fonctionnement imprévisible risquant de détériorer l'équipement et/ou de provoquer des blessures.

Publication 1756-RM003F-FR-P - Mai 2002

Page 398: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

12-10 Instructions spéciales (FBC, DDT, DTR, PID)

Structure COMPARE

Structure RESULT

Description : Lorsqu'elle est activée, l'instruction DDT compare les bits du tableau Source avec ceux du tableau Référence, enregistre le numéro de chaque différence dans le tableau Résultat et modifie la valeur du bit de Référence afin qu'il corresponde à la valeur du bit Source correspondant.

L'instruction DDT fonctionne sur de la mémoire contiguë.

La différence entre les instructions DDT et FBC est la suivante : chaque fois que l'instruction DDT trouve une différence, elle modifie le bit de référence afin qu'il corresponde au bit source. L'instruction FBC ne change pas le bit de référence.

Mnémonique Type de données

Description

.EN BOOL Le bit d'activation indique que l'instruction DDT est activée.

.DN BOOL Le bit de fin est activé lorsque l'instruction DDT compare le dernier bit dans les tableaux Source et Référence.

.FD BOOL Le bit trouvé est activé chaque fois que l'instruction DDT enregistre une différence (opération par opération) ou après l'enregistrement de toutes les différences (opération tout en une scrutation).

.IN BOOL Le bit d'inhibition indique le mode de recherche DDT.0 = mode tout1 = mode une différence à la fois

.ER BOOL Le bit d'erreur est activé si la comparaison .POS < 0, la comparaison .LEN < 0, le résultat .POS < 0 ou le résultat .LEN < 0. L'instruction arrête l'exécution jusqu'à ce que le programme efface le bit .ER.

.LEN DINT La valeur de longueur indique le nombre de bits à comparer.

.POS DINT La valeur de position indique le bit en cours.

Mnémonique Type de données

Description

.DN BOOL Le bit de fin est activé lorsque le tableau Résultat est plein.

.LEN DINT La valeur de longueur indique le nombre d'emplacements de stockage dans le tableau Résultat.

.POS DINT La valeur de position indique la position en cours dans le tableau Résultat.

Publication 1756-RM003F-FR-P - Mai 2002

Page 399: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions spéciales (FBC, DDT, DTR, PID) 12-11

Sélection du mode de recherche

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur :

Exécution :

Pour détecter Sélectionnez ce mode

Une différence à la fois Activez le bit .IN dans la structure de contrôle de comparaison.Chaque fois que l'état d'entrée de la ligne passe de faux à vrai, l'instruction DDT recherche la différence suivante entre les tableaux Source et Référence. Lorsqu'elle trouve une différence, l'instruction active le bit .FD, enregistre la position de la différence et arrête l'exécution.

Toutes les différences Effacez le bit .IN dans la structure de contrôle de comparaison.Chaque fois que l'état d'entrée de la ligne passe de faux à vrai, l'instruction DDT recherche toutes les différences entre les tableaux Source et Référence.

Un défaut majeur se produit si Type du défaut Code du défaut

Result.POS > taille du tableau de résultat

4 20

Condition Action de la logique à relais

pendant la pré-scrutation

fin

le bit compare.EN est effacéle bit compare.FD est effacé

l'état de sortie de la ligne est réglé sur faux

examine le bit compare.DN

compare.DN = 0

compare.DN = 1

le bit compare.DN est effacéla valeur compare.POS est

effacéele bit result.DN est effacé

la valeur result.POS est effacée

Publication 1756-RM003F-FR-P - Mai 2002

Page 400: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

12-12 Instructions spéciales (FBC, DDT, DTR, PID)

Condition Action de la logique à relais

si l'état d'entrée de la ligne est

fin

le bit compare.EN est effacéle bit compare.FD est effacé

l'état de sortie de la ligne est réglé sur faux

examine le bit compare.DN

compare.DN = 0

compare.DN = 1

le bit compare.DN est effacéla valeur compare.POS est

effacéele bit result.DN est effacé

la valeur result.POS est effacée

Publication 1756-RM003F-FR-P - Mai 2002

Page 401: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions spéciales (FBC, DDT, DTR, PID) 12-13

Condition Action de la logique à relais

examine le bit compare.EN

compare.EN = 1

compare.EN = 0

si l'état d'entrée de la ligne est

examine le bit compare.DN

le bit compare.DN = 1

le bit compare.DN = 0

le bit compare.EN est activé

le bit compare.ER est effacéle bit compare.FD est effacé compare.LEN ≤ 0

oui

non

compare.POS < 0oui

non le bit compare.ER est activé

comparaison

page 12-14fin

l'état de sortie de la ligne est vrai

sortie instruction

goto

exit

sortie instruction

goto

sortie instruction

goto

Publication 1756-RM003F-FR-P - Mai 2002

Page 402: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

12-14 Instructions spéciales (FBC, DDT, DTR, PID)

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action de la logique à relais

compare.POS ≥ compare.LEN

oui

non

compare.POS = compare.LENle bit compare.DN est activé

comparaison

sortie instruction

goto

source[compare.POS]= référence[compare.POS]

non

oui

examine le bit result.DN

result.DN = 1

result.DN = 0

compare.POS =compare.POS + 1

le bit compare.FD est activé

référence[compare.POS] = source[compare.POS]

le bit result.DN est effacéla valeur result.POS est

effacée

result.POS < 0oui

non

result.LEN ≤ 0oui

non le bit compare.ER est activé

sortie instruction

goto

oui

non

défaut majeur

result[result.POS] = compare.POSresult.POS = result.POS + 1

result.POS ≥ result.LEN

non

oui

le bit result.DN est activé

page 12-13

page 12-6

Result.POS > taille du tableau de résultat

Publication 1756-RM003F-FR-P - Mai 2002

Page 403: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions spéciales (FBC, DDT, DTR, PID) 12-15

Exemple : Lorsqu'elle est activée, l'instruction DDT compare la source array_dint1 à la référence array_dint2 et stocke les positions de toutes les différences dans le résultat array_dint3. L'automate change également les bits différents dans la référence array_dint2 afin qu'ils correspondent à la source array_dint1.

sourcearray_dint1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

référence (avant comparaison)array_dint2

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0

résultatarray_dint3

5 3

référence (après comparaison)array_dint2

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Publication 1756-RM003F-FR-P - Mai 2002

Page 404: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

12-16 Instructions spéciales (FBC, DDT, DTR, PID)

Transition de données (DTR)

L'instruction DTR passe la valeur Source par un masque et compare le résultat à la valeur Référence.

Opérandes :

Logique à relais

Description : L'instruction DTR passe la valeur Source par un masque et compare le résultat à la valeur Référence. Elle écrit également la valeur Source masquée dans la valeur Référence pour la comparaison suivante. La Source reste inchangée.

Un « 1 » dans le masque signifie que le bit de données est passé. Un « 0 » dans le masque signifie que le bit de données est bloqué.

Lorsque la source masquée est différente de la référence, l'état de sortie de la ligne devient vrai pendant une scrutation. Lorsque la source masquée est identique à la Référence, l'état de sortie de la ligne est faux.

Entrée d'une valeur de masque immédiate

Lorsque vous entrez un masque, le logiciel de programmation passe par défaut à des valeurs décimales. Si vous voulez entrer un masque à l'aide d'un autre format, faites précéder la valeur du préfixe correct.

Opérande Type Format Description

Source DINT immédiatpoint

tableau à comparer à la référence

Masque DINT immédiatpoint

bits à bloquer ou à passer

Référence DINT point tableau à comparer à la source

ATTENTION

!La programmation en ligne avec cette instruction peut être risquée. Si la valeur Référence est différente de la valeur Source, l'état de sortie de la ligne passe à vrai. Faites attention si vous insérez cette instruction lorsque le processeur est en mode Exécution (Run) ou Exécution à distance (Remote Run).

Préfixe Description

16# hexadécimalpar exemple : 16#0F0F

8# octalpar exemple : 8#16

2# binairepar exemple : 2#00110011

Publication 1756-RM003F-FR-P - Mai 2002

Page 405: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions spéciales (FBC, DDT, DTR, PID) 12-17

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Condition Action de la logique à relais

pendant la pré-scrutation Référence = Source ET Masque.L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux Référence = Source ET Masque.L'état de sortie de la ligne est réglé sur faux.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est

fin

source masquée = référence

non

oui

la référence est égale à la source masquéel'état de sortie de la ligne est réglé sur vrai

l'état de sortie de la ligne est réglé sur faux

Publication 1756-RM003F-FR-P - Mai 2002

Page 406: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

12-18 Instructions spéciales (FBC, DDT, DTR, PID)

Exemple : Lorsqu'elle est activée, l'instruction DTR masque value_1. S'il y a une différence entre les deux valeurs, l'état de sortie de la ligne est réglé sur vrai.

Un 0 dans un masque ne change pas le bit.

13385

La ligne reste sur faux tant que la valeur d'entrée ne change pas.

La ligne reste sur faux pendant une scrutation lorsqu'un changement est détecté.

0000111111111111 0000111111111111

1 8 3 1 8 7

masque = 0FFF

1 8 7

Sourcevalue_1

référencevalue_2

1 8 3

1 8 3

1 8 3

scrutation en cours

scrutation précédente

scrutation précédente

scrutation en cours

exemple 1 exemple 2

97

0

0

0

0

Publication 1756-RM003F-FR-P - Mai 2002

Page 407: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions spéciales (FBC, DDT, DTR, PID) 12-19

Proportionnel, intégral et dérivé (PID)

L'instruction PID commande une variable de procédé, telle que débit, pression, température ou niveau.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction PID en logique à relais. Indiquez cependant le point de consigne, la variable de procédé et le % de sortie en accédant aux membres .SP, .PV et .OUT de la structure PID, plutôt qu'en incluant des valeurs dans la liste des opérandes.

Opérande Type Format Description

PID PID structure structure PID

Variable de procédé

SINTINTDINTREAL

point valeur que vous voulez commander

Elément « Tieback »

SINTINTDINTREAL

immédiatpoint

(facultatif) sortie d'une station manuelle/auto qui contourne la sortie de l'automateEntrez 0 si vous ne voulez pas utiliser ce paramètre.

Variable de contrôle

SINTINTDINTREAL

point valeur qui va vers le dispositif de commande final (vanne, clapet, etc.)Si vous utilisez la zone morte, la variable de contrôle doit être REAL ou elle sera forcée à 0 lorsque l'erreur sera dans la zone morte.

Boucle maître PID

PID structure (facultatif) point PID pour le PID maîtreSi vous effectuez une commande en cascade et si ce PID est une boucle esclave, entrez le nom du PID maître.Entrez 0 si vous ne voulez pas utiliser ce paramètre.

Bit de maintien

BOOL point (en option) état en cours du bit de maintien d'un canal de sorties analogiques 1756 pour accepter le redémarrage sans à-coupsEntrez 0 si vous ne voulez pas utiliser ce paramètre.

Valeur de maintien

SINTINTDINTREAL

point (facultatif) valeur de retour de données d'un canal de sorties analogiques 1756 pour accepter le redémarrage sans à coupsEntrez 0 si vous ne voulez pas utiliser ce paramètre.

Point de consigne

affichage de la valeur en cours du point de consigne

Variable de procédé

affichage de la valeur en cours de la variable de procédé mise à l'échelle

% de sortie affichage de la valeur du pourcentage de sortie en cours

PID(PID,ProcessVariable,Tieback,ControlVariable,PIDMasterLoop,InholdBit,InHoldValue);

Publication 1756-RM003F-FR-P - Mai 2002

Page 408: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

12-20 Instructions spéciales (FBC, DDT, DTR, PID)

Structure PID

Mnémonique Type de données

Description

.CTL DINT Le membre .CTL permet l'accès aux membres d'état (bits) par un mot de 32 bits. L'instruction PID active les bits 07 à 15.

Ce bit est le membre

31 .EN

30 .CT

29 .CL

28 .PVT

27 .DOE

26 .SWM

25 .CA

24 .MO

23 .PE

22 .NDF

21 .NOBC

20 .NOZC

Ce bit est le membre suivant, activé par l'instruction PID

15 .INI

14 .SPOR

13 .OLL

12 .OLH

11 .EWD

10 .DVNA

09 .DVPA

08 .PVLA

07 .PVHA

.SP REAL point de consigne

.KP REAL indépendant gain proportionnel (sans unité)

dépendant gain automate (sans unité)

.KI REAL indépendant gain intégral (1/s)

dépendant durée de réinitialisation (minutes par répétition)

.KD REAL indépendant gain dérivé (secondes)

dépendant fréquence (minutes)

.BIAS REAL anticipation de vitesse ou % de décalage

.MAXS REAL valeur maximum de mise à l'échelle en unités procédé

.MINS REAL valeur minimum de mise à l'échelle en unités procédé

.DB REAL unités procédé de zone morte

.SO REAL définition du % de sortie

.MAXO REAL limite de sortie maximale (% de sortie)

Publication 1756-RM003F-FR-P - Mai 2002

Page 409: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions spéciales (FBC, DDT, DTR, PID) 12-21

.MINO REAL limite de sortie minimale (% de sortie)

.UPD REAL temps de rafraîchissement de boucle (secondes)

.PV REAL valeur PV mise à l'échelle

.ERR REAL valeur d'erreur mise à l'échelle

.OUT REAL % de sortie

.PVH REAL limite d'alarme haute de la variable de procédé

.PVL REAL limite d'alarme basse de la variable de procédé

.DVP REAL limite d'alarme d'écart positif

.DVN REAL limite d'alarme d'écart négatif

.PVDB REAL zone morte d'alarme de la variable de procédé

.DVDB REAL zone morte d'alarme de déviation

.MAXI REAL valeur PV maximum (entrée non mise à l'échelle)

.MINI REAL valeur PV minimum (entrée non mise à l'échelle)

.TIE REAL valeur de tieback pour la commande manuelle

.MAXCV REAL valeur CV maximum (correspondant à 100 %)

.MINCV REAL valeur CV minimum (correspondant à 0 %)

.MINTIE REAL valeur de tieback minimum (correspondant à 100 %)

.MAXTIE REAL valeur de tieback maximum (correspondant à 0 %)

.DATA REAL[17] Le membre .DATA stocke :

Elément Description

.DATA[0] cumul intégral

.DATA[1] valeur temporaire de lissage dérivé

.DATA[2] valeur .PV précédente

.DATA[3] valeur .ERR précédente

.DATA[4] valeur .SP correcte précédente

.DATA[5] constante de mise à l'échelle en pourcentage

.DATA[6] constante de mise à l'échelle .PV

.DATA[7] constante de mise à l'échelle dérivée

.DATA[8] valeur .KP précédente

.DATA[9] valeur .KI précédente

.DATA[10] valeur .KD précédente

.DATA[11] gain dépendant .KP

.DATA[12] gain dépendant .KI

.DATA[13] gain dépendant .KD

.DATA[14] valeur .CV précédente

.DATA[15] constante .CV de non-mise à l'échelle

.DATA[16] constante de non-mise à l'échelle de tieback

.EN BOOL activé

.CT BOOL type de cascade (0=esclave ; 1=maître)

Mnémonique Type de données

Description

Publication 1756-RM003F-FR-P - Mai 2002

Page 410: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

12-22 Instructions spéciales (FBC, DDT, DTR, PID)

Description : L'instruction PID reçoit généralement la variable de procédé (PV) d'un module d'entrées analogiques et module une sortie de variable de contrôle (CV) sur un module de sorties analogiques, de façon à maintenir la variable de procédé au point de consigne désiré.

Le bit .EN indique l'état de l'exécution. Il est activé lorsque l'état d'entrée de la ligne passe de faux à vrai. Il est effacé lorsque l'état d'entrée de la ligne devient faux. L'instruction PID n'utilise pas de bit .DN. Elle exécute toutes les scrutations tant que l'état d'entrée de la ligne est vrai.

Indicateurs d'état arithmétique : non affectés

.CL BOOL boucle en cascade (0=non ; 1=oui)

.PVT BOOL suivi de variable de procédé (0=non ; 1=oui)

.DOE BOOL dérivé de (0=PV; 1=erreur)

.SWM BOOL mode logiciel manuel (0=non - auto ; 1=oui - logiciel manuel)

.CA BOOL Action de contrôle pour le calcul de l'erreur (0 signifie E=SP-PV ; 1 signifie E=PV-SP)

.MO BOOL mode station (0=automatique ; 1=manuel)

.PE BOOL équation PID (0=indépendant ; 1=dépendant)

.NDF BOOL pas de lissage de la dérivée(0=filtre de lissage de la dérivée activé ; 1=filtre de lissage de la dérivée désactivé)

.NOBC BOOL pas de calcul sur retour de décalage(0=calcul sur retour de décalage activé ; 1=calcul sur retour de décalage désactivé)

.NOZC BOOL pas de passage par zéro pour zone morte(0=la zone morte passe par zéro ; 1=la zone morte ne passe pas par zéro)

.INI BOOL PID initialisé (0=non ; 1=oui)

.SPOR BOOL consigne hors limites (0=non ; 1=oui)

.OLL BOOL CV inférieur à la limite de sortie minimum (0=non ;1=oui)

.OLH BOOL CV supérieur à la limite de sortie maximum (0=non ; 1=oui)

.EWD BOOL erreur dans les limites de la zone morte (0=non ; 1=oui)

.DVNA BOOL alarme de dérivation basse (0=non ; 1=oui)

.DVPA BOOL alarme de dérivation haute (0=non ; 1=oui)

.PVLA BOOL alarme PV basse (0=non ; 1=oui)

.PVHA BOOL alarme PV haute (0=non ; 1=oui)

Mnémonique Type de données

Description

état de la ligne

exécution de l'instruction PID

bit .EN

Publication 1756-RM003F-FR-P - Mai 2002

Page 411: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions spéciales (FBC, DDT, DTR, PID) 12-23

Conditions d'erreur :

Exécution :

Configuration d'une instruction PID

Après avoir entré l'instruction PID et indiqué sa structure, utilisez les onglets de configuration pour définir le fonctionnement de cette instruction.

IMPORTANT Dans le processeur PLC-5, ces défauts étaient des défauts majeurs.

Un défaut mineur se produit si Type du défaut Code du défaut

.UPD ≤ 0 4 35

point de consigne hors limites 4 36

Condition Action Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction L'instruction exécute la boucle PID. L'instruction exécute la boucle PID.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

Cliquez ici pour configurer l'instruction PID

Publication 1756-RM003F-FR-P - Mai 2002

Page 412: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

12-24 Instructions spéciales (FBC, DDT, DTR, PID)

Spécification des réglages

Sélectionnez l’onglet Réglage. Les modifications prennent effet dès que vous cliquez sur un autre champ, sur OK, sur Appliquer ou que vous appuyez sur Entrée.

Définition de la configuration

Sélectionnez l'onglet Configuration. Vous devez cliquer sur OK ou sur Appliquer pour que les modifications prennent effet.

Dans ce champ Indiquez

Setpoint (SP) (Point de consigne (SP)) Entrez une valeur de point de consigne (.SP).

Set output % (Définir % de sortie) Entrez un pourcentage de sortie (.SO).En mode logiciel manuel, cette valeur est utilisée pour la sortie.En mode auto, cette valeur affiche le % de sortie.

Output bias (Décalage de sortie) Entrez un pourcentage de décalage de sortie (.BIAS).

Proportional gain (Kp) (Gain proportionnel (Kp)) Entrez le gain proportionnel (.KP).Pour les gains indépendants, c'est le gain proportionnel (sans unité).Pour les gains dépendants, c'est le gain automate (sans unité).

Integral gain (Ki) (Gain intégral (Ki) Entrez le gain intégral (.KI).Pour les gains indépendants, c'est le gain intégral (1/sec).Pour les gains dépendants, c'est la durée de réinitialisation (minutes par répétition).

Derivative time (Kd) (Temps dérivé (Kd)) Entrez le gain dérivé (.KD).Pour les gains indépendants, c'est le gain dérivé (secondes).Pour les gains dépendants, c'est la fréquence (minutes).

Manual mode (Mode manuel) Sélectionnez manuel (.MO) ou logiciel manuel (.SWM).Si les deux sont sélectionnés, le mode manuel supplante le mode logiciel manuel.

Dans ce champ Indiquez

PID equation (Equation PID) Sélectionnez les gains indépendants ou dépendants (.PE).Utilisez les gains indépendants quand vous voulez que les trois gains (P, I et D) fonctionnent indépendamment. Utilisez les gains dépendants quand vous voulez un gain automate global qui affecte les trois termes (P, I et D).

Control action (Action de contrôle) Sélectionnez E=PV-SP ou E=SP-PV comme sens de calcul de l'erreur (.CA).

Derivative of (Dérivé de) Sélectionnez PV ou erreur (.DOE).Utilisez la dérivée de PV pour éliminer les pics de sortie résultant des modifications de point de consigne. Utilisez la dérivée de l'erreur pour obtenir des réponses rapides aux changements de point de consigne lorsque l'algorithme peut tolérer les oscillations.

Loop update time (Heure de mise à jour de la boucle)

Entrez la fréquence de d'actualisation (.UPD) de l'instruction.

CV high limit (Limite haute de CV) Entrez une limite haute pour la variable de contrôle (.MAXO).

CV low limit (Limite basse de CV) Entrez une limite basse pour la variable de contrôle (.MINO).

Deadband value (Valeur de zone morte) Entrez une valeur de zone morte (.DB).

No derivative smoothing (Pas de lissage dérivé) Activez ou désactivez cette sélection (.NDF).

No bias calculation (Pas de calcul de décalage) Activez ou désactivez cette sélection (.NOBC).

Publication 1756-RM003F-FR-P - Mai 2002

Page 413: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions spéciales (FBC, DDT, DTR, PID) 12-25

Définition des alarmes

Sélectionnez l'onglet Alarmes. Vous devez cliquer sur OK ou sur Appliquer pour que les modifications prennent effet.

Définition de la mise à l'échelle

Sélectionnez l'onglet Mise à l'échelle. Vous devez cliquer sur OK ou sur Appliquer pour que les modifications prennent effet.

No zero crossing in deadband (Pas de passage par zéro en zone morte)

Activez ou désactivez cette sélection (.NOZC).

PV tracking (Suivi de PV) Activez ou désactivez cette sélection (.PVT).

Cascade loop (Boucle en cascade) Activez ou désactivez cette sélection (.CL).

Cascade type (Type de cascade) Si Cascade loop est activé, sélectionnez esclave ou maître (.CT).

Dans ce champ Indiquez

Dans ce champ Indiquez

PV high (PV haute) Entrez une valeur d'alarme PV haute (.PVH).

PV low (PV basse) Entrez une valeur d'alarme PV basse (.PVL).

PV deadband (Zone morte PV) Entrez une valeur de zone morte d'alarme PV (.PVDB).

Positive deviation (Déviation positive) Entrez une valeur d'écart positif (.DVP).

Negative deviation (Déviation négative) Entrez une valeur d'écart négatif (.DVN).

Deviation deadband (Zone morte de déviation) Entrez une valeur de zone morte d'alarme de déviation (.DVDB).

Dans ce champ Indiquez

PV unscaled maximum (Variable de procédé maximum non mise à l'échelle)

Entrez une valeur de PV maximum (.MAXI) qui soit égale à la valeur maximum non mise à l'échelle reçue du canal d'entrées analogiques pour la valeur PV.

PV unscaled minimum (Variable de procédé minimum non mise à l'échelle)

Entrez une valeur de PV minimum (.MINI) qui soit égale à la valeur minimum non mise à l'échelle reçue du canal d'entrées analogiques pour la valeur PV.

PV engineering units maximum (Variable de procédé maximum en unités procédé)

Entrez les unités procédé maximum correspondant à .MAXI (.MAXS).

PV engineering units minimum (Variable de procédé minimum en unités procédé)

Entrez les unités procédé minimum correspondant à .MINI (.MINS).

CV maximum (Variable de contrôle maximum) Entrez une valeur de CV maximum correspondant à 100 % (.MAXCV).

CV minimum (Variable de contrôle minimum) Entrez une valeur de CV minimum correspondant à 0 % (.MINCV).

Tieback maximum ( Elément « Tieback » maximum))

Entrez une valeur de tieback maximum (.MAXTIE) qui soit égale à la valeur non mise à l'échelle maximum reçue du canal d'entrées analogiques pour la valeur de tieback.

Tieback minimum (Elément « Tieback » minimum)

Entrez une valeur de tieback minimum (.MINTIE) qui soit égale à la valeur non mise à l'échelle minimum reçue du canal d'entrées analogiques pour la valeur de tieback.

PID Initialized (PID initialisé) Si vous changez les constantes de mise à l'échelle en mode Exécution (Run), désactivez cette option pour réinitialiser les valeurs de non-mise à l'échelle internes (.INI).

Publication 1756-RM003F-FR-P - Mai 2002

Page 414: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

12-26 Instructions spéciales (FBC, DDT, DTR, PID)

Utilisation des instructions PID

La commande en boucle fermée PID maintient une variable de procédé à un point de consigne voulu. L'illustration suivante donne un exemple de débit/niveau de liquide :

Dans l'exemple ci-dessus, le niveau du réservoir est comparé au point de consigne. Si le niveau est supérieur au point de consigne, l'équation PID augmente la variable de contrôle et la vanne de sortie du réservoir s'ouvre, faisant baisser le niveau du réservoir.

L'équation PID utilisée dans l'instruction PID est une équation avec possibilité d'utiliser les gains indépendants ou dépendants. Lors de l'utilisation des gains indépendants, les gains proportionnels, intégraux et dérivés n'affectent respectivement que leurs termes proportionnels, intégraux et dérivés. Lors de l'utilisation des gains dépendants, 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 même type de commande. Ces deux

-

+

14271

point de consigne

débit

erreuréquation PID

variable de contrôle

variable de procédé

détecteur de niveau

Publication 1756-RM003F-FR-P - Mai 2002

Page 415: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions spéciales (FBC, DDT, DTR, PID) 12-27

types d'équation sont fournis uniquement pour vous permettre d'utiliser le type que vous connaissez le mieux.

Où :

Option de gains Dérivé de Equation

Gains dépendants(standard ISA)

erreur (E)

variable de procédé (PV)

Gains indépendants erreur (E)

variable de procédé (PV)

CV KC E1Ti---- Edt Td

dEdt-------+

0

t

∫+ BIAS+=

CV KC E1Ti---- Edt Td–

dPVdt

-----------

0

t

∫+ BIAS+=

E = SP - PV

CV KC E1Ti---- Edt Td

dPVdt

-----------+

0

t

∫+ BIAS+=

E = PV - SP

CV KPE Ki+ Edt KddEdt-------+

0

t

∫ BIAS+=

CV KPE Ki+ Edt Kd–dPVdt

-----------

0

t

∫ BIAS+=

E = SP - PV

CV KPE Ki+ Edt KddPV

dt-----------+

0

t

∫ BIAS+=

E = PV - SP

Variable Description

KP gain proportionnel (sans unité)Kp = Kc sans unité

Ki gain intégral (secondes -1)Pour convertir Ki (gain intégral) en Ti (durée de réinitialisation), utilisez :

Kd gain dérivé (secondes)Pour convertir Kd (gain dérivé) en Td (fréquence), utilisez :Kd = Kc (Td) 60

KC gain automate (sans unité)

Ti durée de réinitialisation (minutes/répétition)

Td fréquence (minutes)

Ki

KC

60Ti-----------=

Publication 1756-RM003F-FR-P - Mai 2002

Page 416: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

12-28 Instructions spéciales (FBC, DDT, DTR, PID)

Si vous ne voulez pas utiliser un terme particulier de l'équation PID, réglez son gain sur zéro. Par exemple, si vous ne voulez pas d'action dérivée, réglez Kd ou Td sur zéro.

Anti-saturation de l'action intégrale et transfert sans à-coup de manuel à auto

L'instruction PID évite automatiquement la saturation de la fonction intégrale en empêchant le terme intégral d'être cumulé lorsque la sortie CV atteint ses valeurs maximum ou minimum, telles que réglées par .MAXO et .MINO. Le terme intégral cumulé reste figé jusqu'à ce que la sortie CV passe en dessous de sa limite maximum ou augmente au-dessus de sa limite minimum. Le cumul intégral normal reprend alors automatiquement.

L'instruction PID accepte deux modes de commande manuels :

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 rétrocalcule la valeur du terme de cumul intégral requis pour permettre à la sortie CV de suivre la valeur du réglage de sortie (.SO) en mode logiciel manuel ou l'entrée tieback en mode manuel. De cette façon, lorsque la boucle passe en mode auto, la sortie CV commence à la valeur de réglage de sortie ou tieback et aucun à-coup ne se produit dans la valeur de sortie.

SP point de consigne

PV variable de procédé

E erreur [(SP-PV) ou (PV-SP)]

BIAS anticipation de vitesse ou décalage

CV variable de contrôle

dt fréquence de rafraîchissement de boucle

Variable Description

Mode de commande manuel Description

logiciel manuel (.SWM) aussi appelé mode de réglage des sortiespermet à l'utilisateur de régler le % des sorties à partir du logicielLa valeur de réglage des sorties (.SO) est utilisée comme sortie de la boucle. La valeur de réglage des sorties vient généralement d'une entrée opérateur de dispositif d'interface opérateur.

manuel (.MO) prend la valeur de tieback comme entrée et ajuste ses variables internes pour générer la même valeur à la sortieL'entrée tieback de l'instruction PID est mise à l'échelle de 0 à 100 % selon les valeurs de .MINTIE et .MAXTIE : elle est utilisée comme sortie de la boucle. L'entrée tieback vient généralement d'une sortie d'une station manuelle/auto matérielle qui contourne la sortie de l'automate.Remarque : le mode manuel supplante le mode logiciel manuel si les deux bits de mode sont activés.

Publication 1756-RM003F-FR-P - Mai 2002

Page 417: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions spéciales (FBC, DDT, DTR, PID) 12-29

L'instruction PID peut également fournir automatiquement un transfert sans à-coups de manuel à auto, même si la commande intégrale n'est pas utilisée (ex. Ki = 0). Dans ce cas, l'instruction modifie le terme

.BIAS pour permettre à la sortie CV de suivre la valeur de réglage de sortie ou la valeur de tieback. Lorsque la commande automatique reprend, le terme .BIAS garde sa dernière valeur. Vous pouvez désactiver le rétrocalcul du terme .BIAS en activant le bit .NOBC dans la structure de données 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 intégrale n'est pas utilisée.

Temporisation de l'instruction PID

L'instruction PID et l'échantillonnage de la variable de procédé doivent être rafraîchis régulièrement. La fréquence du rafraîchissement est liée au procédé physique que vous commandez. Pour les boucles très lentes, telles que les boucles de température, un rafraîchissement toutes les secondes, voire plus, est généralement suffisant pour obtenir une commande correcte. Les boucles plus rapides, telles que les boucles de pression ou de débit, peuvent demander un rafraîchissement toutes les 250 millisecondes. Seuls des cas rares, tels que la commande de tension sur un dérouleur, demandent des rafraîchissements de boucle toutes les 10 millisecondes ou moins.

L'instruction PID utilisant une base de temps dans ses calculs, vous devez synchroniser l'exécution de cette instruction avec un échantillonnage de la variable de procédé (PV).

La façon la plus facile d'exécuter l'instruction PID est de mettre l'instruction PID dans une tâche périodique. Réglez la fréquence de rafraîchissement de boucle (.UPD) pour qu'elle soit égale à la fréquence de la tâche périodique et assurez-vous que l'instruction PID est exécutée à chaque scrutation de cette tâche.

Logique à relais

Publication 1756-RM003F-FR-P - Mai 2002

Page 418: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

12-30 Instructions spéciales (FBC, DDT, DTR, PID)

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 tâche périodique, assurez-vous que l'entrée analogique utilisée pour la variable de procédé est mise à jour avec le processeur à une fréquence bien plus rapide que la fréquence de la tâche périodique. Idéalement, la variable de procédé doit être envoyée au processeur au moins cinq à dix fois plus rapidement que la tâche périodique. Ceci permet de minimiser la différence de temps entre les échantillonnages réels de la variable de procédé et l'exécution de la boucle PID. Par exemple, si la boucle PID est dans une tâche périodique de 250 millisecondes, utilisez une fréquence de rafraîchissement de boucle de 250 millisecondes (.UPD = .25) et configurez le module d'entrées analogiques pour produire des données au moins toutes les 25 à 50 ms.

Une autre méthode moins précise pour l'exécution d'une instruction PID consiste à placer cette instruction dans une tâche continue et à utiliser un bit de fin de temporisation pour déclencher l'exécution 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;

Publication 1756-RM003F-FR-P - Mai 2002

Page 419: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions spéciales (FBC, DDT, DTR, PID) 12-31

Dans cette méthode, la fréquence de rafraîchissement de boucle pour l'instruction PID doit être égale au préréglage du temporisateur. Comme pour l'emploi d'une tâche périodique, vous devez régler le module analogique afin qu'il produise la variable de procédé à une fréquence bien plus rapide que la fréquence de rafraîchissement de boucle. Vous ne devez utiliser la méthode temporisateur pour l'exécution PID de boucles qu'avec des fréquences de rafraîchissement correspondant à au moins plusieurs fois la durée d'exécution de la tâche continue dans le cas le plus défavorable.

La façon la plus précise d'exécuter l'instruction PID est d'utiliser la fonction d'échantillonnage en temps réel (RTS) des modules d'entrées analogiques. Le module d'entrées analogiques échantillonne ses entrées à la fréquence d'échantillonnage en temps réel que vous déterminez lorsque vous configurez le module. Lorsque la période d'échantillonnage en temps réel du module expire, il rafraîchit ses entrées et met à jour un horodatage cyclique (représenté par le membre .RollingTimestamp de la structure de données d'entrées 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 procédé a été reçu. Chaque fois que l'horodatage change, exécutez l'instruction PID une fois. Comme l'échantillon de variable de procédé est géré par le module d'entrées analogiques, la fréquence d'échantillonnage des entrées est très précise et la fréquence de rafraîchissement de boucle utilisée par l'instruction PID doit être égale à la durée RTS du module d'entrées analogiques.

Pour ne pas manquer d'échantillons de la variable de procédé, exécutez votre logique à une fréquence supérieure à la durée du RTS. Par exemple, si la durée du RTS est de 250 ms, vous pouvez mettre la logique PID dans une tâche périodique qui s'exécute toutes les 100 ms pour être sûr de ne pas rater un échantillon. Vous pouvez même placer la logique PID dans une tâche continue, dans la mesure où vous vous assurez que la logique sera mise à jour plus fréquemment que toutes les 250 millisecondes.

Un exemple de la méthode d'exécution RTS est donné ci-dessous. L'exécution de l'instruction PID dépend de la réception de nouvelles données d'entrées analogiques. Si le module d'entrées analogiques est défectueux ou retiré, l'automate cesse de recevoir les horodatages cycliques et la boucle PID stoppe son exécution. Vous devez surveiller le bit d'état de l'entrée analogique PV et si son état est incorrect, vous devez forcer la boucle en mode logiciel manuel et exécuter la boucle à chaque scrutation. Ceci permet à l'opérateur de changer la sortie de la boucle PID manuellement.

Publication 1756-RM003F-FR-P - Mai 2002

Page 420: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

12-32 Instructions spéciales (FBC, DDT, DTR, PID)

Logique à relais

Texte structuré

IF (Local:0:I.Ch0Fault) THENTIC101.SWM [:=] 1;

ELSETIC101.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;

Redémarrage sans à-coups

L'instruction PID peut dialoguer avec les modules de sorties analogiques 1756 pour permettre un redémarrage sans à-coups, lorsque l'automate passe du mode Programme (Program) au mode Exécution (Run) ou lorsqu'il démarre.

Lorsqu'un module de sorties analogiques 1756 perd la communication avec l'automate ou détecte que l'automate est en mode Programme, le module de sorties analogiques règle ses sorties sur les valeurs d'état de défaut que vous avez indiquées lors de la configuration du module. Lorsque l'automate revient au mode Exécution ou rétablit la communication avec le module de sorties analogiques, vous pouvez demander à l'instruction PID de remettre automatiquement sa variable de contrôle de sortie à la même valeur que la sortie analogique, à l'aide du bit de maintien et des paramètres de la valeur de maintien de l'instruction PID.

Publication 1756-RM003F-FR-P - Mai 2002

Page 421: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions spéciales (FBC, DDT, DTR, PID) 12-33

Pour activer le redémarrage sans à-coups :

Lissage de la dérivée

Le calcul de la dérivée est amélioré par un filtre de lissage. Ce filtre numérique passe-bas de premier ordre aide à minimiser les grands pics de terme dérivé produits par les parasites dans la PV. Ce lissage est plus important avec les valeurs plus élevées du gain dérivé. Vous pouvez désactiver le lissage de la dérivée si votre processus demande de grandes valeurs de gain dérivé (Kd > 10, par exemple). Pour

désactiver le lissage de la dérivée, sélectionnez l'option « Pas de lissage dérivé » dans l'onglet Configuration ou activez le bit .NDF dans la structure PID.

Configuration de la zone morte

La zone morte réglable permet de sélectionner une plage d'erreurs au-dessus et en-dessous du point de consigne, de sorte que la sortie ne change pas tant que l'erreur demeure dans cette plage. La zone morte permet de contrôler le degré de correspondance de la variable de procédé et du point de consigne, sans changer la sortie. La zone

Faites ceci Détails

Configurez le canal du module de sorties analogiques 1756 qui reçoit la variable de contrôle de l'instruction PID

Sélectionnez la case « Maintenir pour initialisation » sur l'écran des propriétés du canal spécifique du module.

Ceci indique au module de sorties analogiques que lorsque l'automate retourne au mode Exécution (Run) ou rétablit la communication avec le module, le module doit garder la sortie analogique à sa valeur en cours jusqu'à ce que la valeur envoyée par l'automate corresponde (à 0,1 % près) à la valeur en cours utilisée par le canal de sorties. La sortie de l'automate augmente jusqu'à la valeur de sortie en cours en utilisant le terme .BIAS. Cet effet de rampe est similaire au transfert sans à-coups automatique.

Entrez le point du bit de maintien et le point de la valeur de maintien dans l'instruction PID

Le module de sorties analogiques 1756 renvoie deux valeurs pour chaque canal de sa structure de données d'entrée. Lorsqu'il est vrai, le bit d'état de maintien (.Ch2InHold, par exemple) indique que le canal de sorties analogiques garde sa valeur. La valeur de retour des données (.Ch2Data, par exemple) indique la valeur de sortie en cours en unités procédé.

Entrez le point du bit d'état de maintien comme paramètre du bit de maintien de l'instruction PID. Entrez le point de la valeur de retour des données comme paramètre de la valeur de maintien.

Lorsque le bit de maintien devient vrai, l'instruction PID déplace la valeur de maintien dans la variable de contrôle de sortie, puis est réinitialisée pour permettre un redémarrage sans à-coups à cette valeur. Lorsque le module de sorties analogiques reçoit cette valeur de l'automate, il désactive le bit d'état de maintien, ce qui permet à l'instruction PID d'effectuer la commande normalement.

Publication 1756-RM003F-FR-P - Mai 2002

Page 422: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

12-34 Instructions spéciales (FBC, DDT, DTR, PID)

morte aide également à minimiser l'usure de votre dispositif de commande.

Le passage par zéro est une commande de zone morte qui permet à l'instruction d'utiliser l'erreur pour les calculs, depuis le moment où la variable de procédé traverse la zone morte jusqu'au moment où elle traverse le point de consigne. Une fois que la variable de procédé traverse le point de consigne (l'erreur passe par zéro 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 zéro pour inhiber la zone morte. La zone morte a les mêmes unités d'échelle que le point de consigne. Vous pouvez utiliser la zone morte sans le passage par zéro en sélectionnant « Pas de passage par zéro 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 contrôle doit être REAL ou elle sera forcée à 0 lorsque l'erreur sera dans la zone morte.

Utilisation de la limite de sortie

Vous pouvez activer une limite de sortie (pourcentage de sortie) sur la sortie de commande. Lorsque l'instruction détecte que la sortie a atteint une limite, elle active une alarme et empêche la sortie de dépasser la limite inférieure ou supérieure.

Anticipation de vitesse ou décalage de sortie

Vous pouvez anticiper une perturbation du système en mettant la valeur .BIAS dans la valeur d'anticipation de vitesse/décalage de l'instruction PID.

La valeur d'anticipation représente une perturbation introduite dans l'instruction PID avant qu'elle ait eu l'occasion de changer la variable de procédé. L'anticipation est souvent utilisée pour contrôler des

erreur dans la plage de la zone morte

zone morte +

point de consigne

zone morte -

durée 41026

Publication 1756-RM003F-FR-P - Mai 2002

Page 423: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions spéciales (FBC, DDT, DTR, PID) 12-35

applications avec déphasage de transport. Par exemple, une valeur d'anticipation représentant « eau froide versée dans mélange chaud » peut activer la valeur de sortie plus rapidement que le changement de la variable de procédé dû au mélange.

Une valeur d'anticipation est généralement utilisée lorsque la commande intégrale n'est pas utilisée. Dans ce cas, la valeur d'anticipation peut être ajustée pour maintenir la sortie dans la plage requise, afin de garder la variable de procédé près du point de consigne.

Mises de boucles en cascade

L'instruction PID met deux boucles en cascade en attribuant la sortie en pourcentage de la boucle maître au point de consigne de la boucle esclave. La boucle esclave convertit automatiquement la sortie de la boucle maître en unités procédé correctes pour le point de consigne de la boucle esclave, en fonction des valeurs de la boucle esclave pour .MAXS et .MINS.

Logique à relais

Texte structuré

PID(master,pv_master,0,cv_master,0,0,0);

PID (slave,pv_slave,0,cv_slave,master,0,0);

Contrôle de ratio

Vous pouvez maintenir deux valeurs dans un ratio en utilisant ces paramètres :

• valeur non contrôlée ;

• valeur contrôlée (le point de consigne résultant devant être utilisé par l'instruction PID) ;

• ratio entre ces deux valeurs.

Publication 1756-RM003F-FR-P - Mai 2002

Page 424: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

12-36 Instructions spéciales (FBC, DDT, DTR, PID)

Logique à relais

Texte structuré

pid_2.sp := uncontrolled_flow * ratio

PID(pid_2,pv_2,tieback_2,cv_2,0,0,0);

Pour ce paramètre de multiplication Entrez cette valeur

destination valeur contrôlée

source A valeur non contrôlée

source B ratio

Publication 1756-RM003F-FR-P - Mai 2002

Page 425: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions spéciales (FBC, DDT, DTR, PID) 12-37

Théorie PID Les illustrations suivantes montrent le déroulement d'instructions PID.

Processus PID

Processus PID avec boucles maître/esclave

+-

-1+

SP affiché en

unités procédé

Erreur affichée en

unités procédé

A/M LogicielOU

A/M Station opérateur Action de contrôle

Auto SP-PV

(Erreur)

Manuel

Non

Oui

PVT

SPPV-SP

Conversion des binaires en unités procédé

(PV-min.)(max. UP-min. UP)+ min. UPmax.-min.

PV

PVaffichée en

unités procédé

Conversion des unités en %

Erreur X 100max. UP-min. UP

Calcul PID

% décalage de sortie

A/M Logiciel

Auto

Auto(Sortie%)

Définition % de sortie

Conversion unités Tieback en %

tieback-mintiemaxtie-mintie

x 100

ManuelManuel

Limite de sortie

Définition % de sortie

A/M Station opérateur

Sortie (CV) affichée en %

d'unités procédé

Conversion % en unités CV

CV%(maxcv-mincv)100

+ mincvCV

+-

-1+

+-

-1+

SP

Auto

Manuel

PVTNon

Oui

Conversion des binaires en unités procédé

(PV-min.)(max. UP-min. UP)max.-min.

+ min. UP

PV

SP-PV

PV-SP

(Erreur)Conversion des

unités en %

Erreur X 100max. UP-min. UP

Calcul PID

% décalage de sortie

A/M Logiciel

Auto

Auto(Sortie%)

Limite de sortie

Définition % de sortieA/M Station

opérateur

Définition % de sortie

Manuel

Manuel

(Sortie

SP

PV

Boucle maître A/M Logiciel

OUA/M Station opérateur

Action de contrôle

Boucle esclave

(Sortie maître)

Conversion des binaires en unités procédé

(PV-min.)(max. UP-min. UP)max.-min.

+ min. UP

.SP

PV

Conversion % en unités procédé

Conversion unités Tieback en %

tieback-mintiemaxtie-mintie

x 100

Conversion des unités en %

Erreur X 100max. UP-min. UP

Conversion des unités en %

Erreur X 100max. UP-min. UP

X (max. UP-min. UP)100

+ min. UP

Action de contrôle

SP-PV

PV-SP

Calcul PID

% décalage de sortie

Définition % de sortie

Auto

Auto

Manuel

Manuel

A/M Station opérateur

Limite de sortie

A/M Logiciel Définition % de sortie

Conversion % en unités CV

CV%(maxcv-mincv)100

+ mincv

Les éléments référencés dans cette case sont des paramètres, des unités et des

modes en fonction de leur appartenance à la boucle esclave désignée.

ManuelManuel

Auto

A/M Logiciel

Publication 1756-RM003F-FR-P - Mai 2002

Page 426: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

12-38 Instructions spéciales (FBC, DDT, DTR, PID)

Notes :

Publication 1756-RM003F-FR-P - Mai 2002

Page 427: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Chapitre 13

Instructions trigonométriques(SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Introduction Les instructions trigonométriques évaluent les opérations arithmétiques à l'aide d'opérations trigonométriques.

Vous pouvez combiner différents types de données, mais des erreurs de précision et un arrondissement des valeurs peuvent se produire et l'instruction est plus longue à exécuter. Vérifiez le bit de dépassement (S:V) pour voir si le résultat a été tronqué.

Pour les instructions de logique à relais, les types de données en gras indiquent les types de données optimaux. Une instruction est exécutée plus rapidement et demande moins de mémoire si tous les opérandes de l'instruction utilisent le même type de données optimal, généralement DINT ou REAL.

Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page

trouver le sinus d'une valeur SIN logique à relaistexte structurébloc fonctionnel

13-2

trouver le cosinus d'une valeur COS logique à relaistexte structurébloc fonctionnel

13-4

trouver la tangente d'une valeur TAN logique à relaistexte structurébloc fonctionnel

13-6

trouver le sinus d'arc d'une valeur ASNASIN(1)

logique à relaistexte structurébloc fonctionnel

13-8

trouver le cosinus d'arc d'une valeur ACSACOS(1)

logique à relaistexte structurébloc fonctionnel

13-10

trouver la tangente d'arc d'une valeur ATNATAN(1)

logique à relaistexte structurébloc fonctionnel

13-12

(1) Texte structuré uniquement.

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 428: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

13-2 Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Sinus (SIN) L'instruction SIN prend le sinus de la valeur Source (en radians) et stocke le résultat dans la Destination.

Opérandes :

Logique à relais

Texte structuré

Utilisez SIN comme une fonction. Cette fonction calcule le sinus de source et stocke le résultat dans dest.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Structure FBD_MATH_ADVANCED

Description : La Source doit être supérieure ou égale à -205 887,4 (-2π x 215) et

inférieure ou égale à 205 887,4 (2π x 215). La valeur résultante dans la Destination est toujours supérieure ou égale à -1 et inférieure ou égale à 1.

Opérande Type Format Description

Source SINTINTDINTREAL

immédiatpoint

cherche le sinus de cette valeur

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Opérande Type Format Description

point SIN FBD_MATH_ADVANCED structure structure SIN

dest := SIN(source);

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source REAL Entrée dans l'instruction mathématique.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest REAL Résultat de l'instruction mathématique. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Publication 1756-RM003F-FR-P - Mai 2002

Page 429: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) 13-3

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Exécution :

Logique à relais

Bloc fonctionnel

Exemple : Calculer le sinus de value et placer le résultat dans result.

Logique à relais

Texte structuré

result := SIN(value);

Bloc fonctionnel

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'automate calcule le sinus de la Source et place le résultat dans la Destination.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 430: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

13-4 Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Cosinus (COS) L'instruction COS prend le cosinus de la valeur Source (en radians) et stocke le résultat dans la Destination.

Opérandes :

Logique à relais

Texte structuré

Utilisez COS comme une fonction. Cette fonction calcule le cosinus de source et stocke le résultat dans dest.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Structure FBD_MATH_ADVANCED

Description : La Source doit être supérieure ou égale à -205 887,4 (-2π x 215) et

inférieure ou égale à 205 887,4 (2π x 215). La valeur résultante dans la Destination est toujours supérieure ou égale à -1 et inférieure ou égale à 1.

Opérande Type Format Description

Source SINTINTDINTREAL

immédiatpoint

cherche le cosinus de cette valeur

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Opérande Type Format Description

point COS FBD_MATH_ADVANCED structure structure COS

dest := COS(source);

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source REAL Entrée dans l'instruction mathématique.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest REAL Résultat de l'instruction mathématique. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Publication 1756-RM003F-FR-P - Mai 2002

Page 431: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) 13-5

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Exécution :

Logique à relais

Bloc fonctionnel

Exemple : Calculer le cosinus de value et placer le résultat dans result.

Logique à relais

Texte structuré

result := COS(value);

Bloc fonctionnel

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'automate calcule le cosinus de la Source et place le résultat dans la Destination.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 432: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

13-6 Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Tangente (TAN) L'instruction TAN prend la tangente de la valeur Source (en radians) et stocke le résultat dans la Destination.

Opérandes :

Logique à relais

Texte structuré

Utilisez TAN comme une fonction. Cette fonction calcule la tangente de source et stocke le résultat dans dest.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Structure FBD_MATH_ADVANCED

Description : La Source doit être supérieure ou égale à -102 943,7(-2π x 214) et

inférieure ou égale à 102 943,7 (2π x 214).

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Opérande Type Format Description

Source SINTINTDINTREAL

immédiatpoint

cherche la tangente de cette valeur

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Opérande Type Format Description

point TAN FBD_MATH_ADVANCED structure structure TAN

dest := TAN(source);

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source REAL Entrée dans l'instruction mathématique.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest REAL Résultat de l'instruction mathématique. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Publication 1756-RM003F-FR-P - Mai 2002

Page 433: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) 13-7

Conditions d'erreur : aucune

Exécution :

Logique à relais

Bloc fonctionnel

Exemple : Calculer la tangente de value et placer le résultat dans result.

Logique à relais

Texte structuré

result := TAN(value);

Bloc fonctionnel

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'automate calcule la tangente de la Source et place le résultat dans la Destination.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 434: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

13-8 Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Sinus d'arc (ASN) L'instruction ASN prend le sinus d'arc de la valeur Source et stocke le résultat dans la Destination (en radians).

Opérandes :

Logique à relais

Texte structuré

Utilisez ASIN comme une fonction. Cette fonction calcule le sinus d'arc de source et stocke le résultat dans dest.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Structure FBD_MATH_ADVANCED

Description : La Source doit être supérieure ou égale à -1 et inférieure ou égale à 1. La valeur résultante dans la Destination est toujours supérieure ou égale à -π/2 et inférieure ou égale à π/2 (où π = 3,141593).

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Opérande Type Format Description

Source SINTINTDINTREAL

immédiatpoint

cherche le sinus d'arc de cette valeur

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Opérande Type Format Description

point ASN FBD_MATH_ADVANCED structure structure ASN

dest := ASIN(source);

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source REAL Entrée dans l'instruction mathématique.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest REAL Résultat de l'instruction mathématique. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Publication 1756-RM003F-FR-P - Mai 2002

Page 435: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) 13-9

Conditions d'erreur : aucune

Exécution :

Logique à relais

Bloc fonctionnel

Exemple : Calculer le sinus d'arc de value et placer le résultat dans result.

Logique à relais

Texte structuré

result := ASIN(value);

Bloc fonctionnel

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'automate calcule le sinus d'arc de la Source et place le résultat dans la Destination.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 436: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

13-10 Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Cosinus d'arc (ACS) L'instruction ACS prend le cosinus d'arc de la valeur Source et stocke le résultat dans la Destination (en radians).

Opérandes :

Logique à relais

Texte structuré

Utilisez ACOS comme une fonction. Cette fonction calcule le cosinus d'arc de source et stocke le résultat dans dest.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Structure FBD_MATH_ADVANCED

Description : La Source doit être supérieure ou égale à -1 et inférieure ou égale à 1. La valeur résultante dans la Destination est toujours supérieure ou égale à 0 ou inférieure ou égale à π (où π = 3,141593).

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Opérande Type Format Description

Source SINTINTDINTREAL

immédiatpoint

cherche le cosinus d'arc de cette valeur

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Opérande Type Format Description

point ACS FBD_MATH_ADVANCED structure structure ACS

dest := ACOS(source);

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source REAL Entrée dans l'instruction mathématique.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest REAL Résultat de l'instruction mathématique. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Publication 1756-RM003F-FR-P - Mai 2002

Page 437: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) 13-11

Conditions d'erreur : aucune

Exécution :

Logique à relais

Bloc fonctionnel

Exemple : Calculer le cosinus d'arc de value et placer le résultat dans result.

Logique à relais

Texte structuré

result := ACOS(value);

Bloc fonctionnel

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'automate calcule le cosinus d'arc de la Source et place le résultat dans la Destination.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 438: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

13-12 Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Tangente d'arc (ATN) L'instruction ATN prend la tangente d'arc de la valeur Source et stocke le résultat dans la Destination (en radians).

Opérandes :

Logique à relais

Texte structuré

Utilisez ATAN comme une fonction. Cette fonction calcule la tangente d'arc de source et stocke le résultat dans dest.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Structure FBD_MATH_ADVANCED

Description : La valeur résultante dans la Destination est toujours supérieure ou égale à -π/2 et inférieure ou égale à π/2 (où π = 3,141593).

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Opérande Type Format Description

Source SINTINTDINTREAL

immédiatpoint

cherche la tangente d'arc de cette valeur

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Opérande Type Format Description

point ATN FBD_MATH_ADVANCED structure structure ATN

dest := ATAN(source);

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source REAL Entrée dans l'instruction mathématique.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest REAL Résultat de l'instruction mathématique. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Publication 1756-RM003F-FR-P - Mai 2002

Page 439: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) 13-13

Conditions d'erreur : aucune

Exécution :

Logique à relais

Bloc fonctionnel

Exemple : Calculer la tangente d'arc de value et placer le résultat dans result.

Logique à relais

Texte structuré

result := ATAN(value);

Bloc fonctionnel

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'automate calcule la tangente d'arc de la Source et place le résultat dans la Destination.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 440: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

13-14 Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Notes :

Publication 1756-RM003F-FR-P - Mai 2002

Page 441: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Chapitre 14

Instructions mathématiques évoluées(LN, LOG, XPY)

Introduction Les instructions mathématiques évoluées comprennent les instructions suivantes :

Vous pouvez combiner différents types de données, mais des erreurs de précision et un arrondissement des valeurs peuvent se produire et l'instruction est plus longue à exécuter. Vérifiez le bit S:V pour voir si le résultat a été tronqué.

Pour les instructions de logique à relais, les types de données en gras indiquent les types de données optimaux. Une instruction est exécutée plus rapidement et demande moins de mémoire si tous les opérandes de l'instruction utilisent le même type de données optimal, généralement DINT ou REAL.

Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page

trouver le logarithme naturel d'une valeur LN logique à relaistexte structurébloc fonctionnel

14-2

trouver le logarithme décimal d'une valeur LOG logique à relaistexte structurébloc fonctionnel

14-4

élever une valeur à la puissance d'une autre valeur

XPY logique à relaistexte structuré(1)

bloc fonctionnel

14-6

(1) Il n'existe pas d'instruction équivalente en texte structuré. Utilisez l'opérateur dans une expression.

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 442: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

14-2 Instructions mathématiques évoluées (LN, LOG, XPY)

Logarithme naturel (LN) L'instruction LN prend le logarithme naturel de la Source et stocke le résultat dans la Destination.

Opérandes :

Logique à relais

Texte structuré

Utilisez LN comme une fonction. Cette fonction calcule le logarithme naturel de source et stocke le résultat dans dest.

Pour des informations sur la syntaxe des expressions en texte structuré, voir l'Annexe C.

Bloc fonctionnel

Structure FBD_MATH_ADVANCED

Description : La Source doit être supérieure à zéro, sinon le bit d'état de dépassement (S:V) est activé. La Destination résultante est supérieure ou égale à 87,33655 et inférieure ou égale à 88,72284.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Opérande Type Format Description

Source SINTINTDINTREAL

immédiatpoint

cherche le logarithme naturel de cette valeur

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Opérande Type Format Description

point LN FBD_MATH_ADVANCED structure structure LN

dest := LN(source);

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source REAL Entrée dans l'instruction mathématique.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Publication 1756-RM003F-FR-P - Mai 2002

Page 443: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions mathématiques évoluées (LN, LOG, XPY) 14-3

Exécution :

Logique à relais

Bloc fonctionnel

Exemple : Calculer le logarithme naturel de value et placer le résultat dans result.

Logique à relais

Texte structuré

result := LN(value);

Bloc fonctionnel

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'automate calcule le logarithme naturel de la Source et place le résultat dans la Destination.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

EnableIn est effacé EnableOut est effacé.

EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 444: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

14-4 Instructions mathématiques évoluées (LN, LOG, XPY)

Logarithme décimal (LOG) L'instruction LOG prend le logarithme décimal de la Source et stocke le résultat dans la Destination.

Opérandes :

Logique à relais

Texte structuré

Utilisez LOG comme une fonction. Cette fonction calcule le logarithme de source et stocke le résultat dans dest.

Pour des informations sur la syntaxe des expressions en texte structuré, voir l'Annexe C.

Bloc fonctionnel

Structure FBD_MATH_ADVANCED

Description : La Source doit être supérieure à zéro, sinon le bit d'état de dépassement (S:V) est activé. La Destination résultante est supérieure ou égale à 37,92978 et inférieure ou égale à 38,53184.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Opérande Type Format Description

Source SINTINTDINTREAL

immédiatpoint

cherche le logarithme de cette valeur

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Opérande Type Format Description

point LOG FBD_MATH_ADVANCED structure structure LOG

dest := LOG(source);

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source REAL Entrée dans l'instruction mathématique.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest REAL Résultat de l'instruction mathématique. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Publication 1756-RM003F-FR-P - Mai 2002

Page 445: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions mathématiques évoluées (LN, LOG, XPY) 14-5

Conditions d'erreur : aucune

Exécution :

Logique à relais

Bloc fonctionnel

Exemple : Calculer le logarithme de value et placer le résultat dans result.

Logique à relais

Texte structuré

result := LOG(value);

Bloc fonctionnel

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'automate calcule le logarithme de la Source et place le résultat dans la Destination.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 446: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

14-6 Instructions mathématiques évoluées (LN, LOG, XPY)

X à la puissance Y (XPY) L'instruction XPY élève Source A (X) à la puissance de Source B (Y) et stocke le résultat dans la Destination.

Opérandes :

Logique à relais

Texte structuré

Utilisez deux signes de multiplication juxtaposés “∗∗ ” comme opérateur dans une expression. Cette expression élève sourceX à la puissance de sourceY et stocke le résultat dans dest.

Pour des informations sur la syntaxe des expressions en texte structuré, voir l'Annexe C.

Bloc fonctionnel

Opérande Type Format Description

Source X SINTINTDINTREAL

immédiatpoint

valeur de base

Source Y SINTINTDINTREAL

immédiatpoint

exposant

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Opérande Type Format Description

point XPY FBD_MATH structure structure XPY

dest := sourceX ** sourceY;

Publication 1756-RM003F-FR-P - Mai 2002

Page 447: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions mathématiques évoluées (LN, LOG, XPY) 14-7

Structure FBD_MATH

Description : Si Source X est négatif, Source Y doit être un nombre entier ou un défaut mineur se produit.

L'instruction XPY utilise l'algorithme suivant : Destination = X**Y

L'automate comprend x0=1 et 0x=0.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur :

Exécution :

Logique à relais

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source X REAL Valeur de baseValeurs correctes = toute virgule flottante.

Source Y REAL Exposant.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest REAL Résultat de l'instruction mathématique. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Un défaut mineur se produit si Type du défaut Code du défaut

Source X est négatif et Source Y n'est pas un nombre entier

4 4

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'automate élève Source X à la puissance de Source Y et place le résultat dans la Destination.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Publication 1756-RM003F-FR-P - Mai 2002

Page 448: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

14-8 Instructions mathématiques évoluées (LN, LOG, XPY)

Bloc fonctionnel

Exemple : L'instruction XPY élève value_1 à la puissance de value_2 et stocke le résultat dans result.

Logique à relais

Texte structuré

result := (value_1 ∗∗ value_2);

Bloc fonctionnel

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 449: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Chapitre 15

Instructions de conversion mathématique(DEG, RAD, TOD, FRD, TRN, TRUNC)

Introduction Les instructions de conversion mathématique convertissent des valeurs.

Vous pouvez combiner différents types de données, mais des erreurs de précision et un arrondissement des valeurs peuvent se produire et l'instruction est plus longue à exécuter. Vérifiez le bit S:V pour voir si le résultat a été tronqué.

Pour les instructions de logique à relais, les types de données en gras indiquent les types de données optimaux. Une instruction est exécutée plus rapidement et demande moins de mémoire si tous les opérandes de l'instruction utilisent le même type de données optimal, généralement DINT ou REAL.

Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page

convertir des radians en degrés DEG logique à relaistexte structurébloc fonctionnel

15-2

convertir des degrés en radians RAD logique à relaistexte structurébloc fonctionnel

15-4

convertir un nombre entier en valeur DCB TOD logique à relaisbloc fonctionnel

15-6

convertir une valeur DCB en un nombre entier FRD logique à relaisbloc fonctionnel

15-9

retirer la partie décimale d'une valeur TRNTRUNC(1)

logique à relaistexte structurébloc fonctionnel

15-11

(1) Texte structuré uniquement.

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 450: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

15-2 Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC)

Degrés (DEG) L'instruction DEG convertit la Source (en radians) en degrés et stocke le résultat dans la Destination.

Opérandes :

Logique à relais

Texte structuré

Utilisez DEG comme une fonction. Cette fonction convertit source en degrés et stocke le résultat dans dest.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Structure FBD_MATH_ADVANCED

Description : L'instruction DEG utilise l'algorithme suivant :Source*180/π (où π = 3,141593)

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Opérande Type Format Description

Source SINTINTDINTREAL

immédiatpoint

valeur à convertir en degrés

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Opérande Type Format Description

point DEG FBD_MATH_ADVANCED structure structure DEG

dest := DEG(source);

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source REAL Entrée dans l'instruction de conversion.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest REAL Résultat de l'instruction de conversion. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Publication 1756-RM003F-FR-P - Mai 2002

Page 451: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC) 15-3

Conditions d'erreur : aucune

Exécution :

Logique à relais

Bloc fonctionnel

Exemple : Convertir value en degrés et placer le résultat dans result.

Logique à relais

Texte structuré

result := DEG(value);

Bloc fonctionnel

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'automate convertit la Source en degrés et place le résultat dans la Destination.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 452: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

15-4 Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC)

Radians (RAD) L'instruction RAD convertit la Source (en degrés) en radians et stocke le résultat dans la Destination.

Opérandes :

Logique à relais

Texte structuré

Utilisez RAD comme une fonction. Cette fonction convertit source en radians et stocke le résultat dans dest.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Structure FBD_MATH_ADVANCED

Description : L'instruction RAD utilise l'algorithme suivant :Source*π/180 (où π = 3,141593)

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Opérande Type Format Description

Source SINTINTDINTREAL

immédiatpoint

valeur à convertir en radians

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Opérande Type Format Description

point RAD FBD_MATH_ADVANCED structure structure RAD

dest := RAD(source);

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source REAL Entrée dans l'instruction de conversion.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest REAL Résultat de l'instruction de conversion. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Publication 1756-RM003F-FR-P - Mai 2002

Page 453: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC) 15-5

Conditions d'erreur : aucune

Exécution :

Logique à relais

Bloc fonctionnel

Exemple : Convertir value en radians et placer le résultat dans result.

Logique à relais

Texte structuré

result := RAD(value);

Bloc fonctionnel

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'automate convertit la Source en radians et place le résultat dans la Destination.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 454: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

15-6 Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC)

Conversion en DCB (TOD) L'instruction TOD convertit une valeur décimale (0 ≤ Source ≤ 99 999 999) en valeur DCB et stocke le résultat dans la Destination.

Opérandes :

Logique à relais

Bloc fonctionnel

Structure FBD_CONVERT

Description : DCB est le système à nombre Décimal Codé Binaire qui exprime des chiffres décimaux individuels (0 à 9) dans une numération binaire sur 4 bits.

Si vous entrez une Source négative, l'instruction génère un défaut mineur et efface la Destination.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur :

Opérande Type Format Description

Source SINTINTDINT

immédiatpoint

valeur à convertir en décimal

Un point SINT ou INT est converti en valeur DINT par remplissage par zéros.

Destination SINTINTDINT

point point pour le stockage du résultat

Opérande Type Format Description

point TOD FBD_CONVERT structure structure TOD

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source DINT Entrée dans l'instruction de conversion.Valeurs correctes = tout nombre entier.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest DINT Résultat de l'instruction de conversion. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Un défaut mineur se produit si Type du défaut Code du défaut

Source < 0 4 4

Publication 1756-RM003F-FR-P - Mai 2002

Page 455: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC) 15-7

Exécution :

Logique à relais

Bloc fonctionnel

Exemple : L'instruction TOD convertit value_1 en valeur DCB et place le résultat dans result_a.

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'automate convertit la Source en DCB et place le résultat dans la Destination.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est

fin

source < 0non

oui

source > 99 999 999non

oui

conversion de source en DCB

S:V est réglé sur 1

l'état de sortie de la ligne est réglé sur vrai

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 456: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

15-8 Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC)

Logique à relais

Bloc fonctionnel

Publication 1756-RM003F-FR-P - Mai 2002

Page 457: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC) 15-9

Conversion en nombre entier (FRD)

L'instruction FRD convertit une valeur DCB (Source) en valeur décimale et stocke le résultat dans la Destination.

Opérandes :

Logique à relais

Bloc fonctionnel

Structure FBD_CONVERT

Description : L'instruction FRD convertit une valeur DCB (Source) en valeur décimale et stocke le résultat dans la Destination.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Exécution :

Opérande Type Format Description

Source SINTINTDINT

immédiatpoint

valeur à convertir en décimal

Un point SINT ou INT est converti en valeur DINT par remplissage par zéros.

Destination SINTINTDINT

point point pour le stockage du résultat

Opérande Type Format Description

point FRD FBD_CONVERT structure structure FRD

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source DINT Entrée dans l'instruction de conversion.Valeurs correctes = tout nombre entier.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest DINT Résultat de l'instruction de conversion. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Publication 1756-RM003F-FR-P - Mai 2002

Page 458: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

15-10 Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC)

Logique à relais

Bloc fonctionnel

Exemple : L'instruction FRD convertit value_a en valeur décimale et place le résultat dans result_1.

Logique à relais

Bloc fonctionnel

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'automate convertit la Source en valeur décimale et place le résultat dans la Destination.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 459: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC) 15-11

Troncation (TRN) L'instruction TRN retire (tronque) la partie décimale de la Source et stocke le résultat dans la Destination.

Opérandes :

Logique à relais

Texte structuré

Utilisez TRUNC comme une fonction. Cette fonction tronque source et stocke le résultat dans dest.

Pour des informations sur la syntaxe des expressions en texte structuré, reportez-vous à l'Annexe C.

Bloc fonctionnel

Structure FBD_TRUNCATE

Description : La troncation n'arrondit pas la valeur, au contraire la partie non décimale reste identique quelle que soit la valeur de cette partie.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur : aucune

Opérande Type Format Description

Source REAL immédiatpoint

valeur à tronquer

Destination SINTINTDINTREAL

point point pour le stockage du résultat

Opérande Type Format Description

point TRN FBD_TRUNCATE structure structure TRN

dest := TRUNC(source);

Paramètre d'entrée Type de données

Description

EnableIn BOOL Entrée activée. Si effacé, l'instruction n'est pas exécutée et les sorties ne sont pas actualisées.Activé par défaut.

Source REAL Entrée dans l'instruction de conversion.Valeurs correctes = toute virgule flottante.

Paramètre de sortie Type de données

Description

EnableOut BOOL L'instruction a fourni un résultat correct.

Dest DINT Résultat de l'instruction de conversion. Les indicateurs d'état arithmétiques sont activés pour cette sortie.

Publication 1756-RM003F-FR-P - Mai 2002

Page 460: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

15-12 Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC)

Exécution :

Logique à relais

Bloc fonctionnel

Exemple : Retirer la partie décimale float_value_1, sans changer la partie non décimale, et placer le résultat dans float_value_1_truncated.

Logique à relais

Texte structuré

float_value_1_truncated := TRUNC(float_value_1);

Bloc fonctionnel

Condition Action

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux.

si l'état d'entrée de la ligne est vrai L'automate retire la partie décimale de la Source et place le résultat dans la Destination.L'état de sortie de la ligne est réglé sur vrai.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux.

Condition Action

pendant la pré-scrutation Aucune.

pendant la première scrutation de l'instruction Aucune.

pendant la première exécution de l'instruction Aucune.

si EnableIn est effacé EnableOut est effacé.

si EnableIn est activé L'instruction est exécutée.EnableOut est activé.

pendant la post-scrutation Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 461: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Chapitre 16

Instructions port série ASCII(ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Introduction Utilisez les instructions du port série ASCII pour lire et écrire des caractères ASCII.

Si vous voulez Par exemple Utilisez cette instruction

Disponible dans ces langages

Voir page

déterminer quand le buffer contient des caractères de fin

trouver les données contenant des caractères de fin

ABL logique à relaistexte structuré

16-5

compter les caractères dans le buffer vérifier qu'il y a le nombre de caractères voulu avant de lire le buffer

ACB logique à relaistexte structuré

16-8

effacer le contenu du buffer • effacer les anciennes données du buffer au démarrage

• synchroniser le buffer avec un équipement

ACL logique à relaistexte structuré

16-10

effacer les instructions port série ASCII qui sont en cours d'exécution ou qui sont en attente

obtenir l'état des lignes de commande du port série

faire raccrocher un modem AHL logique à relaistexte structuré

16-12

activer ou désactiver le signal DTR

activer ou désactiver le signal RTS

lire un nombre fixe de caractères lire des données d'un équipement qui envoie le même nombre de caractères à chaque transmission

ARD logique à relaistexte structuré

16-16

lire un nombre variable de caractères, jusqu'au premier jeu de caractères de fin inclus

lire des données d'un équipement qui envoie un nombre variable de caractères à chaque transmission

ARL logique à relaistexte structuré

16-19

envoyer des caractères et ajouter automatiquement un ou deux caractères supplémentaires pour marquer la fin des données

envoyer des messages utilisant toujours le ou les mêmes caractères de fin

AWA logique à relaistexte structuré

16-23

envoyer des caractères envoyer des messages utilisant différents caractères de fin

AWT logique à relaistexte structuré

16-27

IMPORTANT Pour utiliser les instructions port série ASCII, vous devez configurer le port série de l'automate. Voir Automate Logix5000 - Procédures générales (publication 1756-PM001).

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 462: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

16-2 Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Exécution de l'instruction

Les instructions port série ASCII sont exécutées de façon asynchrone par rapport à la scrutation de la logique.

Chaque instruction port série ASCII (sauf l'instruction ACL) utilise une structure SERIAL_PORT_CONTROL pour exécuter les fonctions suivantes :

• contrôler l'exécution de l'instruction ;

• fournir des informations d'état sur l'instruction.

L'instruction entre dans la file d'attente ASCII.

File d'attente

Instruction 1 La première instruction de la file d'attente est

exécutée.

BufferContrôle

Instruction 2

Instruction 3

Instruction 4

L'état d'entrée de la ligne passe de faux à vrai

Les données circulent entre la tâche et le

buffer.

Les données circulent entre le buffer et le port série.

Logique Tâche ASCII

Publication 1756-RM003F-FR-P - Mai 2002

Page 463: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-3

Le schéma suivant montre les changements dans les bits d'état pendant que l'instruction ABL teste le buffer pour les caractères de fin.

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

entre dans la file d'attente

remet les bits d'état à zéro

exécute quand scruté et .DN ou .ER est activé, active le bit EM

dans cet exemple, trouve les caractères

de fin

état d'entrée de la ligne

faux vrai faux vrai faux

.EN désactivé activé désactivé activé désactivé

.EU désactivé activé

.RN désactivé

activé

désactivé

activé

désactivé

.DN ou .ER désactivé

activé

désactivé

activé

.FD désactivé

activé

désactivé

activé

scrutation scrutation scrutation scrutation

entre dans la file d'attente

tente d'entrer dans la file, mais celle-ci est pleine

état d'entrée de la ligne

faux vrai faux

.EN désactivé activé

.EU désactivé activé

Publication 1756-RM003F-FR-P - Mai 2002

Page 464: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

16-4 Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Codes d'erreur ASCII

Si l'exécution d'une instruction port série ASCII échoue, le membre d'erreur « ERROR » de sa structure SERIAL_PORT_CONTROL contient l'un des codes d'erreur hexadécimal suivant :

Types de données chaîne

Vous stockez des caractères ASCII dans des points de type chaîne de caractères.

• Vous pouvez utiliser le type de données STRING par défaut. Il peut stocker jusqu'à 82 caractères.

• Vous pouvez créer un nouveau type de données chaîne qui stocke plus ou moins de caractères.

Pour créer un nouveau type de données chaîne, voir Automate Logix5000 - Procédures générales (publication 1756-PM001).

Ce code hex Indique que

16#2 Le modem est hors ligne.

16#3 Le signal CTS a été perdu pendant la communication.

16#4 Le port série était en mode System.

16#A Le bit UL a été activé avant l'exécution de l'instruction. Ceci empêche l'exécution de l'instruction.

16#C L'automate est passé du mode Exécution (Run) au mode Programme (Program). Ceci arrête l'exécution de l'instruction port série ASCII et efface la file d'attente.

16#D Dans l'onglet Protocole utilisateur de la boîte de dialogue Propriétés de l'automate, les paramètres de taille ou de mode écho du buffer ont été changés et appliqués. Ceci arrête l'exécution de l'instruction port série ASCII et efface la file d'attente.

16#E L'instruction ACL est exécutée.

16#F La configuration du port série passe du mode Utilisateur (User) au mode Système (System). Ceci arrête l'exécution d'une instruction port série ASCII et efface la file d'attente des instructions du port série ASCII.

16#51 La valeur LEN de la chaîne de caractères est négative ou supérieure à la taille DATA de la chaîne de caractères.

16#54 La longueur de contrôle du port série est supérieure à la taille du buffer.

16#55 La longueur de contrôle du port série est négative ou supérieure à la taille de la Source ou de la Destination.

Publication 1756-RM003F-FR-P - Mai 2002

Page 465: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-5

Chaque type de données chaîne contient les membres suivants :

Test ASCII du buffer (ABL) L'instruction ABL compte le nombre de caractères dans le buffer, jusqu'au premier caractère de fin inclus.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction ABL en logique à relais. Accédez à la valeur de Comptage des caractères par le membre .POS de la structure SERIAL_PORT_CONTROL.

Nom Type de données Description Remarques

LEN DINT nombre de caractères dans la chaîne

La valeur LEN est automatiquement mise à jour avec le nouveau nombre de caractères lorsque vous :

• utilisez la boîte de dialogue « Navigateur de chaîne » pour entrer des caractères ;

• utilisez des instructions qui lisent, convertissent ou manipulent une chaîne.

La valeur LEN indique la longueur de la chaîne en cours. Le membre DATA peut aussi contenir d'anciens caractères qui ne sont pas inclus dans la valeur LEN.

DATA tableau SINT caractères ASCII dans la chaîne

• Pour accéder aux caractères de la chaîne, adressez le nom du point.Par exemple, pour accéder aux caractères du point chaîne_1, entrez chaîne_1.

• Chaque élément du tableau DATA contient un caractère.

• Vous pouvez créer des nouveaux types de données chaîne qui stockent plus ou moins de caractères.

Opérande Type Format Description

Canal DINT immédiatpoint

0

Contrôle duport série

SERIAL_PORT_CONTROL

point point qui commande l'opération

Comptage des caractères

DINT immédiat 0

Pendant l'exécution, affiche le nombre de caractères dans le buffer, y compris le premier jeu de caractères de fin.

ENDNER

ASCII Test For Buffer LineChannel ?SerialPort Control ?Character Count ?

ABL

ABL(ChannelSerialPortControl);

Publication 1756-RM003F-FR-P - Mai 2002

Page 466: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

16-6 Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Structure SERIAL_PORT_CONTROL

Description : L'instruction ABL cherche le premier jeu de caractères de fin dans le buffer. Si l'instruction trouve les caractères de fin, elle :

• active le bit .FD ;

• compte le nombre de caractères dans le buffer, jusqu'au premier jeu de caractères de fin inclus.

L'onglet Protocole utilisateur de la boîte de dialogue Propriétés de l'automate définit les caractères ASCII que l'instruction considère comme les caractères de fin.

Pour programmer l'instruction ABL, suivez ces directives :

1. Configurez le port série de l'automate pour le mode Utilisateur et définissez les caractères qui servent de caractères de fin.

2. Cette instruction est une instruction de transition :

• en logique à relais, fait passer l'état d'entrée de la ligne d'effacé à activé chaque fois que l'instruction doit être exécutée ;

• en texte structuré, conditionne l'instruction afin qu'elle soit exécutée uniquement lors d'une transition. Voir l'Annexe C.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Mnémonique Type de données

Description

.EN BOOL Le bit d'activation indique que l'instruction est activée.

.EU BOOL Le bit de file d'attente indique que l'instruction est dans la file d'attente ASCII.

.DN BOOL Le bit de fin indique que l'instruction est terminée, mais il est asynchrone par rapport à la scrutation logique.

.RN BOOL Le bit d'exécution indique que l'instruction est en cours d'exécution.

.EM BOOL Le bit vide indique que l'instruction est terminée, mais il est synchrone par rapport à la scrutation logique.

.ER BOOL Le bit d'erreur indique quand l'instruction échoue (erreurs).

.FD BOOL Le bit trouvé indique que l'instruction a trouvé le ou les caractères de fin.

.POS DINT La position détermine le nombre de caractères dans le buffer, jusqu'au premier jeu de caractères de fin inclus. L'instruction renvoie ce nombre uniquement après avoir trouvé le ou les caractères de fin.

.ERROR DINT L'erreur contient une valeur hexadécimale qui identifie la cause d'une erreur.

Publication 1756-RM003F-FR-P - Mai 2002

Page 467: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-7

Exécution :

Exemple : Tester le buffer en continu pour détecter la présence de caractères de fin.

Logique à relais

Texte structuré

ABL(0,MV_line);

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai L'instruction est exécutée lorsque l'état d'entrée de la ligne passe d'effacé à activé.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction L'instruction compte les caractères dans le buffer.Le bit .EN est activé.Les autres bits d'état sont effacés, sauf le bit .UL.L'instruction tente d'entrer dans la file d'attente ASCII.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

/MV_line.EN

ENDNER

ASCII Test For Buffer LineChannel 0SerialPort Control MV_lineCharacter Count 0

ABL

Publication 1756-RM003F-FR-P - Mai 2002

Page 468: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

16-8 Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Caractères ASCII dans buffer (ACB)

L'instruction ACB compte les caractères dans le buffer.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction ACB en logique à relais. Indiquez cependant la valeur de Comptage des caractères en accédant au membre .POS de la structure SERIAL_PORT_CONTROL, plutôt qu'en incluant la valeur dans la liste des opérandes.

Structure SERIAL_PORT_CONTROL

Description : L'instruction ACB compte les caractères dans le buffer.

Pour programmer l'instruction ACB, suivez ces directives :

1. Configurez le port série de l'automate en mode Utilisateur (User).

Opérande Type Format Entrez

Canal DINT immédiatpoint

0

Contrôle duport série

SERIAL_PORT_CONTROL

point point qui commande l'opération

Comptage des caractères

DINT immédiat 0

Pendant l'exécution, affiche le nombre de caractères dans le buffer.

ENDNER

ASCII Chars in BufferChannel ?SerialPort Control ?Character Count ?

ACB

ACB(ChannelSerialPortControl);

Mnémonique Type de données

Description

.EN BOOL Le bit d'activation indique que l'instruction est activée.

.EU BOOL Le bit de file d'attente indique que l'instruction est dans la file d'attente ASCII.

.DN BOOL Le bit de fin indique que l'instruction est terminée, mais il est asynchrone par rapport à la scrutation logique.

.RN BOOL Le bit d'exécution indique que l'instruction est en cours d'exécution.

.EM BOOL Le bit vide indique que l'instruction est terminée, mais il est synchrone par rapport à la scrutation logique.

.ER BOOL Le bit d'erreur indique quand l'instruction échoue (erreurs).

.FD BOOL Le bit trouvé indique que l'instruction a trouvé un caractère.

.POS DINT La position détermine le nombre de caractères dans le buffer, jusqu'au premier jeu de caractères de fin inclus.

.ERROR DINT L'erreur contient une valeur hexadécimale qui identifie la cause d'une erreur.

Publication 1756-RM003F-FR-P - Mai 2002

Page 469: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions port série 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'entrée de la ligne d'effacé à activé chaque fois que l'instruction doit être exécutée ;

• en texte structuré, conditionne l'instruction afin qu'elle soit exécutée uniquement lors d'une transition. Voir Annexe C.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Exemple : Compter les caractères dans le buffer en continu.

Logique à relais

Texte structuré

ACB(0,bar_code_count);

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai L'instruction est exécutée lorsque l'état d'entrée de la ligne passe d'effacé à activé.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction L'instruction compte les caractères dans le buffer.Le bit .EN est activé.Les autres bits d'état sont effacés, sauf le bit .UL.L'instruction tente d'entrer dans la file d'attente ASCII.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

/bar_code_count.EN

ENDNER

ASCII Chars in BufferChannel 0SerialPort Control bar_code_countCharacter Count 0

ACB

Publication 1756-RM003F-FR-P - Mai 2002

Page 470: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

16-10 Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Effacement buffer ASCII (ACL)

L'instruction ACL efface immédiatement le contenu du buffer et la file d'attente ASCII.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction ACL en logique à relais.

Description : L'instruction ACL exécute immédiatement l'une des actions suivantes, ou les deux :

• efface les caractères présents dans le buffer, ainsi que les instructions de lecture de la file d'attente ASCII ;

• efface les instructions d'écriture de la file d'attente ASCII.

Pour programmer l'instruction ACL, suivez ces directives :

1. Configurez le port série de l'automate :

2. Pour déterminer si une instruction a été retirée de la file d'attente ou si elle a été abandonnée, examinez les éléments suivants dans l'instruction appropriée :

• le bit .ER est activé ;

• le membre .ERROR est 16#E.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Opérande Type Format Entrez

Canal DINT immédiatpoint

0

Effacer lecture port série

BOOL immédiatpoint

Pour effacer le buffer et retirer les instructions ARD et ARL de la file d'attente, entrez Oui.

Effacer écriture port série

BOOL immédiatpoint

Pour retirer les instructions AWA et AWT de la file d'attente, entrez Oui.

ASCII Clear BufferChannel ?Clear Serial Port Read ?Clear Serial Port Write ?

ACL

ACL(Channel,ClearSerialPortRead,ClearSerialPortWrite);

Si votre application Action

utilise des instructions ARD ou ARL Sélectionnez le mode Utilisateur (User).

n'utilise pas d'instructions ARD ou ARL Sélectionnez le mode Système (System) ou Utilisateur.

Publication 1756-RM003F-FR-P - Mai 2002

Page 471: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-11

Exécution :

Exemple : Lorsque l'automate passe en mode Exécution (Run), efface le contenu du buffer et la file d'attente ASCII.

Logique à relais

Texte structuré

osri_1.InputBit := S:FS;

OSRI(osri_1);

IF (osri_1.OutputBit) THEN

ACL(0,0,1);

END_IF;

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction L'instruction efface les instructions et le contenu du (des) buffer(s) indiqués.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

S:FS

ASCII Clear BufferChannel 0Clear Serial Port Read 1Clear Serial Port Write 1

ACL

Publication 1756-RM003F-FR-P - Mai 2002

Page 472: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

16-12 Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Lignes d'échange ASCII (AHL)

L'instruction AHL obtient l'état des lignes de commande et active ou désactive les signaux DTR et RTS.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction AHL en logique à relais. Indiquez cependant la valeur d'Etat du canal en accédant au membre .POS de la structure SERIAL_PORT_CONTROL, plutôt qu'en incluant la valeur dans la liste des opérandes.

EN

DN

ER

ASCII Handshake LinesChannel ?AND Mask ?

??OR Mask ?

??SerialPort Control ?Channel Status(Decimal) ?

AHL

Opérande Type Format Entrez

Canal DINT immédiatpoint

0

ANDMask DINT immédiatpoint

reportez-vous à la description

ORMask DINT immédiatpoint

Contrôle du port série SERIAL_PORT_CONTROL point point qui commande l'opération

Etat du canal (décimal) DINT immédiat 0

Pendant l'exécution, affiche l'état des lignes de commande.

Pour l'état de cette ligne de commande Examinez ce bit

CTS 0

RTS 1

DSR 2

DCD 3

DTR 4

Caractère XOFF reçu 5

AHL(Channel,ANDMask,ORMask,SerialPortControl);

Publication 1756-RM003F-FR-P - Mai 2002

Page 473: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-13

Structure SERIAL_PORT_CONTROL

Description : L'instruction AHL peut :

• obtenir l'état des lignes de commande du port série ;

• activer ou désactiver le signal de terminal de données prêt (DTR) ;

• activer ou désactiver le signal de demande pour émettre (RTS).

Pour programmer l'instruction AHL, suivez ces directives :

1. Configurez le port série de l'automate :

2. Utilisez le tableau suivant pour sélectionner les valeurs correctes pour les opérandes ANDMask et ORMask :

Mnémonique Type de données

Description

.EN BOOL Le bit d'activation indique que l'instruction est activée.

.EU BOOL Le bit de file d'attente indique que l'instruction est dans la file d'attente ASCII.

.DN BOOL Le bit de fin indique que l'instruction est terminée, mais il est asynchrone par rapport à la scrutation logique.

.RN BOOL Le bit d'exécution indique que l'instruction est en cours d'exécution.

.EM BOOL Le bit vide indique que l'instruction est terminée, mais il est synchrone par rapport à la scrutation logique.

.ER BOOL Le bit d'erreur indique quand l'instruction échoue (erreurs).

.FD BOOL Le bit trouvé ne s'applique pas à cette instruction.

.POS DINT La position stocke l'état des lignes de commande.

.ERROR DINT L'erreur contient une valeur hexadécimale qui identifie la cause d'une erreur.

Si votre application Action

utilise des instructions ARD ou ARL Sélectionnez le mode Utilisateur (User).

n'utilise pas d'instructions ARD ou ARL Sélectionnez le mode Système (System) ou Utilisateur.

Pour que DTR soit Et pour que RTS soit

Entrez cette valeur ANDMask

Et entrez cette valeur ORMask

désactivé désactivé 3 0

activé 1 2

inchangé 1 0

activé désactivé 2 1

activé 0 3

inchangé 0 1

inchangé désactivé 2 0

activé 0 2

inchangé 0 0

Publication 1756-RM003F-FR-P - Mai 2002

Page 474: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

16-14 Instructions port série 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'entrée de la ligne d'effacé à activé chaque fois que l'instruction doit être exécutée ;

• en texte structuré, conditionne l'instruction afin qu'elle soit exécutée uniquement lors d'une transition. Voir Annexe C.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur :

Exécution :

Type Code Cause Méthode de correction

4 57 L'instruction AHL n'a pas été exécutée car le port série est réglé sur pas d'échange.

Vous pouvez au choix :• changer le réglage de la ligne de contrôle du

port série ;• supprimer l'instruction AHL.

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai L'instruction est exécutée lorsque l'état d'entrée de la ligne passe d'effacé à activé.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction L'instruction obtient l'état de la ligne de commande et active ou désactive les signaux DTR et RTS.Le bit .EN est activé.Les autres bits d'état sont effacés, sauf le bit .UL.L'instruction tente d'entrer dans la file d'attente ASCII.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 475: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-15

Exemple : Lorsque get_control_line_status est activé, l'instruction obtient l'état des lignes de commande du port série et stocke l'état dans l'opérande Etat du canal. Pour afficher l'état d'une ligne de commande particulière, surveillez le point SerialPortControl et développez le membre POS.

Logique à relais

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;

get_control_line_status

EN

DN

ER

ASCII Handshake LinesChannel 0AND Mask 0 OR Mask 0 SerialPort Control serial_portChannel Status(Decimal) 29

AHL

Publication 1756-RM003F-FR-P - Mai 2002

Page 476: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

16-16 Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Lecture ASCII (ARD) L'instruction ARD retire des caractères du buffer et les stocke dans la Destination.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction ARD en logique à relais. Indiquez cependant les valeurs de Longueur de contrôle du port série et de Caractères lus en accédant aux membres .LEN et .POS de la structure SERIAL_PORT_CONTROL, plutôt qu'en incluant les valeurs dans la liste des opérandes.

EN

DN

ER

ASCII Read Channel ?Destination ?

??SerialPort Control ?SerialPort Control Length ?Characters Read ?

ARD

Opérande Type Format Entrez Remarques

Canal DINT immédiatpoint

0

Destination STRINGSINTINTDINT

point point dans lequel les caractères sont déplacés (lecture) :

• pour un type de données chaîne, entrez le nom du point ;

• pour un tableau SINT, INT ou DINT, entrez le premier élément du tableau.

• Si vous voulez comparer, convertir ou manipuler les caractères, utilisez un type de données chaîne.

• Les types de données chaîne sont :• type de données STRING par défaut ;• tout nouveau type de données chaîne

que vous créez.

Contrôle duport série

SERIAL_PORT_CONTROL

point point qui commande l'opération

Longueur de contrôledu port série

DINT immédiat nombre de caractères à transférer vers la destination (lecture)

• La longueur de contrôle du port série doit être inférieure ou égale à la taille de la Destination.

• Si vous voulez que la longueur de contrôle du port série soit égale à la taille de la Destination, entrez 0.

Caractères lus DINT immédiat 0 Pendant l'exécution, affiche le nombre de caractères lus.

ARD(Channel,Destination,SerialPortControl);

Publication 1756-RM003F-FR-P - Mai 2002

Page 477: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-17

Structure SERIAL_PORT_CONTROL

Description : L'instruction ARD retire le nombre défini de caractères du buffer et les stocke dans la Destination :

• l'instruction ARD est exécutée jusqu'à ce que le nombre de caractères indiqué aient été retirés (Longueur de contrôle du port série) ;

• pendant l'exécution de l'instruction ARD, aucune autre instruction port série ASCII n'est exécutée.

Pour programmer l'instruction ARD, suivez ces directives :

1. Configurez le port série de l'automate en mode Utilisateur (User).

2. Utilisez les résultats d'une instruction ACB pour déclencher l'instruction ARD. Ceci empêche l'instruction ARD d'arrêter la file d'attente ASCII pendant qu'elle attend le nombre de caractères indiqué.

3. Il s'agit d'une instruction de transition :

• en logique à relais, fait passer l'état d'entrée de la ligne d'effacé à activé chaque fois que l'instruction doit être exécutée ;

• en texte structuré, conditionne l'instruction afin qu'elle soit exécutée uniquement lors d'une transition. Voir Annexe C.

4. Pour déclencher une action après l'exécution de l'instruction, examinez le bit EM.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Mnémonique Type de données

Description

.EN BOOL Le bit d'activation indique que l'instruction est activée.

.EU BOOL Le bit de file d'attente indique que l'instruction est dans la file d'attente ASCII.

.DN BOOL Le bit de fin indique que l'instruction est terminée, mais il est asynchrone par rapport à la scrutation logique.

.RN BOOL Le bit d'exécution indique que l'instruction est en cours d'exécution.

.EM BOOL Le bit vide indique que l'instruction est terminée, mais il est synchrone par rapport à la scrutation logique.

.ER BOOL Le bit d'erreur indique quand l'instruction échoue (erreurs).

.FD BOOL Le bit trouvé ne s'applique pas à cette instruction.

.LEN DINT La longueur indique le nombre de caractères à déplacer dans la Destination (lecture).

.POS DINT La position affiche le nombre de caractères lus.

.ERROR DINT L'erreur contient une valeur hexadécimale qui identifie la cause d'une erreur.

Publication 1756-RM003F-FR-P - Mai 2002

Page 478: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

16-18 Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Exécution :

Exemple : Un lecteur de codes-barres envoie des codes-barres au port série (canal 0) de l'automate. Chaque code-barres contient 24 caractères. Pour déterminer à quel moment l'automate reçoit un code-barres, l'instruction ACB compte en continu les caractères présents dans le buffer. Lorsque le buffer contient au moins 24 caractères, l'automate a reçu un code-barres. L'instruction ARD déplace le code-barres dans le membre DATA du point bag_bar_code, qui est une chaîne.

Logique à relais

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;

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai L'instruction est exécutée lorsque l'état d'entrée de la ligne passe d'effacé à activé.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction L'instruction retire des caractères du buffer et les stocke dans la Destination.Le bit .EN est activé.Les autres bits d'état sont effacés, sauf le bit .UL.L'instruction tente d'entrer dans la file d'attente ASCII.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

/bar_code_count.EN

ENDNER

ASCII Chars in BufferChannel 0SerialPort Control bar_code_countCharacter Count 0

ACB

Grtr Than or Eql (A>=B)Source A bar_code_count.pos

0Source B 24

GEQEN

DN

ER

ASCII ReadChannel 0Destination bag_bar_code

''SerialPort Control bar_code_readSerialPort Control Length 24Characters Read 0

ARD

Publication 1756-RM003F-FR-P - Mai 2002

Page 479: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-19

Ligne de lecture ASCII (ARL)

L'instruction ARL retire des caractères définis du buffer et les stocke dans la Destination.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction ARL en logique à relais. Indiquez cependant les valeurs de Longueur de contrôle du port série et de Caractères lus en accédant aux membres .LEN et .POS de la structure SERIAL_PORT_CONTROL, plutôt qu'en incluant les valeurs dans la liste des opérandes.

EN

DN

ER

ASCII Read LineChannel ?Destination ?

??SerialPort Control ?SerialPort Control Length ?Characters Read ?

ARL

Opérande Type Format Entrez Remarques

Canal DINT immédiatpoint

0

Destination STRINGSINTINTDINT

point point dans lequel les caractères sont déplacés (lecture) :

• pour un type de données chaîne, entrez le nom du point ;

• pour un tableau SINT, INT ou DINT, entrez le premier élément du tableau.

• Si vous voulez comparer, convertir ou manipuler les caractères, utilisez un type de données chaîne.

• Les types de données chaîne sont :• type de données STRING par défaut ;• tout nouveau type de données chaîne

que vous créez.

Contrôle duport série

SERIAL_PORT_CONTROL

point point qui commande l'opération

Longueur de contrôle du port série

DINT immédiat nombre maximum de caractères à lire si aucun caractère de fin n'est trouvé.

• Entrez le nombre maximum de caractères qu'un message peut contenir (ex. : quand arrêter la lecture si aucun caractère de fin n'est trouvé).

Par exemple, si les messages ont une longueur de 3 à 6 caractères, entrez 6.

• La longueur de contrôle du port série doit être inférieure ou égale à la taille de la Destination.

• Si vous voulez que la longueur de contrôle du port série soit égale à la taille de la Destination, entrez 0.

Caractères lus DINT immédiat 0 Pendant l'exécution, affiche le nombre de caractères lus.

ARL(Channel,Destination,SerialPortControl);

Publication 1756-RM003F-FR-P - Mai 2002

Page 480: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

16-20 Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Structure SERIAL_PORT_CONTROL

Description : L'instruction ARL retire des caractères du buffer et les stocke dans la Destination comme suit :

• l'exécution de l'instruction ARL continue jusqu'à ce qu'elle ait retiré un des éléments suivants :

– le premier jeu de caractères de fin ;

– le nombre de caractères indiqué (Longueur de contrôle du port série) ;

• pendant l'exécution de l'instruction ARL, aucune autre instruction port série ASCII n'est exécutée.

Pour programmer l'instruction ARL, suivez ces directives :

1. Configurez le port série de l'automate.

a. Sélectionnez le mode Utilisateur (User).

b. Définissez les caractères qui servent de caractères de fin.

2. Utilisez les résultats d'une instruction ABL pour déclencher l'instruction ARL. Ceci empêche l'instruction ARL d'arrêter la file d'attente ASCII pendant qu'elle attend les caractères de fin.

3. Il s'agit d'une instruction de transition :

• en logique à relais, fait passer l'état d'entrée de la ligne d'effacé à activé chaque fois que l'instruction doit être exécutée.

• en texte structuré, conditionne l'instruction afin qu'elle soit exécutée uniquement lors d'une transition. Voir Annexe C.

4. Pour déclencher une action après l'exécution de l'instruction, examinez le bit EM.

Mnémonique Type de données

Description

.EN BOOL Le bit d'activation indique que l'instruction est activée.

.EU BOOL Le bit de file d'attente indique que l'instruction est dans la file d'attente ASCII.

.DN BOOL Le bit de fin indique que l'instruction est terminée, mais il est asynchrone par rapport à la scrutation logique.

.RN BOOL Le bit d'exécution indique que l'instruction est en cours d'exécution.

.EM BOOL Le bit vide indique que l'instruction est terminée, mais il est synchrone par rapport à la scrutation logique.

.ER BOOL Le bit d'erreur indique quand l'instruction échoue (erreurs).

.FD BOOL Le bit trouvé ne s'applique pas à cette instruction.

.LEN DINT La longueur indique le nombre maximum de caractères à déplacer dans la destination (ex. : quand arrêter la lecture si aucun caractère de fin n'est trouvé).

.POS DINT La position affiche le nombre de caractères lus.

.ERROR DINT L'erreur contient une valeur hexadécimale qui identifie la cause d'une erreur.

Publication 1756-RM003F-FR-P - Mai 2002

Page 481: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-21

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Exemple : Tester le buffer en continu pour trouver un message provenant d'un terminal MessageView. Chaque message étant terminé par un retour chariot ($r), le retour chariot est configuré comme le caractère de fin dans l'onglet Protocole utilisateur de la boîte de dialogue Propriétés de l'automate. Lorsque l'instruction ABL trouve un retour chariot, elle active le bit FD.

Lorsque l'instruction ABL trouve le retour chariot (MV_line.FD est activé), l'automate a reçu un message complet. L'instruction ARL retire les caractères du buffer, jusqu'au retour chariot inclus, et les place dans le membre DATA du point MV_msg, qui est une chaîne.

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai L'instruction est exécutée lorsque l'état d'entrée de la ligne passe d'effacé à activé.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction L'instruction retire les caractères définis du buffer et les stocke dans la Destination.Le bit .EN est activé.Les autres bits d'état sont effacés, sauf le bit .UL.L'instruction tente d'entrer dans la file d'attente ASCII.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 482: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

16-22 Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Logique à relais

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;

/MV_line.EN

ENDNER

ASCII Test For Buffer LineChannel 0SerialPort Control MV_lineCharacter Count 0

ABL

MV_line.FD

EN

DN

ER

ASCII Read LineChannel 0Destination MV_msg

''SerialPort Control MV_readSerialPort Control Length 12Characters Read 0

ARL

Publication 1756-RM003F-FR-P - Mai 2002

Page 483: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-23

Ajout d'écriture ASCII (AWA)

L'instruction AWA envoie un nombre défini de caractères du point Source vers un équipement série et ajoute un ou deux caractères prédéfinis.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction AWA en logique à relais. Indiquez cependant les valeurs de Longueur de contrôle du port série et de Caractères envoyés en accédant aux membres .LEN et .POS de la structure SERIAL_PORT_CONTROL, plutôt qu'en incluant les valeurs dans la liste des opérandes.

EN

DN

ER

ASCII Write Append Channel ?Source ?

??SerialPort Control ?SerialPort Control Length ?Characters Sent ?

AWA

Opérande Type Format Entrez Remarques

Canal DINT immédiatpoint

0

Source STRINGSINTINTDINT

point point contenant les caractères à envoyer :

• pour un type de données chaîne, entrez le nom du point ;

• pour un tableau SINT, INT ou DINT, entrez le premier élément du tableau.

• Si vous voulez comparer, convertir ou manipuler les caractères, utilisez un type de données chaîne.

• Les types de données chaîne sont :• type de données STRING par

défaut ;• tout nouveau type de données

chaîne que vous créez.

Contrôle duport série

SERIAL_PORT_CONTROL

point point qui commande l'opération

Longueur de contrôle du port série

DINT immédiat nombre de caractères à envoyer

• La longueur de contrôle du port série doit être inférieure ou égale à la taille de la Source.

• Si vous voulez que la longueur de contrôle du port série soit égale au nombre de caractères de la Source, entrez 0.

Caractères envoyés

DINT immédiat 0 Pendant l'exécution, affiche le nombre de caractères envoyés.

AWA(Channel,Source,SerialPortControl);

Publication 1756-RM003F-FR-P - Mai 2002

Page 484: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

16-24 Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Structure SERIAL_PORT_CONTROL

Description : L'instruction AWA :

• envoie le nombre de caractères indiqué (Longueur de contrôle du port série) du point Source vers l'équipement connecté au port série de l'automate ;

• ajoute un ou deux caractères, définis dans l'onglet Protocole utilisateur de la boîte de dialogue Propriétés de l'automate, à la fin des caractères.

Pour programmer l'instruction AWA, suivez ces directives :

1. Configurez le port série de l'automate.

a. Votre application comprend-elle également des instructions ARD ou ARL ?

b. Définissez les caractères à ajouter aux données.

2. Il s'agit d'une instruction de transition :

• en logique à relais, fait passer l'état d'entrée de la ligne d'effacé à activé chaque fois que l'instruction doit être exécutée.

• en texte structuré, conditionne l'instruction afin qu'elle soit exécutée uniquement lors d'une transition. Voir Annexe C.

Mnémonique Type de données

Description

.EN BOOL Le bit d'activation indique que l'instruction est activée.

.EU BOOL Le bit de file d'attente indique que l'instruction est dans la file d'attente ASCII.

.DN BOOL Le bit de fin indique que l'instruction est terminée, mais il est asynchrone par rapport à la scrutation logique.

.RN BOOL Le bit d'exécution indique que l'instruction est en cours d'exécution.

.EM BOOL Le bit vide indique que l'instruction est terminée, mais il est synchrone par rapport à la scrutation logique.

.ER BOOL Le bit d'erreur indique quand l'instruction échoue (erreurs).

.FD BOOL Le bit trouvé ne s'applique pas à cette instruction.

.LEN DINT La longueur indique le nombre de caractères à envoyer.

.POS DINT La position affiche le nombre de caractères envoyés.

.ERROR DINT L'erreur contient une valeur hexadécimale qui identifie la cause d'une erreur.

Si Action

Oui Sélectionnez le mode Utilisateur (User).

Non Sélectionnez le mode Système (System) ou Utilisateur.

Publication 1756-RM003F-FR-P - Mai 2002

Page 485: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-25

3. Envoyez-vous toujours le même nombre de caractères à chaque exécution de l'instruction ?

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Exemple 1 : Lorsque la température dépasse la limite supérieure (temp_high est activé), l'instruction AWA envoie un message au terminal MessageView connecté au port série de l'automate. Le message contient cinq caractères provenant du membre DATA du point string[1], qui est une chaîne ($14 compte pour un caractère : c'est le code hexadécimal du caractère Ctrl-T). L'instruction envoie (ajoute) également les caractères définis dans les propriétés de l'automate. Dans cet exemple, l'instruction AWA envoie un retour chariot ($0D), qui marque la fin du message.

Logique à relais

Si Action

Oui Entrez le nombre de caractères à envoyer dans la longueur de contrôle du port série.

Non Avant que l'instruction ne soit exécutée, activez le membre LEN du point Source vers le membre LEN du point Contrôle du port série.

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux

L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai

L'instruction est exécutée lorsque l'état d'entrée de la ligne passe d'effacé à activé.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction

L'instruction envoie un nombre défini de caractères et ajoute un ou deux caractères prédéfinis.Le bit .EN est activé.Les autres bits d'état sont effacés, sauf le bit .UL.L'instruction tente d'entrer dans la file d'attente ASCII.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

temp_high

EN

DN

ER

ASCII Write AppendChannel 0Source string[1]

'$1425\1'SerialPort Control temp_high_writeSerialPort Control Length 5Characters Sent 6

AWA

Publication 1756-RM003F-FR-P - Mai 2002

Page 486: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

16-26 Instructions port série 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;

Exemple 2 : Lorsque alarm est activé, l'instruction AWA envoie le nombre de caractères indiqué dans alarm_msg et ajoute un ou plusieurs caractères de fin. Le nombre de caractères dans alarm_msg variant, la ligne commence par déplacer la longueur de la chaîne (alarm_msg.LEN) dans la longueur de contrôle du port série de l'instruction AWA (alarm_write.LEN). Dans alarm_msg, $14 compte pour un caractère : c'est le code hexadécimal du caractère Ctrl-T.

Logique à relais

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;

alarm

MoveSource alarm_msg.LEN 5Dest alarm_write.LEN 5

MOVEN

DN

ER

ASCII Write AppendChannel 0Source alarm_msg

'$1425\1'SerialPort Control alarm_writeSerialPort Control Length 5Characters Sent 6

AWA

Publication 1756-RM003F-FR-P - Mai 2002

Page 487: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-27

Ecriture ASCII (AWT) L'instruction AWT envoie un nombre défini de caractères du point Source vers un équipement série.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction AWT en logique à relais. Indiquez cependant les valeurs de Longueur de contrôle du port série et Caractères envoyés en accédant aux membres .LEN et .POS de la structure SERIAL_PORT_CONTROL, plutôt qu'en incluant les valeurs dans la liste des opérandes.

EN

DN

ER

ASCII WriteChannel ?Source ?

??SerialPort Control ?SerialPort Control Length ?Characters Sent ?

AWT

Opérande Type Format Entrez Remarques

Canal DINT immédiatpoint

0

Source STRINGSINTINTDINT

point point contenant les caractères à envoyer :

• pour un type de données chaîne, entrez le nom du point ;

• pour un tableau SINT, INT ou DINT, entrez le premier élément du tableau.

• Si vous voulez comparer, convertir ou manipuler les caractères, utilisez un type de données chaîne.

• Les types de données chaîne sont :• type de données STRING par

défaut ;• tout nouveau type de données

chaîne que vous créez.

Contrôle duport série

SERIAL_PORT_CONTROL

point point qui commande l'opération

Longueur de contrôle du port série

DINT immédiat nombre de caractères à envoyer

• La longueur de contrôle du port série doit être inférieure ou égale à la taille de la Source.

• Si vous voulez que la longueur de contrôle du port série soit égale au nombre de caractères de la Source, entrez 0.

Caractères envoyés

DINT immédiat 0 Pendant l'exécution, affiche le nombre de caractères envoyés.

AWT(Channel,Source,SerialPortControl);

Publication 1756-RM003F-FR-P - Mai 2002

Page 488: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

16-28 Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Structure SERIAL_PORT_CONTROL

Description : L'instruction AWT envoie le nombre de caractères indiqué (Longueur de contrôle du port série) du point Source vers l'équipement connecté au port série de l'automate

Pour programmer l'instruction AWT, suivez ces directives :

1. Configurez le port série de l'automate :

2. Il s'agit d'une instruction de transition :

• en logique à relais, fait passer l'état d'entrée de la ligne d'effacé à activé chaque fois que l'instruction doit être exécutée.

• en texte structuré, conditionne l'instruction afin qu'elle soit exécutée uniquement lors d'une transition. Voir Annexe C.

3. Envoyez-vous toujours le même nombre de caractères à chaque exécution de l'instruction ?

Indicateurs d'état arithmétique : non affectés

Mnémonique Type de données

Description

.EN BOOL Le bit d'activation indique que l'instruction est activée.

.EU BOOL Le bit de file d'attente indique que l'instruction est dans la file d'attente ASCII.

.DN BOOL Le bit de fin indique que l'instruction est terminée, mais il est asynchrone par rapport à la scrutation logique.

.RN BOOL Le bit d'exécution indique que l'instruction est en cours d'exécution.

.EM BOOL Le bit vide indique que l'instruction est terminée, mais il est synchrone par rapport à la scrutation logique.

.ER BOOL Le bit d'erreur indique quand l'instruction échoue (erreurs).

.FD BOOL Le bit trouvé ne s'applique pas à cette instruction.

.LEN DINT La longueur indique le nombre de caractères à envoyer.

.POS DINT La position affiche le nombre de caractères envoyés.

.ERROR DINT L'erreur contient une valeur hexadécimale qui identifie la cause d'une erreur.

Si votre application Action

utilise des instructions ARD ou ARL Sélectionnez le mode Utilisateur (User).

n'utilise pas d'instructions ARD ou ARL

Sélectionnez le mode Système (System) ou Utilisateur.

Si Action

Oui Entrez le nombre de caractères à envoyer dans la longueur de contrôle du port série.

Non Avant que l'instruction ne soit exécutée, déplacez le membre LEN du point Source dans le membre LEN du point Contrôle du port série.

Publication 1756-RM003F-FR-P - Mai 2002

Page 489: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-29

Conditions d'erreur : aucune

Exécution :

Exemple 1 : Lorsque la température atteint la limite inférieure (temp_low est activé), l'instruction AWT envoie un message au terminal MessageView connecté au port série de l'automate. Le message contient neuf caractères provenant du membre DATA du point string[2], qui est une chaîne ($14 compte pour un caractère : c'est le code hexadécimal du caractère Ctrl-T). Le dernier caractère est un retour chariot ($r), qui marque la fin du message.

Logique à relais

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 caractères dans MV_msg. Le nombre de caractères dans MV_msg variant, la ligne commence par déplacer la longueur de la chaîne (MV_msg.LEN) dans la longueur de contrôle du port série de l'instruction AWT

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai L'instruction est exécutée lorsque l'état d'entrée de la ligne passe d'effacé à activé.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction L'instruction envoie un nombre défini de caractères.Le bit .EN est activé.Les autres bits d'état sont effacés, sauf le bit .UL.L'instruction tente d'entrer dans la file d'attente ASCII.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

temp_low

EN

DN

ER

ASCII WriteChannel 0Source string[2]

'$142224\01$r'SerialPort Control temp_low_writeSerialPort Control Length 9Characters Sent 9

AWT

Publication 1756-RM003F-FR-P - Mai 2002

Page 490: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

16-30 Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Notes :

Publication 1756-RM003F-FR-P - Mai 2002

Page 491: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Chapitre 17

Instructions de chaîne ASCII(CONCAT, DELETE, FIND, INSERT, MID)

Introduction Utilisez les instructions de chaîne ASCII pour créer et modifier des chaînes de caractères ASCII.

Vous pouvez également utiliser les instructions suivantes pour comparer ou convertir des caractères ASCII :

Si vous voulez Par exemple Utilisez cette instruction

Disponible dans ces langages

Voir page

ajouter des caractères à la fin d'une chaîne

ajouter des caractères de fin ou des séparateurs dans une chaîne

CONCAT logique à relaistexte structuré

17-3

effacer des caractères d'une chaîne supprimer les caractères d'en-tête ou de contrôle d'une chaîne

DELETE logique à relaistexte structuré

17-5

déterminer le caractère de début d'une sous-chaîne

localiser un groupe de caractères dans une chaîne

FIND logique à relaistexte structuré

17-7

insérer des caractères dans une chaîne

créer une chaîne qui utilise des variables

INSERT logique à relaistexte structuré

17-9

extraire des caractères d'une chaîne extraire des informations d'un code-barres

MID logique à relaistexte structuré

17-11

Si vous voulez Utilisez cette instruction

Voir page

comparer une chaîne à une autre CMP 4-2

voir si les caractères sont égaux à des caractères spécifiques EQU 4-7

voir si les caractères ne sont pas égaux à des caractères spécifiques NEQ 4-38

voir si les caractères sont supérieurs ou égaux à des caractères spécifiques GEQ 4-11

voir si les caractères sont supérieurs à des caractères spécifiques GRT 4-15

voir si les caractères sont inférieurs ou égaux à des caractères spécifiques LEQ 4-19

voir si les caractères sont inférieurs à des caractères spécifiques LES 4-23

réorganiser les octets d'un point INT, DINT ou REAL SWPB 6-18

trouver une chaîne dans un tableau de chaînes FSC 7-18

convertir des caractères en une valeur SINT, INT, DINT ou REAL STOD 18-3

convertir des caractères en une valeur REAL STOR 18-5

convertir une valeur SINT, INT, DINT ou REAL en une chaîne de caractères ASCII DTOS 18-7

convertir une valeur REAL en une chaîne de caractères ASCII RTOS 18-9

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 492: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

17-2 Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID)

Types de données chaîne

You store ASCII characters in tags that use a string data type.

• You can use the default STRING data type. It stores up to 82 characters.

• You can create a new string data type that stores less or more characters.

To create a new string data type, see Automate Logix5000 - Procédures générales (publication 1756-PM001).

Each string data type contains the following members:

Name: Data Type: Description: Notes:

LEN DINT number of characters in the string

The LEN automatically updates to the new count of characters whenever you:• use the String Browser dialog box to enter characters• use instructions that read, convert, or manipulate a string

The LEN shows the length of the current string. The DATA member may contain additional, old characters, which are not included in the LEN count.

DATA SINT array ASCII characters of the string

• To access the characters of the string, address the name of the tag.For example, to access the characters of the string_1 tag, enter string_1.

• Each element of the DATA array contains one character.

• You can create new string data types that store less or more characters.

Publication 1756-RM003F-FR-P - Mai 2002

Page 493: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID) 17-3

Concaténation de chaînes (CONCAT)

L'instruction CONCAT ajoute des caractères ASCII à la fin d'une chaîne.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction CONCAT en logique à relais.

Description : L'instruction CONCAT combine les caractères de Source A avec les caractères de Source B et stocke le résultat dans la Destination :

• les caractères de Source A sont les premiers, suivis des caractères de Source B ;

• à moins que Source A et la Destination ne soient le même point, Source A ne change pas.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur :

Exécution :

String ConcatenateSource A ? ??Source B ? ??Dest ? ??

CONCAT

Opérande Type Format Entrez Remarques

Source A STRING point le point contenant les caractères de début

Les types de données chaîne sont :• type de données STRING par défaut ;• tout nouveau type de données chaîne

que vous créez.Source B STRING point le point contenant les caractères de fin

Destination STRING point le point pour le stockage du résultat

CONCAT(SourceA,SourceB,Dest);

Type Code Cause Méthode de correction

4 51 La valeur LEN de la chaîne de caractères est supérieure à la taille DATA de la chaîne de caractères.

1. Vérifiez qu'aucune instruction n'écrit dans le membre LEN de la chaîne.2. Dans la valeur LEN, entrez le nombre de caractères contenus dans la

chaîne.

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

Publication 1756-RM003F-FR-P - Mai 2002

Page 494: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

17-4 Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID)

Exemple : Pour déclencher un message dans un terminal MessageView, l'automate doit envoyer une chaîne ASCII contenant un numéro de message et un numéro de station. String_1 contient le numéro du message. Lorsque add_node est activé, l'instruction CONCAT ajoute les caractères de node_num_ascii (numéro de station) à la fin de la chaîne de caractères dans string_1, puis stocke le résultat dans msg.

Logique à relais

Texte structuré

IF add_node THEN

CONCAT(string_1,node_num_ascii,msg);

add_node := 0;

END_IF;

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction L'instruction assemble (concatène) les chaînes.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

Condition Action de la logique à relais Action du texte structuré

add_node

String ConcatenateSource A string_1

'$1423\'Source B node_num_ascii

'1'Dest msg

'$1423\1'

CONCAT

Publication 1756-RM003F-FR-P - Mai 2002

Page 495: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID) 17-5

Effacement dans une chaîne (DELETE)

L'instruction DELETE supprime des caractères ASCII d'une chaîne.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction DELETE en logique à relais.

Description : L'instruction DELETE efface (supprime) un groupe de caractères de la Source et stocke les caractères qui restent dans la Destination :

• la position de Début et la Quantité définissent les caractères à effacer ;

• à moins que la Source et la Destination ne soient le même point, la Source ne change pas.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur :

String DeleteSource ? ??Qty ? ??Start ? ??Dest ? ??

DELETE

Opérande Type Format Entrez Remarques

Source STRING point le point qui contient la chaîne dont vous voulez retirer des caractères

Les types de données chaîne sont :• type de données STRING par défaut ;• tout nouveau type de données chaîne

que vous créez.

Quantité SINTINTDINT

immédiatpoint

le nombre de caractères à effacer La valeur de Début plus la valeur de Quantité doit être inférieure ou égale à la taille DATA de la Source.

Début SINTINTDINT

immédiatpoint

la position du premier caractère à effacer

Entrez un numéro entre 1 et la taille DATA de la Source.

Destination STRING point le point pour le stockage du résultat

DELETE(Source,Qty,Start,Dest);

Type Code Cause Méthode de correction

4 51 La valeur LEN de la chaîne de caractères est supérieure à la taille DATA de la chaîne de caractères.

1. Vérifiez qu'aucune instruction n'écrit dans le membre LEN de la chaîne.2. Dans la valeur LEN, entrez le nombre de caractères contenus dans la

chaîne.

4 56 La valeur de Début ou de Quantité est incorrecte.

1. Vérifiez que la valeur de Début est entre 1 et la taille DATA de la Source.2. Vérifiez que la valeur de Début plus la valeur de Quantité est inférieure

ou égale à la taille DATA de la Source.

Publication 1756-RM003F-FR-P - Mai 2002

Page 496: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

17-6 Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID)

Exécution :

Exemple : Les informations ASCII d'un terminal contiennent un caractère d'en-tête. Une fois que l'automate a lu les données (term_read.EM est activé), l'instruction DELETE efface le caractère d'en-tête.

Logique à relais

Texte structuré

IF term_read.EM THEN

DELETE(term_input,1,1,term_text);

term_read.EM := 0;

END_IF;

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux

L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai

L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction

L'instruction efface les caractères définis.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

term_read.EM

String DeleteSource term_input

'$0655'Qty 1

Start 1

Dest term_text

'55'

DELETE

Publication 1756-RM003F-FR-P - Mai 2002

Page 497: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID) 17-7

Recherche de chaîne (FIND)

L'instruction FIND repère la position de début d'une chaîne définie, à l'intérieur d'une autre chaîne.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction FIND en logique à relais décrite ci-dessus.

Description : L'instruction FIND recherche la chaîne Recherche dans la chaîne Source. Si l'instruction trouve la chaîne Recherche, le Résultat indique la position de début de cette chaîne dans la chaîne Source.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur :

Find StringSource ? ??Search ? ??Start ? ??Result ? ??

FIND

Opérande Type Format Entrez Remarques

Source STRING point la chaîne dans laquelle la recherche est à effectuer

Les types de données chaîne sont :• type de données STRING par défaut ;• tout nouveau type de données chaîne

que vous créez.Recherche STRING point la chaîne à rechercher

Début SINTINTDINT

immédiatpoint

la position dans la Source à partir de laquelle la recherche doit commencer

Entrez un numéro entre 1 et la taille DATA de la Source.

Résultat SINTINTDINT

point le point qui stocke la position de début de la chaîne à rechercher

FIND(Source,Search,Start,Result);

Type Code Cause Méthode de correction

4 51 La valeur LEN de la chaîne de caractères est supérieure à la taille DATA de la chaîne de caractères.

1. Vérifiez qu'aucune instruction n'écrit dans le membre LEN de la chaîne.

2. Dans la valeur LEN, entrez le nombre de caractères contenus dans la chaîne.

4 56 La valeur de Début est incorrecte. Vérifiez que la valeur de Début est entre 1 et la taille DATA de la Source.

Publication 1756-RM003F-FR-P - Mai 2002

Page 498: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

17-8 Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID)

Exécution :

Exemple : Un message de terminal MessageView contient plusieurs informations. La barre oblique inverse [ \ ] sépare chaque information. Pour trouver une information, l'instruction FIND recherche le caractère barre oblique inverse et enregistre sa position dans find_pos.

Logique à relais

Texte structuré

IF MV_read.EM THEN

FIND(MV_msg,find,1,find_pos);

MV_read.EM := 0;

END_IF;

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux

L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai

L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction

L'instruction recherche les caractères définis.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

MV_read.EM

Find StringSource MV_msg '$06324\12\1\$r'Search find

'\'Start 1

Result find_pos

5

FIND

Publication 1756-RM003F-FR-P - Mai 2002

Page 499: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID) 17-9

Insérer chaîne (INSERT) L'instruction INSERT ajoute des caractères ASCII à un emplacement défini d'une chaîne.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction INSERT en logique à relais.

Description : L'instruction INSERT ajoute les caractères de Source B à un emplacement défini dans Source A et place le résultat dans la Destination :

• Début définit où Source B doit être inséré dans Source A ;

• à moins que Source A et la Destination ne soient le même point, Source A ne change pas.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur :

Insert StringSource A ? ??Source B ? ??Start ? ??Dest ? ??

INSERT

Opérande Type Format Entrez Remarques

Source A STRING point la chaîne dans laquelle vous voulez insérer des caractères

Les types de données chaîne sont :• type de données STRING par défaut ;• tout nouveau type de données chaîne

que vous créez.Source B STRING point la chaîne contenant les

caractères à insérer

Début SINTINTDINT

immédiatpoint

la position dans Source A où les caractères doivent être insérés

Entrez un numéro entre 1 et la taille DATA de la Source.

Résultat STRING point la chaîne pour le stockage du résultat

INSERT(SourceA,SourceB,Start,Dest);

Type Code Cause Méthode de correction

4 51 La valeur LEN de la chaîne de caractères est supérieure à la taille DATA de la chaîne de caractères.

1. Vérifiez qu'aucune instruction n'écrit dans le membre LEN de la chaîne.

2. Dans la valeur LEN, entrez le nombre de caractères contenus dans la chaîne.

4 56 La valeur de Début est incorrecte. Vérifiez que la valeur de Début est entre 1 et la taille DATA de la Source.

Publication 1756-RM003F-FR-P - Mai 2002

Page 500: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

17-10 Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID)

Exécution :

Exemple : Lorsque temp_high est activé, l'instruction INSERT insère les caractères de string_2 à la position 2 dans string_1 et place le résultat dans string_3:

Logique à relais

Texte structuré

IF temp_high THEN

INSERT(string_1,string_2,2,string_3);

temp_high := 0;

END_IF;

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux

L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai

L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction

L'instruction insère les caractères définis.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

temp_high

Insert StringSource A string_1

'AD'Source B string_2

'BC'Start 2

Dest string_3

'ABCD'

INSERT

Publication 1756-RM003F-FR-P - Mai 2002

Page 501: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID) 17-11

Copie dans une chaîne (MID)

L'instruction MID copie un nombre déterminé de caractères ASCII à partir d'une chaîne et les stocke dans une autre chaîne.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction MID en logique à relais.

Description : L'instruction MID copie un groupe de caractères de la Source et stocke le résultat dans la Destination :

• la position de Début et la Quantité définissent les caractères à copier ;

• à moins que la Source et la Destination ne soient le même point, la Source ne change pas.

Indicateurs d'état arithmétique : non affectés

Middle StringSource ? ??Qty ? ??Start ? ??Dest ? ??

MID

Opérande Type Format Entrez Remarques

Source STRING point la chaîne à partir de laquelle vous voulez copier des caractères

Les types de données chaîne sont :• type de données STRING par défaut ;• tout nouveau type de données chaîne

que vous créez.

Quantité SINTINTDINT

immédiatpoint

le nombre de caractères à copier

La valeur de Début plus la valeur de Quantité doit être inférieure ou égale à la taille DATA de la Source.

Début SINTINTDINT

immédiatpoint

la position du premier caractère à copier

Entrez un numéro entre 1 et la taille DATA de la Source.

Destination STRING point la chaîne dans laquelle les caractères doivent être copiés

MID(Source,Qty,Start,Dest);

Publication 1756-RM003F-FR-P - Mai 2002

Page 502: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

17-12 Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID)

Conditions d'erreur :

Exécution :

Exemple : Sur les tapis roulants d'un aéroport, chaque valise reçoit un code-barres. Les caractères 9 à 17 de ce code représentent le numéro du vol et l'aéroport de destination. Une fois que le code a été lu (bag_read.EM est activé), l'instruction MID copie le numéro du vol et l'aéroport de destination dans la chaîne bag_flt_and_dest.

Logique à relais

Texte structuré

IF bag_read.EM THEN

MID(bar_barcode,9,9,bag_flt_and_dest);

bag_read.EM := 0;

END_IF;

Type Code Cause Méthode de correction

4 51 La valeur LEN de la chaîne de caractères est supérieure à la taille DATA de la chaîne de caractères.

1. Vérifiez qu'aucune instruction n'écrit dans le membre LEN de la chaîne.

2. Dans la valeur LEN, entrez le nombre de caractères contenus dans la chaîne.

4 56 La valeur de Début ou de Quantité est incorrecte.

1. Vérifiez que la valeur de Début est entre 1 et la taille DATA de la Source.

2. Vérifiez que la valeur de Début plus la valeur de Quantité est inférieure ou égale à la taille DATA de la Source.

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux

L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai

L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction

L'instruction copie les caractères définis à partir d'une chaîne et les stocke dans une autre chaîne.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

bag_read.EM

Middle StringSource bag_barcode 'NWA HOP 5058 AMS 01'

Qty 9

Start 9

Dest bag_flt_and_dest '5058 AMS '

MID

Publication 1756-RM003F-FR-P - Mai 2002

Page 503: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Chapitre 18

Instructions de conversion ASCII(STOD, STOR, DTOS, RTOS, UPPER, LOWER)

Introduction Utilisez les instructions de conversion ASCII pour modifier le format des données.

Si vous voulez Par exemple Utilisez cette instruction

Disponible dans ces langages

Voir page

convertir la représentation ASCII d'un nombre entier en une valeur SINT, INT, DINT ou REAL

convertir une valeur de balance de pesage, ou d'un autre équipement ASCII, en nombre entier pour l'utiliser dans votre programme

STOD logique à relaistexte structuré

18-3

convertir la représentation ASCII d'une valeur à virgule flottante en une valeur REAL

convertir une valeur de balance de pesage, ou d'un autre équipement ASCII, en une valeur REAL pour l'utiliser dans votre programme

STOR logique à relaistexte structuré

18-5

convertir une valeur SINT, INT, DINT ou REAL en une chaîne de caractères ASCII

convertir une variable en une chaîne ASCII pour l'envoyer à un terminal MessageView

DTOS logique à relaistexte structuré

18-7

convertir une valeur REAL en une chaîne de caractères ASCII

convertir une variable en une chaîne ASCII pour l'envoyer à un terminal MessageView

RTOS logique à relaistexte structuré

18-9

convertir les lettres d'une chaîne de caractères ASCII en majuscules

convertir une entrée effectuée en majuscules par un opérateur pour que vous puissiez la chercher dans un tableau

UPPER logique à relaistexte structuré

18-11

convertir les lettres d'une chaîne de caractères ASCII en minuscules

convertir une entrée effectuée en minuscules par un opérateur pour que vous puissiez la chercher dans un tableau

LOWER logique à relaistexte structuré

18-13

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 504: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

18-2 Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)

Vous pouvez également utiliser les instructions suivantes pour comparer ou manipuler des caractères ASCII :

Types de données chaîne

You store ASCII characters in tags that use a string data type.

• You can use the default STRING data type. It stores up to 82 characters.

• You can create a new string data type that stores less or more characters.

To create a new string data type, see Automate Logix5000 - Procédures générales (publication 1756-PM001).

Each string data type contains the following members:

Si vous voulez Utilisez cette instruction Voir page

ajouter des caractères à la fin d'une chaîne CONCAT 17-3

effacer des caractères d'une chaîne DELETE 17-5

déterminer le caractère de début d'une sous-chaîne FIND 17-7

insérer des caractères dans une chaîne INSERT 17-9

extraire des caractères d'une chaîne MID 17-11

réorganiser les octets d'un point INT, DINT ou REAL SWPB 6-18

comparer une chaîne à une autre CMP 4-2

voir si les caractères sont égaux à des caractères spécifiques EQU 4-7

voir si les caractères ne sont pas égaux à des caractères spécifiques NEQ 4-38

voir si les caractères sont supérieurs ou égaux à des caractères spécifiques GEQ 4-11

voir si les caractères sont supérieurs à des caractères spécifiques GRT 4-15

voir si les caractères sont inférieurs ou égaux à des caractères spécifiques LEQ 4-19

voir si les caractères sont inférieurs à des caractères spécifiques LES 4-23

trouver une chaîne dans un tableau de chaînes FSC 7-18

Name: Data Type: Description: Notes:

LEN DINT number of characters in the string

The LEN automatically updates to the new count of characters whenever you:• use the String Browser dialog box to enter characters• use instructions that read, convert, or manipulate a string

The LEN shows the length of the current string. The DATA member may contain additional, old characters, which are not included in the LEN count.

DATA SINT array ASCII characters of the string

• To access the characters of the string, address the name of the tag.For example, to access the characters of the string_1 tag, enter string_1.

• Each element of the DATA array contains one character.

• You can create new string data types that store less or more characters.

Publication 1756-RM003F-FR-P - Mai 2002

Page 505: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) 18-3

Chaîne vers DINT (STOD) L'instruction STOD convertit la représentation ASCII d'un nombre entier en une valeur de nombre entier ou REAL.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction STOD en logique à relais.

Description : L'instruction STOD convertit la Source en nombre entier et place le résultat dans la Destination.

• L'instruction convertit les nombres positifs et négatifs.

• Si la chaîne Source contient des caractères non numériques, l'instruction STOD convertit le premier groupe de chiffres contigus :

– l'instruction saute tous les premiers caractères de commande ou non numériques (sauf le signe moins placé devant un nombre) ;

– si la chaîne contient plusieurs groupes de chiffres séparés par des séparateurs (ex. : / ), l'instruction ne convertit que le premier groupe de chiffres.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

String To DINTSource ? ??Dest ? ??

STOD

Opérande Type Format Entrez Remarques

Source STRING point le point qui contient la valeur ASCII

Les types de données chaîne sont :• type de données STRING par défaut ;• tout nouveau type de données chaîne

que vous créez.

Destination SINTINTDINTREAL

point le point qui stocke la valeur de nombre entier

Si la valeur Source est un nombre à virgule flottante, l'instruction convertit uniquement la partie non décimale du nombre (quel que soit le type de données de la destination).

STOD(Source,Dest);

Publication 1756-RM003F-FR-P - Mai 2002

Page 506: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

18-4 Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)

Conditions d'erreur :

Exécution :

Exemple : Lorsque MV_read.EM est activé, l'instruction STOD convertit le premier groupe de caractères numériques dans MV_msg en un nombre entier. L'instruction saute le premier caractère de commande ($06) et s'arrête au séparateur ( \ ).

Logique à relais

Texte structuré

IF MV_read.EM THEN

STOD(MV_msg,MV_msg_nmbr);

MV_read.EM := 0;

END_IF;

Type Code Cause Méthode de correction

4 51 La valeur LEN de la chaîne de caractères est supérieure à la taille DATA de la chaîne de caractères.

1. Vérifiez qu'aucune instruction n'écrit dans le membre LEN de la chaîne.

2. Dans la valeur LEN, entrez le nombre de caractères contenus dans la chaîne.

4 53 Le nombre de sorties dépasse les limites du type de données de la destination.

Vous pouvez au choix :• réduire la taille de la valeur ASCII ;• utiliser un type de données plus grand pour la

destination.

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux

L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai

L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction

S:C est activé.La Destination est effacée.L'instruction convertit la Source.Si le résultat est zéro, S:Z est activé.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

MV_read.EM

String To DINTSource MV_msg '$06324\12\1\$r'Dest MV_msg_nmbr

324

STOD

Publication 1756-RM003F-FR-P - Mai 2002

Page 507: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) 18-5

Chaîne vers REAL (STOR) L'instruction STOR convertit la représentation ASCII d'une valeur à virgule flottante en valeur REAL.

Opérandes :

Opérandes de logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction STOR en logique à relais.

Description : L'instruction STOR convertit la Source en valeur REAL et place le résultat dans la Destination.

• L'instruction convertit les nombres positifs et négatifs.

• Si la chaîne Source contient des caractères non numériques, l'instruction STOR convertit le premier groupe de chiffres contigus, y compris la virgule décimale [ , ] :

– l'instruction saute tous les premiers caractères de commande ou non numériques (sauf le signe moins placé devant un nombre) ;

– si la chaîne contient plusieurs groupes de chiffres séparés par des séparateurs (ex. : / ), l'instruction ne convertit que le premier groupe de chiffres.

Indicateurs d'état arithmétique : Les indicateurs d'état arithmétique sont affectés.

Conditions d'erreur :

String to RealSource ? ??Dest ? ??

STOR

Opérande Type Format Entrez Remarques

Source STRING point le point qui contient la valeur ASCII

Les types de données chaîne sont :• type de données STRING par défaut ;• tout nouveau type de données chaîne

que vous créez.

Destination REAL point le point qui stocke la valeur REAL

STOR(Source,Dest);

Type Code Cause Méthode de correction

4 51 La valeur LEN de la chaîne de caractères est supérieure à la taille DATA de la chaîne de caractères.

1. Vérifiez qu'aucune instruction n'écrit dans le membre LEN de la chaîne.

2. Dans la valeur LEN, entrez le nombre de caractères contenus dans la chaîne.

4 53 Le nombre de sorties dépasse les limites du type de données de la destination.

Vous pouvez au choix :• réduire la taille de la valeur ASCII ;• utiliser un type de données plus grand pour la

destination.

Publication 1756-RM003F-FR-P - Mai 2002

Page 508: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

18-6 Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)

Exécution :

Exemple : Après avoir lu le poids indiqué par une balance de pesage (weight_read.EM est activé), l'instruction STOR convertit les caractères numériques de weight_ascii en une valeur REAL.

Il peut y avoir une petite différence entre les parties décimales de la Source et de la Destination.

Logique à relais

Texte structuré

IF weight_read.EM THEN

STOR(weight_ascii,weight);

weight_read.EM := 0;

END_IF;

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux

L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai

L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction

S:C est activé.La Destination est effacée.L'instruction convertit la Source.Si le résultat est zéro, S:Z est activé.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

weight_read.EM

String to RealSource weight_ascii

'428.259'Dest weight

428.259

STOR

Publication 1756-RM003F-FR-P - Mai 2002

Page 509: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) 18-7

DINT vers chaîne (DTOS) L'instruction DTOS donne la représentation ASCII d'une valeur.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction DTOS en logique à relais.

Description : L'instruction DTOS convertit la Source en une chaîne de caractères ASCII et place le résultat dans la Destination.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur :

Exécution :

DINT to StringSource ? ??Dest ? ??

DTOS

Opérande Type Format Entrez Remarques

Source SINTINTDINTREAL

point le point qui contient la valeur

Si la source est une valeur REAL, l'instruction la convertit en valeur DINT. Reportez-vous à REAL en nombre entier, page A-5.

Destination STRING point le point qui stocke la valeur ASCII

Les types de données chaîne sont :• type de données STRING par défaut ;• tout nouveau type de données chaîne

que vous créez.

DTOS(Source,Dest);

Type Code Cause Méthode de correction

4 51 La valeur LEN de la chaîne de caractères est supérieure à la taille DATA de la chaîne de caractères.

1. Vérifiez qu'aucune instruction n'écrit dans le membre LEN de la chaîne.

2. Dans la valeur LEN, entrez le nombre de caractères contenus dans la chaîne.

4 52 La chaîne de sortie est plus grande que la destination. Créez un nouveau type de données chaîne suffisamment grand pour la chaîne de sortie. Utilisez le nouveau type de données chaîne comme type de données pour la destination.

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux

L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai

L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

Publication 1756-RM003F-FR-P - Mai 2002

Page 510: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

18-8 Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)

Exemple : Lorsque temp_high est activé, l'instruction DTOS convertit la valeur dans msg_num en une chaîne de caractères ASCII et place le résultat dans msg_num_ascii. Les lignes suivantes insèrent ou assemblent msg_num_ascii avec d'autres chaînes pour produire un message complet pour un terminal d'affichage.

Logique à relais

Texte structuré

IF temp_high THEN

DTOS(msg_num,msg_num_ascii);

temp_high := 0;

END_IF;

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction

L'instruction convertit la Source.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

Condition Action de la logique à relais Action du texte structuré

temp_high

DINT to StringSource msg_num

23Dest msg_num_ascii

'23'

DTOS

Publication 1756-RM003F-FR-P - Mai 2002

Page 511: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) 18-9

REAL vers chaîne (RTOS) L'instruction RTOS donne la représentation ASCII d'une valeur REAL.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction RTOS en logique à relais.

Description : L'instruction RTOS convertit la Source en une chaîne de caractères ASCII et place le résultat dans la Destination.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur :

Real to StringSource ? ??Dest ? ??

RTOS

Opérande Type Format Entrez Remarques

Source REAL point le point qui contient la valeur REAL

Destination STRING point le point qui stocke la valeur ASCII

Les types de données chaîne sont :• type de données STRING par défaut ;• tout nouveau type de données chaîne

que vous créez.

RTOS(Source,Dest);

Type Code Cause Méthode de correction

4 51 La valeur LEN de la chaîne de caractères est supérieure à la taille DATA de la chaîne de caractères.

1. Vérifiez qu'aucune instruction n'écrit dans le membre LEN de la chaîne.

2. Dans la valeur LEN, entrez le nombre de caractères contenus dans la chaîne.

4 52 La chaîne de sortie est plus grande que la destination. Créez un nouveau type de données chaîne suffisamment grand pour la chaîne de sortie. Utilisez le nouveau type de données chaîne comme type de données pour la destination.

Publication 1756-RM003F-FR-P - Mai 2002

Page 512: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

18-10 Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)

Exécution :

Exemple : Lorsque send_data est activé, l'instruction RTOS convertit la valeur dans data_1 en une chaîne de caractères ASCII et place le résultat dans data_1_ascii. Les lignes suivantes insèrent ou assemblent data_1_ascii avec d'autres chaînes pour produire un message complet pour un terminal d'affichage.

Il peut y avoir une petite différence entre les parties décimales de la Source et de la Destination.

Logique à relais

Texte structuré

IF send_data THEN

RTOS(data_1,data_1_ascii);

send_data := 0;

END_IF;

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux

L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai

L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction

L'instruction convertit la Source.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

send_data

Real to StringSource data_1

15.3001Dest data_1_ascii '15.3001003'

RTOS

Publication 1756-RM003F-FR-P - Mai 2002

Page 513: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) 18-11

Majuscule (UPPER) L'instruction UPPER convertit les caractères alphabétiques d'une chaîne en caractères majuscules.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction UPPER en logique à relais.

Description : L'instruction UPPER convertit toutes les lettres de Source en majuscules et place le résultat dans la Destination.

• Les caractères ASCII sont différents s'ils sont en majuscules ou en minuscules. Un « A » majuscule ($41) n'est pas égal à un « a » minuscule ($61).

• Si des opérateurs entrent directement des caractères ASCII, convertissez-les tous en majuscules ou en minuscules avant de les comparer.

Tout caractère de la chaîne Source qui n'est pas une lettre reste inchangé.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Opérande Type Format Description

Source STRING point point qui contient les caractères que vous voulez convertir en majuscules

Destination STRING point point qui stocke les caractères en majuscules

UPPER(Source,Dest);

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux

L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai

L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction

L'instruction convertit la Source en majuscules.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 514: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

18-12 Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)

Exemple : Pour trouver des informations sur un élément particulier, un opérateur entre la référence de l'élément dans un terminal ASCII. Une fois que l'automate a lu l'entrée à partir d'un terminal (terminal_read.EM est activé), l'instruction UPPER convertit les caractères dans catalog_number en majuscules et stocke le résultat dans catalog_number_upper_case. Une ligne suivante recherche alors dans un tableau les caractères correspondant à ceux de catalog_number_upper_case.

Logique à relais

Texte structuré

IF terminal_read.EM THEN

UPPER(catalog_number,catalog_number_upper_case);

terminal_read.EM := 0;

END_IF;

Publication 1756-RM003F-FR-P - Mai 2002

Page 515: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) 18-13

Minuscule (LOWER) L'instruction LOWER convertit les caractères alphabétiques d'une chaîne en caractères minuscules.

Opérandes :

Logique à relais

Texte structuré

Les opérandes sont les mêmes que ceux de l'instruction LOWER en logique à relais.

Description : L'instruction LOWER convertit toutes les lettres de Source en minuscules et place le résultat dans la Destination.

• Les caractères ASCII sont différents s'ils sont en majuscules ou en minuscules. Un « A » majuscule ($41) n'est pas égal à un « a » minuscule ($61).

• Si des opérateurs entrent directement des caractères ASCII, convertissez-les tous en majuscules ou en minuscules avant de les comparer.

Tout caractère de la chaîne Source qui n'est pas une lettre reste inchangé.

Indicateurs d'état arithmétique : non affectés

Conditions d'erreur : aucune

Exécution :

Opérande Type Format Description

Source STRING point point qui contient les caractères que vous voulez convertir en minuscules

Destination STRING point point qui stocke les caractères en minuscules

LOWER(Source,Dest);

Condition Action de la logique à relais Action du texte structuré

pendant la pré-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

si l'état d'entrée de la ligne est faux

L'état de sortie de la ligne est réglé sur faux. -

si l'état d'entrée de la ligne est vrai

L'instruction est exécutée.L'état de sortie de la ligne est réglé sur vrai.

-

si EnableIn est activé - EnableIn est toujours activé.L'instruction est exécutée.

pendant l'exécution de l'instruction

L'instruction convertit la Source en minuscules.

pendant la post-scrutation L'état de sortie de la ligne est réglé sur faux. Aucune.

Publication 1756-RM003F-FR-P - Mai 2002

Page 516: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

18-14 Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)

Exemple : Pour trouver des informations sur un élément particulier, un opérateur entre la référence de l'élément dans un terminal ASCII. Une fois que l'automate a lu l'entrée à partir d'un terminal (terminal_read.EM est activé), l'instruction LOWER convertit les caractères dans item_number en minuscules et stocke le résultat dans item_number_lower_case. Une ligne suivante recherche alors dans un tableau les caractères correspondant à ceux de item_number_lower_case.

Logique à relais

Texte structuré

IF terminal_read.EM THEN

LOWER(item_number,item_number_lower_case);

terminal_read.EM := 0;

END_IF;

Publication 1756-RM003F-FR-P - Mai 2002

Page 517: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Annexe A

Attributs communs

Introduction Cette annexe décrit les attributs communs aux instructions Logix.

Valeurs immédiates Lorsque vous entrez une valeur immédiate (constante) en format décimal (ex. : -2, 3), l'automate stocke la valeur en utilisant 32 bits. Si vous entrez une valeur dans une base numérique autre que décimale, telle que binaire ou hexadécimale, et si vous ne précisez pas la totalité des 32 bits, l'automate place un zéro dans les bits que vous ne précisez pas (remplissage par des zéros).

Conversions de données Des conversions de données ont lieu lorsque vous combinez différents types de données dans votre programmation.

Pour des informations sur les Voir page

Valeurs immédiates A-1

Conversions de données A-1

EXEMPLE Remplissage de valeurs immédiates par des zéros

Si vous entrez L'automate stocke

-1 16#ffff ffff (-1)

16#ffff (-1) 16#0000 ffff (65535)

8#1234 (668) 16#0000 029c (668)

2#1010 (10) 16#0000 000a (10)

En programmation en Des conversions peuvent avoir lieu quand

logique à relais vous combinez différents types de données pour les paramètres d'une instruction

blocs fonctionnels vous relier deux paramètres ayant des types de données différents

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 518: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

A-2 Attributs communs

Les instructions sont exécutées plus rapidement et requièrent moins de mémoire si tous les opérandes de l'instruction utilisent :

• le même type de données ;

• un type de données optimal :

– dans la section « Opérandes » de chaque instruction décrite dans ce manuel, le type de données en gras indique le type de données optimal,

– les types de données DINT et REAL sont généralement les types optimaux,

– la plupart des instructions de bloc fonctionnel n'acceptent qu'un type de données (le type optimal) pour ses opérandes.

Si vous combinez différents types de données et utilisez des points qui ne sont pas le type de données optimal, l'automate convertit les données selon ces règles.

• Au moins un des opérandes est-il une valeur REAL ?

• Après l'exécution de l'instruction, le résultat (une valeur DINT ou REAL) est converti dans le type de données de la destination, si nécessaire.

Vous ne pouvez pas spécifier un point BOOL dans une instruction fonctionnant sur des types de données de nombres entiers ou REAL.

La conversion des données nécessitant du temps et de la mémoire supplémentaires, vous pouvez améliorer l'efficacité de vos programmes en :

• utilisant le même type de données dans toute l'instruction ;

• minimisant l'utilisation des types de données SINT ou INT.

En d'autres termes, utilisez tous les points DINT ou REAL, avec des valeurs immédiates, dans vos instructions.

Les sections suivantes indiquent comment les données sont converties lorsque vous utilisez les points SINT ou INT, ou lorsque vous combinez différents types de données.

Si Les opérandes d'entrée (source, point dans une expression, limite) sont convertis en

Oui REAL

Non DINT

Publication 1756-RM003F-FR-P - Mai 2002

Page 519: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Attributs communs A-3

SINT ou INT en DINT

Pour les instructions qui convertissent des valeurs SINT ou INT en valeurs DINT, les sections « Opérandes » de ce manuel indiquent la méthode de conversion.

L'exemple suivant montre les résultats de la conversion d'une valeur à l'aide de l'extension de signe et du remplissage par des zéros.

Les valeurs immédiates étant toujours converties par remplissage par des zéros, la conversion d'une valeur SINT ou INT peut produire des résultats 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 immédiate, est convertie par remplissage par des zéros.

Si vous utilisez un point SINT ou INT et une valeur immédiate dans une instruction qui convertit des données par extension de signe, utilisez l'une des méthodes suivantes pour manipuler les valeurs immédiates :

• indiquez toute valeur immédiate en base décimale ;

• si vous entrez la valeur dans une base numérique autre que décimale, précisez la totalité des 32 bits de la valeur immédiate. 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 ;

Cette méthode de conversion

Convertit les données en plaçant

Extension de signe la valeur du bit le plus à gauche (le signe de la valeur) dans chaque position de bit à gauche des bits existants jusqu'à ce qu'il y ait 32 bits.

Remplissage par des zéros des zéros à gauche des bits existants jusqu'à ce qu'il y ait 32 bits

Cette valeur 2#1111_1111_1111_1111 (-1)

Est convertie en cette valeur par extension de signe

2#1111_1111_1111_1111_1111_1111_1111_1111 (-1)

Est convertie en cette valeur par remplissage par des zéros

2#0000_0000_0000_0000_1111_1111_1111_1111 (65535)

der Logic Listing - Total number of rungs: 3

EqualSource A remote_rack_1:I.Data[0] 2#1111_1111_1111_1111Source B 2#1111_1111_1111_1111

EQU

42093

Publication 1756-RM003F-FR-P - Mai 2002

Page 520: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

A-4 Attributs communs

• créez un point pour chaque opérande et utilisez le même type de données dans toute l'instruction. Pour attribuer une valeur constante, procédez de l'une des façons suivantes :

– entrez-la dans l'un des points,

– ajoutez une instruction MOV qui déplace la valeur dans l'un des points.

• utilisez une instruction MEQ pour vérifier uniquement les bits requis.

Les exemples suivants montrent deux façons de combiner une valeur immédiate avec un point INT. Ces deux exemples vérifient les bits d'un module d'E/S 1771 pour déterminer si tous les bits sont activés. Le mot de données d'entrée d'un module d'E/S 1771 étant un point INT, le plus simple est d'utiliser une valeur constante de 16 bits.

Nombre entier en REAL

L'automate stocke les valeurs REAL dans le format de nombre à virgule flottante et précision unique IEEE. Il utilise un bit pour le signe de la valeur, 23 bits pour la valeur de base, et huit bits pour l'exposant (32 bits au total). Si vous combinez un point de nombre entier (SINT, INT ou DINT) et un point REAL comme entrées dans la même

EXEMPLE Combinaison d'un point INT avec une valeur immédiate

remote_rack_1:I.Data[0] étant un point INT, la valeur par rapport à laquelle il est vérifié est également entrée comme un point INT.

EXEMPLE Combinaison d'un point INT avec une valeur immédiate

remote_rack_1:I.Data[0] étant un point INT, la valeur par rapport à laquelle il est vérifié est d'abord déplacée dans int_0, un point INT également. L'instruction EQU compare alors les deux points.

EqualSource A remote_rack_1:I.Data[0] 2#1111_1111_1111_1111Source B int_0 2#1111_1111_1111_1111

EQU

42093

2#1111_1111_1111_1111

MoveSource 2#1111_1111_1111_1111 Dest int_0 2#1111_1111_1111_1111

MOVEqualSource A remote_rack_1:I.Data[0] 2#1111_1111_1111_1111Source B int_0 2#1111_1111_1111_1111

EQU

42093

Publication 1756-RM003F-FR-P - Mai 2002

Page 521: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Attributs communs A-5

instruction, l'automate convertit la valeur de nombre entier en valeur REAL avant que l'instruction ne soit exécutée.

• Une valeur SINT ou INT est toujours convertie dans la même valeur REAL.

• Une valeur DINT peut ne pas être convertie dans la même valeur REAL :

– une valeur REAL utilise jusqu'à 24 bits pour la valeur de base (23 bits stockés, 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 même valeur REAL. Si c'est le cas, l'automate arrondit à la valeur REAL la plus proche avec 24 bits significatifs.

DINT en SINT ou INT

Pour convertir une valeur DINT en valeur SINT ou INT, l'automate tronque la partie supérieure de la valeur DINT et active l'indicateur d'état de dépassement supérieur, si nécessaire. L'exemple suivant montre le résultat d'une conversion DINT en SINT ou INT.

REAL en nombre entier

Pour convertir une valeur REAL en un nombre entier, l'automate arrondit la partie décimale et tronque la partie supérieure de la partie non décimale. Si des données sont perdues, l’automate active l’indicateur d’état de dépassement supérieur. Les nombres sont arrondis de la façon suivante :

• les nombres autres que x,5 sont arrondis au nombre entier le plus proche ;

• x,5 est arrondi au nombre pair le plus proche.

EXEMPLE Conversion d'une valeur DINT en valeur INT et SINT

Cette valeur DINT Est convertie en cette valeur inférieure

16#0001_0081 (65,665) INT : 16#0081 (129)

SINT : 16#81 (-127)

Publication 1756-RM003F-FR-P - Mai 2002

Page 522: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

A-6 Attributs communs

L'exemple suivant donne le résultat de la conversion de valeurs REAL en valeurs DINT.

EXEMPLE Conversion de valeurs REAL en valeurs DINT

IMPORTANT Les indicateurs d'état arithmétique sont activés en fonction de la valeur stockée. Les instructions qui, en principe, n'affectent pas les mots-clés d'état arithmétique peuvent sembler le faire si une conversion de type se produit à cause de types de données combinés dans les paramètres de l'instruction. Le processus de conversion de type active les mots-clés d'état arithmétique.

Cette valeur REAL Est convertie en cette valeur DINT

-2,5 -2

-1,6 -2

-1,5 -2

-1,4 -1

1,4 1

1,5 2

1,6 2

2,5 2

Publication 1756-RM003F-FR-P - Mai 2002

Page 523: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Annexe B

Attributs de bloc fonctionnel

Introduction Cette annexe décrit des caractéristiques 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.

Verrouillage des données Si vous utilisez une instruction IREF pour spécifier les données d'entrée d'une instruction de bloc fonctionnel, les données dans l'instruction IREF sont verrouillées durant la scrutation du sous-programme de blocs fonctionnels, qu'elles proviennent de points d'accès programme ou d'accès automate. L'automate actualise toutes les données IREF au début de chaque scrutation.

Dans cet exemple, la valeur de pointA est stockée au début de l'exécution du sous-programme. La valeur stockée est utilisée lorsque Bloc_01 est exécuté. Cette valeur est également utilisée lorsque Bloc_02 est exécuté. Si la valeur de pointA change pendant l'exécution du sous-programme, la valeur stockée de pointA dans l'instruction IREF ne change pas avant l'exécution suivante du sous-programme.

IMPORTANT Lorsque vous programmez en blocs fonctionnels, limitez la plage

des unités procédé à +/-10+/-15 car les calculs à virgule flottante internes sont effectués en virgule flottante simple précision. Les unités procédé en dehors de cette plage peuvent entraîner une perte de précision si les résultats approchent les limites de virgule

flottante simple précision (+/-10+/-38).

IREF

pointA

Bloc_01

Bloc_02

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 524: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

B-2 Attributs de bloc fonctionnel

Cet exemple est identique au précédent. La valeur de pointA est stockée une seule fois au début de l'exécution du sous-programme. Le sous-programme utilise cette valeur pour l'ensemble du sous-programme.

Dans la version 11 du logiciel RSLogix 5000, vous pouvez utiliser le même point dans plusieurs instructions IREF et une instruction OREF dans le même sous-programme. Les valeurs des points dans les instructions IREF étant verrouillées par le sous-programme à chaque scrutation, les instructions IREF utilisent toutes la même valeur, même si une instruction OREF reçoit une valeur de point différente pendant l'exécution 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 liée à Bloc_02 utilise toujours une valeur de 25,4 lorsque Bloc_02 exécute cette scrutation. La nouvelle valeur 50,9 de pointA n'est utilisée par aucune instruction IREF de ce sous-programme jusqu'à la scrutation suivante.

pointA

Bloc_01

Bloc_02

pointA

Publication 1756-RM003F-FR-P - Mai 2002

Page 525: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Attributs de bloc fonctionnel B-3

Ordre d'exécution Le logiciel de programmation RSLogix 5000 détermine automatiquement l'ordre d'exécution des blocs fonctionnels dans un sous-programme lorsque vous :

• vérifiez un sous-programme de blocs fonctionnels ;

• vérifiez un projet contenant un sous-programme de blocs fonctionnels ;

• chargez un projet contenant un sous-programme de blocs fonctionnels.

Vous définissez l'ordre d'exécution lors du câblage des blocs fonctionnels et en indiquant les boucles de retour, si nécessaire.

Si les blocs fonctionnels ne sont pas reliés entre eux, il n'y a pas d'ordre d'exécution à déterminer.

Si vous reliez les blocs de façon séquentielle, l'ordre d'exécution va de l'entrée à la sortie. Les entrées d'un bloc doivent être disponibles avant que l'automate ne puisse exécuter ce bloc. Par exemple, le bloc 2 doit être exécuté avant le bloc 3 parce que les sorties du bloc 2 alimentent les entrées du bloc 3.

L'ordre d'exécution est valable uniquement pour les blocs reliés entre eux. L'exemple suivant est correct parce que les deux groupes de blocs ne sont pas reliés entre eux. Les blocs d'un groupe particulier sont exécutés dans l'ordre approprié par rapport aux blocs de ce groupe.

1 2 3

1 3 5

2 4 6

Publication 1756-RM003F-FR-P - Mai 2002

Page 526: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

B-4 Attributs de bloc fonctionnel

Si les blocs d'un groupe sont dans une boucle, l'automate ne peut pas déterminer les entrées qui doivent être accessibles en premier. Utilisez une boucle de retour pour déterminer les entrées qui doivent être accessibles en premier. Si un connecteur d'entrée est connecté à une boucle de retour, il n'est pas nécessaire que l'entrée soit accessible pour que le bloc soit exécuté. Dans cet exemple, le bloc 1 utilise la sortie du bloc 3 produite lors de la précédente exécution du sous-programme.

En résumé, un sous-programme de blocs fonctionnels est exécuté dans l'ordre suivant :

1. L'automate verrouille toutes les valeurs de données dans les instructions IREF.

2. L'automate exécute les autres blocs fonctionnels dans l'ordre déterminé par leur câblage.

3. L'automate écrit les sorties dans des instructions OREF.

1 2 3

boucle de retour

Publication 1756-RM003F-FR-P - Mai 2002

Page 527: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Attributs de bloc fonctionnel B-5

Réponses de bloc fonctionnel aux conditions de dépassement

En général, les instructions de bloc fonctionnel qui intègrent une valeur ne mettent pas à jour cette valeur lorsqu'un dépassement se produit. Chaque instruction répond de l'une des façons suivantes à un dépassement :

Modes de temporisation Ces instructions de commande de procédé et de variation de vitesse prennent en charge différents modes de temporisation.

DEDT NTCH

DERV PI

HPF PIDE

INTG RLIM

LDLG SCRV

LDL2 SOC

LPF TOT

Réponse 1 :Les blocs exécutent leur algorithme et vérifient le résultat pour ±NAN ou ±INF. Si ±NAN ou ±INF, la sortie du bloc est ±NAN ou ±INF.

Réponse 2 : Les blocs avec limite de sortie exécutent leur algorithme et vérifient le résultat pour ±NAN ou ±INF. Les limites de sortie sont définies par les paramètres d'entrée HighLimit et LowLimit. Si ±INF, la sortie du bloc donne un résultat limité. Si ±NAN, les limites de sortie ne sont pas utilisées et la sortie du bloc est ±NAN.

Réponse 3 :Il n'y a pas de condition de dépassement. Ces instructions ont généralement une sortie booléenne.

ALM NTCHDEDT PMULDERV POSPESEL RLIMFGEN RMPSHPF SCRVLDL2 SELLDLG SNEGLPF SRTPMAVE SSUMMAXC TOTMINC UPDNMSTDMUX

HLLINTGPIPIDESCLSOC

BAND OSRIBNOT RESDBOR RTORBXOR SETDCUTD TOFRD2SD TONRD3SDDFFJKFFOSFI

Publication 1756-RM003F-FR-P - Mai 2002

Page 528: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

B-6 Attributs de bloc fonctionnel

Il existe trois modes de temporisation :

Les instructions basées sur le temps requièrent une valeur constante pour DeltaT pour que l'algorithme de commande calcule correctement la sortie procédé. Si DeltaT varie, une discontinuité se produit dans la sortie procédé. L'importance de cette discontinuité dépend de l'instruction et de la plage dans laquelle DeltaT varie. Une discontinuité se produit si :

• l'instruction n'est pas exécutée pendant une scrutation ;

• l'instruction est exécutée plusieurs fois pendant une tâche ;

• la tâche est en cours d'exécution et sa fréquence de scrutation ou le temps d'échantillonnage de l'entrée procédé change ;

• l'utilisateur change le mode de temporisation pendant l'exécution de la tâche ;

• le paramètre Ordre est modifié sur un bloc filtre pendant l'exécution de la tâche. La modification du paramètre Ordre sélectionne un algorithme de commande différent dans l'instruction.

Mode de temporisation Description

périodique En mode périodique, la variable de temps (DeltaT) utilisée par l'instruction est la fréquence de scrutation de la tâche lorsque l'instruction est exécutée dans une tâche périodique. Si l'instruction est exécutée pendant une tâche continue, la variable DeltaT est égale au temps écoulé depuis l'exécution précédente.

La mise à jour de l'entrée procédé doit être synchronisée avec l'exécution de la tâche ou échantillonnée 5 à 10 fois plus rapidement que l'exécution de la tâche, afin de minimiser l'erreur d'échantillonnage entre l'entrée et l'instruction.

suréchantillonnage En mode de suréchantillonnage, la variable de temps (DeltaT) utilisée par l'instruction est la valeur écrite dans le paramètre OversampleDT de l'instruction. Utilisez ce mode lorsque l'instruction est exécutée dans une tâche continue et lorsque l'entrée procédé n'a pas d'horodatage associé à ses mises à jour. Si l'entrée procédé a une valeur d'horodatage, utilisez le mode d'échantillonnage en temps réel.

Ajoutez une logique à votre programme pour commander l'exécution de l'instruction. Vous pouvez utiliser, par exemple, un temporisateur réglé sur la valeur OversampleDeltaT pour commander l'exécution en utilisant l'entrée EnableIn de l'instruction.

L'entrée procédé doit être échantillonnée 5 à 10 fois plus rapidement que l'exécution de l'instruction, afin de minimiser l'erreur d'échantillonnage entre l'entrée et l'instruction.

échantillonnage en temps réel

En mode d'échantillonnage en temps réel, la variable de temps (DeltaT) utilisée par l'instruction est la différence entre deux valeurs d'horodatage qui correspondent aux mises à jour de l'entrée procédé. Utilisez ce mode lorsque l'instruction est exécutée dans une tâche continue et lorsque l'entrée procédé a un horodatage associé à ses mises à jour.

La valeur d'horodatage est lue à partir du nom de point entré pour le paramètre RTSTimeStamp de l'instruction. Ce nom de point est, en principe, un paramètre du module d'entrée associé à l'entrée procédé.

L'instruction compare la valeur RTSTime configurée (fréquence d'actualisation attendue) à la valeur DeltaT calculée pour déterminer si toutes les mises à jour de l'entrée procédé sont lues par l'instruction. Si DeltaT n'est pas à moins d'1 milliseconde du temps de configuration, l'instruction active le bit d'état RTSMissed pour indiquer un problème de lecture des mises à jour de l'entrée du module.

Publication 1756-RM003F-FR-P - Mai 2002

Page 529: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Attributs de bloc fonctionnel B-7

Paramètres d'instruction communs pour les modes de temporisation

Les instructions qui prennent en charge les modes de temporisation ont les paramètres d'entrée et de sortie suivants :

Paramètres d'entrée

Paramètre d'entrée Type de données

Description

TimingMode DINT Sélectionne le mode de temporisation.Valeur : Description : 0 mode périodique1 mode de suréchantillonnage2 mode d'échantillonnage en temps réel

Valeurs correctes = 0 à 2.Par défaut = 0.

Lorsque TimingMode = 0 et lorsque la tâche est périodique, le mode périodique est activé et DeltaT est réglée sur la fréquence de scrutation de la tâche. Lorsque TimingMode = 0 et que la tâche est continue, le mode périodique est activé et DeltaT est réglée pour être égale au temps écoulé depuis la dernière exécution de l'instruction.

Lorsque TimingMode = 1, le mode de suréchantillonnage est activé et DeltaT est réglée sur la valeur du paramètre OversampleDT.

Lorsque TimingMode = 2, le mode d'échantillonnage en temps réel est activé et DeltaT correspond à la différence entre la valeur d'horodatage en cours et la valeur précédente lues à partir du module associé à l'entrée.

Si TimingMode est incorrect, l'instruction active le bit approprié dans Status.

OversampleDT REAL Durée d'exécution pour la temporisation de suréchantillonnage. La valeur utilisée pour DeltaT est en secondes. Si TimingMode = 1, alors OversampleDT = 0,0 désactive l'exécution de l'algorithme de commande. Si la valeur est incorrecte, l'instruction règle DeltaT = 0,0 et active le bit approprié dans Status.Valeurs correctes = 0 à 4194,303 secondes.Par défaut = 0,0.

RTSTime DINT Fréquence d'actualisation du module en mode d'échantillonnage en temps réel. La fréquence d'actualisation DeltaT attendue est en millisecondes. La fréquence d'actualisation est, en principe, la valeur utilisée pour configurer la fréquence d'actualisation du module. Si la valeur est incorrecte, l'instruction active le bit approprié dans Status et désactive la vérification de RTSMissed.Valeurs correctes = 1 à 32 767 ms.Par défaut = 1.

RTSTimeStamp DINT Valeur d'horodatage en mode d'échantillonnage en temps réel. Valeur d'horodatage correspondant à la dernière mise à jour du signal d'entrée. Cette valeur est utilisée pour calculer DeltaT. Si la valeur est incorrecte, l'instruction active le bit approprié dans Status, désactive l'exécution de l'algorithme de commande, ainsi que la vérification de RTSMissed.

Valeurs correctes = 1 à 32 767 ms (revient de 32 767 à 0).1 comptage = 1 milliseconde.Par défaut = 0.

Publication 1756-RM003F-FR-P - Mai 2002

Page 530: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

B-8 Attributs de bloc fonctionnel

Paramètres de sortie

Paramètre de sortie Type de données

Description

DeltaT REAL Temps écoulé entre les mises à jour. Temps écoulé en secondes, utilisé par l'algorithme de commande pour calculer la sortie procédé.

Périodique : DeltaT = fréquence de scrutation de la tâche si la tâche est périodique ; DeltaT = temps écoulé depuis la précédente 'exécution de l'instruction si la tâche est continue.

Suréchantillonnage : DeltaT = OversampleDT

Echantillonnage en temps réel :DeltaT = (RTSTimeStampn - RTSTimeStampn-1)

Status DINT Etat du bloc fonctionnel.

TimingModeInv (Status.27)

BOOL Valeur TimingMode incorrecte.

RTSMissed (Status.28) BOOL Utilisé uniquement en mode d'échantillonnage en temps réel. Activé quand ABS | DeltaT - RTSTime | > 1 (0,001 seconde).

RTSTimeInv (Status.29)

BOOL Valeur RTSTime incorrecte.

RTSTimeStampInv (Status.30)

BOOL Valeur RTSTimeStamp incorrecte.

DeltaTInv (Status.31) BOOL Valeur DeltaT incorrecte.

Publication 1756-RM003F-FR-P - Mai 2002

Page 531: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Attributs de bloc fonctionnel B-9

Présentation des modes de temporisation

Le schéma suivant indique comment une instruction détermine le mode de temporisation approprié.

TimingMode = 2TimingMode = 1TimingMode = 0

Détermine le mode de temporisation

Temporisation en temps réelTemporisation de suréchantillonnageTemporisation périodique

Détermine le type de tâche

Tâche périodique Tâche non périodique

DeltaT = OversampleDT

Si DeltaT < 0 ou DeltaT > 4 194,303 s, l'instruction règle DeltaT = 0,0 et active le bit approprié dans Status.

Si DeltaT > 0, l'instruction est exécutée.

DeltaT = RTSTimeStampn - RTSTimeStampn-1

Si DeltaT > 0, l'instruction est exécutée.

Si |RTSTIME - DeltaT| > 1, l'instruction active le bit RTSMissed dans Status.

DeltaT = temps de scrutation de la tâche

Si DeltaT > 0, l'instruction est exécutée.

DeltaT = temps écoulé depuis la dernière exécution

Si DeltaT > 0, l'instruction est exécutée.

Publication 1756-RM003F-FR-P - Mai 2002

Page 532: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

B-10 Attributs de bloc fonctionnel

Commande Programme/Opérateur

Plusieurs instructions prennent en charge le concept de commande Programme/Opérateur. Ces instructions comprennent :

• Sélection étendue (ESEL) ;

• Totalisateur (TOT) ;

• PID étendu (PIDE) ;

• Rampe/Palier (RMPS)

• Dispositif 2 états TOR (D2SD) ;

• Dispositif 3 états TOR (D3SD).

La commande Programme/Opérateur vous permet de commander ces instructions simultanément depuis votre programme utilisateur et depuis interface opérateur. En commande Programme, l'instruction est commandée par les entrées programme dans l'instruction ; en commande Opérateur, l'instruction est commandée par les entrées opérateur dans l'instruction.

La commande Programme ou Opérateur est déterminée par l'utilisation des entrées suivantes :

Pour déterminer si une instruction est en commande Programme ou Opérateur, examinez la sortie ProgOper. Si ProgOper est activée, l'instruction est en commande Programme ; si ProgOper est désactivée, l'instruction est en commande opérateur.

La commande Opérateur est prioritaire sur la commande Programme si les deux bits de demande d'entrée sont activés. Par exemple, si ProgProgReq et ProgOperReq sont activés, l'instruction passe en commande Opérateur.

Les entrées de demande Programme sont prioritaires sur les entrées de demande Opérateur. Ceci permet d'utiliser les entrées ProgProgReq et ProgOperReq pour « verrouiller » une instruction dans la commande désirée. Supposons par exemple qu'une instruction Totalisateur soit toujours utilisée en commande Opérateur et que votre programme utilisateur ne commande jamais le fonctionnement ou l'arrêt du Totalisateur. Dans ce cas, vous pouvez entrer une valeur littérale de 1 dans ProgOperReq, ce qui empêche l'opérateur de mettre le

Entrée Description

.ProgProgReq Demande du programme pour passer en commande Programme.

.ProgOperReq Demande du programme pour passer en commande Opérateur.

.OperProgReq Demande de l'opérateur pour passer en commande Programme.

.OperOperReq Demande de l'opérateur pour passer en commande Opérateur.

Publication 1756-RM003F-FR-P - Mai 2002

Page 533: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Attributs de bloc fonctionnel B-11

Totalisateur en commande Programme par l'activation d'OperProgReq à partir d'une interface opérateur.

De même, l'activation constante de ProgProgReq peut « verrouiller » l'instruction en commande Programme. C'est utile pour les séquences de démarrage automatique lorsque vous voulez que le programme commande l'action de l'instruction, sans avoir à vous soucier d'un opérateur qui prendrait la commande de l'instruction par inadvertance. Dans cet exemple, le programme active l'entrée ProgProgReq au démarrage, puis l'efface une fois le démarrage terminé. Une fois l'entrée ProgProgReq effacée, l'instruction reste en commande Programme jusqu'à ce qu'elle reçoive une demande de changement. Par exemple, l'opérateur peut activer l'entrée OperOperReq à partir de la face avant pour reprendre la commande de cette instruction. L'exemple suivant montre comment verrouiller une instruction en commande Programme.

L'entrée ProgOperReq étant toujours activée, appuyer sur le bouton « Program » sur la face avant (ce qui active l'entrée 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 Opérateur.

Lorsque StartupSequenceActive est activé, l'instruction PIDE passe en commande Programme et en mode Manuel. La valeur StartupCV est utilisée comme sortie de boucle.

Publication 1756-RM003F-FR-P - Mai 2002

Page 534: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

B-12 Attributs de bloc fonctionnel

Les entrées de demande Opérateur d'une instruction sont toujours effacées par l'instruction lors de son exécution. De cette façon, les interfaces opérateur peuvent fonctionner avec ces instructions simplement en activant le bit de demande de mode souhaité. Vous n'avez pas besoin de programmer l'interface opérateur pour réinitialiser les bits de demande. Par exemple, si une interface opérateur active l'entrée OperAutoReq d'une instruction PIDE, lors de l'exécution de cette instruction, elle détermine la réponse appropriée et efface OperAutoReq.

En principe, les entrées de demande Programme ne sont pas effacées par l'instruction, parce qu'elles sont normalement câblées comme entrées dans l'instruction. Si l'instruction efface ces entrées, l'entrée est réactivée par l'entrée câblée. Il peut arriver que vous souhaitiez utiliser une autre logique pour activer les demandes Programme, de sorte que ces dernières soient effacées par l'instruction. Dans ce cas, vous pouvez activer l'entrée ProgValueReset et l'instruction, lors de son exécution, effacera systématiquement les entrées de demande de mode Programme.

Dans cet exemple, une ligne de logique à relais d'un autre sous-programme est utilisée 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 après l'exécution du sous-programme : l'instruction PIDE reçoit 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'entrée ProgValueReset activée : par conséquent, lorsque l'instruction PIDE est exécutée, elle efface automatiquement ProgAutoReq.

Publication 1756-RM003F-FR-P - Mai 2002

Page 535: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Annexe C

Programmation en texte structuré

Introduction Cette annexe décrit des caractéristiques 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 exécutée.

Syntaxe du texte structuré Le texte structuré est un langage de programmation textuel qui utilise des instructions pour définir ce qui doit être exécuté. Le texte structuré ne fait pas de distinction entre majuscules et minuscules. Il peut contenir les composants suivants :

Pour des informations sur Voir page

Syntaxe du texte structuré C-1

Affectations C-2

Expressions C-4

Instructions C-10

Instructions de test C-11

Commentaires C-26

Terme Définition Exemples

affectation(voir page C-2)

Utilisez une instruction d'affectation pour attribuer des valeurs à des points.L'opérateur := est l'opérateur d'affectation.Terminez l'affectation par un point-virgule “;”.

point := expression;

expression(voir page C-4)

Une expression fait partie d'une affectation complète ou d'une commande construite. Une expression se traduit par un nombre (expression numérique) ou par un état vrai ou faux (expression booléenne).

Une expression contient les éléments suivants :

des points Zone dénommée de la mémoire où les données sont stockées (BOOL, SINT, INT, DINT, REAL, STRING).

valeur1

des immédiats Constante. 4

des opérateurs Symbole ou mnémonique qui définit un opérateur dans une expression.

point1 + point2point1 >= valeur1

des fonctions Lorsqu'elle est exécutée, une fonction donne une valeur. Mettez l'opérande d'une fonction entre parenthèses.

Bien que leurs syntaxes soient similaires, les fonctions diffèrent des instructions dans la mesure où elles ne peuvent être utilisées que dans des expressions, alors que les instructions ne peuvent pas l'être.

fonction(point1)

1 Publication 1756-RM003F-FR-P - Mai 2002

Page 536: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

C-2 Programmation en texte structuré

Affectations Utilisez une affectation pour changer la valeur stockée dans un point. La syntaxe d'une affectation est la suivante :

point := expression ;

où :

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 immédiate ou un autre nom de point, ou complexe et inclure plusieurs opérateurs et/ou fonctions. Pour plus de détails, voir la section « Expressions », page C-4.

une instruction(voir page C-10)

Instruction autonome.Dans une instruction, les opérandes sont entre parenthèses.Suivant l'instruction, il peut y avoir aucun, un ou plusieurs opérandes.Lorsqu'elle est exécutée, une instruction donne une ou plusieurs valeurs qui font partie d'une structure de données.Terminez l'instruction par un point-virgule “;”.

Bien que leurs syntaxes soient similaires, les instructions diffèrent des fonctions dans la mesure où elles ne peuvent pas être utilisées dans des expressions, alors que les fonctions ne peuvent être utilisées que dans des expressions.

instruction();

instruction(opérande);

instruction(opérande1,opérande2,opérande3);

des instructions de test(voir page C-11)

Instructions conditionnelles utilisées pour déclencher un code en texte structuré (ex. : d'autres instructions).Terminez l'instruction de test par un point-virgule “;”.

IF...THENCASEFOR...DOWHILE...DOREPEAT...UNTILEXIT

des commentaires(voir page C26)

Texte expliquant ce que fait une section de texte structuré.• Utilisez les commentaires pour faciliter l'interprétation du texte

structuré.• Les commentaires n'affectent pas l'exécution du texte structuré.• Les commentaires peuvent apparaître n'importe où dans le texte

structuré.

//commentaire

(*début de commentaire . .. fin de commentaire*)

/*début de commentaire . .. fin de commentaire*/

Terme Définition Exemples

Composant Description

point représente le point qui obtient la nouvelle valeurle point doit être de type BOOL, SINT, INT, DINT ou REAL

:= symbole de l'affectation

expression représente la nouvelle valeur à attribuer au point

Si point est de ce type : Utilisez ce type d'expression :

BOOL expression booléenne

SINTINTDINTREAL

expression numérique

; termine l'affectation

Publication 1756-RM003F-FR-P - Mai 2002

Page 537: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Programmation en texte structuré C-3

Spécification d'une affectation non rémanente

Une affectation non rémanente est différente de l'affectation standard décrite ci-dessus dans la mesure où le point dans une affectation non rémanente est remis à zéro chaque fois que l'automate :

• passe en mode Exécution (Run) ;

• sort de l'étape d'un graphe de fonctionnement séquentiel (SFC) si vous configurez le graphe pour une Réinitialisation automatique (Automatic reset) (ceci est valable uniquement si vous intégrez 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).

La syntaxe d'une affectation non rémanente est la suivante :

point [:=] expression ;

où :

Composant Description

point représente le point qui reçoit la nouvelle valeurle point doit être de type BOOL, SINT, INT, DINT ou REAL

[:=] symbole de l'affectation non rémanente

expression représente la nouvelle valeur à attribuer au point

Si point est de ce type : Utilisez ce type d'expression :

BOOL expression booléenne

SINTINTDINTREAL

expression numérique

; termine l'affectation

Publication 1756-RM003F-FR-P - Mai 2002

Page 538: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

C-4 Programmation en texte structuré

Attribution d'un caractère ASCII à une chaîne

Utilisez l'opérateur d'affectation pour attribuer un caractère ASCII à un élément DATA d'une chaîne de caractères. Pour attribuer un caractère, indiquez la valeur du caractère ou le nom du point et l'élément DATA. Par exemple :

Pour ajouter ou insérer des caractères dans une chaîne, utilisez l'une de ces instructions de chaîne ASCII :

Expressions Une expression est un nom de point, une équation ou une comparaison. Pour écrire une expression, utilisez l'un des éléments suivants :

• nom du point qui stocke la valeur (variable) ;

• nombre à entrer directement dans l'expression (valeur immédiate) ;

• fonction telle que ABS, TRUNC ;

• opérateurs tels que +, -, <, >, And, Or.

Pour écrire une expression, observez les règles générales suivantes :

• utilisez indifféremment des lettres majuscules ou minuscules. Par exemple, ces trois variantes de « ET » sont correctes : ET, Et, et ;

• pour des besoins plus complexes, utilisez des parenthèses 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 exécutée dans l'ordre souhaité. Voir « Détermination de l'ordre d'exécution », page C10.

En texte structuré, vous utilisez deux types d'expressions :

Expression booléenne : expression qui produit la valeur booléenne 1 (vrai) ou 0 (faux).

• Une expression booléenne utilise des points booléens, des opérateurs de relation et des opérateurs logiques pour comparer des valeurs ou vérifier si des conditions sont vraies ou fausses. Par exemple, tag1>65.

• Une expression booléenne simple peut être un seul point BOOL.

Correct Incorrect

string1.DATA[0]:= 65; string1.DATA[0] := A;

string1.DATA[0]:= string2.DATA[0]; string1 := string2;

Pour Utilisez cette instruction

ajouter des caractères à la fin d'une chaîne CONCAT

insérer des caractères dans une chaîne INSERT

Publication 1756-RM003F-FR-P - Mai 2002

Page 539: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Programmation en texte structuré C-5

• Généralement, vous utilisez des expressions booléennes pour conditionner l'exécution d'une autre logique.

Expression numérique : expression qui calcule une valeur de nombre entier ou à virgule flottante.

• Une expression numérique utilise des opérateurs et des fonctions arithmétiques et des opérateurs sur bits. Par exemple, tag1+5.

• Une expression numérique est souvent imbriquée dans une expression de comparaison. Par exemple, (tag1+5)>65.

Utilisez le tableau suivant pour choisir des opérateurs pour vos expressions :

Utilisation d'opérateurs et de fonctions arithmétiques

Vous pouvez combiner plusieurs opérateurs et fonctions dans des expressions arithmétiques.

Les opérateurs arithmétiques calculent les nouvelles valeurs.

Si vous voulez Voir

calculer une valeur arithmétique « Utilisation d'opérateurs et de fonctions arithmétiques », page C-5.

comparer deux valeurs ou chaînes « Utilisation d'opérateurs de relation », page C-7.

vérifier si des conditions sont vraies ou fausses « Utilisation d'opérateurs logiques », page C-8.

comparer les bits dans des valeurs « Utilisation d'opérateurs sur bits », page C-9.

Pour Utilisez cet opérateur Type de données optimal

addition + DINT, REAL

soustraction/négation - DINT, REAL

multiplication * DINT, REAL

exposant (x à la puissance y) ** DINT, REAL

division / DINT, REAL

modulo MOD DINT, REAL

Publication 1756-RM003F-FR-P - Mai 2002

Page 540: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

C-6 Programmation en texte structuré

Les fonctions arithmétiques effectuent des opérations mathématiques. Indiquez une constante, un point non booléen ou une expression pour la fonction.

Par exemple

Pour Utilisez cette fonction Type de données optimal

valeur absolue ABS (expression_numérique) DINT, REAL

cosinus d'arc ACOS (expression_numérique) REAL

sinus d'arc ASIN (expression_numérique) REAL

tangente d'arc ATAN (expression_numérique) REAL

cosinus COS (expression_numérique) REAL

radians en degrés DEG (expression_numérique) DINT, REAL

logarithme naturel LN (expression_numérique) REAL

logarithme décimal LOG (expression_numérique) REAL

degrés en radians RAD (expression_numérique) DINT, REAL

sinus SIN (expression_numérique) REAL

racine carrée SQRT (expression_numérique) DINT, REAL

tangente TAN (expression_numérique) REAL

troncation TRUNC (expression_numérique)

DINT, REAL

Utilisez ce format Exemple

Pour cette situation Ecrivez

valeur1 opérateur valeur2 Si "gain_4" et "gain_4_adj" sont des points DINT et votre spécification indique : « Ajouter 15 à "gain_4" et stocker le résultat dans "gain_4_adj". »

gain_4_adj :=gain_4+15;

opérateur valeur1 Si "alarm" et "high_alarm" sont des points DINT et votre spécification indique : « Inverser "high_alarm" et stocker le résultat dans "alarm". »

alarm:=-high_alarm;

fonction(expression_numérique) Si "overtravel" et "overtravel_POS" sont des points DINT et votre spécification indique : « Calculer la valeur absolue de "overtravel" et stocker le résultat dans "overtravel_POS". »

overtravel_POS :=ABS(overtravel);

valeur1 opérateur(fonction((valeur2+valeur3)/2)

Si "adjustment" et "position" sont des points DINT, "sensor1" et "sensor2" des points REAL et si votre spécification indique : « Trouver la valeur absolue de la moyenne de "sensor1" et "sensor2", ajouter "adjustment" et stocker le résultat dans "position". »

position :=adjustment +ABS((sensor1 +sensor2)/2);

Publication 1756-RM003F-FR-P - Mai 2002

Page 541: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Programmation en texte structuré C-7

Utilisation d'opérateurs de relation

Les opérateurs de relation comparent deux valeurs ou chaînes pour fournir un résultat vrai ou faux. Le résultat d'une opération relationnelle est une valeur booléenne.

Utilisez les opérateurs de relation suivants :

Par exemple :

Si la comparaison est Le résultat est

vraie 1

fausse 0

Pour cette comparaison Utilisez cet opérateur Type de données optimal

égal = DINT, REAL, STRING

inférieur < DINT, REAL, STRING

inférieur ou égal <= DINT, REAL, STRING

supérieur > DINT, REAL, STRING

supérieur ou égal >= DINT, REAL, STRING

différent <> DINT, REAL, STRING

Utilisez ce format Exemple

Pour cette situation Ecrivez

valeur1 opérateur valeur2 Si "temp" est un point DINT et votre spécification indique : « Si "temp" est inférieur à 100°, alors… »

IF temp<100 THEN...

chaîne_de_caractères1opérateurchaîne_de_caractères2

Si "bar_code" et "dest" sont des chaînes de caractères et votre spécification indique : « Si "bar_code" est égal à "dest", alors… »

IF bar_code=dest THEN...

caractère1 opérateurcaractère2

Pour entrer un caractère ASCII directement dans l'expression, entrez la valeur décimale du caractère.

Si "bar_code" est une chaîne de caractères et votre spécification indique : « Si "bar_code.DATA[0]" est égal à "A", alors… »

IF bar_code.DATA[0]=65THEN...

point_bool :=expressions_booléennes

Si "count" et "length" sont des points DINT, "done" un point BOOL et si votre spécification indique : « Si "count" est supérieur ou égal à "length", fin du comptage. »

done := (count >=length);

Publication 1756-RM003F-FR-P - Mai 2002

Page 542: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

C-8 Programmation en texte structuré

Evaluation des chaînes

Les valeurs hexadécimales des caractères ASCII déterminent si une chaîne est inférieure ou supérieure à une autre chaîne.

• Lorsque les deux chaînes sont triées comme dans un répertoire téléphonique, l'ordre des chaînes détermine laquelle est supérieure.

• Les chaînes sont égales si leurs caractères concordent.

• Les caractères sont différents s'ils sont en majuscules ou en minuscules. Un « A » majuscule ($41) n'est pas égal à un « a » minuscule ($61).

Pour trouver la valeur décimale et le code hexadécimal d'un caractère, reportez-vous à la dernière page de ce manuel.

Utilisation d'opérateurs logiques

Les opérateurs logiques vous permettent de vérifier si plusieurs conditions sont vraies ou fausses. Le résultat d'une opération logique est une valeur booléenne.

Utilisez les opérateurs logiques suivants :

Caractères ASCII Codes Hex

1ab $31$61$62

1b $31$62

A $41

AB $41$42

B $42

a $61

ab $61$62

Si la comparaison est Le résultat est

vraie 1

fausse 0

Pour Utilisez cet opérateur Type de données

ET logique &, AND BOOL

OU logique OR BOOL

OU exclusif logique XOR BOOL

complément logique NOT BOOL

supérieu

inférieur

AB < B

a > B

Publication 1756-RM003F-FR-P - Mai 2002

Page 543: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Programmation en texte structuré C-9

Par exemple :

Utilisation d'opérateurs sur bits

Les opérateurs sur bits traitent les bits d'une valeur à partir de deux valeurs.

Par exemple :

Utilisez ce format Exemple

Pour cette situation Ecrivez

pointBOOL Si "photoeye" est un point BOOL et votre spécification indique : « Si "photoeye_1" est activée, alors… »

IF photoeye THEN...

NOT pointBOOL Si "photoeye" est un point BOOL et votre spécification indique : « Si "photoeye" est désactivée, alors… »

IF NOT photoeye THEN...

expression1 & expression2 Si "photoeye" est un point BOOL, "temp" un point DINT et si votre spécification indique : « Si "photoeye" est activée et "temp" inférieure à 100°, alors… »

IF photoeye & (temp<100)THEN...

expression1 OR expression2 Si "photoeye" est un point BOOL, "temp" un point DINT et si votre spécification indique : « Si "photoeye" est activée ou "temp" inférieure à 100°, alors… »

IF photoeye OR (temp<100)THEN...

expression1 XOR expression2 Si "photoeye1" et "photoeye2" sont des points BOOL et votre spécification indique : « Si :

• "photoeye1" est activée et "photoeye2" désactivée, ou

• "photoeye1" est désactivée et "photoeye2" activée,

alors… »

IF photoeye1 XORphotoeye2 THEN...

pointBOOL := expression1& expression2

Si "photoeye1" et "photoeye2" sont des points BOOL, "open" un point BOOL et si votre spécification indique : « Si "photoeye1" et "photoeye2" sont activées, régler "open" sur vrai. »

open := photoeye1 &photoeye2;

Pour Utilisez cet opérateur Type de données optimal

ET sur bits &, AND DINT

OU sur bits OR DINT

OU exclusif sur bits XOR DINT

complément sur bits NOT DINT

Utilisez ce format Exemple

Pour cette situation Ecrivez

valeur1 opérateur valeur2 Si "input1", "input2" et "result1" sont des points DINT et votre spécification indique : « Calculer le résultat sur bits de "input1" et "input2" et stocker le résultat dans "result1" »

result1 := input1 ANDinput2;

Publication 1756-RM003F-FR-P - Mai 2002

Page 544: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

C-10 Programmation en texte structuré

Détermination de l'ordre d'exécution

Les opérations que vous écrivez dans une expression sont exécutées dans un ordre prédéfini, qui n'est pas nécessairement de gauche à droite.

• Les opérations d'ordre identique sont effectuées de gauche à droite.

• Si une expression contient plusieurs opérateurs ou fonctions, regroupez les conditions entre parenthèses « ( ) » pour vous assurer que l'exécution se fait dans l'ordre souhaité et pour faciliter la lecture de l'expression.

Instructions Les instructions en texte structuré peuvent être également des instructions. Pour connaître les instructions disponibles en texte structuré, reportez-vous au tableau de repérage des instructions au début de ce manuel. Une instruction en texte structuré est exécutée chaque fois qu'elle est scrutée. Une instruction en texte structuré dans une instruction de test est exécutée 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 scrutées. Il n'est pas possible de conditionner l'exécution de l'instruction extérieurement.

Ceci diffère des instructions de bloc fonctionnel qui utilisent EnableIn pour déclencher l'exécution. Les instructions en texte structuré sont exécutées comme si EnableIn était toujours activé.

Ceci diffère également des instructions de logique à relais qui utilisent l'état d'entrée de la ligne pour déclencher l'exécution. Certaines instructions de logique à relais sont exécutées uniquement lorsque l'état d'entrée de la ligne passe de faux à vrai. Ce sont des instructions de logique à relais de transition. En texte structuré, les instructions

Ordre Opération

1. ( )

2. fonction (…)

3. **

4. − (négation)

5. NOT

6. *, /, MOD

7. +, - (soustraction)

8. <, <=, >, >=

9. =, <>

10. &, AND

11. XOR

12. OR

Publication 1756-RM003F-FR-P - Mai 2002

Page 545: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Programmation en texte structuré C-11

sont exécutées chaque fois qu'elles sont scrutées, à moins qu'elles ne soient imbriquées dans un test.

L'instruction ABL, par exemple, est une instruction de logique à relais de transition. Dans cet exemple, l'instruction ABL est exécutée lors d'une scrutation uniquement si tag_xic passe d'effacé à activé. L'instruction ABL n'est pas exécutée 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 exécutée à 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 exécutée uniquement lorsque tag_xic passe d'effacé à activé, vous devez conditionner l'instruction en texte structuré. Utilisez une instruction d'exécution sur front pour déclencher l'exécution.

Instructions de test Les instructions de test peuvent être programmées seules ou imbriquées dans d'autres instructions de test.

osri_1.InputBit := tag_xic;

OSRI(osri_1);

IF (osri_1.OutputBit) THEN

ABL(0,serial_control);

END_IF;

Si vous voulez Utilisez cette instruction de test Disponible dans ces langages Voir page

exécuter une action si ou lorsque des conditions particulières se produisent

IF...THEN texte structuré C-12

sélectionner l'action à exécuter en fonction d'une valeur numérique

CASE...OF texte structuré C-15

exécuter une action un certain nombre de fois avant l'exécution d'une autre action

FOR...DO texte structuré C-17

continuer l'exécution d'une action tant que certaines conditions sont vraies

WHILE...DO texte structuré C-20

continuer l'exécution d'une action jusqu'à ce qu'une condition soit vraie

REPEAT...UNTIL texte structuré C-23

Publication 1756-RM003F-FR-P - Mai 2002

Page 546: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

C-12 Programmation en texte structuré

IF...THEN (SI... ALORS) Utilisez l'instruction de test IF…THEN pour exécuter une action si ou lorsque des conditions particulières se produisent.

Opérandes :

Texte structuré

Description : La syntaxe est la suivante :

Pour utiliser ELSIF ou ELSE, suivez ces directives :

1. Pour faire une sélection dans plusieurs groupes d'instructions possibles, ajoutez une ou plusieurs instructions ELSIF.

• Chaque condition ELSIF représente un chemin alternatif.

• Indiquez autant de conditions ELSIF que de chemins nécessaires.

• L'automate exécute la première condition IF ou ELSIF vraie et saute les autres conditions ELSIF et la condition ELSE.

2. Pour exécuter une action lorsque toutes les conditions IF ou ELSIF sont fausses, ajoutez une instruction ELSE.

Opérande Type Format Entrez

expression_booléenne

BOOL pointexpression

un point ou une expression booléenne qui donne une valeur booléenne (expression booléenne)

IF expression_booléenneTHEN

<instruction>;

END_IF;

IF expression_booléenne1THEN

<instruction >; instructions à exécuter lorsque expression_booléenne1 est vraie.

.

.

facultatif

ELSIFexpression_booléenne2 THEN

<instruction>; instructions à exécuter lorsque expression_booléenne2 est vraie.

.

.

facultatifELSE

<instruction>; instructions à exécuter lorsque les deux expressions sont fausses.

.

.

END_IF;

Publication 1756-RM003F-FR-P - Mai 2002

Page 547: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Programmation en texte structuré C-13

Le tableau suivant donne plusieurs combinaisons de IF, THEN, ELSIF et ELSE.

Exemple 1 : IF…THEN

Exemple 2 : IF…THEN…ELSE

[:=] indique à l'automate d'effacer light lorsque ce dernier :

• passe en mode Exécution (Run) ;

• sort de l'étape d'un graphe de fonctionnement séquentiel si vous configurez le graphe pour une Réinitialisation automatique (Automatic reset) (ceci est valable uniquement si vous intégrez 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).

Si vous voulez Et Utilisez cette instruction de test

exécuter une action si ou lorsque des conditions sont vraies

ne rien faire si les conditions sont fausses IF…THEN

faire autre chose si les conditions sont fausses IF…THEN…ELSE

choisir parmi des instructions (ou groupes d'instructions) alternatives en fonction des conditions d'entrée

ne rien faire si les conditions sont fausses IF…THEN…ELSIF

attribuer des instructions par défaut si toutes les conditions sont fausses

IF…THEN…ELSIF…ELSE

Si vous voulez ceci Entrez ce texte structuré

SI rejette > 3 alors IF rejects > 3 THEN

convoyeur = désactivé (0) conveyor := 0;

alarme = activée (1) alarm := 1;

END_IF;

Si vous voulez ceci Entrez ce texte structuré

Si contact de direction du convoyeur = avant (1) alors IF conveyor_direction THEN

voyant = éteint light := 0;

Sinon voyant = allumé ELSE

light [:=] 1;

END_IF;

Publication 1756-RM003F-FR-P - Mai 2002

Page 548: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

C-14 Programmation en texte structuré

Exemple 3 : IF…THEN…ELSIF

[:=] indique à l'automate d'effacer Sugar.Inlet lorsque ce dernier :

• passe en mode Exécution (Run) ;

• sort de l'étape d'un graphe de fonctionnement séquentiel si vous configurez le graphe pour une Réinitialisation automatique (Automatic reset) (ceci est valable uniquement si vous intégrez 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 : IF…THEN…ELSIF…ELSE

Si vous voulez ceci Entrez ce texte structuré

Si détecteur de niveau bas sucre = bas (activé) et détecteur de niveau haut sucre = pas haut (activé) alors

IF Sugar.Low & Sugar.High THEN

vanne d'entrée = ouverte (activée) Sugar.Inlet [:=] 1;

Jusqu'à ce que détecteur de niveau haut sucre = haut (désactivé) ELSIF NOT(Sugar.High) THEN

Sugar.Inlet := 0;

END_IF;

Si vous voulez ceci Entrez ce texte structuré

Si température du réservoir > 100 IF tank.temp > 200 THEN

alors pompe = lente pump.fast :=1; pump.slow :=0; pump.off :=0;

Si température de réservoir > 200 ELSIF tank.temp > 100 THEN

alors pompe = rapide pump.fast :=0; pump.slow :=1; pump.off :=0;

Sinon pompe = arrêtée ELSE

pump.fast :=0; pump.slow :=0; pump.off :=1;

END_IF;

Publication 1756-RM003F-FR-P - Mai 2002

Page 549: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Programmation en texte structuré C-15

CASE...OF (EN FONCTION... DE)

Utilisez CASE pour déterminer ce qu'il faut faire en fonction d'une valeur numérique.

Opérandes :

Texte structuré

Description : La syntaxe est la suivante :

Opérande Type Format Entrez

expression_numérique

SINTINTDINTREAL

pointexpression

un point ou une expression qui donne un nombre (expression numérique)

sélecteur SINTINTDINTREAL

immédiat le même type que expression_numérique

IMPORTANT Si vous utilisez des valeurs REAL, utilisez une plage de valeurs pour un sélecteur car il est plus probable qu'une valeur REAL se trouve dans une plage de valeurs qu'elle ne corresponde exactement à une valeur particulière.

CASE expression_numériqueOF

sélecteur1:instruction;

sélecteurN:instruction;

ELSE

instruction;

END_CASE;

CASE expression_numérique OF

indiquez autant devaleurs de sélecteur

alternatives (chemins)que nécessaire

sélecteur1:

<instruction>;...

instructions à exécuter lorsque expression_numérique = sélecteur1

sélecteur2:

<instruction>;...

instructions à exécuter lorsque expression_numérique = sélecteur2

sélecteur3:

<instruction>;...

instructions à exécuter lorsque expression_numérique = sélecteur3

facultatif

ELSE

<instruction>;...

instructions à exécuter lorsque expression_numérique ≠ à n'importe quel sélecteur

END_CASE;

Publication 1756-RM003F-FR-P - Mai 2002

Page 550: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

C-16 Programmation en texte structuré

Pour connaître les valeurs de sélecteur correctes, reportez-vous au tableau page suivante.

La syntaxe pour l'entrée des valeurs de sélecteur est la suivante :

Exemple

[:=] indique à l'automate d'effacer également le point de sortie lorsque ce dernier :

• passe en mode Exécution (Run) ;

• sort de l'étape d'un graphe de fonctionnement séquentiel si vous configurez le graphe pour une Réinitialisation automatique (Automatic reset) (ceci est valable uniquement si vous intégrez 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).

Lorsque le sélecteur est Entrez

une valeur valeur: instruction

plusieurs valeurs différentes valeur1, valeur2, valeurN : <instruction>

Utilisez une virgule (,) pour séparer chaque valeur.

une plage de valeurs valeur1..valeurN : <instruction>

Utilisez deux points (..) pour identifier la plage.

des valeurs différentes plus une plage de valeurs

valeura, valeurb, valeur1..valeurN : <instruction>

Si vous voulez ceci Entrez ce texte structuré

Si numéro de recette = 1 alors CASE recipe_number OF

Ingrédient A sortie 1 = ouvert (1) 1: Ingredient_A.Outlet_1 :=1;

Ingrédient B sortie 4 = ouvert (1) Ingredient_B.Outlet_4 :=1;

Si numéro de recette = 2 ou 3 alors 2,3: Ingredient_A.Outlet_4 :=1;

Ingrédient A sortie 4 = ouvert (1) Ingredient_B.Outlet_2 :=1;

Ingrédient B sortie 2 = ouvert (1)

Si numéro de recette = 4, 5, 6 ou 7, alors 4..7: Ingredient_A.Outlet_4 :=1;

Ingrédient A sortie 4 = ouverte (1) Ingredient_B.Outlet_2 :=1;

Ingrédient B sortie 2 = ouverte (1)

Si numéro de recette = 8, 11, 12 ou 13, alors 8,11-13 Ingredient_A.Outlet_1 :=1;

Ingrédient A sortie 1 = ouverte (1) Ingredient_B.Outlet_4 :=1;

Ingrédient B sortie 4 = ouverte (1)

Sinon toutes les sorties = fermées (0) ELSE

Ingredient_A.Outlet_1 [:=]0;

Ingredient_A.Outlet_4 [:=]0;

Ingredient_B.Outlet_2 [:=]0;

Ingredient_B.Outlet_4 [:=]0;

END_CASE;

Publication 1756-RM003F-FR-P - Mai 2002

Page 551: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Programmation en texte structuré C-17

FOR…DO (POUR... FAIRE) Utilisez la boucle FOR…DO pour exécuter une action un certain nombre de fois avant l'exécution d'une autre action.

Opérandes :

Texte structuré

Description : La syntaxe est la suivante :

Opérande Type Format Description

comptage SINTINTDINT

point point pour le stockage de la position de comptage pendant l'exécution de FOR…DO

valeur_initiale

SINTINTDINT

pointexpressionimmédiat

doit donner un nombredéfinit la valeur initiale du comptage

valeur_finale

SINTINTDINT

pointexpressionimmédiat

définit la valeur finale du comptage, qui indique quand sortir de la boucle

incrément SINTINTDINT

pointexpressionimmédiat

(facultatif) valeur d'incrémentation du comptage à chaque passage dans la boucle

Si vous n'indiquez pas d'incrément, le comptage s'effectue de 1 en 1.

FOR comptage:=valeur_initiale TOvaleur_finale BY incrémentDO

<instruction>;

END_FOR;

IMPORTANT Veillez à ne pas trop répéter la boucle lors d'une même scrutation.

• L'automate n'exécute pas d'autres instructions du sous-programme tant qu'il n'a pas terminé la boucle.

• Si le temps nécessaire pour terminer la boucle est supérieur au chien de garde de la tâche, un défaut majeur se produit.

• Pensez à utiliser une instruction de test différente, telle que IF...THEN.

FOR comptage := valeur_initiale

TO valeur_finale

facultatif { BY incrément Si vous n'indiquez pas d'incrément, la boucle est incrémentée de 1 en 1.

DO

<instruction>;

facultatif

IF expression_booléenneTHEN

EXIT; S'il y a des conditions pour lesquelles vous voulez quitter la boucle avant qu'elle ne soit terminée, utilisez d'autres instructions, telle qu'une instruction de test IF...THEN, pour conditionner une instruction de sortie (EXIT).

END_IF;

END_FOR;

Publication 1756-RM003F-FR-P - Mai 2002

Page 552: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

C-18 Programmation en texte structuré

Les diagrammes suivants montrent comment une boucle FOR...DO est exécutée et comment une instruction EXIT quitte la boucle avant que cette dernière ne soit terminée.

Exemple 1 :

instruction 1instruction 2instruction 3instruction 4…

Exécutée x fois ?

non

oui

reste du sous-programme

instruction 1instruction 2instruction 3instruction 4…Sortir ?

Exécutée x fois ?

non

oui

reste du sous-programme

oui

non

La boucle FOR…DO est exécutée un certain nombre de fois.

Pour arrêter la boucle avant que le compte n'atteigne la dernière valeur, utilisez une instruction de sortie (EXIT).

Si vous voulez ceci Entrez ce texte structuré

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, répéter 2 et 3.

Sinon, arrêter.

For subscript:=0 to 31 by 1 do

array[subscript] := 0;

End_for;

Publication 1756-RM003F-FR-P - Mai 2002

Page 553: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Programmation en texte structuré C-19

Exemple 2 :

Si vous voulez ceci Entrez ce texte structuré

Un type de données défini par l'utilisateur (structure) stocke les informations suivantes sur un article de votre inventaire :

• numéro d'identification du code-barres de l'article (données de type chaîne)

• quantité d'articles de ce type en stock (données de type DINT)

Un tableau correspondant à la structure ci-dessus contient une entrée pour chaque article de votre inventaire. Vous voulez rechercher un article particulier (utilisez son code-barres) dans le tableau et en déterminer la quantité en stock.

1. Chercher la taille (nombre d'articles) du tableau "Inventory" et stocker le résultat dans "Inventory_Items" (point DINT).

2. Initialiser le point "position" (0).3. Si "Barcode" correspond au numéro d'identification

d'un article du tableau, alors :a. Définir le point "Quantity = "Inventory[position].Qty."

Ceci indique la quantité d'articles de ce type en stock.

b. Arrêter."Barcode" est une chaîne de caractères 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)", répéter 3 et

4. Les numéros d'éléments commençant à 0, le dernier élément est 1 de moins que le nombre d'éléments dans le tableau.Sinon, arrêter.

SIZE(Inventory,0,Inventory_Items);

For position:=0 to Inventory_Items - 1 do

If Barcode = Inventory[position].ID then

Quantity := Inventory[position].Qty;

Exit;

End_if;

End_for;

Publication 1756-RM003F-FR-P - Mai 2002

Page 554: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

C-20 Programmation en texte structuré

WHILE…DO (TANT QUE... FAIRE)

Utilisez la boucle WHILE…DO pour poursuivre l'exécution d'une action tant que certaines conditions sont vraies.

Opérandes :

Texte structuré

Description : La syntaxe est la suivante :

Opérande Type Format Entrez

expression_booléenne

BOOL pointexpression

un point ou une expression booléenne qui donne une valeur booléenne

WHILE expression_booléenneDO

<instruction>;

END_WHILE;

IMPORTANT Veillez à ne pas trop répéter la boucle lors d'une même scrutation.

• L'automate n'exécute pas d'autres instructions du sous-programme tant qu'il n'a pas terminé la boucle.

• Si le temps nécessaire pour terminer la boucle est supérieur au chien de garde de la tâche, un défaut majeur se produit.

• Pensez à utiliser une instruction de test différente, telle que IF...THEN.

WHILE expression_booléenne1DO

<instruction>; instructions à exécuter tant que expression_booléenne1 est vraie

facultatif

IFexpression_booléenne2THEN

EXIT; S'il y a des conditions pour lesquelles vous voulez quitter la boucle avant qu'elle ne soit terminée, utilisez d'autres instructions, telles qu'une instruction de test IF...THEN, pour conditionner une instruction de sortie (EXIT).

END_IF;

END_WHILE;

Publication 1756-RM003F-FR-P - Mai 2002

Page 555: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Programmation en texte structuré C-21

Les diagrammes suivants montrent comment une boucle WHILE...DO est exécutée et comment une instruction EXIT quitte la boucle avant que cette dernière ne soit terminée.

Exemple 1 :

Tant que expression_booléenne est vraie, l'automate exécute uniquement les instructions de la boucle WHILE…DO.

Pour arrêter la boucle avant que les conditions ne soient vraies, utilisez une instruction de sortie (EXIT).

instruction 1instruction 2instruction 3instruction 4…Sortir ?

expression booléenne

vraie

fausse

reste du sous-programme

oui

non

instruction 1instruction 2instruction 3instruction 4…

expression booléenne

vraie

fausse

reste du sous-programme

Si vous voulez ceci Entrez ce texte structuré

La boucle WHILE...DO évalue d'abord ses conditions. Si les conditions sont vraies, l'automate exécute les instructions de la boucle.

Ceci est différent de la boucle REPEAT...UNTIL dans la mesure où la boucle REPEAT...UNTIL exécute les instructions du test, puis détermine si les conditions sont vraies avant d'exécuter de nouveau les instructions. Les instructions d'une boucle REPEAT...UNTIL sont toujours exécutées au moins une fois. Les instructions d'une boucle WHILE...DO peuvent ne jamais être exécutées.

pos := 0;

While ((pos <= 100) & structarray[pos].value<> targetvalue)) do

pos := pos + 2;

String_tag.DATA[pos] := SINT_array[pos];

end_while;

Publication 1756-RM003F-FR-P - Mai 2002

Page 556: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

C-22 Programmation en texte structuré

Exemple 2 :

Si vous voulez ceci Entrez ce texte structuré

Déplacer des caractères ASCII d'un tableau SINT dans une chaîne de caractères (dans un tableau SINT, chaque élément garde un caractère). Arrêter lorsque vous atteignez le retour chariot.

1. Initialiser "Element_number" (0).2. Compter le nombre d'éléments dans "SINT_array"

(tableau contenant les caractères ASCII) et stocker le résultat dans "SINT_array_size" (point DINT).

3. Si le caractère au niveau de "SINT_array[element_number] " = 13 (valeur décimale du retour chariot), alors arrêter.

4. Définir "String_tag[element_number]" = caractère au niveau de "SINT_array[element_number]".

5. Ajouter 1 à "element_number". Ceci permet à l'automate de vérifier le caractère suivant dans "SINT_array".

6. Définir le membre Longueur de "String_tag" = "element_number" (ceci enregistre le nombre de caractères dans "String_tag" jusqu'à ce caractère).

7. Si "element_number" = "SINT_array_size", alors arrêter (vous avez atteint la fin du tableau et il ne contient pas de retour chariot).

8. Aller à 3.

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;

Publication 1756-RM003F-FR-P - Mai 2002

Page 557: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Programmation en texte structuré C-23

REPEAT…UNTIL (REPETER... JUSQU'A)

Utilisez la boucle REPEAT…UNTIL pour poursuivre l'exécution d'une action jusqu'à ce que les conditions soient vraies.

Opérandes :

Texte structuré

Description : La syntaxe est la suivante :

Opérande Type Format Entrez

expression_booléenne

BOOL pointexpression

un point ou une expression booléenne qui donne une valeur booléenne (expression booléenne)

REPEAT

<instruction>;

UNTIL expression_booléenne

END_REPEAT;

IMPORTANT Veillez à ne pas trop répéter la boucle lors d'une même scrutation.

• L'automate n'exécute pas d'autres instructions du sous-programme tant qu'il n'a pas terminé la boucle.

• Si le temps nécessaire pour terminer la boucle est supérieur au chien de garde de la tâche, un défaut majeur se produit.

• Pensez à utiliser une instruction de test différente, telle que IF...THEN.

REPEAT

<instruction>; instructions à exécuter tant que expression_booléenne1 est fausse

facultatif

IF expression_booléenne2THEN

EXIT; S'il y a des conditions pour lesquelles vous voulez quitter la boucle avant qu'elle ne soit terminée, utilisez d'autres instructions, telle qu'une instruction de test IF...THEN, pour conditionner une instruction de sortie (EXIT).

END_IF;

UNTILexpression_booléenne1

END_REPEAT;

Publication 1756-RM003F-FR-P - Mai 2002

Page 558: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

C-24 Programmation en texte structuré

Les diagrammes suivants montrent comment une boucle REPEAT...UNTIL est exécutée et comment une instruction EXIT quitte la boucle avant que cette dernière ne soit terminée.

Exemple 1 :

Tant que expression_booléenne est fausse, l'automate exécute uniquement les instructions de la boucle REPEAT…UNTIL.

Pour arrêter la boucle avant que les conditions ne soient fausses, utilisez une instruction de sortie (EXIT).

instruction 1instruction 2instruction 3instruction 4…

expression booléenne

fausse

vraie

reste du sous-programme

expression booléenne

fausse

vraie

reste du sous-programme

instruction 1instruction 2instruction 3instruction 4…Sortir ? oui

non

Si vous voulez ceci Entrez ce texte structuré

La boucle REPEAT...UNTIL exécute les instructions du test, puis détermine si les conditions sont vraies avant d'exécuter de nouveau les instructions.

Ceci diffère 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 exécute les instructions de la boucle. Les instructions d'une boucle REPEAT...UNTIL sont toujours exécutées au moins une fois. Les instructions d'une boucle WHILE...DO peuvent ne jamais être exécutées.

pos := -1;

REPEAT

pos := pos + 2;

UNTIL ((pos = 101) OR(structarray[pos].value = targetvalue))

end_repeat;

Publication 1756-RM003F-FR-P - Mai 2002

Page 559: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Programmation en texte structuré C-25

Exemple 2 :

Si vous voulez ceci Entrez ce texte structuré

Déplacer des caractères ASCII d'un tableau SINT dans une chaîne de caractères (dans un tableau SINT, chaque élément garde un caractère). Arrêter lorsque vous atteignez le retour chariot.

1. Initialiser "Element_number" (0).2. Compter le nombre d'éléments dans "SINT_array"

(tableau contenant les caractères ASCII) et stocker le résultat dans "SINT_array_size" (point DINT).

3. Définir "String_tag[element_number]" = caractère au niveau de "SINT_array[element_number]".

4. Ajouter 1 à "element_number". Ceci permet à l'automate de vérifier le caractère suivant dans "SINT_array".

5. Définir le membre Longueur de "String_tag" = "element_number" (ceci enregistre le nombre de caractères dans "String_tag" jusqu'à ce caractère).

6. Si "element_number" = "SINT_array_size", alors arrêter (vous avez atteint la fin du tableau et il ne contient pas de retour chariot).

7. Si le caractère au niveau de "SINT_array[element_number]" = 13 (valeur décimale du retour chariot), alors arrêter.Sinon, aller à 3.

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;

Publication 1756-RM003F-FR-P - Mai 2002

Page 560: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

C-26 Programmation en texte structuré

Commentaires Ajoutez des commentaires à votre texte structuré pour en faciliter l'interprétation.

• Les commentaires vous permettent d'utiliser du langage clair pour décrire le fonctionnement de votre texte structuré.

• Les commentaires n'affectent pas l'exécution du texte structuré.

Pour ajouter des commentaires à votre texte structuré :

Par exemple :

Pour ajouter un commentaire Utilisez l'un de ces formats

sur une seule ligne //commentaire

(*commentaire*)

/*commentaire*/

à la fin d'une ligne de texte structuré

dans une ligne de texte structuré (*commentaire*)

/*commentaire*/

qui couvre plusieurs lignes (*début du commentaire . . .fin du commentaire*)

/*début du commentaire . . .fin du commentaire*/

Format Exemple

//commentaire Au début d'une ligne//Vérifie la direction de la courroie du convoyeurIF conveyor_direction THEN...

A la fin d'une ligneELSE //Si le convoyeur est immobile, allume le voyantd'alarmelight := 1;END_IF;

(*commentaire*) Sugar.Inlet[:=]1;(*ouvre l'entrée*)

IF Sugar.Low (*détecteur niveau bas*)& Sugar.High(*détecteur niveau haut*)THEN...

(*Contrôle la vitesse de la pompe de recirculation. Lavitesse dépend de la température dans le réservoir.*)IF tank.temp > 200 THEN...

/*commentaire*/ Sugar.Inlet:=0;/*ferme l'entrée*/

IF bar_code=65 /*A*/ THEN...

/*Prend le nombre d'éléments dans le tableau Inventoryet stocke la valeur dans le point Inventory_Items*/SIZE(Inventory,0,Inventory_Items);

Publication 1756-RM003F-FR-P - Mai 2002

Page 561: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Index

Aactivation d'interruption utilisateur 10-20activation de sortie 1-6addition 5-6ajout d'écriture ASCII 16-23alarmes 12-25anticipation de vitesse 12-34attributs

conversion des types de données A-1valeurs immédiates A-1

attributs communs A-1conversion des types de données A-1valeurs immédiates A-1

BBAND 6-34BNOT 6-42BOR 6-37BXOR 6-40

Ccalcul 5-2caractères ASCII dans buffer 16-8CASE (EN FONCTION) C-15chaîne vers DINT 18-3chaîne vers REAL 18-5chargement FIFO 8-8chargement LIFO 8-20chargement séquenceur 9-10codes d'erreur

ASCII 16-4instruction MSG 3-8

combinaison des types de données A-1commande Programme/Opérateur

présentation B-10comparaison 4-2comparaison des bits de fichier 12-2COMPLEMENT booléen 6-42COMPLEMENT sur bits 6-31comptage décrémental 2-25comptage incrémental 2-22comptage incrémental/décrémental 2-29concaténation de chaînes 17-3conditions de dépassement B-5configuration 3-13

instruction MSG 3-13instruction PID 12-23

conversion des types de données A-1conversion en DCB 15-6

conversion en nombre entier 15-9copie 7-26Copie dans une chaîne 17-11copie synchrone 7-26cosinus 13-4cosinus d'arc 13-10

Ddécalage binaire à droite 8-5décalage binaire à gauche 8-2décalage de sortie 12-34déchargement FIFO 8-14déchargement LIFO 8-26définir la valeur système 3-30degré 15-2désactivation d'interruption utilisateur 10-20détection par diagnostic 12-9déverrouillage de sortie 1-9différent 4-38DINT vers chaîne 18-7distribution d'un champ de bits 6-11distribution d'un champ de bits avec cible 6-14division 5-15

Eécart type 7-46écriture ASCII 16-27effacement buffer ASCII 16-10effacement dans une chaîne 17-5effacer 6-17égal à 4-7égalité avec masque 4-33éléments

instruction SIZE 7-52entrée séquenceur 9-2ET booléen 6-34ET sur bits 6-22étiquette 10-2examine si contact ouvert 1-4exécution sur front 1-11exposant 14-6expressions

format 4-4, 5-4, 7-17, 7-23opérateurs valables 4-4, 5-4, 7-16, 7-23ordre d'exécution des opérations 4-5, 5-4, 7-17, 7-24

Ffichier arithmétique et logique 7-7

Publication 1756-RM003F-FR-P - Mai 2002

Page 562: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

2 Index

fin temporaire 10-16

Iimpulsion front descendant 1-16impulsion front descendant avec entrée 1-20impulsion front montant 1-14impulsion front montant avec entrée 1-18indicateurs d'état arithmétique

dépassement B-5inférieur à 4-23inférieur ou égal à 4-19insérer chaîne 17-9instruction ABL 16-5instruction ABS 5-29instruction ACB 16-8instruction ACL 16-10instruction ACS 13-10instruction ADD 5-6instruction AFI 10-22instruction AHL 16-12instruction AND 6-22instruction ARD 16-16instruction ARL 16-19instruction ASN 13-8instruction ATN 13-12instruction AVE 7-36instruction AWA 16-23instruction AWT 16-27instruction BRK 11-4instruction BSL 8-2instruction BSR 8-5instruction BTD 6-11instruction BTDT 6-14instruction CLR 6-17instruction CMP 4-2instruction CONCAT 17-3instruction COP 7-26instruction COS 13-4instruction CPS 7-26instruction CPT 5-2instruction CTD 2-25instruction CTU 2-22instruction CTUD 2-29instruction DDT

mode de recherche 12-11opérandes 12-9

instruction de pause SFC 10-26instruction de positionnement SFC 10-28instruction DEG 15-2instruction DELETE 17-5instruction DIV 5-15instruction DTOS 18-7

instruction DTR 12-16instruction EOT 10-24instruction EQU 4-7instruction FAL

mode de fonctionnement 7-2opérandes 7-7

instruction FBCmode de recherche 12-3opérandes 12-2

instruction FFL 8-8instruction FFU 8-14instruction Fin de transition 10-24instruction FIND 17-7instruction FLL 7-32instruction FOR 11-2instruction FRD 15-9instruction FSC

mode de fonctionnement 7-2opérandes 7-18

instruction GEQ 4-11instruction GRT 4-15instruction GSV

objets 3-32opérandes 3-30

instruction INSERT 17-9instruction JMP 10-2instruction JSR 10-4instruction JXR

structure de contrôle 10-14instruction LBL 10-2instruction LEQ 4-19instruction LES 4-23instruction LFL 8-20instruction LFU 8-26instruction LIM 4-27instruction LN 14-2instruction LOWER 18-13instruction MCR 10-18instruction MEQ 4-33instruction MID 17-11instruction MOD 5-19instruction MOV 6-3instruction MSG 3-13

codes d'erreur 3-8méthode de communication 3-27opérandes 3-2structure 3-2

instruction MUL 5-12instruction MVM 6-5instruction MVMT 6-8instruction NEG 5-26instruction NEQ 4-38instruction NOP 10-23instruction NOT 6-31

Publication 1756-RM003F-FR-P - Mai 2002

Page 563: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Index 3

instruction ONS 1-11instruction OR 6-25instruction OSF 1-16instruction OSFI 1-20instruction OSR 1-14instruction OSRI 1-18instruction OTE 1-6instruction OTL 1-7instruction OTU 1-9instruction PID

alarmes 12-25anticipation de vitesse 12-34configuration 12-23décalage de sortie 12-34mise à l'échelle 12-25opérandes 12-19réglages 12-24zone morte 12-33

instruction RAD 15-4instruction RES 2-33instruction RET 10-4, 11-5instruction RTO 2-9instruction RTOR 2-19instruction RTOS 18-9instruction SBR 10-4instruction SFP 10-26instruction SFR 10-28instruction SIN 13-2instruction SIZE 7-52instruction SQI 9-2instruction SQL 9-10instruction SQO 9-6instruction SQR 5-23instruction SRT 7-41instruction SSV

objets 3-32opérandes 3-30

instruction STD 7-46instruction STOD 18-3, C-12instruction STOR 18-5instruction SUB 5-9instruction SWPB 6-18instruction TAN 13-6instruction TND 10-16instruction TOD 15-6instruction TOF 2-5instruction TOFR 2-16instruction TON 2-2instruction TONR 2-13instruction TRN 15-11instruction UID 10-20instruction UIE 10-20instruction UPPER 18-11instruction XIO 1-4

instruction XOR 6-28instruction XPY 14-6instructions

calculMOD 5-19

d'entrée/de sortie 3-1de calcul 5-1de commande de programme 10-1de comparaison 4-1de comptage 2-1de conversion 15-1de conversion ASCII 18-1de conversion de chaîne 18-1de conversion mathématique 15-1de décalage 8-1de manipulation de chaîne 17-1de temporisation 2-1de transfert 6-1logiques 6-1manipulation de chaîne ASCII 17-1mathématiques évoluées 14-1port série 16-1port série ASCII 16-1pour/d'interruption 11-1séquenceur 9-1spéciales 12-1sur bits 1-1sur tableautrigonométriques 13-1

instructions ASCIIABL 16-5ACB 16-8ACL 16-10AHL 16-12ARD 16-16ARL 16-19AWA 16-23AWT 16-27CONCAT 17-3DELETE 17-5DTOS 18-7FIND 17-7INSERT 17-9LOWER 18-13MID 17-11RTOS 18-9STOD 18-3, C-12STOR 18-5SWPB 6-18UPPER 18-11

instructions d'entrée/de sortieGSV 3-30introduction 3-1MSG 3-2

Publication 1756-RM003F-FR-P - Mai 2002

Page 564: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

4 Index

SSV 3-30instructions de calcul

ABS 5-29ADD 5-6CPT 5-2DIV 5-15format d'expression 5-4, 7-17introduction 5-1MUL 5-12NEG 5-26opérateurs valables 5-4, 7-16ordre d'exécution des opérations 5-4, 7-17SQR 5-23SUB 5-9

instructions de commande de programmeAFI 10-22EOT 10-24introduction 10-1JMP 10-2JSR 10-4LBL 10-2MCR 10-18NOP 10-23RET 10-4SBR 10-4TND 10-16UID 10-20UIE 10-20

instructions de comparaisonCMP 4-2EQU 4-7format d'expression 4-4, 7-23GEQ 4-11GRT 4-15introduction 4-1LEQ 4-19LES 4-23LIM 4-27MEQ 4-33NEQ 4-38opérateurs valables 4-4, 7-23ordre d'exécution des opérations 4-5, 7-24

instructions de comptageCTD 2-25CTU 2-22CTUD 2-29introduction 2-1RES 2-33

instructions de conversionDEG 15-2FRD 15-9introduction 15-1RAD 15-4TOD 15-6

TRN 15-11instructions de conversion de chaîne

DTOS 18-7introduction 18-1LOWER 18-13RTOS 18-9STOD 18-3, C-12STOR 18-5SWPB 6-18UPPER 18-11

instructions de conversion mathématiqueDEG 15-2FRD 15-9introduction 15-1RAD 15-4TOD 15-6TRN 15-11

instructions de décalageBSL 8-2BSR 8-5FFL 8-8FFU 8-14introduction 8-1LFL 8-20LFU 8-26

instructions de fichiervoir instructions sur tableau

instructions de manipulation de chaîneCONCAT 17-3DELETE 17-5FIND 17-7INSERT 17-9introduction 17-1MID 17-11

instructions de temporisationintroduction 2-1RES 2-33RTO 2-9RTOR 2-19TOF 2-5TOFR 2-16TON 2-2TONR 2-13

instructions de transfertBTD 6-11BTDT 6-14CLR 6-17introduction 6-1MOV 6-3MVM 6-5MVMT 6-8

instructions de transfert/logiquesBAND 6-34BNOT 6-42

Publication 1756-RM003F-FR-P - Mai 2002

Page 565: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Index 5

BOR 6-37BXOR 6-40

instructions LOG 14-4instructions logiques

AND 6-22COMPLEMENT 6-31introduction 6-1OR 6-25XOR 6-28

instructions mathématiques évoluéesintroduction 14-1LN 14-2LOG 14-4XPY 14-6

instructions port sérieABL 16-5ACB 16-8ACL 16-10AHL 16-12ARD 16-16ARL 16-19AWA 16-23AWT 16-27introduction 16-1

instructions pour/d'interruptionBRK 11-4FOR 11-2introduction 11-1RET 11-5

instructions séquenceurintroduction 9-1SQI 9-2SQL 9-10SQO 9-6

instructions spécialesDDT 12-9DTR 12-16FBC 12-2introduction 12-1PID 12-19SFP 10-26SFR 10-28

instructions sur bitsintroduction 1-1ONS 1-11OSF 1-16OSFI 1-20OSR 1-14OSRI 1-18OTE 1-6OTL 1-7OTU 1-9XIO 1-4

instructions sur tableau

AVE 7-36BSL 8-2BSR 8-5COP 7-26CPS 7-26DDT 12-9de fichier/diverses 7-1décalage 8-1FAL 7-7FBC 12-2FFL 8-8FFU 8-14FLL 7-32FSC 7-18LFL 8-20LFU 8-26mode de fonctionnement 7-2RES 2-33séquenceur 9-1SIZE 7-52SQI 9-2SQL 9-10SQO 9-6SRT 7-41STD 7-46

instructions trigonométriquesACS 13-10ASN 13-8ATN 13-12COS 13-4introduction 13-1SIN 13-2TAN 13-6

interruption 11-4

Llecture ASCII 16-16ligne de lecture ASCII 16-19lignes d'échange ASCII 16-12lire la valeur système 3-30logarithme

décimal 14-4naturel 14-2

logarithme décimal 14-4logarithme naturel 14-2

Mmajuscule 18-11masque 12-16message 3-2

Publication 1756-RM003F-FR-P - Mai 2002

Page 566: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

6 Index

minuscule 18-13mise à l'échelle 12-25mode de fonctionnement 7-2mode de recherche 12-3, 12-11mode Incrémental 7-5mode Numérique 7-3mode TOUT 7-2modes de temporisation B-5Modulo 5-19moyenne 7-36multiplication 5-12

Nnégation 5-26

Oobjet CONTROLLER 3-32objet CONTROLLERDEVICE 3-33objet CST 3-35objet DF1 3-36objet FAULTLOG 3-39objet MESSAGE 3-40objet MODULE 3-42objet MOTIONGROUP 3-43objet PROGRAM 3-44objet ROUTINE 3-45objet SERIALPORT 3-45objet TASK 3-47objet WALLCLOCKTIME 3-47objets

CONTROLLER 3-32CONTROLLERDEVICE 3-33CST 3-35DF1 3-36FAULTLOG 3-39instruction GSV/SSV 3-32MESSAGE 3-40MODULE 3-42MOTIONGROUP 3-43PROGRAM 3-44ROUTINE 3-45SERIALPORT 3-45TASK 3-47WALLCLOCKTIME 3-47

opérateurs 4-4, 5-4, 7-16, 7-23ordre d'exécution B-3ordre d'exécution des opérations 4-5, 7-24ordre des opérations 5-4, 7-17OU booléen 6-37OU exclusif booléen 6-40

OU exclusif sur bits 6-28OU sur bits 6-25

Ppas d'opération 10-23permutation d'octets 6-18proportionnel, intégral et dérivé 12-19

Rracine carrée 5-23radians 15-4REAL vers chaîne 18-9Recherche de chaîne 17-7recherche et comparaison de fichiers 7-18rechercher une chaîne 17-7réglages 12-24relais de contrôle maître 10-18remise à zéro 2-33remplissage de fichier 7-32retour 10-4, 11-5

Ssaut 10-2saut vers sous-programme 10-4sinus 13-2sinus d'arc 13-8sortie séquenceur 9-6sous-programme 10-4soustraction 5-9STRING vers DINT C-12structure COMPARE 12-3, 12-10structure 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-10structure COUNTER 2-22, 2-25structure de contrôle 10-14structure FBD_BIT_FIELD_DISTRIBUTE 6-14structure FBD_BOOLEAN_AND 6-34structure FBD_BOOLEAN_NOT 6-42structure FBD_BOOLEAN_OR 6-37structure FBD_BOOLEAN_XOR 6-40structure FBD_COMPARE 4-8, 4-12, 4-16, 4-20, 4-24, 4-39structure FBD_CONVERT 15-6, 15-9structure FBD_COUNTER 2-29structure FBD_LIMIT 4-28structure FBD_LOGICAL 6-23, 6-26, 6-29, 6-31structure FBD_MASK_EQUAL 4-34structure FBD_MASKED_MOVE 6-8

Publication 1756-RM003F-FR-P - Mai 2002

Page 567: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Index 7

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-20structure FBD_TIMER 2-13, 2-16, 2-19structure FBD_TRUNCATE 15-11structure MESSAGE 3-2structure PID 12-20structure RESULT 12-3, 12-10structure SERIAL_PORT_CONTROL 16-2, 16-4, 16-6,

16-8, 16-13, 16-17, 16-20, 16-24, 16-28structure STRING 16-3, 17-2, 18-2structure TIMER 2-2, 2-5, 2-9structures

chaîne 17-2, 18-2COMPARE 12-3, 12-10CONTROL 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-10COUNTER 2-22, 2-25FBD_BIT_FIELD_DISTRIBUTE 6-14FBD_BOOLEAN_AND 6-34FBD_BOOLEAN_NOT 6-42FBD_BOOLEAN_OR 6-37FBD_BOOLEAN_XOR 6-40FBD_COMPARE 4-8, 4-12, 4-16, 4-20, 4-24, 4-39FBD_CONVERT 15-6, 15-9FBD_COUNTER 2-29FBD_LIMIT 4-28FBD_LOGICAL 6-23, 6-26, 6-29, 6-31FBD_MASK_EQUAL 4-34FBD_MASKED_MOVE 6-8FBD_MATH 5-7, 5-10, 5-13, 5-16, 5-20, 5-26, 14-7FBD_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-4FBD_ONESHOT 1-18, 1-20FBD_TIMER 2-13, 2-16, 2-19FBD_TRUNCATE 15-11instruction RES 2-33MESSAGE 3-2PID 12-20RESULT 12-3, 12-10SERIAL_PORT_CONTROL 16-2, 16-4, 16-6, 16-8, 16-13,

16-17, 16-20, 16-24, 16-28STRING 16-3, 17-2, 18-2TIMER 2-2, 2-5, 2-9

supérieur à 4-15supérieur ou égal à 4-11

Ttaille en éléments 7-52tangente 13-6tangente d'arc 13-12temporisateur à l'enclenchement 2-2temporisateur à l'enclenchement avec RAZ 2-13temporisateur au déclenchement 2-5temporisateur au déclenchement avec RAZ 2-16temporisateur rémanent 2-9temporisateur rémanent avec RAZ 2-19test ASCII du buffer 16-5test sur limites 4-27texte structuré

CASE (EN FONCTION) C-15toujours faux 10-22transfert 6-3transfert avec masque 6-5transfert avec masque et cible 6-8transition de données 12-16tri 7-41troncation 15-11type de données chaîne 16-3, 17-2, 18-2

Vvaleur absolue 5-29valeurs immédiates A-1verrouillage de sortie 1-7verrouillage des données B-1

XX à la puissance Y 14-6

Zzone morte 12-33

Publication 1756-RM003F-FR-P - Mai 2002

Page 568: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

8 Index

Publication 1756-RM003F-FR-P - Mai 2002

Page 569: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Codes des caractères ASCII

Caractère Déc. Hex.

[ctrl-@] NUL 0 $00

[ctrl-A] SOH 1 $01

[ctrl-B] STX 2 $02

[ctrl-C] ETX 3 $03

[ctrl-D] EOT 4 $04

[ctrl-E] ENQ 5 $05

[ctrl-F] ACK 6 $06

[ctrl-G] BEL 7 $07

[ctrl-H] BS 8 $08

[ctrl-I] HT 9 $09

[ctrl-J] LF 10 $l ($0A)

[ctrl-K] VT 11 $0B

[ctrl-L] FF 12 $0C

[ctrl-M] CR 13 $r ($0D)

[ctrl-N] SO 14 $0E

[ctrl-O] SI 15 $0F

[ctrl-P] DLE 16 $10

[ctrl-Q] DC1 17 $11

[ctrl-R] DC2 18 $12

[ctrl-S] DC3 19 $13

[ctrl-T] DC4 20 $14

[ctrl-U] NAK 21 $15

[ctrl-V] SYN 22 $16

[ctrl-W] ETB 23 $17

[ctrl-X] CAN 24 $18

[ctrl-Y] EM 25 $19

[ctrl-Z] SUB 26 $1A

ctrl-[ ESC 27 $1B

[ctrl-\] FS 28 $1C

ctrl-] GS 29 $1D

[ctrl-^] RS 30 $1E

[ctrl-_] US 31 $1F

ESPACE 32 $20

! 33 $21

“ 34 $22

# 35 $23

$ 36 $24

% 37 $25

& 38 $26

‘ 39 $27

( 40 $28

) 41 $29

* 42 $2A

+ 43 $2B

, 44 $2C

- 45 $2D

. 46 $2E

/ 47 $2F

0 48 $30

1 49 $31

2 50 $32

3 51 $33

4 52 $34

5 53 $35

6 54 $36

7 55 $37

8 56 $38

9 57 $39

: 58 $3A

; 59 $3B

< 60 $3C

= 61 $3D

> 62 $3E

? 63 $3F

@ 64 $40

A 65 $41

B 66 $42

C 67 $43

D 68 $44

E 69 $45

F 70 $46

G 71 $47

H 72 $48

I 73 $49

J 74 $4A

K 75 $4B

Caractère Déc. Hex.

L 76 $4C

M 77 $4D

N 78 $4E

O 79 $4F

P 80 $50

Q 81 $51

R 82 $52

S 83 $53

T 84 $54

U 85 $55

V 86 $56

W 87 $57

X 88 $58

Y 89 $59

Z 90 $5A

[ 91 $5B

\ 92 $5C

] 93 $5D

^ 94 $5E

_ 95 $5F

‘ 96 $60

a 97 $61

b 98 $62

c 99 $63

d 100 $64

e 101 $65

f 102 $66

g 103 $67

h 104 $68

i 105 $69

j 106 $6A

k 107 $6B

l 108 $6C

m 109 $6D

n 110 $6E

o 111 $6F

p 112 $70

q 113 $71

Caractère Déc. Hex.

r 114 $72

s 115 $73

t 116 $74

u 117 $75

v 118 $76

w 119 $77

x 120 $78

y 121 $79

z 122 $7A

{ 123 $7B

| 124 $7C

} 125 $7D

~ 126 $7E

DEL 127 $7F

Caractère Déc. Hex.

Page 570: 1756 Rm003f Fr p Jeux d'Instruction Avril2002

Publication 1756-RM003F-FR-P - Mai 2002 1 PN 957707-64Remplace la publication 1756-RM003E-FR-P - Novembre 2001 Copyright © 2002 Rockwell Automation. Tous droits réservés. Imprimé aux Etats-Unis.

Quatrième de couverture