Sei sulla pagina 1di 110

CORSO PROGRAMMAZIONE PLC

MATERIALE DIDATTICO

A cura di: Ing. Biase DAgostino Ing. Giuseppe Picardi

M.G.A. Servizi industriali Corso di programmazione PLC

CAPITOLO 1

Algebra Booleana

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 lappartenenza ad un livello contrassegnato alto e ad un livello contrassegnato basso. Questi livelli sono identificati tramite una coppia di simboli:

0 Low False Open Algebra Booleana

1 High True Close

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). Lalgebra 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 lalgebra booleana potesse essere presa a fondamento per la progettazione di circuiti logici digitali. Elementi dellalgebra 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

M.G.A. Servizi industriali Corso di programmazione PLC Negazione o Complementazione Definizione informale Trattasi di unoperazione 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 delloperazione not(x) con la tavola della verit: x 0 1 not(x) 1 0

Propriet not(not(x)) = x 1=1 0=1=0=1

Prodotto Logico (AND) Definizione informale Loperazione 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 delloperazione x * y con la tavola della verit: x 0 0 1 1 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 Loperazione 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 delloperazione x + y con la tavola della verit: x 0 0 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. y 0 1 0 1 x+y 0 1 1 1

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

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 dellalgebra 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 loperatore + valgono anche per loperatore * purch si scambino gli 1 con gli 0 (e viceversa).

Teoremi dellalgebra Booleana Distributivit

La propriet distributiva vale sia rispetto alla somma di prodotti (come nellalgebra 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 x+y*z 0 0 0 1 1 1 1 1

De Morgan x*y=x+y x+y=x*y

Operazione di NAND Logico Definizione informale Loperazione di nand logico `e loperazione negata delloperazione and. Il simbolo nand una contrazione di not and. 8

M.G.A. Servizi industriali Corso di programmazione PLC Quindi loperazione 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 delloperazione 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.

M.G.A. Servizi industriali Corso di programmazione PLC

Operazione di NOR logico Definizione informale Loperazione di nor logico loperazione negata delloperazione or. Il simbolo nor `e una contrazione di not or. Quindi loperazione 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 delloperazione 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 Loperazione 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 loperatore xor si usa comunemente la seguente notazione:

x
_ _

x xor y

Rappresentazione delloperazione x xor y con la tavola della Verit:

11

M.G.A. Servizi industriali Corso di programmazione PLC x 0 0 1 1 Propriet: x x x x x 0=x 1=x x=0 x=1 y=x y 0 1 0 1 x xor y 0 1 1 1

y= x* y+x*y

loperatore xor pu essere visto come un comparatore di uguaglianza: IF X = Y THEN ELSE X X Y =0 Y=1

invertitore controllato: IF X = 0 THEN ELSE X X Y=Y Y=Y

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 Forma canonica SP

y 0 1 0 1

minterm xy xy xy xy

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 loperatore 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 Lautomazione 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 delluomo. 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". Limportanza dellautomazione 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; lesistenza 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. Lavvento 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: larmadio, il modulo processore, i moduli di ingresso/uscita, il modulo alimentatore, il terminale di programmazione. LArmadio 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 corrnte 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, allelaborazione 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 larmadio 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 superfce 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 unistruzione. 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 lelevamento 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 lordine di esecuzione delle operazioni con le note regole sulla precedenza delle valutazioni.

Esistono poi i consueti costrutti per le istruzioni condizionate: IFTHENEND_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...THENELSIF...THENELSEEND_IF per definire delle decisioni multiple, usando pi ELSIF; 33

M.G.A. Servizi industriali Corso di programmazione PLC CASEOF...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...DOEND_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); REPETUNTIL...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 listruzione 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: 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,

36

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 allintervallo 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 allingresso 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 :. Nellinterpretazione 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 nellaccumulatore). 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 ) 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 *) 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 *)

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 lesecuzione 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 ( questultimo 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 dingresso 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. 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).

44

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 lutilizzo 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 dellinterfaccia esterna ad un blocco rettangolare: a sinistra si mettono i parametri di ingresso, a destra quelli duscita; 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, allatto 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 dalimentazione, 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 alloccorrenza di situazioni particolari. Nella categoria dei sistemi ad eventi discreti rientrano certamente i sistemi di controllo dei processi industriali e quindi lSFC 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 dellSFC sono : la fase, con le azioni ad essa associate; la transizione, con lazione ad essa associata; larco orientato. La fase pu essere definita come una condizione invariante del sistema che pu essere modificata solo dalloccorrenza 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

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

T32

(ok AND T>20) OR NOT abilita

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. Lorientamento degli archi viene indicato con una freccia e pu essere evitata nel caso che larco 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 linizio 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 linsieme 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
T2 T2

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
Figura 31

ok AND t >20

La regola di evoluzione dellSFC 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 lSFC 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 dellSFC assume lo stesso valore (binario) del sensore. Si ha un ingresso a fronte quando la variabile dellSFC 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

NellSFC 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 dallultima 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. Leffetto quello di aver attivata lazione di riscaldamento per tale tempo prima di avviare la partenza del motore.

33
T33

scalda motore t / X33 / 20 s

34
Figura 33

parti

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.

T1 2

COND1

T2 3

COND2

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 ununivocit nellinterpretazione 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 T1 T2

Figura 35: Esempio di struttura ( La convergenza ) In questo esempio si ha lattivazione 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 questultima sia superabile che tutte le sequenze parallele siano terminate e che quindi tutte le fasi siano attive. Con riferimento allesempio 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 lattivit di zone del diagramma:

