Lezione 10 di 15

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

Modulo10 β€” Confronto Valori
Lezione10 di 15
Livello⭐⭐⭐ Avanzato
Tempo~30 minuti
Elementi nuovi6 comparatori
PrerequisitiLezione 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

SimboloToolboxOperazioneQ = 1 quandoEsempio
[==]UgualeUguale aOp1 = Op2C0.CV == 10 β†’ "esattamente 10 pezzi"
[<>]DiversoDiverso daOp1 β‰  Op2MW0 <> 0 β†’ "valore non zero"
[>]MaggioreMaggiore diOp1 > Op2T0.ET > 5000 β†’ "timer oltre 5 secondi"
[<]MinoreMinore diOp1 < Op2C0.CV < 3 β†’ "meno di 3 pezzi"
[>=]Maggiore/UgualeMaggiore o ugualeOp1 β‰₯ Op2MW0 >= 20000 β†’ "soglia analogica"
[<=]Minore/UgualeMinore o ugualeOp1 ≀ Op2C0.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:

πŸ“Œ Costante
Un numero fisso (es: 10, 5000, 27648). Il valore che inserisci nella configurazione del comparatore.
Uso: soglie, limiti, setpoint
πŸ”’ Counter CV
Il valore corrente di un contatore (es: C0.CV). Cambia ad ogni fronte contato.
Uso: "quanti pezzi?", "cicli fatti?"
⏱ Timer ET
Il tempo trascorso di un timer (es: T0.ET) in millisecondi. Sale durante il conteggio.
Uso: "quanto tempo Γ¨ passato?", azioni progressive
πŸ“ Memory Word (MW)
Un registro a 16 bit (es: MW0, MW10). Puoi scriverci valori dal programma o dall'HMI.
Uso: setpoint variabili, soglie regolabili, valori calcolati

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

  1. Trascina un comparatore (es: [>=]) dalla Toolbox nella sezione ingressi del Network
  2. Clicca sull'elemento per aprire la configurazione
  3. Imposta Operando 1: seleziona il tipo (Costante, Counter CV, Timer ET, MW) e il valore/indice
  4. Imposta Operando 2: stessa cosa
  5. Conferma. Il comparatore mostra l'operazione nel Network (es: C0.CV >= 10)
  6. Aggiungi la bobina nella sezione uscite
Come appare nel Network ─ β”œ I0.0 C0.CV >= 10 [>=] Comparatore ( ) Q0.0 Se I0.0 Γ¨ attivo E il contatore C0 ha raggiunto almeno 10 β†’ Q0.0 si accende
Figura 1 β€” Il comparatore nel Network: funziona come un contatto che conduce se la condizione numerica Γ¨ vera

πŸ’‘ 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:

CategoriaElementiLavora conRisultato
ContattiNA, NC, P, NBit (0/1)Conduce o non conduce
TimerTON, TOF, TPTempo (ms)Q = 1 dopo il ritardo/impulso
CounterCTU, CTD, CTUDFronti (conteggio)Q = 1 al raggiungimento di PV
Comparatori==, <>, >, <, >=, <=Valori numerici1 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:

  1. C0.CV >= 5 β†’ Q0.0 (lampada verde β€” "a metΓ ")
  2. C0.CV >= 10 β†’ Q0.1 (lampada gialla β€” "quasi pieno")
  3. C0.CV == 15 β†’ Q0.2 (lampada rossa β€” "batch completo")
  4. I0.1 resetta C0
  5. 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