S7 CC Lezione 14
🎓 S7 PLC Crash Course · Lezione 14
Progetto: Impianto di Miscelazione 🧪
Sequenza a 8 passi · Analogico · Temperatura · Valvole · Agitatore
Un intero processo chimico automatizzato.
🎯 Obiettivo del progetto
Progettare il controllo automatico di un impianto che miscela due liquidi in un serbatoio, con riscaldamento controllato da sensore di temperatura analogico. La sequenza di lavoro ha 8 passi — il progetto più complesso del corso.
Questo progetto combina: sequenze a Merker (lezione 04), timer (05–06), analogico (09), comparatori (10) e HMI (11). È il test definitivo della tua padronanza del Ladder.
📋 Scheda progetto
| Modulo | 14 — Progetto 2 |
| Lezione | 14 di 15 |
| Livello | ⭐⭐⭐⭐ Esperto |
| Tempo | ~90 minuti |
| Network stimati | ~20 |
| CPU | 1215C (serve AI) |
📐 Specifiche dell’impianto
Un serbatoio di miscelazione riceve due liquidi (A e B) attraverso valvole separate. Un agitatore mescola i liquidi. Una resistenza riscalda il contenuto. Un sensore di temperatura analogico monitora il processo. Al termine, una valvola di scarico svuota il serbatoio.
Tabella I/O
Ingressi
I0.0 | Pulsante START ciclo |
I0.1 | Pulsante STOP |
I0.2 | Sensore livello basso |
I0.3 | Sensore livello alto |
I0.4 | Emergenza |
IW64 | Temperatura (0–27648 = 0–150°C) |
Uscite
Q0.0 | Valvola ingresso liquido A |
Q0.1 | Valvola ingresso liquido B |
Q0.2 | Motore agitatore |
Q0.3 | Resistenza riscaldamento |
Q0.4 | Valvola scarico |
Q0.5 | Lampada “Ciclo in corso” |
Q0.6 | Lampada “Ciclo completato” |
🔄 La sequenza di lavoro — 8 passi
| Passo | Merker | Azione | Uscite attive | Condizione per avanzare |
|---|---|---|---|---|
| 1 | M0.0 | Apri valvola A (carico liquido A) | Q0.0 | Timer 10 secondi |
| 2 | M0.1 | Chiudi A, apri valvola B | Q0.1 | Sensore livello alto I0.3 = 1 |
| 3 | M0.2 | Chiudi B, avvia agitatore | Q0.2 | Timer 15 secondi |
| 4 | M0.3 | Avvia riscaldamento (+ agitatore) | Q0.2, Q0.3 | Temperatura > 18000 (≈98°C) |
| 5 | M0.4 | Mantieni agitatore + riscaldamento | Q0.2, Q0.3 | Timer 20 secondi |
| 6 | M0.5 | Spegni riscaldamento (agitatore continua) | Q0.2 | Immediato (un solo ciclo, poi passa) |
| 7 | M0.6 | Ferma agitatore, apri valvola scarico | Q0.4 | Sensore livello basso I0.2 = 1 |
| 8 | M0.7 | Chiudi scarico, segnala completamento | Q0.6 | Attende nuovo START |
⚠️ Soglia temperatura: il sensore IW64 va da 0 a 27648, che corrisponde a 0–150°C. La soglia di 98°C corrisponde a circa 18000 nel valore grezzo (98/150 × 27648 ≈ 18078). Nel simulatore userai lo slider di IW64 per simulare la temperatura che sale e scende.
💻 Il programma Ladder — struttura consigliata
Questo progetto è più grande del precedente. La struttura raccomandata è:
Invece di darti il codice completo come nella lezione 13, questa volta ti do le specifiche per ogni Network e tu costruisci il programma. È un esercizio di progettazione, non solo di copia.
Sezione 1 — Sicurezza
N1 // Emergenza: resetta TUTTI i passi
I0.4 ─┤ ├─ → ─(R)─ M0.0 + ─(R)─ M0.1 + … + ─(R)─ M0.7
// (8 Network di Reset, o un Network per Merker)
N2 // STOP: resetta tutti i passi (come emergenza)
I0.1 ─┤ ├─ → Reset M0.0 … M0.7
Sezione 3 — Transizioni (il cuore del progetto)
Ogni transizione segue lo schema: passo corrente attivo AND condizione soddisfatta → Set passo successivo + Reset passo corrente.
// ═══ TRANSIZIONI ═══
N4 M0.0 ─┤ ├─ [TON T0, PT=10000] ── ─(S)─ M0.1 // P1→P2: dopo 10s
N5 M0.1 ─┤ ├─ ────────────────── ─(R)─ M0.0 // disattiva P1
N6 M0.1 ─┤ ├─ I0.3 ─┤ ├─ ────── ─(S)─ M0.2 // P2→P3: livello alto
N7 M0.2 ─┤ ├─ ────────────────── ─(R)─ M0.1
N8 M0.2 ─┤ ├─ [TON T1, PT=15000] ── ─(S)─ M0.3 // P3→P4: dopo 15s
N9 M0.3 ─┤ ├─ ────────────────── ─(R)─ M0.2
N10 M0.3 ─┤ ├─ [CMP>= MW0 >= 18000] ── ─(S)─ M0.4 // P4→P5: temp >98°C
N11 M0.4 ─┤ ├─ ────────────────── ─(R)─ M0.3
N12 M0.4 ─┤ ├─ [TON T2, PT=20000] ── ─(S)─ M0.5 // P5→P6: dopo 20s
N13 M0.5 ─┤ ├─ ────────────────── ─(R)─ M0.4
N14 M0.5 ─┤ ├─ ────────────────── ─(S)─ M0.6 // P6→P7: immediato
N15 M0.6 ─┤ ├─ ────────────────── ─(R)─ M0.5
N16 M0.6 ─┤ ├─ I0.2 ─┤ ├─ ────── ─(S)─ M0.7 // P7→P8: livello basso
N17 M0.7 ─┤ ├─ ────────────────── ─(R)─ M0.6
🔍 Nota sulla temperatura: nel Network N10, il comparatore confronta MW0 con 18000. Per collegare il valore dello slider IW64 al comparatore, la soluzione più diretta nel simulatore è usare il pannello I/O per osservare il valore IW64 e configurare la soglia come costante nel comparatore. In un S7-1200 reale con TIA Portal useresti direttamente IW64 come operando.
Sezione 4 — Uscite
Ogni uscita è pilotata dai Merker dei passi in cui è attiva:
N18 M0.0 ─┤ ├─ ────────── ─( )─ Q0.0 // Valvola A (solo P1)
N19 M0.1 ─┤ ├─ ────────── ─( )─ Q0.1 // Valvola B (solo P2)
N20 M0.2 ─┤ ├─ ┬ ──────── ─( )─ Q0.2 // Agitatore (P3, P4, P5, P6)
M0.3 ─┤ ├─ ┤
M0.4 ─┤ ├─ ┤
M0.5 ─┤ ├─ ┘
N21 M0.3 ─┤ ├─ ┬ ──────── ─( )─ Q0.3 // Riscaldamento (P4, P5)
M0.4 ─┤ ├─ ┘
N22 M0.6 ─┤ ├─ ────────── ─( )─ Q0.4 // Valvola scarico (P7)
N23 NOT M0.7 ─┤/├─ M0.0 ─┤ ├─ ┬ ─( )─ Q0.5 // “In corso” (qualsiasi passo 1-7)
M0.1 ─┤ ├─ ┤
… ─┤ ├─ ┘ // (OR di M0.0–M0.6)
N24 M0.7 ─┤ ├─ ────────── ─( )─ Q0.6 // “Completato” (P8)
Nota i rami paralleli nei Network 20 e 21: l’agitatore è attivo durante 4 passi (P3–P6), il riscaldamento durante 2 (P4–P5). Ciascun Merker di quei passi è in OR.
📟 L’interfaccia HMI
Per questo progetto usa un KTP1200 Basic (12″, più spazio) o un TP700 Comfort. Widget consigliati:
| Widget | Label | Variabile | Note |
|---|---|---|---|
| Text | IMPIANTO MISCELAZIONE | — | Titolo |
| Button | START CICLO | I0.0 | Verde, momentary |
| Button | STOP | I0.1 | Rosso, momentary |
| Button | EMERGENZA | I0.4 | Rosso, toggle |
| Tank | SERBATOIO | MW0 | Livello animato |
| Gauge | TEMPERATURA | MW2 | Range 0–150 |
| Slider | SIM. TEMP. | MW2 | Per simulare il sensore IW64 |
| Valve | V-A | Q0.0 | Valvola liquido A |
| Valve | V-B | Q0.1 | Valvola liquido B |
| Motor | AGITATORE | Q0.2 | Animazione rotazione |
| LED | RISC. | Q0.3 | Rosso — riscaldamento attivo |
| Valve | SCARICO | Q0.4 | Valvola scarico |
| LED | IN CORSO | Q0.5 | Verde — ciclo attivo |
| LED | COMPLETO | Q0.6 | Blu — ciclo terminato |
🧪 Test di collaudo
Test 1 — Ciclo completo
- Premi START → Q0.0 (Valvola A) si apre, Q0.5 (In corso) ON ✓
- Dopo 10s → Q0.0 chiude, Q0.1 (Valvola B) si apre ✓
- Attiva I0.3 (livello alto) → Q0.1 chiude, Q0.2 (Agitatore) parte ✓
- Dopo 15s → Q0.3 (Riscaldamento) si accende (agitatore continua) ✓
- Muovi slider IW64 sopra 18000 → la sequenza avanza al Passo 5 ✓
- Dopo 20s → Q0.3 si spegne, Q0.2 continua brevemente, poi si ferma ✓
- Q0.4 (Scarico) si apre ✓
- Attiva I0.2 (livello basso) → Q0.4 chiude, Q0.6 (Completato) ON ✓
Test 2 — Emergenza a metà ciclo
- Avvia il ciclo, aspetta di essere al Passo 3 o 4
- Attiva I0.4 (emergenza) → TUTTE le uscite OFF, tutti i Merker a 0 ✓
- Disattiva emergenza → sistema fermo, attende nuovo START ✓
Test 3 — Nuovo ciclo dopo completamento
- Completa un ciclo → Q0.6 ON
- Premi START → Q0.6 OFF, il ciclo ricomincia dal Passo 1 ✓
🏆 Estensioni
- Trend temperatura: aggiungi un widget Trend collegato a MW2 (o IW64) per visualizzare l’andamento della temperatura durante il ciclo
- Display passo corrente: usa un MW per codificare il numero di passo (1–8) e un Display per mostrarlo. Aggiungi un Text che mostra la descrizione del passo
- Timeout di sicurezza: se il Passo 4 (riscaldamento) non raggiunge la temperatura entro 60 secondi, genera un allarme “timeout riscaldamento” e ferma il ciclo
- Contacicli: aggiungi un CTU che conta quanti cicli completi sono stati eseguiti (conta i fronti P di M0.7). Dopo 10 cicli → lampada manutenzione
- Seconda pagina HMI: Pagina 1 = sinottico processo. Pagina 2 = parametri (slider per tempi dei timer, soglia temperatura)
💡 Salva il progetto come Mod14_Impianto_Miscelazione.json. Questo è il progetto più complesso del corso — dimostra la capacità di gestire sequenze multi-passo con timer, sensori analogici e HMI. È il tipo di competenza che i datori di lavoro cercano in un programmatore PLC junior.
Prossima e ultima lezione →
Lezione 15 — Best Practice e Troubleshooting
Le regole d’oro, gli errori comuni, la checklist di collaudo
e il tuo progetto finale di valutazione.
© Prof. D. Bertolino · S7 PLC Crash Course · Unofficial S7-1200 Simulator · Lezione 14