Lezione 3 - mOve - Università degli studi di Bergamo

Corso di Automazione industriale
Lezione 3
PLC - Ladder
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
1
Idea base
Il Ladder è un linguaggio a contatti: tra i due montanti si
costituiscono le linee (rung) composte da diversi elementi
Questo linguaggio nasce dall’implementazione in logica
cablata: attraverso il passaggio di elettricità (definita
attraverso delle condizioni degli input) dal montante di
sinistra verso quello di destra avviene il settaggio degli output
del controllo
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
2
Regole base
1.La corrente può fluire soltanto da sinistra verso destra
2.I rung vengono esplorati dal PLC dal primo in alto all’ultimo
in basso. Di conseguenza l’ordine dei rung è rilevante.
3.La sincronizzazione delle variabili del programma con
ingressi e uscite avviene in questo modo:
1.Lettura ingressi
2.Esecuzione di tutti i rung
3.Aggiornamento uscite
4.Riavvio operazioni
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
3
Elementi del linguaggio Ladder
Contatto
𝑉𝑎𝑟𝐼𝑛
Il contatto è un elemento che porta continuità sul lato destro.
Esso è associato ad una variabile (in questo caso 𝑉𝑎𝑟𝐼𝑛).
Normalmente questo elemento è connesso al montante
sinistro.
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
4
Elementi del linguaggio Ladder
Contatti normalmente aperti – normalmente chiusi
Normalmente aperto
𝑉𝑎𝑟𝐼𝑛
Normalmente chiuso
𝑉𝑎𝑟𝐼𝑛
Il contatto normalmente aperto porta continuità sul lato
destro se il valore di 𝑉𝑎𝑟𝐼𝑛 è 1.
Nella sua versione normalmente chiusa porta continuità se
𝑉𝑎𝑟𝐼𝑛 assume valore 0.
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
5
Elementi del linguaggio Ladder
Contatti a riconoscimento di fronte
Fronte positivo
Fronte negativo
𝑉𝑎𝑟𝐼𝑛
𝑉𝑎𝑟𝐼𝑛
P
N
Il contatto porta continuità a destra solo per il ciclo in cui è
presente un passaggio di fronte di 𝑉𝑎𝑟𝐼𝑛 (da 0 a 1 per i
contatti P, da 1 a 0 per i contatti N)
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
6
Elementi del linguaggio Ladder
Bobina
𝑉𝑎𝑟𝑂𝑢𝑡
La bobina è l’elemento terminale di un’istruzione.
Normalmente questo elemento è connesso al montante
destro e abilita 𝑉𝑎𝑟𝑂𝑢𝑡 in caso di continuità sul pin sinistro
dello stesso.
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
7
Esempio
Esempio contatti + bobine
𝑈=𝐴
𝐴
𝑈
𝑈 =𝐴+𝐵
𝐴
𝑈
𝐵
𝑈 =𝐴∙𝐵
𝐴
𝐵
𝑈
N.B.: in generale trascuriamo nella
parte teorica la dichiarazione delle
variabili, che invece, viene
mostrata nei progetti d’esempio.
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
8
Elementi del linguaggio Ladder
Bobine latch - unlatch
Bobina latch
Bobina unlatch
𝑉𝑎𝑟𝑂𝑢𝑡
𝑉𝑎𝑟𝑂𝑢𝑡
L
U
La bobina latch attiva 𝑉𝑎𝑟𝑂𝑢𝑡 se c’è continuità alla sua
sinistra e lo mantiene attivato anche se viene a mancare (si
disabilita solo se una bobina unlatch comanda 𝑉𝑎𝑟𝑂𝑢𝑡)
N.B.: In Automation Studio si chiamano Set - Reset
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
9
Esempio
Esempio contatti + bobine latch - unlatch
Sviluppare un software che simuli il comportamento di un
flip-flop set-reset
S
R
U
0
0
Uold
0
1
0
1
0
1
1
1
-
𝑆
𝑅
𝑈
L
𝑆
𝑅
𝑈
U
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
10
Elementi del linguaggio Ladder
Temporizzatore
T
𝑁𝑜𝑚𝑒𝑇𝑒𝑚𝑝
𝐷𝑢𝑟𝑎𝑡𝑎
Il temporizzatore è un elemento che esegue una verifica di
durata a partire dall’istante in cui vi è continuità sull’ingresso
sinistro. Al raggiungimento del valore 𝐷𝑢𝑟𝑎𝑡𝑎, 𝑁𝑜𝑚𝑒𝑇𝑒𝑚𝑝
viene settata ad 1. In caso di mancanza di continuità a sinistra
il timer viene resettato (e 𝑁𝑜𝑚𝑒𝑇𝑒𝑚𝑝 settato a 0)
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
11
Elementi del linguaggio Ladder
Temporizzatore a ritenuta
Bobina reset
𝑁𝑜𝑚𝑒𝑇𝑒𝑚𝑝
TR
𝑁𝑜𝑚𝑒𝑇𝑒𝑚𝑝
𝐷𝑢𝑟𝑎𝑡𝑎
RES
Il temporizzatore a ritenuta è analogo al temporizzatore
normale. L’unica differenza è che, in caso di mancata
continuità a sinistra, l’accumulatore non viene resettato ma
mantenuto fisso al valora raggiunto in precedenza. Il reset di
questo temporizzatore è fatto attraverso la bobina a destra
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
12
Esempio
Esempio temporizzatori
Sviluppare un software che attivi l’elettrovalvola U se il
sensore troppo-pieno S resta attivo per più di 10 s e la
mantiene attivata per 30 s
Soluzione 1
Ragioniamo sulla soluzione:
𝑆
𝑈
T
L
𝑇𝑖𝑚𝑒𝑟𝑂𝑁
se S resta alto per più di 40 s
10
Cosa succede?
𝑈
𝑈
T
«Vince» l’ultima istruzione
𝑇𝑖𝑚𝑒𝑟𝑂𝐹𝐹
U
30
 U disabilitato
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
13
Esempio
Esempio temporizzatori
Sviluppare un software che attivi l’elettrovalvola U se il
sensore troppo-pieno S resta attivo per più di 10 s e lo
mantiene attivato per 30 s
Soluzione 2
In questo caso:
𝑆
𝑈
𝑈
T
L
𝑇𝑖𝑚𝑒𝑟𝑂𝑁
Se S resta alto U, dopo 30 s di
10
attivazione si disabilita e riparte
𝑈
𝑈
T
il conteggio di TimerON
𝑇𝑖𝑚𝑒𝑟𝑂𝐹𝐹
U
30
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
14
Elementi del linguaggio Ladder
Contatori
Contatore
CU
𝑁𝑜𝑚𝑒𝐶𝑜𝑛𝑡
𝐹𝑟𝑜𝑛𝑡𝑖𝐷𝑎𝐶𝑜𝑛𝑡
Contatore a ritenuta
CUR
𝑁𝑜𝑚𝑒𝐶𝑜𝑛𝑡
𝐹𝑟𝑜𝑛𝑡𝑖𝐷𝑎𝐶𝑜𝑛𝑡
Il contatore è l’elemento che consente di contare i fronti di
salita dell’ingresso fino al raggiungimento di 𝐹𝑟𝑜𝑛𝑡𝑖𝐷𝑎𝐶𝑜𝑛𝑡,
dopo di che viene attivata l’uscita.
Per quello a ritenuta (valgono le proprietà definite per il
temporizzatore a ritenuta, compreso il reset)
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
15
Elementi del linguaggio Ladder
Contatori a decremento
Contatore a decremento
CD
𝑁𝑜𝑚𝑒𝐶𝑜𝑛𝑡
𝐹𝑟𝑜𝑛𝑡𝑖𝐷𝑎𝐶𝑜𝑛𝑡
Contatore a decremento a ritenuta
CDR
𝑁𝑜𝑚𝑒𝐶𝑜𝑛𝑡
𝐹𝑟𝑜𝑛𝑡𝑖𝐷𝑎𝐶𝑜𝑛𝑡
Il contatore a decremento inizia a contare da 𝐹𝑟𝑜𝑛𝑡𝑖𝐷𝑎𝐶𝑜𝑛𝑡
fino a raggiungere 0; al raggiungimento del valore 0 attiva
l’uscita.
N.B.: in alcuni framework esistono anche contatori U-D
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
16
Esempio
Esempio contatori
Sviluppare un software che avvisa il passaggio del decimo
cliente, utilizzando una fotocellula sull’ingresso
𝐹𝑖𝑛
CU
𝐶𝑜𝑛𝑡10
10
𝐷𝑒𝑐𝑖𝑚𝑜
L
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
17
Istruzioni di controllo del flusso
Salto ad etichetta
Si spiega meglio con un esempio
𝐴
𝑇ℎ𝑒𝑛
JMP
𝐶
if(A) {
𝑈
𝐸𝑛𝑑𝐼𝑓
U = B;
𝑇ℎ𝑒𝑛
}
else {
JMP
LBL
𝐵
𝑈
U = C;
}
𝐸𝑛𝑑𝐼𝑓
LBL
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
18
Istruzioni di controllo del flusso
Salto a subroutine
𝐿𝑎𝑏𝑒𝑙
JSR
.
.
.
𝐿𝑎𝑏𝑒𝑙
JSR
𝐿𝑎𝑏𝑒𝑙
.
.
.
SBR
Subroutine
RET
N.B.: in Automation Studio
non è presente questo tipo
di salti
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
19
Istruzioni aritmetico - logiche
Operazioni aritmetiche / logiche
Se al blocco giunge corrente
le variabili 𝑂𝑝𝑒𝑟𝑎𝑛𝑑𝑜1 e 𝑂𝑝𝑒𝑟𝑎𝑛𝑑𝑜2
vengono sommate e il risultato viene
posto nella variabile 𝑅𝑖𝑠𝑢𝑙𝑡𝑎𝑡𝑜
ADD
𝑂𝑝𝑒𝑟𝑎𝑛𝑑𝑜1
𝑂𝑝𝑒𝑟𝑎𝑛𝑑𝑜2
𝑅𝑖𝑠𝑢𝑙𝑡𝑎𝑡𝑜
Oltre ad ADD esistono: SUB, MUL, DIV, AND, OR, ecc…
N.B.: Alcuni PLC consentono di trattare solo numeri interi,
altri anche numeri reali, il tipo è definito nel file .var
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
20
Istruzioni di comparazione
Operazioni di confronto
Se al blocco giunge corrente
le variabili 𝑂𝑝𝑒𝑟𝑎𝑛𝑑𝑜1 e 𝑂𝑝𝑒𝑟𝑎𝑛𝑑𝑜2
vengono confrontate, se 𝑂𝑝𝑒𝑟𝑎𝑛𝑑𝑜1
> 𝑂𝑝𝑒𝑟𝑎𝑛𝑑𝑜2 allora si abilita la continuità
a destra
GRT
𝑂𝑝𝑒𝑟𝑎𝑛𝑑𝑜1
𝑂𝑝𝑒𝑟𝑎𝑛𝑑𝑜2
Oltre ad GRT esistono: EQU, NEQ, GEQ, LEQ, LES, ecc…
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
21
Esempio
Operazioni «non booleane»
Sviluppare un software che, ricevendo in ingresso un segnale
analogico a 10 bit (0 ÷ 1024), scali il segnale con offset 512 e
gain 10/512 e alzi un flag di allarme se la misura, in modulo,
supera il valore 5.
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
22
Istruzioni aggiuntive
Istruzioni / blocchi aggiuntivi
• MOVE  Setta il valore di una variabile non booleana
• ADR  Restituisce l’indirizzo di una variabile
• SIZEOF  Restituisce la dimensione di una variabile in byte
• PID  Consente di integrare un controllore modulante PID
•…
Università degli Studi di Bergamo, Automazione Industriale, A.A. 2014/2015, A. L. Cologni
23