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
| Modulo | 7 β Contatori |
| Lezione | 07 di 15 |
| Livello | ββ Intermedio |
| Tempo | ~35 minuti |
| Elementi nuovi | 3 (CTU, CTD, CTUD) |
| Prerequisiti | Lezione 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
[CTU]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.
| Segnale | Tipo | Descrizione |
|---|---|---|
| CU (Count Up) | Ingresso | La corrente logica dalla catena di contatti. Il contatore conta i fronti di salita di CU |
| R (Reset) | Ingresso | Indirizzo di un bit (I o M). Quando R=1, CV torna a 0. PrioritΓ su CU |
| PV (Preset Value) | Parametro | Il valore da raggiungere. Configurato nel pannello del contatore |
| CV (Current Value) | Valore corrente | Quanti fronti sono stati contati. Sale da 0 verso PV (max 32767) |
| Q | Uscita | Vale 1 quando CV β₯ PV |
Il CTU nel simulatore β configurazione
- Trascina un [CTU] dalla Toolbox nella sezione ingressi di un Network
- Clicca sul contatore per configurarlo
- Imposta il Preset Value (es: 10 per contapezzi da 10)
- Imposta l’indirizzo Reset: il bit che azzererΓ il contatore (es: I0.1)
- L’ingresso CU Γ¨ la catena di contatti a sinistra del contatore nel Network
- In RUN, il pannello Counter a destra mostra:
C0: CV=3 / PV=10con barra di progresso
β‘ CTD β Counter Down
[CTD]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.
| Segnale | Funzione |
|---|---|
| CD (Count Down) | Ogni fronte di salita decrementa CV di 1 |
| LD (Load) | Quando LD=1, CV viene caricato con PV. PrioritΓ su CD |
| PV | Valore di partenza (caricato con LD) |
| CV | Scende da PV verso 0 |
| Q | Vale 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
[CTUD]Il CTUD combina conteggio avanti e indietro in un unico blocco. Ha 4 ingressi e 2 uscite:
| Segnale | Tipo | Funzione |
|---|---|---|
| CU | Ingresso (dalla catena) | Fronte di salita β CV + 1 |
| CD | Ingresso (indirizzo bit) | Fronte di salita β CV β 1 |
| R | Ingresso (indirizzo bit) | CV β 0. PrioritΓ massima |
| LD | Ingresso (indirizzo bit) | CV β PV. PrioritΓ dopo R |
| QU | Uscita principale | 1 quando CV β₯ PV (limite superiore) |
| QD | Uscita secondaria | 1 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
| Counter | Direzione | Partenza CV | Q = 1 quando | Azzeramento | Uso tipico |
|---|---|---|---|---|---|
| CTU | Avanti (0 β PV) | 0 | CV β₯ PV | R (Reset β 0) | Contapezzi, batch |
| CTD | Indietro (PV β 0) | PV | CV β€ 0 | LD (Load β PV) | Countdown, tentativi |
| CTUD | Entrambe | 0 | QU: CV β₯ PV QD: CV β€ 0 | Rβ0, LDβPV | Stock, 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.
- Crea un Network: I0.0 β CTU (PV=10, R=I0.1) β Bobina Q0.0
- RUN β clicca I0.0 ripetutamente (on-off-on-offβ¦). Osserva CV nel pannello Counter
- Al 10Β° click ONβOFFβON, Q0.0 si accende
- Premi I0.1 β CV torna a 0, Q0.0 si spegne
- 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.
- Crea i 3 Network come nel codice sopra (adatta PV=3)
- RUN β premi I0.0 tre volte, osservando la valvola attivarsi per 2s ogni volta
- Dopo la 3Βͺ dose, Q0.1 si accende e una 4Βͺ pressione non fa nulla
- 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