Bloc système

Détection de front — R_TRIG, F_TRIG

Transformer un état stable en une impulsion d'un seul cycle — la base de toute logique « une seule fois par événement », et l'erreur la plus fréquente chez qui l'ignore.

R_TRIGF_TRIG

À quoi ça sert

Un capteur ou un bouton reste souvent VRAI pendant plusieurs cycles automate d'affilée. Sans détection de front, une condition testée directement sur cet état déclenche l'action qu'elle commande à chaque cycle tant que l'état reste vrai — pas une seule fois. R_TRIG et F_TRIG isolent le changement d'état lui-même, indépendamment de sa durée. Chaque instance a sa propre mémoire d'un cycle à l'autre : c'est ce qui permet de « se souvenir » de l'état précédent pour détecter le changement.

R_TRIG — Détection de front montant

Q passe à VRAI pendant exactement un cycle lorsque CLK passe de FAUX à VRAI, puis retombe à FAUX même si CLK reste VRAI. Nécessite une instance (DB) pour mémoriser l'état de CLK au cycle précédent.

ParamètreTypeRôle
CLKBOOLSignal à surveiller
QBOOLImpulsion d'un cycle au front montant de CLK
Quand l’utiliserIncrémenter un compteur personnalisé une seule fois par appui, ou déclencher une temporisation une seule fois par cycle machine plutôt qu'à chaque scrutation.
PiègeTester directement CLK dans une condition (sans passer par R_TRIG ou un bit de mémoire équivalent) redéclenche l'action à chaque cycle tant que CLK reste vrai — c'est l'erreur la plus fréquente en début d'apprentissage du langage.

F_TRIG — Détection de front descendant

Symétrique de R_TRIG : Q passe à VRAI pendant un cycle lorsque CLK passe de VRAI à FAUX.

ParamètreTypeRôle
CLKBOOLSignal à surveiller
QBOOLImpulsion d'un cycle au front descendant de CLK
Quand l’utiliserDétecter le relâchement d'un bouton poussoir, ou la fin d'un mouvement signalée par la retombée d'un capteur de fin de course.

Programmation

Réseau 1 — Impulsion unique sur franchissement de seuil
              ┌──────────────┐
              │    R_TRIG    │
              │ "detecteur"  │
──────────────┤CLK        Q  ├──────────────( impulsionAlarme )
 niveauHaut   │              │
              └──────────────┘

// impulsionAlarme ne reste à 1 qu'un cycle, même si niveauHaut
// reste à 1 pendant des heures.
// Déclenche une alarme une seule fois quand le niveau franchit le
// seuil haut, plutôt qu'en continu tant que le seuil est dépassé.

FUNCTION_BLOCK "FB_AlarmeUneFois"
VAR_INPUT
    niveauHaut : BOOL;   // ex. bit HIGH remonté par le capteur
END_VAR
VAR_OUTPUT
    impulsionAlarme : BOOL;   // un seul cycle par dépassement
END_VAR
VAR
    detecteur : R_TRIG;
END_VAR

BEGIN
    #detecteur(CLK := #niveauHaut);
    #impulsionAlarme := #detecteur.Q;
END_FUNCTION_BLOCK
CONT ou SCL ?La mise à l’échelle est plus lisible en SCL. L’usage courant est d’écrire ce bloc en SCL et de l’appeler depuis le programme CONT. La version CONT existe pour les sites où le SCL n’est pas autorisé.
Code non validé sur installationGénéré depuis la documentation. À confirmer sur matériel avant mise en production.

Les pièges

Une instance par signal surveilléR_TRIG et F_TRIG mémorisent l'état du cycle précédent dans leur propre instance. Réutiliser la même instance pour surveiller deux signaux différents (par exemple en copiant un réseau sans changer le nom du DB) ne détecte correctement le front que sur l'un des deux, de façon imprévisible selon l'ordre d'évaluation.
Alternative plus légère en CONT : les contacts P et NUn contact « P » (front montant) ou « N » (front descendant) posé directement sur un fil produit le même résultat qu'un R_TRIG/F_TRIG, mais mémorise son état dans un simple bit interne plutôt que dans une instance de bloc — pratique pour une détection ponctuelle sans vouloir déclarer un DB dédié. Le résultat logique est identique.
Un redémarrage à chaud peut générer un faux frontSi CLK est déjà VRAI au premier cycle après une remise en RUN, l'instance non initialisée peut, selon son état de mémoire au démarrage, interpréter cela comme un front montant. À vérifier si l'action déclenchée est sensible (démarrage moteur, par exemple).

Sources

Documentation TIA Portal — instructions de détection de front IEC 61131-3 (SIMATIC S7-1200/S7-1500), aide en ligne Siemens.

À propos de cette page Cette page est générée depuis des fiches de données structurées, pas écrite à la main — voir la maquette interactive pour naviguer parmi tous les guides.