Comparer (Compare, CMP)
Ces informations s’appliquent aux automates
CompactLogix
5370, ControlLogix
5570, Compact GuardLogix
5370, GuardLogix
5570, Compact GuardLogix
5380, CompactLogix
5380, ControlLogix
5580, GuardLogix
5580 et ControlLogix 5590. Les différences entre les automates sont signalées, le cas échéant.Définir l'expression CMP en utilisant des opérateurs, des points et des valeurs immédiates. Utiliser les parenthèses ( ) pour définir des sections d'expressions plus complexes.
L'avantage de l'instruction CMP est qu'elle permet d'inclure des expressions complexes dans une même instruction.
Lors de l'évaluation de l'expression, tous les opérandes non-REAL seront convertis en REAL avant de procéder aux calculs, si au moins une des conditions suivantes est vraie.
- Tous les opérandes dans l'expression sont REAL.
- L’expression contient SIN, COS, TAN, ASIN, ACOS, ATAN, LN, LOG, DEG ou RAD.
Il existe des règles pour les opérateurs admissibles dans les opérations de sécurité. Reportez-vous à la section
Opérateurs valides.
Langues disponibles
Diagramme à relais

Bloc fonctionnel
Cette instruction n'est pas disponible dans le bloc fonctionnel.
Texte structuré
Cette instruction n'est pas disponible dans le texte structuré.
Opérandes
Voici les opérandes pour l’instruction CMP.
IMPORTANT:
Une opération inattendue peut se produire dans les cas suivants :
- Les opérandes de balise de sortie sont remplacés.
- Les membres d'un opérande de structure sont remplacés.
- Sauf lorsque cela est spécifié, les opérandes de structure sont partagés par plusieurs instructions.
Il existe des règles de conversion de données pour combiner des types de données numériques dans une instruction. Reportez-vous à la section Conversion des données.
Diagramme à relais
Ce qui suit est l’opérande pour le diagramme à relais.
Opérande | Type de données Automates CompactLogix 5370, ControlLogix 5570, Compact GuardLogix 5370 et GuardLogix 5570 | Type de données Automates CompactLogix 5380, ControlLogix 5580, Compact GuardLogix 5380, GuardLogix 5580 et ControlLogix 5590 | Format | Description |
|---|---|---|---|---|
Expression | SINT INT DINT REAL Type de chaînes | SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL Type de chaînes | balise immédiate | Une expression composée d’étiquettes et/ou de valeurs immédiates séparées par des opérateurs |
Expressions de formatage
Pour chaque opérateur utilisé dans une expression, il faut fournir un ou deux opérandes (étiquettes ou valeurs immédiates). Utiliser le tableau suivant pour formater les opérateurs et opérandes au sein d'une expression.
Pour les opérateurs qui opèrent sur : | Utiliser ce format : | Exemple |
|---|---|---|
Un opérande | operator(operand) | ABS(tag) |
Deux opérandes | operand_a operator operand_b | tag_b + 5 tag_c AND tag_d (tag_e**2) MOD (tag_f / tag_g) |
Définir l'ordre des opérations
Les instructions exécutent les opérations dans l’expression dans un ordre prédéfini qui n’est pas nécessairement leur ordre d’apparition dans l’expression. L'ordre des opérations peut être spécifié en regroupant certains termes entre parenthèses, forçant ainsi l'instruction à exécuter les opérations entre parenthèses avant les autres.
Les opérations de rang égal sont exécutées de gauche à droite.
Ordre | Fonctionnement |
|---|---|
1 | ( ) |
2 | ABS, ACOS, ASIN, ATAN, COS, DEG, BCD_TO, IsINF, IsNAN, LN, LOG, RAD, SIN, SQRT, TAN, TO_BCD, TRUNC |
3 | ** |
4 | - (negate), NOT, ! |
5 | *, /, MOD |
6 | - (soustraction), + |
7 | AND |
8 | XOR |
9 | OR |
10 | <, <=, >, >=, =, <> |
11 | && |
12 | ^^ |
13 | || |
Utilisation des chaînes dans une expression
Pour utiliser des chaînes de caractères ASCII dans une expression, observer ces lignes directrices :
- Une expression peut comparer deux points de chaînes.
- On ne peut pas entrer directement des caractères ASCII dans une expression.
- Les opérandes suivants sont autorisés :OpérateurDescription=Égal<Inférieur à<=Inférieur à ou égal>Supérieur à>=Supérieur à ou égal<>Différent
- Les chaînes sont égales si leurs caractères correspondent.
- Les caractères ASCII sont sensibles à la casse. Le A majuscule ($41) n’est pas égal au a minuscule ($61).
- Les valeurs hexadécimales des caractères permettent de définir si une chaîne est plus ou moins longue qu’une autre.
- Lorsque deux chaînes sont triées comme dans un annuaire téléphonique, l'ordre des chaînes détermine celle qui est supérieure.

Affecte les indicateurs d'état mathématique
Automates | Affecte les indicateurs d'état mathématique |
Automates CompactLogix 5380, ControlLogix 5580, Compact GuardLogix 5380 et GuardLogix 5580 | Non |
Automates CompactLogix 5370, ControlLogix 5570, Compact GuardLogix 5370 et GuardLogix 5570 | L'instruction CMP affecte les indicateurs d’état mathématique si l’expression contient un opérateur (par exemple, +, -, *, /), qui affecte les indicateurs d’état mathématique. |
Reportez-vous à la section Indicateurs d'état mathématique.
Défauts majeurs/mineurs
Aucun spécifique à cette instruction. Reportez-vous à la section Indexer via les tableaux pour consulter les défauts d'index par tableau.
Exécution
Diagramme à relais
Condition/état | Action entreprise |
|---|---|
Préscrutation | N/A. |
La condition d'entrée d'échelon est égale à faux | Définir la condition de sortie d'échelon sur la condition d'entrée d'échelon |
La condition d'entrée d'échelon est égale à vrai | Définir la condition de sortie d'échelon sur la condition d'entrée d'échelon Si l’expression renvoie false La condition de sortie d’échelon est définie sur faux |
Post-scrutation | N/A |
Exemple
Diagramme à relais

Si value_1 est égale à value_2, light_a est défini sur vrai. Si value_1 n'est pas égale à value_2, light_a est défini sur faux.
Fournir une réponse