Uploaded by armando manfredi

Corso Programmazione PLC

advertisement
CORSO
PROGRAMMAZIONE PLC
MATERIALE DIDATTICO
A cura di:
Ing. Biase D’Agostino
Ing. Giuseppe Picardi
M.G.A. Servizi industriali – “Corso di programmazione PLC”
CAPITOLO 1
Algebra Booleana
2
M.G.A. Servizi industriali – “Corso di programmazione PLC”
Calcolatore come rete logica
Il calcolatore può essere visto come una rete logica cioè come un insieme di dispositivi
chiamati porte logiche opportunamente connessi.
Le porte logiche sono dispositivi capaci di eseguire operazioni logiche su segnali binari.
I segnali binari sono livelli di tensione. Il valore esatto della tensione del segnale non è
significativo: conta l’appartenenza ad un livello contrassegnato alto e ad un livello
contrassegnato basso.
Questi livelli sono identificati tramite una coppia di simboli:
0
Low
False
Open
1
High
True
Close
Algebra Booleana
Le tecniche di composizione delle porte logiche in una rete sono derivate da una particolare
algebra operante su variabili binarie e chiamata Algebra Booleana (o Switching Algebra).
L’algebra Booleana prende il nome dal matematico inglese Gorge Boole (1815-1864). A lui
`e legato lo sviluppo della logica simbolica e degli operatori binari. Nel 1938 Shannon ha
dimostrato come l’algebra booleana potesse essere presa a fondamento per la progettazione
di circuiti logici digitali.
Elementi dell’algebra booleana
Vengono definiti i seguenti concetti:
• variabili booleane
• operatori booleani
• funzioni booleane
• porte logiche
• circuiti logici
- combinatori
- sequenziali
Una variabile booleana è una variabile binaria che può assumere esclusivamente due valori
logici che saranno denotati con 0 e 1.
Se x è una variabile booleana, vale quindi la seguente definizione formale:
x = 0 se x è diverso da 1
x = 1 se x è diverso da 0
Si definiscono gli operatori booleani o logici fondamentali:
NOT Negazione Logica
AND Prodotto Logico
OR
Somma Logica
3
M.G.A. Servizi industriali – “Corso di programmazione PLC”
Negazione o Complementazione
Definizione informale
Trattasi di un’operazione unaria che restituisce il valore logico
opposto a quello della variabile di ingresso.
Rappresentazione come operatore
Per rappresentare il complemento di una variabile x sono usate varie notazioni. Fra le più
comunemente usate ricordiamo:
• not(x)
• x
• x’
• -x
Rappresentazione dell’operazione not(x) con la tavola della verità:
x
0
not(x)
1
1
0
Proprietà
not(not(x)) = x
1=1
0=1=0=1
Prodotto Logico (AND)
Definizione informale
L’operazione di prodotto logico fra due (o più) variabili fornisce il valore logico 1 se e solo
se tutte le variabili assumono valore logico 1.
Rappresentazione come operatore
Per rappresentare il prodotto logico di due variabili x e y si usa la notazione:
•
•
•
x and y
x*y
xy
Rappresentazione dell’operazione x * y con la tavola della verità:
x
0
0
1
1
4
y
0
1
0
1
x*y
0
0
0
1
M.G.A. Servizi industriali – “Corso di programmazione PLC”
Proprietà:
x*0=0
x*1=x
x*x=x
x*x=0
Somma Logica (OR)
Definizione informale
L’operazione di somma logica fra due (o più) variabili fornisce il valore logico 1 se e solo se
almeno una delle variabili assume valore logico 1.
Rappresentazione come operatore
Per rappresentare la somma logica di due variabili x e y si usa la notazione:
•
•
x or y
x+y
Rappresentazione dell’operazione x + y con la tavola della verità:
x
0
0
1
1
y
0
1
0
1
x+y
0
1
1
1
Proprietà:
x+0=x
x+1=1
x+x=x
x+x=1
Porte Logiche
Le porte logiche sono dispositivi elettronici capaci di eseguire operazioni logiche su variabili
booleane.
5
M.G.A. Servizi industriali – “Corso di programmazione PLC”
Porta AND
Alcune proprietà della porta AND:
A*0=0
A*1=A
A*A=A
A*A=0
6
M.G.A. Servizi industriali – “Corso di programmazione PLC”
Porta OR
Alcune proprietà della porta OR:
A+0=A
A+1=1
A+A=A
A+A=1
Proprietà dell’algebra Booleana
Le proprietà degli operatori logici NOT, AND e OR, permettono di stabilire le seguenti
proprietà:
•
Idempotenza
x + x= x
x* x = x
•
Elemento nullo (forcing function)
x + 1=1
x * 0=0
7
M.G.A. Servizi industriali – “Corso di programmazione PLC”
•
Proprietà Commutativa
x + y = y+x
x* y= y*x
•
Proprietà Associativa
x + (y + z) = (x + y) + z = x + y + z
x * (y * z) = (x * y) * z = x * y * z
Le proprietà che valgono per l’operatore + valgono anche per l’operatore * purchè si
scambino gli 1 con gli 0 (e viceversa).
Teoremi dell’algebra Booleana
•
Distributività
La proprietà distributiva vale sia rispetto alla somma di prodotti (come nell’algebra
ordinaria) che rispetto al prodotto di somme.
x * y + x * z = x * (y + z)
(x + y) * (x + z) = x + y * z
Verifica dei teoremi di distributività mediante la tavola della verità.
x
0
0
0
0
1
1
1
1
•
y
0
0
1
1
0
0
1
1
z
0
1
0
1
0
1
0
1
xy
0
0
0
0
0
0
1
1
xz xy+xz
0
0
0
0
0
0
0
0
0
0
1
1
0
1
1
1
y+z x(y+z) x+y
0
0
0
1
0
0
1
0
1
1
0
1
0
0
1
1
1
1
1
1
1
1
1
1
x+z
0
1
0
1
1
1
1
1
De Morgan
x*y=x+y
x+y=x*y
Operazione di NAND Logico
Definizione informale
L’operazione di nand logico `e l’operazione negata dell’operazione and.
Il simbolo nand è una contrazione di not and.
8
x+y*z
0
0
0
1
1
1
1
1
M.G.A. Servizi industriali – “Corso di programmazione PLC”
Quindi l’operazione di nand logico fra due (o più) variabili fornisce il valore logico 1 se
almeno una delle variabili assume il valore logico 0.
Rappresentazione come operatore
Per rappresentare il nand logico non esiste un simbolo specifico.
x nand y
Rappresentazione dell’operazione x nand y con la tavola della verità:
x
0
0
1
1
y
0
1
0
1
x nand y
1
1
1
0
Proprietà:
x nand 0 = 1
x nand 1 = x
x nand x = x
x nand x = 1
x nand y = x * y
Con il solo operatore NAND, si possono rappresentare gli operatori NOT, AND e OR.
9
M.G.A. Servizi industriali – “Corso di programmazione PLC”
Operazione di NOR logico
Definizione informale
L’operazione di nor logico è l’operazione negata dell’operazione or.
Il simbolo nor `e una contrazione di not or.
Quindi l’operazione di nor logico fra due (o più) variabili fornisce il valore logico 1 se
nessuna delle variabili assume il valore logico 1.
Rappresentazione come operatore
Per rappresentare il nor logico non esiste un simbolo specifico.
x nor y
_
Rappresentazione dell’operazione x nor y con la tavola della Verità:
x
0
0
1
1
y
0
1
0
1
x nor y
1
0
0
0
Proprietà:
x nor 0 = x
x nor 1 = 0
x nor x = x
x nor x = 0
x nor y = x + y
Con il solo operatore NOR, si possono rappresentare gli operatori NOT, AND e OR.
10
M.G.A. Servizi industriali – “Corso di programmazione PLC”
Operazione di OR Esclusivo (xor)
Definizione informale
L’operazione di or esclusivo (xor) fra due (o più) variabili fornisce il valore logico 1 se il
numero delle variabili che assumono valore logico 1 `e dispari.
Rappresentazione come operatore
Per rappresentare l’operatore xor si usa comunemente la seguente notazione:
x
y
x xor y
_
_
Rappresentazione dell’operazione x xor y con la tavola della Verità:
11
M.G.A. Servizi industriali – “Corso di programmazione PLC”
x
0
0
1
1
y
0
1
0
1
x xor y
0
1
1
1
Proprietà:
x
x
x
x
x
0=x
1=x
x=0
x=1
y=x
y= x* y+x*y
l’operatore xor può essere visto come un
• comparatore di uguaglianza:
IF X = Y
•
THEN
ELSE
X
X
Y =0
Y=1
X
X
Y=Y
Y=Y
invertitore controllato:
IF X = 0
THEN
ELSE
Funzioni Logiche
Le funzioni logiche sono ottenute dalla composizione di operazioni logiche.
Una funzione di variabili logiche X, Y , Z, …
= F(X; Y; Z; …)
ha come dominio il prodotto cartesiano delle sue variabili, e come immagine una variabile
logica.
è una variabile logica {0; 1}
Tavola della verità di funzioni logiche
La tavola della verità di una funzione logica si ottiene valutando il valore di verità della
funzione in corrispondenza di tutte le possibili combinazioni delle sue variabili.
Se la funzione
dipende da n variabili logiche, la tavola della verità avrà 2n righe.
x
0
…
1
12
y
0
…
1
z
0
…
1
…
…
…
…
F(x y z…)
{0,1}
{0,1}
{0,1}
M.G.A. Servizi industriali – “Corso di programmazione PLC”
Minterm di funzioni logiche
Il minterm di ordine i di una funzione di n variabili `e una funzione prodotto delle n variabili
in forma diretta o in forma negata che vale 1 in corrispondenza alla sola combinazione i delle
variabili.
Nel minterm di ordine i compaiono in forma diretta le variabili il cui valore `e 1 nella tavola
della verità e compaiono in forma negata le variabili il cui valore `e 0 nella tavola della verità
x
0
0
1
1
y
0
1
0
1
minterm
xy
xy
xy
xy
Forma canonica SP
La forma canonica Somma di Prodotti (SP) di una funzione logica si ottiene sommando i
minterm in corrispondenza dei quali la funzione vale 1.
ESEMPIO:
Data la funzione F espressa dalla seguente tavola della verità:
x
0
0
0
0
1
1
1
1
y
0
0
1
1
0
0
1
1
z
0
1
0
1
0
1
0
1
F
1
0
0
1
1
0
1
0
minterm
x y z
x y z
x y z
x y z
F(x,y,z) = x y z + x y z + x y z + x y z
Logica a due livelli
Se si trascura l’operatore not (cioè si suppone che ogni variabile sia disponibile in forma
diretta e in forma negata), qualunque funzione logica può essere rappresentata con una rete
logica a due
livelli.
Esempio:
Date tre variabili a, b e c, si definisce funzione di maggioranza F(a; b; c) la funzione che
vale 1 quando la maggioranza delle variabili vale 1.
La funzione di maggioranza ha la seguente forma canonica SP:
13
M.G.A. Servizi industriali – “Corso di programmazione PLC”
a
0
0
0
0
1
1
1
1
b
0
0
1
1
0
0
1
1
c
0
1
0
1
0
1
0
1
F
0
0
0
1
0
1
1
1
minter
a b c
a b c
a b c
a b c
F(a; b; c) = a b c + a b c + a b c + a b c
La rete logica corrispondente alla funzione di maggioranza in forma canonica SP ha la
seguente struttura:
14
M.G.A. Servizi industriali – “Corso di programmazione PLC”
CAPITOLO 2
Introduzione al PLC
15
M.G.A. Servizi industriali – “Corso di programmazione PLC”
L’automazione
L'automazione dei processi industriali
L'automazione industriale può essere definita come la disciplina che studia le metodologie e
le tecnologie che permettono il controllo dei flussi di energia, di materiali e di informazioni
necessari alla realizzazione di processi produttivi,senza che sia richiesto l'intervento
dell’uomo. Il termine “automazione" fu utilizzato per la prima volta nel 1946 dalla Ford
motori negli USA per qualificare il suo ciclo di produzione dei motori.
Un'automazione molto flessibile, come quella moderna, è necessaria per le attuali condizioni
di produzione, che spingono verso ciò che si può definire una "personalizzazione di massa".
Prima dell'era industriale la produzione era artigianale e come tale risultava essere molto
personalizzabile. L'avvento dell'industrializzazione e della produzione di massa rese
necessariamente i prodotti uniformi (si ricordi la celebre frase di Henry Ford: "Voi potete
avere qualsiasi colore preferiate, a patto che sia nero"). Si è poi passati a una fase in cui alla
produzione di massa si è affiancata una varietà maggiore delle caratteristiche dei prodotti, per
giungere alla fase attuale, in cui si vuole avere una notevole varietà delle caratteristiche
realizzando, appunto, la "personalizzazione di massa". L’importanza dell’automazione nei
processi produttivi moderni deriva, inoltre da una molteplicità di altri fattori, non solo
economici, tra cui si ricordano:
•
Il miglioramento della qualità dei prodotti;
•
La possibilità di utilizzare lo stesso impianto per più prodotti (concetto di
flessibilità della produzione);
•
L'abbreviamento dei tempi di produzione;
•
La possibilità di ridurre i magazzini in ingresso e in uscita;
•
La drastica riduzione degli scarti di lavorazione;
•
Il minor costo della produzione;
•
La necessità di conformarsi a leggio regolamenti che impedirebbero una
produzione manuale (soprattutto nell'industria farmaceutica e alimentare);
•
La possibilità di ridurre l'impatto ambientale e di risparmiare energia;
•
Il miglioramento della competitività dell'azienda nel suo complesso.
Si vuole adesso cercare di definire meglio cosa si intende per "sistema,di controllo"
nell',ambito dell'automazione industriale. In generale, in un sistema automatizzato possono
essere individuati il processo fisico e il sistema di controllo.
Un processo fisico può essere definito come una combinazione di operazioni che agiscono su
entità appartenenti al mondo fisico cambiandone alcune caratteristiche. Le azioni di
movimento, le lavorazioni meccaniche, le reazioni chimiche, lo scorrere di flussi energetici
sono alcune delle operazioni che soddisfano tale definizione e che possono essere
considerate, quindi, dei processi fisici; conte tali, sono dunque oggetto dell'automazione. Il
puro trattamento di informazioni, d'altra
parte, non apporta cambiamenti al mondo reale e non può quindi essere considerato un
processo fisico.
16
M.G.A. Servizi industriali – “Corso di programmazione PLC”
Modello di un sistema automatizzato
Un processo fisico riceve in ingresso dei materiali, sotto forma di prodotti grezzi, e
dell'energia; riceve, inoltre, dal sistema di controllo delle informazioni sotto varie forme,
quali valori di tensione o di corrente elettrica, di pressione di un fluido, oppure sequenze di
valori binari codificati. Il processo produce in uscita materiali sotto forma di prodotti finiti
scarti, ed energia; invia inoltre delle informazioni al sistema di controllo. Anche i disturbi
provenienti dall'ambiente che agiscono sul processo si possono considerare conte ingressi del
processo, ovviamente non modificabili a piacere.
Le informazioni in uscita sono fornite da appositi dispositivi formati da un componente detto
sensore, il quale trasforma la variabile da misurare nel tipo di grandezza che si adotta per la
misura, e da un componente detto trasduttore, il quale accetta un'informazione sotto forma di
variabile fisica o chimica e la converte in una grandezza di differente natura, tipicamente
elettrica, adatta a essere trasmessa. Molto spesso sensore e trasduttore coincidono nello stesso
elemento, e questa è la ragione per cui si parla genericamente di "sensore" (o di "trasduttore")
per indicare un dispositivo che misura una grandezza dando in uscita un segnale,
generalmente di tipo elettrico, a essa relazionato.
Le informazioni in entrata sono utilizzate dagli attuatori per alterare il valore di variabili di
controllo per il processo. Di solito gli attuatori veri e propri, detti anche elementi finali di
controllo, sono preceduti dai pre-attuatori, i quali provvedono a realizzare le conversioni
delle informazioni e le amplificazioni di potenza. Per esempio, una valvola è il dispositivo
finale di controllo per la portata di un fluido in un tubo mentre il motore elettrico che la
movimenta, insieme al suo azionamento, è il pre-attuatore.
I sensori, gli attuatori e i pre-attuatori possono essere considerati come facenti parte del
processo fisico e ne costituiscono l'interfaccia verso il sistema di controllo.
Il sistema di controllo, quindi riceve informazioni sullo stato del processo tramite i sensori,
le elabora secondo algoritmi specificati, e invia agli attuatori le informazioni relative alle
azioni da mettere in atto per realizzare il controllo del processo fisico. A tale scopo esso
riceve anche informazioni da una o più entità esterne, le quali possono essere degli operatori
umani o altri sistemi di controllo gerarchicamente superiori; inoltre è in grado di fornire a
queste entità esterne informazioni sul suo stato e su quello del processo controllato.
Risulta quindi evidente, nella rappresentazione che si è fatta del sistema di controllo, che esso
riceve, elabora e invia informazioni, pertanto deve essere considerato come un sistema per il
17
M.G.A. Servizi industriali – “Corso di programmazione PLC”
trattamento delle informazioni, ossia un sistema informatico. Un sistema di controllo è,
quindi, un'applicazione di quella che oggi è definita tecnologia dell'informazione e della
comunicazione (ICT, Information and Comunication Technology)
Sistema di controllo e misura di un processo industriale
Una definizione più rigorosa di ciò che si intende con "sistema per il controllo di processi e
di acquisizione dati" è presente in una proposta di standard internazionale per l'automazione
distribuita. Secondo tale proposta, un sistema di controllo di misura di un processo
industriale può essere descritto come un insieme di dispositivi interconessi e comunicanti tra
loro attraverso una o più reti di comunicazione. Tali reti di comunicazione possono
eventualmente avere una relazione gerarchica tra loro. Una funzionalità espletata da un tale
sistema è modellata come un'applicazione che può risiedere in un singolo dispositivo, come
l'applicazione C in figura, o essere distribuita tra diversi dispositivi, come le applicazioni A e
B nella stessa figura. Per esempio, un' applicazione può consistere nella chiusura di, uno o
più anelli di controllo dove l'acquisizione delle misure è realizzata da un dispositivo,
l'algoritmo di controllo da un altro, e l'invio dei comandi per il controllo da un altro ancora.
Modello di un sistema di controllo
Il dispositivo è definito come un'entità fisica indipendente capace di realizzare una o più
applicazioni, o parti di applicazioni, ed è limitato dalle sue interfacce, ossia dai componenti
hardware e software che gli permettono di comunicare con l'esterno. Come illustrato in
Figura, un dispositivo deve contenere almeno una risorsa e almeno un'interfaccia, intesa o
verso il processo (interfaccia di processo) o verso la rete di comunicazione (interfaccia di
comunicazione).
Una risorsa può essere considerata una suddivisione logica della struttura software (ed
eventualmente hardware) di un dispositivo il quale abbia un controllo indipendente delle sue
operazioni. Una risorsa può quindi essere creata, configurata, parametrizzata, fatta partire,
cancellata senza condizionare altre risorse nello stesso dispositivo. Si noti che tale
definizione comprende il caso di elaborazione multitasking su sistemi con uno o più
processori.
18
M.G.A. Servizi industriali – “Corso di programmazione PLC”
La funzione di una risorsa è di accettare dati e/o eventi dal processo e/o dalla rete di
comunicazione, di processarli, di restituire dati e/o eventi al processo e/o alla rete di
comunicazione, così come specificato dall'applicazione che la sta utilizzando. In una risorsa
devono essere presenti: una o più applicazioni locali, o parti di applicazioni distribuite, che
processano dati ed eventi interni; funzioni che collegano i dati e gli eventi da e verso il
processo e/o la rete di comunicazione con quelli interni; una funzione di pianificazione delle
attività (per esempio ciclica) per il coordinamento tra queste funzionalità.
Modello di un dispositivo
I dati sono delle rappresentazioni di fatti o concetti espresse in una maniera formalizzata
adatta alla comunicazione, all'interpretazione o al trattamento da parte della risorsa; un
esempio di dato è il codice binario corrispondente a una misura.
Gli eventi rappresentano l'occorrenza di particolari condizioni come, per esempio, il
raggiungimento di una determinata temperatura o la segnalazione di una fotocellula.
Un'applicazione specifica le operazioni che devono essere svolte sui dati come conseguenza
degli eventi e, come si è detto, può essere distribuita tra molte risorse nello stesso o in
differenti dispositivi. Una risorsa determina le risposte a eventi interni, di processo o di
comunicazione mediante le relazioni causali specificate dall' applicazione, o dalla parte di
applicazione, che la utilizza. Esempi di risposte possono essere: l'esecuzione di operazioni, la
pianificazione di operazioni, la modifica di variabili, la generazione di eventi addizionali,
l'interazione con le interfacce di processo c di comunicazione.
Un'interfaccia di processo mette in relazione le risorse contenute nel dispositivo con il
processo fisico, comunicando con i sensori e gli attuatori. È costituita dall'insieme dei
dispositivi hardware (schede di ingresso/uscita analogiche, schede di ingresso/uscita digitali
ecc.) e dal software per la loro gestione. Le informazioni scambiate con il processo fisico
sono presentate alle risorse come dati del processo e/o come eventi associati al processo.
Un'interfaccia di comunicazione mette in relazione le risorse con quelle appartenenti ad altri
dispositivi, per lo scambio di informazioni attraverso una rete di comunicazione. Essa è
costituita dall'insieme dei dispositivi hardware (schede di rete, schede modem ecc.) e dal
software per la loro gestione. Attraverso questa interfaccia, alla risorsa possono essere
presentate le informazioni, come dati o eventi, e forniti servizi addizionali, tra i quali il
supporto alla programmazione, la configurazione del sistema, la diagnostica.
19
M.G.A. Servizi industriali – “Corso di programmazione PLC”
Un moderno sistema di controllo e misura per processi industriali risulta quindi essere
costituito da un insieme di dispositivi di elaborazione connessi tra di loro. Questi saranno di
natura molto diversa, a seconda delle funzionalità che realizzano o che contribuiscono a
realizzare:
•
Alcuni saranno collegati direttamente a macchine che dovranno controllare,
quindi avranno bisogno di requisiti specifici, come sistemi operativi real-time multitasking,
interfacce di processo notevolmente sviluppate, costruzione robusta per poter funzionare in
ambienti come i capannoni industriali per esempio, sono queste le caratteristiche che
posseggono i controllori a logica programmabile o PLC (Programmable Logic Controllers);
•
Altri saranno dedicati all'interfaccia uomo-macchina e avranno quindi
bisogno di buone capacità grafiche e di comunicazione con altri dispositivi, ma non di
interfaccia di processo, non essendo direttamente connessi a sensori e attuatori (potranno
perciò essere dei normali personal computer);
•
Altri saranno dedicati al controllo di macchine complesse, come un robot
industriale;
• Altri ancora dovranno gestire delle basi di dati.
La programmazione dei dispositivi di controllo
Come si è visto, un moderno sistema di automazione industriale può essere schematizzato
come un insieme di dispositivi i quali sono tutti dei calcolatori, anche se diversissimi tra di
loro, a seconda delle funzionalità che devono espletare. Si comprendi quindi l'importanza che
assume la loro programmazione. Molti di questi dispositivi si programmano con i comuni
linguaggi di programmazione, eventualmente con l'aggiunta di istruzioni specializzate come
possono essere quelle di movimento per un robot. Altri hanno dei linguaggi altamente
specializzati alla loro funzionalità, come il linguaggio con cui si descrive il profilo da
realizzare con un tornio a controllo numerico.
Un dispositivo molto comune che si utilizza nelle applicazioni di automazione industriale è,
per esempio, il controllore a logica programmabile o PLC. Esso ha una notevole flessibilità
di utilizzo ed è specializzato per le applicazioni di automazione industriale, in particolar
modo per le funzioni di controllo logico/sequenziale
La sua diffusione è dovuta anche al fatto che normalmente esso coordina varie macchina. Il
PLC, attualmente, non adotta i linguaggi più diffusi dell'informatica, pertanto appare
necessario presentare in dettaglio le modalità della sua programmazione.
Allo stato attuale esistono diversi linguaggi per PLC e, anzi, ognuno di essi può a sua volta
essere visto come un insieme di dialetti, diversi da macchina a macchina, a volte anche tra
macchine dello stesso produttore. Convivono, inoltre, macchine di nuova generazione con
macchine più vecchie, ma pienamente funzionali, che però non presentano alcune
caratteristiche introdotte solo di recente.
Gli svantaggi dei linguaggi di programmazione attuali e della mancanza di una loro
standardizzazione si possono così riassumere:
Si utilizzano principalmente linguaggi di basso livello, orientati alla
macchina piuttosto che all'utilizzatore;
• I programmi possono essere solo debolmente strutturati, rendendo difficile
una programmazione di tipo top-down o bottom-up e ardua la loro manutenzione;
•
Manca la possibilità di nascondere i dati su cui opera un modulo di un
programma (data encapsulation) in modo che altri moduli non possano erroneamente
alterarli;
• Non e facile riutilizzare i moduli sviluppati o trasportarli su altre macchine;
•
20
M.G.A. Servizi industriali – “Corso di programmazione PLC”
• E’ difficile intervenire su un programma già scritto per introdurre ulteriori
funzionalità;
• I dati sono debolmente strutturati, il che rende complicato il trattamento e la
comunicazione di dati complessi;
• E’ difficile definire sequenze logiche ed operazioni da svolgere in parallelo;
• Vi è una mancanza di determinismo nel tempo di esecuzione dei cicli di
controllo;
• E’ difficile definire operazioni aritmetiche;
• E’ necessario istruire i programmatori su diversi linguaggi e dialetti,
aumentando così i costi di formazione;
•
Non è, in generale possibile scrivere un programma utilizzando diversi
linguaggi contemporaneamente, scegliendo di volta in volta il linguaggio più adatto per ogni
specifica funzionalità da implementare.
L'introduzione di uno standard per la programmazione, il 1131-3 del Comitato elettrotecnico
Internazionale, nasce proprio per ovviare ai problemi sopra elencati. Si tenga presente che lo
standard è in ogni caso frutto anche di interessi commerciali e, quindi, non è esente da
ambiguità e incongruenze. Inoltre, un costruttore non deve necessariamente adeguarsi a tutto
lo standard per dichiararsi conforme a esso; l’esistenza di uno standard di riferimento
rappresenta, in ogni modo, un notevole passo avanti nella giusta direzione.
21
M.G.A. Servizi industriali – “Corso di programmazione PLC”
CAPITOLO 3
Hardware del PLC
22
M.G.A. Servizi industriali – “Corso di programmazione PLC”
Il controllore a logica programmabile
Un dispositivo di controllo che potrebbe essere considerato per applicazioni generiche ma
che ha un alto grado di specializzazione è il controllore a logica programmabile (o plc,
Programmable Logic Controller), il più diffuso dispositivo di controllo per l'automazione
industriale, che sarà presentato in dettaglio in questo capitolo. Si tratta di un dispositivo
molto flessibile, di concezione modulare con architettura a bus, specializzato soprattutto per
il controllo logico/sequenziale. Di solito prevede la possibilità di trattare fino a migliaia di
punti dì ingresso/uscita con interfacce che accettano segnali di varia natura, è dotato di
sistemi operativi proprietari real-time multi-tasking molto efficienti ed è di costruzione molto
robusta.
In questo capitolo non si descriveranno i soli sistemi di nuovissima generazione, poiché si
ritiene necessario che la trattazione possa essere applicata anche a sistemi di qualche decina
di anni fa, i quali contano numerosissime installazioni funzionanti e, in alcuni casi, sono
ancora commercializzati.
Cenni storici
La possibilità di far eseguire in maniera automatica processi di lavorazione o loro parti è
sempre stato uno degli obiettivi della tecnica, fin dalla sua nascita. Prima della scoperta
dell'elettricità automatismi funzionanti con controlli di tipo meccanico erano già diffusi; tra i
più comuni si ricordano l'orologio a pendolo, l'orologio ad acqua, il regolatore di velocità di
Watt.
Con il diffondersi dell'utilizzo dell'elettricità, si cominciarono a utilizzare dispositivi
elettromeccanici, come relé e temporizzatori, per le applicazioni di automazione. Tali
dispositivi permettevano effettivamente di realizzare, con relativa facilità, dei sistemi di
controllo che però presentavano diversi svantaggi: non avevano un'elevata velocità di
elaborazione dei segnali, erano molto costosi, erano riconfigurabili con difficoltà. La loro
progettazione, inoltre, era lunga e complessa così come la loro installazione e la successiva
manutenzione.
L’avvento dell'elettronica, con l'introduzione del transistore prima e dei circuiti, integrati poi,
risolse molti di questi problemi ma non permise ancora di realizzare automatismi flessibili,
che avessero, cioè, la capacità di essere adattati., in tempi brevi, a svolgere nuove funzioni.
L'introduzione del calcolatore elettronico, con la sua caratteristica di avere un
comportamento programmabile, non poteva non avere ripercussioni per le aziende che si
occupavano di automazione industriale. Vari autori concordano nel fissare la data di nascita
del primo controllore a logica programmabile nell'anno 1968, quando la General Motors
negli Stati Uniti specificò le caratteristiche desiderate per una nuova generazione di
controllori da destinare ai propri impianti di produzione. Essi avrebbero dovuto:
• essere facilmente programmati e riprogrammati, eventualmente sul luogo di
funzionamento;
• essere di facile manutenzione, e perciò di concezione modulare;
• essere abbastanza robusti da poter funzionare senza problemi in un ambiente
industriale hi presenza di interferenze elettromagnetiche, polvere, vibrazioni;
• occupare meno spazio rispetto ai sistemi allora utilizzati;
• essere competitivi nei costi.
Altri criteri secondari erano la possibilità di espandere la memoria, di comunicare con altri
sistemi per la registrazione dei dati, di accettare segnali in media tensione alternata.
Il risultato fu lo sviluppo della prima generazione di plc, i quali non erano altro che dei
sequenziatori riprogrammabili. Nella metà degli anni Settanta l'Allen-Bradley introdusse il
primo plc basato su un microprocessore (era 1'8080) e da allora la loro evoluzione è
23
M.G.A. Servizi industriali – “Corso di programmazione PLC”
continuata progredendo in parallelo con quella dell'informatica classica. Attualmente un plc
di alta classe è basato su un sistema multiprocessore, integra possibilità di connessione in rete
informatica, è capace di eseguire funzioni molto complesse. È, in sostanza, basato sulle
stesse tecnologie di un calcolatore convenzionale ma è adattato al suo utilizzo principale, il
controllo di processi industriali.
PLC e sistema PLC
Cosa si intende per "controllore a logica programmabile" o plc? Per rispondere in modo
esauriente a questa domanda viene in aiuto lo standard 1131-1 del Comitato Elettrotecnico
Internazionale, che lo definisce come un:
• sistema elettronico a funzionamento digitale, destinato all'uso m ambito industriale,
che utilizza una memoria programmabile per l'archiviazione interna di istruzioni
orientale all'utilizzatore per l'implementazione di funzioni specifiche, come quelle
logiche, di sequenziamento, di temporizzazione, di conteggio e di calcolo aritmetico,
e per controllare, mediante ingressi e uscite sia digitali sia analogici, vari tipi di
macchine e processi.
Viene inoltre definita come sistema controllore a logica programmabile o sistema PLC:
•
la configurazione realizzata dall'utilizzatore, formata da un controllore a logica
programmabile e dalle periferiche associate, necessaria al sistema automatizzato
previsto.
Nell'uso comune il termine PLC denota, indifferentemente, sia il PLC vero e proprio, vale a
dire la scheda processore, sia l'intero sistema completo delle sue schede di interfaccia.
La configurazione minima di un PLC (Figura 1), che risulta essere un control-lore con
architettura basata su un bus proprietario, è composta dai seguenti cinque elementi
fondamentali: l’armadio, il modulo processore, i moduli di ingresso/uscita, il modulo
alimentatore, il terminale di programmazione.
L’Armadio o cestello o rack, contiene e racchiude tutti gli altri moduli, assicurandone
Figura 1 - Controllore a logica programmabile (PLC).
la connessione meccanica e il collegamento elettrico. Ha in genere la forma di un
parallelepipedo aperto su di un lato per permettere l'inserimento dei moduli che sono
collegati elettricamente tra loro grazie alla presenza, sul lato opposto, di un circuito stampato
con dei connettori- Di solito è realizzato in metallo e deve essere connesso elettricamente a
terra, sia per ragioni di sicurezza sia per meglio schermare i moduli alloggiati.
Il modulo processore è il vero e proprio PLC ed è costituito essenzialmente da una scheda a
microprocessore con un'architettura simile a quelle dei calcolatori convenzionali; controlla e
24
M.G.A. Servizi industriali – “Corso di programmazione PLC”
supervisiona tutte le operazioni eseguite all'interno del sistema, attraverso l'esecuzione delle
istruzioni contenute nella memoria.
I moduli di ingresso/uscita, o moduli I/U, sono delle schede che permettono
l'interfacciamento tra la microelettronica del PLC e il mondo esterno, e devono perciò
provvedere al condizionamento dei segnali e all'isolamento.
Il modulo alimentatore è una scheda che alimenta tutti gli altri moduli presenti nell'armadio.
Connesso alla rete di alimentazione elettrica, tale modulo fornisce una o più tensioni
stabilizzate con un massimo di corrènte erogabile.
Il terminale di programmazione è oggi un personal computer e serve per la programmazione
del PLC che non ha, usualmente, dispositivi di interfaccia con l'uomo. Il terminale di
programmazione viene connesso al PLC solo quando viene utilizzato tramite una porta seriale
e/o una rete informatica.
Esistono alcuni piccoli sistemi PLC che non sono modulari (e rientrano quindi nella categoria
dei controllori monolitici), non prevedono il rack, e racchiudono in un unico dispositivo
alcuni o tutti gli elementi sopra descritti (Figura 2).
Figura 2 - PLC non modulare.
Il modulo processore
Il modulo processore rappresenta il cuore del sistema PLC e racchiude una scheda con uno o
più microprocessori, che eseguono i programmi del sistema operativo e quelli sviluppati
dall'utente, e la memoria dove questi programmi sono conservati, oltre a tutti i componenti
necessari al suo funzionamento.
Praticamente tutti i PLC moderni utilizzano microprocessori come unità di processo centrali;
alcuni sono basati su microprocessori appositamente realizzati per interpretare direttamente
le istruzioni sul bit che sono le più diffuse nel controllo logico/sequenziale. Un tipico modulo
processore potrebbe contenere tre microprocessori: uno specializzato per operare sul singolo
bit, uno per le istruzioni di tipo aritmetico/logico, uno dedicato alle comunicazioni con i
moduli di ingressi/uscita e con dispositivi esterni.
La modalità di funzionamento più diffusa del modulo processore, così come realizzata dal
sistema operativo, è quella ciclica, che prevede un ciclo composto dalla seguente sequenza di
operazioni:
•
•
•
•
aggiornamento dell'area di memoria a tal scopo riservata con i valori provenienti
dagli ingressi fisici;
esecuzione del programma (o dei programmi) utente operando sui valori della
memoria e conservando i risultati sempre in memoria;
esecuzione di programmi di gestione del sistema (per esempio per la diagnostica);
scrittura sulle uscite fisiche dei loro valori conservati nell'area di memoria a ciò
riservata.
25
M.G.A. Servizi industriali – “Corso di programmazione PLC”
Il ciclo sopra descritto è talvolta indicato come "ciclo a copia massiva degli ingressi e delle
uscite". Esso permette un'ottimizzazione delle comunicazioni con i moduli di
ingresso/uscita, e garantisce che i valori memorizzati degli ingressi restino inalterati durante
l'esecuzione dei programmi. Si vuole sottolineare che la lettura degli ingressi e la scrittura
delle uscite è gestita interamente dal sistema operativo, il che consente all'utilizzatore di
concentrarsi sul programma applicativo.
Una prima conseguenza del ciclo a copia massiva è che il PLC, dopo aver letto gli
ingressi, rimane "cieco" fino alla prossima lettura. Ciò può comportare un ritardo nella
rilevazione del cambiamento di un ingresso, ritardo che nel caso peggiore è circa uguale al
tempo necessario per eseguire il ciclo; inoltre, se per esempio un ingresso binario varia due
volte il suo stato durante il ciclo di scansione, queste variazioni di stato non saranno mai
rilevate. Un'altra conseguenza del ciclo a copia massiva è che il ciclo non ha una durata
prefissata ma dipende dalla lunghezza del programma e dalla sua natura (presenza o meno
di cicli interni, di esecuzioni condizionate di istruzioni ecc.). Ciò fa sì che il PLC, almeno nel
suo nodo di funzionamento standard, non sia da ritenersi adatto alla realizzazione di anelli
di controllo classici.
Molti PLC offrono delle alternative al ciclo a copia massiva dei dati. Per particolari
situazioni in cui non è tollerabile l'attesa della fine del ciclo per leggere un ingresso o
scrivere un'uscita, è prevista la possibilità di eseguire delle operazioni con accesso immediato
ai punti di ingresso/uscita. Non si deve abusare, in ogni modo, nel loro utilizzo, perché
allungano in maniera non trascurabile i tempi di scansione del programma; per tale ragione
esse sono solitamente riservate alla gestione di emergenze.
Altra eccezione al ciclo di funzionamento può essere rappresentata dalla gestione degli
interrupt temporizzati (per realizzare, per esempio, algoritmi di controllo numerico) o
collegati allo stato di uno dei segnali di ingresso.
Si noti che, nei nuovissimi sistemi che aderiscono allo standard della programmazione, la
scelta della modalità di funzionamento è definita dall'utente nella descrizione delle risorse e
della configurazione, ma tali modalità devono essere poi previste e implementate dal sistema
operativo del PLC.
La velocità di elaborazione del modulo processore viene solitamente descritta dal tempo di
scansione, definito come il tempo che intercorre tra due attivazioni successive della stessa
porzione del programma applicativo nella modalità di funzionamento ciclico, compreso
quindi il tempo necessario per effettuare l'aggiornamento degli ingressi e delle uscite. Il
tempo di scansione da un'indicazione dei tempi necessari a effettuare le fasi del ciclo dì
funzionamento prima descritto ed è quindi strettamente legato al numero di ingressi e di
uscite da aggiornare e alle dimensioni e alla complessità del programma utente. Esso viene di
solito indicato dal produttore come valor medio per programmi di media complessità e varia
da qualche unità a qualche decina di millisecondi per Kiloword (1 Kiloword = 1024 parole)
di programma, a seconda della classe del PLC.
Il tempo di scansione non deve essere confuso con il tempo di risposta del sistema, definito
come il massimo intervallo di tempo che passa ira la rilevazione di un certo evento e
l'esecuzione dell'azione di risposta programmata. Tale tempo, infatti, deve tener conto anche
dei ritardi introdotti dai moduli di ingresso/uscita. La relazione tra tempo di scansione e
tempo di risposta, sempre nella modalità ciclica, può essere così espressa:
dove Tr è il tempo di risposta, circa uguale a due volte il tempo di scansione Ts (per tener
conto del caso peggiore nella rilevazione degli ingressi) più il ritardo Ti/u, introdotto dai
moduli di ingresso/uscita.
Il sistema operativo di un PLC è costituito da un insieme di programmi di supervisione che
sono memorizzati in maniera permanente e costituiscono, in pratica, una parte essenziale dei
PLC stesso. Essi sono dedicati al controllo delle attività, all’elaborazione dei programmi
utente, alla comunicazione e ad altre funzioni. Tra queste ultime sono da ricordare le funzioni
di diagnostica interna, quali watchdog timer sulle funzioni principali (per esempio, sul tempo
di scansione), controlli di parità sulla memoria e sulle linee di comunicazione, controllo della
26
M.G.A. Servizi industriali – “Corso di programmazione PLC”
tensione di alimentazione e dello stato delle batterie tampone. Tali funzioni possono limitarsi
ad attivare indicatori dello stato (memoria OK, batteria OK, processore OK. ecc.) oppure
possono avviare l'esecuzione di routine di emergenza programmabili dall'utente; in genere
viene inoltre previsto l'aggiornamento di bit interni di stato che possono essere utilizzati dai
programmi utente.
Le modalità operative tipiche di un PLC, spesso attivabili attraverso una chiave hardware per
prevenire commutazioni accidentali, sono quelle di esecuzione, di convalida e di
programmazione. Nella modalità di esecuzione, i programmi utente vengono eseguiti e
l'aggiornamento degli ingressi e delle uscite viene effettuato. Nella modalità di convalida
vengono eseguiti i programmi ma l'aggiornamento delle uscite è disabilitato; ciò permette di
provare la correttezza del codice sviluppato senza preoccuparsi delle possibili conseguenze
di errori di programmazione. La modalità di programmazione è utilizzata per caricare nella
memoria del PLC il programma sviluppato; in alcuni casi la modalità di programmazione
on-line prevede la scrittura del programma direttamente nella memoria del PLC.
Il fatto che in passato fosse necessario programmare il PLC direttamente nella sua memoria,
insieme all'utilizzo di microprocessori non standard, ha fatto si che, ancora oggi, in molti
PLC esistenti il programma venga interpretato; ogni istruzione viene cioè convertita in
codice macchina immediatamente prima di essere eseguita. La maggior diffusione di
architetture basate su processori convenzionali (come gli Intel e i Motorola), insieme
all'utilizzo di personal computer come terminali di programmazione, ha portato alla
realizzazione di PLC per i quali è prevista una fase di compilazione prima dell'esecuzione
del programma.
La memoria di un PLC è solitamente organizzata per aree distinte. Una possibile ripartizione
della memoria è la seguente:
•
•
•
•
•
area sistema operativo, riservata alla memorizzazione permanente dei programmi del
sistema operativo e che deve essere di tipo non volatile a sola lettura;
area di lavoro del sistema operativo, riservata alla memorizzazione di dati intermedi
da parte dei programmi del sistema operativo e che, come tale, deve permetterne la
lettura e la scrittura (realizzata con memorie RAM, Random Access Memory);
area ingressi/uscite, riservata alla memorizzazione degli stati degli ingressi e delle
uscite (memorie RAM);
area programmi utente, riservala alla memorizzazione dei programmi utente, che deve
essere necessariamente di tipo RAM durante lo sviluppo dei programmi mentre può
essere sostituita da una PROM (memoria programmabile a sola lettura) una volta che
il programma è stato realizzato e verificato;
area dati utente, riservata alla memorizzazione dei dati dei programmi utente e che
deve essere quindi di tipo RAM.
Le aree di memoria realizzate con RAM possono essere in parte o tutte aumentate da batterie
tampone per evitare perdite di informazioni nel caso di mancanza di alimentazione. Per
questa ragione, tali aree sono solitamente realizzate in tecnologia CMOS, per limitare il
consumo. In caso di mancanza di alimentazione, il sistema operativo o i programmi utente
possono, attraverso i bit di stato, gestire la modalità di ripristino del funzionamento: nuova
inizializzazione del sistema o ripartenza dall'ultima istruzione effettuata.
Quando un produttore indica la memoria disponibile su un PLC non sempre è chiaro a quali
aree si riferisca: secondo logica dovrebbe indicare le dimensioni delle sole aree utente, ma la
logica non sempre coincide con gli interessi commerciali. Le dimensioni di memoria offerte
variano da mezzo Kiloword a qualche centinaio di Kiloword a seconda della classe del PLC
considerato, con word di 8 o 16 bit. I PLC di nuova generazione cominciano ad avere
memorie dell'ordine delle Megaword. Sono poi generalmente dati dei limiti sul numero e sul
tipo di ingressi e uscite gestibili, sul numero delle strutture speciali (timer, contatori) e sul
numero di word a disposizione per altri dati.
Altre caratteristiche del modulo processore sono la possibilità di espandere la memoria, il
numero di armadi di I/U gestibili direttamente, il numero di armadi gestibili in modalità
remota con i relativi tempi per la scansione (si veda anche il paragrafo sui moduli speciali), il
numero e la qualità di porte di comunicazione disponibili (seriali, parallele, di rete), il tipo di
27
M.G.A. Servizi industriali – “Corso di programmazione PLC”
linguaggi supportati e la complessità dell'insieme delle istruzioni, la possibilità di multitasking, la possibilità di gestire routine di interruzione.
Come ultimo punto si vuole segnalare l'esistenza di alcuni moduli processore particolari,
detti PLC di sicurezza, progettati per essere impiegati in applicazioni che richiedono gradi di
sicurezza molto elevati, come nell'automazione dì presse. Questi moduli processore
prevedono una ridondanza di unità di elaborazione, le quali eseguono lo stesso programma e
abilitano le uscite solo se vi è pieno accordo tra loro. Sulla questione della sicurezza, di
importanza fondamentale in molte applicazioni dell'automazione, si veda anche più avanti, il
paragrafo sui moduli speciali.
I moduli di ingresso/uscita
I moduli di ingresso e uscita, sia digitali sia analogici, sono i moduli attraverso cui il PLC
comunica con il processo fisico, rilevando eventi e dati dai sensori e comandando azioni agli
attuatori. Dal punto di vista elettrico, essi devono realizzare l'interfaccia tra i livelli di
tensione TTL o CMOS con cui opera l'elettronica del PLC e le tensioni (o correnti) usate per
la trasmissione dei segnali, che possono andare da qualche decina di volt a centinaia di volt
sia in continua sia in alternata. Questo permette, nella maggior parte dei casi, di connettere il
PLC direttamente ai vari dispositivi presenti sul campo riducendo al minimo la necessità di
ulteriori condizionamenti del segnale. Inoltre, molto spesso gli ingressi e le uscite sono isolati
galvanicamente, attraverso fotoaccoppiatori o trasformatori, dall'elettronica interna del PLC,
in modo da evitare che eventuali impulsi di tensione possano danneggiare il sistema.
La modularità prevista per i moduli di ingresso e uscita e la disponibilità di molti differenti
tipi rendono possibile una realizzazione del sistema PLC tagliata su misura per il particolare
problema che si sta affrontando.
Il loro indirizzamento da programma, vale a dire gli indirizzi delle parole di memoria dove
vengono memorizzati gli stati degli ingressi e delle uscite, dipende da dove fisicamente il
modulo viene posto nell'armadio, o negli armadi, del PLC. Per questa ragione sono dì solito
presenti accorgimenti meccanici per evitare che un modulo possa essere installato in una
posizione diversa da quella prevista.
I moduli di ingresso digitali sono generalmente fomiti di circuiti di filtraggio contro il rumore
e 1 rimbalzi, che, si noti, introducono un ritardo nel rilevamento di una transizione di stato
dell'ordine di qualche millisecondo, e di indicatori di stato prima e/o dopo l'isolamento. Le
informazioni tecniche per tali moduli devono prevedere il numero di ingressi gestibili, le
tensioni di riferimento, il ritardo di segnalazione introdotto. Valori comuni per le tensioni di
riferimento per gli stati ON e OFF sono 0-24 V e 0-220 V in corrente continua o alternata, 05 V in corrente continua (livelli TTL), 0-50 V in corrente continua.
Le uscite digitali, di solito protette da fusibili, sono realizzale attraverso transistori - per
corrente continua -, TRIAC o SCR - per corrente alternata-, oppure relè - per corrente
continua e alternata. Nel caso di uscite in corrente continua realizzate tramite transistori deve
essere specificato anche se la corrente è fornita al carico o assorbita da esso, per permetterne
il corretto collegamento.
I moduli di ingresso/uscita analogici sono moduli che realizzano le conversioni
digitali/analogiche o analogiche/digitali richieste per interfacciare direttamente segnali
analogici (continui nel tempo e nei valori) con il PLC il quale, essendo un calcolatore, lavora
con stringhe di bit di lunghezza finita nel tempo discreto. Questi moduli trattano un'ampia
gamma di segnali, possono avere intervalli di lavoro e caratteristiche filtranti selezionabili
via software, possono realizzare la scalatura automatica del dato in unità ingegneristiche,
sono anch'essi optoisolati e possiedono indicatori del loro stato.
Le informazioni solitamente disponibili per questi moduli riguardano i valori dei segnali
trattati, la possibilità di accettare ingressi single-ended o differenziali, la risoluzione di
conversione, la rappresentazione dei dati fornita, la velocità di conversione. Valori tipici dei
segnali trattati sono ±5 V, ±10 V, 0-5 V per segnali in tensione, e 4-20 mA per segnali in
corrente.
Per i segnali analogici è comune pensare a una trasmissione dell'informazione come livello di
tensione. Tuttavia nell'automazione industriale è spesso utilizzata la trasmissione in corrente
28
M.G.A. Servizi industriali – “Corso di programmazione PLC”
dell'informazione perché meno sensibile ai disturbi elettromagnetici e alle cadute resistive in
collegamenti molto lunghi; essa permette, inoltre, di risparmiare un cavo per ogni
collegamento, poiché quello che ai fa variare è l'assorbimento di corrente sulle linee di
alimentazione.
I moduli di ingresso utilizzano di solito, per ragioni economiche, un solo convertitore
analogico/digitale e un multiplexer per collegarvi i vari canali di ingresso. Alcuni moduli di
uscita hanno la caratteristica di poter fare assumere alle uscite uno stato predefinito se non
hanno nuove informazioni dal PLC entro un tempo fissato (hanno un watchdog timer che deve
essere azzerato periodicamente dal modulo processore, altrimenti deducono che c'è stato un
malfunzionamento).
Data la loro diffusione, esistono moduli di ingressi previsti per l'utilizzo diretto di sensori di
temperatura come i resistivi a metallo (RTD) e le termocoppie che altrimenti comporterebbe
l'utilizzo di particolari circuiti per il rilevamento della loro informazione.
Il modulo alimentatore
Il modulo alimentatore fornisce, attraverso l’armadio l'alimentazione elettrica stabilizzata
necessaria al funzionamento di tutti gli altri moduli, in altre parole, tale modulo deve
assicurare una tensione di alimentazione costante anche in presenza di microinterruzioni o
fluttuazioni della fornitura elettrica. Sarà quindi composto da un trasformatore, un circuito
rettificatore, un filtro, un circuito stabilizzatore e un circuito per la protezione da
sovracorrenti o cortocircuiti. Tra le sue caratteristiche peculiari vi sono la potenza massima
fornibile, la possibilità di connessione in parallelo (per aumentare la potenza disponibile o
per ottenere una ridondanza di sicurezza), la possibilità di inviare al PLC una segnalazione di
shutdown se l'alimentazione in ingresso scende sotto certi limiti (il PLC potrebbe usare tale
segnalazione per attivare delle procedure prima dell'effettivo spegnimento), la presenza di
indicatori del suo stato.
Ogni modulo componente di un sistema PLC assorbe una determinata potenza, pertanto il
dimensionamento dell'alimentatore deve essere realizzato considerando la somma delle
potenze richieste dai moduli previsti, aumentata di una certa percentuale per tener conto di
eventuali espansioni future.
L'armadio
L'armadio, o cestello o rack, deve contenere i moduli componenti di un sistema PLC e
assicurarne la connessione elettrica e meccanica, oltre che la schermatura. Come già detto,
l'architettura di un sistema PLC è di tipo a bus: la connessione elettrica si realizza attraverso
il bus, un insieme di linee elettriche, raggruppate per funzioni (linee indirizzo, linee dati,
linee di controllo, linee di alimentazione) e dei protocolli associati, attraverso le quali un
modulo può comunicare con gli altri. A differenza delle architetture a bus per scopi generici,
il bus di un PLC è proprietario, il che rende impossibile l'utilizzo di moduli di costruttori
differenti.
Le caratteristiche dell'armadio sono essenzialmente di tipo meccanico, come il numero di
slot, le dimensioni di ingombro, le modalità di fissaggio.
Il terminale di programmazione
Il PLC non prevede tastiere e schermi per la comunicazione con il programmatore, quindi la
sua programmazione deve avvenire per il tramite di dispositivi particolari.
I terminali a tastiera, ancora utilizzati per i piccoli PLC, si connettono direttamente al PLC
attraverso una porta di comunicazione (per esempio, seriale) e presentano all'operatore una
tastiera per l'inserimento delle varie istruzioni, un piccolo display a cristalli liquidi per il
controllo del programma, e delle limitate funzioni di composizione. In questo caso la
programmazione avviene direttamente nella memoria del PLC.
Oggi si utilizzano veri e propri sistemi di sviluppo basati su personal computer i quali
facilitano molto la programmazione e la configurazione del PLC, che possono essere
29
M.G.A. Servizi industriali – “Corso di programmazione PLC”
effettuate anche off-line. Essi presentano funzionalità di composizione dei programmi molto
complesse e hanno la capacità di memorizzazione permanente dei programmi sviluppati.
Sono connessi al PLC o direttamente o attraverso una rete informatica; in quest'ultimo caso un
solo personal computer può realizzare lo sviluppo e il caricamento dei programmi per tutti i
PLC connessi in rete. Sono inoltre tipicamente previste funzioni di monitoraggio
dell'esecuzione del programma e delle aree di memoria del PLC, eseguibili anche durante il
normale funzionamento del dispositivo.
I moduli speciali
Nell'ambito di un sistema PLC di un determinato costruttore può esistere poi una vasta gamma
di moduli che realizzano delle funzionalità speciali in maniera da rendere il sistema ancora
più flessibile e più adeguato a rispondere a diverse esigenze.
Moduli di I/U remoto. Se il numero di punti di ingresso e uscita è elevato ed essi sono inoltre
disposti su una superfìce molto estesa, è conveniente realizzare il cosiddetto I/U remoto. In
questo caso, vi sono armadi di I/U sparsi nell'impianto che sono poi collegati al PLC
attraverso un modulo di I/U remoto che provvede a inviare lo stato degli ingressi informatica.
Moduli per la connessione in rete. Sono moduli che gestiscono i protocolli di comunicazione
per le diverse tipologie di reti informatiche che possono coinvolgere un sistema PLC (bus di
campo, reti proprietarie, Ethernet).
Moduli coprocessore. Sono moduli che contengono un vero e proprio calcolatore
convenzionale che può accedere direttamente ai dati contenuti nella memoria del PLC. Con
tali moduli è possibile eseguire elaborazioni anche complesse attraverso programmi scritti in
linguaggi di programmazione classici come il Basic o il C; essi possono comprendere unità
di memorizzazione di massa e comunicare direttamente con l'esterno attraverso interfacce
classiche come la seriale RS-232, la parallela Centronics, lo standard PCMCIA.
Moduli PID. Se la regolazione PID (Proporzionale-Integrale-Derivativa) non è disponibile, o
non può essere eseguita direttamente dal PLC a causa della lunghezza del ciclo di scansione,
tale modulo permette di avere a disposizione alcuni anelli PID cui il PLC deve limitarsi a
fornire i riferimenti. Oltre alle funzionalità tipiche del regolatore PID, tali moduli possono
essere auto-sintonizzanti e permettere un passaggio neutro tra modalità di regolazione
manuale e automatica.
Moduli di servo. Sono moduli che realizzano direttamente, e in maniera autonoma,
l'asservimento di uno (o più) motori a passo, motori idraulici, motori m corrente continua con
encoder incrementali.
Moduli encoder. Realizzano mite le funzionalità necessarie per utilizzare uno o più encoder
incrementali o assoluti. Sono essenzialmente moduli con contatori ad alta velocità e delle
uscite dell'armadio in cui è montato attraverso una linea seriale o una rete
Moduli interfaccia operatore. Rendono possibile il colloquio di un operatore con i; PLC
attraverso tastiere e display alfanumerici. Attualmente questo tipo di funzionalità viene
sempre più spesso realizzato con calcolatori tradizionali connessi in rete con i PLC.
Moduli di backup. Sono moduli che inseriti negli armadi di due PLC differenti e collegati tra
loro, permettono di avere una funzionalità di backup. In un sistema a massima disponibilità il
modulo processore di riserva, attraverso tali moduli, viene informato costantemente sullo
stato del modulo processore principale, esegue lo stesso programma e può, in caso di
malfunzionamento di quest'ultimo, sostituirlo in tempi brevissimi nella gestione degli
ingressi e delle uscite; eventualmente si può avere una duplicazione degli altri moduli che
compongono il sistema. Un'altra modalità di backup, detta a sicurezza intrinseca, prevede
che i due moduli processore siano concordi nel decidere lo stato che deve assumere un'uscita
prima che ciò sia effettivamente eseguito.
Tra gli altri tipi di moduli ricordiamo i lettori di codici a barre, i sistemi di visione per
ispezione automatica, i moduli per la connessione a bus VME.
30
M.G.A. Servizi industriali – “Corso di programmazione PLC”
Classificazione dei PLC
Data la diversità delle offerte dei produttori per quanto riguarda i controllori a logica
programmabile, si ritiene utile proporre una loro classificazione in quattro categorie: micro
PLC, piccoli PLC, medi PLC e grandi PLC.
I micro PLC sono dei PLC che trattano fino a 64 punti di ingresso/uscita, generalmente tutti
di tipo digitale, con memorie di 1 o 2 Kword. Non hanno, di solito, una struttura modulare ad
armadio (si veda la Figura 8.2) anche se possono prevedere delle espansioni degli I/U. Sono
di solito programmabili con un solo linguaggio di programmazione, per esempio il
linguaggio a contatti, e l'insieme di istruzioni, funzioni, e blocchi funzionali disponibili è
limitato. Sono principalmente utilizzati in sostituzione di logiche a relé in applicazioni come
il controllo di macchine operatrici, di ascensori, di lavatrici.
I piccoli PLC trattano da 64 a 512 punti di ingresso/uscita, in predominanza digitali, ma vi
possono essere capacità di I/U analogiche. Hanno una struttura modulare ad armadio e una
memoria che arriva fino a 4 Kword. Possono avere capacità di connessione in rete e di
gestione di I/U remoto. La programmazione può avvenire con differenti linguaggi e con un
insieme di funzioni e blocchi funzionali più completo rispetto ai micro.
I medi PLC possono arrivare a trattare da_256 a 2048 punti di ingresso/uscita e avere una
memoria che arriva a qualche decina di Kword. Hanno una struttura modulare ad armadio,
gestiscono l'I/U remoto e sono arricchibili con moduli speciali. Hanno elevate capacità di
comunicazione in rete informatica, Le loro possibilità di programmazione sono molto
evolute.
I grandi PLC sono caratterizzati dalla capacità di tratture numerosi punti di ingresso/uscita, di
solito qualche migliaio, e dalla disponibilità di centinaia di K di memoria. Hanno una
notevole capacità di trattamento delle informazioni e sono di solito utilizzati come
supervisori di celle automatizzate e come interfacciamento tra i PLC di minori prestazioni e i
calcolatori i gestione.
Linguaggi di programmazione
Come vedremo in questo testo, lo standard IEC 61131 definisce proprio la standardizzazione
dei linguaggi di programmazione per un controllore a logica programmabile. Lo standard,
però, e più un modello di riferimento verso cui tenderanno le aziende costruttrici piuttosto
che un vincolo attuale. Infatti, ancora oggi, vengono immessi sul mercato PLC che non lo
rispettano pienamente. Bisogna tener conto, inoltre, dell'esistenza di famiglie di PLC
introdotte sul mercato prima della pubblicazione dello standard e già installate e, a ogni
modo, ancora commercializzate (anche perché si tratta spesso di ottimi dispositivi).
Attualmente, il linguaggio più diffuso nei controllori a logica programmabile resta il
linguaggio a contatti, o meglio un insieme di "dialetti" del linguaggio, nel senso che ogni
costruttore ne realizza una particolare implementazione. Un altro linguaggio molto diffuso è
la lista istruzioni (e anche qui si può parlare più propriamente di dialetti). Si stanno
diffondendo anche il testo strutturato e il Sequential Functional Chart.
In alcuni PLC, soprattutto sui micro, è possibile utilizzare: un solo linguaggio, in altri
combinazioni di più linguaggi. In pochi è possibile utilizzare il Sequential Functional Chart,
cioè il linguaggio che, come si e visto, è da ritenersi il migliore per la programmazione di
algoritmi di controllo logico/sequenziale tipici dell'automazione industriale.
31
M.G.A. Servizi industriali – “Corso di programmazione PLC”
CAPITOLO 4
Linguaggi di Programmazione
32
M.G.A. Servizi industriali – “Corso di programmazione PLC”
Linguaggi di programmazione
Verranno ora illustrati i principali linguaggi di programmazione nelle loro
caratteristiche generali,fatta eccezione per il sequential functional chart,che verrà
trattato in seguito
Testo strutturato
Il testo strutturato è il linguaggio di programmazione più vicino ai linguaggi informatici
attuali, in particolar modo al Pascal, e come tale sarà presentato per primo, in modo da
agevolare la presentazione delle unità di programmazione previste dallo standard.
Il testo strutturato è, dunque, un linguaggio di programmazione testuale, di alto livello,
sviluppato per le applicazioni di automazione.
L'assegnazione, che è già stata utilizzata per le inizializzazioni delle variabili e dei tipi, è
programmata con il simbolo :=. Assegnazioni valide, sono le seguenti:
A := 2.5;
abilitazione := TRUE;
conteggio := 350;
stato_tornio := funzionante;
termometro 7 := 30.0;
termocoppia_l.valore := 554.0;
termocoppia_l.ultima_calibrazione := 2004-03-30;
termocoppia_l.intervallo_calibrazione := T#120d;
termocoppia_2 := termocoppia_1;
forno_1[4] := termocoppia_1;
Si noti che il carattere ; rappresenta il terminatore di un’istruzione. Sono inoltre disponibili:
•
•
•
•
I classici operatori aritmetici:+ per la somma, - per la differenza, *per il prodotto, /
per la divisione. MOD per il resto di una divisione intera, ** per l’elevamento a
potenza;
gli operatori di relazione:< per minore, <=- per minore o uguale, > per maggiore, >=
per maggiore o uguale, <> per diverso;
gli operatori sul bit: & oppure AND per la funzione di prodotto logico, OR per la
funzione di somma logica , XOR per la funzione di somma logica esclusiva, NOT per
la negazione;
le parentesi (e ) per cambiare l’ordine di esecuzione delle operazioni con le note
regole sulla precedenza delle valutazioni.
Esistono poi i consueti costrutti per le istruzioni condizionate:
•
•
•
IF…THEN…END_IF per eseguire solo se è verificata una condizione logica;
IF...THEN...ELSE...END_IF per eseguire istruzioni diverse a seconda del valore di
una condizione logica;
IF...THEN…ELSIF...THEN…ELSE…END_IF per definire
delle
decisioni
multiple, usando più ELSIF;
33
M.G.A. Servizi industriali – “Corso di programmazione PLC”
•
CASE…OF...ELSE...END_CASE per definire decisioni multiple che dipendono dal
valore di una variabile interna.
Le istruzioni seguenti ne mostrano, a titolo di esempi, l'utilizzo:
IF abilitazione & (conteggio<100) THEN
conteggio := 100;
stato_tornio := fermo;
END_IF IF abilitazione THEN
termocoppia_1.valore :=termocoppia_2.valore;
ELSE
termocoppia_1.valore:= 0,0;
END_IF IF conteggio<100 THEN
A := 1.0;
ELSIF conteggio<500 THEM
A := 2.0;
ELSIF conteggio<800 THEM
A := 3.0;
ELSE
{* conteggio maggiore o uguale a 800 *)
A := 4.0;
END_IF CASE conteggio OF
1 : stato_tornio := fermo;
2,3,4,5 : stato_tornio :- funzionante;
6...50 : stato_tornio ;= attesa;
ELSE
stato tornio := guasto;
END_CASE
Per la programmazione di cicli esistono i costrutti:
•
•
•
•
FOR... TO... BY ... DO... END_FOR per l'esecuzione di cicli basati sul valore di
una variabile intera, la quale viene incrementata di un certo passo da un valore
iniziale a uno finale;
WHILE...DO…END_WHILE per l'esecuzione di cicli fintantoché un'espressione
logica rimane vera (la verifica viene fatta prima dell'esecuzione delle istruzioni
che compongono il ciclo);
REPET…UNTIL...END_REPEAT per l'esecuzione di cicli fintantoché
un'espressione logica rimane vera (la verifica viene fatta, dopo l'esecuzione delle
istruzioni che compongono il ciclo);
EXIT per uscire da cicli in maniera immediata.
Le istruzioni seguenti ne mostrano, a titolo di esempio, l'utilizzo:
FOR conteggio=10 TO conteggio=6 BY -1 DO
forno1[conteggio] := forno1[conteggio-5];
IF forno1[conteggio].valore = 100.0 THEN
EXIT;
END_IF
END_FOR
WHILE termometro_7 > 100.0 DO
conteggio := conteggio + 1;
END_WHILE
34
M.G.A. Servizi industriali – “Corso di programmazione PLC”
REPEAT
conteggio := conteggio - 1;
UNTIL termometro_7 < 30.0
END_REPEAT
Infine, con la parola chiave RETURN è possibile interrompere anticipatamente l'esecuzione di funzioni e blocchi funzionali.
Linguaggio a contatti
Il linguaggio a contatti, meglio conosciuto con il nome inglese di Ladder Diagram (la cui
traduzione letterale è "diagramma a scala", dalla forma che assume il programma) è
attualmente il più diffuso linguaggio di programmazione per i controllori a logica
programmabile. Le prime applicazioni di automazione industriale venivano realizzate
utilizzando dispositivi elettromeccanici come i relé, i temporizzatori, i contatori, i
sequenziatori a cilindro. Quando cominciarono a essere disponibili i primi controllori a
programma memorizzato, fu naturale sviluppare un linguaggio per la loro programmazione
che fosse il più vicino possibile a quel tipo di tecnologia e che potesse, quindi, essere
compreso e utilizzato anche dai tecnici dell'epoca, i quali possedevano scarse o mille
conoscenze informatiche.
Le prime istruzioni disponibili nel linguaggio a contatti furono quindi proprio 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 che assume il
programma deriva dalla logica a relé, con le due linee verticali laterali (i montanti della
scala) rappresentanti l'alimentazione e con le linee orizzontali (i pioli della scala, in inglese
rung) che alimentano una bobina se una certa combinazione di contatti abilita il flusso di
energia. I contatti possono essere associati agli ingressi digitali provenienti dal processo, o
meglio al loro stato rappresentato in particolari bit della memoria, oppure a condizioni
interne al dispositivo, sempre rappresentate da bit di memoria; la bobina può essere associata
a un bit della memoria e, per suo tramite, comandare un'uscita digitale o variare una
condizione interna.
La migliore applicazione del linguaggio a contatti si ha nella definizione di operazioni
logiche booleane, nelle quali la forma grafica è di notevole ausilio alla comprensione del
significato delle istruzioni programmate.
Una cosa da tenere presente è che, in una rete in linguaggio a contatti, il flusso di energia può
andare sempre e solo da sinistra verso destra, senza possibilità di inversione. Inoltre,
l'esecuzione delle istruzioni avviene dall'alto verso il basso e da sinistra verso destra.
Un esempio di rete è rappresentato in Figura 1 dove, anche se non si sono ancora definite
formalmente le istruzioni, si può riconoscere che sono implementate le funzioni booleane e =
a AND b (la bobina e viene alimentata se sono chiusi entrambi i contatti a e b, permettendo il
flusso di energia) e f = d OR e (la bobina f viene alimentata se è chiuso almeno uno dei
contatti d ed e). Nel terzo rung, la bobina contrassegnata con u potrebbe essere alimentata
attraverso le sequenze di contatti i1-i2-i3-i4, i1-i5-i6-i4, I7-I6-I4, ma non attraverso la
sequenza i7-i5-i2-i3-i4 che pure potrebbe rappresentare una continuità elettrica.
Come già detto, una rete in linguaggio a contatti è delimitata a sinistra e a destra da due linee
verticali che rappresentano le barre di alimentazione; la barra di destra può anche essere
omessa. Lo stato della barra di sinistra può essere supposto sempre a ON, a indicare la
presenza di un flusso di energia.
Il contatto è un elemento che permette il flusso di energia verso destra in dipendenza dello
stato di un bit cui esso è associato. I contatti disponibili sono i seguenti
•
Il contatto normalmente aperto — | | — al quale deve essere associata una variabile
35
M.G.A. Servizi industriali – “Corso di programmazione PLC”
booleana (un bit) il cui valore, se vero, causerà la chiusura del contatto assi curando la
continuità logica (elettrica) nel rung in cui l'istruzione si trova. Se il valore della
variabile e falso il contatto rimarrà aperto, impedendo il flusso di energia.
Figura 1 - Esempio di rete in linguaggio a contatti.
•
•
•
Il contatto normalmente chiuso —I / I— al quale deve essere associata ima variabile
booleana il cui valore, se falso, rende chiuso il. contatto assicurando la continuità
logica (elettrica) nel rung in cui l’istruzione si trova. Se il valore della variabile è vero
il contatto si aprirà, impedendo così il flusso di energia.
Il contatto a fronte di salita, simbolo —I P I— , il quale si chiude, permettendo il
flusso di energia, solo quando il valore della variabile .booleana associata passa, tra
due successive esecuzioni della stessa istruzione, da falso a vero.
Il contatto a fronte di discesa, simbolo — I N I — , il quale si chiude, permettendo il
flusso di energia, solo quando il valore della variabile booleana associata passa, tra
due successive esecuzioni della stessa istruzione, da vero a falso.
I contatti sono quindi elementi di valutazione dello stato di variabili booleane (bit) e servono
per permettere o no il flusso di energia sul rung dove si trovano. Le bobine sono invece
elementi per operare sul bit le quali, se aumentate dal flusso di energia, agiscono sul valore
della variabile booleana associata. Le bobine disponibili sono:
•
•
•
•
36
bobina semplice, simbolo — ( ) — , la quale, quando le condizioni di alimentazione
sono verificate, assegna alla variabile booleana associata, il, valore uno, altrimenti il
valore zero;
bobina negata, simbolo —( / ) — , la quale opera in maniera duale, assegnando alla
variabile booleana il valore uno se non è alimentata, altrimenti il valore zero;
bobina a memorizzazione , (SET) o aggancio bobina, simbolo — (S) — , la quale, se
alimentata, assegna il valore uno alla variabile booleana associata: tale valore viene
conservato anche quando la bobina è disalimentata;
bobina a memorizzazione, (RESET) o sgancio bobina, simbolo — (R) — . la quale,
M.G.A. Servizi industriali – “Corso di programmazione PLC”
•
•
•
•
se alimentata, assegna il valore zero alla variabile booleana associata: tale valore
viene conservato anche quando la bobina è disalimentata;
bobina a fronte di salita, simbolo — (P) —, la quale assegna il valore uno alla
variabile booleana associata solo quando la sua alimentazione, tra due successive
esecuzioni, passa da assente a presente (generando quindi un impulso rettangolare di
durata pari all’intervallo tra le due successive esecuzioni);
bobina a fronte di discesa, simbolo — (N) — , la quale assegna il valore uno alla
variabile booleana associata solo se la sua alimentazione, tra due successive
esecuzioni, passa da presente ad assente;
Si segnala, inoltre, che lo standard prevede ulteriori tre istruzioni di tipo bobina: le
bobine a ritenuta — (M) — , — (SM) — e — (RM) —, le quali corrispondono,
rispettivamente, a — ( ) —,
— (S) — e — (R) — . ma implicitamente definiscono che la variabile booleana
associata deve essere mantenuta in caso di mancanza di alimentazione (equivalente a
utilizzare la parola chiave RETAIN nella definizione delle variabili),
Figura 2 - Funzione XOR.
In Figura 2 è riportata una rete in linguaggio a contatti con a fianco un cronogramma di
esempio per i valori (delle variabili booleane interessate: si riconosce che tale rete
implementa la funzione XOR. Per migliorare la comprensione si riporta l'equivalente
istruzione in testo-strutturato;
c := (a AND NOT(b)) OR(NOT(a) AND b) ;
In Figura 3 è mostrata una rete che implementa la memorizzazione dello stato di una
variabile booleana (flip-flop SET/RESET) attraverso la cosiddetta auto alimentazione della
bobina: si noti che per una corretta interpretazione di ciò che fa la rete si deve supporre che
essa venga eseguita in modalità ciclica o periodica.
L'equivalente in lesto strutturato è:
u := NOT(r) AND (s OR u) ;
dove la u al secondo membro dell'assegnazione è il valore relativo all'esecuzione
precedente. In Figura 4, la rete rappresentata implementa il riconoscimento di un fronte di
salita (equivalente al contatto a fronte).
L'equivalente in testo strutturato è
fr__a := NOT(aux) AND a;
aux := a;
La Figura 5, infine, realizza un flip-flop a commutazione di cui l'equivalente è
fr_i := NOT(i_precedente) AND i;
i precedente : i;
il fr_i THEN
37
M.G.A. Servizi industriali – “Corso di programmazione PLC”
if u THEN
u := FALSE;
ELSE u := TRUE;
END_IF
END_IF
Figura 3 - Flip-flop SET/RESET.
Figura 4 - Riconoscitore di fronte di salita.
Si noti che le prime due istruzioni realizzano il contatto sul fronte e che, a differenza della
rete in figura, non vi è bisogno della variabile ausiliaria, avendo .utilizzato un'esecuzione
condizionata per l'assegnazione del valore alla variabile u.
Il controllo del flusso del programma è realizzato con il salto che si ottiene ponendo in un
rung il costrutto ---»xxxx, dove xxxx è una stringa che indica dove si deve saltare (la stringa
è poi ripetuta, prima del rung cui si vuole saltare). In Figura 6 è proposto un esempio di salto
condizionato: se a è vera e b è falsa si salta l'esecuzione del rung successivo.
L'istruzione --<RETURN>~- è utilizzata per la terminazione di funzioni e blocchi funzionali.
Figura 5 - Flip-flop a commutazione.
38
M.G.A. Servizi industriali – “Corso di programmazione PLC”
Figura 6 - Salto condizionato.
La coppia di istruzioni di connessione —>yyyy> e >yyyy>-- , dove yyyy è una stringa, viene
utilizzata per spezzare un rung troppo lungo in più rung (Figura 27).
Figura 7 – Connettori
.
Diagramma a blocchi funzionali
Il diagramma a blocchi funzionali (Functional Block Diagram) è un linguaggio grafico che
prevede la costruzione dì reti di componenti m analogia a un circuito elettronico in cui un
flusso di segnale scorre sempre da sinistra verso destra. La sua applicazione migliore consiste
nella rappresentazione grafica di funzioni logiche booleane e operazioni aritmetiche; tale
linguaggio permette inoltre con semplicità di costruire programmi complessi connettendo
opportunamente blocchi funzionali e funzioni, magari sviluppali in altri linguaggi.
Una rete in diagramma a blocchi funzionali è una rete in cui le uscite di funzioni o blocchi
funzionali sono connesse all’ingresso di altre. Non vi sono quindi elementi intrinseci del
linguaggio. L'ingresso di una funzione o di un blocco funzionale può anche essere
direttamente il valore di una variabile o un valore costante. Le uscite possono anche essere
valori di variabili.
39
M.G.A. Servizi industriali – “Corso di programmazione PLC”
La negazione di una variabile booleana può essere indicata con un cerchietto posto prima
dell'ingresso del blocco grafico in cui entra la linea del segnale, anziché mediante la funzione
NOT.
E permessa la creazione di anelli chiusi, cioè l'utilizzo dell'uscita di una funzione come
ingresso di un'altra funzione che la precede a sinistra nell'anello. Un anello chiuso è
interpretato in questo modo: il valore di uscita calcolato viene conservato e utilizzato come
valore di ingresso nella successiva valutazione della rete. Poiché in una rete che contiene un
anello chiuso il valore delle uscite può dipendere dall'ordine in cui sono valutati i blocchi che
compongono l'anello, bisogna prestare attenzione al modo in cui l'ordine di valutazione è
realizzato nel particolare dispositivo che si utilizza.È possibile utilizzare anche connettori
grafici (simili a quelli definiti nel linguaggio a contatti) per trasferire il flusso del segnale da
una parte all'altra della rete.In Figura 8 è riportalo un esempio di rete in diagramma a blocchi
funzionali, in cui si è supposta l'esistenza delle tre funzioni o blocchi funzionali FI, F2 e F3.
Si noti l'utilizzo di un connettore che collega una delle uscite di F3 a uno degli ingressi di F2,
realizzando un ciclo chiuso.
Lista istruzioni
La lista istruzioni è un linguaggio di basso livello, di tipo assemblativo , composto da
sequenze di istruzioni, ognuna su un rigo diverso. Ogni istruzione è composta da un
operatore, eventualmente accompagnato da un modificatore, e da un operando. Un'istruzione
può essere preceduta da un'etichetta, composta da un nome seguito dal simbolo :.
Nell’interpretazione degli operatori si deve considerare che essi fanno sempre riferimento a
un accumulatore, oltre che all'operando indicato.
Figura 8 - Esempio di rete in diagramma a blocchi funzionali.
Gli operatori predefiniti sono:
•
•
•
•
•
40
LD per assegnare all'accumulatore il valore dell'operando, che può essere un valore
assoluto o una variabile di qualunque tipo;
ST per porre il valore dell'accumulatore nella variabile indicata dall'operando;
S per porre una variabile booleana a 1, nel caso che il valore nell'accumulatore sia
pari a uno;
R per porre una variabile booleana a O, nel caso che il valore nell'accumulatore sia
pari a uno;
AND oppure &, OR e XOR per realizzare operazioni logiche su variabili booleane;
M.G.A. Servizi industriali – “Corso di programmazione PLC”
•
•
•
•
•
ADD, SUB, MUL, DIV per realizzare le quattro operazioni aritmetiche;
GT, GE, EQ, NE, LE, LT per realizzare operazioni di comparazione (rispettivamente
maggiore, maggiore o uguale, uguale, non uguale, minore o uguale, minore);
JMP per saltare all'etichetta indicata nel campo operando;
CAL per realizzare la chiamala di un blocco funzionale;
RET per realizzare il ritorno da una funzione o da un blocco funzionale.
La chiamata di una funzione, invece, si effettua semplicemente indicandone il nome (e il
suo risultato sarà posto nell’accumulatore). Gli operatori possono essere seguiti da
modificatori:
•
il modificatore N indica una negazione booleana dell'operando, utilizzabile con LD,
ST, operatori booleani;
•
il modificatore parentesi aperta ( indica che la valutazione dell'operatore deve essere
fatta solo quando si trova la corrispondente parentesi chiusa ), utilizzabile con gli
operatori booleani, aritmetici e di comparazione;
il modificatore C, utilizzabile solo per gli operatori JMP, CAL e RET, significa che
l'esecuzione dell'operatore è condizionata al fatto che il valore corrente
dell'accumulatore sia 1 (o 0 se si usa anche il modificatore N).
•
A titolo di esempio, le istruzioni per realizzare la XOR tra due variabili booleane sono:
LD
ANDN
OR(
ANDN
a
b
b
a
(* inetti il valore di a nell'accumulatore *)
(* AND dell'accumulatore con il negato di b *)
(* OR dell'acc. col risultato dell'espressione *)
)
ST
c
(* conserva il valore dell'accumulatore in e *)
mentre quelle per realizzare un flip-flop a commutazione sono:
LD
i
ANDN i_precedente
JMPCN ava
(* salta se non c'è' il fronte di salita *)
LD
u
STN
ava:
ST
u
(* conserva il valore negato dell'accumulatore *)
LD i
i_precedente
41
M.G.A. Servizi industriali – “Corso di programmazione PLC”
CAPITOLO 5
Blocchi Funzionali
42
M.G.A. Servizi industriali – “Corso di programmazione PLC”
Unità di organizzazione della programmazione
Per l'organizzazione del software, lo standard introduce alcuni elementi comuni, i quali
prescindono dall'effettivo linguaggio, o insieme di linguaggi, che sarà utilizzato per la
programmazione. Essi sono, oltre alle variabili di cui si è già parlato:
•
•
•
le funzioni, unità di organizzazione della programmazione che, quando vengono
eseguite, forniscono valori in uscita dipendenti dai soli valori in ingresso;
i blocchi funzionali (o function blocks), unità di organizzazione della programmazione le quali, quando vengono eseguite, forniscono valori in uscita dipendenti
dai valori in ingresso e dallo stato attuale delle variabili interne (in altre parole, le
uscite dipendono, oltre che dagli ingressi attuali, dagli ingressi passati e dalle
condizioni iniziali del blocco);
i programmi, che rappresentano l'insieme logico degli, elementi e dei costrutti di
programmazione necessari al corretto trattamento dei dati.
Le funzioni, i blocchi funzionali e i programmi rappresentano nel loro complesso le unità di
organizzazione della programmazione (POU, Program Organization Units). Una POU è
composta da tre elementi:
•
•
•
la definizione del tipo di POU: del suo nome (e nel caso di funzioni anche del tipo di
dato associato al nome);
la parte dichiarativa delle variabili e dei loro attributi;
il corpo con le istruzioni nei linguaggi dello standard.
Oltre alle unità di organizzazione della programmazione vi sono poi:
•
i compiti (o task ), ossia gli elementi che controllano l’esecuzione di' programmi e
blocchi funzionali su base periodica, ciclica o al verificarsi di eventi particolari;
•
•
le risorse, che corrispondono a entità in grado di eseguire programmi;
la configurazione, l'elemento del linguaggio corrispondente a un dispositivo che
comprende
una
o
più
risorse.
Le funzioni
Le funzioni sono unità di organizzazione della programmazione riusabili, che a partire dai
valori in ingresso calcolano un solo dato di uscita ( quest’ultimo può essere anche a più
elementi). Il dato in uscita è rappresentato dal nome della funzione stessa, che può essere
direttamente usato all'interno di espressioni. Il risultato dell'esecuzione di una funzione non
deve dipendere dallo stato di variabili interne; in altre parole, agli stessi ingressi deve
corrispondere sempre lo stesso dato di uscita.
Le funzioni possono essere definite in maniera sia testuale sia grafica. La definizione testuale
è costruita secondo il seguente schema:
FUNCTION nome_funzione : tipo (* tipo delia funzione *)
VAR_INPUT
……..;
(* definizione dalle variabili di ingresso *)
END_VAR
…..
(* altre definizioni di variabili *)
43
M.G.A. Servizi industriali – “Corso di programmazione PLC”
…..
(* corpo della funzione che deve prevedere *)
(* l'assegnazione di un valore a
*)
(* nome_funzione
*)
END_FUNCTION
Il corpo della funzione può essere scritto in uno dei linguaggi definiti dallo standard, tranne il
Sequential Functional Chart. Nelle funzioni non possono essere definite variabili di uscita, di
ingresso/uscita, direttamente rappresentate, esterne, globali e accessibili. Non possono essere
definite, inoltre, variabili a ritenuta. La definizione grafica si ottiene utilizzando sempre le
parole chiave FUNCTION ed END FUNCTION, ma ricorrendo per la definizione
dell'interfaccia esterna a un blocco rettangolare, a sinistra del quale si pongono i parametri
d’ingresso e a destra del quale si mettono quelli di uscita; si provvede poi alla specificazione
dei nomi e dei tipi delle variabili interne, quindi alla scrittura del corpo della funzione in uno
dei linguaggi possibili (Figura 1).
Alcune funzioni possono essere "sovraccaricate", nel senso che possono essere utilizzate
con variabili di ingresso di diverso tipo. Esempi classici sono le funzioni numeriche, come
l'addizione, che sono utilizzabili con qualsiasi variabile di tipo numerico. Alcune funzioni
possono poi essere estendibili, nel senso che il numero dei loro ingressi non è specificato;
ancora una volta l'esempio:
Figura 1 - Definizione grafica della funzione soglia_satura.
classico è la funzione di addizione che può essere estesa a un generico numero di addendi.
Lo standard prevede la presenza di funzioni predefinite per le principali operazioni, altre
funzioni possono essere definite dall'utente. Le funzioni predefinite sono le seguenti.
•
•
44
Funzioni di conversione di tipo di variabili (con sintassi generica nella forma
TIPO1_TO_TIPO2 (variabile) - per esempio, se x è una variabile intera e y una reale,
y : = INT_TO_REAL ( x ) ) - e di troncamento (TRUNC).
Funzioni numeriche: valore assoluto (ABS), radice quadrata (SQRT), logaritmo
naturale (LN) e decimale (LOG), esponenziale naturale (EXP), seno (SIN) e arcoseno
(ASIN), coseno (COS) e arcocoseno (ACOS), tangente (TAN) e arcotangente
(ATAN).
M.G.A. Servizi industriali – “Corso di programmazione PLC”
Funzioni aritmetiche standard, tutte applicabili a variabili numeriche generiche
(ANY_NUM): addizione (ADD o +) e moltiplicazione (mul o *) estendibili, sottrazione (SUB o -), divisione (DIV o /), divisione intera (MOD), assegnazione
(MOVE o : =), elevamento a potenza (EXPT o * *).
• Funzioni applicabili a stringhe di bit (ANY_BIT): spostamenti a sinistra (3HL) e a
destra (SUR) di N bit con riempimento di zeri, rotazioni circolari di N bit (a destra,
ROR, o a sinistra, ROL), prodotto logico estendibile (AND o &), somma logica
estendibile (OR. o >=1 nei linguaggi grafici), OR esclusivo estendibile (XOR, o
=2K+1 nei linguaggi grafici), negazione (NOT) applicabile solo a una variabile
booleana.
• Funzioni di selezione, sovraccaricate a tutti i tipi di dati: selezione tra due (SEL),
multiplexer (selettore tra molti) estendibile (MUX), massimo estendibile (MAX),
minimo estendibile (MIN), saturazione (LIM).
• Funzioni di comparazione, sovraccaricate ed estendibili: maggiore (GT o >),
maggiore o uguale (GE o >=), minore (LT o <), minore o uguale (LE o <==), uguale
(EQ o ;-), diverso (NE o <>, non estendibile).
• Funzioni sulle stringhe di caratteri: lunghezza (LEN), estrazione di N caratteri a
destra, a sinistra o in mezzo (LEFT, RIGHT, MID), concatenazione estendibile
(CONCAT), inserzione di una stringa in un'altra (INSERT), cancellazione di caratteri
da una stringa (DELETE), sostituzione di caratteri all'interno della stringa
(REPLACE), presenza di una sottostringa (FIND).
• Funzioni relative a operazioni su variabili di tipo temporale.
Nel caso in cui le funzioni siano utilizzate in un linguaggio grafico, vale a dire nel linguaggio
a contatti o nel diagramma a blocchi funzionali, è possibile controllare che la funzione sia
eseguita attraverso un ingresso implicito di tipo booleano chiamato EN. Allo stesso modo
esiste, per ogni funzione, un'uscita implicita di tipo booleano, chiamata ENO, che diventa
vera quando la funzione è eseguita senza errori. Un utilizzo tipico si ha nella realizzazione di
catene di funzioni, in cui si vuole essere sicuri che ne sia eseguita una prima di procedere con
l'altra: allo scopo basta collegare l'uscita. ENO della prima all'ingresso EN della seconda.
Una funzione può contenere al suo interno solo chiamate ad altre funzioni, non a blocchi
funzionali o programmi. Si noti che non è previsto che una funzione possa chiamare se stessa
(ricorsione).Come esempio di definizione di funzione si consideri il seguente:
•
FUNCTION soglia_satura : REAL
VAR_INPUT
dato, lim_soglia, lim_sat : REAL;
END_VAR
IF ABS{dato) < lim_soglia THEN soglia satura := 0.0;
ELSE
soglia_satura :" MIN (MAX (dato,-lim_sat) ,lim_sat) ;
END_IF
END_FUNCTION
il cui scopo è facilmente comprensibile. Si noti che:
•
•
•
per la definizione del corpo della funzione si è usato il testo strutturato;
si sono utilizzate, nel colpo della definizione, delle funzioni matematiche predefinite;
la funzione sarebbe anche potuta essere definita graficamente, come in Figura 1.
Come altro esempio, si supponga di dover sottrarre un offset a una variabile che viene fornita
da un sensore in formato BCD. Una possibile funzione che realizza questa specifica è la
seguente:
45
M.G.A. Servizi industriali – “Corso di programmazione PLC”
FUNCTION correggi_sensore : WORD (* codifica BCD *)
VAR_INPUT
correggi : BOOL;
ingresso : WORD; (* codifica BCD*)
offset : INT;
END_VAR
IF correggi THEN
Correggi_sensore:=INT_TO_BCD(BCD_TO_INT( ingresso ) -offset);
END_IF
END_FUNCTION
in cui il corpo è stato espresso in testo strutturato. In Figura 2 la stessa funzione è definita
graficamente e il suo corpo è espresso in linguaggio a contatti. Si noti l’utilizzo delle
variabili implicite EN ed ENO.
I blocchi funzionali
I blocchi funzionali (function blocks) sono delle unità di organizzazione della programmazione nelle quali i valori delle uscite non dipendono solo dai valori degli ingressi ma
anche dal valore delle variabili interne.
Figura 2 - Definizione grafica della funzione correggi_sensore.
Ciò significa che i valori delle variabili interne e di uscita devono persistere tra due
esecuzioni successive del blocco funzionale.
La definizione di un blocco funzionale avviene con il costrutto:
FUNCTION_BLOCK esempio
VAR_INPUT
………….;
(* definizione dalle viiriabili di ingresso *)
END_VAR
VAR OUTPUT
………….;
(* definizione della variabili di uscita *)
END_VAR
(* altre definizioni di variabili *)
….
(* corpo del blocco funzionale *)
END_FUNCTION_BLOCK
Il corpo del blocco funzionale può essere scritto in uno dei cinque linguaggi definiti dallo
standard, compreso il Sequential Functional Chart.
46
M.G.A. Servizi industriali – “Corso di programmazione PLC”
La definizione grafica di un blocco funzionale si ottiene utilizzando sempre le parole chiave
FUNCTION_BLOCK ed END_FUNCTION_BLOCK ma ricorrendo per la definizione
dell’interfaccia esterna ad un blocco rettangolare: a sinistra si mettono i parametri di
ingresso, a destra quelli d’uscita; si provvede poi alla specificazione dei nomi e dei tipi delle
variabili interne e, infine, alla scrittura del corpo della funzione in uno dei linguaggi possibili.
Un blocco funzionale può contenere chiamate ad altri blocchi funzionali o funzioni. Non è
prevista la ricorsione, vale a dire la possibilità che un blocco funzionale chiami se stesso.
Per usare i blocchi funzionali, all’atto della loro definizione è creata un'istanza del blocco,
con un nome identificativo e una struttura dati univoca. Per l'utilizzatore solo i parametri di
ingresso e di uscita devono essere accessibili, non le variabili interne. Un'istanza di un blocco
funzionale si definisce a tutti gli effetti come una variabile, e in fondo essa corrisponde alla
definizione di una struttura dati. L'istanza di un blocco funzionale ha la stessa visibilità della
definizione di una variabile, e come una variabile può anche essere data quale ingresso a
un'altra pou.
Per esempio, se si è già definito il blocco funzionale esempio, due sue istanze valide si
ottengono con il costrutto:
VAR
istanza_1, intanza_2 : esempio;
END_VAR
Si potevano anche utilizzare le parole chiave VAR RETAIN, per indicare che i valori
dovevano essere conservati in caso di mancanza d’alimentazione, o VAR_GLOBAL per
indicare che le due istanze dovevano avere visibilità globale ecc.
Anche per i blocchi funzionali lo standard prevede che ve ne siano alcuni predefiniti. Data
la loro importanza, essi saranno presentati in dettaglio a livello sia di definizione sia di
utilizzo.
I flip-flop, cioè i blocchi funzionali per memorizzare una condizione logica, sono due,
definiti in questo modo:
FUNCTION_BLOCK SR (* priorità del SET *)
VAR_INPUT
SI, R : BOOL;
END__VAR
VAR_OUTPUT
Ql : BOOL;
END_VAR
Ql := SI OR (Ql AND NOT R) ;
END__FUNCTION_BLOCK
FUNCTION_BLOCK RS (* priorità del RESET *)
VAR^INPUT
S, Rl : BOOL;
END_VAR
VAR_OUTPUT
Ql : BOOL;
END_VAR
Ql := NOT Rl AND (Ql OR S) ;
END_FUNCTTON_BLOCK
47
M.G.A. Servizi industriali – “Corso di programmazione PLC”
I due flip-flop differiscono per come viene gestita la contemporanea presenza del valore
vero per i due ingressi.
Nella definizione del corpo del blocco si è usato il testo strutturato, ma si sarebbe potuto
usare anche il linguaggio a contatti, ottenendo:
per il flip-flop SR e:
per il flip-flop RS. Se questi due blocchi funzionali vanno utilizzati in un linguaggio
grafico, le loro definizioni grafiche sono quelle rappresentate in Figura 3.
Figura 3 - Definizione grafica dei blocchi funzionali SR e RS
I rilevatori di fronte sono due, uno per il fronte di salita e uno per il fronte di discesa:
FUNCTION_BLOCK R_TRIG (* fronte di salita *)
VAR_INPUT
CLK : BOOL;
END__VAR
VAR_OUTPUT
Q : BOOL;
END_VAR
VAR RETAIN
AUX : BOOL :- 0;
END_VAR
LD CLK
(* corpo in lista istruzioni *)
ANDN AUX
ST Q
LD CLK
ST AUX
END_FUNCTION_BLOCK
FUNCTION_BLOCK F_TRIG (*fronte di discesa*)
VAR_INPUT
48
M.G.A. Servizi industriali – “Corso di programmazione PLC”
CLK : BOOL;
END__VAR
VAR_OUTPUT
Q : BOOL;
END_VAR
VAR RETAIN
AUX : BOOL := 1;
END VAR
END_FUNCTION_BLOCK
La prima volta che questi due blocchi funzionali sono chiamati si può avere il
riconoscimento di un fronte, se la variabile d'ingresso è alta (o bassa, rispettivamente). Si noti
che il valore della variabile ausiliaria è ritenuto anche in mancanza di alimentazione. In
Figura 4 sono mostrate le loro definizioni grafiche.
I riconoscitori di fronte possono essere anche utilizzati implicitamente sulle variabili di
ingresso di altri blocchi funzionali: basta definire tali variabili con il tipo BOOL esteso con i
qualificatori R EDGE (per il fronte di salita) oppure F EDGE (per il fronte di discesa). In
caso di definizione grafica, sulle linee di ingresso possono essere posti i simboli > (fronte di
salita) oppure < (fronte di discesa).
I contatori sono blocchi funzionali che segnalano il raggiungimento di un valore di
conteggio. Esistono il contatore a incremento, quello a decremento e il bidirezionale. In
Figura 5 sono mostrate le loro definizioni grafiche (si noti la definizione implicita dei
riconoscitori di fronte su alcune variabili di ingresso). I significati delle variabili di ingresso e
di uscita sono i seguenti:
• CU è l'ingresso sui cui fronti di salita il contatore viene incrementato;
• CD è l'ingresso sui cui fronti di salita il contatore viene decrementato;
• R è il reset (porta a zero il valore di conteggio);
• PV è il valore di conteggio di ingresso;
• LD carica il contatore con il valore PV;
Figura 4- Definizione grafica dei blocchi funzionali R_TRIG e F_TRIG.
49
M.G.A. Servizi industriali – “Corso di programmazione PLC”
Figura 5 - Definizione grafica dei blocchi funzionali ctu, ctd e ctud.
• Q segnala che il contatore ha finito il conteggio, in pratica ha raggiunto il valore di
conteggio nel caso del contatore ad incremento oppure il valore zero nel caso del
contatore a decremento;
• QD segnala che il contatore bidirezionale ha raggiunto lo zero;
• QU segnala che il contatore bidirezionale ha raggiunto il valore PV;
• CV è il valore raggiunto dal contatore.
Vediamo in dettaglio il comportamento del contatore a incremento che viene impostato al
valore PV. A ogni fronte di salita di CU incrementa il valore di CV partendo da zero; quando
arriva al valore impostato mette l'uscita Q a 1 e non conta più. Il contatore può essere
resettato con l'ingresso R. La sua definizione è:
FUNCTION_BLOCK CTU (* contatore a incremento *}
VAR_INPUT
CU : BOOL R_TRIG; (* definizione implicita del fronte *)
R : BOOL;
PV : INT;
END_VAR
VAR_OUTPUT
Q : BOOL;
CV : INT;
END_VAR
IF R THEN
CV :- 0;
ELSIF CU AND (CV<PV) THEN
CV := CV + 1;
ENDIF
Q := (CV = PV);
END__FUNCTION_BLOCK
Naturalmente, la particolare implementazione dovrà prevedere un limite massimo per il
valore di conteggio PV assegnabile a un contatore. Questo limite può essere superato
ponendo i contatori in cascata tra loro. Per esempio, per i contatori a incremento, l'uscita QU
del primo può essere utilizzata come ingresso CU del secondo e come ingresso di reset R del
primo; l'uscita QU del secondo diventerà alta quando i fronti di salita sull'ingresso CU del
primo avranno raggiunto un numero pari al prodotto dei valori di conteggio PV.
50
M.G.A. Servizi industriali – “Corso di programmazione PLC”
Un altro gruppo di blocchi funzionali predefiniti molto importanti sono i temporizzatori o
timer. In Figura 6 sono definiti il timer a impulso (TP), il timer on-delay (TON) e il timer
off-delay (TOF) insieme a dei cronogrammi che ne chiariscono il funzionamento. I significati
delle variabili di ingresso e di uscita sono:
• IN è l'ingresso che fa partire le funzioni di temporizzazione;
• PT è il valore di tempo da contare;
Figura 6 - Definizione grafica dei blocchi funzionali tp. ton e tof e relativi cronogrammi.
• Q è l'uscita booleana su cui il temporizzatore agisce;
• ET è il tempo trascorso.
In particolare, il timer a impulso genera una finestra rettangolare di durata prestabilita sulla
sua uscita quando l'ingresso diventa vero. Un timer on-delay alza la sua uscita dopo che è
trascorso il tempo impostato da quando l'ingresso è diventato alto (se si mantiene alto,
altrimenti il timer si resetta). Il timer off-delay implementa un ritardo di spegnimento: l'uscita
diventa alta quando l'ingresso è vero e si abbassa dopo il tempo impostato quando l'ingresso
diventa falso.
Anche per i temporizzatori si può superare il limite massimo di conteggio utilizzandone vari
in cascata (realizzando un valore di conteggio pari alla somma dei singoli valori) o mettendo
un contatore in cascata a un temporizzatore (e in tal caso il valore di conteggio è dato dal
prodotto del valore impostato per il temporizzatore e del valore impostato per il conteggio).
Possono essere poi presenti blocchi funzionali predefiniti per realizzare comunicazioni tra
dispositivi diversi, per i quali non è stata ancora definita una standardizzazione.
Come esempio di blocco funzionale creato dall'utente, si presenta la definizione di un blocco
funzionale per gestire una risorsa comune (semaforo) il cui scopo è segnalare se una risorsa è
già occupata.
FUNCTION_BLOCK semaforo
VAR_INPUT
richiesta, rilascio : BOOL;
END__VAR
VAR_OUTPUT
impegnata : BOOL;
END_VAR
VAR
aux : BOOL := 0;
END_VAR impegnata := aux;
IF richiesta THEN
aux : - 1 ;
51
M.G.A. Servizi industriali – “Corso di programmazione PLC”
ELSEIF rilascio THEN
impegnata := 0;
aux := 0;
END_IF
END_FUNCTION_BLOCK
La definizione grafica di questo blocco funzionale è mostrata in Figura 7.
Un altro esempio di function block è quello per la realizzazione di un'onda quadra su una
variabile booleana, a partire dal valore falso, quando un'altra varia bile booleana è vera.
Figura 7 - Definizione grafica del blocco funzionale semaforo.
La definizione di un possibile function block che implementa tale funzionalità è:
FUNCTION_BLOCK ondaquadra VAR_INPUT
abilita : BOOL;
durata_ON, durata_OFF : TIME;
END_VAR
VAR_OUTPUT
uscita : BOOL;
END_VAR
VAR
(* si utilizzano due istanze *)
timer1, timer2 := TON;
(* di timer on-delay *)
END_VAR
(* corpo del blocco funzionale *)
END_FUNCTION_BLOCK
Il corpo del blocco funzionale in linguaggio a contatti, è rappresentato in figura 8. il corpo
scritto in testo strutturato è il seguente;
timer1(IN := NOT(timer2.Q) AND abilita, PT :=durata_OFF);
timer 2(IN := timer1.Q, PT :=durata_ON);
uscita := timerl.Q;
52
Figura 8 - Corpo del blocco funzionale ondaquadra espresso in linguaggio a contatti.
Figura 9 - Corpo del blocco funzionale ondaquadra espresso in diagramma a blocchi
funzionali.
dove si notino le chiamate dei blocchi funzionali di temporizzazione. Il corpo scritto in
diagrammi a blocchi funzionali è rappresentato in Figura 9, mentre quello scritto in lista
istruzioni è il seguente:
LDN
AND
ST
LD
ST
CAL
CAL
LD
ST
timer2.Q
abilita
timer1.IN
durata__OFF
timer1.PT
timer1
timer2(IN:=timerl.Q, PT:=durata_OFF)
timerl.Q
uscita
dove si notino i due diversi modi utilizzati per assegnare i parametri di ingresso ai blocchi
funzionali. Una possibile chiamata di questo blocco funzionale in testo strutturato è:
ondaquadra( abilita:=ing, durata_ON:=t#2s,
durata_OFF:=t#3s, uscita :=led) ;
mentre in Figura 10 la stessa chiamata A rappresentata graficamente.
Un ulteriore esempio di function block è quello per realizzare una specifica di antirimbalzo: si
vuole cioè valutare un valore booleano solo se è rimasto costante per almeno un certo tempo. In
53
Figura 11 vi è la definizione di questo blocco con il corpo espresso in linguaggio a contatti; m
Figura 12 il corpo è descritto in diagramma a blocchi funzionali.
Figura 10
Figura 11
Figura 12
54
CAPITOLO 6
Sequential Functional Chart
55
Il Sequential Functional Chart
Il Sequential Functional Chart (SFC) o diagramma funzionale sequenziale è un linguaggio di
programmazione efficace per la progettazione di algoritmi di controllo.
Nel 1975 in Francia fu istituita una commissione con lo scopo di cercare un mezzo per
descrivere i sistemi complessi di automazione industriale in modo innovativo rispetto alle
tecniche allora utilizzate.
Il risultato della commissione fu la definizione del GRAPHe de Coordination Etapes Transitions
(GRAFCET) che è stato adottato come standard internazionale dal Comitato Elettrotecnico
Internazionale nel 1987 e poi recentemente compreso tra i linguaggi di programmazione definiti
dallo standard IEC 1131-3 con il nome di Sequential Functional Chart.
Il Sequential Functional Chart è un linguaggio grafico finalizzato alla descrizione del
comportamento dei sistemi ad eventi discreti, cioè di quei sistemi in cui variazioni dello stato
non sono legate al trascorrere del tempo ma all’occorrenza di situazioni particolari.
Nella categoria dei sistemi ad eventi discreti rientrano certamente i sistemi di controllo dei
processi industriali e quindi l’SFC può essere impiegato con profitto nella progettazione di
algoritmi di controllo.
Se il dispositivo che deve realizzare il controllo lo accetta come linguaggio di programmazione
non vi è bisogno di ulteriori operazioni; se invece, come accade spesso, il controllore non lo
supporta occorre tradurre quanto progettato in un programma scritto in un altro linguaggio di
programmazione.
Gli elementi di base
Gli elementi di base dell’SFC sono :
• la fase, con le azioni ad essa associate;
• la transizione, con l’azione ad essa associata;
• l’arco orientato.
La fase può essere definita come una condizione invariante del sistema che può essere
modificata solo dall’occorrenza di un determinato evento che generando una transizione porta il
sistema in una nuova fase.
Essa è individuata univocamente da un numero (quella iniziale è contraddistinta da una doppia
cornice) e ad una fase può essere associata una o più azioni.
fase
5
apri valvola 3
azione
Figura 27:Esempio di programmazione SFC
Una fase può trovarsi in una condizione attiva in cui vengono attivate le azioni associate
(tipicamente indicata da un pallino nel suo simbolo), o inattiva in cui non viene svolta alcuna
azione.
In un SFC, alla generica fase n deve venire associata una variabile booleana Xn detta marker di
fase, che assume valore 0 se la fase è inattiva e 1 se attiva.
La transizione viene indicata con una barretta e con la sigla Tn, dove n è il numero che la
identifica.
Alla sua destra viene posta la sua condizione espressa come funzione booleana di variabili
booleane.
56
(ok AND T>20) OR NOT abilita
T32
Figura 28:Esempio di programmazione SFC
Gli archi orientati collegano tra di loro le fasi, stabilendone la sequenza, e sono interrotti dalle
transizioni le quali determinano le condizioni da soddisfare affinché si possano avere attivazioni
e disattivazioni delle fasi.
L’orientamento degli archi viene indicato con una freccia e può essere evitata nel caso che l’arco
sia orientato verso il basso e quando non c’è possibilità di ambiguità.
Due regole importanti per la costruzione di un SFC sono quelle che affermano che:
• tra due fasi collegate da un arco orientato vi deve essere sempre una transizione
• tra due transizione vi deve essere sempre almeno una fase.
Se più fasi convergono in una stessa transizione o se ad una stessa transizione succedono più
fasi, è consigliabile utilizzare una doppia linea orizzontale al fine di evitare di inserire archi
obliqui e di mettere in evidenza la fine e l’inizio di sequenze che devono evolvere i parallelo.
13
25
T22
41
51
61
71
Figura 29: Esempi di programmazione SFC
Le regole di evoluzione
Si definisce condizione di un SFC l’insieme delle sue fasi attive. Un SFC può cambiare la sua
condizione attraverso il superamento delle transizioni.
Affinché una transizione sia superabile si devono verificarsi entrambe le seguenti condizioni:
57
T1
tutte le fasi a monte della transizione devono
essere attive, in questo caso la transizione si
dice abilitata;
la condizione ad essa associata è vera.
T1
2
2
T2
T2
3
3
Figura 30
Ad esempio nella Figura 31 a transizione 22 è
abilitata essendo le fasi a monte, 13 e 25,
entrambe attive.
La transizione sarà superabile se e solo se la
variabile logica ok è vera e la variabile t è
maggiore di 20
13
25
T22
ok AND t >20
Figura 31
La regola di evoluzione dell’SFC afferma che:
se una transizione è superabile essa viene effettivamente superata: tutte le fasi a monte della
transizione vengono disattivate e tutte le fasi a valle vengono attivate.
Le variabili di ingresso e quelle temporali
Se si utilizza l’SFC per progettare sistemi di controllo, esso rappresenta il comportamento della
parte di comando del sistema automatizzato. Tale parte deve comunicare con la parte operativa,
cioè con il sistema fisico da controllare, attraverso valori comunicati dai sensori e i valori da
inviare agli attuatori .
segnale
Si ha un ingresso semplice quando la variabile
dell’SFC assume lo stesso valore (binario) del
sensore.
Si ha un ingresso a fronte quando la variabile
dell’SFC assume il valore 1 solo quando il
segnale del sensore varia da 0 a 1 (fronte di
salita) o da 1 a 0 (fronte di discesa).
variabile
sul fronte di salita
sul fronte di discesa
t
Figura 32
Nei sistemi di controllo si deve ricorrere molto spesso, per le transizioni di fase, a variabili
legate al tempo.
58
Nell’SFC la variabile temporale si indica con la notazione:
t / Xn / d
dove:
• t identifica la temporizzazione,
• Xn è il marker associato alla fase che fa partire la temporizzazione,
• d è la durata della temporizzazione.
•
La variabile temporale assume il valore 0 quando la fase n a cui è legata diventa attiva, assume il
valore 1 quando è trascorso il tempo d dall’ultima attivazione di Xn, ritorna al valore 0 se la fase
è disattiva.
Ad esempio quando la fase 33 diventa attiva viene
inizializzato un timer la cui uscita risulterà vera e
renderà la transizione T33 superabile solo dopo 20
secondi.
L’effetto à quello di aver attivata l’azione di
riscaldamento per tale tempo prima di avviare la
partenza del motore.
33
T33
scalda motore
t / X33 / 20 s
34
parti
Figura 33
Le strutture classiche
Le strutture classiche nella programmazione mediante SFC sono essenzialmente cinque:
La scelta
si ha una scelta tra più attività quando una fase è seguita da più transizioni.
1
T1
COND1
2
T2
COND2
3
Figura 34: Esempio di struttura ( La scelta )
Se la fase1 è attiva e la COND1 è vera e la COND2 è falsa sarà attivata la fase2; se la fase1 è
attiva e la COND1 è falsa e la COND2 è vera sarà attivata la fase3.
Per assicurarsi un’univocità nell’interpretazione del programma è consigliabile effettivamente
realizzare una scelta imponendo che le due condizioni siano mutuamente esclusive:
COND1 AND COND2=0
59
La convergenza
si ha una convergenza tra più attività quando le sequenze terminano nella stessa fase attraverso
transizioni diverse:
1
2
T2
T1
3
Figura 35: Esempio di struttura ( La convergenza )
In questo esempio si ha l’attivazione della fase3 sia attraverso il superamento della transizione1
che attraverso il superamento della transizione2
Si noti che se la fase3 è attiva per il superamento della T1 e successivamente si ha il
superamento di T2 la fase3 continuerebbe ad essere attiva.
Il parallelismo
si ha un parallelismo, o concorrenza, tra più attività quando una transizione è seguita da più fasi:
5
T1
11
21
31
Figura 36: Esempio di struttura ( Il parallelismo )
Se diventa superabile T1 saranno attive contemporaneamente le fasi 11, 21, 31, dando luogo a
diverse sequenze che evolveranno indipendentemente.
60
La sincronizzazione
si ha la sincronizzazione tra più attività quando più fasi precedono la stessa transizione:
11
21
31
T31
32
Figura 37: Esempio di struttura ( La sincronizzazione )
Condizione necessaria affinché quest’ultima sia superabile è che tutte le sequenze parallele
siano terminate e che quindi tutte le fasi siano attive.
Con riferimento all’esempio affinché la fase32 sia attiva dovranno essere attive le fasi 11, 21, 31
e la transizione T31 superabile.
La mutua esclusione
la mutua esclusione viene realizzata attraverso una particolare struttura detta a semaforo che
controlla l’attività di zone del diagramma:
25
35
T25
T35
26
36
90
T26
T36
27
T27
28
37
T37
38
Figura 38: Esempio di struttura ( La mutua esclusione )
Questa struttura è fondamentale quando una stessa risorsa è condivisa da più attività. In tal caso
occorre garantire che la risorsa non riceva ordini contraddittori.
61
Nell’esempio la struttura a semaforo è realizzata dalla fase90 e affinché sia realizzata la mutua
esclusione occorre che le due transizioni T25 e T35 siano mutuamente esclusive; in tal caso
soltanto una delle due sequenze potrà essere attivata.
(Si noti che la fase del semaforo deve essere sempre compresa tra le fasi iniziali.)
La forzatura
E’ possibile progettare la struttura di controllo mediante SFC gerarchici ciò significa dire che
possono esistere SFC, di livello gerarchicamente superiore, che condizionano l’evoluzione di
altri.
Un esempio classico è quello della gestione di un impianto handling di produzione con la
gestione degli allarmi di zona o più semplicemente, come nel precedente esempio, la
movimentazione di una zona di produzione condizionata da un deviatore di gestione del
funzionamento in automatico.
Affinché tale metodologia possa essere applicata ad una struttura di controllo basata su una
progettazione che utilizzi gli SFC occorre definire il concetto di forzatura.
La forzatura permette ad un SFC di livello gerarchico superiore di forzare quelli di livello
inferiore ad assumere una certa condizione (insieme di fasi attive) a prescindere dalle regole di
evoluzione
11
11
a
2
Forza
G2:{12}
Azione
A
12
a
X4
b
Azione
B
13
c
Azione
A
12
b
X4
Azione
B
13
c
Figura 39: Esempio di forzatura
La sintassi dell’azione è
FORZARE X:{Y}
dove X è il nome dell’SFC da forzare e Y è la condizione in cui deve essere forzato.
Dall’esempio precedentemente riportato si può interpretare la forzatura come una particolare
azione; il suo effetto sull’SFC forzato è equivalente all’aggiunta di una transizione superabile in
uscita da tutte le fasi che non devono diventare attive, e di una all’ingresso alle fasi che lo
devono diventare.
Nell’esempio la forzatura è intesa valida per tutta la durata della fase a cui è associata; potrebbe
anche essere associata ad un solo istante di attivazione della fase (forzatura impulsiva).
62
Se la condizione indicata nell’azione di forzatura è l’insieme vuoto si parla di sospensione di un
SFC. Il suo effetto è quello di disattivate tutte le fasi dell’SFC forzato.
11
11
a
2
Forza
G2:{ }
a
Azione
A
12
b
Azione
B
13
c
Azione
A
12
b
X4
X4
Azione
B
13
c
X4
Figura 40: Esempio di forzatura
63
CAPITOLO 7
Scansione del PLC
64
La scansione del PLC
Il PLC ha un funzionamento ciclico di tipo sequenziale; è in grado di eseguire le funzioni
programmate con ripetitività, da quando viene alimentato e messo in stato di RUN fino a quando
o lo si porta in stato di STOP e si toglie alimentazione oppure si presentino condizioni che
generino situazioni di guasto o di errore, con conseguenti malfunzionamenti e fermate del ciclo.
Il ciclo che compie è denominato ciclo di scansione, mentre il tempo che impiega a compierlo si
chiama tempo di scansione.
Ciascun PLC è costruito per operare secondo uno dei seguenti tipi di scansione:
• sincrona di ingresso e di uscita;
• sincrona di ingresso e asincrona di uscita;
• asincrona di ingresso e di uscita.
La scansione sincrona di ingresso e di uscita è schematizzata
LETTURA DELLO STATO DI
TUTTI GLI INGRESSI
nella figura 18.
Questo ciclo si configura in una lettura dello stato di tutti gli
Memorizzazione nel registro
immagine ingressi
ingressi presenti, con successiva elaborazione sequenziale
delle istruzioni del programma precedentemente stabilito; solo
ELABORAZIONE SEQUENZIALE
alla conclusione di questa fase avviene l’ attivazione delle
ISTRUZIONI
uscite.
Memorizzazione risultati nel
La CPU acquisisce tutte le informazioni riguardanti lo stato dei
registro immagine uscite
moduli di ingresso, una dopo l' altra, con una certa gerarchia
ATTIVAZIONE SEQUENZIALE
data dall' indirizzamento dei punti di input; lo stato logico di
DI TUTTE LE USCITE
questi input viene memorizzato nella parte di memoria dedicata (memoria dati), formando quindi una sorta di immagine
dello stato logico di tutti gli ingressi.
Fig. 18 - Scansione sincrona di ingresso
Segue poi l' elaborazione del programma da parte della CPU; e di uscita
durante questa fase gli stati delle uscite che man mano si
determinano sono assegnati al registro immagine delle uscite,
senza che siano inoltrati ai moduli di output.
Solamente dopo l’ esecuzione dell’ ultima istruzione del programma tutte le uscite vengono
effettivamente aggiornate, in modo sequenziale con gerarchia data dall’ indirizzamento dei punti
di output.
Terminato un ciclo, la scansione riprende dal primo passo, ripetendosi in continuazione; questo
vale, ovviamente, finché il PLC è mantenuto in stato di RUN.
Se durante lo svolgimento del ciclo appena descritto si verifica una variazione degli ingressi, è
quasi certo che questa non potrà essere rilevata che all' inizio di una nuova scansione.
Bisogna infatti considerare che la maggior parte del tempo di scansione è riservato all’
esecuzione delle istruzioni del programma, ed è quindi molto probabile che una modifica degli
ingressi avvenga proprio durante questa fase; di conseguenza la CPU non potrà tenere conto di
questo evento durante l’ elaborazione in corso.
Il tempo di risposta, ovvero il tempo che passa tra la variazione degli ingressi e la
corrispondente variazione delle uscite, è quindi di solito sempre superiore al tempo di scansione.
L' inconveniente non si dimostra particolarmente grave per molte applicazioni, dato l' ordine di
grandezza molto piccolo di questo tempo; è infatti di solito compreso tra 5 e 45 msec. a seconda
della quantità di istruzioni contenute nel programma e del tipo di CPU.
La scansione sincrona di ingresso ed asincrona di uscita é schematizzata in figura 19.
65
LETTURA DELLO STATO DI
TUTTI GLI INGRESSI
Memorizzazione nel registro
immagine ingressi
ELABORAZIONE SEQUENZIALE
CON EMISSIONE PRIMO
RISULTATO
Memorizzazione risultato nel
registro immagine uscite
ATTIVAZIONE USCITA
CORRISPONDENTE
ELABORAZIONE SEQUENZIALE
CON EMISSIONE SECONDO
RISULTATO
Memorizzazione risultato nel
registro immagine uscite
ATTIVAZIONE USCITA
CORRISPONDENTE
ELABORAZIONE SEQUENZIALE
CON EMISSIONE ULTIMO
RISULTATO
Memorizzazione risultato nel
registro immagine uscite
ATTIVAZIONE USCITA
CORRISPONDENTE
Fig. 19 - Scansione sincrona di ingresso e asincrona di uscita
Questo tipo di ciclo è sincrono di ingresso in quanto tutti gli input vengono letti
contemporaneamente, ed asincrono di uscita poichè l' invio dei risultati alle uscite viene fatto in
tempi diversi.
Gli ingressi vengono letti tutti ed una sola volta all' inizio della scansione; le uscite vengono
invece trasmesse all' esterno via via che maturano i risultati durante lo svolgimento del
programma: ogni uscita viene perciò attivata nel momento in cui è stata elaborata la funzione
logica ad essa assegnata.
Con questo tipo di scansione si ha un aggiornamento delle uscite più rapido di quello che
consente il ciclo precedente.
Il terzo modo di operare è quello asincrono di ingresso e di uscita ed è schematizzato nella
figura 20.
Gli ingressi sono aggiornati ogni volta che durante lo svolgimento del programma la CPU
incontra un’ istruzione che la obbliga a acquisirne lo stato.
Se un bit del registro immagine delle uscite viene modificato durante l’ elaborazione, si ha un
immediato invio dello stato logico risultante al modulo di output corrispondente.
Questo modo di funzionamento di un PLC, molto simile a quello di un computer, consente di
ottenere un tempo di risposta notevolmente ridotto rispetto ai primi due casi.
66
LETTURA DELLO STATO DI
INPUT DELLA PRIMA
SEQUENZA
Memorizzazione nel registro
immagine ingressi
ELABORAZIONE DELLA
PRIMA SEQUENZA
Memorizzazione risultato nel
registro immagine uscite
ATTIVAZIONE USCITA
CORRISPONDENTE
LETTURA DELLO STATO DI
INPUT DELLA SECONDA
SEQUENZA
Memorizzazione nel registro
immagine ingressi
ELABORAZIONE DELLA
SECONDA SEQUENZA
Memorizzazione risultato nel
registro immagine uscite
ATTIVAZIONE USCITA
CORRISPONDENTE
Si prosegue fino all'
ultima sequenza
Fig. 20 - Scansione asincrona di ingresso e di uscita
La scansione non è che una delle attività svolte dalla CPU dal momento in cui viene alimentata;
questa e tutte le altre funzioni possono essere effettuate grazie ad un sistema operativo,
memorizzato su ROM, residente nella scheda processore.
La figura 21 mostra un diagramma di flusso delle operazioni sequenziali che vengono compiute
dalla CPU di un PLC OMRON Sysmac C20H; da notare che la fase di inizializzazione viene
eseguita soltanto alla messa in tensione del PLC, mentre le altre operazioni sono svolte
ciclicamente in modo ripetitivo.
Generalmente i PLC hanno un timer di macchina, denominato watchdog (cane da guardia), che
viene regolato ad un certo valore (tipicamente 150 msec.); questo congegno ha la funzione di
fermare il ciclo se la scansione supera tale tempo massimo, onde evitare che si generino dei cicli
di programmi ripetitivi (loop) dovuti a malfunzionamenti.
Nel processo di scansione è piuttosto interessante definire la differenza esistente tra una
situazione di errore e una di allarme; questa varia tra macchina e macchina, e ad essa si può
risalire esclusivamente consultando il relativo manuale di funzionamento.
Nel modello C20H una situazione di errore si verifica, ad esempio, nel caso di:
- interruzione dell’ alimentazione per più di 10 msec.;
- errore nella CPU, con watchdog timer superiore a 30 msec.;
- errore nella memoria, derivante o da DIP switch male impostati o da EPROM non installata
nel modo corretto;
- mancanza dell’ istruzione di fine programma;
- errore sul bus di collegamento con gli altri moduli;
- errore di sistema, come tempo di scansione maggiore di 130 msec.
Una situazione di allarme si verifica, ad esempio, nel caso di:
- batteria scarica;
- errore nell’ area di registrazione del setup;
67
- superamento del tempo di scansione a causa di errori nel programma.
È importante che il tempo di scansione sia il più breve possibile, principalmente per due motivi:
- avere un tempo di risposta del PLC il più ridotto possibile (indipendentemente dal tipo di
scansione implementata sulla macchina);
- evitare malfunzionamenti (per esempio alcuni timer rapidi non funzionano al meglio con
tempi di scansione superiori ai 10 msec.).
Nel ciclo di scansione vi sono delle operazioni precostituite sulle quali l’ operatore non può
intervenire, e altre che invece hanno una durata variabile, a seconda del numero di moduli di I/O
da scrutare e della lunghezza del programma.
Al fine di aiutare l’ operatore nella scrittura di programmi compatti e veloci, i costruttori
forniscono delle tabelle che riportano i tempi richiesti da ogni operazione che costituisce il ciclo
di scansione.
Cicli monotask,
bitask, multitask
INIZIO
(Alimentazione ON)
In genere un PLC è
equipaggiato con un
Inizializzazione
microprocessore
che
gestisce il ciclo di
scansione
della
macchina;
in
gergo
Processi comuni
questo tipo di logica
programmabile
viene
denominata
monotask
poiché risulta essere uno
solo
il
lavoro
Esecuzione del
(programma)
da
programma
eseguire.
TEMPO DI SCANSIONE
DEL PLC
Si
sono
sviluppate
recentemente
anche
Controllo del tempo
di scansione
macchine bitask che
possono lavorare su due
programmi, che vengono
Rinfresco I/O
immagazzinati in due
ipotetici
contenitori
chiamati
task
master e
Gestione dispositivi
periferici
task fast.
La task master contiene il
Fig. 21 - Diagramma di flusso della scansione di un PLC lavoro che il PLC deve
eseguire correntemente;
OMRON C20H
la task fast (rapida) è
invece destinata alle
elaborazioni di breve durata con tempi di risposta brevi ( < 2 msec.), e viene attivata su eventi
esterni oppure interni al PLC o ancora in modo periodico.
La comparsa di una situazione particolare (per esempio input su ingressi rapidi, raggiungimento
valore di preselezione di contatore rapido o del temporizzatore rapido), interrompe la normale
scansione in task master e attiva la task rapida; il PLC esegue il piccolo programma custodito
nella task fast, per poi tornare al punto in cui si era interrotto nella task master e proseguire il
AZZERAMENTO AREE DATI
TEST DI TUTTE LE UNITA' DI I/O
RESET WATCHDOG TIMER
TEST HARDHARE E MEMORIA DI
PROGRAMMA
TEST = OK ?
SET FLAG DI ERRORE
ACCENSIONE LED SEGNALAZIONE
ALL.
ERRORE O ALLARME ?
RESET WATCHDOG TIMER
E PROGRAM COUNTER
ERR.
ESECUZIONE PROGRAMMA
NO
FINE ESECUZIONE ?
SI
CALCOLO TEMPO DI SCANSIONE
E ATTESA
RESET WATCHDOG TIMER
RINFRESCO I/O
GESTIONE INTERFACCIA RS232C
GESTIONE DISPOSITIVI PERIFERICI
68
ciclo normale1.
Questa architettura è dunque in grado di intervenire in modo opportuno rispetto a problematiche
diverse, anche se la gestione delle due task è affidata a un unico processore.
Se la modalità bitask può essere sufficientemente apprezzabile per risolvere determinate
situazioni, risulta insufficiente per livelli di gestione più complessi; non è in grado, infatti, di
risolvere i problemi che intervengono qualora dovessero essere gestiti contemporaneamente più
avvenimenti di carattere diverso.
Rimane comunque validissima l' applicazione dei sistemi a interrupt per la gestione di situazioni
di allarme, dove la task master viene interrotta momentaneamente per eseguire il programma (in
task fast) che risolve o semplicemente segnala l’ anomalia.
A livelli di gestione di automazioni medio - alte, l' architettura monotask o bitask non è più in
grado di svolgere le operazioni complesse necessarie, ed ecco allora una evoluzione ulteriore dei
PLC: la struttura multitask, progettata per una gestione dei sistemi automatici più integrata e
completa.
La sua configurazione vede da una parte la presenza di più task, ognuna dedicata a funzioni
diverse, che possono essere eseguite simultaneamente, grazie a un' architettura hardware
multiprocessore.
La struttura multitask prevede una serie di task indipendenti governate da una. task principale;
tra queste si possono ricordare:
- task master,
- task di interrupt,
- task rapida,
- task ausiliaria,
- task sistema.
In ciascuna task si potranno dichiarare dei moduli di I/O non configurati in altre task; in questo
modo si potranno avere scansioni molto più veloci in quanto ogni task scandirà solo gli I/O che
gli interessano e non tutti quelli presenti, abbreviando notevolmente i tempi di risposta.
RIASSUMENDO:
LETTURA DELLO STATO DI
TUTTI GLI INGRESSI
Memorizzazione nel registro
immagine ingressi
ELABORAZIONE SEQUENZIALE
ISTRUZIONI
Scansione sincrona di
ingresso e di uscita
Memorizzazione risultati nel
registro immagine uscite
ATTIVAZIONE SEQUENZIALE
DI TUTTE LE USCITE
Da questo diagramma di flusso possiamo vedere e sopratutto capire come funziona o come
“ragiona” un PLC
1
Questa modalità di funzionamento è quindi del tutto simile a ciò che avviene in un microprocessore quando è chiamato a gestire una richiesta
di interrupt.
69
Una cosa scontata ma fondamentale è che il plc esegue il ciclo di scansione solo quando il suo
modo di funzionamento è su RUN o su PROGRAM, mai quando è su STOP. Questi stati , a
seconda del plc , sono selezionati da un selettore fisico posto sul plc o da un comando impartito
tramite il computer direttamente collegato al PLC per la programmazione.
La prima operazione che compie è la lettura degli ingressi, e con questo intendiamo proprio tutti
, digitali , analogici, on board o su bus di campo (su schede remotate ovvero collegate al plc
tramite una rete di comunicazione).
Dopo aver letto tutti gli ingressi , il loro stato viene memorizzato in una memoria definita
REGISTRO IMMAGINE DEGLI INGRESSI.
A questo punto viene elaborato il programma. Le istruzioni di comando vengono elaborate in
Sequenza dalla cpu.
Al termine dell'elaborazione, il risultato viene memorizzato nel REGISTRO IMMAGINE
DELLE USCITE.
Infine , il contenuto dell'immagine delle uscite viene scritto sulle uscite fisiche ovvero le uscite
vengono attivate.
Poichè l'elaborazione delle istruzioni si ripete continuamente, si parla di elaborazione ciclica, Il
tempo che il controllore impiega per una singola elaborazione delle istruzioni del programma, è
denominato tempo di ciclo .
Quest'ultimo è costantemente controllato da un apposito sistema definito watchdog, che al
superamento del tempo massimo preimpostato causa un allarme che pone il plc nello stato di
STOP.
MODALITÀ CICLICA
LETTURA
RETE INGRESSI
AGGIORNAMENTO
USCITE
TEMPO DI
ATTESA
ESECUZIONE
PROGRAMMA
IN SEQUENZA
•LETTURA INGRESSI
•ESECUZIONE PROGRAMMA
•TEMPO DI ATTESA
•AGGIORNAMENTO USCITE
•GESTIONE DELLA RETE
TEMPO DI SCANSIONE
INTERVALLO DI TEMPO
NECESSARIO PER ESEGUIRE UN
CICLO DEL PROGRAMMA
70
LETTURA DELLO STATO DI TUTTI GLI INGRESSI
Memorizzazione nel registro immagine ingressi
ELABORAZIONE SEQUENZIALE CON EMISSIONE PRIMO RISULTATO
Memorizzazione risultato nel registro immagine uscite
ATTIVAZIONE USCITA CORRISPONDENTE
ELABORAZIONE SEQUENZIALE CON EMISSIONE SECONDO RISULTATO
Scansione sincrona di
ingresso e asincrona di
uscita
Memorizzazione risultato nel registro immagine uscite
ATTIVAZIONE USCITA CORRISPONDENTE
ELABORAZIONE SEQUENZIALE CON EMISSIONE ULTIMO RISULTATO
Memorizzazione risultato nel registro immagine uscite
ATTIVAZIONE USCITA CORRISPONDENTE
LETTURA DELLO STATO DI INPUT DELLA PRIMA SEQUENZA
Memorizzazione nel registro immagine ingressi
ELABORAZIONE DELLA PRIMA SEQUENZA
Memorizzazione risultato nel immagine uscite
ATTIVAZIONE USCITA CORRISPONDENTE
LETTURA DELLO STATO DI INPUT DELLA SECONDA SEQUENZA
Scansione asincrona di
ingresso e di uscita
Memorizzazione nel registro immagine ingressi
ELABORAZIONE DELLA SECONDA SEQUENZA
Memorizzazione risultato nel immagine uscite
ATTIVAZIONE USCITA CORRISPONDENTE
Prosecuzione fino all' ultima sequenza
71
CAPITOLO 8
Linguaggio AWL
72
Linguaggio AWL
Linguaggio a lista di istruzioni
La lista di istruzioni (AWL) è un linguaggio di programmazione in cui ogni istruzione include
un'operazione che usa un'abbreviazione mnemonica per rappresentare una funzione del
controllore programmabile. La combinazione di queste operazioni in un programma utente
produce la logica di controllo per la propria applicazione. Se il vostro programma è stato scritto
nel linguaggio di programmazione KOP, il dispositivo di programmazione crea una lista
corrispondente delle operazioni in AWL necessarie a realizzare lo schema a contatti. Nella
figura 1 è riportato l'esempio di un programma, scritto in lista di istruzione, nel quale sono
evidenziate le caratteristiche principali.
Ogni commento inizia con due barrette oblique //
//Programma per trasportatore
NETWORK 1
LD
I0.0
AN
I0.1
=
Q0.0
//Avvio motore;
//Se I0.0 è attivo (on)
//E se I0.1 non è attivo (off)
//Inserisci motore del trasportatore
NETWORK 2
LD
I0.1
O
I0.3
R
Q0.1
//Stop di emergenza per trasportatore:
//Se I0.1 è attivato (on)
//O se 10.3 è attivato (on)
//Disinserisci motore del trasportatore
Fig. 1 Programma in lista di istruzioni.
Per creare il programma in lista di istruzioni occorre conoscere come le CPU S7-200 adoperano
lo stack a nove bit per risolvere la logica. Lo stack, rappresentato nella figura 2, si può
immaginare come un vettore monodimensionale di celle i cui valori contenuti (0 e 1)
corrispondono agli stati logici intermedi di un segmento corrispondente in linguaggio a contatti.
Lo stack logico ha una profondità di nove bit ed una larghezza di un bit. Tutte le operazioni
lavorano con il primo o con il secondo bit dello stack. I nuovi valori possono essere introdotti (o
aggiunti) nello stack. Se i due bit più alti dello stack vengono combinati, viene prelevato dallo
stack il valore più alto e collocato al suo posto il valore successivo.La figura 3 mostra lo stack a
nove bit di una cpu S7-200;
73
Fig. 2
Fig.3
La maggior parte delle operazioni AWL sono di sola lettura dei valori dello stack logico, ma vi è
un discreto numero di esse che modificano altresì i valori memorizzali nello stack logico. Di
seguito vi sono alcuni esempi di utilizzo dello stack logico da parte di istruzioni AWL. In questi
esempi, le sigle da "aw0" ad "aw8" identificano i valori iniziali dello stack logico, la sigla "nw"
identifica un nuovo valore fornito dall'istruzione, mentre "SO" identifica il valore calcolato che è
memorizzato nello stack logico. Le operazioni booleane standard utilizzate in questi esempi
sono le operazioni AND (moltiplicazione logica) ed OR (somma logica).
Operazione LD
L'operazione di caricamento (LD) carica il valore di un contatto nella sommità dello stack
logico.
Nella figura 4 è rappresentata la logica di funzionamento dell'istruzione.
Carica un valore nuovo (nw) nello stack. I valori iniziali vanno da aw0 ad aw8.
74
PRIMA
DOPO
Fig.4
N.B.:aw8 va perso!
Operazioni A,O,ALD,OLD e di assegnamento(=)
Le operazioni "Combina il valore dì bit tramite AND" (A) e "Combina il valore di bit tramite
OR" (O) combinano il valore di un contatto con il valore della sommità dello stack. Il risultato
diventa il nuovo valore alla sommità dello stack. Le operazioni "Combina il primo ed il secondo
livello tramite AND" (ALD) e "Combina il primo ed il secondo livello tramite OR" (OLD)
combinano i due valori alla sommità dello stack. Il risultato della combinazione logica diventa il
nuovo valore alla sommità dello stack. L’operazione "Assegna" (=) copia il valore alla sommità
dello stack nel bit di destinazione specificato.Nella figura 5 sono rappresentati alcuni esempi di
queste istruzioni.
A ( oppure U)
O
Combina il valore nuovo(nw) con il valore
Combina i valori del nuovo(nw) con il
Della sommità dello stack tramite AND
valore della sommità dello stack tramite
I valori iniziali vanno da aw0 ad aw8
OR .I valori iniziali vanno da aw0 ad aw8
PRIMA
DOPO
PRIMA
DOPO
S0= aw0 * nw
75
ALD (oppure ULD)
PRIMA
DOPO
OLD
PRIMA
DOPO
S0 = aw0 * aw1
N.B. X può essere 0 o 1! = Copia il valore alla sommità dello stack nella
specificata. Tramite questa operazione lo stack rimane immutato
destinazione
Le operazioni “Duplicazione logica” (LPS), “Copiatura logica” (LRD) e “Prelevamento
logico”(LPP), eseguono operazioni speciali con il valore superiore dello stack.L'operazione di
duplicazione logica duplica e colloca il valore alla sommità dello stack. L'operazione di copiatura
logica copia aw1 in aw0 senza spostare lo stack. L'operazione dì prelevamento logico preleva
aw0 e sposta lo stack. Nella figura 6 sono rappresentati alcuni esempi di queste istruzioni.
LPS
Duplicazione logica
PRIMA
DOPO
76
LRD
Copiatura logica
PRIMA
DOPO
LPP
Prelevamento logico
PRIMA DOPO
Operazioni di stack: NOT, EU, ED
Le operazioni "Negazione del valore superiore" (NOT). "Rilevamento del fronte di salita" (EU) e
"Rilevamento del fronte di discesa" (LPP) eseguono operazioni speciali con il valore superiore
dello stack. L'operazione di negazione del valore superiore invece (nega) il valore superiore dello
stack. L'operazione di rilevamento del fronte di salita rileva una transizione da 0 a 1 da un ciclo
di scansione all'altro e imposta ad 1 il valore alla sommità dello stack quando tale transizione
viene rilevata. L'operazione di rilevamento del fronte di discesa rileva una transizione da 1 a 0 da
un ciclo di scansione all'altro e imposta ad 1 il valore alla sommità dello stack quando tale
transizione viene rilevata. La CPU S7-200 memorizza ogni operazione di rilevamento di fronte
in un bit. In questo bit viene immagazzinato il valore che nel ciclo precedente, prima
dell'operazione di rilevamento di fronte, si trovava alla sommità dello stack. Nella figura 7 è
rappresentato il funzionamento logico dell’istruzione NOT.
PRIMA
DOPO
Fig 7
Confronto tra linguaggio AWL e KOP
Nelle figure 8 e 9 sono riportati due semplici esempi realizzati in linguaggio KOP ed in AWL.
Ne primo esempio se l'ingresso I0.0 si attiva. la bobina di uscita Ql.O viene eccitata. Nel
secondo, l’eccitazione della bobina Q 1.0 è determinata sia dalla presenza del segnale di ingresso
I0.0. sia dalla presenza contemporanea dei segnali I0.1 ed I0.2.
KOP
AWL
Fig.8
LD I 0.0
Carica I0.0 nello stack
=Q1.0
Copia aw0 in Q1.0
77
DOPO
DOPO
KOP
AWL
LD I 0.0
LD I0.1
DOPO
DOPO
LD I0.2
S0=I0.1*I0.2
DOPO
OLD
=Q1.0
S0’=S00+I00
DOPO
DOPO
Principali istruzioni AWL
L'utente ha la possibilità di selezionare la visualizzazione del programma nel linguaggio KOP o
AWL. Non essendoci una corrispondenza uno a uno tra i programmi AWL e KOP, la
78
visualizzazione KOP può variare per taluni aspetti dalla originaria visualizzazione AWL. Ogni
segmento AWL che non può essere convertito in una visualizzazione KOP viene definito
"Segmento non ammesso" nella stessa visualizzazione KOP. Le principali istruzioni AWL sono
riassunte negli esempi seguenti.
1. Combina il valore di bit tramite AND.
L'operazione "Combina il valore di bit tramite And" (A) esegue una combinazione logica tramite
And del valore bit dell'indirizzo n con il valore superiore dello stack logico. Il risultato diventa il
nuovo valore superiore dello stack.
Esempio:
LD
I0.1
A
I0.2
=
Ql.0
2. Combina il valore di bit negato tramite And.
L'operazione "Combina il valore di bit negato tramite And" (AN) esegue una combinazione
logica tramite And negato del valore bit dell'indirizzo n con il valore superiore dello stack logico.
Il risultato diventa il nuovo valore superiore dello stack.
Esempio:
LD
I0.1
AN
I0.2
=
Ql.0
3. Carica il valore del bit negato.
L’operazione “Carica il valore del bit negato”(LDN) carica il valore del bit negato all’indirizzo n
alla sommità dello stack logico.Gli altri valori bit dello stack discendono di un livello.
Esempio:
LDN I0.1
AN
I0.2
=
Q1.0
4. Combina il valore di bit negato tramite OR.
L’operazione “Combina il valore di bit negato tramite OR” (ON) esegue una combinazione
logica OR NOT del valore di bit dell’indirizzo di ingresso n con il valore superiore dello stack
logico. Il risultato diventa il nuovo valore superiore alla sommità dello stack.
Esempio:
LD
I1.1
ON
I1.2
=
Q1.1
5. Resetta ed imposta
L’operazione “Resetta ed imposta”,resetta un campo di valori bit. I valori bit di 0 vengono scritti
in un campo che inizia da S_BIT per il numero di uscite specificato da N. Se S_BIT viene
indicato come un bit T o Z. vengono resettati a 0 sia il bit di temporizzazione e di conteggio che
il valore attuale di temporizzazione e di conteggio. L'operazione "Imposta" (S) setta un campo di
valori bit.I valori bit di 1 vengono scritti in un campo che inizia dall'indirizzo S_BIT per il
numero di uscite specificato da N.
Esempio:
79
LD
=
S
R
R
I0.0
Q2.0
Q2.1,1
Q2.2,1
Q1.0,3
//Setta S_Bit,N
//Setta S_Bit,N
Esempi con le istruzioni di base
Nella figura10 è riportato un esempio di impiego dell'istruzione AND. La combinazione logica
AND è caratterizzata dalla contemporanea esecuzione di condizioni diverse in modo tale che, se
due contatti sono collegati in serie tra loro, l'uscita sarà attiva soltanto quando entrambi saranno
nello stato logico alto (on).
LD
A
=
I0.0
I0.1
Q0.0
Fig.10
Nella figura11 è riportato un esempio di impiego dell’istruzione OR. La combinazione logica OR
verifica se è soddisfatta una, due o pi condizioni.E’ il tipico caso di più contatti collegati in
parallelo che azionano un uscita.
LD
O
=
I0.2
I0.3
Q0.1
Fig.11
Nella figura 12 è riportato un esempio di impiego dell’istruzione AND prima di un istruzione
OR.E’ il tipico caso di circuiti che prevedono lochi di contatti in serie da collegarsi in parallelo.
Nella figura i due contatti I0.0 ed I0.1 ed i due contatti I0.2 ed I0.3, sono collegati in serie. I due
blocchi sono poi collegati in parallelo ed attivano l’uscita Q0.2.
80
LD
A
LD
A
OLD
=
I0.0
I0.1
I0.2
I0.3
Q0.2
Fig.12
Nella figura 13 è riportato un esempio di impiego dell’istruzione OR prima di un istruzione
AND.E’ il tipico caso di circuiti che prevedono contatti in parallelo (OR) da collegarsi in serie
(AND) con altri blocchi di contatti.
LD
O
LD
O
ALD
=
I0.0
I0.2
I0.1
I0.3
Q0.3
Fig.13
Nella figura 14 è riportato un esempio di realizzazione di una marcia con autoritenuta eseguita
con le istruzioni AWL. Nell'esempio, l'ingresso I0.0 è quello di start, mentre lo stop è
rappresentato dall'ingresso I0.1. L'uscita attivata è la bobina Q0.4.
LD
O
A
=
I0.0
Q0.4
I0.1
Q0.4
Fig.14
Nella figura15 è riportato un esempio di impiego delle istruzioni di set e reset. La funzione di
autoritenuta della figura 14 è svolta, in questo esempio, con le funzioni di set e reset. Con
l'ingresso I0.2 si setta l'uscita, con l'ingresso I0.3 si resetta l'uscita. In questo caso è la funzione di
81
reset ad avere il predominio sul set della bobina in caso di segnali che giungano dai due ingressi
contemporaneamente.
LD
S
LDN
R
Fig.15
82
I0.2
Q0.5,1
I0.3
Q0.5,1
CAPITOLO 9
Piramide CIM
83
Piramide CIM
Quando si parla di automazione industriale o di controllo di processo,nelle loro accezioni più
semplici,ci si riferisce alla presenza di celle di lavorazione automatizzate dedicate all’esecuzione
di singole lavorazioni, le quali risultino essere ripetitive e/o pericolose per l’uomo. Tale
presenza, permette inoltre,di avere qualità superiore e costi inferiori per quei prodotti. Questo
tipo di approccio, però, porta alla realizzazione di isole di automazione non integrate tra di
loro,in quanto si affrontano ogni volta i problemi specifici alla singola lavorazione; tali isole
vengono realizzate, inoltre,mediante dispositivi di controllo eterogenei tra di loro,con protocolli
di comunicazione spesso incompatibili. Questo modello di automazione assicura comunque
l’ottenimento di numerosi vantaggi tra i quali l’aumento di produttività generale,la
flessibilità,una qualità più uniforme del prodotto.
E’ intuitivo prevedere che un miglioramento di tale situazione si possa ottenere attraverso una
maggiore integrazione tra i sottosistemi a livello aziendale,realizzata attraverso una
progettazione metodica dell’intero sistema informatico,che comporti l’utilizzo di dispositivi di
controllo,il più possibile standardizzati,la gestione dei flussi di informazione tra i vari
dispositivi, e il coordinamento tra tutti i fattori di produzione,compreso l’uomo stesso. L’essere
umano,infatti,non viene eliminato dalla produzione,ma è utilmente impiegato nel ruolo di
gestore,supervisore e manutentore dei sistemi automatizzati.
I vantaggi che si possono ottenere da questa diversa impostazione dell’automazione,che prevede
l’integrazione fra i sottosistemi di produzione,sono molteplici.
Tra i più importanti ricordiamo:
• il migliore utilizzo delle risorse,pianificando anche in tempo reale i processi produttivi;
• la massima flessibilità di produzione,essendo il sistema adeguabile a nuove lavorazioni
in tempi brevi;
• la riduzione dei tempi di produzione;
• il miglioramento della progettazione dei prodotti,fornendo alle macchine informazioni
non ambigue;
• l’identificazione,il riutilizzo delle informazioni relative ai prodotti;
• il miglioramento dei controlli sulla produzione e della qualità degli stessi
controlli,permettendo di controllare ogni prodotto invece di alcuni campioni;
• la riduzione degli scarti di lavorazione;
• la riduzione delle scorte di materie prime e dei magazzini per i prodotti finiti,gestendo la
cosiddetta produzione “Just in time”
Ciò che è stato appena descritto è quello che di solito viene indicato con la sigla CIM(Computer
Integrated Manufacturing,produzione integrata tramite elaboratori)
La logica CIM:
Definizione
Impiego articolato e cooperante della tecnologia informatica nei processi di:
• progettazione,
• produzione,
• distribuzione,
per acquisire un durevole vantaggio competitivo.
Ambito
Tutte le funzioni dell’impresa che possono:
• essere assistite dall’elaboratore,
84
•
•
essere automatizzate e quindi eseguite e controllate dall’elaboratore,
con un alto livello di integrazione.
La piramide CIM
Livello 0: sensori, attuatori, tools legati al processo esecutivo
Livello 1: sistemi industriali che comandano direttamente i processi al livello 0 (comando
individuale delle macchine e del processo – controllo di macchina)
Livello 2: workshop computer (comando centralizzato delle macchine e del processo – controllo
di cella)
Livello 3: high performance computer per il management e la supervisione delle unità di
processo (gestione della produzione – controllo di area)
Livello 4: mainframe per il governo del management, gestione commesse e amministrazione
centrale delle attività di fabbrica (pianificazione della gestione globale)
Livello 0: sensori/attuatori
E’ costituito dall’insieme dei sensori e degli attuatori, ossia dai dispositivi di campo che
vengono interfacciati direttamente all’impianto industriale costituendo la sezione di ingresso –
uscita del sistema di controllo.
La funzione del livello 0 è quella di riportare al livello sovrastante le misure di processo e di
attuare i comandi ricevuti da esso. Il livello di intelligenza richiesto ai dispositivi di campo è
limitata, dovendo essi soltanto trasdurre grandezze fisiche di varia natura (es. temperatura,
pressione, tensione, ecc.) a segnali tipicamente di tipo elettrico (corrente e tensione) e viceversa.
E’ bene notare come sia crescente la tendenza di dotare sensori ed attuatori di intelligenza
dedicata anche alla gestione di una interfaccia di comunicazione digitale e seriale.
Livello 1: Controllo di macchina
E’ costituito dai controllori, solitamente di tipo automatico o semiautomatico, interfacciati con i
sensori e gli attuatori dei dispostivi meccanici facenti parte di una stessa unità operatrice.
Le apparecchiature del livello 1 sono i controllori a logica programmabile (PLC, Programmable
Logic Controller), semplici sistemi di controllo distribuito (DCS, Distributed Control System),
centri di lavorazione a controllo numerico (CNC, Computer Numeric Controller).
Le funzioni cui il controllo di macchina è preposto sono la regolazione diretta delle variabili e la
realizzazione sequenziale di operazioni; tali operazioni non sono in genere molto complesse, ma
devono essere coordinate con quelle fatte eseguire alle altre macchine attraverso l’operato del
livello superiore.
85
Livello 2: Controllo di cella
I controllori costituenti questo livello regolano il funzionamento di tutte le macchine operatrici
costituenti una cella di lavoro attraverso la comunicazione con i relativi controllori; le
operazioni svolte a questo livello sono analoghe a quelle del livello 1 risultando soltanto più
complesse e a maggior spettro in varietà e dimensioni.
In modo analogo i controllori PLC e DCS del livello 2 sono più potenti in termini di capacità
elaborativa, memoria, comunicazione, ecc.; crescente interesse, soprattutto dal punto di vista
economico, rivestono le moderne soluzioni di automazione basate su Personal Computer (PC).
Livello 3: Controllo di area
E’ costituito dal sistema di supervisione, controllo e acquisizione dati (Supervisory Control And
Data Acquisition SCADA); le apparecchiature su cui sono implementate le piattaforme software
sono tipicamente Work Station o PC nelle applicazioni più semplici.
Le funzioni svolte a livello 3 sono quelle legate alla gestione dell’intero processo controllato:
gestione operativa intesa come impostazione del lotto da produrre o dei cicli di lavorazione,
gestione delle situazioni di allarme, analisi dei risultati, ecc.
Il controllo di area differisce sostanzialmente da quello di macchina e di cella, in quanto i
requisiti di elaborazione real-time sono fortemente ridotti; le funzioni infatti che devono essere
svolte a questo livello sono fortemente dipendenti dall’operatore eventualmente coadiuvato da
sistemi automatici di tipo gestionale che però lavorano su orizzonti temporali e con obiettivi
completamente differenti.
Restano invece molto importanti i tempi di risposta dell’intero sistema per quanto concerne la
rilevazione e segnalazione di eventuali situazioni di allarme in cui l’operatore può e deve essere
in grado di prendere provvedimenti.
Livello 4: Gestione globale
E’ quello della gestione azienda, potendo l’azienda essere composta da più stabilimenti. In
questo livello sono raccolte le informazioni dal livello inferiore per realizzare sistemi di
supporto alla decisione che aiutino gli amministratori a pianificare i flussi fisici (materiali) e
finanziari (investimenti) necessari al mantenimento dei livelli di produzione e al loro eventuale
miglioramento.
86
CAPITOLO 10
Reti di Comunicazioni
87
Reti per l'automazione
Le reti informatiche, rispetto agli altri possibili metodi, hanno il vantaggio di poter far
colloquiare tra loro apparecchiature diverse sia per tecnologia costruttiva (hardware) sia per
funzionalità espletate (software), e di poter aggiungere o rimuovere apparecchiature al sistema
senza dover necessariamente interrompere la produzione.
È quindi opportuno richiamare i concetti principali su cui si basano le reti informatiche,
descrivendone le varie funzionalità anche rispetto ai possibili impieghi. Un tecnico che lavori
nel settore dell'automazione ha, infatti, la necessità di utilizzare le reti piuttosto che quella di
progettare i dispositivi hardware e software che le fanno funzionare; egli le saprà utilizzare al
meglio, in ogni modo, solo se avrà compreso i concetti che ne regolano il funzionamento.
Il modello OSI
Il modello di riferimento per le reti informatiche è il modello OSI (Open System Interconnection) elaborato dalla ISO {International Standards Organization). Bisogna tener
presente che esso è un modello di riferimento per i produttori di reti informatiche piuttosto che
la descrizione di una rete reale.
Con riferimento alla Figura 1, in tale modello ogni nodo della rete è visto come una successione
gerarchica di sette livelli. Ogni livello comunica direttamente solo con il livello immediatamente
sottostante (richiedendo dei servizi) e immediatamente sovrastante (fornendo dei servizi) per
mezzo dì interfacce. Lo standard definisce quindi i servizi che ogni livello deve fornire e quelli
che può richiedere, e non come questi vengono poi effettivamente implementati.
Il primo che incontriamo partendo dal basso è il livello 1, o livello fisico, che si occupa della
trasmissione di sequenze binarie tra due nodi. Esso comprende la definizione
Figura 1
dei collegamenti meccanici ed elettrici trai nodi insieme ai driver software per le porte di
comunicazione (per esempio, i collegamenti meccanici ed elettrici potrebbero uniformarsi allo
standard RS232). La definizione di questo livello fissa quindi alcuni parametri della rete, come
la velocità e le modalità di trasmissione dei bit. Questo è l'unico livello in cui vi è un'effettiva
connessione tra due nodi.
88
Il secondo livello è il livello del collegamento dati ed è, come quelli che seguono, realizzato via
software. In questo livello viene verificato il corretto passaggio tra i nodi delle sequenze di bit
organizzate in strutture standard dette frame. Tali frame sono composti in partenza, aggiungendo
dei codici di controllo all'informazione da trasmettere, e verificati in arrivo; in caso di errore è
possibile recuperare le sequenze correggendole, quando possibile, o eventualmente
richiedendone la ritrasmissione. Il compito di questo livello è quello di assicurare ai successivi
una trasmissione dei dati senza errori tra i nodi interconnessi. In questo livello viene anche
definito come i differenti nodi possono accedere al mezzo di trasmissione senza interferire tra
loro (metodo di accesso).
Il terzo livello, il livello di rete, garantisce un sentiero logico anche tra due nodi non
direttamente connessi. In tale livello vengono quindi definite le caratteristiche della rete dal
punto di vista della sua gestione e vengono implementate le funzioni di instradamento e di
interconnessione tra i nodi.
Il livello successivo, livello 4 o livello di trasporto, permette di realizzare funzioni di trasporto
dell'informazione che siano indipendenti dalla struttura della rete. Questo livello assicura il
trasferimento dei messaggi in maniera affidabile, accertandosi dell'integrità del messaggio
ricevuto, composto da più sequenze di bit (pacchetti), e ritrasmettendolo in caso di necessità.
Esso realizza l'interfaccia tra la rete e il software applicativo dei successivi tre livelli.
Passando al livello 5, o livello di sessione, si entra nell'area utente. Questo livello gestisce lo
scambio ordinario dei dati e il sincronismo tra i nodi, rendendo possibile la connessione remota.
Questo livello comprende quindi le funzioni necessarie a supportare lo scambio di informazioni
tra differenti macchine, permettendo l'apertura, la gestione e la chiusura di un canale di
comunicazione.
Il livello 6, o livello di presentazione, è quello in cui avviene la codifica delle informazioni e la
loro conversione: i dati binari in sequenza sono collegati al loro significato e rappresentali in
forma di testi, figura o altro.
L'ultimo livello, il livello 7 o livello di applicazione, fornisce interfacce e servizi ai programmi
applicativi come il trasferimento di file tra nodi, la possibilità di operare su database distribuiti,
la capacità di controllo remoto delle macchine.
È importante ricordare che l’effettiva connessione fisica tra i nodi esiste solo al livello fisico; per
tutti gli altri livelli si può comunque supporre l'esistenza di una connessione virtuale. Ogni
livello può quindi interagire direttamente con il precedente e il successivo sullo stesso nodo e
virtualmente con l'omologo livello situato su altri nodi (attraverso i livelli sottostanti in
ambedue i nodi).
Le principali caratteristiche che differenziano tra loro le differenti realizzazioni delle reti
informatiche locali, cioè quelli in cui lutti i nodi sono fisicamente connessi tra dì loro, sono la
topologia, il mezzo di trasmissione e il protocollo di accesso.
La topologia
La topologia definisce l’architettura fisica della rete,ossia come i vari nodi sono collegati tra
loro.
Un primo esempio di topologia è quella bus,o ad anello aperto, che non comporta problemi per
l’aggiunta o l’eliminazione di nodi, poiché le informazioni viaggiano in maniera indipendente;lo
svantaggio principale è che esiste un unico instradamento possibile tra i nodi.
Un altro esempio è il rung, o anello chiuso,in cui i messaggi attraversono i nodi;questi ultimi
devono essere n grado di identificare a chi è stato trasmesso il messaggio ed eventualmente
rispedirlo.
Altra tipologia è quella a stella,in cui c’è un nodo primario connesso direttamente a tutti gli altri
nodi; tutti i messaggi tra i nodi devono necessariamente passare per il nodo primario. Sono
comunque possibili tipologie ibride.
89
Possibili tipologie di reti
Il mezzo di trasmissione
Il mezzo di trasmissione definisce il supporto fisico attraverso cui passano le informazioni ed è
quindi chiaro come le sue caratteristiche possano influenzare direttamente le prestazioni della
rete.
Il mezzo di trasmissione più semplice è il doppino intrecciato, o twisted pair, formato da due
conduttori isolali e che può essere schermato o no. L'utilizzo del doppino limita la massima
distanza di collegamento a qualche centinaio di metri e la velocità di trasmissione a qualche
Mbit/s: esso presenta, intatti, un'impedenza elettrica irregolare e una scarsa immunità ai disturbi.
Risulta però molto conveniente per la facilità di installazione e l'economicità.
Il cavo coassiale, un conduttore centrale con uno schermo, risolve i problemi del doppino ma
costa di più ed è di più difficile installazione. Esso può anche sostenere più canali di
trasmissione modulati a frequenze diverse, data la sua larghezza di banda passante.
La fibra ottica, che permette la trasmissione di informazione utilizzando segnali luminosi, è il
mezzo di trasmissione migliore soprattutto nei riguardi della velocità di trasmissione,
dell'immunità ai disturbi e della possibilità di avere canali multipli. Essa però è molto costosa e
la sua installazione è laboriosa e riservata a personale altamente specializzato.
Il metodo di accesso
Il metodo di accesso è una delle funzioni implementate al livello 2 collegamento dati, e deve
definire due aspetti nell'utilizzo della rete:
1. in ricezione, determinare a quali nodi è effettivamente destinato il messaggio e
quale nodo lo ha generato;
2. in trasmissione evitare confìitti tra più nodi che vogliano contemporaneamente
utilizzare il canale di trasmissione.
Per la risoluzione del primo problema, il metodo di accesso definisce un indirizzo univoco a
livello mondiale, che viene scritto in una memoria non volatile dal costruttore dell'interfaccia di
rete. È a volte possibile definire un indirizzo custom. Il metodo di accesso passerà alle altre
funzioni di livello 2 il messaggio presente sul canale solo se riconosce il suo indirizzo.
Per la risoluzione dei conflitti in trasmissione esistono varie tecniche; nel seguito si
descriveranno le più diffuse.
90
Un metodo di accesso centralizzato, o polling o master/slave, prevede l'esistenza di un nodo
principale (master) che interroga sistematicamente gli altri nodi (slave). Si tratta di un metodo
deterministico e affidabile ma non consente alte velocità di trasmissione ne la possibilità di dare
priorità di accesso; è comunque un metodo semplice da gestire e implementare
Un metodo di accesso a gettone prevede l'esistenza di una particolare stringa di bit, il token o
gettone, che viene passata in sequenza tura tutti i nodi della rete: quando una stazione riceve il
token può trasmettere ma, in ogni caso, non lo può trattenere oltre uno specificato periodo di
tempo. Si tratta di un metodo di accesso deterministico, nel senso che è calcolabile il tempo
massimo necessario affinchè due nodi possano comunicarsi un messaggio.
Altro metodo di accesso è il CSMA/CD (acronimo di Carrier Sense, Multiple Access/Collision
Detection). Secondo questo metodo ogni nodo, prima di trasmettere, ascolta la portante presente
sul mezzo di trasmissione per essere sicuro che il canale sia libero. Questo non assicura che più
nodi non cerchino di trasmettere contemporaneamente e, quindi, durante la trasmissione, il nodo
che trasmette rimane in ascolto per rilevare eventuali collisioni; se ve ne sono state, il nodo ritrasmette il messaggio dopo un periodo di tempo variabile determinato casualmente. Il problema
principale di questo tipo di metodo di accesso è di non essere deterministico; inoltre la sua
efficienza dipende dalla probabilità che si verifichino collisioni e,perciò, dal numero di nodi
collegati.
Il metodo di accesso CSMA/BA (acronimo di Carrier Sense, Multiple Access/Bit Ar-bitration)
prevede anch'esso che i nodi, se rilevano libero il canale di trasmissione, possano accedervi
indipendentemente, potendo quindi generare dei conflitti. Il meccanismo di risoluzione dei
conflitti non è però distruttivo del messaggio: ogni trasmissione inizia con una fase di
arbitraggio (sequenze particolari di bit) che permette, in caso di collisione, di riservare il canale
al nodo a priorità maggiore.
Un ulteriore metodo di accesso è quello a divisione di tempo. In questo metodo a ogni nodo
viene concesso ciclicamente un intervallo temporale in cui può trasmettere le informazioni. E’
un metodo che assicura il pieno determinismo ma è di più difficile implementazione per la
necessità di avere una sincronizzazione temporale tra tutti i nodi. Si noti che al nodo viene
concesso un intervallo temporale per la trasmissione anche se non ha comunicazioni da
effettuare.
Una variante del metodo di accesso a divisione di tempo è quello del produttore/consumatore. In questo metodo uno dei nodi è l'arbitro della rete; vengono identificati i nodi
che sono produttori di un certo tipo di informazioni e quelli che ne sono consumatori. L'arbitro
della rete, piuttosto di abilitare o meno i singoli nodi alla trasmissione, consente la
comunicazione di una certa informazione, implicitamente abilitando il suo produttore a
trasmetterla e i suoi consumatori a riceverla. La sequenza con cui le informazioni sono abilitate
ad essere trasferite fissa anche i tempi di aggiornamento dell'informazione, assicurando il
determinismo della rete. in questo metodo non vi è bisogno di trasmettere indirizzi, oltre al
messaggio utile, quindi aumenta l'efficienza di utilizzazione del canale di trasmissione.
Si noti che possono anche esserci metodi di accesso ibridi. Per esempio, è possibile pensare a
un metodo di accesso di tipo token solo tra un sottoinsieme di nodi principali; quando uno di
questi ha il token può poi anche interrogare (polling) un nodo secondario.
Standard per i livelli osi
Si parla di rete locale o LAN (Locai Area Network) se Ì primi due livelli del modello OSI sono
gli stessi per tutti i nodi connessi. Esistono varie realizzazioni di reti locali proprietarie, ma si
sono anche affermati alcuni standard come la Ethernet, la token bus e la token ring.
91
La rete locale Ethenet fu sviluppata alla fine degli anni Settanta dalla Xerox e poi implementata
da Digital e Intel; è descritta dallo standard IEEE 802.3. Ne esistono diversi tipi: qui si
descriverà la Full Ethernet, caratterizzata da una topologia a bus, con cavo coassiale schermato
come mezzo di trasmissione. La velocità massima di trasmissione è di 10 Mbit/s, con una
distanza massima di collegamento di 500 m per segmento (con al più 5 segmenti connessi da
ripetitori). Il numero massimo di nodi che vi possono essere connessi è 1024. La rete lavora in
banda base, quindi permette un solo canale di trasmissione. Non è previsto un segnale di
temporizzazione (clock); le informazioni vengono codificate in formato Manchester (ogni bit è
seguito dal suo negato) e i nodi riceventi si sincronizzano sulla sequenza di bit in arrivo.
La cella, il bit con il suo negato, dura 100 ns e questa durata determina la velocità. Un
messaggio completo è chiamato frame ed è composto da un numero di byte variabile tra 72 e
1526. Un frame contiene vari campi: il campo 1 è un preambolo di 8 byte per il sincronismo; il
campo 2, che contiene 6 byte rappresentanti l'indirizzo del destinatario o del gruppo di
destinatari, viene esaminato da tutti i nodi per stabilire se il messaggio è loro diretto; il campo 3
rappresenta con 6 byte l'indirizzo del mittente; il campo 4 descrive tramite 2 byte il tipo di protocollo usato nel campo dati; il campo 5 contiene i dati e può variare da 46 a 1500 byte; nel
campo 6 vi sono 4 byte utilizzati per il controllo della corretta ricezione del messaggio. Il
metodo di accesso utilizzato è il CSMA/CD.
La rete locale token bus, descritta dallo standard IEEE 802.4, prevede una topologia a bus e il
cavo coassiale o il doppino intrecciato come mezzo di trasmissione, con una velocità di
trasmissione variabile da 1 a 10 Mbit/s. Il metodo di accesso utilizzato è quello a gettone che
circola tra i nodi attivi; vi possono essere infatti dei nodi passivi che rispondono a una chiamata
diretta da parte di quelli attivi. Rispetto alla rete Ethernet, la rete token bus ha il vantaggio di
essere deterministica;
il ritardo massimo si ha quando un nodo, per trasmettere, deve aspettare che il gettone circoli tra
tutti gli altri nodi e che ognuno di questi lo trattenga per il tempo massimo consentilo.
Nella rete locale token ring, introdotta dall'IBM e descritta dallo standard IEEE 802.5, il principio
di funzionamento è simile a quello della rete token bus ma è previsto un anello fisico che fissa
l'ordine di passaggio del gettone. La velocità massima di trasmissione è di soli 4 Mbit/s ed è più
onerosa da implementare.
Anche per i livelli 3, livello di rete, e 4, livello di trasporto, del modello osi/iso si sono
sviluppate alcune standardizzazioni. La realizzazione più diffusa attualmente è il TCP/IP
(Transmission Control Protocol/Internet Protocol) il quale è costituito da un insieme di
protocolli per la gestione di rete. Tali protocolli sono stati sviluppati prima della definizione del
modello osi ma, essendo incorporati nella maggior parte delle versioni del sistema operativo
UNIX, si sono trasformati in uno standard defacto.
Un'altra realizzazione abbastanza diffusa per il livelli 3 e 4 del modello OSI è il DECNET,
sviluppato dalla Digital Equipment per i suoi sistemi VAX.
Integrazione tra reti
Molto importante è anche l'integrazione tra reti che viene realizzata per il tramite di dispositivi
particolari.
I ponti, o bridge, connettono le reti al livello 2; essi consentono la segmentazione del traffico,
gestendo localmente l'indirizzamento e unendo i vari segmenti in un'unica rete locale. Non li si
deve confondere con i ripetitori, che sono semplici rigeneratori di segnale necessari per
collegamenti molto lunghi; i bridge prima di ritrasmettere dei dati ne controllano l'indirizzo per
vedere se appartengono all'altro segmento o meno.
92
Gli instradatori, o router, connettono le reti al livello 3; essi stabiliscono come un pacchetto di
dati debba essere instradato per giungere a destinazione scegliendo, eventualmente, il migliore
tra più percorsi possibili.
I convertitori, o gateway, realizzano l'integrazione ai livelli 5, 6 e 7 traducendo messaggi tra reti
eterogenee.
Reti per l'automazione
Con riferimento alla struttura a livelli del CIM, ci si può rendere conto della necessità dell'utilizzo
di reti informatiche per permettere lo scambio di informazioni tra i dispositivi dello stesso livello
o di livelli contigui. D'altra parte, come già accennato, le esigenze di comunicazione da
soddisfare sono notevolmente diverse ai vari livelli. Nei livelli inferiori ci si trova alla prese di
un notevole numero di informazioni semplici, da trasferire frequentemente entro intervalli dì
tempo piccoli e certi. Ai livelli superiori l'esigenza è di trasferire informazioni complesse entro
intervalli di tempo di durata maggiore e non necessariamente determinata. La Figura successiva
riassume le differenti caratteristiche delle comunicazioni tra i vari livelli CIM.
•
•
•
Le dimensioni delle informazioni trasmesse aumentano dal basso verso l'alto (per
esempio, l'informazione generata da una fotocellula può essere rappresentata da un solo
bit, mentre un piano di produzione può richiedere qualche Megabyte).
La frequenza con cui sono trasmesse le informazioni aumenta dall'alto verso il basso
(per esempio, un sensore di posizione va interrogato ogni 20 ms mentre un piano di
produzione viene trasmesso una volta ogni 6 h).
La necessità che la trasmissione avvenga entro tempi certi (determinismo) aumenta
dall'alto verso il basso.
È possibile comprendere, quindi, come in un sistema di produzione integrato si renda necessario
adottare reti informatiche di tipo diverso, ognuna specializzata per il compito cui è dedicata. In
linea di principio, sì possono identificare tre categorie di reti: la rete per le informazioni, la rete
per il controllo e la rete per il campo.
La rete per le informazioni e quella che assicura le comunicazioni tra i dispositivi dedicati al
controllo e quelli dedicati alla gestione dello stabilimento e dell'azienda (livelli 4, 5 e 6 della
93
piramide CIM). È una rete che deve garantire il trattamento di informazioni di tipo complesso,
composte da molti byte; queste informazioni vengono inviate con frequenze non molto elevate e
non vi è bisogno di assicurare il trasferimento del messaggio entro intervalli di tempo
determinati. Una delle più frequenti realizzazioni per tale rete è quella che prevede lo standard
Ethenet per i livelli 1 e 2 osi. Molto spesso vengono utilizzati dei bridge per segmentare la rete,
in maniera tale da riunire sullo stesso segmento i nodi che più necessitano di comunicare tra
loro, migliorando in tal modo l'efficienza della rete.
La rete per il controllo deve assicurare le comunicazioni tra i dispositivi dedicati al controllo e
alla supervisione degli impianti (livelli 2, 3 e 4 della piramide CIM). In questo caso, le
informazioni inviate non sono molto complesse, ma diventa importante assicurare la loro
trasmissione entro tempi certi e a frequenze più elevate.
Molto spesso le realizzazioni esistenti di reti per il controllo sono di tipo proprietario, vale a dire
sviluppate dallo stesso costruttore dei dispositivi di controllo, e possono integrare tra loro i
dispositivi di quel costruttore e personal computer che siano dotati di schede e programmi
appositi per l'interfacciamento. Per tali reti i livelli 1 e 2 sono usualmente basati su un metodo di
accesso a token, dovendo assicurare il determinismo della trasmissione. Tutto il software per la
gestione di rete è di solito integrato nel sistema fornito dal costruttore;l’utilizzatore molto spesso
si può limitare alla configurazione della rete (collegamenti fisici tra i vari nodi e assegnazione
degli indirizzi logici) e all' utilizzo di apposite istruzioni per il trasferimento dei messaggi che
fanno parte del linguaggio di programmazione.
Ultimamente si sta affermando la tecnica di utilizzare lo standard Ethernet anche come rete per
il controllo, prevedendo la connessione tra i nodi tramite uno switch. In questo modo in ogni
segmento della rete è presente solo un nodo e lo switch rendendo, molto improbabile il rischio di
collisioni. È poi lo switch ad instradare i dati tra i diversi segmenti che vi afferiscono.
Un ulteriore tendenza recente è quella di utilizzare le reti per il campo anche come rete per il
controllo. Le reti per il campo o bus di campo, come sono comunemente denominate, sono state
introdotte recentemente per realizzare le comunicazioni tra i dispositivi di controllo e sensori e
attuatori "intelligenti", vale a dire dotati di un interfaccia di rete e dì un minimo dì capacità di
elaborazione (livelli 1 e 2 della piramide CIM). Nella prossima figura è rappresentato un
possibile schema concettuale per una realizzazione di automazione integrata in cui sono state
evidenziate le tre reti prima definite.
Il protocollo MAP
Nel mondo dell' automazione si sente spesso parlare di MAP (acronimo di Manufacturing
Automation Protocol, protocollo per l'automazione della produzione), un protocollo che è nato
dall'esigenza di unificazione e normalizzazione all'interno del processo di produzione. Con il
MAF si è tentato, in pratica, di definire uno standard per le reti informatiche per l'automazione,
definendo ognuno dei livelli OSI. A titolo di esempio, la parte LAN del MAP, definita dai livelli 1
e 2, era prevista essere una token bus a multifrequenza in modo da consentire allo stesso mezzo
di trasmissione di portare più canali.
Un’altra sigla che si incontra spesso è la specifica MMS (acronimo di Manufacturing Message
Specification, specifica per i messaggi di produzione),definita come lo standard per il livello 7
del MAP.Essa risponde all’esigenza di dover utilizzare simultaneamente,all’interno dello stesso
94
stabilimento,apparecchiature diverse come tipo e/o come fornitore (PLC,sensori,robot,computer
etc.). Si basa sul paradigma cliente/servente, in cui il dispositivo cliente richiede al dispositivo
servente di eseguire un compito specifico, come, per esempio, fornire dati, leggere un sensore o
aprire una valvola. Il servente è rappresentato da un VMD (Virtul Manufacturing Device,
dispositivo di produzione virtuale), quindi con un elevato grado di astrazione rispetto ai
dispositivi effettivamente esistenti. Tra i benefici che si ricavano dal suo utilizzo vi è la
portabilità dell' applicazione sviluppata, anche perché la MMS, isolata dal MAF, può essere usata
come livello 7 per altre reti (ed è usata, come si vedrà, in alcuni bus di campo).
Il tentativo di standardizzazione non ha avuto pieno successo, pertanto il concetto di MAP come
rete informatica per l'automazione non si è molto diffuso, anche a causa della complessità che
esso introduce. Si sono avuti dei tentativi di realizzazione di MiniMAP, in cui non è richiesta la
realizzazione di tutti i 7 livelli osi; il livello 7 è comunque reso conforme al MAP utilizzando la
MMS.
Reti di campo
Le reti di campo, comunemente chiamate bus di campo, sono delle realizzazioni di reti
informatiche per il collegamento tra dispositivi di controllo - come i controllori a logica
programmabile - e i sensori e gli attuatori presenti sul piano officina o campo.
La situazione tipica attuale è quella in cui i sensori e gli attuatori sono collegati al controllore
o direttamente, attraverso i moduli di ingresso/uscita presenti nel suo armadio, oppure tramite
una linea seriale da armadi di ingresso/uscita remoti. Utilizzando una rete di campo, invece, tali
dispositivi diventano a tutti gli effetti dei nodi di una rete informatica; ciò richiede naturalmente
che i dispositivi siano dotati di un minimo di capacità di elaborazione che permetta loro di
comunicare tramite la rete.
Le differenze principali di questo tipo di reti rispetto alle altre reti informatiche analizzate si
individuano nelle diverse esigenze che esse devono soddisfare, e cioè:
la maggiore brevità dei messaggi scambiati, la loro maggior frequenza, la possibilità di
assicurare una tempistica rigorosa, la possibilità di avere messaggi diretti a molti nodi
contemporaneamente (per esempio, un ordine di chiusura di tutte le valvole). Queste
caratteristiche portano alla realizzazione di reti "snelle", per così dire, dove sono definiti solo i
livelli Ì, 2 e 7 del modello osi. lasciando vuoti i livelli intermedi; eventualmente, alcune
funzionalità svolte da questi livelli e necessarie al funzionamento della rete sono inglobate nei
livelli previsti.
Tra i vantaggi che si riescono a ottenere con l'utilizzo delle reti di campo si ricordano:
•
•
•
•
•
•
la semplificazione delle architetture di controllo, in quanto tali reti sono facilmente
espandibili e riconfìgurabili;
la riduzione del cablaggio, con una conseguente diminuzione dei costi di installazione e
manutenzione dei cavi;
la possibilità di trasmettere informazioni più complesse e bidirezionali, in quanto i
dispositivi intelligenti possono operare delle elaborazioni locali del segnale per
linearizzarlo o convertirlo in unità ingegneristiche, possono segnalare il proprio stato al
controllore, possono chiudere anelli di regolazione locali.
la diminuzione della criticità dei tempi di risposta, essendo molte delle operazioni
necessarie, compresa la chiusura di anelli di regolazione, demandate al dispositivo che
possiede una capacità di elaborazione locale;
la, possibilità di calibrare tutti i vari sensori e attuatori via software da un solo
terminale connesso alla rete;
una maggiore robustezza delle tasmissioni, in quanto la trasmissione digitale è
intrinsecamente meno sensibile ai disturbi di quella analogica e permette, inoltre, di
95
•
implementare tecniche per il riconoscimento e la correzione degli errori di
trasmissione;
un'ulteriore riduzione del cablaggio, visto che alcune implementazioni di reti di campo
prevedono che nel livello fisico di connessione l'alimentazione necessaria ai dispositivi
passi nelle stesse linee su cui viaggiano i dati.
Uno dei maggiori ostacoli alla diffusione di tali reti è la necessità di avere sensori e attuatori che
siano interfacciabili.Tali dispositivi non sono ancora molto diffusi sia per il loro costo, sia per il
salto qualitativo che richiedono alle aziende che li producono, sia perché non si è ancora
affermato un unico standard per tali reti,
Nonostante tutti i dispositivi interessati a questo tipo di reti si trovino al livello più basso della
gerarchia CEM - il piano officina-, essi possono richiedere l'implementazione di differenti tipi di
comunicazione. Ciò ha portato alla nascita di tre differenti classi di reti di campo:
1. i sensorbus (bus di sensori) che operano a livello del bit;
2. i devicebus (bus di dispositivi) che operano a livello del byte;
3. i fieldbus (bus di campo) che operano a livello dei blocchi di byte;
I bus di sensori realizzano di solito unicamente i primi due livelli osi (fisico e di link dati) e il
loro scopo primario è la riduzione del cablaggio. La lunghezza tipica dei messaggi che sono
trasmessi è inferiore a un byte. Di solito i dispositivi già fruìbili vengono connessi alla rete
tramite un multiplexer, per cui non vi è bisogno di dispositivi "intelligenti" realizzati ad hoc.
Tra i più diffusi bus di sensori attualmente esistenti si ricordano l'ASI e il Seriplex. Un esempio
di dispositivo connesso potrebbe essere un sensore di prossimità induttivo senza diagnostica
interna.
1 bus di dispositivi permettono Il trasferimento di messaggi di lunghezza fino a 16-32 byte e,
oltre ai primi due livelli osi, realizzano alcune funzionalità appartenenti al livello 7, di
applicazione. Possono esservi connessi dispositivi tradizionali, mediante adattatori, o dispositivi
intelligenti, basati o no su di un microprocessore. Permettono anche la comunicazione di una
diagnostica semplice.Tra i bus di dispositivi più diffusi troviamo l'Interbus-S, il DeviceNet e
l'SDS, presentati nel seguito. Un esempio di dispositivo connesso potrebbe essere un sensore di
temperatura con delle funzionalità di diagnostica interna oppure una fotocellula che sia anche
capace di contare e comunicare i suoi cambiamenti di stato e di segnalare una riduzione del suo
guadagno dovuta a una lente sporca.
I bus di campo propriamente detti permettono la comunicazione di blocchi di byte (fino a un
migliaio di byte) e realizzano i primi due livelli OSI e il livello 7, oltre a un livello aggiuntivo
che viene detto livello 8 o di utente.
I dispositivi sviluppati per la connessione a un bus di campo includono algoritmi predefiniti che
vengono configurati via rete per adattarsi alla specifica applicazione. Essi includono, inoltre, un
sistema di gestione in tempo reale di una base dati il quale verifica e aggiorna tutti i dati in
maniera continua e li rende disponibili a tutti gli altri dispositivi presenti sulla rete. Un esempio
di dispositivo connesso potrebbe essere una valvola intelligente con un regolatore di portata
incluso e con possibilità di autodiagnostica e di configurazione avanzate. Un altro esempio è
rappresentato da un motore elettrico. Un motore tradizionale sarebbe cablato in maniera normale
e prevederebbe lo scambio di semplici informazioni: "sono alimentato", "sono in sovraccarico",
"devi metterti in movimento". Un motore "intelligente" potrebbe fornire molte più informazioni
(costruttore, data di installazione, periodo di manutenzione, stato, velocità, direzione di
movimento, coppia applicata, potenza assorbita, temperatura, stato dei cuscinetti, informazioni
sul carico derivate dalle relazioni coppia/fase ecc.) e realizzare localmente un controllo in
velocità o coppia, partenza e frenata dolce, piccole funzioni di controllo logico, essere capace di
comunicare in rete.
96
A livello di bus di campo, si sono affermate due realizzazioni conosciute con i nomi Profibus e
Foundation Fieldbus (in questo momento è in corso un tentativo di unificare questi due standard)
che saranno analizzate in dettaglio nel seguito.
Un impianto di controllo distribuito potrebbe impiegare tutte e tre le reti di campo fin qui
presentate, singolarmente o collegato tra loro: una rete del tipo bus di sensori potrebbe
rappresentare, per esempio, un nodo di una rete del tipo bus di dispositivi, come illustrato in
Figura.
ASI
La rete ASI (Actuator Sensor Interface, ossia interfaccia per sensori e attuatori) è una
realizzazione di un bus di sensori che può connettere fino a 31 nodi, ognuno a sua volta
connesso a 4 dispositivi di ingresso/uscita binari, per un totale di 124 dispositivi.
Il protocollo di comunicazione è basato su un chip particolare, il chip ASI, che deve essere
contenuto in ogni dispositivo connesso oppure in ogni nodo usato per connettere dispositivi
tradizionali. Il protocollo è di tipo master/slave a sequenza ciclica: tutti gli slave vengono
interrogati in successione e ricevono 4 bit di dati, che possono servire per il controllo delle
uscite, e rispondono con 4 bit, che possono rappresentare gli stati degli ingressi. Il tempo di ciclo
massimo è inferiore a 5 ms con una velocità di trasferimento di 167 Kbit/s, e la lunghezza
massima è di 100 m. I dispositivi che hanno bisogno di più di 4 bit per comunicare lo fanno in
cicli successivi, non rallentando il tempo di ciclo.
Il bus ASI richiede un'alimentazione di 24 V in corrente continua che viene distribuita attraverso
due conduttori non schermati e non intrecciati; gli stessi conduttori trasportano anche
l'informazione.
Seriplex
Il bus di sensori seriplex può connettere fino a 512 dispositivi in una configurazione sia
master/slave sia peer-to-peer.Ogni dispositivo deve contenere un chip ASIC con 32 funzioni
logiche che sono usate per realizzare il protocollo di comunicazione;dispositivi tradizionali
possono essere connessi tramite adattatori che contengono il chip ASIC.
I cavi di alimentazione e i cavi di comunicazione sono separati e la lunghezza dei collegamenti
può arrivare a 1500m.
Interbus-S
Il bus di dispositivi Interbus-S può gestire fino a 256 dispositivi, per un totale di 4096 ingressi
digitali e 4096 uscite digitali o combinazioni di ingressi e uscite digitali e analogiche. La
velocità di trasmissione raggiunge i 500 Kbit/s, la lunghezza i 400 m per segmento (fino a 32
segmenti). Il bus prevede diversi mezzi trasmissivi (doppino, fibra ottica, trasmissione a
infrarossi) per adattarsi a diverse necessità di collegamento; la topologia è ad anello.
97
La rete è gestita con un protocollo master/slave e utilizza la tecnica
correttezza dei messaggi
CRC
per il controllo della
Reti basati sul Bus CAN (DeviceNet e SDS)
Esistono dei bus di dispositivi che sono basati sul bus CAN, originariamente sviluppato per i
collegamenti dei dispositivi elettronici all'interno delle autovetture. Il bus CAN è un protocollo
aperto che prevede messaggi di lunghezza variabile (fino a 8 byte), un metodo di accesso di tipo
CSMA/BA con priorità non distruttivo (Ì messaggi non vengono mai perduti a causa di collisioni),
e un avanzato sistema per il controllo degli errori di trasmissione. Esso prevede l'impiego di 4
conduttori intrecciati (due per l'alimentazione e due per la trasmissione dei dati) schermati. La
velocità di trasmissione è variabile e dipende in maniera inversa dalla lunghezza della rete.
Il bus di dispositivi DeviceNet appartiene alle reti basate sul bus CAN. Può gestire fino a 64 nodi
per un totale di 2048 punti di ingresso/uscita digitali con una velocità massima di 500 Kbit/s.
Il bus di dispositivi SDS è anch'esso basato sul bus CAN e può supportare 64 nodi, che possono
diventare 126 utilizzando delle tecniche particolari di multiplexing degli indirizzi. La velocità di
trasmissione massima può arrivare a 1 Mbit/s.
Foundation Fieldbus
Il bus di campo Foundation fieldbus è basato sul modello OSI in cui si definiscono il livello
1(livello fisico),il livello 2(collegamento dati) ed il livello 7(applicazione). Viene inoltre definito
un ulteriore livello, il livello utente, che fornisce molte funzioni importanti come blocchi
funzionali, servizi di descrizione dei dispositivi e servizi per la gestione della rete.
Per il livello 1 - il livello fisico - ci sono due possibilità. La prima prevede l'impiego di un bus a
bassa velocità, denominato H1, con una velocità di 31,25 Kbit/s, una lunghezza massima dì
1900 m, e la possibilità di collegare fìno a 32 dispositivi, se non devono essere alimentati dal
bus, sino a 12 dispositivi, se devono essere alimentati dal bus, e sino a 6 dispositivi se devono
essere alimentati dal bus in una modalità sicura, a bassa energia, che permette l'utilizzo del bus
anche in ambienti pericolosi. Per il bus H1, i due conduttori trasportano sia l'alimentazione che i
dati. La seconda possibilità prevede l'utilizzo di un bus ad alta velocità, denominato HSE (high
Speed Ethernet), basalo sullo standard Ethernet, con velocità fino a 2,5 Mbit/s, lunghezza
massima di 750 m, e tino a 127 dispositivi collegabili. Le due soluzioni possono coesistere
attraverso l'utilizzo di un bridge di collegamento.
Il livello 2 - il collegamento dati -, gestisce il bus attraverso un dispositivo particolare, il
pianificatore attivo, il quale implementa un metodo di accessi deterministico e centralizzato che
prevede due modalità di comunicazione-, ciclica e aciclica. Nella modalità ciclica, il dispositivo
pianificatore controlla lo stato della rete e concede agli altri dispositivi, a istanti prefissati, il
permesso di inviare messaggi. Gli altri dispositivi possono ascoltare la rete e ricevere i messaggi
loro diretti (produttore/consumatore). Una porzione del tempo viene riservata per comunicazioni
acidi-che sollecitate dal dispositivo pianificatore attraverso l'invio dì un token.
Il livello 7 - il livello applicazione - contiene la FMS {Fieldbus Messaging Speci-fication),
derivata dalla MMS del MAP, che codifica e decodifica i comandi del livello addizionale utente.
Inoltre, contiene il dizionario degli oggetti, che permette ai dati di essere referenziati .sia per la
loro etichetta sia per la loro chiave identificativa.
Il livello addizionale 8 - il livello utente - implementa la strategia di controllo distribuito del
Fieldbus e definisce il modello software con cui l'utente della rete interagisce. Il livello prevede
98
dei blocchi funzionali che sono delle funzioni predefinite per realizzare varie operazioni, tra le
quali le operazioni di lettura e scrittura di dati, di controllo del dispositivo, di manipolazione
dell'informazione, di funzioni aritmetiche. È inoltre possibile per l'utente scrivere un blocco
funzionale ad hoc per particolari applicazioni. I blocchi funzionali possono anche essere
contenuti nei dispositivi: per esempio, un sensore di temperatura potrebbe contenere un blocco
funzionale per la lettura di dati analogici, mentre una valvola potrebbe contenere un blocco
funzionale che realizza un regolatore PID, oltre a un blocco funzionale per l'uscita analogica. Vi
sono inoltre servizi di descrizione dei dispositivi che permettono a un nodo di ricevere
informazioni da altri dispositivi, come il nome del costruttore, i blocchi funzionali disponibili
per quel dispositivo e le sue capacità diagnostiche; tutti i dispositivi connessi a un bus devono
avere una loro descrizione. Infine, questo livello comprende servizi per la gestione della rete
come l'assegnazione degli indirizzi e la pianificazione dell'esecuzione dei blocchi funzionali (per
esempio, potrebbe collegare assieme i blocchi funzionali del sensore di temperatura e della
valvola visti prima e stabilire che essi debbano essere eseguiti una volta ogni
secondo,realizzando così un anello di controllo locale tramite il bus.
Profibus
Profibus è un bus di campo proposto sia per il collegamento di un controllore master con
dispositivi slave, sia per comunicazioni peer-to-peer. In realtà, Profibus è piuttosto un insieme di
reti, pensate per applicazioni diverse, con protocolli compatibili tra loro.
Il livello 1 -il livello fisico ' prevede diverse implementazioni (RS485, RS485-IS, MBP e fibra
ottica), gestendo fino a 126 dispositivi collegabili con velocità che arrivano fino a 12 Mbit/s.
Anche il livello 2 -il collegamento dati - prevede varie implementazioni: DP-V0 che essenzialmente
realizza un metodo di accesso centralizzato in cui il master interroga ciclicamente i vari slave; DP-V1 che
vi aggiunge, tra l'altro, un metodo di accesso a token tra più master; DP-V2 che aggiunge un metodo di
accesso a divisione di tempo del tipo produttore/consumatore tra gli slave.
Il livello 7 implementa la specifica FMS, offrendo vari servizi per la comunicazione dei dati.
Sopra Il livello 7, Profibus definisce i cosiddetti profili, che sono le specifiche definite dai costruttori o
dagli utenti finali che riguardano proprietà, caratteristiche e comportamento dei dispositivi connessi. Ci
possono essere profili per applicazioni generali e profili per applicazioni particolari.
Secondo la combinazione di elementi scelta nella rete si parlerà di differenti. implementazioni
del Profibus, tra le quali le più note sono:
• Profibus-DP, più orientato all'automazione industriale, usa RS-485 come livello 1, uno dei
protocolli DP per il livello 2, e uno o più profili tipici dell'automazione industriale (come quelli
esistenti, tra gli altri, per i sistemi di identificazione materiale e per macchine a controllo
numerico);
• Profibus-PA, più orientato al controllo di processo, usa MBP come livello 1, DP-V1 come livello
2, un profilo specializzato per il controllo di processo;
• Motion Contrai with Profibus, orientato al collegamento di controllori per motori elettrici, usa
RS485 come livello 1, DP-V2 come livello 2, e un profilo specializzato (PROFIdrive).
99
CAPITOLO 11
Sistemi SCADA
100
Sistema di supervisione ( SCADA )
Uno SCADA è un sistema che consente di verificare il funzionamento di un dispositivo che si
trova rispetto all’operatore, in un’altra stanza, in un altro edificio o a centinaia di chilometri di
distanza. Pertanto è necessario l’uso di dispositivi di comunicazione per trasportare
l’informazione in maniera bidirezionale dal dispositivo all’operatore, e dall’operatore al
dispositivo.
Tali informazioni sono memorizzate da un calcolatore sotto forma di quadri sinottici, o serie
storiche, che ne evidenziano la variazione di stato.
L’uso del calcolatore è fondamentale per rispondere in maniera automatica al verificarsi di
particolari eventi, quindi l’operatore ha il solo compito di controllare che non si verifichino
eventi anomali , e nel caso, di intervenire di conseguenza.
Il software di supervisione SCADA, utilizza le informazioni provenienti dai controllori a logica
programmabile ( PLC ) per permettere lo sviluppo e l’esecuzione di applicazioni che richiedono
il monitoraggio e il controllo in tempo reale. Il software ha un suo sistema di run-time che
permette di aggiornare la base dati di processo mentre si sorvegliano gli allarmi, si visualizzano
sinottici, o si presentano tendenze.
Permette, inoltre, di progettare e animare le presentazioni grafiche e fornire tutti gli strumenti
necessari a configurare la base dati, attivare allarmi, costruire tendenze, riconoscere eventi,
registrare i dati e definire dati derivati.
Il concetto di supervisione nasce dall’esigenza di sostituire il controllo umano con un sistema
completamente automatizzato al fine di garantire un risultato più efficace e più veloce, infatti
tramite un sistema di supervisione si possono effettuare, anche nello stesso istante, diverse
tipologie di controllo: per esempio, si può verificare l’integrità di un dispositivo, il
malfunzionamento di alcuni suoi componenti o, ancora più importante, lo stato degli allarmi
dell’oggetto controllato.
In definitiva un sistema di supervisione garantisce il dialogo tra utente e macchina tenendo
conto, sia delle esigenze dell’azienda che possiede la macchina (affidabilità, e comunicazione
col sistema gestionale), sia delle esigenze dell’operatore (facilità di utilizzo e immediata
comprensione).
Un sistema SCADA prevede sia una struttura software, sia una architettura hardware.
Il telecontrollo
La gestione di decine di impianti sparsi in tutto il mondo richiede dispendio di risorse sia fisiche
che economiche.
Inoltre spesso non si è in grado, magari in maniera telefonica con un operatore locale, di capire
quale possa essere la possibile causa del guasto e si parte non conoscendo a cosa si va
incontro.E’ qui che entra in gioco il telecontrollo,ovvero la possibilità di pilotare, sorvegliare e
supervisionare a distanza le installazioni tecnologiche nelle più disparate applicazioni.
Telecontrollare significa, inoltre, ottimizzare il rendimento delle installazioni, aumentare la loro
efficienza e sicurezza, ridurre drasticamente i costi.
Un adeguato controllo permette un più corretto utilizzo delle risorse del territorio, evitando
inutili sprechi, prevedendo eventi naturali pericolosi, difendendo l'ambiente dalle innumerevoli
forme di inquinamento esistenti.
101
E' infatti evidente l'interesse che riveste per l'amministrazione comunale il poter tenere sotto
costante controllo visivo la quantità disponibile di acqua ed il suo consumo, come pure poter
accedere immediatamente sul PC ai dati storici di consumi nel passato per poter fare previsioni
per il futuro e quindi poter gestire il patrimonio idrico in maniera ottimale.
Il telecontrollo di un sistema di immagazzinamento e distribuzione di riserve idriche può
prevedere anche la utilizzazione di telediagnosi di guasti in zone non facilmente accessibili
come anche applicazioni di supervisione e monitoraggio, oltre alla telegestione, cioè il comando
a distanza di utenze e apparecchi (pompe, valvole ecc.)
Un innovativo sistema di telecontrollo integra le caratteristiche della migliore tecnologia dei
sistemi di acquisizione dati e supervisione presenti sul mercato, con le logiche di elaborazione
diagnostica dei Sistemi .Il Sistema Esperto di Telecontrollo così realizzato, risulta in grado di
utilizzare, non solo i dati on-line provenienti dal campo, ma anche la conoscenza e l'esperienza
degli esperti di gestione processo.
Sotto il nome di telecontrollo si raggruppano diversi tipi di servizi e tecnologie e una vastissima
serie di applicazioni. Si può intendere la sola lettura a distanza del dato, o la sola modifica a
distanza dello "stato del sistema" (attraverso relè e attuatori );in entrambi i casi con la possibilità
di registrare le variabili di interesse su diverse scale temporali ed ottenerne indicatori per vari
scopi.
Il costo dei sistemi di telecontrollo, peraltro, è andato progressivamente riducendosi, via via che
si presentavano soluzioni sempre più complesse ed integrate, grazie ai progressi dell'elettronica
di controllo e dei sistemi di comunicazione dei dati a distanza. Ciò consentirà presumibilmente
l'utilizzo di tale tecnologia in settori sempre più ampi, con beneficio per chi si occupa della
gestione dell'energia, che può giovarsi di un numero consistente di dati già predisposti per le
analisi richieste, può effettuare studi di fattibilità su interventi di razionalizzazione energetica
più precisi e può ridurre le spese di manutenzione e gestione dell'impianto.
Allo stato attuale non sono state proposte dall'Autorità schede per la valutazione standardizzata
di interventi nel settore del telecontrollo.
Più comunemente con telecontrollo si intende un sistema con entrambe le caratteristiche e con la
supervisione di un programma che gestisce automaticamente tutta una serie di funzioni.
Il monitoraggio continuo del funzionamento dei vari componenti, inoltre, permette di avvisare
automaticamente quando è il momento di eseguire manutenzioni preventive o straordinarie e
sostituzioni di componenti, con benefici economici e gestionali.
La possibilità di utilizzare sistemi di telecontrollo è stata già abbondantemente sviluppata e
realizzata in altri settori.
Si pensi alla gestione delle acque o al controllo di impianti che per la loro essere richiedono un
immediato intervento in caso di anomalie.
Il controllo on-line sarà basato fondamentalmente sull'utilizzo "sintomatico" di strumentazione
tradizionale di misura alla quale saranno associate logiche diagnostiche esperte.
Le procedure di consultazione del Sistema Esperto di Telecontrollo sono riassumibili nei
seguenti punti:
• Acquisizione dei dati relativi alle indagini preliminari.
Il Sistema utilizza le informazioni relativi alle ispezioni visive, misurazioni in campo,
ecc., che vengono eseguite giornalmente dalla maggior parte dei gestori, attraverso
l'acquisizione dati da files ASCII o digitati direttamente su tastiera;
•
102
Monitoraggio con relativa spiegazione diagnostica dei possibili malfunzionamenti.
Il Sistema sulla base delle informazioni pervenute dal data-entry e/o da un modulo di
supervisione è in grado di individuare le eventuali anomalie di funzionamento del
processo depurativo fornendo un quadro diagnostico di primo livello e attribuendo
automaticamente un giudizio complessivo di priorità di emergenza al relativo impianto
in esame.
Consultazione.
A partire dalla segnalazione di priorità di emergenza sul quadro di monitoraggio, il
Sistema prevede che si possa procedere alla fase di consultazione vera e propria del Sistema
Esperto.
•
Pertanto è necessario rendere congruenti tutte le informazioni disponibili in archivio
(indagini ispettive, misure in campo di parametri di funzionamento, misure di
laboratorio ed eventuali analisi microscopiche sul fango attivo), le quali oltre a costituire
ciascuna un contenuto informativo differenziato nella quantità e nella qualità, vengono
necessariamente rilevate in maniera temporalmente differente.
•
Acquisizione dei dati. L'acquisizione dei dati sono trasferite nel Sistema attraverso file
e/o data-entry.
•
Diagnosi. La diagnosi generata dal sistema esperto viene presentata in forma di
messaggio strutturato.
•
Rimedi (Azioni Correttive). A valle della diagnosi, il Sistema Esperto - sulla base dello
stato di consistenza dell'impianto - individua le azioni correttive più appropriate a
rimuovere le cause della disfunzione segnalata nella diagnosi.
Il Sistema Esperto è in grado di produrre un report cartaceo sia dell'intera consultazione
effettuata relativamente a ciascun impianto, sia di parti di essa.
Trend Grafico dei Dati Storici. Il Sistema Esperto è in grado di produrre il trend grafico delle
variabili preimpostate relative ai dati storici che si vuol tenere sotto controllo.
Segnalazione delle situazioni di emergenza in forma grafica-alfanumerica e per via telefonica
attraverso comunicazione vocale o SMS sul GSM degli operatori di turno.
Comunque per alcuni impianti specie quelli pubblici
le norme UNI impongono come vincolo il controllo visivo dell’impianto prima di una eventuale
riaccensione da anomalia.
Ecco perché l’impiego è ancora poco diffuso.
La collocazione di un sistema webcam potrebbe in qualche modo aggirare la norma e permettere
un utilizzo mirato di questo sistema.
103
CAPITOLO 12
Normative
104
Lo standard IEC 1131
Lo standard IEC 1131 definisce i linguaggi di programmazione per sistemi di controllo, in
generale, e per i controllori a logica programmabile, in particolare.
Tale standard dovrebbe far progredire verso una normalizzazione della sintassi dei linguaggi di
programmazione che conduca a metodi moderni per lo sviluppo di applicazioni
(programmazione strutturata, modularità del software), aiuti la portabilità dei codici tra
macchine diverse, faciliti la verifica dei codici, permetta di riutilizzare codice già sviluppato,
riduca i costi ed il tempo di sviluppo.
La norma si divide in:
• IEC 1131-1 Informazioni generali (1992)
• IEC 1131-2 Specifiche dei test sui prodotti (1992)
• IEC 1131-3 Linguaggi di programmazione (1993)
• IEC 1131-4 Raccomandazioni e consigli per l'utilizzatore
• IEC 1131-5 Specifiche dei servizi di comunicazione
La norma IEC 1131-3 definisce i Linguaggi di Programmazione e, per ciascun linguaggio:
La sintassi e la simbologia degli oggetti di programmazione.
La struttura dei programmi.
La definizione delle variabili di programmazione.
I linguaggi normalizzati sono:
• Ladder Diagram o diagramma a contatti (LD): è un linguaggio che prevede l’utilizzo di
elementi tipo contatto aperto, chiuso e bobina, tipici degli schemi a relè.
• Instruction List o lista di istruzioni (IL): è un linguaggio simile a quelli assemblativi per
computer.
• Structured Text o testuale strutturato (ST) è un linguaggio ad alto livello simile al
Pascal.
• Sequential Function Chart o diagramma funzionale in sequenza (SFC): è un linguaggio
gerarchicamente superiore agli altri che permette di formulare applicazioni di tipo
sequenziale usando concetti di fase (azioni da compiere) e transizione (condizioni da
soddisfare per passare da una fase ad un’altra)
• Function Block Diagram o diagramma a blocchi funzionale (FBD): è un linguaggio
basato su logica binaria, esso consiste in una rappresentazione grafica di elementi logici
quali AND, OR e NOT.
La norma IEC 1131 si applica ai Controllori programmabili (e alle periferiche associate) e in
particolare la Parte 3, tradotta in Norma Italiana 65-40 (CEI EN 61131-3), specifica le regole
sintattiche e semantiche dei linguaggi di programmazione, le quali soddisfano in genere le
necessità di qualsiasi operatore che si avvicini a tale ambiente.
Tale filosofia di adattabilità è sostenuta dal fatto che l'introduzione del PLC nelle aziende deve
avvenire nel modo più naturale possibile, senza sconvolgere le metodologie di impiego delle
apparecchiature che vanno a sostituire; infatti, se nelle fabbriche di nuova concezione e
costruzione il PLC è elemento essenziale nella gestione dei processi, molti sono ancora i reparti
lavorativi e le macchine dove potenzialmente il PLC può essere impiegato per rimpiazzare
vecchie apparecchiature con logica a relè.
Sono di seguito analizzate alcune caratteristiche salienti estratte dalla normativa.
Due elementi importanti della programmazione dei PLC sono rappresentati dalle variabili e dalle
unità di organizzazione di programma.
Una variabile può essere dichiarata come appartenente ad uno dei tipi elementari o ad un tipo
derivato, inoltre essa viene rappresentata simbolicamente con degli identificatori.
105
E’ necessario che il costruttore del PLC specifichi la corrispondenza tra la rappresentazione
diretta delle variabili di I/O e la locazione fisica dell'elemento indirizzato in ingresso o in uscita
alla quale la variabile fa capo.
Se degli interi sono separati da punti, la rappresentazione deve essere letta come un indirizzo
gerarchico fisico o logico, nel quale la parte a sinistra indica il livello più elevato della gerarchia,
mentre quella destra l'inferiore.
Per esempio, la variabile:
%IW1.4.6.1
indicherà il primo canale (parola) del sesto modulo del quarto rack del primo bus di I/O di un
sistema a controllore programmabile.
L'uso dell'indirizzamento gerarchico che permette al programma l'accesso ai dati di un secondo
controllore programmabile si deve considerare un'estensione di linguaggio.
Le variabili rappresentate direttamente sono consentite solamente nei programmi (vale a dire
quegli insiemi logici composti da tutti gli elementi e costruzioni del linguaggio di
programmazione che permettono di gestire ed elaborare i segnali per il comando di una
macchina o di un processo mediante un PLC), nelle configurazioni (in altre parole negli
elementi di linguaggio che corrispondono ad un sistema a controllore programmabile) e nelle
risorse (cioè in quegli elementi di linguaggio che corrispondono ad una funzione di trattamento
di segnale, alle sue funzioni di interfaccia uomo-macchina e alle eventuali funzioni di interfaccia
di sensori e attuatori).
Le variabili a molti elementi sono invece rappresentate da:
• array, insieme di elementi di dati che appartiene allo stesso tipo di dato, indicizzati da
uno o più indici racchiusi tra parentesi e separati da virgole;
• strutture, un tipo di dato formato da un insieme di elementi nominati, rappresentato da
almeno due identificatori separati da un punto (.) il primo dei quali indica il nome
dell'elemento strutturato, mentre i successivi rappresentano la sequenza di nomi che
permettono l'accesso ad un elemento particolare nella struttura di dati.
Le unità di organizzazione di programma (POU), invece, sono costituite dalle funzioni, dai
blocchi funzionali e dai programmi. Esse si possono trovare precostituite (dal costruttore) o
possono essere programmate dall'utilizzatore. Le unità di organizzazione di programmi non
possono invocare altre unità dello stesso tipo (cioè non devono essere ricorsive).
I tipi di dati elementari previsti dalla Norma sono elencati nella successiva tabella e
rappresentano un insieme strutturalmente completo per soddisfare le esigenze di
programmazione di ogni utente PLC.
Ad ognuna di queste zone è possibile accedervi con un determinato formato. Il formato è la
quantità di bit che viene presa in considerazione dall'istruzione che stiamo componendo. Ad
esempio se vogliamo utilizzare una memoria come se fosse un relè (on-off) utilizzeremo il
formato a BIT, ovvero un singolo bit può contenere gli stati 0 - 1 . Se dobbiamo elaborare un
valore avremo bisogno di unire più bit la cui codifica sarà il nostro valore, quindi, in base alla
grandezza del valore da contenere dovremo scegliere quanti bit ci servono.
Parola chiave
BOOL
SINT
INT
106
Tipo di dato
Booleano
Intero corto
Intero
Bits
1
8
16
DINT
LINT
USINT
UINT
UDINT
ULINT
REAL
LREAL
TIME
DATE
TIME\_OF\_DAY (TOD)
DATE\_AND\_TIME (DT)
STRING
BYTE
WORD
DWORD
LWORD
Intero doppio
Intero lungo
Int. corto senza segno
Intero senza segno
Int. doppio senza segno
Int. lungo senza segno
Reale
Reale lungo
Durata
Data
Ora del giorno
Data e ora del giorno
Stringa
8 bit
16 bit
32 bit
64 bit
32
64
8
16
32
64
32
64
8
16
32
64
Insieme dei tipi di dati elementari previsti dalla norma EIC
La Norma prevede inoltre l'utilizzo di dati “generici” contraddistinti dal prefisso “ANY “ e che
vengono utilizzati per generare funzioni o operatori sovraccaricati (overloaded) che cioè
accettano tipi diversi come parametri.
Tale implementazione rappresenta in pratica la possibilità di dichiarare una variabile
indipendentemente dal tipo e quindi di mantenere una certa compatibilità con la
rappresentazione interna dei dati che, in molti PLC, sono identificati con semplici locazioni di
memoria.
Nei PLC Allen Bradley, ad esempio, la memoria programmi è organizzata nei cosiddetti
program files di dimensioni massime fissate dal Sistema Operativo e numerati da 0 a 999.
I primi tre sono dichiarati di default come dati di uscita, di ingresso e di stato processore; agli
altri possono essere associate strutture dati di tipo contatore, variabili binarie, temporizzatori,
variabili reali in virgola mobile, caratteri, strutture PID, ecc...
Gli identificatori delle variabili a singolo elemento, cioè quelle comunemente impiegate in ogni
PLC, per la Norma devono rispettare la sintassi descritta dalla Tabella
La rappresentazione diretta deve essere provvista di uno speciale simbolo, formato dalla
concatenazione di un segno di percentuale %, un prefisso di locazione e un prefisso di taglia e da
uno o più interi senza segno, separati da punti (.).
Locazione di ingresso
I
Q
M
X
Nessuno
B
W
D
L
Locazione di uscita
Locazione di memoria
Taglia di un solo bit
Taglia di un solo bit
Taglia di un byte (8 bit)
Taglia di una parola (16 bit)
Taglia di una parola doppia (32 bit)
Taglia di una parola lunga (64 bit)
107
Sintassi operatori
Il costruttore deve specificare la corrispondenza tra la rappresentazione diretta e la locazione
fisica o logica per gli elementi indirizzati in ingresso o in uscita.
Quando una rappresentazione diretta è estesa con delle zone di interi separati da punti, essa deve
essere interpretata come un indirizzo gerarchico fisico o logico, con il campo più a sinistra che
rappresenta il livello più alto della gerarchia.
Per esempio la variabile
%IW2.5.7.1
può rappresentare il primo canale (word) del settimo modulo nel quinto rack del secondo bus di
I/O di un sistema a controllore programmabile.
L'utilizzazione di un indirizzamento gerarchico per permettere ad un programma in un sistema
PLC di accedere a dati di un altro PLC deve essere considerato come una estensione di
linguaggio. L'utilizzo di variabili direttamente rappresentate è consentito solo nei Programmi,
nelle Configurazioni e nelle Risorse.
Il numero massimo di livelli nella gerarchia è un parametro proprio dell'implementazione.
Ad esempio:
%IW53
%MW30
%MX41
%MD48
%MW4:8
%MW0:X4
%QX21
parola della zona degli ingressi
parola della zona della memoria
bit della zona della memoria
doppia parola della zona della memoria
tabella di 8 parole
bit di rango 4 della parola interna \%MW0
bit della zona delle uscite
Parametri di implementazione
Un altra possibilità che offre la Norma è di dichiarare una variabile o addirittura una intera
sezione di programma con l'attributo retained o a valore ritenuto.
Ciò comporta che, nel cosiddetto riavvio a caldo (quando la unità di organizzazione di
programma viene richiamata non per la prima volta), i valori della variabile o delle variabili
contenute all'interno della POU vengono conservati tra un'attivazione e la successiva.
Non tutti i linguaggi PLC consentono una dichiarazione del genere perché ciò vuol dire gestire i
tasks in modo dinamico, il che appesantirebbe il compito del kernel del sistema operativo che
invece lo si vuole più stabile e compatto possibile.
Concetto molto importante è pure la visibilità delle variabili all'interno dei programmi. La
Norma dice che la visibilità delle variabili dichiarate deve essere locale alla POU che la
contiene.
L'unica eccezione è per le variabili globali accessibili alle altre POU grazie ad una dichiarazione
di un blocco di tipo VAR\_EXTERNAL compatibile con la dichiarazione fatta altrove.
La visibilità nei processori è un concetto quasi inesistente per quelli che utilizzano
programmazione a basso livello (ladder), ed incompleto per quelli più avanzati dove in genere
più che di visibilità si potrebbe parlare di protezione.
108
La Norma impone ancora che ogni dichiarazione di programma, funzione o blocco funzionale
deve contenere all'inizio almeno una parte dichiarativa che specifica i tipi delle variabili
utilizzate in nelle unità organizzative di programma (POU).
Tale parte dichiarativa deve avere forma testuale con le parole chiave VAR, VAR\_INPUT,
VAR\_OUTPUT come definiti nella Tabella \ref{var_decl}, e seguite eventualmente dai
qualificatori RETAIN o CONSTANT e nel caso di VAR\_OUTPUT da nessuno o un occorrenza
del qualificatore RETAIN, seguiti da una o più dichiarazioni separate da virgole e terminare con
la parola chiave END\_VAR.
La maggior parte dei sistemi sviluppati per la programmazione dei PLC o non consente la
dichiarazione di variabili potendo il programmatore sfruttare solo quelle predichiarate dal
costruttore, oppure stabilisce una corrispondenza di Simboli/Indirizzi (identificativo variabile rappresentazione diretta) in una tabella di DataBase al fine di rendere più agevole la
comprensione dei programmi che sfruttano le variabili altrimenti direttamente rappresentate.
109
Bibliografia
Tecnologie Informatiche per l’Automazione 2° ed. – Chiacchio, Basile –McGraw-Hill
Manuale di programmazione dei PLC 2° ed. – Bergamaschi – Hoepli
Tecnologie e Disegno per la progettazione elettronica 3° vol – Portaluri, Bove – Tramontana
Risorse su internet
110
Download