Lezione 7 di 15

S7 CC Lezione 07

πŸŽ“ S7 PLC Crash Course Β· Lezione 07

Counter β€” Contatori πŸ”’

[CTU]   [CTD]   [CTUD]
Contare pezzi, dosare batch, gestire quantitΓ .

🎯 Cosa impari in questa lezione

  • A cosa servono i contatori in automazione
  • CTU β€” conteggio in avanti (count up)
  • CTD β€” conteggio all’indietro (count down)
  • CTUD β€” conteggio bidirezionale (up/down)
  • Il concetto fondamentale di fronte di salita nel conteggio
  • Pattern: contapezzi, dosaggio batch, limite cicli

πŸ“‹ Scheda lezione

Modulo7 β€” Contatori
Lezione07 di 15
Livello⭐⭐ Intermedio
Tempo~35 minuti
Elementi nuovi3 (CTU, CTD, CTUD)
PrerequisitiLezione 06

🧠 I contatori β€” contare gli eventi

I timer misurano il tempo. I contatori misurano la quantitΓ : quanti pezzi sono passati, quanti cicli sono stati eseguiti, quante dosi sono state erogate. In fabbrica, contare Γ¨ fondamentale β€” dal contapezzi sulla linea di produzione al contatore di cicli per la manutenzione programmata.

Il simulatore offre tre tipi di contatore, come l’S7-1200 reale. Tutti condividono un concetto chiave: contano i fronti di salita, non gli stati.

πŸ›‘ Concetto cruciale: il contatore conta i FRONTI, non gli STATI. Se tieni premuto un pulsante per 10 secondi, il contatore incrementa di 1, non di 200 (= 10s / 50ms per ciclo). Il conteggio avviene solo nel momento esatto in cui il segnale passa da 0 a 1. Per un nuovo conteggio, il segnale deve prima tornare a 0 e poi tornare a 1.


β‘  CTU β€” Counter Up

Tipo
[CTU]
Funzione
Conteggio in avanti
Q attiva quando
CV β‰₯ PV
Sezione
Ingressi (sinistra)

Il CTU Γ¨ il contatore piΓΉ usato. Conta in avanti da 0: ad ogni fronte di salita sull’ingresso CU, il valore corrente CV si incrementa di 1. Quando CV raggiunge il preset PV, l’uscita Q diventa 1.

SegnaleTipoDescrizione
CU (Count Up)IngressoLa corrente logica dalla catena di contatti. Il contatore conta i fronti di salita di CU
R (Reset)IngressoIndirizzo di un bit (I o M). Quando R=1, CV torna a 0. PrioritΓ  su CU
PV (Preset Value)ParametroIl valore da raggiungere. Configurato nel pannello del contatore
CV (Current Value)Valore correnteQuanti fronti sono stati contati. Sale da 0 verso PV (max 32767)
QUscitaVale 1 quando CV β‰₯ PV
Diagramma Temporale β€” CTU (PV = 4) CU CV Q R 1 2 3 4 5 0 1 2 3 4=PV! β†’0 1 Q = 1 RESET
Figura 1 β€” CTU: CV sale di 1 ad ogni fronte di CU. Quando CV=PV, Q si attiva. R azzera tutto.

Il CTU nel simulatore β€” configurazione

  1. Trascina un [CTU] dalla Toolbox nella sezione ingressi di un Network
  2. Clicca sul contatore per configurarlo
  3. Imposta il Preset Value (es: 10 per contapezzi da 10)
  4. Imposta l’indirizzo Reset: il bit che azzererΓ  il contatore (es: I0.1)
  5. L’ingresso CU Γ¨ la catena di contatti a sinistra del contatore nel Network
  6. In RUN, il pannello Counter a destra mostra: C0: CV=3 / PV=10 con barra di progresso

β‘‘ CTD β€” Counter Down

Tipo
[CTD]
Funzione
Conteggio all’indietro
Q attiva quando
CV ≀ 0
Partenza
CV = PV (dopo Load)

Il CTD Γ¨ il complementare del CTU: conta all’indietro da PV verso 0. Ha un ingresso LD (Load) al posto del Reset: quando LD=1, il contatore si ricarica a PV. Ogni fronte di salita su CD decrementa CV di 1. Quando CV raggiunge 0, l’uscita Q diventa 1.

