Instructions TIA Portal

Opérations logiques sur bits
Contacts, bobines et détection de fronts

Le cœur de la programmation automate. Les instructions logiques sur bits gèrent chaque opération booléenne — des simples contacts et bobines aux bascules et à la détection de fronts. Maîtrisez-les et vous pourrez construire n'importe quelle logique d'automatisation.

Que sont les opérations logiques sur bits ?

Les opérations logiques sur bits sont les instructions les plus fondamentales de la programmation automate. Elles travaillent avec des signaux booléens (VRAI/FAUX, 1/0) — lecture d'états d'entrée, combinaison de conditions avec la logique ET/OU, et contrôle des sorties. En CONT (LAD), elles apparaissent sous forme de contacts et de bobines sur des réseaux. En LOG (FBD), elles apparaissent sous forme de boîtes de portes ET/OU/NON.

Chaque programme automate utilise intensivement les instructions logiques sur bits. Un circuit de démarrage/arrêt moteur, une condition d'alarme, un verrouillage de vanne — ils commencent tous par des contacts lisant les états des capteurs et se terminent par des bobines pilotant les actionneurs.

Contacts — Lecture des états d'entrée

Les contacts lisent l'état booléen d'une variable et le transmettent le long de la chaîne logique

Contact à fermeture

—| |—
F9

Ce qu'il fait

Lit une variable booléenne (BOOL). Si la variable est à VRAI (1), le contact se ferme et transmet le signal (RLO = VRAI) à l'élément suivant. Si la variable est à FAUX (0), le contact est ouvert et bloque le flux de signal. C'est l'instruction la plus utilisée en programmation CONT.

Quand l'utiliser

Chaque fois que vous devez vérifier si une condition est VRAIE : un bouton est-il enfoncé ? Un capteur est-il actif ? Un indicateur est-il activé ? Placez un contact à fermeture et affectez-lui votre variable.

Conseils d'expert

Le nom 'Normalement Ouvert' vient de la logique à relais — le contact est ouvert (ne laissant pas passer le courant) dans son état normal/au repos. Il se ferme lorsqu'il est excité.

Plusieurs contacts NO en série créent une logique ET. Plusieurs contacts NO en parallèle créent une logique OU.

En LOG, l'équivalent consiste simplement à câbler une variable BOOL à l'entrée d'une boîte ET/OU — aucun symbole de contact explicite n'est nécessaire.

Contact à ouverture

—|/|—
F10

Ce qu'il fait

L'inverse d'un contact à fermeture. Si la variable est à FAUX (0), le contact est fermé et transmet le signal. Si la variable est à VRAI (1), le contact s'ouvre et bloque le signal. Il agit comme une opération NON sur la valeur de la variable.

Quand l'utiliser

Lorsque vous devez vérifier qu'une condition n'est PAS vraie : arrêt d'urgence non enfoncé, aucun défaut actif, fin de course non atteint. Très courant pour les verrouillages de sécurité et les conditions d'alarme.

Conseils d'expert

Utilisez des contacts NC pour les arrêts d'urgence et les circuits de sécurité — ils sont à sécurité positive. Si le fil se coupe, le contact NC s'ouvre et arrête la machine.

En LOG, l'équivalent est une entrée inversée (petit cercle sur la broche d'entrée d'une boîte ET/OU).

Ne confondez pas l'instruction de contact NC avec un bouton-poussoir physiquement NC. Ce sont des concepts indépendants.

Inverser RLO

—|NOT|—

Ce qu'il fait

Inverse (négativise) le Résultat Logique (RLO) actuel. Si la chaîne logique jusqu'à ce point s'évalue à VRAI, NOT la rend FAUSSE, et vice versa. Il opère sur le résultat logique accumulé, pas sur une variable spécifique.

Quand l'utiliser

Lorsque vous devez inverser une expression logique complexe plutôt qu'une seule variable. Au lieu de réécrire toute la condition avec des contacts inversés, placez NOT à la fin pour basculer le résultat.

Conseils d'expert

NOT inverse tout le RLO à ce point de la chaîne — c'est différent d'un contact NC qui n'inverse qu'une seule variable.

