Skip to main content

Opérateurs

Les fonctions standard intégrées qui représentent un sous-ensemble des fonctions standard IEC sont appelées opérateurs. Les fonctions définies par l'utilisateur ne peuvent pas être créées dans la programmation de sécurité.

Les opérateurs ont la même sémantique que dans CODESYS Standard.

Ils peuvent être connectés aux deux SAFExxx et Types de données Standard.

Insertion d'opérateurs

Les opérateurs sont insérés à l'aide de la Boîte d'insertion ou Insérer une boîte vide commande.

Les opérateurs peuvent également être ajoutés à partir de la boîte à outils dans le Boîte à outils vue. La boîte à outils de l'éditeur Safety FBD contient les catégories suivantes :

  • Opérateurs booléens

  • Opérateurs mathématiques

  • Autres opérateurs

Assistant de saisie

Les catégories suivantes sont affichées pour les opérateurs dans l'assistant de saisie :

  • Opérateurs

  • Conversions (pas au niveau de base)

Opérateurs extensibles

. Opérateurs extensibles par des entrées supplémentaires
  • AND

  • OR

  • ADD (uniquement dans le niveau étendu)

  • MUL (uniquement dans le niveau étendu)

  • MUX (uniquement dans le niveau étendu)

Le EQ, LT, LE, GT, et GE les opérateurs, qui sont également extensibles conformément à la norme CEI, ne peuvent être utilisés qu'avec deux entrées (comme dans le cas de la norme ).

Le Insérer une entrée La commande ajoute une entrée supplémentaire à une boîte d'opérateur extensible.

Opérateurs au niveau de base

. Opérateurs booléens
  • AND (2 entrées)

  • AND (3 entrées)

  • OR (2 entrées)

  • OR (3 entrées)

Tous les opérandes de la OR doit être SAFEBOOL.

Opérateurs au niveau étendu

. Opérateurs booléens
  • AND (2 entrées)

  • AND (3 entrées)

  • OR (2 entrées)

  • OR (3 entrées)

  • XOR

  • NOT

Important

L’utilisation imprudente de la XOR et NOT les opérateurs peuvent conduire à la perte de la propriété de sécurité intégrée SAFExxx variables. Aucun avertissement n'est généré par le vérificateur de sécurité pour de telles constructions.

Le XOR et NOT les opérateurs peuvent annuler la propriété de sécurité intégrée d'un SAFExxx variable, de sorte que le SAFE La variable perd sa propriété de sécurité intégrée, c'est-à-dire qu'elle devient « non sécurisée ». Cela peut conduire à un démarrage involontaire de l'installation.

Règle de programmation : La SAFExxx sorties de NOT et XOR doivent être déterminés. Par la suite, il faut s'assurer que ces NOT/XOR les sorties ne sont pas connectées aux sorties (E/S).

. Opérateurs mathématiques
  • ADD (2 entrées) : Arithmétique ADD opérateur

  • ADD (3 entrées) : Addition avec trois entrées

  • SUB: Soustraction

  • MUL:Multiplication

  • DIV:Division

  • EQ: Comparaison pour l'égalité

  • NE: Comparaison des inégalités

  • LT: Comparaison pour « moins de »

  • LE: Comparaison pour « inférieur à » ou « égal à »

  • GT: Comparaison pour « supérieur à »

  • GE: Comparaison pour « supérieur à » ou « égal à »

. Autres opérateurs
  • SEL

  • MUX

. Conversions
  • BOOL_TO_INT

  • BOOL_TO_DINT

  • BOOL_TO_TIME

  • BOOL_TO_WORD

  • BYTE_TO_INT

  • BYTE_TO_DINT

  • BYTE_TO_TIME

  • BYTE_TO_WORD

  • DINT_TO_BOOL

  • DINT_TO_BYTE

  • DINT_TO_INT

  • DINT_TO_TIME

  • DINT_TO_WORD

  • DINT_TO_DWORD

  • DWORD_TO_DINT

  • DWORD_TO_TIME

  • INT_TO_BOOL

  • INT_TO_BYTE

  • INT_TO_DINT

  • INT_TO_DWORD

  • INT_TO_TIME

  • INT_TO_WORD

  • TIME_TO_BOOL

  • TIME_TO_BYTE

  • TIME_TO_INT

  • TIME_TO_DINT

  • TIME_TO_WORD

  • TIME_TO_DWORD

  • WORD_TO_BOOL

  • WORD_TO_BYTE

  • WORD_TO_DINT

  • WORD_TO_INT

  • WORD_TO_TIME

  • WORD_TO_DWORD

Opérateurs avec caractéristiques de sécurité

Les caractéristiques de certains opérateurs spécifiques à sont décrites dans les sections suivantes

Erreur d'exécution en cas de dépassement de plage d'opérateur dans le niveau étendu

Important

Il est de la responsabilité des développeurs de concevoir la logique du programme de manière à ce qu'aucune erreur d'exécution ne se produise.

Réagit aux dépassements de plage suivants avec un erreur d'exécution, à la suite de quoi l'application est arrêtée et une entrée de journal est générée.

Niveau

Élément de langage

Erreur d'exécution en cas de

Étendu

DIV

Division par 0

Étendu

MUX

Appel avec une première entrée avec une valeur négative ou avec une valeur N supérieure au nombre d'entrées moins 1. Exemple : MUX(2, 16#8000, 16#8001)

Étendu

DINT_TO_INT,

TIME_TO_DINT,

TIME_TO_INT,

DINT_TO_TIME,

INT_TO_TIME,

DINT_TO_WORD,

TIME_TO_WORD,

DINT_TO_BYTE,

INT_TO_BYTE,

TIME_TO_BYTE, WORD_TO_BYTE

La valeur de sortie n'est pas dans la plage de valeurs du type cible : lors de la conversion entre deux ANY_MAGNITUDE types (INT, DINT, TIME), la valeur de sortie numérique doit être comprise dans la plage de valeurs du type cible (où TIME les valeurs sont comptées comme un nombre de millisecondes). Lors de la conversion de/vers des types de chaînes de bits (BYTE, WORD, DWORD), le modèle de bits de la valeur de sortie doit être un modèle de bits du type cible. Exemples :

DINT_TO_INT(16#0000FFFF), parce que 216-1 n'est pas un INT valeur,

de même DINT_TO_TIME(-1), parce qu'il n'y a pas de négatif TIME- valeurs

TIME_TO_DINT(t#365d), car 365 jours = 3 153 600 000 ms = 16#BBF81E00 et est donc supérieur au plus grand nombre DINT 231-1 = 16#7FFFFFFF

INT_TO_BYTE(-1), parce que BYTE englobe uniquement 0 à 255,

WORD_TO_BYTE(0xFFFF), parce que BYTE s'étend uniquement à 0xFF.

Astuce

Le comportement standard de SEL/MUX (c'est-à-dire que la valeur maximale est sélectionnée si la valeur d'entrée est trop grande et 0 est sélectionnée si la valeur d'entrée est négative) doit être programmé dans l'application de sécurité.

Figure 40. Programmation du comportement standard de SEL: pour k<0
Programmation du comportement standard de SEL: pour k<0


Figure 41. Programmation du comportement standard de SEL: pour k>max, n...valeur maximale
Programmation du comportement standard de SEL: pour k>max, n...valeur maximale


Figure 42. Programmation du comportement standard de MUX pour k<0
Programmation du comportement standard de MUX pour k<0


Figure 43. Programmation du comportement standard de MUX pour k>0
Programmation du comportement standard de MUX pour k>0