Sei sulla pagina 1di 18

INTRODUZIONE ALLA

PROGRAMMAZIONE
DEI PLC IN LINGUAGGIO
LADDER
DESCRIZIONE DELLE PRINCIPALI
CARATTERISTICHE DEL SOFTWARE S.7
Introduzione
Il PLC (Programmable Logic Controller) ha ormai quasi sostituito la tecnologia a relè,
specialmente in campo industriale.
L' utilizzo di questa apparecchiatura comporta diversi vantaggi, quali:
- riduzione dei costi
- ingombri ridotti
- minore probabilità di guasti, spesso dovuti all' usura dei relè
- possibilità di adattare la macchina alle diverse esigenze produttive, semplicemente
modificando il programma.
Un PLC è costituito da una CPU che comunica con l' ambiente esterno attraverso
terminali di ingresso ed uscita.
I terminali di ingresso rilevano lo stato dei sensori (es. finecorsa, pulsanti, fotocellule)
installati sulla macchina; mediante i terminali di uscita vengono invece comandati
teleruttori, elettrovalvole, segnalazioni luminose ecc.
I moderni PLC possono essere programmati mediante PC, utilizzando il software fornito
dalle case costruttrici, che mette a disposizione diversi linguaggi. Tra questi il più
semplice è il linguaggio ladder.
Un diagramma ladder si basa su una logica piuttosto simile a quella di uno schema
funzionale elettromeccanico: i suoi elementi base non sono altro che relè virtuali.
Nelle pagine che seguono mi concentrerò sul software relativo ai PLC S7200,
descrivendo le principali procedure per la compilazione, il caricamento e la verifica
dei programmi.
Operazioni preliminari

Prima di iniziare ad utilizzare il PLC è opportuno verificare alcune impostazioni hardware


e software, facendo riferimento al manuale fornito dalla casa costruttrice.
Si raccomanda di controllare la tensione di alimentazione (non è uguale in tutti i
modelli).
Per caricare il programma nel PLC occorre accertarsi che quest' ultimo sia in modalità
stop (led giallo). Eventualmente cliccare cpu – stop (barra strumenti in alto).
A questo punto cliccare file – carica nella cpu e confermare; dopo alcuni secondi, se non
vengono riscontrati errori, appare un messaggio di conferma.
Per avviare l' esecuzione del programma cliccare cpu – run (si accenderà il led verde).
N.B. la modalità run-stop può essere impostata anche tramite un selettore fisico, situato
sotto lo sportellino del PLC.
Durante l' esecuzione del programma è possibile visualizzare lo stato logico e di conteggio
dei relè, temporizzatori e contatori. Per attivare questa funzione occorre cliccare
test – stato del programma (barra strumenti in alto).
Programmazione di base

Per accedere alla programmazione in linguaggio ladder occorre cliccare l' icona
blocco di codice (in alto a sinistra). Si aprirà una schermata suddivisa in segmenti.
Gli elementi necessari per la compilazione del programma sono raggruppati in cartelle.
Per inserire un elemento nel diagramma dobbiamo aprire la relativa cartella, selezionarlo
e trascinarlo (tenendo cliccato).
Per una corretta compilazione del programma occorre siglare gli elementi seguendo
precise tabelle (non è quindi ammesso assegnare sigle a piacere, come avviene negli
schemi elettromeccanici).
Evitare inoltre di inserire più bobine nello stesso segmento (esempio sotto)

SEGMENTO 1 SEGMENTO 1
I0.0 Q0.0 I0.0 Q0.0

Q0.1 SEGMENTO 2
I0.0 Q0.1

SEGMENTO 2

CONFIGURAZIONE ERRATA CONFIGURAZIONE CORRETTA


Bobine e contatti
Le bobine dei relè ed i contatti(*) si trovano nella cartella logica a bit.
La bobina di un relè viene rappresentata con questo simbolo

I relè siglati Q0.0...Q0.7, Q1.0...Q1.7 controllano lo stato delle relative uscite (possiamo
paragonarli ai contattori).
I relè siglati M0.0...M0.7, M1.0...M1.7... sono ausiliari (merker)
Il contatto viene rappresentato così:

NA NC

I contatti siglati I0.0...I0.7, I1.0...I1.7 sono comandati dai sensori sui relativi ingressi.
Per comprendere meglio consideriamo un semplice schema elettromeccanico, che
trasformeremo in diagramma ladder.
24V
+ -
START KO

K0

STOP

K0 ALIMENTAZIONE