SegnaleFunzione
CD (Count Down)Ogni fronte di salita decrementa CV di 1
LD (Load)Quando LD=1, CV viene caricato con PV. PrioritΓ  su CD
PVValore di partenza (caricato con LD)
CVScende da PV verso 0
QVale 1 quando CV ≀ 0

Uso tipico: “ho 5 tentativi, al quinto scatta l’allarme”, oppure un countdown per un processo a fasi limitate.

⚠️ Il CTD parte da PV, non da 0. Ricordati di attivare LD (Load) almeno una volta all’inizio, altrimenti CV parte giΓ  da PV (il valore iniziale configurato). Nel simulatore, il CTD viene inizializzato con CV=PV, quindi funziona subito. Ma Γ¨ buona pratica prevedere un Network di Load esplicito.


β‘’ CTUD β€” Counter Up/Down

Tipo
[CTUD]
Funzione
Conteggio bidirezionale
Uscite
QU (CVβ‰₯PV) e QD (CV≀0)

Il CTUD combina conteggio avanti e indietro in un unico blocco. Ha 4 ingressi e 2 uscite:

SegnaleTipoFunzione
CUIngresso (dalla catena)Fronte di salita β†’ CV + 1
CDIngresso (indirizzo bit)Fronte di salita β†’ CV βˆ’ 1
RIngresso (indirizzo bit)CV β†’ 0. PrioritΓ  massima
LDIngresso (indirizzo bit)CV β†’ PV. PrioritΓ  dopo R
QUUscita principale1 quando CV β‰₯ PV (limite superiore)
QDUscita secondaria1 quando CV ≀ 0 (limite inferiore)

Uso tipico: contare pezzi in entrata e in uscita da un magazzino (CU = pezzo entra, CD = pezzo esce, CV = stock corrente). Oppure gestire un livello che puΓ² salire e scendere.

Nel simulatore, l’ingresso CU Γ¨ la catena di contatti a sinistra del CTUD. L’ingresso CD si configura nella finestra del contatore come indirizzo bit separato (es: I0.1). L’uscita Q corrisponde a QU (CV β‰₯ PV).


πŸ“Š I tre contatori a confronto

CounterDirezionePartenza CVQ = 1 quandoAzzeramentoUso tipico
CTUAvanti (0 β†’ PV)0CV β‰₯ PVR (Reset β†’ 0)Contapezzi, batch
CTDIndietro (PV β†’ 0)PVCV ≀ 0LD (Load β†’ PV)Countdown, tentativi
CTUDEntrambe0QU: CV β‰₯ PV
QD: CV ≀ 0
R→0, LD→PVStock, livello

πŸ”§ Pattern pratici

Pattern 1 β€” Contapezzi con segnalazione “scatola piena”

Un sensore (I0.0) rileva il passaggio dei pezzi su un nastro. Dopo 12 pezzi, Q0.0 (cicalino) suona e Q0.1 (lampada) si accende per segnalare “scatola piena”. I0.1 resetta il contatore per la scatola successiva.

Network 1 // Contapezzi β€” sensore I0.0, reset I0.1
I0.0 ── β”œβ”€ [CTU C0, PV=12, R=I0.1] ── ─( )─ M0.0 // flag “piena”

Network 2 // Cicalino quando scatola piena
M0.0 ── β”œβ”€ ────────────────────── ─( )─ Q0.0 // cicalino

Network 3 // Lampada “scatola piena”
M0.0 ── β”œβ”€ ────────────────────── ─( )─ Q0.1 // lampada

Il Merker M0.0 riceve l’uscita Q del contatore. Quando CV raggiunge 12, M0.0=1, e i Network 2-3 attivano le segnalazioni. L’operatore preme I0.1 per resettare e ricominciare.

Pattern 2 β€” Dosaggio batch con timer + counter

Un dosatore deve erogare esattamente 5 dosi. Ogni dose corrisponde a un impulso di I0.0 che attiva la valvola Q0.0 per 2 secondi (TP). Dopo 5 dosi, Q0.1 segnala “batch completato”. I0.2 resetta per un nuovo batch.

