Automate Logix5000™ - Jeu d'instructions1756-Lx, 1769-Lx, 1789-Lx, 1794-Lx, PowerFlex 700S
Manuel de référence
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.
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)
Notes :
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
2 Sommaire des modifications
Notes :
Publication 1756-RM003F-FR-P - Mai 2002
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
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
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
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
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
6 Repérage des instructions
Notes :
Publication 1756-RM003F-FR-P - Mai 2002
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
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
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
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
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
6 Préface
Notes :
Publication 1756-RM003F-FR-P - Mai 2002
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
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
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
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
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
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
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
xiv Table des matières
Publication 1756-RM003F-FR-P - Mai 2002
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
1-22 Instructions sur bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Notes :
Publication 1756-RM003F-FR-P - Mai 2002
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 2002Instructions 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
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
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
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
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
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
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
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
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
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
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
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
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
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 2Instructions 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
3-52 Instructions d'entrée/de sortie (MSG, GSV, SSV)
Notes :
Publication 1756-RM003F-FR-P - Mai 2002
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
4-42 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Notes :
Publication 1756-RM003F-FR-P - Mai 2002
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
8-32 Instructions sur tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)
Notes :
Publication 1756-RM003F-FR-P - Mai 2002
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
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
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
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
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
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
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
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
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
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
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
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
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
9-14 Instructions séquenceur (SQI, SQO, SQL)
Notes :
Publication 1756-RM003F-FR-P - Mai 2002
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
12-38 Instructions spéciales (FBC, DDT, DTR, PID)
Notes :
Publication 1756-RM003F-FR-P - Mai 2002
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
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
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
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
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
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
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
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
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
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
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
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
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
13-14 Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Notes :
Publication 1756-RM003F-FR-P - Mai 2002
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
15-8 Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC)
Logique à relais
Bloc fonctionnel
Publication 1756-RM003F-FR-P - Mai 2002
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
16-30 Instructions port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Notes :
Publication 1756-RM003F-FR-P - Mai 2002
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
8 Index
Publication 1756-RM003F-FR-P - Mai 2002
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.
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