En LOG, utilisez la boîte NOT ou inversez la sortie d'une porte logique.

À utiliser avec parcimonie — l'utilisation excessive de NOT rend la logique difficile à lire. Souvent, la restructuration de la logique est plus claire.

Bobines — Contrôle des sorties

Les bobines écrivent le résultat de la chaîne logique dans une variable de sortie

Affectation

—( )—
Shift + F7

Ce qu'il fait

Écrit le RLO (Résultat Logique) actuel dans une variable booléenne. Si la chaîne logique est VRAIE, la variable devient VRAIE. Si FAUSSE, la variable devient FAUSSE. C'est la bobine de sortie standard — elle reflète directement la logique d'entrée à chaque cycle de balayage.

Quand l'utiliser

Pour toute sortie qui doit suivre directement ses conditions d'entrée. Un voyant allumé quand un moteur tourne, une vanne qui s'ouvre quand les conditions sont remplies. La sortie suit l'entrée — quand les conditions deviennent FAUSSES, la sortie devient FAUSSE aussi.

Conseils d'expert

La bobine d'affectation est 'non rémanente' — elle écrit à chaque balayage. Si la logique devient FAUSSE, la sortie devient immédiatement FAUSSE.

Une variable ne doit être affectée que dans UN SEUL réseau. Plusieurs affectations à la même variable font que la dernière l'emporte, entraînant un comportement imprévisible.

En LOG, l'affectation consiste simplement à connecter la sortie d'une porte logique à une variable BOOL.

Affectation inversée

—(/)—

Ce qu'il fait

Écrit le RLO inversé dans une variable booléenne. Si la chaîne logique est VRAIE, la variable devient FAUSSE. Si la chaîne logique est FAUSSE, la variable devient VRAIE. Elle combine Affectation + NON en une seule instruction.

Quand l'utiliser

Lorsqu'une sortie doit être active dans la condition opposée. Par exemple, une lampe 'système OK' qui s'éteint lorsqu'un défaut est détecté. Au lieu d'inverser toute la chaîne logique, utilisez la bobine inversée.

Conseils d'expert

Équivalent à placer un NOT avant une bobine d'affectation régulière, mais plus compact.

À utiliser avec précaution — les bobines inversées peuvent être déroutantes à lire. Parfois, il est plus clair de restructurer la logique.

En LOG, il s'agit d'une connexion de sortie inversée.

Réinitialiser sortie (Reset)

—(R)—

Ce qu'il fait

Lorsque le RLO est VRAI, la variable est mise à FAUX (0). Lorsque le RLO est FAUX, la variable est inchangée (conserve sa valeur actuelle). C'est une opération unidirectionnelle — elle ne peut qu'éteindre, jamais allumer.

Quand l'utiliser

Dans les circuits Set/Reset : un réseau active la sortie (Set), un autre la désactive (Reset). Utilisez Reset pour les conditions d'arrêt, l'effacement des défauts et l'acquittement des alarmes. Le Reset a généralement la priorité dans la logique de sécurité.

Conseils d'expert

Le Reset n'agit que lorsque son RLO est VRAI. Lorsque le RLO est FAUX, la sortie reste inchangée — il ne la met PAS à VRAI.

Dans une paire S/R, l'instruction qui apparaît en DERNIER dans le programme a la priorité (si les deux conditions sont VRAIES simultanément).

Le Reset est rémanent — après un Reset, la sortie reste FAUSSE jusqu'à ce qu'elle soit explicitement activée (Set) à nouveau.

Activer sortie (Set)

—(S)—

Ce qu'il fait

Lorsque le RLO est VRAI, la variable est mise à VRAI (1). Lorsque le RLO est FAUX, la variable est inchangée (conserve sa valeur actuelle). C'est une opération unidirectionnelle — elle ne peut qu'allumer, jamais éteindre.

Quand l'utiliser

Dans les circuits Set/Reset : utilisez Set pour les conditions de démarrage, les signaux de verrouillage et les bits de premier passage. Une fois activée, la sortie reste VRAIE jusqu'à ce qu'elle soit explicitement réinitialisée (Reset) — ce qui la rend 'auto-maintenue' sans avoir besoin d'un contact d'auto-maintien.