Network 1 // Impulso dosaggio: 2 secondi per dose
I0.0 ── β”œβ”€ NOT M0.0 ──/β”œβ”€ [TP T0, PT=2000] ── ─( )─ Q0.0 // valvola

Network 2 // Conta le dosi
I0.0 ── β”œβ”€ [CTU C0, PV=5, R=I0.2] ── ─( )─ M0.0 // flag “batch completo”

Network 3 // Segnalazione batch completato
M0.0 ── β”œβ”€ ────────────────────── ─( )─ Q0.1 // lampada “batch OK”

Nota il contatto NC NOT M0.0 nel Network 1: quando il batch Γ¨ completo (M0.0=1), blocca nuove dosi. L’operatore deve premere I0.2 per resettare il contatore e riabilitare il dosaggio.

Pattern 3 β€” Limite cicli per manutenzione

Un cilindro pneumatico effettua cicli avanti/indietro. Dopo 1000 cicli, serve manutenzione. Un CTU conta i cicli; quando raggiunge PV=1000, una lampada di manutenzione (Q0.2) si accende. Il tecnico resetta dopo la manutenzione.

Network N // Conta cicli β€” segnale “ciclo completato” da M0.3
M0.3 ── β”œβ”€ [CTU C1, PV=1000, R=I0.5] ── ─( )─ Q0.2 // lampada manutenzione

πŸ’‘ Timer + Counter = potenza. I timer misurano “per quanto tempo”, i counter misurano “quante volte”. Combinandoli puoi esprimere quasi qualsiasi condizione industriale: “dopo 5 dosi da 2 secondi ciascuna”, “ogni 100 cicli fai una pausa di 30 secondi”, “se il sensore non si attiva entro 10 secondi, conta un errore”.


πŸ‹οΈ Esercizi pratici

Esercizio 7.1 β€” Contapezzi base

Un sensore I0.0 rileva pezzi. Dopo 10 pezzi, Q0.0 si accende. I0.1 resetta.

  1. Crea un Network: I0.0 β†’ CTU (PV=10, R=I0.1) β†’ Bobina Q0.0
  2. RUN β†’ clicca I0.0 ripetutamente (on-off-on-off…). Osserva CV nel pannello Counter
  3. Al 10° click ON→OFF→ON, Q0.0 si accende
  4. Premi I0.1 β†’ CV torna a 0, Q0.0 si spegne
  5. Test importante: tieni I0.0 premuto a lungo. CV incrementa di 1 solo, non continua a contare. Rilascia e ripremi β†’ ora CV va a 2.

Esercizio 7.2 β€” Countdown da 5

Crea un conto alla rovescia: ogni pressione di I0.0 decrementa il contatore. Quando raggiunge 0, Q0.0 (allarme) si accende. I0.1 ricarica il contatore.

  • Network 1: I0.0 β†’ CTD (PV=5, LD=I0.1) β†’ Bobina Q0.0
  • Testa: premi I0.1 (Load) per caricare CV=5. Poi clicca I0.0 cinque volte β†’ Q0.0 si accende

Esercizio 7.3 β€” Dosaggio batch (3 dosi Γ— 2 secondi)

Implementa il Pattern 2 descritto sopra: ogni pressione di I0.0 attiva la valvola Q0.0 per 2s (TP). Un CTU conta le dosi: dopo 3, Q0.1 segnala “batch completo” e blocca nuove dosi. I0.2 resetta.

  1. Crea i 3 Network come nel codice sopra (adatta PV=3)
  2. RUN β†’ premi I0.0 tre volte, osservando la valvola attivarsi per 2s ogni volta
  3. Dopo la 3Βͺ dose, Q0.1 si accende e una 4Βͺ pressione non fa nulla
  4. Premi I0.2 β†’ contatore azzerato, puoi fare un nuovo batch

Esercizio 7.4 β€” Contapezzi con scatole multiple

Sfida: il contapezzi da 12 dell’esempio deve anche contare le scatole completate. Usa due contatori:

  • C0 = contapezzi (PV=12, reset con I0.1)
  • C1 = contascatole: conta i fronti di I0.1 (ogni reset = una scatola completata)
  • Quando C1 raggiunge PV=5 (5 scatole completate) β†’ Q0.2 (fine lotto)
  • I0.2 resetta entrambi i contatori