1L Q0.0 Q0.1 Q0.2 2L Q0.3 Q0.4 Q0.5

SEG. 1 1M I0.0 I0.1 I0.2 I0.3 2M I0.4 I0.5 I0.6 I0.7 M L+


I0.0 I0.1 Q0.0

Q0.0
STOP
START
SEG.2

Non appena il programma va in esecuzione (modalità run) i contatti sono a riposo,


come disegnati nel diagramma. Premendo il pulsante START abilitiamo l' ingresso
I0.0; di conseguenza il relativo contatto sul diagramma si chiude eccitando Q0.0.
Quest' ultimo abilita la relativa uscita, quindi il teleruttore di marcia.
Premendo il pulsante STOP abilitiamo l' ingresso I0.1: il relativo contatto sul diagramma
(che è normalmente chiuso) si apre diseccitando Q0.0.

(*) I contatti di confronto, che vedremo più avanti, si trovano in una cartella a parte
Temporizzatori

I temporizzatori possono essere ritardati alla diseccitazione (TOF) o all' eccitazione


(TON, TONR). Vengono siglati con la lettera T seguita da un numero, da 0 a 255.
Il TON si eccita solo se abilitato per il periodo di tempo stabilito senza interruzioni;
il TONR ha una funzione di memoria che gli permette di eccitarsi anche in caso di
interruzione del conteggio.
I temporizzatori si differenziano anche in base alla risoluzione, ovvero il rapporto tra il
il ritardo ed il valore impostato (PT).
ritardo
valore impostato = risoluzione

SIGLA TEMPORIZZATORE RISOLUZIONE


( secondi unità )
T32, T96 0,001
TON - TOF da T33 a T36; da T97 a T100 0,01
da T37 a T63; da T101 a T255 0,1
T0, T64 0,001
TONR da T1 a T4; da T65 a T68 0,01
da T5 a T31; da T69 a T95 0,1

Supponiamo di dover impostare un ritardo di 10 secondi su un temporizzatore di tipo TON,


che nominiamo T38.
Dalla tabella risulta che la risoluzione di T38 è 0,1. Il valore impostato si ottiene dividendo
10 per 0,1.
Per ottenere un ritardo di 10 secondi occorre quindi impostare un valore pari a 100 unità.

T38
IN TON

+100 PT

BOBINA TEMPORIZZATORE

Nel caso appena descritto il temporizzatore si eccita solo se la bobina viene alimentata
per 10 secondi consecutivi.

Consideriamo ora un temporizzatore di tipo TONR, a cui assegnamo la sigla T2. Anche in
questo caso il ritardo è 10 secondi. Dato che T2 ha una risoluzione pari a 0,01, il valore
impostato sarà 1000.
Se ad esempio alimentiamo la bobina per soli 6 secondi il conteggio non si azzera;
di conseguenza, nel momento in cui riabilitiamo la bobina, quest' ultima si ecciterà dopo
4 secondi.
T2
IN TONR

+1000 PT
Avviamento stella-triangolo
Premendo il pulsante di avvio si eccita Q0.0 e subito dopo (frazione di secondo) Q0.1.
Trascorsi 3 secondi T37si eccita, disabilitando Q0.1 ed abilitando Q0.2.

SEGMENTO 1
Q0.0
Q0.0 I0.1
MARCIA

I0.0

SEGMENTO 2

Q0.0 T37
IN TON

+30 PT

SEGMENTO 3

T37 Q0.0 Q0.1

ALIMENTAZIONE A STELLA

SEGMENTO 4

T37 Q0.0 Q0.2

ALIMENTAZIONE A TRIANGOLO

+ -

TM

1L Q0.0 Q0.1 Q0.2 2L Q0.3 Q0.4 Q0.5

1M I0.0 I0.1 I0.2 I0.3 2M I0.4 I0.5 I0.6 I0.7 M L+

START STOP
Contatori

I contatori vengono siglati con la lettera C seguita da un numero da 0 a 255.


Hanno uno o due terminali per il conteggio (nel secondo caso si tratta di contatori
reversibili) ed un terminale di azzeramento.

I0.0 C0
CU CTUD
I0.0 C0
CU CTU I0.1
CD
I0.1
R
I0.2
+5 PV R

+5 PV

CONTATORE CONTATORE REVERSIBILE