Conseils d'expert

Le Set n'agit que lorsque son RLO est VRAI. Lorsque le RLO est FAUX, la sortie reste inchangée — il ne la réinitialise pas.

Contrôle moteur classique : Réseau 1 = Bouton Marche → Set Moteur. Réseau 2 = Bouton Arrêt OU Défaut → Reset Moteur.

Attention aux variables rémanentes dans les circuits de sécurité — après un cycle d'alimentation, les sorties Set peuvent conserver leur dernier état selon les paramètres du DB.

Opérations sur champ de bits

Activer ou réinitialiser une plage de bits en une seule opération

SET_BF — Activer champ de bits

Ce qu'il fait

Met à VRAI un groupe de bits contigus à partir d'une adresse spécifiée. Vous définissez le bit de départ et le nombre de bits à activer. Lorsque le RLO est VRAI, tous les bits spécifiés sont mis à 1.

Quand l'utiliser

Lorsque vous devez activer plusieurs sorties liées simultanément — par exemple, l'activation de tous les bits d'un mot d'état, l'initialisation d'un groupe d'indicateurs ou l'activation d'un banc de sorties à la fois.

Conseils d'expert

Utile pour les opérations par lots au lieu d'écrire des instructions Set individuelles pour chaque bit.

Le paramètre du nombre de bits détermine combien de bits consécutifs sont affectés.

Comme le Set, cela n'agit que lorsque le RLO est VRAI — les bits sont inchangés lorsque le RLO est FAUX.

RESET_BF — Réinitialiser champ de bits

Ce qu'il fait

Réinitialise à FAUX un groupe de bits contigus à partir d'une adresse spécifiée. Vous définissez le bit de départ et le nombre de bits à réinitialiser. Lorsque le RLO est VRAI, tous les bits spécifiés sont mis à 0.

Quand l'utiliser

Lorsque vous devez effacer plusieurs indicateurs ou sorties à la fois — par exemple, l'effacement de tous les bits d'alarme dans un mot d'état, la réinitialisation d'un groupe de sorties pendant l'arrêt ou l'initialisation d'une zone de données.

Conseils d'expert

Le pendant de SET_BF — utilisez-les ensemble pour les opérations Set/Reset au niveau du groupe.

Particulièrement utile pour effacer des mots d'alarme ou des registres d'état en une seule opération.

Comme le Reset, cela n'agit que lorsque le RLO est VRAI — les bits sont inchangés lorsque le RLO est FAUX.

Bascules — Circuits de verrouillage

Éléments bistables qui mémorisent leur état jusqu'à ce qu'il soit explicitement modifié

SR — Bascule Set/Reset

Ce qu'il fait

Une bascule bistable avec priorité à l'activation (Set). Elle possède deux entrées : S (Set) et R (Reset), et une sortie Q. Quand S=VRAI, Q devient VRAI. Quand R=VRAI, Q devient FAUX. Quand S et R sont VRAIS simultanément, Q est VRAI (le Set domine).

Quand l'utiliser

Pour les circuits de verrouillage où la condition d'activation doit être prioritaire. Dans une bascule SR, si la marche et l'arrêt sont enfoncés en même temps, la sortie reste activée. Utilisez ceci lorsque la 'priorité marche' est acceptable.

Conseils d'expert

SR = priorité Set. Si S=1 et R=1 → Q=1. À utiliser lorsque le démarrage est plus important que l'arrêt.

Dans les applications critiques pour la sécurité, préférez RS (priorité Reset) — c'est plus sûr si les deux conditions se déclenchent simultanément.

La bascule est une boîte unique en CONT et en LOG avec les entrées S, R et la sortie Q.

RS — Bascule Reset/Set

Ce qu'il fait

Une bascule bistable avec priorité à la réinitialisation (Reset). Elle possède deux entrées : R (Reset) et S (Set), et une sortie Q. Quand S=VRAI, Q devient VRAI. Quand R=VRAI, Q devient FAUX. Quand R et S sont VRAIS simultanément, Q est FAUX (le Reset domine).

Quand l'utiliser

