Lezione 8 di 15

S7 CC Lezione 08

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

Rilevamento Fronti β€” Edge Detection ⚑

──Pβ”œβ”€   ──Nβ”œβ”€
Catturare il momento esatto del cambiamento β€” toggle, impulsi
e l’ultimo elemento del livello Intermedio.

🎯 Cosa impari in questa lezione

  • Cos’Γ¨ un fronte (edge) e perchΓ© Γ¨ utile
  • ──Pβ”œβ”€ Contatto Positive Edge (fronte di salita)
  • ──Nβ”œβ”€ Contatto Negative Edge (fronte di discesa)
  • Il concetto di impulso a un ciclo (one-shot)
  • Pattern: toggle, impulso da sensore, conteggio controllato
  • Come combinare fronti con timer e counter

πŸ“‹ Scheda lezione

Modulo8 β€” Edge Detection
Lezione08 di 15
Livello⭐⭐ Intermedio
Tempo~30 minuti
Elementi nuovi2 (Contatto P, Contatto N)
PrerequisitiLezione 07

🧠 Cos’Γ¨ un fronte β€” l’istante del cambiamento

Un segnale digitale puΓ² essere in due stati: 0 (OFF) o 1 (ON). Ma ci sono due momenti speciali che non sono nΓ© “0” nΓ© “1” β€” sono transizioni:

  • Fronte di salita (Positive Edge, P): l’istante in cui il segnale passa da 0 a 1
  • Fronte di discesa (Negative Edge, N): l’istante in cui il segnale passa da 1 a 0

Un fronte non ha durata β€” nel PLC dura esattamente un ciclo di scansione (50 ms nel simulatore). Il ciclo successivo, anche se il segnale Γ¨ ancora a 1, non Γ¨ piΓΉ un fronte β€” Γ¨ uno “stato stabile”.

In pratica: un contatto Edge genera un impulso di un solo ciclo nel momento della transizione. È come un flash fotografico: si accende per un istante e poi si spegne, indipendentemente da quanto dura la condizione che l’ha generato.

Segnale, Fronte di Salita (P) e Fronte di Discesa (N) I0.0 Edge P Edge N ON (stato stabile) P! P! 1 solo ciclo (50ms) per fronte N! N!
Figura 1 β€” Il segnale I0.0 genera impulsi P (salita) e N (discesa) di un solo ciclo alle transizioni

β‘  Contatto P β€” Fronte di Salita (Positive Edge)

Simbolo
──Pβ”œβ”€
Conduce quando
Variabile: 0 β†’ 1
Durata
1 ciclo (50 ms)
Toolbox
Fronte salita

Il contatto P conduce per un solo ciclo di scansione nel momento esatto in cui la variabile associata passa da 0 a 1. Tutti i cicli successivi β€” anche se la variabile resta a 1 β€” il contatto Γ¨ aperto.

Pensalo come il “click” di un mouse: non importa quanto a lungo tieni premuto il tasto, il “click” avviene una sola volta, nel momento in cui premi.

β‘‘ Contatto N β€” Fronte di Discesa (Negative Edge)

Simbolo
──Nβ”œβ”€
Conduce quando
Variabile: 1 β†’ 0
Durata
1 ciclo (50 ms)
Toolbox
Fronte discesa

L’opposto del P: conduce per un solo ciclo quando la variabile passa da 1 a 0. È il momento del “rilascio” β€” quando l’operatore toglie il dito dal pulsante, quando il pezzo lascia il sensore.

πŸ” Edge e Counter β€” la connessione nascosta: nella lezione 07 hai imparato che i contatori contano “i fronti di salita”. Ora sai cos’Γ¨ un fronte! Il CTU fa internamente la stessa operazione del contatto P: rileva la transizione 0β†’1 e incrementa solo in quel momento. Il contatto P rende questo meccanismo esplicito e disponibile per qualsiasi logica, non solo per il conteggio.


πŸ“Š Contatto NA vs Contatto P β€” la differenza chiave

Questa distinzione Γ¨ fondamentale e fonte di confusione per i principianti. Vediamola fianco a fianco:

Contatto NA ── β”œβ”€

Conduce per tutto il tempo in cui la variabile Γ¨ a 1.

Se I0.0 resta a 1 per 3 secondi (60 cicli), il contatto conduce per 60 cicli.

Uso: “finchΓ© il pulsante Γ¨ premuto, fai qualcosa”.

Contatto P ──Pβ”œβ”€

Conduce per un solo ciclo alla transizione 0β†’1.

Se I0.0 resta a 1 per 3 secondi (60 cicli), il contatto conduce per 1 ciclo.

Uso: “quando il pulsante viene premuto, fai qualcosa una volta“.


πŸ”§ Pattern pratici

Pattern 1 β€” Toggle (accendi/spegni con un solo pulsante)

Il pattern piΓΉ richiesto dagli studenti: un pulsante che alterna lo stato di un’uscita. Prima pressione β†’ ON. Seconda pressione β†’ OFF. Terza β†’ ON. E cosΓ¬ via.