Suggerimento

Il secondo contatore C1 usa I0.1 come ingresso CU (il pulsante di reset scatola diventa l’ingresso di conteggio per le scatole). CosΓ¬ ogni volta che l’operatore resetta il contapezzi, il contascatole incrementa automaticamente.


Esercizio 7.5 β€” Sfida: parcheggio con CTUD

Sfida avanzata: un parcheggio ha 8 posti. Un sensore all’ingresso (I0.0) rileva le auto che entrano, un sensore all’uscita (I0.1) rileva quelle che escono. Usa un CTUD per tracciare i posti occupati:

  • CU = I0.0 (entrata), CD = I0.1 (uscita), PV = 8
  • Quando CV β‰₯ 8 (pieno) β†’ Q0.0 accende il cartello “COMPLETO”
  • Quando CV = 0 (vuoto) β†’ Q0.1 accende “LIBERO”
  • I0.2 resetta il contatore (apertura/chiusura del parcheggio)
Suggerimento per QD

Nel simulatore, l’uscita Q del CTUD corrisponde a QU (CVβ‰₯PV). Per la condizione “vuoto” (CV≀0) puoi usare un comparatore nel Network successivo: C0.CV == 0 β†’ Q0.1. I comparatori li vedremo nella lezione 10, ma se vuoi provare in anticipo, Γ¨ un buon esercizio!

❓ Quiz rapido

1. Un CTU ha PV=10. L’ingresso CU viene tenuto a 1 per 5 secondi (100 cicli di scansione). Quanto vale CV?

Mostra risposta

CV = 1. Il contatore conta solo il fronte di salita (la transizione 0β†’1), non i cicli in cui CU resta a 1. Un singolo fronte = un singolo incremento. Per contare di nuovo, CU deve tornare a 0 e poi a 1.


2. Un CTU ha PV=5 e CV=5 (Q=1). Arriva un altro fronte su CU. Cosa succede?

Mostra risposta

CV diventa 6. Q resta a 1 (CV β‰₯ PV Γ¨ ancora vero). Il CTU continua a contare oltre PV β€” non si ferma automaticamente. CV puΓ² arrivare fino a 32767. Se vuoi che si fermi a PV, devi aggiungere una condizione nel programma (es: un contatto NC che legge Q del contatore).


3. Qual Γ¨ la differenza tra il Reset (R) del CTU e il Load (LD) del CTD?

Mostra risposta

Il Reset (R) porta CV a 0. Il Load (LD) porta CV a PV. Sono operazioni opposte perchΓ© i due contatori contano in direzioni opposte: il CTU parte da 0 e sale, il CTD parte da PV e scende.


4. Voglio contare quante volte un motore si Γ¨ acceso oggi. Quale contatore uso e come lo collego?

Mostra risposta

Un CTU con CU collegato all’uscita del motore (Q0.0). Ogni volta che il motore passa da OFF a ON (fronte di salita su Q0.0), il contatore incrementa. PV lo imposti a un valore alto (es: 32767 se vuoi solo contare senza segnalazione) oppure a un valore specifico se vuoi un allarme “troppe accensioni”.


5. Nel dosaggio batch, perchΓ© uso un contatto NC NOT M0.0 per bloccare nuove dosi?

Mostra risposta

PerchΓ© quando il batch Γ¨ completo (M0.0=1, cioΓ¨ CVβ‰₯PV), il contatto NC si apre e impedisce alla catena di raggiungere il timer TP. Senza questo blocco, l’operatore potrebbe continuare a dosare oltre il batch previsto β€” potenzialmente causando un sovradosaggio. È una forma di interblocco logico.

Prossima lezione β†’

Lezione 08 β€” Rilevamento Fronti (Edge Detection)
──Pβ”œβ”€   ──Nβ”œβ”€
Il fronte di salita e di discesa β€” toggle, impulsi controllati
e l’ultimo elemento del livello Intermedio.

Β© Prof. D. Bertolino Β· S7 PLC Crash Course Β· Unofficial S7-1200 Simulator Β· Lezione 07