La figura sulla sinistra rappresenta un contatore di tipo CTU. Inizialmente il suo valore è 0
quindi è in condizione di riposo. Ad ogni chiusura e riapertura del contatto I0.0, ovvero ad
ogni impulso sul terminale CU, suddetto valore aumenta di una unità. Nel momento in cui
raggiunge il valore impostato, in questo caso 5, il contatore si eccita.
Abilitando l' ingresso I0.1 e quindi il terminale R il valore si azzera, diseccitando il
contatore.
La figura accanto rappresenta un contatore reversibile (CTUD). In questo caso è presente
anche un terminale di conteggio negativo (CD): ad ogni impulso su quest' ultimo il valore
diminuisce di una unità.
Controllo degli accessi ad un parcheggio

Agli ingressi del PLC colleghiamo le due fotocellule ed un comando di azzeramento;


in uscita colleghiamo una lampada che si accenderà a parcheggio completo.
Quando un' autovettura accede al parcheggio la relativa fotocellula trasmette un impulso
all' ingresso I0.0 e quindi al terminale CU del contatore: il valore aumenta di una unità.
Quando un' autovettura abbandona il parcheggio la relativa fotocellula trasmette un
impulso al terminale CD del contatore: il valore duminuisce di una unità.
Nel momento in cui suddetto valore raggiunge il valore impostato (supponiamo
una capienza di 50 autovetture) il contatore si eccita ed il relativo contatto n.a. abilita la
bobina Q0.0. Di conseguenza la lampada si accende.

+ -

PARCHEGGIO
COMPLETO

1L Q0.0 Q0.1 Q0.2 2L Q0.3 Q0.4 Q0.5

1M I0.0 I0.1 I0.2 I0.3 2M I0.4 I0.5 I0.6 I0.7 M L+

FI FU P

FI = FOTOCELLULA INGRESSO PARCHEGGIO


FU = FOTOCELLULA USCITA PARCHEGGIO
P = COMANDO AZZERAMENTO

SEGMENTO 1
I0.0 C1
CU CTUD

I0.1
CD

I0.2
R

+50 PV

SEGMENTO 2
C1 Q0.0
Istruzioni word
La word è un particolare contatore il cui valore viene aggiornato da una serie di istruzioni
durante l' esecuzione del programma.
A differenza degli elementi visti fino ad ora, una word non ha stato logico (eccitato o
diseccitato). Utilizzando uno speciale contatto è possibile impostare un confronto
tra due word, oppure tra una word ed un valore stabilito. In base a tale confronto il
contattorisulterà aperto o chiuso.

Istruzioni di trasferimento(MOV_W)
L' istruzione di trasferimento, quando abilitata (è sufficiente un impulso), assegna alla
relativa word un determinato valore. Per impostarla occorre inserire sulla destra (OUT)
la sigla della word alla quale è indirizzata e sulla sinistra (IN) il valore.
Quest' ultimo può essere anche copiato da un' altra word (di cui digiteremo la sigla)

SEGMENTO 1
SEGMENTO 5
I0.0 MOV_W
EN VW100 Q0.0
>I
+1 IN OUT VW100 VW200

SEGMENTO 2 SEGMENTO 6
I0.1 MOV_W I0.5 MOV_W
EN EN

+2 IN OUT VW100 +0 IN OUT VW100

SEGMENTO 3 SEGMENTO 7
I0.3 MOV_W I0.5 MOV_W
EN
EN
+1 IN OUT VW200
+0 IN OUT VW200

SEGMENTO 4
I0.4 MOV_W
EN

+3 IN OUT VW200
Nell' esempio sopra riportato vengono configurate due word, che nominiamo VW100 e
VW200. Nei segmenti 1,2,3,4,6,7 impostiamo le istruzioni di trasferimento.
Nel segmento 5 impostiamo il confronto tra le due word: in questo caso il contatto risulta
chiuso quando il valore di VW100 è maggiore rispetto a quello di VW200.
Non appena il programma va in esecuzione entrambe le word hanno valore 0, di
conseguenza il contatto di confronto risulta aperto.
Diamo un impulso all' ingresso I0.1: VW100 assume valore 2, come impostato nel
segmento 2; pertanto il contatto di confronto si chiude, abilitando la bobina, ovvero l'uscita
Q0.0.
Diamo un impulso all' ingresso I0.3: la VW200 assume valore 1 (segmento 3); il contatto
di confronto rimane chiuso in quanto VW100 = 2 e VW200 = 1
Diamo un impulso all' ingresso I0.4 : la VW200 assume valore 3 (segmento 4); di
conseguenza il contatto di confronto si apre (VW100 = 2, VW200 = 3) disabilitando Q0.0.
Se infine diamo un impulso all' ingresso I0.5 Ii valori di entrambe le word tornano a 0
(segmenti 6 e 7).
N.B. Selezionando stato del programma dal menù test (barra degli strumenti in alto)
i valori delle word vengono visualizzati sul contatto di confronto.
Istruzioni matematiche incrementa e decrementa
(INC_W, DEC_W)