Pour les circuits de verrouillage où la sécurité est primordiale. La condition de Reset (arrêt) est prioritaire — si la marche et l'arrêt sont actifs, la sortie est désactivée. C'est le choix standard pour le contrôle moteur et les verrouillages de sécurité.

Conseils d'expert

RS = priorité Reset. Si S=1 et R=1 → Q=0. Le choix le plus sûr pour la plupart des applications industrielles.

Modèle de contrôle moteur classique : S = Bouton_Marche ET NON Défaut, R = Bouton_Arrêt OU Arrêt_Urgence OU Défaut.

La sortie Q est rémanente pendant le cycle de balayage — elle conserve sa valeur jusqu'à ce que la bascule soit à nouveau évaluée.

Détection de front — Détection des changements de signal

Détecter quand un signal passe de FAUX→VRAI ou de VRAI→FAUX

Interroger opérande sur front montant

—|P|—

Ce qu'il fait

Détecte un front montant (transition FAUX→VRAI) sur un opérande spécifique. L'instruction compare la valeur actuelle avec la valeur du balayage précédent. Si la valeur est passée de 0 à 1, le RLO est VRAI pendant exactement un cycle de balayage. Nécessite un bit de mémoire de front (bit M) pour stocker l'état précédent.

Quand l'utiliser

Lorsque vous avez besoin d'une impulsion unique à partir d'un signal continu : compter les pressions sur un bouton, déclencher une action unique sur un changement de niveau, incrémenter un compteur à chaque activation. Sans détection de front, un bouton maintenu se déclencherait à chaque cycle de balayage.

Conseils d'expert

Vous DEVEZ affecter un bit de mémoire de front unique (bit M) — ne réutilisez PAS le même bit M pour plusieurs détections de front, sinon elles interféreront.

La sortie est VRAIE pendant exactement un cycle de balayage de l'automate (généralement 1 à 50 ms). Si vous avez besoin d'une impulsion plus longue, utilisez une temporisation.

En CONT, cela apparaît comme un contact avec un marquage 'P'. La variable du bit M est affichée au-dessus/au-dessous du contact.

Interroger opérande sur front descendant

—|N|—

Ce qu'il fait

Détecte un front descendant (transition VRAI→FAUX) sur un opérande spécifique. L'instruction compare la valeur actuelle avec la valeur du balayage précédent. Si la valeur est passée de 1 à 0, le RLO est VRAI pendant exactement un cycle de balayage. Nécessite un bit de mémoire de front.

Quand l'utiliser

Lorsque vous devez réagir à l'extinction d'un signal : détecter quand un bouton est relâché, déclencher lors de la désactivation d'un capteur ou capturer le moment où une étape de processus se termine.

Conseils d'expert

Mêmes règles que pour le front montant — chaque détection de front descendant a besoin de son propre bit M unique.

Utile pour les actions 'au relâchement du bouton' : démarrer une temporisation quand un bouton est relâché, pas quand il est enfoncé.

Dans une séquence d'arrêt, utilisez les fronts descendants pour détecter quand chaque étape se termine (la sortie passe de ON à OFF).

Mettre opérande sur front montant

—(P)—

Ce qu'il fait

Met à VRAI un opérande spécifié pendant un cycle de balayage lorsqu'un front montant (FAUX→VRAI) est détecté sur le RLO. Combine la détection de front et l'affectation de sortie en une seule instruction.

Quand l'utiliser

Lorsque vous souhaitez activer un indicateur ou une sortie pendant exactement un balayage sur un front montant, sans avoir besoin d'un contact de détection de front séparé suivi d'une bobine.

Conseils d'expert

Il s'agit d'une instruction de type bobine — elle se place à la fin d'un réseau, pas au milieu.

Nécessite un bit de mémoire de front tout comme la version contact.

L'opérande est VRAI pendant un seul balayage, puis revient automatiquement à FAUX.

Mettre opérande sur front descendant

—(N)—

Ce qu'il fait

Met à VRAI un opérande spécifié pendant un cycle de balayage lorsqu'un front descendant (VRAI→FAUX) est détecté sur le RLO. Combine la détection de front descendant et l'affectation de sortie en une seule instruction.

