unita` 3 automazione

Transcript

unita` 3 automazione
ITIS G. CARDANO
PREMESSA
In questa lezione analizziamo le diverse modalità di programmazione del PLC, soffermandoci in
particolare sulle programmazioni KOP e AWL.
MODALITA’ DI PROGRAMMAZIONE DEI PLC
Durante il processo di programmazione del PLC viene utilizzata una interfaccia tra l’operatore che
deve organizzare la logica di comando e la CPU presente nel controllore. Questa interfaccia
permetterà all’operatore di tradurre il processo in una serie di codici equivalenti alle espressioni delle
equazioni logiche booleane che il controllore dovrà utilizzare per stabilire il valore delle uscite in
base a quello degli ingressi.
Ogni casa costruttrice utilizza un ambiente di programmazione proprietario ed anche le istruzioni
disponibili possono essere diverse a seconda del PLC impiegato. L’organismo internazionale IEC
(International Electrotechnical Commission), pertanto, ha sentito la necessità di introdurre uno
standard che potesse permettere una più facile convergenza tra i diversi costruttori nello sviluppo di
software per la programmazione. La norma di riferimento, la IEC 1131, è stata ripresa dalla comunità
europea con la normativa EN 61131 e successivamente riportata dalla norma italiana CEI 65-40.
Nella parte terza della normativa IEC vengono definiti i cinque differenti linguaggi di
programmazione:
LINGUAGGI DI PROGRAMMAZIONE
GRAFICI
Linguaggio a contatti
Ladder Diagram (LD)
Diagramma a blocchi funzionali
Function Block Diagram (FBD)
Diagramma Funzionale Sequenziale
Sequential Function Charts (SFC)
Lista di istruzioni
Instruction List (IL)
Testo strutturato
Structured Text (ST)
TESTUALI
L’aspetto è la caratteristica che differenzia sostanzialmente tra loro i diversi linguaggi. I primi tre
vengono definiti grafici visto che si basano su software che permettono all’operatore di programmare
il PLC mediante la costruzione di diagrammi e grafici che in qualche modo ricalcano la struttura dei
diagrammi a relè dei circuiti elettromeccanici o gli schemi elettrici dei circuiti logici integrati. I
secondi sono definiti testuali poiché si basano su un linguaggio puramente testuale di livello basso o
alto a seconda della tipologia adottata.
Gli ambienti di programmazione normalmente permettono di mescolare i linguaggi di
programmazione adottati internamente ad un progetto in modo da poter sfruttare le peculiarità di
ciascuno di essi.
Ogni costruttore, inoltre, stabilisce i nomi degli indirizzi degli elementi del PLC e danno queste
indicazioni agli operatori per poter predisporre nella programmazione i segnali corretti.
La tabella riportata sotto può dare una idea delle diversità presenti tra le diverse case costruttrici e
permetterà di comprendere meglio gli esempi che saranno riportati successivamente nella trattazione
dei diversi linguaggi di programmazione.
With the support of the Lifelong Learning Programme of the European
Union. This project has been funded with support from the European
Commission.
1
ITIS G. CARDANO
OPERANDI
DEI PLC
SIEMENS
S7 300 (CPU 314C-2 DP)
SIEMENS
S7 200 (CPU 226)
OMRON
CJ1M (CPU 21)
Nr.
da
A
Nr.
da
a
Nr.
da
a
Ingressi Digit.
24
E124.0
E126.7
24
I0.0
I1.0
I2.0
I0.7
I1.7
I2.7
10
000
009
Uscite Digit.
16
A124.0
A125.7
16
Q0.0
Q1.0
Q0.7
Q1.7
6
100
105
2048
M0.0
M255.7
256
M0.0
M0.255
¥
1000
1015
256
Z0
Z255
256
C0.0
C0.255
512
CNT000
CNT511
256
T0
T255
256
T0.0
T0.255
512
TIM000
TIM512
Relé interni
(memorie)
Contatori
Timer
LADDER DIAGRAM (LD)
Il Ladder Diagram (LD) detto anche Linguaggio a contatti o KOP è un linguaggio grafico che si
presenta composto da una sequenza di rami formati da una parte decisionale (contatti) a sinistra ed
una parte attuativa (bobine) a destra compresi tra due linee di alimentazione verticali. Questa
disposizione della struttura genera una rappresentazione grafica che ricorda una scala a pioli (ladder)
e proprio da questa similitudine ne deriva il nome.
Il Ladder Diagram è un metodo di programmazione che riproduce gli schemi realizzati nei circuiti
elettromeccanici e si basa su di un flusso di corrente elettrica che attiva le bobine solo quando le
condizioni dei contatti nella parte decisionale ne permette il passaggio. La normativa IEC 1131
prevede, inoltre, che questo flusso di corrente sia ipotizzato da sinistra verso destra nel rung (piolo) e
che la logica sia eseguita dall’alto verso il basso, accrescendo così il valore dell’ordine dei rung.
La nascita di questo linguaggio di programmazione è storicamente legata all’esigenza di far
accettare l’idea di programmare, e quindi utilizzare i PLC, a chi tradizionalmente era abituato a
realizzare le logiche di controllo con i relè elettromeccanici.
Il blocco di decisione equivale alla espressione logica che determina l’attivazione della bobina di
uscita (interna o esterna) ed è formato da una combinazione di elementi logici (AND, OR, NOT)
realizzati seguendo uno schema a contatti. In corrispondenza dei contatti e delle bobine si
indicheranno gli indirizzi degli elementi che rappresentano.
I simboli utilizzati per la programmazione sono:
SIMBOLO
TIPOLOGIA
FUNZIONAMENTO
Contatto normalmente aperto (N.A.)
INGRESSO
Il contatto fa passare corrente se
l’ingresso associato ha valore 1
Contatto normalmente chiuso (N.C.)
INGRESSO
Il contatto fa passare corrente se
l’ingresso associato ha valore 0
Bobina monostabile
USCITA
Si attiva e rimane attiva solo quando
le condizioni logiche dei contatti
garantiscono la continuità elettrica
With the support of the Lifelong Learning Programme of the European
Union. This project has been funded with support from the European
Commission.
2
ITIS G. CARDANO
Bobina a ritenuta bistabile (SET)
Bobina a ritenuta bistabile (RESET)
USCITA
Si attiva quando le condizioni logiche
dei contatti garantiscono la continuità
elettrica
USCITA
Si disattiva quando le condizioni
logiche dei contatti garantiscono la
continuità elettrica
Collegamento in serie
Funzione logica AND
Collegamento in parallelo
Funzione logica OR
Temporizzatore
Attiva l’uscita con un certo ritardo
(TV) rispetto all’inserzione
condizionata (Start). Presenta a volte
un ingresso di reset (Stop)
Contatore bidirezionale
Attiva l’uscita quando il conteggio
arriva al valore impostato (PV).
Presenta un canale per incrementare il
valore (Up), uno per il decremento
(Down) ed uno per il Reset
Vediamo alcuni esempi di programmazione KOP:
Siemens S7: l’uscita Q0.0 si attiva quando è presente il
segnale di ingresso I0.0
Siemens S7: l’uscita Q0.1 si attiva quando sono
contemporaneamente presenti i segnali di ingresso I0.0 e
I0.1
Siemens S7: l’uscita Q0.1 si attiva quando è presente il
segnale di ingresso I0.0 e contemporaneamente è assente
il segnale di ingresso I0.1
Omron: l’uscita 200 è attiva quando è presente o il
segnale di ingresso 010 o il segnale di ingresso 002
With the support of the Lifelong Learning Programme of the European
Union. This project has been funded with support from the European
Commission.
3
ITIS G. CARDANO
Omron: l’uscita 100 è attiva quando è presente il segnale
di ingresso 010 o non è presente il segnale di ingresso 002
Omron: l’uscita 100 è attiva quando sono è presente il
segnale 010 o manca il segnale 004 e
contemporaneamente manca il segnale 002 o è presente il
segnale 005
Omron: l’uscita 100 è attiva quando è presente il segnale
010 e manca il segnale 002 oppure quando manca il
segnale 004 ed è presente il segnale 005.
FUNCTION BLOCK DIAGRAM (FBD)
I Diagrammi a blocchi funzionali sono un linguaggio di programmazione grafico. Questo
linguaggio è basato su una rappresentazione delle leggi di attivazione delle uscite ottenute facendo
passare dei segnali (condizioni) attraverso dei blocchi grafici interconnessi tra loro e ciascuno dotato
di specifiche regole di trasformazione del segnale. Ogni blocco funzionale ha perciò due
caratteristiche principali: il tipo di dati in ingresso ed uscita e l’algoritmo che analizzando il valore
degli ingressi e delle variabili interne produce i nuovi valori delle uscite.
Questo metodo di programmazione si basa su tre regole sintattiche fondamentali:
- nessun elemento deve essere analizzato prima che siano stati acquisiti i valori di tutti i propri
ingressi
- la valutazione di un elemento non sarà completo finché non sono stati determinati i valori di
tutte le sue uscite
- la valutazione complessiva della rete termina quando tutte le uscite di tutti i suoi elementi
sono state determinate.
Un esempio di programmazione FBD può essere lo schema riportato sotto:
I0.0
I0.1 &
I0.2
I0.3
1
Q2.5
L’uscita Q2.5 è attiva quando sono presenti
contemporaneamente i segnali I0.0 e I0.1 o
quando è presente il solo segnale I0.3 o manca
il solo segnale I0.2.
1
With the support of the Lifelong Learning Programme of the European
Union. This project has been funded with support from the European
Commission.
4
ITIS G. CARDANO
SEQUENTIAL FUNCTION CHARTS (SFC)
Il Diagramma Funzionale Sequenziale si basa su una rappresentazione grafica del processo tramite
una sequenza di fasi (entro cui si eseguono le azioni), legate tra loro dalle transizioni (con cui, al
verificarsi di certe condizioni, si passa da una fase attiva ad un’altra).
Questo metodo di programmazione serve solo a dare una vista generale del sistema e consente di
realizzare delle sequenze di fasi in parallelo o eventualmente con delle priorità e di inserire delle
sequenze di retroazione. Non permette di programmare nello specifico le fasi o le condizioni di
transizione, perciò essa andrà effettuata successivamente con uno degli altri linguaggi di
programmazione.
Un esempio di struttura di programma SFC può essere lo schema riportato sotto:
Fase
0
Transizione
a
1
Azione 1
2
Azione 2 Azione 3
b
c
3
Azione 4
d
5
Azione 6
6
Azione 7
Sequenze
simultanee
e
4
Azione 5
f
7
Azione 8
g
INSTRUCTION LIST (IL)
L’Instruction List (detto anche AWL) è un linguaggio di programmazione testuale a basso livello.
Vista la sua maggior complessità viene usato principalmente per programmare piccole applicazioni
o per migliorare parti di una applicazione più complessa.
E’ un linguaggio di tipo assemblativo e come tale si basa su di una sintassi del tipo:
operatore operando
I principali operatori variano a seconda della casa costruttrice del PLC.
Un esempio di operatori è rappresentato nella tabella riportata:
OPERATORI
SIEMENS
OMRON
Descrizione
Inizio linea logica
UoO
LD
Contatto d'ingresso NA
Inizio linea negata
UN o ON
LN NOT
Contatto d’ingresso NC
Assegnazione
=
OUT
Attivazione bobina non
ritentiva
Assegnazione tipo Flip-Flop SR
S
KEEP
Attivazione bobina ritentiva
With the support of the Lifelong Learning Programme of the European
Union. This project has been funded with support from the European
Commission.
5
ITIS G. CARDANO
Disattivazione bobina
ritentiva
Assegnazione tipo Flip-Flop SR
R
Congiunzione
U
AND
Collegamento in serie con un
secondo contatto N.A.
Congiunzione negata
UN
AND NOT
Collegamento in serie con un
secondo contatto N.C.
Disgiunzione
O
OR
Collegamento in parallelo
con un secondo contatto
N.A.
Disgiunzione negata
ON
OR NOT
Collegamento in parallelo
con un secondo contatto
N.C.
Collegamento in serie tra gruppi
U(
…
)
AND LD
Collegamento in serie tra due
gruppi precedentemente
definiti
Collegamento in parallelo tra
gruppi
O
OR LD
Collegamento in parallelo tra
due gruppi precedentemente
definiti
Attivazione temporizzatore
L KT T
TIM
Attivazione temporizzatore
Incremento contatore
ZV L KZ
CNT
Incrementa di una unità il
valore del contatore
Fine programma
BE
END (FUN
01)
Fine programma
Come esempio di programmazione AWL vediamo la traduzione della programmazione KOP
precedentemente vista per un PLC Omron:
U
=
I0.0
Q0.0
(Siemes)
U
U
=
I0.0
I0.1
Q0.1
(Siemens)
U
UN
=
I0.0
I0.1
Q0.1
(Siemens)
LD
010
OR 002
OUT 200
(Omron)
With the support of the Lifelong Learning Programme of the European
Union. This project has been funded with support from the European
Commission.
6
ITIS G. CARDANO
LD
OR NOT
OUT
010
002
100
(Omron)
LD
OR NOT
LD NOT
OR
AND LD
OUT
010
004
002
005
(Omron)
(risultato intermedio A)
LD
AND NOT
LD NOT
AND
OR LD
OUT
010
002
004
005
(risultato intermedio B)
(A*B)
100
(Omron)
(risultato intermedio A)
(risultato intermedio B)
(A+B)
100
STRUCTURED TEXT (ST)
Lo Structured Text è un linguaggio di programmazione testuale ad alto livello simile al Pascal o
ad alcuni Basic. Il vantaggio di questa modalità di programmazione è evidente quando occorre
realizzare complesse elaborazioni matematiche o test condizionali con molteplici alternative. In
questi casi la programmazione con ST si riduce a poche righe di programma.
Questo tipo di programmazione prevede sempre prima la dichiarazione delle variabili e
successivamente il codice delle operazioni da effettuare per controllare le uscite.
Un esempio di codice scritto in ST potrebbe essere:
IF Velocita > 1000 THEN
Tensione := Tensione - 10;
END_IF
Q0.1 := 1;
In questo codice viene posta una condizione sulla variabile Velocita ed in base a questa viene
ridefinito il valore di una seconda variabile Tensione. Nella parte finale del codice viene assegnato
il valore 1 all’uscita Q0.1.
With the support of the Lifelong Learning Programme of the European
Union. This project has been funded with support from the European
Commission.
7