Questa istruzione assegna ad una word un determinato valore, aumentato o diminuito


di una unità.
Nel diagramma vengono configurate due word. Nei segmenti 1, 2, 5, 6 sono state
impostate le istruzioni di trasferimento, già viste; nel segmento 3 l' istruzione di incremento
Nel segmento 4 è stato impostato il contatto di confronto, che in questo caso risulta chiuso
quando il valore di VW100 è maggiore o uguale rispetto al valore di VW200.
Abilitiamo con un impulso l' ingresso I0.0: la VW100 assume valore 1 (VW100 = 1;
VW200 = 0).
Diamo un impulso all' ingresso I0.1: l' istruzione del 2° segmento assegna alla VW200
il valore copiato dalla VW100, quindi 1 (VW100 = 1; VW200 = 1).
Diamo un impulso all' ingresso I0.2: l' istruzione di incremento assegna alla VW100 valore
2, ovvero il valore della VW200 aumentato di una unità (VW100 = 2; VW200 = 1).
Con un impulso all' ingresso I0.4 azzeriamo i valori di entrambe le word.

SEGMENTO 1 SEGMENTO 4

I0.0 MOV_W VW100 Q0.0


EN >=I
+1 IN OUT VW100 VW200

SEGMENTO 5
SEGMENTO 2
I0.4 MOV_W
I0.1 MOV_W EN
EN
+0 IN OUT VW100
VW100 IN OUT VW200

SEGMENTO 3 SEGMENTO 6
I0.4 MOV_W
I0.2 INC_W EN
EN
+0 IN OUT VW200
VW200 IN OUT VW100
Operazioni matematiche (ADD_W, SUB_W, MUL_W, DIV_W)

Questa istruzione assegna ad una word il valore pari alla somma, differenza, prodotto
o quoziente tra due valori.

SEGMENTO 1
I0.0 MOV_W
EN
+2 IN OUT VW100

SEGMENTO 2
I0.0 MOV_W
EN
+1 IN OUT VW200

SEGMENTO 3
I0.1 ADD_I
EN
VW100 IN1 OUT VW300
VW200 IN2

Nei primi due segmenti sono state impostate due istruzioni di trasferimento, nel segmento
3 un' istruzione di addizione.
Abilitando con un impulso l' ingresso I0.0 le word VW100 e VW200 assumono
rispettivamente valori 2 e 1.
Diamo ora un impulso all' ingresso I0.1: la VW300 assume valore 3.
Aggiornamento del valore di una word

Un' istruzione, quando abilitata, aggiorna continuamente il valore della relativa word.
Di conseguenza, in alcuni casi, il valore assegnato dipende anche dalla durata
dell' impulso che abilita l' istruzione.
L' istruzione raffigurata assegna alla VW100 il suo stesso valore aumentato di una unità.
Non appena abilitiamo l' ingresso I0.0 la word assume valore 1, ovvero il suo valore
iniziale (che è 0) aumentato di 1. Nell' istante immediatamente successivo (parliamo di
frazioni di secondo) assumerà valore 2, pari al valore appena assunto aumentato di 1.
Il valore continuerà quindi ad aumentare fino a quando l' ingresso non viene disabilitato.

