Compteurs — CTU, CTD, CTUD
Compter des fronts en incrémental, en décrémental, ou dans les deux sens — sans réécrire soi-même la logique de comptage à chaque programme.
À quoi ça sert
Comme les temporisateurs, ce sont des blocs fonctionnels IEC avec instance propre. Ils comptent des fronts logiciels, au rythme du cycle automate — pas des impulsions haute fréquence. Pour du comptage rapide (codeur, débitmètre à sortie impulsionnelle au-delà de quelques centaines de Hz), il faut un compteur rapide matériel (HSC), pas ces blocs.
CTU — Comptage incrémental (Count Up)
Chaque front montant de CU incrémente CV de 1. Q passe à VRAI dès que CV atteint ou dépasse PV. R remet CV à 0 et est prioritaire sur CU : si les deux sont vrais au même cycle, le comptage repart de zéro.
| Paramètre | Type | Rôle |
|---|---|---|
| CU | BOOL | Entrée de comptage — un front montant = +1 |
| R | BOOL | Remise à zéro de CV, prioritaire sur CU |
| PV | INT | Valeur de consigne (seuil) |
| Q | BOOL | Sortie — VRAI quand CV ≥ PV |
| CV | INT | Valeur courante du comptage |
CTD — Comptage décrémental (Count Down)
Chaque front montant de CD décrémente CV de 1. Q passe à VRAI quand CV atteint 0 ou moins. LD charge CV avec la valeur PV, indépendamment du comptage en cours — c'est l'équivalent du R du CTU, mais pour repartir d'une valeur de départ plutôt que de zéro.
| Paramètre | Type | Rôle |
|---|---|---|
| CD | BOOL | Entrée de comptage — un front montant = −1 |
| LD | BOOL | Chargement de CV avec PV |
| PV | INT | Valeur de départ à charger via LD |
| Q | BOOL | Sortie — VRAI quand CV ≤ 0 |
| CV | INT | Valeur courante du comptage |
CTUD — Comptage bidirectionnel (Count Up/Down)
Combine les deux sens dans un seul bloc : CU incrémente, CD décrémente, sur la même valeur CV. QU et QD sont les deux sorties de seuil (haute et basse), R et LD gardent le même rôle que dans CTU et CTD.
| Paramètre | Type | Rôle |
|---|---|---|
| CU / CD | BOOL | Comptage montant / descendant |
| R | BOOL | Remise à zéro de CV, prioritaire |
| LD | BOOL | Chargement de CV avec PV |
| PV | INT | Valeur de consigne / de chargement |
| QU / QD | BOOL | VRAI si CV ≥ PV / si CV ≤ 0 |
| CV | INT | Valeur courante, modifiable dans les deux sens |
Programmation
Réseau 1 — Comptage de pièces jusqu'au seuil du lot ┌──────────────┐ │ CTU │ │ "compteur" │ ──────────────┤CU Q ├──────────────( lotComplet ) detectionPiece│ │ ──────────────┤R CV ├──────────────[ nbPieces ] rearmement │ │ 24───┤PV │ └──────────────┘ // lotComplet passe à 1 dès que nbPieces atteint 24. // rearmement (prioritaire) remet nbPieces à 0.
// Comptage de pièces sur un convoyeur, lot de 24, remise à zéro // manuelle par bouton poussoir. FUNCTION_BLOCK "FB_ComptageLot" VAR_INPUT detectionPiece : BOOL; // capteur de présence, un front par pièce rearmement : BOOL; // bouton poussoir opérateur END_VAR VAR_OUTPUT lotComplet : BOOL; nbPieces : INT; END_VAR VAR compteur : CTU; END_VAR BEGIN #compteur(CU := #detectionPiece, R := #rearmement, PV := 24); #lotComplet := #compteur.Q; #nbPieces := #compteur.CV; END_FUNCTION_BLOCK
Les pièges
| CV est un INT — débordement silencieux | Sur S7-1200/1500, CV est borné à la plage −32768…32767 pour un compteur INT standard. Un dépassement n'arrête rien et ne remonte pas d'erreur visible : CV boucle simplement. À sécuriser par un test de plage si le comptage peut monter haut. |
|---|---|
| Le comptage est basé sur le front, pas sur l'état | CU et CD ne comptent que sur un front montant détecté d'un cycle au suivant. Si l'entrée change deux fois plus vite que le temps de cycle automate, un ou plusieurs événements sont perdus sans avertissement — vérifier le temps de cycle face à la cadence réelle du process. |
Sources
Documentation TIA Portal — instructions de comptage IEC 61131-3 (SIMATIC S7-1200/S7-1500), aide en ligne Siemens.