25

35

T25 26 T26 27 T27 90

T35 36 T36 37 T37

28

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

Nellesempio 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 levoluzione 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 a 2 Forza G2:{12} 12 b 13 c Azione B Azione A X4

11 a 12 b 13 c Azione B X4 Azione A

Figura 39: Esempio di forzatura La sintassi dellazione FORZARE X:{Y} dove X il nome dellSFC da forzare e Y la condizione in cui deve essere forzato. Dallesempio precedentemente riportato si pu interpretare la forzatura come una particolare azione; il suo effetto sullSFC forzato equivalente allaggiunta di una transizione superabile in uscita da tutte le fasi che non devono diventare attive, e di una allingresso alle fasi che lo devono diventare. Nellesempio 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 nellazione di forzatura linsieme vuoto si parla di sospensione di un SFC. Il suo effetto quello di disattivate tutte le fasi dellSFC forzato.

11 a 2 Forza G2:{ } 12 b 13 c Azione B Azione A

11 a 12 b 13 c X4 Azione A X4 Azione B 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 Memorizzazione risultati nel registro immagine uscite ATTIVAZIONE SEQUENZIALE DI TUTTE LE USCITE

Scansione sincrona di ingresso e di uscita

Da questo diagramma di flusso possiamo vedere e sopratutto capire come funziona o come ragiona un PLC
Questa modalit di funzionamento quindi del tutto simile a ci che avviene in un microprocessore quando chiamato a gestire una richiesta di interrupt.
1

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 ESECUZIONE PROGRAMMA

IN SEQUENZA

TEMPO DI ATTESA

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 Memorizzazione risultato nel registro immagine uscite ATTIVAZIONE USCITA CORRISPONDENTE

Scansione sincrona di ingresso e asincrona di uscita

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 Memorizzazione nel registro immagine ingressi

Scansione asincrona di ingresso e di uscita

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 NETWORK 2 LD I0.1 O I0.3 R Q0.1 //Avvio motore; //Se I0.0 attivo (on) //E se I0.1 non attivo (off) //Inserisci motore del trasportatore //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. Loperazione "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 LRD Copiatura logica PRIMA DOPO LPP Prelevamento logico PRIMA DOPO

76

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 dellistruzione 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, leccitazione 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 DOPO

LD I0.1 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. Loperazione Carica il valore del bit negato(LDN) carica il valore del bit negato allindirizzo 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. Loperazione Combina il valore di bit negato tramite OR (ON) esegue una combinazione logica OR NOT del valore di bit dellindirizzo 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 Loperazione 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 dellistruzione 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 dellistruzione 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 luscita 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 dellistruzione 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 = Fig.14

I0.0 Q0.4 I0.1 Q0.4

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

I0.2 Q0.5,1 I0.3 Q0.5,1

Fig.15

82

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 allesecuzione di singole lavorazioni, le quali risultino essere ripetitive e/o pericolose per luomo. 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 lottenimento di numerosi vantaggi tra i quali laumento 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 dellintero sistema informatico,che comporti lutilizzo 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 luomo stesso. Lessere 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 dellautomazione,che prevede lintegrazione 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; lidentificazione,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 dellimpresa che possono: essere assistite dallelaboratore, 84

essere automatizzate e quindi eseguite e controllate dallelaboratore, 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 dallinsieme dei sensori e degli attuatori, ossia dai dispositivi di campo che vengono interfacciati direttamente allimpianto 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 loperato 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 dellintero 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 dalloperatore 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 dellintero sistema per quanto concerne la rilevazione e segnalazione di eventuali situazioni di allarme in cui loperatore pu e deve essere in grado di prendere provvedimenti. Livello 4: Gestione globale E quello della gestione azienda, potendo lazienda 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 leffettiva 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 larchitettura 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 laggiunta o leliminazione 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 confitti 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;lutilizzatore 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. Unaltra 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 allesigenza di dover utilizzare simultaneamente,allinterno 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 riconfgurabili; 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 frubili 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 Reti basati sul Bus CAN (DeviceNet e SDS)

CRC

per il controllo della

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 fno 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 alloperatore, in unaltra stanza, in un altro edificio o a centinaia di chilometri di distanza. Pertanto necessario luso di dispositivi di comunicazione per trasportare linformazione in maniera bidirezionale dal dispositivo alloperatore, e dalloperatore al dispositivo. Tali informazioni sono memorizzate da un calcolatore sotto forma di quadri sinottici, o serie storiche, che ne evidenziano la variazione di stato. Luso del calcolatore fondamentale per rispondere in maniera automatica al verificarsi di particolari eventi, quindi loperatore 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 lesecuzione 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 dallesigenza 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 lintegrit di un dispositivo, il malfunzionamento di alcuni suoi componenti o, ancora pi importante, lo stato degli allarmi delloggetto controllato. In definitiva un sistema di supervisione garantisce il dialogo tra utente e macchina tenendo conto, sia delle esigenze dellazienda che possiede la macchina (affidabilit, e comunicazione col sistema gestionale), sia delle esigenze delloperatore (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; Monitoraggio con relativa spiegazione diagnostica dei possibili malfunzionamenti.

102

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 dellimpianto prima di una eventuale riaccensione da anomalia. Ecco perch limpiego 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 lutilizzo 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 unaltra) 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 lAutomazione 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