S7 CC Lezione 10
π S7 PLC Crash Course Β· Lezione 10
Comparatori βοΈ
[==] [<>] [>] [<] [>=] [<=]
Sei operatori per confrontare qualsiasi valore numerico nel Ladder.
π― Cosa impari in questa lezione
- I 6 operatori di confronto nel simulatore
- I 4 tipi di operando: Costante, Counter CV, Timer ET, MW
- Come configurare un comparatore nel simulatore
- Pattern: allarmi multi-livello, finestre di valori, visualizzazione conteggio
- Combinare comparatori con timer, counter e analogico
π Scheda lezione
| Modulo | 10 β Confronto Valori |
| Lezione | 10 di 15 |
| Livello | βββ Avanzato |
| Tempo | ~30 minuti |
| Elementi nuovi | 6 comparatori |
| Prerequisiti | Lezione 09 |
π§ PerchΓ© servono i comparatori
I contatti (NA, NC, P, N) lavorano con i bit: una variabile Γ¨ 0 o 1, e il contatto conduce o non conduce. Ma nel mondo reale servono decisioni basate su valori numerici: "la temperatura Γ¨ sopra 80Β°C?", "il contatore ha raggiunto 15?", "il timer Γ¨ trascorso per piΓΉ di 3 secondi?".
I comparatori rispondono a queste domande. Prendono due valori numerici, li confrontano con un operatore (uguale, maggiore, minoreβ¦) e producono un risultato booleano: vero (1) o falso (0). Quel risultato diventa la "corrente logica" per il resto del Network β esattamente come un contatto.
π I 6 operatori di confronto
| Simbolo | Toolbox | Operazione | Q = 1 quando | Esempio |
|---|---|---|---|---|
[==] | Uguale | Uguale a | Op1 = Op2 | C0.CV == 10 β "esattamente 10 pezzi" |
[<>] | Diverso | Diverso da | Op1 β Op2 | MW0 <> 0 β "valore non zero" |
[>] | Maggiore | Maggiore di | Op1 > Op2 | T0.ET > 5000 β "timer oltre 5 secondi" |
[<] | Minore | Minore di | Op1 < Op2 | C0.CV < 3 β "meno di 3 pezzi" |
[>=] | Maggiore/Uguale | Maggiore o uguale | Op1 β₯ Op2 | MW0 >= 20000 β "soglia analogica" |
[<=] | Minore/Uguale | Minore o uguale | Op1 β€ Op2 | C0.CV <= 0 β "contatore a zero" |
I comparatori si posizionano nella sezione ingressi del Network, come i contatti. Il risultato (vero/falso) determina se la corrente logica prosegue verso le bobine a destra.
π© I 4 tipi di operando
Ogni comparatore ha due "lati" β Operando 1 e Operando 2. Ciascuno puΓ² essere uno di questi tipi:
Puoi combinare qualsiasi tipo su ciascun lato. Confronti tipici: Counter CV vs Costante ("ho contato abbastanza?"), Timer ET vs Costante ("Γ¨ passato abbastanza tempo?"), MW vs MW ("il livello Γ¨ sopra il setpoint?").
π₯οΈ Configurare un comparatore nel simulatore
- Trascina un comparatore (es: [>=]) dalla Toolbox nella sezione ingressi del Network
- Clicca sull'elemento per aprire la configurazione
- Imposta Operando 1: seleziona il tipo (Costante, Counter CV, Timer ET, MW) e il valore/indice
- Imposta Operando 2: stessa cosa
- Conferma. Il comparatore mostra l'operazione nel Network (es:
C0.CV >= 10) - Aggiungi la bobina nella sezione uscite
π‘ Il comparatore funziona SOLO se riceve corrente. Se c'Γ¨ un contatto NA a sinistra del comparatore e quel contatto Γ¨ aperto (variabile = 0), il comparatore non viene nemmeno valutato β il risultato Γ¨ sempre 0. Il comparatore Γ¨ "in serie" con il resto della catena logica.
π§ Pattern pratici
Pattern 1 β Allarmi multi-livello
Un contatore C0 conta i cicli di una macchina. Tre livelli di segnalazione:
Network 1 // Manutenzione preventiva (500 cicli)
[CMP>= C0.CV >= 500] ββββββ β( )β Q0.0 // lampada gialla
Network 2 // Manutenzione urgente (900 cicli)
[CMP>= C0.CV >= 900] ββββββ β( )β Q0.1 // lampada rossa
Network 3 // Blocco macchina (1000 cicli β limite!)
[CMP>= C0.CV >= 1000] βββββ β(R)β M0.0 // blocca "abilitazione marcia"
Le soglie sono cumulative: a 500 cicli si accende il giallo (ma la macchina continua), a 900 si aggiunge il rosso, a 1000 la macchina si blocca. Dopo la manutenzione, il tecnico resetta il contatore C0.
Pattern 2 β Finestra di valori (range check)
Un valore Γ¨ "in range" solo se Γ¨ compreso tra un minimo e un massimo. Per controllarlo servono due comparatori in serie (AND logico):
Network 1 // Valore MW0 nel range 100β200? β "OK"
[CMP>= MW0 >= 100] β [CMP<= MW0 <= 200] ββ β( )β Q0.0 // in range
Network 2 // Fuori range β allarme
NOT Q0.0 ββ€/ββ βββββββββββββββββ β( )β Q0.1 // fuori range
Il Network 1 mette due comparatori in serie: MW0 >= 100 AND MW0 <= 200. Solo se entrambi sono veri (valore tra 100 e 200), Q0.0 si accende. Il Network 2 usa NOT Q0.0 per l'allarme "fuori range".
Pattern 3 β Azioni progressive con Timer ET
Usare il tempo trascorso (ET) di un timer per azioni progressive β come un semaforo basato su un solo timer:
// Un timer che conta continuamente (reset ciclico a 12000ms = 12s)
N1 M0.0 ββ€ ββ [TON T0, PT=12000] ββ β(R)β M0.0 // reset a fine ciclo
N2 NOT M0.0 ββ€/ββ ββββββββββββββββββ β(S)β M0.0 // avvio automatico
// Uscite basate su ET β un solo timer, tre uscite
N3 [CMP< T0.ET < 5000] ββββββ β( )β Q0.0 // Verde: 0β5s
N4 [CMP>= T0.ET >= 5000] β [CMP< T0.ET < 7000] ββ β( )β Q0.1 // Giallo: 5β7s
N5 [CMP>= T0.ET >= 7000] βββββ β( )β Q0.2 // Rosso: 7β12s
Questo Γ¨ un approccio alternativo al semaforo della lezione 06: invece di usare 3 Merker e 3 timer, usiamo un solo timer e leggiamo il suo ET con i comparatori. PiΓΉ compatto, ma meno flessibile per sequenze complesse.
π Due approcci, stessa funzione. Il semaforo a Merker (lezione 06) Γ¨ piΓΉ "industriale" β ogni passo ha la sua logica indipendente, facile da modificare. Il semaforo a comparatori Γ¨ piΓΉ "compatto" β un solo timer e le soglie definiscono tutto. In pratica si usano entrambi: i Merker per le sequenze, i comparatori per le soglie e i valori continui.
π Riepilogo β tutti gli elementi Ladder a confronto
Con i comparatori completi tutti gli elementi della sezione ingressi del Ladder:
| Categoria | Elementi | Lavora con | Risultato |
|---|---|---|---|
| Contatti | NA, NC, P, N | Bit (0/1) | Conduce o non conduce |
| Timer | TON, TOF, TP | Tempo (ms) | Q = 1 dopo il ritardo/impulso |
| Counter | CTU, CTD, CTUD | Fronti (conteggio) | Q = 1 al raggiungimento di PV |
| Comparatori | ==, <>, >, <, >=, <= | Valori numerici | 1 se confronto vero, 0 se falso |
E per la sezione uscite: Bobina standard β( )β, Set β(S)β e Reset β(R)β. Con questi 19 elementi puoi costruire qualsiasi logica di automazione nel Ladder.
ποΈ Esercizi pratici
Esercizio 10.1 β Contapezzi con soglie
Un contatore CTU conta impulsi da I0.0. Crea 3 Network con comparatori:
- C0.CV >= 5 β Q0.0 (lampada verde β "a metΓ ")
- C0.CV >= 10 β Q0.1 (lampada gialla β "quasi pieno")
- C0.CV == 15 β Q0.2 (lampada rossa β "batch completo")
- I0.1 resetta C0
- RUN β clicca I0.0 e osserva le lampade accendersi progressivamente
Esercizio 10.2 β Finestra di valori
Crea un circuito che verifica se MW0 Γ¨ nel range 1000β2000:
- Network 1: MW0 >= 1000 AND MW0 <= 2000 β Q0.0 ("in range")
- Network 2: NOT Q0.0 β Q0.1 ("fuori range")
- Per testare: nel pannello I/O non puoi modificare MW direttamente, ma puoi collegare un HMI slider a MW0 (lo vedremo nella lezione 11) oppure osservare il concetto sulla carta
Esercizio 10.3 β Timer progressivo
Quando premi I0.0, un timer TON parte. Usa comparatori su T0.ET per creare un effetto "barra di caricamento":
- T0.ET >= 0 β Q0.0 (LED 1 β subito)
- T0.ET >= 1000 β Q0.1 (LED 2 β dopo 1 secondo)
- T0.ET >= 2000 β Q0.2 (LED 3 β dopo 2 secondi)
- T0.ET >= 3000 β Q0.3 (LED 4 β dopo 3 secondi, timer completo)
Rilascia I0.0 β tutto si spegne (il TON si resetta).
Esercizio 10.4 β Sfida: semaforo con un solo timer
Sfida: implementa il semaforo (Verde 5s, Giallo 2s, Rosso 5s) usando un solo timer e i comparatori, come nel Pattern 3. Aggiungi il reset ciclico.
Suggerimento
Un Merker M0.0 si auto-avvia e pilota un TON con PT=12000ms (ciclo totale). Quando ET raggiunge 12000, resetta M0.0. Al ciclo dopo, M0.0 si ri-setta e il timer riparte da 0. Le uscite: ET < 5000 β Verde, ET >= 5000 AND ET < 7000 β Giallo, ET >= 7000 β Rosso.
Esercizio 10.5 β Sfida: timeout di sicurezza
Sfida avanzata: un cilindro parte quando premi I0.0 (Q0.0 = avanti). Il finecorsa I0.1 deve attivarsi entro 5 secondi. Se dopo 5 secondi I0.1 non si Γ¨ attivato, genera un allarme "timeout" su Q0.2 e ferma il cilindro.
Suggerimento
Quando Q0.0 Γ¨ attivo, un TON (PT=5000) conta. Se il timer arriva a 5000ms senza che I0.1 si attivi, usa il comparatore T0.ET >= 5000 AND NOT I0.1 β Set Q0.2 (allarme) + Reset Q0.0 (ferma cilindro). Se I0.1 arriva in tempo, il cilindro si ferma normalmente e il timer si resetta.
β Quiz rapido
1. Un comparatore [>= C0.CV >= 10] Γ¨ in serie con un contatto NA di I0.0 (che Γ¨ a 0). Il contatore C0 ha CV=15. Qual Γ¨ il risultato del Network?
Mostra risposta
0 (falso). Anche se il confronto C0.CV >= 10 sarebbe vero (15 >= 10), il comparatore non riceve corrente perchΓ© il contatto NA di I0.0 Γ¨ aperto (I0.0=0). In serie, se un elemento blocca il flusso, tutto quello che segue riceve 0.
2. Qual Γ¨ la differenza tra [==] e [>=] per controllare un contapezzi con PV=10?
Mostra risposta
[== C0.CV == 10] Γ¨ vero solo quando CV Γ¨ esattamente 10. Se CV va a 11 (il contatore continua a contare), il comparatore torna a falso. [>= C0.CV >= 10] Γ¨ vero da 10 in poi β resta vero anche se CV supera 10. Per le soglie di allarme, usa >=. Per azioni "una tantum" al valore esatto, usa == (ma combinalo con un fronte P per evitare che l'azione si ripeta ad ogni ciclo).
3. Come faccio a controllare se un valore Γ¨ compreso tra 50 e 100?
Mostra risposta
Due comparatori in serie nello stesso Network: [>= MW0 >= 50] seguito da [<= MW0 <= 100]. PoichΓ© sono in serie, entrambi devono essere veri (AND logico). Se MW0 = 75, entrambi sono veri β corrente passa. Se MW0 = 120, il secondo Γ¨ falso β corrente bloccata.
4. Posso usare un comparatore senza contatti prima? Cioè, come primo elemento del Network?
Mostra risposta
Sì! Il comparatore riceve automaticamente "corrente" dalla sbarra sinistra (come un contatto). Se il confronto è vero, la corrente passa al prossimo elemento. Non è obbligatorio avere un contatto prima. L'esempio degli allarmi multi-livello (Pattern 1) lo dimostra: il comparatore è il primo e unico elemento della catena di ingressi.
5. Che tipi di operando supporta il comparatore nel simulatore?
Mostra risposta
Quattro tipi: Costante (un numero fisso), Counter CV (valore corrente di un contatore, specificato per indice), Timer ET (tempo trascorso di un timer, in ms), e Memory Word MW (registro a 16 bit). Puoi combinare qualsiasi tipo su ciascun lato del confronto, ad esempio: MW0 >= C0.CV ("la word Γ¨ piΓΉ grande del conteggio?").
Prossima lezione β
Lezione 11 β HMI (Human Machine Interface)KTP700 Button Gauge Tank
L'interfaccia operatore β pulsanti, indicatori, serbatoi animati
e 8 modelli di pannello Siemens.
Β© Prof. D. Bertolino Β· S7 PLC Crash Course Β· Unofficial S7-1200 Simulator Β· Lezione 10