Parte Intro Piu PLC
Parte Intro Piu PLC
1.1 Definizioni
È possibile fornire una classificazione per i tipi di beni e per i tipi di produzione.
I beni continui sono quelli per i quali non è possibile individuare entità separate e
distinte. Tipici esempi sono beni liquidi come il petrolio ma anche altri materiali,
come la carta o le polveri.
I beni discreti sono invece quelli per i quali è possibile individuare entità separate e
distinte. Tipici esempi sono tutti gli oggetti che utilizziamo quotidianamente, dal
computer, al telefono, all’automobile.
1
Anche per ciò che concerne la produzione è possibile individuare una tipologia
continua ed una discreta, indipendentemente dal tipo di bene prodotto.
Una produzione si dice continua quando l’impianto lavora i beni in transito (continui
o discreti) senza interruzioni. Un tipico esempio relativo a un bene continuo è
l’industria della carta.
Una produzione si dice discreta quando l’impianto lavora i beni in transito (continui
o discreti) organizzandoli in lotti. Nel caso di beni discreti questo può servire, come
vedremo, a ridurre i tempi e i costi di riattrezzaggio (setup) delle macchine. Nel caso
di beni continui questo tipo di produzione può essere necessario se il bene viene
prodotto mediante reazioni chimiche che avvengono in determinati recipienti dotati
di una certa capacità.
2
1.3 Tipi di layout e di organizzazione della produzione
Un impianto manifatturiero prevede diversi tipi di organizzazione del sistema di
produzione inteso come cammino che deve compiere il bene in ingresso per essere
lavorato. Evidenziamo i seguenti tipi di organizzazione: job shop, flow line, a lotti e
cellulare.
3
La job shop e la flow line si trovano agli estremi per tipo di organizzazione: la prima
usa un percorso diverso per ogni tipo di pezzo da lavorare, mentre la seconda fa
esattamente l’opposto. L’organizzazione a lotti e l’organizzazione cellulare
rappresentano, invece, un tipo intermedio di organizzazione tra job shop e flow line.
Con il termine layout indichiamo il modo con cui le macchine sono disposte
all’interno di un’azienda manifatturiera. Distinguiamo 4 tipi di layout: Layout a
posizione fissa, Layout a processo, Layout cellulare e Layout a prodotto.
Nel Layout a prodotto le macchine sono organizzate lungo una linea: ogni
pezzo effettua quindi lo stesso percorso e quindi le differenze tra le parti
prodotte, se ci sono, sono minime.
4
È possibile riconoscere una stretta corrispondenza tra layout e organizzazione del
sistema di produzione. Il job shop è il tipo di produzione in cui ogni parte segue un
proprio percorso e può essere realizzato su un layout a posizione fissa oppure a
processo. Quando il numero di parti supera una certa quantità (dell’ordine del
centinaio) la produzione viene eseguita a lotti (batch) oppure organizzata in cellule
(group technology). La produzione batch viene realizzata da layout a processo;
quella a cellule in layout cellulare. Infine, nel caso che la varietà sia limitata mentre
la quantità molto consistente, conviene organizzare la produzione secondo una flow
line, tipicamente realizzata in un layout a prodotto.
5
ha durata limitata) e quindi i costi di automatizzazione non sarebbero ammortizzati.
Nel caso il prodotto sia nuovo sul mercato, e quindi sia ancora in fase di test, è
possibile osservare una migrazione verso l’automatizzazione della produzione. Si
passa dalla produzione manuale in cui le lavorazioni e i trasporti dei beni tra le
macchine sono tutti assistiti da operatore umano, alla produzione automatizzata, in
cui le macchine lavorano in modo sostanzialmente autonomo ma i trasporti dei beni
tra le macchine sono manuali, alla produzione automatizzata integrata, in cui sia i
trasporti sia le lavorazioni sono completamente automatizzate.
6
dalla variabilità nei tempi di lavorazione, risolvibili queste ultime utilizzando
magazzini intermedi.
7
ciascuna parte impiega ad attraversare il processo. L’ottimizzazione di questo
indice si ottiene in linea di principio minimizzandolo. Tuttavia anche per l’MLT
valgono le considerazioni appena esposte per il WIP: si tratta infatti di due
indici di prestazione fortemente correlati tra loro.
Le date di consegna costituiscono uno degli indici più importanti per quanto
riguarda il soddisfacimento del cliente. Esso è legato alle problematiche del
WIP: finire i prodotti troppo in anticipo rispetto alla data di consegna
comporta tutti i problemi discussi sopra in relazione a valori del WIP troppo
elevati. Finire i prodotti in ritardo ha evidenti ricadute negative sull’attività
futura dell’azienda.
In base alla legge di Little, il numero medio N di pezzi all’interno del sistema è pari a
regime e in condizioni di equilibrio (ossia quando il flusso medio dei pezzi in ingresso
eguaglia il flusso medio dei pezzi in uscita) alla frequenza media con cui i pezzi
entrano (e escono, per quanto appena detto) nel sistema, per il tempo medio MLT
di permanenza (in servizio o in coda) dei pezzi nel sistema:
WIP MLT
8
Per un impianto manifatturiero la legge si traduce nel fatto che il numero medio di
pezzi in lavorazione (WIP) è pari al prodotto della frequenza (tasso) media con cui
essi sono richiesti per il tempo medio di lavorazione (MLT).
Esempio 3. La legge di Little può essere utilizzata anche in ambiti diversi da quello
produttivo. Si consideri per esempio un servizio di trasporto che, lungo una certa
linea, assicuri il passaggio di un mezzo ogni 10 minuti. Si assuma che per percorrere
l’intera linea occorra un’ora. Quanti mezzi viaggiano contemporaneamente lungo la
linea? La risposta, peraltro facile da determinare intuitivamente, può essere
ottenuta come applicazione della legge di Little, dove il numero di mezzi nella linea
va interpretato come WIP, la frequenza di passaggio del mezzo come tasso di arrivo
λ=6 mezzi/h, il tempo di percorrenza come MLT=1 h. Si ha quindi che il numero di
mezzi in viaggio sarà pari a λMLT = 61 = 6 mezzi di trasporto.
9
Capitolo 2
Tecnologie nell'automazione manifatturiera
2.1 Introduzione
In questa sezione si descrivono le tecnologie principali utilizzate nell'automazione
dei sistemi di produzione. Automatizzare un sistema di produzione significa rendere
il sistema capace di funzionare limitando l’intervento di operatori umani.
10
La classificazione “continuo - discreto” può essere estesa anche alle variabili di stato
e di controllo dell’impianto e, quindi, ai sensori e agli attuatori. Si ricorda infatti, che
un sistema di produzione è un sistema ibrido, caratterizzato sia da grandezze
continue sia da grandezze discrete.
Le azioni di controllo continue sono per esempio le regolazioni della forza applicata
o della velocità mentre quelle discrete sono per esempio le operazioni di apertura o
chiusura di una valvola, di inizio lavorazione o di scarico pezzo.
Prima degli anni ’60 il controllo continuo era ottenuto tramite controllori basati su
circuiti analogici, mentre il controllo discreto era essenzialmente costituito da
banchi di Relè. Il relè è un dispositivo elettromeccanico che in presenza di
determinate condizioni logiche sul circuito primario, ovvero in presenza di corrente
i1, apre o chiude un circuito detto secondario, permettendo il flusso della corrente i2.
La corrente i1 eccita una bobina collegata ad un interruttore che chiude o apre il
secondario.
Dopo gli anni ’60 crebbe l’utilizzo di tecnologia digitale, con la realizzazione dei primi
controllori continui tramite calcolatore e dei primi controllori discreti basati su PLC.
La fine degli anni ’60 segna il passaggio dall’elettronica analogica all’utilizzo del
11
calcolatore, per il controllo continuo; ed il passaggio dai banchi di relè all’utilizzo di
PLC per il controllo discreto.
Gli svantaggi dalle vecchie tecniche che resero vincenti le nuove furono molteplici,
primo fra tutti l’ingombro ed il consumo di corrente dei banchi di relè. Inoltre la
difficoltà di progetto e modifica dei banchi di relè era accompagnata da un difficile
riconoscimento dei guasti. Infine la caratteristica che rese vincente l’utilizzo dei PLC
sui banchi di relè fu senza dubbio l’enorme differenza di velocità di elaborazione.
Nel seguito di questo capitolo ci si soffermerà sulla descrizione generale dei PLC e
dei loro linguaggi di programmazione. Nel Cap. 3 si discuterà la programmazione di
un PLC prodotto dalla Siemens, il Simatic S7.
2.2 I PLC
I controllori logici programmabili, PLC (1968), sono controllori discreti che
sostituiscono i vecchi banchi di relè.
Il PLC riceve in ingresso il valore restituito dai sensori del processo, esegue il
programma ed invia i risultati alle uscite del PLC che comandano gli attuatori.
12
Il Processore funziona ripetendo un ciclo composto da tre fasi: nella prima fase,
detta aggiornamento degli ingressi, il segnale in ingresso al PLC, ovvero l’uscita del
sensore, viene prelevata e mantenuta costante durante tutto il tempo di esecuzione
del ciclo; la seconda fase è detta esecuzione del programma ed infine, nell’ultima
fase, l’aggiornamento delle uscite, vengono spediti i risultati dell’elaborazione in
ingresso agli attuatori.
Il tempo di scansione (cioè la durata del ciclo) dipende dalla lunghezza del
programma: se il programma è lungo pochi KB il tempo di scansione è compreso tra
l’unità e la decina di ms.
Il processore possiede una memoria, divisa in 5 zone: l’area del sistema operativo (di
tipo ROM) contenente l’interprete dei comandi del PLC, l’area di lavoro del sistema
operativo (di tipo RAM) contenente lo spazio di memoria utilizzato dai calcoli del
sistema operativo, l’area input/output (di tipo RAM) contenente la memoria per gli
ingressi e le uscite, l’area dei programmi utente (di tipo RAM/PROM perché
modificabile come una RAM nella modalità di programmazione – vedere sotto la
definizione delle modalità di funzionamento di un PLC - ma non è modificabile nella
modalità di esecuzione) contenente il listato del programma che il PLC deve
compiere ed infine l’area di lavoro dei programmi utente (di tipo RAM) ovvero l’area
di memoria per i calcoli del programma utente.
Per dare un’idea delle dimensioni della memoria e per introdurre un po’ di
notazione, si supporrà che l'area dati della memoria RAM del PLC comprenda 32
word (=parole, ogni parola è composta da 16 bit) riservate agli ingressi. Un ingresso
analogico sarà memorizzato in 16 bit (ossia occuperà un’intera parola), un ingresso
binario sarà associato a un singolo bit. Analogamente, 32 word saranno dedicate alle
uscite, mentre ben 512 word saranno disponibili per le variabili di lavoro (interne)
dei programmi utente. Infine 16 parole saranno disponibili per le variabili di
conteggio e 16 per quelle di temporizzazione. Come notazione, Ix indicherà la parola
numero x dell’area degli ingressi (p. es. I5 sarà la quinta parola dell’area degli
ingressi) mentre Ix:y indica il bit y della word x degli ingressi (p. es. I2:3 è il terzo bit
della seconda parola associata agli ingressi). Stesse regole si applicano alle parole
riservate alle uscite (parole U), alle variabili interne (W), a quelle dei contatori (C) e
infine a quelle dei temporizzatori (T). Per semplicità di lettura, conviene associare
dei nomi mnemonici ad alcune variabili. Per esempio, VALVOLA = U4:5 significa che
13
il 5° bit nella word 4 dell'area di memoria riservata alle uscite viene richiamata col
simbolo VALVOLA e quindi è un bit associato per esempio all'apertura o alla chiusura
di una valvola. La notazione TEMP = I2 associa il nome simbolico TEMP (per es.
temperatura) alla lettura di un sensore analogico (quindi una word intera)
conservato nell'indirizzo I2.
esecuzione;
programmazione;
validazione.
14
quindi sviluppato il più vicino possibile a quel tipo di tecnologia per poter essere
compreso e utilizzato dai tecnici dell'epoca, privi di conoscenze informatiche.
Pertanto le prime istruzioni disponibili furono quelle che rappresentavano il
contatto normalmente aperto o normalmente chiuso di un relè, la sua bobina di
eccitazione, il temporizzatore e il contatore.
Anche la forma grafica del programma deriva dalla logica a relè: le linee verticali
della scala (i montanti) rappresentano l'alimentazione e quelle orizzontali (i pioli
della scala detti rung) alimentano una bobina se tutti i contatti sono chiusi. I contatti
possono essere associati agli ingressi esterni oppure a condizioni interne, tutte
rappresentate in bit (0 = contatto aperto - se normalmente aperto, 1 = chiuso - se
normalmente aperto). La bobina può essere associata a un bit di memoria ed
eventualmente comandare un'uscita o segnalare una condizione interna.
Istruzioni di base;
Istruzioni di temporizzazione e conteggio;
Istruzioni per il controllo del flusso del programma;
Istruzioni per la manipolazione dei dati.
Ricordiamo che, in accordo con quanto detto all’inizio, il funzionamento del PLC è
ciclico ed ogni ciclo comprende le seguenti azioni: lettura degli ingressi ed
aggiornamento delle variabili corrispondenti; esecuzione del programma, nel caso a
contatti di tutta la scala ad esso associata, piolo per piolo (durante tale esecuzione le
variabili di ingresso restano costanti); scrittura delle variabili di uscita sulle uscite del
PLC. Illustriamo qui di seguito questi tipi di istruzioni.
ISTRUZIONI DI BASE
15
Contatto normalmente chiuso. Il contatto normalmente chiuso è associato ad un
ingresso o ad una variabile interna del programma con la seguente relazione:
quando la variabile è bassa il contatto si chiude, quando è alta si apre.
Con le istruzioni di base è già possibile scrivere un semplice programmino per un PLC
che realizza un elemento di memoria (flip-flop) con pulsante di set e reset.
Se per ipotesi volessimo fare un circuito di Set-Reset, cioè un circuito con memoria,
potremmo usare con successo un PLC. Esemplifichiamo questo con una possibile
applicazione reale in cui si vuole accendere un motore con un pulsante di ON e
mantenerlo acceso fintanto che non viene premuto un pulsante di OFF. Lo schema
del PLC che attua ciò è quello presentato di seguito. I2:2 è l’ingresso di ON mentre
I3:9 è l’ingresso di OFF.
16
scan ts) cioè l’uscita U1:1 diviene alta. Quando I2:2 torna basso, il contatto U1:1 è
ancora alto quindi il motore continua a girare. Quando I3:9 diviene alto il circuito
viene disconnesso (con un tempo di ritardo pari a ts).
ts
17
Contatore. Si rappresenta con un blocco rettangolare con dentro un numero intero
che indica il count-down del contatore e una variabile associata al contatore stesso.
Supponiamo che tali valori siano: 7 (il numero intero di count-down) e C1 (la
variabile del contatore). Il contatore incrementa di una unità il suo conteggio
quando le condizioni sul rung dove si trova passano da falso a vero e assegna un
livello alto a C1 quando tale conteggio diventa uguale a 7. La variabile C1 viene
resettata (cioè viene posta nuovamente a 0) con un'istruzione di reset (una bobina
con scritto dentro RES associata all’indirizzo del contatore). Contatori e
temporizzatori possono essere usati in cascata per intervalli di conteggio maggiori
delle loro capacità massime.
Istruzioni di salto. Per le istruzioni di salto si utilizza la “bobina di jump” che quando
è alta fa si che il programma salti direttamente alla label indicata dalla bobina.
Mediante l'istruzione salto è semplice realizzare le strutture IF-THEN-ELSE, REPEAT-
18
UNTIL, DO-WHILE. Per esempio, un costrutto if-then-else può essere rappresentato
dal seguente schema:
19
degli algoritmi di controllo. L'SFC è il linguaggio più innovativo riportato nello
Standard 61131 del Comitato Elettrotecnico Internazionale, documento che ha dato
un certo ordinamento alle numerose versioni e dialetti dei linguaggi comunemente
usati per programmare un PLC. Tale linguaggio presenta numerosi vantaggi rispetto
agli altri: essendo il modo naturale per descrivere un sistema logico-sequenziale,
rappresenta anche un modo chiaro per definire il comportamento desiderato per un
sistema (non solo di produzione) e quindi del dispositivo che lo controlla, evitando
ogni possibile forma di ambiguità che un documento in lingua corrente potrebbe
creare. Risulta inoltre facile da esaminare e da modificare qualora necessario.
Se il PLC per cui è scritto il programma di controllo accetta il linguaggio SFC (cosa per
nulla garantita in generale) non vi è bisogno di ulteriori operazioni, altrimenti
occorrerà tradurre l'algoritmo di controllo in un altro linguaggio, accettato dal PLC. I
dispositivi Siemens che si proverà a programmare nel seguito di fatto non accettano
l'SFC: si insegnerà più avanti (si veda in particolare l'Esempio 4) un modo per
tradurre un programma scritto in linguaggio SFC in un programma scritto in
linguaggio a contatti: sarebbe invero molto più arduo scrivere (e interpretare e/o
modificare) direttamente un programma in linguaggio ladder piuttosto che lavorare
sulla sua versione SFC. La procedura di traduzione ha anche il vantaggio di
permettere in modo relativamente semplice l'introduzione di modifiche al
programma stesso.
[Link] La fase.
20
viene rappresentato ponendo un pallino al suo interno. Se il pallino non c'è la fase è
detta INATTIVA.
[Link] Transizione
Una TRANSIZIONE viene indicata con una barretta e la sigla Tn, con n il numero che
la identifica. Alla transizione viene associata una condizione logica che viene
riportata accanto alla transizione stessa.
Gli archi orientati collegano tra loro le fasi, stabilendo la sequenza, e sono interrotti
dalle transizioni, le quali determinano le condizioni da verificare per passare da una
fase (disattivandola) a un'altra (attivandola).
Tra due fasi collegate da un arco ci deve sempre essere una transizione e tra due
transizioni sempre almeno una fase.
Per convenzione, quando due o più fasi convergono su una sola transizione, o da
una sola transizione partono più fasi, si utilizza rappresentare il collegamento con
una doppia linea.
Si definisce condizione di un SCF l'insieme delle sue fasi attive. Un SFC può cambiare
la sua condizione attraverso il superamento delle transizioni. Perché una transizione
sia superabile, devono verificarsi entrambe le due condizioni seguenti:
21
Quando una transizione è superabile essa viene superata: le fasi a monte vengono
disattivate (si cancella il pallino nel loro interno) e vengono attivate quelle a valle (si
disegna un pallino nel loro interno).
22
[Link] Tipi di azioni
23
Azione memorizzata: l’azione viene avviata quando la fase n1 diviene attiva
e viene interrotta quando la fase n2 diviene attiva.
Quando a una fase seguono due o più transizioni ci troviamo di fronte a una
struttura di tipo scelta: il ramo che viene attivato è quello associato alla transizione
con la condizione logica verificata (per questo motivo le condizioni delle transizioni a
valle di una stessa fase devono in questo caso essere mutuamente esclusive).
Ci troviamo di fronte a una convergenza quando più rami convergono in una stessa
fase.
24
Si ha invece una concorrenza (o parallelismo) quando a una stessa transizione
seguono due o più fasi: in questo caso tutti i rami a valle della transizione vengono
attivati.
Infine, una sincronizzazione è costituita dal convergere di due o più rami in una
stessa transizione.
25
ESEMPI. Si riportano qui di seguito alcuni esempi molto semplici per illustrare come
programmare un PLC mediante il linguaggio SFC. Tali esempi verranno ripresi nel
Cap. 3 dove verranno implementati nel PLC Siemens Simatic S7-1200.
Dalla Fase 1 si passa alla fase 2 se arriva la richiesta di scarico del magazzino g.
Dalla Fase 2 (spostamento D verso destra del carrello) si passa alla fase 3 se il
carrello arriva al fine corsa destro FD.
Dalla Fase 3 (rovesciamento del magazzino R) si passa alla fase 4 se il fine corsa del
magazzino FR rivela lo scarico completato.
26
Dalla Fase 4 (spostamento S verso sinistra del carrello) si torna alla fase 1 se il
carrello arriva al fine corsa sinistro FS.
N.B. La figura sopra è fatta per il caso di N = 1 (un solo ramo). Per N rami,
occorrerebbe ripetere N volte il tratto compreso tra la fase 2 (inclusa) e la
transizione t/x4/20ms (inclusa).
Dalla Fase 1 si passa alla fase 2 se il rivelatore di terreno secco è attivo o se sono
passate 72 ore.
Dalla Fase 2 (apertura della valvola) si passa alla fase 3 se sono trascorsi 40 ms, il
tempo necessario ad aprire la valvola.
Dalla Fase 3 (aspetta che tutto sia innaffiato) si passa alla fase 4 dopo un’ora.
Dalla fase 4 (chiusura della valvola) si torna alla fase 1 se sono trascorsi 20 ms, il
tempo necessario per chiudere la valvola.
27
Esempio: processo di produzione
PL2
PL2
Dalla Fase 1 si passa alla fase 2 se non ci sono pezzi nella macchina e
contemporaneamente se ci sono pezzi in coda al buffer B1.
Dalla Fase 2 (caricamento del pezzo) si passa alla fase 3 se il pezzo è stato
effettivamente caricato.
Dalla Fase 4 (scarica pezzo) si torna alla fase 1 se la macchina è stata effettivamente
liberata del pezzo lavorato.
28
Capitolo 3
Programmazione di un PLC Siemens Simatic S7-1200
mediante TIA Portal V13
I passi da seguire per sviluppare un progetto in TIA Portal V13 sono i seguenti:
1) Nella vista Portale inserire il dispositivo di controllo (Simatic S7-1200, CPU 1214C
AC/DC/RY, 6ES7 214-1BG40-0XB0)
2) Si entra quindi nella vista Progetto e qui occorre inserire le variabili che verranno
utilizzate nel programma all'interno della Tabella delle variabili standard (menu a
sinistra Variabili PLC dentro PLC_1). Da osservare che le variabili di ingresso sono
designate con una sigla del tipo Ix.y (con y intero da 0 a 7), le uscite con Qx.y e le
variabili interne con Mx.y.
4) Prima di caricare il programma sul PLC verificare che la CPU sia su STOP (led
run/stop arancione). Altrimenti fermarla con l'apposito pulsante sul menu in alto a
destra. Se però il PLC non è ancora stato collegato al PC (pur essendo già fisicamente
connesso ad esso), questo comando apre una finestra per il collegamento:
29
Esempio 1. Set-Reset (flip/flop)
Riprendiamo il primo esempio introdotto qualche pagina fa per descrivere il linguaggio a
contatti e mostriamo come sia possibile implementarlo sul PLC Siemens considerato.
Il nome del progetto su TIA Portal è SetReset. E' interessante osservare come il PLC, una volta
caricato questo programma, riproduca il comportamento illustrato nel grafico riportato a destra
nella figura precedente.
30
Esempio 2. Ventola raffreddamento.
L'altro esempio riportato nel testo per descrivere il funzionamento di un temporizzatore
nell'ambito del linguaggio Ladder è quello qui riproposto. Si ottiene un'uscita (Q0.0) che vale
uno quando l'ingresso (I0.0) è uno e torna a zero solo dopo che l'ingresso è tornato a zero da un
certo tempo (come la ventola di raffreddamento di un dispositivo quale un proiettore).
31
Esempio 3. If-then-else.
Si consideri ancora uno degli esempi di programma scritto in linguaggio Ladder riportato qualche
pagina fa.
Il programma è completamente diverso da come viene riportato nella figura precedente perché
nel linguaggio supportato da TIA Portal non potevano esserci due Jump nello stesso segmento e
la label viene sempre messa all'inizio di un segmento.
E' stato anche necessario mettere una variabile superflua (dummy) perché non era possibile
fare un segmento con sola etichetta. Tuttavia, in un programma normale, è ragionevole
supporre che ci siano altre istruzioni dopo l'if-then-else, per cui ci saranno queste invece della
variabile dummy.
32
33
Esempio 4. Carrello automatico.
Si consideri il primo esempio di programma scritto in linguaggio SFC riportato qualche pagina fa.
Occorre prima tradurlo in linguaggio a contatti. Si seguiranno qui le regole descritte nel testo di
Chiacchio e Basile (cfr. sezione bibliografica sul sito del corso). La procedura seguita in questo
esercizio vale in generale per l'implementazione di qualsiasi programma SFC su TIA Portal.
Innanzitutto va usato un blocco [OB100] che ha la proprietà di essere eseguito solo alla prima
scansione del programma e che inizializza a uno la fase iniziale (Fase1).
Sul Main[OB1] (quello che viene eseguito sempre ciclicamente dal PLC) ci sono 3 segmenti. Il
primo è di Valutazione delle transizioni. Nel caso specifico (progetto carrelloAutomatico):
34
Segue poi un segmento di Superamento delle transizioni in cui vengono disattivate le fasi a
monte e attivate quelle a valle delle varie transizioni superate. Si noti che a tale scopo vengono
usate bobine di Set e Reset.
35
Esempio 5. Impianto di irrigazione (un solo ramo).
Si consideri ora il secondo esempio di programma in linguaggio SFC del Cap. 2.
La soluzione su TIA Portal (progetto irrigazione) è simile a quella dell'esercizio precedente con
stesso blocco di inizializzazione [OB100] e, nel blocco principale [OB1], stesso segmento per il
Superamento delle transizioni (sono infatti 4 fasi anche qui). Analogo è il segmento delle azioni
che qui sono associate solo alla Fase 2 (Apri) e 4 (Chiudi). Abbastanza diverso invece è il
segmento di Valutazione delle transizioni. Infatti qui le condizioni associate alle transizioni sono
delle variabili temporali associate alle fasi. Queste possono in generale essere effettuate nel
seguente modo per le transizioni da 2 a 4, utilizzando un temporizzatore TON (i tempi sono
diversi da quelli dell'SFC riportato sopra per apprezzarli praticamente):
36
In sostanza, quando si è in una fase per un tempo maggiore di quello indicato in PT, Q diventa 1
e la variabile di transizione TR diviene vera, segnalando che può essere superata. Il problema
nasce nella prima fase dove c'è un OR logico tra t/x1/72h e il sensore di umidità SEC. Una
struttura come la seguente, che pure sarebbe corretta in linea di principio, non è ammessa nel
linguaggio KOP implementato su TIA Portal perché dice che rami in parallelo possono contenere
solo contatti:
Allora la precedente è stata trasformata nel seguente modo equivalente e ammissibile nel
linguaggio KOP. In sostanza la variabile Tx1 diviene uno quando sono nella Fase 1 da almeno PT
unità di tempo. La transizione è superabile quando vale 1 dunque l'OR tra Tx1 e SEC:
37
Esempio 6. Sistema di produzione.
Si consideri il terzo esempio di programma in linguaggio SFC proposto alla fine del Cap. 2.
PL2
PL2
38
senza problemi, tuttavia occorre fare attenzione a mettere nella serie suddetta il temporizzatore
prima dell'interruttore perché altrimenti, se PL2=0, il conteggio del tempo che passo nella fase 3
non parte. Poiché però la variabile temporale Tx3 serve anche per condizionare l'azione della
Lavorazione, tanto vale generarla e usarla anche, per maggiore chiarezza, in sede di valutazione
delle transizioni.
39
Esempio 7. Ripreso dall'esame di AutMan del 12 giugno 2001.
Si consideri il sistema di produzione indicato in figura. Il sistema è dotato dei seguenti sensori: PP1
= presenza pezzo nel buffer B1, PP2a = buffer B2a pieno (cioè PP2a=1 se B2a è pieno), PP2b = buffer
B2b pieno, PPM = presenza pezzo nella macchina M (cioè PPM=1 se c'è un pezzo nella macchina),
TP=0 se il pezzo in lavorazione è di tipo a, TP=1 se è di tipo b. Dal buffer B1 arrivano alla macchina
pezzi di due tipi, a e b, in ordine casuale. La macchina carica un pezzo nuovo se non ci sono pezzi in
essa e se c'è un pezzo disponibile sul buffer B1. Dopo aver caricato il nuovo pezzo, il sensore TP è in
grado di capire se tale pezzo è di tipo a o b. A questo punto comincia la lavorazione che dipende dal
tipo di pezzo e dura, in ogni caso, meno di 10 minuti. Ultimata la lavorazione, il pezzo va scaricato nel
buffer corrispondente (pezzi a in B2a, pezzi b in B2b) se c'è posto, altrimenti la macchina attende che
tale posto si liberi. Scrivere l'SFC del PLC di controllo.
La soluzione su TIA Portal (progetto esame12giu2001) segue ancora l'impostazione degli esercizi
precedenti, con stesso blocco di inizializzazione [OB100] e, nel blocco principale [OB1], stesso
segmento per il superamento delle transizioni (con la sola trascurabile differenza che ora le fasi
sono 5). Facilmente comprensibile è il segmento delle azioni, in cui la variante principale è quella
che a una stessa fase possono essere associate più azioni condizionate (si vedano le Fasi 3 e 5).
40
Il segmento di Valutazione delle transizioni risulta anche piuttosto semplice e questo perché
nell'SFC si è introdotta una fase 4 di eventuale attesa che permette di separare la condizione
temporale da quella di disponibilità di spazio sul buffer a valle.
41
Esempio 8. Ripreso dall'esame di AutMan dell'8 giugno 2004.
Si tratta di un esempio di programma scritto già in linguaggio Ladder. Questo programma in
effetti produce lo stesso comportamento dell'esempio 2 del Cap. 2 (Ventola di raffreddamento).
Il programma e un suo possibile comportamento sono riportati nella figura seguente.
La soluzione su TIA Portal (progetto esame8giu2004) non è quindi molto diversa da quella
dell'esempio 2, comprendendo solo un paio di segmenti nel blocco [OB1].
42
Esempio 9. Ripreso dall'esame di AutMan del 7 settembre 2001.
Si consideri il sistema di produzione indicato in figura. Il sistema è dotato dei seguenti sensori: PP1
= presenza pezzo nel buffer B1, PP2 = presenza pezzo nel buffer B2, PPM = presenza pezzo nella
macchina M, BP3 = buffer B3 pieno. Il sistema di controllo agisce coi seguenti comandi: CP1 = carica
pezzo di tipo 1, CP2 = carica pezzo di tipo 2, SP = scarica pezzo. Sul buffer B1 arrivano pezzi di tipo 1
che richiedono una lavorazione di 10 minuti e hanno priorità maggiore rispetto ai pezzi di tipo 2 che
arrivano sul buffer B2 e possono essere caricati sulla macchina per essere lavorati solo se non ci
sono pezzi in attesa di tipo 1, con un tempo di lavorazione di 5 minuti. Scrivere il diagramma
funzionale sequenziale (SFC) del PLC di controllo tenendo conto che la macchina non può smettere
di lavorare un pezzo una volta che lo ha caricato e non può caricarne uno nuovo finché non ha
scaricato il precedente.
Si riprende con gli esempi di linguaggio SFC la cui struttura va tradotta in Ladder. Qui le fasi sono
6. La soluzione su TIA Portal (progetto esame7set2001) segue quindi l'impostazione degli esercizi
precedenti di questo tipo, con il solito blocco di inizializzazione [OB100]. Nel blocco principale
[OB1] il segmento per il Superamento delle transizioni è grosso modo lo stesso dei casi
43
precedenti salvo ora la variante dei nomi delle fasi. Si è a tal proposito deciso di associare a
ciascuna transizione la variabile TRx come indicato in rosso nella figura precedente. Si riportano
quindi i blocchi di Esecuzione delle azioni e di Valutazione delle transizioni. Si noti che anche qui,
come nell'Esempio 6, è stato necessario introdurre delle variabili Tx di temporizzazione.
44
45
Esempio 10. Lavorazione in lotti.
In questo esempio si utilizza un contatore. Il problema considerato consiste in una macchina cui
arrivano dei pezzi (evento arrivo). Quando il numero di pezzi arrivati ha raggiunto 5 (dimensione
del lotto), il lotto viene caricato sulla macchina per essere lavorato. La lavorazione dura 5
secondi. Dopodiché il lotto viene scaricato. Gli arrivi vengono sempre accolti anche mentre la
macchina lavora o scarica il lotto. Tuttavia quando il lotto è completo (numero pezzi = 5) gli
arrivi vengono ignorati (ossia respinti). Solo quando il lotto viene caricato nella macchina il
conteggio degli arrivi riprende. L'SFC considerato è il seguente (in realtà ce ne sono due, uno che
descrive la dinamica degli arrivi, riportato a sinistra e solo implicitamente implementato nel
programma, e un altro che descrive il sistema di controllo della macchina, riportato a destra).
46
Per il resto l'implementazione dell'SFC di controllo segue l'impostazione degli esercizi precedenti
di questo tipo, con il solito blocco di inizializzazione [OB100]. Nel blocco principale [OB1]
compare il segmento per il Superamento delle transizioni che è lo stesso dei casi precedenti e
non viene riportato nel seguito. Si riportano invece i blocchi di Esecuzione delle azioni e di
Valutazione delle transizioni, la cui struttura è abbastanza intuitiva.
47
48
Esempio 11. Dinamica di arrivi in due buffer.
Questo esempio riguarda la dinamica di due buffer il cui contenuto, x 1 e x2 rispettivamente,
viene modificato dagli arrivi di nuovi pezzi. Le variabili x 1 e x2 sono numeri interi e pertanto
richiedono 16 bit, cioè una word. Per questo, nella tabella delle variabili, come indirizzo hanno
rispettivamente MW1 e MW3. Attenzione: x2 non poteva essere associato a MW2 perché MW2
comincia con il secondo byte della word MW1 (che occupa due byte). Anche bisogna fare
attenzione a non usare M0.x, M1.x, M2.x e M3.x (con x=0,1,...,7) in quanto questi bit sono
utilizzati nelle word MW1 e MW3. In sostanza la situazione è questa:
{M0.0 M0.1 ... M0.7} {M1.0 M1.1 ... M1.7} {M2.0 M2.1 ... M2.7} {M3.0 M3.1 ... M3.7}
La dinamica degli arrivi è manuale: il fronte di salita dell'ingresso I0.0 incrementa di 1 x1, il
fronte di salita di I0.1 incrementa x2. Il progetto su TIA Portal si chiama arriviManuale e il blocco
OB1 (l'unico presente in questo caso) è così fatto:
49
Si nota l'interruttore di tipo P (già introdotto nel progetto precedente) che serve proprio a
rilevare il fronte di salita della variabile I0.0 nel primo rung. Ha bisogno di una variabile di
appoggio (M0.0 nel primo caso) per poter lavorare. Il blocco INC incrementa di uno la variabile
collegata al pin IN/OUT (in questo caso x1, cioè MW1) tutte le volte che vede uno sul pin EN.
Sul secondo rung si fa la stessa cosa per quanto concerne il secondo buffer.
Infine, nel terzo rung, si confrontano le due variabili x1 e x2: se x1 ≥ x2, si imposta a uno l'uscita
Q0.0 che altrimenti rimane a 0.
50
Esempio 12. Dinamica di arrivi automatica.
Questo esempio è una variante dell'esempio precedente: gli arrivi non sono più comandati
manualmente dagli interruttori collegati agli ingressi I0.0 e I0.1 ma si verificano in base a una
temporizzazione. Si è scelto di considerare in questo caso la dinamica di un solo buffer (anziché i
due del progetto precedente), il cui contenuto è stato genericamente indicato xi.
Il progetto su TIA Portal si chiama arriviAutomatico e il blocco OB1 (l'unico presente in questo
caso) è così fatto:
In questo caso, il temporizzatore TON, finché l'ingresso IN vale 1 (cosa che accade finché M0.0,
cioè arrivo, è 0) conta il tempo trascorso e assegna all'uscita Q (e quindi a M0.0, cioè ad arrivo
stesso) il valore 1 quando tale conteggio ha raggiunto il tempo indicato in PT (5 secondi in
questo caso). Con la variabile arrivo (cioè M0.0) pari a 1 il blocco INC incrementa di uno il buffer.
Ma questo avviene (come deve essere) solo una volta perché nel ciclo successivo M0.0 pari a 1
fa aprire il contatto in ingresso al temporizzatore che viene quindi azzerato. Però come il
temporizzatore viene azzerato, arrivo torna a 0 facendo ripartire il conteggio del tempo.
51
Esempio 13. Dinamica di arrivi in tre buffer automatica con capacità
limitata.
Questo esempio è una piccola variante dell'esempio precedente: la capacità dei buffer è limitata
e gli arrivi vengono ignorati quando il contenuto del buffer ha raggiunto il suo valore massimo.
Si è scelto di considerare in questo caso la dinamica di tre buffer, il cui contenuto è stato
indicato xi, i = 1,2,3.
Il segmento riportato qui sopra viene replicato tre volte nel blocco, una per ogni tipo di parte.
Occorre fare attenzione: se si crea il secondo segmento come copia-incolla del precedente, oltre
a cambiare il nome delle variabili (cioè per esempio arrivo2 al posto di arrivo1 e x2 al posto di
x1), è necessario anche modificare la variabile associata al temporizzatore (DB1 in questo caso),
che altrimenti sarebbe condivisa dai due temporizzatori, con conseguenze potenzialmente
catastrofiche.
52
Esempio 14. Lavorazione (manuale) di buffer con arrivi automatici.
Questo esempio aggiunge al precedente la possibilità di lavorare (e quindi decrementare) i vari
buffer (che sono tre anche qui). Su TIA Portal il progetto in esame si chiama
lavoraManualeArriviAutomatici. La parte di dinamica degli arrivi è identica a quella del
precedente progetto: nel blocco OB1 (che anche qui è l'unico presente) i primi tre segmenti sono
la copia del segmento riportato nel progetto precedente. Vi sono poi tre segmenti (il 4, il 5 e il 6,
cioè uno per ogni parte) riguardanti le lavorazioni: un fronte di salita sull'ingresso (I0.0 nel caso
del primo buffer) decrementa di uno il contenuto del buffer (x1 in questo caso), ma solo se è
positivo, facendo un po' quello che si faceva con gli incrementi del progetto arriviManuale. I
segmenti appena descritti sono del seguente tipo:
Il fronte di salita su I0.0 chiude l'interruttore P, la qual cosa, se x1>0, porta a 1 il pin EN del
blocco DEC, facendo decrementare la variabile (x1) sul pin IN/OUT. Analogamente viene fatto nei
segmenti 5 e 6 del blocco.
La stessa identica cosa viene effettuata nei segmenti 8 e 9 in relazione agli altri due buffer.
53
3.1 Uso di un pannello (virtuale) HMI.
Per la visualizzazione di quello che accade nel PLC e per comandarne alcune variabili,
si può utilizzare un pannello HMI. Si tratta di inserire nel progetto un dispositivo
HMI. A tal fine, andare nella Vista Portale e scegliere l'opzione Aggiungi nuovo
dispositivo. Scegliendo un dispositivo di tipo HMI, comparirà una lista di Display.
Scegliere per esempio il TP1500 Basic, che compare tra i display da 15''. A questo
punto un Assistente permetterà di completare la definizione del dispositivo e di
inserirlo effettivamente nel progetto. Fare riferimento al Manuale Introduttivo
riportato sul sito del corso (il primo dei tre manuali presenti) per effettuare le scelte
corrette (quasi tutte possono essere lasciate pari al loro valore di default).
Una volta inserito il pannello, è possibile crearvi oggetti grafici e associarli alle
variabili del PLC per ottenere una visualizzazione on-line di quello che accade
effettivamente nel PLC e per modificare in real-time il valore delle sue variabili. Sono
disponibili moltissimi oggetti grafici nonché diverse possibili animazioni. Per
maggiori dettagli, fare riferimento agli esempi riportati in questa sezione nonché al
manuale citato pocanzi.
Una volta completata la pagina HMI, è possibile simularla scegliendo il menu (in
alto) Online -> Simulazione -> Avvia (è anche presente un pulsante scorciatoia che
permette l'avvio diretto della simulazione).
ATTENZIONE 2: quando nel progetto sono presenti sia un PLC sia un dispositivo HMI,
occorre fare molta attenzione a effettuare le varie azioni sul dispositivo desiderato,
pena il blocco di TIA Portal (blocco che potrebbe richiedere la chiusura forzata del
54
TIA Portal e, a volte, anche il riavvio del PC per poter riaprire il progetto su cui si
stava lavorando). Per esempio, se si modifica il programma del PLC e poi lo si vuole
caricare sul PLC, fare attenzione che, quando si pigia il pulsante Carica nel
dispositivo, la vista sia settata su PLC e non su HMI.
Nel pannello HMI la variabile ON_OFF_Switch, che è di tipo M (cioè interno), viene associata a
un interruttore. Le variabili ON e OFF, di tipo Q (cioè di uscita), vengono associate a due led. Per
realizzare il pannello HMI, dopo aver aggiunto il dispositivo HMI, andare nel menu a sinistra
dentro HMI e scegliere Pagine -> Pagina base. Per inserire l'interruttore, cercare sul menu a
destra Biblioteche globali e quindi scegliere Buttons-and-Switches -> Copie master ->
RotarySwitches -> Rotary_RG. Trascinare sulla pagina l'interruttore e dargli la posizione e la
dimensione desiderate. Per associarlo alla variabile ON_OFF_Switch, cliccarci sopra col tasto
destro e scegliere Proprietà. Il collegamento con le variabili PLC dovrebbe far apparire un
collegamento tra i due dispositivi (PLC e HMI) nella vista dispositivi (per vedere tale vista,
andare sulla Vista Portale e scegliere Dispositivi & Reti -> Configura reti).
I due led sono invece stati inseriti scegliendo un cerchio dal menu a destra Oggetti semplici e
trascinandolo nella pagina HMI. Cliccando col tasto destro sul cerchio e scegliendo Proprietà, è
possibile definirne le modalità di visualizzazione e animazione, anche qui in collegamento con le
variabili del PLC (in questo caso ON e OFF).
Le seguenti due figure mostrano due schermate del pannello HMI creato in questo esempio.
Cliccando sull'interruttore si modifica il valore della variabile ad esso associata (ON_OFF_Switch)
55
e si cambia quindi lo stato dei due led collegati alle variabili ON e OFF. Attenzione: se la variabile
associata all'interruttore non fosse stata di tipo M (interna) ma di tipo I (ingresso), l'interruttore
non avrebbe avuto effetto su di essa. Ciò è corretto perché la variabile di ingresso del PLC
dipende dall'ingresso effettivo presente sul PLC.
click!
56