Senza il fronte, non si puΓ² fare: un contatto NA terrebbe l’uscita attiva finchΓ© il pulsante Γ¨ premuto. Con il fronte P, il Set/Reset avviene in un solo ciclo e l’uscita resta nello stato impostato.

Network 1 // Fronte + uscita OFF β†’ accendi
I0.0 ──Pβ”œβ”€ NOT Q0.0 ──/β”œβ”€ ── ─(S)─ Q0.0

Network 2 // Fronte + uscita ON β†’ spegni
I0.0 ──Pβ”œβ”€ Q0.0 ── β”œβ”€ ──── ─(R)─ Q0.0

Come funziona: al fronte di salita di I0.0, il Network 1 controlla se Q0.0 Γ¨ OFF (contatto NC). Se sΓ¬, fa il Set. Il Network 2 controlla se Q0.0 Γ¨ ON. Se sΓ¬, fa il Reset. PoichΓ© l’impulso del fronte dura un solo ciclo, non c’Γ¨ conflitto β€” in quel ciclo, Q0.0 ha un solo stato definito e solo uno dei due Network agisce.

Pattern 2 β€” Impulso temporizzato da sensore

Ogni volta che un sensore (I0.0) rileva un oggetto, genera un impulso preciso di 200 ms su Q0.0 β€” indipendentemente da quanto tempo l’oggetto resta davanti al sensore.

Network 1 // Fronte del sensore β†’ impulso 200ms
I0.0 ──Pβ”œβ”€ [TP T0, PT=200] ─── ─( )─ Q0.0

Il contatto P genera un impulso di un ciclo al fronte di salita di I0.0. Questo impulso trigghera il TP che a sua volta genera un impulso preciso di 200 ms. Risultato: un “flash” di durata controllata ad ogni rilevamento.

πŸ’‘ Edge + TP Γ¨ una combo potentissima. Il fronte “cattura” l’istante dell’evento, il TP lo “espande” in un impulso di durata precisa. La usi ogni volta che un evento istantaneo deve generare un’azione di durata fissa.

Pattern 3 β€” Conteggio su rilascio (fronte di discesa)

A volte vuoi contare non quando un sensore si attiva, ma quando si disattiva. Esempio: un pezzo Γ¨ “contato” solo quando ha completamente superato la fotocellula (il sensore torna a 0).

Network 1 // Genera impulso al rilascio del sensore
I0.0 ──Nβ”œβ”€ ────────────────────── ─( )─ M0.0 // impulso “pezzo passato”

Network 2 // Conta i pezzi passati
M0.0 ── β”œβ”€ [CTU C0, PV=10, R=I0.1] ── ─( )─ Q0.0

Il contatto N su I0.0 genera un impulso quando la fotocellula si libera (1β†’0 = il pezzo ha superato il sensore). Questo impulso va in M0.0, che a sua volta Γ¨ l’ingresso CU del contatore. CosΓ¬ contiamo solo i pezzi che sono effettivamente passati, non quelli che si trovano ancora davanti al sensore.


πŸ“Š Riepilogo β€” tutti i contatti a confronto

Con questa lezione conosci tutti e quattro i tipi di contatto del simulatore:

ContattoSimboloConduce quandoDurataLezione
NA (Normally Open)── β”œβ”€Variabile = 1Tutto il tempo che vale 102
NC (Normally Closed)──/β”œβ”€Variabile = 0Tutto il tempo che vale 002
P (Positive Edge)──Pβ”œβ”€Variabile: 0 β†’ 11 ciclo (one-shot)08
N (Negative Edge)──Nβ”œβ”€Variabile: 1 β†’ 01 ciclo (one-shot)08

⚠️ Attenzione con il pannello I/O: nel simulatore, cliccando un ingresso lo si “toggla” (0β†’1 o 1β†’0) ed Γ¨ un cambio istantaneo. Per testare i fronti, devi cliccare due volte: il primo click genera il fronte di salita (P), il secondo click genera il fronte di discesa (N). Se l’azione avviene troppo velocemente e non la vedi, rallenta: clicca, osserva, poi clicca di nuovo.


πŸ‹οΈ Esercizi pratici

Esercizio 8.1 β€” Toggle ON/OFF

Un singolo pulsante I0.0 alterna Q0.0 tra acceso e spento:

  1. Network 1: I0.0 ──Pβ”œβ”€ AND NOT Q0.0 β†’ Set Q0.0
  2. Network 2: I0.0 ──Pβ”œβ”€ AND Q0.0 β†’ Reset Q0.0
  3. RUN β†’ clicca I0.0 (on): Q0.0 si accende. Clicca I0.0 (off poi on): Q0.0 si spegne
  4. Ogni “click ON” del pulsante alterna lo stato

Esercizio 8.2 β€” Impulso da sensore

Ogni volta che I0.0 (fotocellula) rileva un oggetto, Q0.0 si attiva per esattamente 200 ms. Usa Edge P + Timer TP.

  • Network 1: I0.0 ──Pβ”œβ”€ β†’ TP (PT=200) β†’ Bobina Q0.0
  • Testa: attiva I0.0 β†’ Q0.0 lampeggia per 200ms. Tieni premuto I0.0 β†’ nessun effetto aggiuntivo. Rilascia e riattiva β†’ un altro impulso 200ms