Quand l'utiliser

Lorsque vous souhaitez activer un indicateur ou une sortie pendant exactement un balayage sur un front descendant. Utile pour déclencher des actions après la désactivation.

Conseils d'expert

Instruction de type bobine — à placer à la fin d'un réseau.

Nécessite son propre bit de mémoire de front unique.

Souvent utilisé pour des actions de 'nettoyage' qui doivent se produire une fois lorsqu'un processus s'arrête.

P_TRIG — Interroger RLO sur front montant

Ce qu'il fait

Détecte un front montant sur le RLO (Résultat Logique) plutôt que sur un opérande spécifique. Lorsque le résultat logique combiné passe de FAUX à VRAI, la sortie est VRAIE pendant un cycle de balayage. La mémoire de front est stockée dans l'instance de l'instruction.

Quand l'utiliser

Lorsque vous souhaitez détecter un front montant sur une combinaison logique complexe, pas seulement sur une seule variable. Par exemple : détecter quand (Capteur1 ET Capteur2 ET NON Défaut) devient VRAI pour la première fois.

Conseils d'expert

P_TRIG opère sur le RLO accumulé — il détecte le front de toute la chaîne logique qui le précède.

La mémoire de front est intégrée à l'instruction — pas besoin de bit M séparé.

En LOG, P_TRIG est une boîte avec une entrée CLK et une sortie Q.

N_TRIG — Interroger RLO sur front descendant

Ce qu'il fait

Détecte un front descendant sur le RLO. Lorsque le résultat logique combiné passe de VRAI à FAUX, la sortie est VRAIE pendant un cycle de balayage. La mémoire de front est stockée dans l'instance de l'instruction.

Quand l'utiliser

Lorsque vous souhaitez détecter quand une condition complexe cesse d'être vraie. Par exemple : détecter le moment où (Mode_Auto ET Tout_OK) passe de VRAI à FAUX.

Conseils d'expert

N_TRIG est le pendant du front descendant de P_TRIG.

Pas besoin de bit M séparé — la mémoire de front est interne.

Utile pour détecter la fin d'une condition combinée plutôt qu'un signal unique.

R_TRIG — Détecter front montant du signal

Ce qu'il fait

Bloc fonctionnel détecteur de front montant conforme à la norme CEI 61131-3. Il possède une entrée CLK et une sortie Q. Lorsque CLK passe de FAUX à VRAI, Q est VRAI pendant un cycle de balayage. La mémoire de front est stockée dans les données d'instance du FB.

Quand l'utiliser

Lorsque vous souhaitez une détection de front standard CEI avec ses propres données d'instance. R_TRIG est un bloc fonctionnel — chaque instance maintient sa propre mémoire de front automatiquement. Préféré dans le code structuré et réutilisable.

Conseils d'expert

R_TRIG est un FB — il a besoin de données d'instance (soit son propre DB, soit en tant que multi-instance dans un FB parent). Cela le rend autonome et réutilisable.

Disponible depuis la V1.0 sur S7-1200/1500. C'est la méthode standard CEI 61131-3 de détection de front.

En SCL : myRTRIG(CLK := monSignal); IF myRTRIG.Q THEN ... END_IF;

F_TRIG — Détecter front descendant du signal

Ce qu'il fait

Bloc fonctionnel détecteur de front descendant conforme à la norme CEI 61131-3. Il possède une entrée CLK et une sortie Q. Lorsque CLK passe de VRAI à FAUX, Q est VRAI pendant un cycle de balayage. La mémoire de front est stockée dans les données d'instance du FB.

Quand l'utiliser

Lorsque vous souhaitez une détection de front descendant standard CEI avec ses propres données d'instance. F_TRIG est le pendant du front descendant de R_TRIG.

Conseils d'expert

F_TRIG est un FB avec sa propre instance — comme R_TRIG, il est autonome et conforme à la norme CEI 61131-3.

En SCL : myFTRIG(CLK := monSignal); IF myFTRIG.Q THEN ... END_IF;

Préférez R_TRIG/F_TRIG aux contacts |P|/|N| lors de l'écriture de code de bibliothèque réutilisable, car ils ne nécessitent pas de bits M externes.

