Indice
Esercizi PLC
Raccomandazioni generali
- salvare tutti i progetti in Z: (cartella di rete personale) all'interno di in una cartella plc aggiungendo il proprio cognome al nome del progetto o esercizio
- cominciare il progetto dall'assegnazione delle variabili, usando nomi simbolici descrittivi (eventualmente aggiungendo un commento esplicativo)
- assegnare un nome descrittivo a tutti i segmenti (eventualmente aggiungendo un commento esplicativo)
- verificare il corretto collegamento tra PLC e PC (spostando il mouse sull'icona della rete in basso a destra devono essere presenti due reti, quella d'istituto e quella che collega PC e PLC)
- rilevare sempre la CPU (dopo aver controllato che siano presenti tutte e due le interfacce di rete nel PC)
- verificare il corretto cablaggio della console (osservare i LED degli ingressi del PLC)
- verificare il corretto funzionamento del programma
- usando la console (ingressi) e osservando i LED (uscite) sul PLC
- controllando le variabili nelle tabelle e i valori logici nell'editor del programma usando la modalità online
- non modificare mai le impostazioni di rete del PLC
Tutorial Siemens
Per prendere dimestichezza col PLC è bene cominciare col documento Getting Started con l'S7-1200 do Siemens, che guida nella realizzazione si un automatismo marcia-arresto di un motore usando il PLC.
Le parti più interessanti sono:
- pag. 7, 8 e 9: descrizione della CPU e ciclo di scansione
- pag. 12: aree di memoria del PLC e immagini di processo
- pag. 13: linguaggio ladder come schema funzionale
- pag. 18: interfaccia del programma TIA Portal
- pag. 23: rilevamento CPU
- pag. 29-34: esempio marcia-arresto con auto-ritenuta
- pag. 37-38: caricamento del programma e collaudo con la contattiera
- pag. 41-50: esempio marcia-arresto con temporizzatore
- pag. 54: controllo del programma con la modalità online
Controllo livello in un serbatoio
Specifiche
Una pompa azionata da un motore riempie un serbatoio fino a che il sensore di livello SL2 non segnala che il serbatoio è pieno. Quando il livello scende la pompa non si aziona finché il livello non scende sotto al sensore di livello SL1. I sensori segnalano la presenza di liquido con un valore logico 0. Il motore si aziona con la bobina di un contattore KM1.
Due pulsanti abilitano o disabilitano il riempimento automatico: SB1 “start” e SB2 “stop”.
Tabella variabili
nome | indirizzo | commento |
---|---|---|
SB1 | %I0.0 | avvio riempimento automatico NA |
SB2 | %I0.1 | stop riempimento automatico NA |
SL1 | %I0.2 | sensore livello inferiore (0 = presenza liquido) |
SL2 | %I0.3 | sensore livello superiore (0 = presenza liquido) |
KM1 | %Q0.0 | contattore motore pompa |
M_on | %M0.0 | merker abilitazione riempimento automatico |
M_pompa | %M0.1 | merker attivazione motore pompa |
Variante con segnalazione
- aggiungiamo una lampada che segnali l'attivazione della pompa (H1 e Q0.1)
- attiviamo un lampeggiatore se i sensori di livello producono la combinazione errata (acqua nel sensore superiore ma non in quello inferiore) 1)
In questo file zip una possibile soluzione.
Esercizio 10 pag. 283
Specifiche
Parcheggio con passaggio per una sola auto in ingresso o in uscita. Fotocellule all'ingresso e all'uscita del passaggio per rilevare l'ingresso o l'uscita delle auto. Segnalazione all'interno e all'esterno per segnalare che il passaggio impegnato da un'auto.
Tabella variabili
nome | indirizzo | commento |
---|---|---|
BF1_strada | I0.0 | fotocellula lato esterno (strada) |
BF2_park | I0.1 | fotocellula lato interno (parcheggio) |
H1_park | Q0.0 | segnalazione passaggio impegnato lato interno |
H2_strada | Q0.1 | segnalazione passaggio impegnato lato esterno |
M_in | M0.0 | merker auto in ingresso |
M_out | M0.1 | merker auto in uscita |
M_FB1_N | M0.2 | merker per il fronte di discesa di BF1_strada |
M_FB2_N | M0.3 | merker per il fronte di discesa di BF2_park |
Logica
Ingresso auto:
- se la fotocellula esterna è attiva e non c'è un auto in uscita imposta il merker auto in ingresso
- quando c'è un auto in ingresso e c'è un fronte di discesa della fotocellula interna resetto il merker (l'auto è passata ed è entrata nel parcheggio)
- quando il merker è impostato attivo la segnalazione H1_park
Per l'uscita si procede allo stesso modo.
Esercizio 14 pag. 288
Specifiche
Linea confezionamento bottiglie con nastro trasportatore. Il nastro funziona (contattore KM1) se è presente una scatola (sensore SQ1) e si arresta quando sono passate 10 bottiglie (sensore SQ2) o se viene tolta la scatola. Un pulsante di emergenza (SB1_stop) arresta l'impianto. Un altro pulsante (SB2) resetta il conteggio delle bottiglie.
Tabella variabili
nome | indirizzo | commento |
---|---|---|
SQ1 | I0.0 | sensore presenza scatola |
SQ2 | I0.1 | sensore passaggio bottiglia |
SB1 | I0.2 | pulsante arresto emergenza |
SB2 | I0.3 | pulsante azzeramento conteggio |
KM1 | Q0.0 | bobina motore nastro |
M_nastro | M0.0 | merker abilitazione nastro |
M_conteggio | M0.1 | merker scatola piena (conteggio terminato) |
M_stop | M0.2 | merker arresto di emergenza |
M_SQ1 | M0.3 | merker fronte SB1 (nuova scatola) |
Logica
- se è presente la scatola (SQ1), il conteggio non è terminato (M_conteggio) e non è stato premuto il pulsante di arresto (M_arresto) imposta il merker che aziona il motore (M_nastro)
- se è premuto il pulsante di arresto (SB1) settare il merker M_arresto
- se è posizionata una nuova scatola (fronte SQ1) resettare il merker M_arresto
- il conteggio avanza ad ogni fronte del sensore bottiglia (SQ2)2); a conteggio terminato settare il merker M_conteggio che segnala che la scatola è piena
- il conteggio si resetta quando si preme il pulsante di reset (SB2) o quando si toglie la scatola (SQ1)
- abilitare il motore (KM1) in base al merker M_nastro
Applicazioni per progetti 8: impianto di verniciatura
Specifiche
Posizionando il pezzo davanti a F1 parte il nastro verso sinistra e si aziona la pistola. Quando il pezzo arriva a F2 si ferma la pistola e parte il soffiatore S2 che funziona per 10 secondi. Poi il nastro si ferma e riparte verso destra dopo 15 secondi. Quando il pezzo oltrepassa F2 riparte la pistola che si ferma quando raggiunge F1. In seguito parte il soffiatore S1 che resta attivo per 10 secondi dopodiché si ferma anche il nastro. Il ciclo riparte posizionando un nuovo pezzo davanti a F1.
Indirizzamento
nome | indirizzo | commento |
---|---|---|
F1 | I0.0 | fotocellula destra |
F2 | I0.1 | fotocellula sinistra |
KM-S | Q0.0 | contattore marcia verso sinistra |
KM-D | Q0.1 | contattore marcia verso destra |
P | Q0.2 | pistola verniciatrice |
S1 | Q0.3 | soffiatore destra |
S2 | Q0.4 | soffiatore sinistra |
Qui una file zippato con una possibile soluzione.
Cancello automatico
Specifiche
Un cancello automatico scorrevole è mosso da un motore asincrono (motoriduttore) con un movimento aCremagliera. L'apertura del cancello viene comandata da un pulsante e la chiusura avviene automaticamente dopo un tempo pari a 10 secondi. Il movimento del motore avviene in due direzioni (apertura e chiusura) e si arresta quando si attivano due finecorsa normalmente chiusi che segnalano la completa apertura e chiusura. Una fotocellula apre automaticamente il cancello se viene rilevato un ostacolo durante il movimento di chiusura. Un segnalatore lampeggiante si accende e spegne con una frequenza di 1 Hz durante il movimento del cancello.
Automa
Il cancello automatico può essere considerato un semplice automa e può essere studiato considerando i possibili stati assunti dal sistema e la sequenza con cui si succedono. Facciamo riferimento alla macchina di Moore, dove:
- le uscite dipendono solo dallo stato in cui si trova il sistema
- il passaggio da uno stato ad un altro (transizioni) avviene quando si verificano determinati eventi (attivazione di determinati ingressi)
Nel nostro caso l'automa può essere descritto con il seguente diagramma degli stati:
dove:
- i cerchi individuano i quattro possibili stati e le uscite che andranno attivate in quel determinato stato
- le frecce (linee orientate) indicano le transizioni e l'evento (l'ingresso) che le abilita
Il diagramma degli stati permette di descrivere in maniera chiara, sintetica ed univoca la sequenza di azioni dell'automatismo. Nella fase di progettazione la stesura del diagramma degli stati è solo la prima fase ma è molto utile perché permette di rappresentare facilmente e in maniera grafica le specifiche del del problema mettendo in risalto il comportamento sequenziale del sistema e la logica del controllo. Una volta individuati gli stati, le azioni associate agli stati e gli eventi che abilitano le transizioni tra stati occorre tradurre la logica descritta dal diagramma degli stati in un programma. Il procedimento è abbastanza naturale: partendo da uno stato iniziale (con un'eventuale azione associata) si individuano le condizioni che abilitano il passaggio allo stato successivo; poi si procede allo stesso modo per tutti gli stati seguenti.
Merker di sistema e merker di clock
Tra le configurazioni hardware che è possibile impostare nella CPU troviamo anche i merker di sistema e i merker di clock.
Tra i merker di sistema risulta particolarmente interessante quello di primo ciclo (Firstscan). E' un merker che risulta attivo solo nel primo ciclo di sistema ed è particolarmente utile per fissare le impostazioni iniziali del sistema, ad esempio per settare lo stato iniziale di un automatismo descritto come una macchina a stati finiti.
I merker di clock, se abilitati, mettono a disposizione una serie di merker che cambiano stato (da 0 a 1) con una frequenza fissa e preimpostata (da 0,5 a 10 Hz). Risultano particolarmente utili quando serve un segnale intermittente nel programma. In questo esercizio li useremo per gestire il lampeggio della lampada che segnala il movimento del cancello.
Per attivare questi merker selezionare la CPU e nella scheda Proprietà (in basso):
- mettere la spunta su Attiva l'utilizzo del byte del merker di clock
- indicare il valore
1
nel campo indirizzo del byte del merker di clock (bisogna fare attenzione a non sovrascrivere i merker già definiti con indirizzo del byte zero) - caricare l'impostazione hardware sulla CPU cliccando col tasto destro sulla CPU e selezionando Carica nel dispositivo→configurazione hardware
Programmazione modulare
In questo esercizio può sembrare superfluo ma proveremo a scrivere il programma in maniera modulare. Il programma principale OB1 (Main) richiama altri sottoprogrammi (le funzioni3) FC1, FC2 e FC3) che gestiscono compiti specifici. Questa soluzione:
- migliora la leggibilità
- permette di riutilizzare parti del programma
- facilità la manutenzione del programma
- agevola la scrittura del programma, scomposto in parti più semplici
Questa soluzione di solito risulta conveniente anche se il programma risulterà più lungo, o più complesso (o semplicemente verboso).
Nel nostro caso useremo:
- una funzione per gestire il passaggio da uno stato ad un altro, usando dei merker abilitare le uscite e gli stati successivi
- una funzione per gestire il lampeggiatore
- una funzione per abilitare le uscite
Tabella variabili
nome | indirizzo | commento |
---|---|---|
SB1 | I0.0 | pulsante di apertura |
SQ1 | I0.1 | finecorsa NC di apertura |
SQ2 | I0.2 | finecorsa NC di chiusura |
BF1 | I0.3 | fotocellula |
KM1 | Q0.0 | contattore motore in fase di apertura |
KM2 | Q0.1 | contattore motore in fase di chiusura |
H1 | Q0.2 | lampeggiatore che segnala il movimento del cancello |
M_apre | M0.0 | merker apertura |
M_chiude | M0.1 | merker chiusura |
M_clock | M1.5 | merker di clock a 1 Hz |
Funzioni
Da OB1 (Main) chiamare le funzioni:
- FC1: gestione_cancello
- FC2: gestione_lampeggiatore
- FC3: gestione_uscite
Osservazioni
- nell'inversione del motore è sempre bene mettere un interblocco - nel programma ma anche direttamente nei contattori - che impedisca la chiusura contemporanea dei due contattori
- può essere utile inserire un ritardo all'eccitazione dei due contattori in modo che l'apertura sia istantanea e la chiusura leggermente ritardata (frazioni di secondo); questo riduce le sollecitazioni meccaniche del sistema oltre ad essere un'ulteriore misura che impedisce la chiusura contemporanea dei due contattori
Soluzione
Una possibile soluzione è quella proposta nelle schermate seguenti.
OB1 - Main:
FC1 - Gestione cancello:
FC2 - gestione lampeggiatore:
FC3 - gestione uscite:
Collaudo
Per il collaudo la sequenza per il contatti della console - da spostare manualmente - è la seguente:
contatto | variabile | cancello chiuso | apertura | cancello aperto | chiusura |
---|---|---|---|---|---|
I0.0 | SB1 (pulsante apertura) | 0 | 1 poi 0 | 0 | 0 |
I0.1 | SQ1 (finecorsa NC cancello aperto) | 1 | 1 | 0 | 1 |
I0.2 | SQ2 (finecorsa NC cancello chiuso) | 0 | 1 | 1 | 1 |
I0.3 | FB1 (fotocellula attiva se ostacolo) | 0 | 0 | 0 | 0 |
Dove 0
significa contatto aperto (levetta indietro) e 1
contatto chiuso (levetta avanti). Bisogna partire dallo stato cancello chiuso.
Per il test della fotocellula attivare FB1 durante la chiusura (indicata dal merker) e riportarla a 0; il cancello passa da chiusura ad apertura.
Se si fa confusione con gli stati e i contatti riportare gli interruttori nella posizione iniziale (cancello chiuso) poi arrestare e riavviare la CPU con i bottoni nella barra degli strumenti.
Variante SFC
Correzione esercizi
- copio i progetti
- se PLC simulabile (FW ≥ 4, S7-1200-qualcosa-40-qualcosa) si simula da Tia Portal
- se PLC uguale a quello del prof. si carica il progetto (configurazione HW compresa) e si collauda
- se PLC diverso si crea un progetto nuovo (simulato o su CPU) e si copiano
- tabella variabili
- main e blocchi di programma
- blocchi dati (si riesce a copiarli solo se è già presente la Blocchi di Sistema nella vista ad albero Navigazione del progetto; se non c'è buttare un timer nel main e cancellarlo insieme al suo blocco dati per crearla)
Per simulare:
- CPU serie 40
- replico la configurazione hw nelle proprietà
- copio le variabili (esclusi merker di sistema e di clock) nella tabella standard
- copio (drag & drop) i blocchi dati sui blocchi dati della nuova CPU
- apro i blocchi dati (altrimenti non vengono associati alle relative istruzioni nel main)
- carico sw e hw nella nuova CPU (non serve cancellare la vecchia)