Esercizio 8.3 β€” Conteggio sul rilascio

Conta i pezzi usando il fronte di discesa del sensore (pezzo passato completamente):

  • Network 1: I0.0 ──Nβ”œβ”€ β†’ Bobina M0.0
  • Network 2: M0.0 β†’ CTU (PV=5, R=I0.1) β†’ Bobina Q0.0
  • Testa: attiva I0.0, poi disattivalo β†’ il contatore incrementa. Ripeti 5 volte β†’ Q0.0 si accende

Esercizio 8.4 β€” Sfida: doppio click

Sfida: Q0.0 si attiva solo con un “doppio click” di I0.0 (due pressioni entro 1 secondo). Un singolo click non ha effetto.

Suggerimento

Primo fronte P di I0.0 β†’ Set M0.0 (primo click rilevato) + avvia TON T0 (PT=1000, “finestra” di 1 secondo). Se arriva un secondo fronte P mentre M0.0=1 AND T0.Q=0 (ancora in finestra) β†’ Set Q0.0. Se T0.Q diventa 1 (1 secondo scaduto senza secondo click) β†’ Reset M0.0. Un TP da 3000ms su Q0.0 mantiene l’uscita attiva per 3 secondi.


Esercizio 8.5 β€” Sfida: frequenzimetro semplice

Sfida avanzata: conta quanti fronti di salita di I0.0 avvengono in 5 secondi. Dopo 5 secondi, il conteggio si “congela” in un Merker-appoggio e il contatore si resetta per una nuova misura.

Suggerimento

Usa un TON con PT=5000 per definire la finestra di misura. Un CTU conta i fronti P di I0.0 durante la finestra. Quando il TON scade (Q=1), usa il fronte P del Q del TON per resettare il contatore e riavviare la misura. Il valore CV del contatore appena prima del reset Γ¨ il numero di impulsi in 5 secondi.

❓ Quiz rapido

1. I0.0 Γ¨ a 1 da 10 secondi. Un contatto P associato a I0.0 conduce?

Mostra risposta

No. Il contatto P ha condotto per un solo ciclo, 10 secondi fa, quando I0.0 Γ¨ passato da 0 a 1. Da allora Γ¨ aperto. Il fronte Γ¨ un evento istantaneo, non uno stato continuo.


2. Qual Γ¨ la differenza tra un contatto P su I0.0 e un Timer TP triggerato da I0.0?

Mostra risposta

Entrambi reagiscono al fronte di salita, ma con durate diverse. Il contatto P genera un impulso di 1 ciclo (50 ms) β€” non configurabile. Il TP genera un impulso di PT millisecondi β€” configurabile. Il contatto P Γ¨ il “trigger”, il TP Γ¨ l'”espansore” dell’impulso. Spesso li usi insieme.


3. Ho un contatto P su I0.0 collegato a un Set di Q0.0. In un altro Network, un contatto P su I0.0 collegato a un Reset di Q0.0. Cosa succede quando premo I0.0?

Mostra risposta

Non funziona come toggle! Entrambi i Network ricevono l’impulso nello stesso ciclo. Il Set mette Q0.0 a 1, poi il Reset la rimette a 0. Per il toggle serve una condizione aggiuntiva: NOT Q0.0 nel Network del Set e Q0.0 nel Network del Reset (come nel Pattern 1 di questa lezione).


4. In quale situazione useresti un contatto N (fronte di discesa) invece di un P (fronte di salita)?

Mostra risposta

Quando l’evento significativo Γ¨ il rilascio, non la pressione. Esempi: contare un pezzo quando ha completamente superato un sensore (il sensore torna a 0), rilevare quando un operatore rilascia un pulsante a due mani (per sicurezza, se una mano si alza prima che l’azione sia completata), o generare un segnale “processo terminato” quando un’uscita si spegne.


5. Posso mettere un contatto P su un Merker o su un’uscita Q, non solo su un ingresso I?

Mostra risposta

SΓ¬! Il contatto P (e N) funziona con qualsiasi variabile: I, Q o M. Ad esempio, Q0.0 ──Pβ”œβ”€ genera un impulso nel ciclo esatto in cui Q0.0 passa da 0 a 1 β€” utile per rilevare l’avvio di un motore e comandare azioni “una tantum” come l’incremento di un contatore cicli.

🏁 Fine del Livello INTERMEDIO

Hai completato i moduli 5–8! Ora padroneggi tutti gli elementi “classici” della programmazione Ladder: contatti, bobine, Set/Reset, Merker, timer (TON, TOF, TP), counter (CTU, CTD, CTUD) e rilevamento fronti (P, N). Con questi elementi puoi costruire qualsiasi logica sequenziale e combinatoria.

Nel prossimo livello (Avanzato) entriamo nel mondo dei segnali continui e delle interfacce operatore: I/O analogici, comparatori, editor HMI e gestione progetti.

Prossima lezione β†’

Lezione 09 β€” I/O Analogici
IW64   QW64   0–27648
Temperature, pressioni, livelli β€” i segnali del mondo reale.

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