I0.0 INC_W
EN
VW100 IN OUT VW100
Distributore automatico
Come esempio pratico consideriamo un distributore di prodotti.
Agli ingressi del PLC colleghiamo tre sensori che leggeranno le monete da 10, 20 e 50
cent. e tre pulsanti per la selezione del prodotto.
Alle uscite colleghiamo tre attuatori che provvederanno all'erogazione di altrettanti prodotti
(spesso si tratta di un motorino che aziona un albero elicoidale, tra le cui spire viene
sistemato il prodotto).
Passiamo ora al diagramma.
Nei segmenti da 1 a 6 sono state impostate le istruzioni per il conteggio del credito
inserito, che viene cumulato nella VW200. Il credito utilizzato viene cumulato nella
VW500 mediante le istruzioni dei segmenti da 8 a 13.
Nel segmento 14 viene impostata la sottrazione che assegna alla VW700 il valore
corrispondente al credito residuo (VW200 – VW500).
Nei segmenti 15-16-17 vengono configurate le uscite che comandano gli attuatori.
Nel momento in cui una moneta impegna il relativo sensore, il valore corrispondente
viene assegnato alla VW100 (segmenti 1-2-3). Non appena il sensore torna a riposo
il valore della VW100 si azzera (seg. 4), ma un istante prima ( frazione di secondo) viene
caricato nella VW200 (seg.5). Di conseguenza occorre ritardare di un istante
l' istruzione di azzeramento, rispetto all'addizione: a tale scopo è stata configurata la
VW300. Il meccanismo è analogo nei segmenti da 8 a 13.
Per impedire l'erogazione del prodotto con credito insufficiente è stato impostato un
confronto tra il valore di VW700 ed il valore corrispondente all' importo di ciascun
prodotto.

S0 = SENSORE LETTURA MONETE 10 CENT.


S1 = SENSORE LETTURA MONETE 20 CENT.
S2 = SENSORE LETTURA MONETE 50 CENT.
24V PO = PULSANTE SELEZIONE PRODOTTO 1 (30 CENT.)
+ - P1 = PULSANTE SELEZIONE PRODOTTO 2 (50 CENT.)
P2 = PULSANTE SELEZIONE PRODOTTO 3 (70 CENT.)
K0 = EROGAZIONE PRODOTTO 1
K0 K1 K2 K1 = EROGAZIONE PRODOTTO 2
K2 = EROGAZIONE PRODOTTO 3

ALIMENTAZIONE

1L Q0.0 Q0.1 Q0.2 2L Q0.3 Q0.4 Q0.5

1M I0.0 I0.1 I0.2 I0.3 2M I0.4 I0.5 I0.6 I0.7 M L+

S0 S1 S2 P0 P1 P2
SEGMENTO 1
I0.0 M0V_W
EN
(LETTURA MONETE DA 10 CENT.)

+1 IN OUT VW100

SEGMENTO 2
I0.1 M0V_W
EN
(LETTURA MONETE DA 20 CENT.)
+2 IN OUT VW100

SEGMENTO 3
I0.2 M0V_W
EN
(LETTURA MONETE DA 50 CENT.)
+5 IN OUT VW100

SEGMENTO 4

VW300 M0V_W
=I EN
VW100
+0 IN OUT VW100

SEGMENTO 5

I0.0 I0.1 I0.2 ADD_I


EN

VW100 IN1

VW200 IN2 OUT VW200 (CREDITO INSERITO)

SEGMENTO 6

I0.0 I0.1 I0.2 M0V_W


EN

VW100 IN OUT VW300

SEGMENTO 7

I0.3 M0V_W
EN (RESET)

+0 IN OUT VW200
SEGMENTO 8
I0.4 VW700 M0V_W
>=I EN
+3
+3 IN OUT VW400

SEGMENTO 9
I0.5 VW700 M0V_W
>=I EN
+5
+5 IN OUT VW400

SEGMENTO 10

I0.6 VW700 M0V_W


>=I EN
+7
+7 IN OUT VW400

SEGMENTO 11

VW400 M0V_W
=I EN
VW600
+0 IN OUT VW400

SEGMENTO 12
I0.4 I0.5 I0.6 ADD_I
EN

VW400 IN1

VW500 IN2 OUT VW500 (CREDITO UTILIZZATO)

SEGMENTO 13

I0.4 I0.5 I0.6 M0V_W


EN

VW400 IN OUT VW600

SEGMENTO 14

T37 SUB_WI
EN

VW200 IN1

VW500 IN2 OUT VW700 (CREDITO RESIDUO)


SEGMENTO 15
I0.4 VW700 T37 Q0.0 (EROGAZIONE PRODOTTO 1)
>=I
+3
Q0.0

SEGMENTO 16

I0.5 VW700 T37 Q0.1 (EROGAZIONE PRODOTTO 2)


>=I
+5
Q0.1

SEGMENTO 17

I0.6 VW700 T37 Q0.2 (EROGAZIONE PRODOTTO 3)


>=I
+7
Q0.2

SEGMENTO 18
Q0.0 T37
IN TON
(LA FASE DI EROGAZIONE DURA 3 SECONDI)
Q0.1
+30 PT

Q0.2

I0.4

I0.5

I0.6

SEGMENTO 18

I0.3 M0V_W
EN (RESET)

+0 IN OUT VW500