Bloc système

Temporisateurs — TON, TOF, TP

Trois temporisateurs IEC, chacun pour un besoin différent — retarder une entrée, prolonger une sortie, ou générer une impulsion calibrée.

TONTOFTP

À quoi ça sert

Les trois sont des blocs fonctionnels standard (IEC 61131-3), disponibles aussi bien en CONT qu'en SCL. Chacun a besoin d'une instance propre — un DB créé automatiquement à l'appel, ou une multi-instance si on l'utilise à l'intérieur d'un autre bloc. Sans instance dédiée, deux temporisations qui partagent le même DB partagent aussi le même état : la seconde écrase la première.

TON — Retard à l'enclenchement (On-delay)

La sortie Q passe à VRAI seulement si l'entrée IN reste VRAIE sans interruption pendant la durée PT. Si IN repasse à FAUX avant l'échéance, le comptage repart de zéro au prochain front — rien n'est mémorisé entre-temps.

ParamètreTypeRôle
INBOOLEntrée à surveiller
PTTIMEDurée de temporisation à atteindre
QBOOLSortie — VRAI une fois PT écoulé, tant que IN reste VRAI
ETTIMETemps écoulé depuis le dernier front montant de IN
Quand l’utiliserFiltrer un signal bruité — n'accepter un front que s'il tient au moins X ms avant de le considérer comme réel — ou temporiser le démarrage d'une pompe après une commande de marche.
PiègeSi IN redevient FAUX avant la fin de PT, Q ne s'active jamais et ET retombe à 0. C'est voulu : TON n'a pas de mémoire d'un cycle à l'autre entre deux fronts, contrairement à ce qu'on attend parfois d'un « minuteur ».

TOF — Retard au déclenchement (Off-delay)

La sortie Q passe à VRAI immédiatement dès que IN passe à VRAI — pas de délai à la montée. Elle ne repasse à FAUX que PT après que IN soit retombé à FAUX. C'est l'inverse d'un TON, et c'est la confusion la plus fréquente entre les deux.

ParamètreTypeRôle
INBOOLEntrée à surveiller
PTTIMEDurée de maintien après la retombée de IN
QBOOLSortie — VRAI dès IN, reste VRAI PT de plus après sa retombée
ETTIMETemps écoulé depuis le dernier front descendant de IN
Quand l’utiliserMaintenir un ventilateur de refroidissement en marche quelques minutes après l'arrêt d'un four, ou prolonger l'affichage d'un voyant de défaut le temps qu'un opérateur ait le temps de le voir.
PiègeUn TOF posé là où un TON était attendu ne retarde rien à la montée — le symptôme typique est une sortie qui réagit trop vite, puis qui traîne trop longtemps à l'extinction.

TP — Impulsion calibrée (Pulse)

Un front montant de IN déclenche une impulsion de durée PT sur Q, quelle que soit la durée réelle de IN — même si IN redescend avant la fin de PT, Q reste actif jusqu'au bout. Un nouveau front pendant que Q est déjà actif est ignoré : TP ne redémarre pas le comptage.

ParamètreTypeRôle
INBOOLEntrée déclenchante — seul le front montant compte
PTTIMEDurée fixe de l'impulsion générée
QBOOLSortie — impulsion de durée PT
ETTIMETemps écoulé depuis le déclenchement
Quand l’utiliserGénérer une impulsion de durée fixe à partir d'un bouton poussoir, quelle que soit la durée d'appui — par exemple pour piloter une électrovanne qui doit s'ouvrir exactement 500 ms.
PiègeAppuyer une seconde fois sur le bouton pendant l'impulsion en cours ne la prolonge pas et ne la relance pas : il faut attendre que Q retombe pour qu'un nouveau front soit pris en compte.

Programmation

// Un réseau suffit : le bloc TON encapsule toute la logique.

Réseau 1 — Filtrage par temporisation à l'enclenchement
              ┌──────────────┐
              │     TON      │
              │  "tempo"     │
──────────────┤IN         Q  ├──────────────( entreeFiltree )
 entreeBrute  │              │
     T#50ms───┤PT        ET  │
              └──────────────┘

// entreeFiltree ne passe à 1 que si entreeBrute est resté à 1
// sans interruption pendant 50 ms.
// Filtrage anti-rebond d'une entrée TOR par TON — le front n'est
// validé que s'il tient au moins 50 ms sans interruption.

FUNCTION_BLOCK "FB_Antirebond"
VAR_INPUT
    entreeBrute : BOOL;   // signal capteur, potentiellement bruité
END_VAR
VAR_OUTPUT
    entreeFiltree : BOOL;
END_VAR
VAR
    tempo : TON;          // instance dédiée à ce FB
END_VAR

BEGIN
    #tempo(IN := #entreeBrute, PT := T#50ms);
    #entreeFiltree := #tempo.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

PT est un TIME, pas un entierUne constante s'écrit T#500ms ou T#2s500ms, pas simplement « 500 ». Passer un INT brut sans conversion est une erreur de compilation, pas une erreur silencieuse — mais elle surprend les débutants venus d'autres langages.
Une instance par appel, pas par blocCopier-coller un réseau contenant un TON sans changer le nom d'instance (le DB associé) fait cohabiter deux temporisations différentes sur le même état interne. Symptôme typique : une des deux temporisations semble « figée » ou copie le comportement de l'autre.
PT peut être une variable, pas seulement une constanteRien n'empêche de câbler PT sur une variable modifiable en cours de fonctionnement (recette, réglage opérateur) — utile, mais un changement de PT pendant que la temporisation est en cours ne réinitialise pas ET : l'effet n'est visible qu'au prochain front.

Sources

Documentation TIA Portal — instructions de temporisation 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.