Référence rapide — Les 20 instructions logiques sur bits

#InstructionSymbole CONTRaccourciDescription
1Contact à fermeture—| |—F9Transmet le signal quand la variable est à VRAI
2Contact à ouverture—|/|—F10Transmet le signal quand la variable est à FAUX
3Inverser RLO—|NOT|—Inverse le Résultat Logique
4Affectation—( )—Shift + F7Écrit le RLO dans la variable de sortie
5Affectation inversée—(/)—Écrit le RLO inversé dans la variable de sortie
6Réinitialiser sortie (Reset)—(R)—Met la variable à FAUX quand le RLO est VRAI
7Activer sortie (Set)—(S)—Met la variable à VRAI quand le RLO est VRAI
8SET_BF — Activer champ de bitsMet à VRAI une plage de bits
9RESET_BF — Réinitialiser champ de bitsRéinitialise à FAUX une plage de bits
10SR — Bascule Set/ResetBascule avec priorité Set (S=1, R=1 → Q=1)
11RS — Bascule Reset/SetBascule avec priorité Reset (S=1, R=1 → Q=0)
12Interroger opérande sur front montant—|P|—Détecte un front montant sur un opérande
13Interroger opérande sur front descendant—|N|—Détecte un front descendant sur un opérande
14Mettre opérande sur front montant—(P)—Met l'opérande à 1 pendant 1 cycle sur front montant
15Mettre opérande sur front descendant—(N)—Met l'opérande à 1 pendant 1 cycle sur front descendant
16P_TRIG — Interroger RLO sur front montantDétecte un front montant sur le RLO
17N_TRIG — Interroger RLO sur front descendantDétecte un front descendant sur le RLO
18R_TRIG — Détecter front montant du signalDétecteur de front montant CEI (FB)
19F_TRIG — Détecter front descendant du signalDétecteur de front descendant CEI (FB)

Foire aux questions

Quelle est la différence entre les bobines Set/Reset et les bascules SR/RS ?

Les bobines Set (S) et Reset (R) sont des instructions individuelles placées dans des réseaux séparés — vous contrôlez la priorité par le réseau qui arrive en dernier. Les bascules SR/RS sont des boîtes uniques avec les deux entrées — la priorité est intégrée (SR = priorité Set, RS = priorité Reset). Les bascules sont plus compactes et rendent la priorité explicite.

Quelle détection de front dois-je utiliser : |P|/|N|, (P)/(N), P_TRIG/N_TRIG, ou R_TRIG/F_TRIG ?

Les contacts |P|/|N| détectent les fronts sur une variable spécifique et ont besoin d'un bit M externe. Les bobines (P)/(N) combinent la détection de front avec l'affectation de sortie. P_TRIG/N_TRIG détectent les fronts sur le RLO (logique combinée). R_TRIG/F_TRIG sont des FB standard CEI avec mémoire intégrée. Pour le code de bibliothèque réutilisable, préférez R_TRIG/F_TRIG. Pour une logique simple en ligne, les contacts |P|/|N| conviennent parfaitement.

Pourquoi mon circuit Set/Reset se comporte-t-il de manière inattendue ?

La cause la plus fréquente est que les conditions Set et Reset sont VRAIES simultanément. Dans ce cas, la dernière instruction du programme l'emporte. Si votre réseau Reset est avant votre réseau Set, la sortie sera à Set. Solution : utilisez une bascule RS (priorité Reset) pour les circuits critiques pour la sécurité, ou assurez-vous que vos conditions s'excluent mutuellement.

La détection de front peut-elle fonctionner sur des valeurs analogiques ou seulement sur BOOL ?

Les instructions de détection de front (|P|, |N|, R_TRIG, F_TRIG) fonctionnent uniquement sur des signaux booléens. Pour les valeurs analogiques, vous devez créer une comparaison (par exemple, valeur > seuil) qui produit un résultat BOOL, puis appliquer la détection de front à ce BOOL.

Générez de la logique sur bits avec l'IA

Décrivez votre logique de contrôle en texte clair et T-IA Connect génère le code automate — y compris les contacts, les bobines, les bascules et la détection de fronts.