COSTRUZIONE DI PROTOCOLLI
DI COMUNICAZIONE TRA PC E DISPOSITIVI
DI CONTROLLO
III
IV
Ringraziamenti
V
VI
Sommario
INTRODUZIONE ...............................................................................................................1
Servizi vs protocolli................................................................................................................................................. 24
Aspetti di progetto dei livelli ............................................................................................................................... 24
Il modello ISO/OSI................................................................................................................................................... 26
Livello fisico......................................................................................................................................................... 28
Livello Data Link................................................................................................................................................ 29
Livello Network................................................................................................................................................... 29
Livello Transport................................................................................................................................................ 30
Livello Session .................................................................................................................................................... 31
Livello Presentation........................................................................................................................................... 31
Livello Application ............................................................................................................................................. 31
Internet Protocol Suite o TCP/IP....................................................................................................................... 31
Livello host-to-network.................................................................................................................................... 32
Livello Internet ................................................................................................................................................... 33
Livello Transport................................................................................................................................................ 33
Livello Application ............................................................................................................................................. 33
VII
Confronto fra modello di riferimento OSI e architettura TCP/IP............................................................ 34
Confronto fra pile di protocolli OSI e TCP/IP................................................................................................ 35
La piramide CIM........................................................................................................................................................ 57
Descrizione dei livelli............................................................................................................................................. 57
Livello 0: sensori, attuatori, tools legati al processo esecutivo........................................................... 57
Livello 1: Controllo di macchina ................................................................................................................... 58
Livello 2: Controllo di cella ............................................................................................................................. 58
Livello 3: Controllo di area ............................................................................................................................. 59
Livello 4: mainframe per il governo del management, gestione commesse e amministrazione
centrale delle attività di fabbrica (pianificazione della gestione globale). ........................................ 59
VIII
Strumenti misti : i bridge ethernet-seriali e le loro caratteristiche .................................................. 80
I sistemi controllati................................................................................................................................................. 85
Visione di insieme.................................................................................................................................................... 93
Difficoltà incontrate................................................................................................................................................ 96
CONCLUSIONI ................................................................................................................99
BIBLIOGRAFIA .............................................................................................................104
IX
INTRODUZIONE
1
parte della tesi verrà presentata l’applicazione operativa dei software così
sviluppati entro il contesto di un’azienda di medie dimensioni, per
realizzare la gestione integrata di alcuni impianti tecnologici come ad
esempio l’apertura e chiusura meccanica di porte e finestre, l’accensione
della fontana situata nel giardino dell’azienda, l’avviamento di
riscaldamento e climatizzatore e, oltre a questi aspetti prettamente
domotici, per gestire anche l’accensione e spegnimento di impianti
propriamente industriali, quali bruciatori, compressori, presse. Il tirocinio e
l’allegato progetto sono stati compiuti presso l’azienda CS Soluzioni di
Casalmaggiore (CR).
2
sono state integrate in un sistema molto complesso atto a governare reti di
PLC Omron che controllano impianti industriali quali compressori,
bruciatori, ventilatori e infrastrutture edilizie come le finestre superiori dei
capannoni. Tale sistema è costituito da una piattaforma SCADA con
opportuna interfaccia utente , realizzata completamente il linguaggio C#
con architettura pienamente Objet-oriented e stratificata, da una base di
dati in un RDBMS Oracle 10g Express, dalle librerie di comunicazione e da
reti di PLC Omron, connessi ai PC industriali ove operano le console
grafiche dello SCADA in alcuni casi tramite connessione RS-232 e in alcuni
casi tramite Ethernet. E’ stato inoltre verificato l’uso di un componente di
conversione seriale-Ethernet che però, per poter essere utilizzato nelle sue
piene potenzialità, ha richiesto l’inserimento di nuove strutture software
nel sistema. In collaborazione con le persone di CS Soluzioni incaricate
della realizzazione del sistema si è contribuito ad ogni sua fase, in
particolare al design della base di dati, come sarà presentato in dettaglio
nei capitoli seguenti. La struttura della tesi nei capitoli successivi è la
seguente: Saranno presentate in primo luogo le reti di comunicazione, per
contestualizzare in modo adeguato il cuore del lavoro, ossia lo sviluppo del
protocollo di comunicazione. Successivamente sarà presentato in dettaglio
il contesto software di super visione entro i sistemi di automazione
industriale e , in particolare , la struttura dei protocolli Fins e C-Command
di Omron; Nel capitolo seguente sarà presentato il progetto svolto nei suoi
vari aspetti, partendo dalle librerie di comunicazione per arrivare ala
visione del sistema nel suo insieme. Infine saranno presentate le
conclusioni con un bilancio del lavoro svolto ed eventuali prospettive di
sviluppo.
3
LA COMUNICAZIONE DIGITALE
Le reti di comunicazioni
Moltissimi sono gli usi delle reti di elaboratori, sia per le organizzazioni che
per i singoli individui. Per le aziende, associazioni, organizzazione si
possono sintetizzare in questi piccoli punti:
• condivisione di risorse: si possono rendere disponibili a qualsiasi
programma e informazioni anche distanti migliaia di km;
• affidabilità: si ottiene mettendo in rete sorgenti alternative delle
risorse (ad es. duplicando le applicazioni e i dati su più computer).
E' importante in sistemi che devono funzionare a tutti i costi
(traffico aereo, centrali nucleari, sistemi militari, ecc.);
• diminuzione dei costi: una rete di personal computer costa molto
meno di un mainframe. A volte alcuni elaboratori sono più potenti
ed offrono agli altri dei servizi (modello client-server, vedi figura
sottostante);
• scalabilità: si possono aumentare le prestazioni del sistema
aumentando il numero di elaboratori (entro certi limiti);
• comunicazione fra persone: è possibile inviarsi messaggi,
scambiarsi file, ecc.
5
Elab. cliente Elab. server
Richiesta Rete
Risposta
Tecnologia trasmissiva
6
l'informazione in modo da essere propagata sul nuovo supporto. In alcuni
casi è possibile che si voglia impedire tale funzionalità e quindi il gateway
sarà sostituito da un router configurato per filtrare il traffico (firewall).
Se gli elementi della rete utilizzano supporti trasmissivi condivisi, il
principale problema che è necessario affrontare è la gestione dei conflitti
nell'uso della rete, per cui esistono diverse tecniche di gestione e di
risoluzione (aloha,csma,csma/cd ...). Le reti broadcast sono dotate di un
unico "canale" di comunicazione che è condiviso da tutti gli elaboratori.
Brevi messaggi, spesso chiamati pacchetti, inviati da un elaboratore sono
ricevuti da tutti gli altri elaboratori. Un indirizzo all'interno del pacchetto
specifica il destinatario.
Elaboratori
Rete
7
Pacchetto
Elaboratore
Connessione
Scala dimensionale
8
Distanza fra processori Ambito Tipo di rete
Reti Locali
Le reti locali (Local Area Network, LAN), in genere sono possedute da una
organizzazione (reti private), hanno un'estensione che arriva fino a qualche
km, si distendono nell'ambito di un singolo edificio o campus (non si
possono, di norma, posare cavi sul suolo pubblico), sono utilizzate
prevalentemente per connettere PC o workstation. Esse si distinguono dagli
altri tipi di rete per tre caratteristiche diverse: La prima è la dimensione
che non può andare oltre un certo limite, per cui è noto a priori il tempo e
quindi il ritardo di trasmissione. Questa conoscenza permette di utilizzare
delle tecniche particolari per la gestione del canale di comunicazione.
La seconda è la tecnologia trasmissiva. Le LAN sono in generale reti
broadcast. Velocità di trasmissione tipiche sono da 10,100,1000 Mbps con
basso ritardo di propagazione del segnale da un capo all'altro del canale e
basso tasso di errore. Ultima ma non meno importante é la topologia: sono
possibili diverse topologie, le più diffuse alcuni anni fa erano il bus ed il
ring. Nell’ambito della topologia bus in ogni istante solo un elaboratore può
9
trasmettere, gli altri devono astenersi, inoltre è necessario un meccanismo
di arbitraggio per risolvere i conflitti quando due o più elaboratori vogliono
trasmettere contemporaneamente e l'arbitraggio può essere centralizzato o
distribuito; lo standard IEEE 802.3 (chiamato impropriamente Ethernet) è
per una rete broadcast, basata su un bus, con arbitraggio distribuito,
operante a 10,100 oppure 1000 Mbps; infine gli elaboratori trasmettono
quando vogliono; esistono alcuni protocolli, che permettono di evitare le
collisioni. Nella topologia ring ogni bit circumnaviga l'anello in un tempo
tipicamente inferiore a quello di trasmissione di un pacchetto. Anche qui è
necessario un meccanismo di arbitraggio (spesso basato sul possesso di un
gettone (token) che abilita alla trasmissione. Lo standard IEEE 802.5
(derivante dalla rete IBM Token Ring) è una rete broadcast basata su ring,
con arbitraggio distribuito, operante a 4 o 16 Mbps.
Ring
Bus
10
contese, che può essere anche in questo caso un arbitraggio centralizzato,
un’apposita apparecchiatura, ad esempio, una bus arbitration unit, che
accetta richieste di trasmissione e decide chi abilitare oppure può essere
un arbitraggio distribuito: ognuno decide per conto proprio.
Reti metropolitane
Le reti metropolitane (Metropolitan Area Network, MAN) hanno
un'estensione tipicamente urbana (quindi anche molto superiore a quella di
una LAN) e sono generalmente pubbliche (cioè un'azienda, ad es. Telecom
Italia, Ommitel, Infostrada mettono la rete a disposizione di chiunque
desideri, previo pagamento di una relativa tariffa). Fino a qualche anno fa
erano basate essenzialmente sulle tecnologie delle reti geografiche,
utilizzate su scala urbana. Recentemente però è stato definito un apposito
standard, lo IEEE 802.6 o DQDB (Distributed Queue Dual Bus), che é
effettivamente impiegato in varie realizzazioni, molto più vicino alla
tecnologia LAN che WAN. Esiste un mezzo trasmissivo di tipo broadcast
(due bus in 802.6) a cui tutti i computer sono attaccati.
Elaboratore …
Head end
Flusso
11
Reti geografiche
Le reti geografiche (Wide Area Network, WAN) si estendono a livello di una
nazione, di un continente o dell'intero pianeta. Una WAN è tipicamente
costituita da due componenti distinte: un insieme di elaboratori (host
oppure end system), sui quali girano i programmi usati dagli utenti una
comunication subnet (o subnet), che connette gli end system fra loro. Il suo
compito è trasportare messaggi da un end system all'altro, così come il
sistema telefonico trasporta parole da chi parla a chi ascolta. Di norma la
subnet è costituita, a sua volta, da due componenti: linee di trasmissione
(dette anche circuiti, canali, trunk) e elementi di commutazione (switching
element). Gli elementi di commutazione sono elaboratori specializzati
utilizzati per connettere fra loro due o più linee di trasmissione. Quando
arrivano dati su una linea, l'elemento di commutazione deve scegliere una
linea in uscita sul quale instradarli. Non esiste una terminologia standard
per identificare gli elementi di commutazione. Termini usati sono i sistemi
intermedi, i nodi di commutazione pacchetti o router. Una tipica WAN è
utilizzata per connettere più LAN fra loro:
WAN
Router Subnet
Host
LAN
Linea di trasmiss.
12
In generale una WAN contiene numerose linee (spesso telefoniche), che
congiungono coppie di router. Ogni router, in generale, deve: ricevere un
pacchetto da una linea in ingresso, memorizzarlo per intero in un buffer
interno ed infine, appena la necessaria linea in uscita è libera, instradare il
pacchetto su essa. Una subnet basata su questo principio può essere
chiamata: punto a punto, store and forward o a commutazione di pacchetto
(packet switched).Molte topologie di interconnessione possono essere
impiegate fra i router:
• a stella (ridondanza zero);
• ad anello (ridondanza zero);
• ad albero (ridondanza zero);
• magliata (ridondanza media);
• completamente connessa (ridondanza massima).
13
Un'altra possibilità è una WAN basata su satellite oppure radio al suolo.
Utilizzando il satellite cioè ogni router sente l'output del satellite e invia a
sua volta dati al satellite. Dunque, in generale si ha un broadcast downlink
(cioè dal satellite a terra) e broadcast uplink (cioè da terra al satellite) .
Satellite
Uplink
beam
Downlink
beam
Ogni router quindi utilizza onde Radio al suolo: ogni router sente l'output
dei propri vicini (entro una certa distanza massima) ed anche in questo
caso siamo in presenza di una rete broadcast.
Una WAN può essere anche realizzata in maniera mista: in parte cablata,
in parte basata su radio o satellite.
14
Interconnessione di reti
WAN 1 WAN 1
Router multiprotocollo
(gateway)
15
• con internetwork: una collezione di più network, anche non
omogenee, collegate per mezzo di gateway.
Host Host
Gateway
Subnet Subnet
Network Network
Internetwork
Gerarchie di protocollo
16
quale lo scopo di un livello è offrire certi servizi ai livelli più alti,
nascondendo i dettagli sul come tali servizi siano implementati.
HOST 1 HOST 2
Protocollo
di livello 5
Livello 5 Livello 5
Mezzo fisico
17
possono essere offerti dal livello sotto di esso. I vantaggi di una buona
progettazione delle interfacce sono la minimizzazione delle informazioni da
trasferire e la possibilità di modificare l'implementazione del livello (ad es.,
ove le linee telefoniche venissero sostituite da canali satellitari) con una più
attuale che offra gli stessi servizi.
Architettura di rete
18
implementazione) che ha conosciuto una larghissima diffusione. L’esempio
lampante di questa architettura é Internet Protocol Suite (detta anche
architettura TCP/IP).
Un'architettura standard de iure è un'architettura basata su specifiche
(ovviamente di pubblico dominio) approvate da enti internazionali che si
occupano di standardizzazione. Anche in questo caso ogni costruttore può
proporne una propria implementazione. Nello specifico possono essere
considerate standard de iure standard IEEE 802 per le reti locali;
architettura OSI (Open Systems Interconnection) e Decnet Phase V
(conforme allo standard OSI). L'insieme dei protocolli utilizzati su un host e
relativi ad una specifica architettura di rete va sotto il nome di pila di
protocolli (protocol stack). Si noti che un host può avere
contemporaneamente attive più pile di protocolli per eventualmente
comunicare con host differenti.
Dialogo sui
Filosofo indù massimi sistemi Stregone africano
(parla solo industano) (parla solo swahili)
Uso della
lingua inglese
Traduttore Traduttore
Uso del
fax
Segretaria Segretaria
Mezzo fisico
19
Nel caso delle reti, la comunicazione fra le due entità di livello superiore
avviene con una modalità che, almeno in linea di principio, è uguale in
tutte le architetture di rete:
HOST 1 HOST 2
Protocollo
M
di livello 5 M
Protocollo
di livello 4
H4 M H4 M
Protocollo
di livello 3
H3 H4 M1 H 3 M2 H3 H4 M1 H3 M2
Protocollo
di livello 2
H2 H3 H 4 M1 T2 H2 H3 M2 T2 H2 H 3 H 4 M1 T2 H 2 H3 M2 T2
Canale
fisico
20
punto il livello 2 aggiunge ad ogni pacchetto il proprio header (e magari un
trailer) e lo spedisce sul canale fisico; nella macchina di destinazione i
pacchetti fanno il percorso inverso, con ogni livello che elimina
(elaborandoli) l'header ed il trailer di propria competenza, e passa il resto al
livello superiore. Si possono definire alcuni aspetti importanti: le peer
entity pensano concettualmente ad una comunicazione orizzontale fra loro,
basata sul protocollo del proprio livello, mentre in realtà comunicano
ciascuna col livello sottostante attraverso l'interfaccia fra i due livelli;
spesso i livelli bassi sono implementati in hardware o firmware (per ragioni
di efficienza). Nonostante questo, spesso gli algoritmi di gestione sono
complessi.
Servizi connection-oriented
Pacchetto
Sorgente Destinazion
Connessione
(a)
Sorgente Destinazion
(b)
Servizi connectionless
22
pacchetti viaggiano indipendentemente gli uni dagli altri, possono prendere
strade diverse ed arrivare in ordine diverso da quello di partenza o non
arrivare affatto. La fase è una sola : invio del pacchetto (corrisponde
all'immissione della lettera nella buca).
23
⇒ reliable connectionless (detto anche acknowledged datagram
service): si invia un breve messaggio e si vuole essere
assolutamente sicuri che è arrivato.
Servizi vs protocolli
HOST 1 HOST 2
Protocollo
Livello n Livello n
Servizi Servizi
Protocollo
Livello n - 1 Livello n - 1
24
2. Regole per il trasferimento dati (livelli bassi):
25
determina i protocolli effettivi. L’architettura di rete invece fissa, livello per
livello, i protocolli effettivi
Il modello ISO/OSI
26
Application protocol
7 Application Application
Presentation protocol
6 Presentation Presentation
Session protocol
5 Session Session
Application protocol
4 Transport Transport
Subnet di comunicazione
Spesso, per visualizzare le competenze (in termini di livelli gestiti) dei vari
elaboratori sul cammino, si usano diagrammi simili al seguente:
27
HOST 1 HOST 2
7 7
6 6
5 5
4 ROUTER ROUTER 4
3 3 3 3
2 2 2 2
1 1 1 1
Livello fisico
Ha a che fare con la trasmissione di bit "grezzi" su un canale di
comunicazione. Gli aspetti di progetto sono volti a garantire che se parte
un 1, arrivi effettivamente un 1 e non uno zero e largamente riguardanti le
caratteristiche meccaniche, elettriche e procedurali delle interfacce di rete
(componenti che connettono l'elaboratore al mezzo fisico) e quelle relative al
mezzo fisico. Si caratterizzano alcune grandezze fisiche tra le quali:
tensioni, scelte per rappresentare 0 ed 1, durata (in microsecondi) di un
bit; trasmissione simultanea in due direzioni oppure non meno importane
la forma dei connettori.
28
Livello Data Link
Lo scopo di questo livello è far si che un mezzo fisico trasmissivo appaia, al
livello superiore, esente da errori di trasmissione non rilevati.
Normalmente funziona in questo modo: spezzetta i dati provenienti dal
livello superiore in frame (da qualche centinaia a qualche migliaia di byte),
invia i frame in sequenza; aspetta un acknowledgement frame (ack) per
ogni frame inviato. Il livello Data Link deve offrire questi servizi:
Livello Network
Lo scopo del livello è controllare il funzionamento della subnet di
comunicazione. Inizialmente tale livello offriva solamente servizi connection
oriented; successivamente fu aggiunta la modalità connectionless. Il livello
Network deve offrire questi servizi:
29
• routing: cioè scelta del cammino da utilizzare. Il suddetto può essere
statico (fissato ogni tanto e raramente variabile) o dinamico
(continuamente aggiornato, anche da un pacchetto all'altro);
• accounting: in cui gli operatori della rete possono far pagare l'uso
agli utenti sulla base del traffico generato;
Livello Transport
Lo scopo di questo livello è accettare dati dal livello superiore, spezzettarli
in pacchetti, passarli al livello network ed assicurarsi che arrivino alla peer
entity che si trova all'altra estremità della connessione. In più, fare ciò
efficientemente, isolando i livelli superiori dai cambiamenti della tecnologia
di rete sottostante. Il livello transport è il primo livello realmente end-to-
end, cioè da host sorgente a host destinatario: le peer entity di questo
livello portano avanti una conversazione senza intermediari. Si noterà che
certe problematiche sono, in ambito end-to-end, le stesse che il livello data
link ha nell'ambito di una singola linea di comunicazione; le soluzioni però
sono alquanto diverse per la presenza della subnet di comunicazione. I suoi
compiti sono quelli di creare connessioni di livello network (attraverso i
propri servizi) ; creare un canale punto a punto affidabile, che consegni i
dati in ordine e senza errori (il servizio più diffuso, connection oriented);
inviare messaggi isolati, con o senza garanzia di consegna (connectionless);
ed infine broadcasting di messaggi a molti destinatari (connectionless).
30
Livello Session
Ha a che fare con servizi più raffinati che non sono quelli del transport
layer, come ad es.: token management: autorizza le due parti, a turno, alla
trasmissione. Come vedremo nel seguito, questo livello non ha mai avuto
un grande successo.
Livello Presentation
E' interessato alla sintassi ed alla semantica delle informazioni da
trasferire. Ad esempio, si occupa di convertire tipi di dati standard
(caratteri, interi) da rappresentazioni specifiche della piattaforma HW di
partenza in una rappresentazione "on the wire" e poi in quella specifica dell'
HW di arrivo. Anche questo livello non ha avuto molto successo.
Livello Application
Prevede che qui risieda tutta la varietà di protocolli che sono necessari per
offrire i vari servizi agli utenti, quali ad esempio: terminale virtuale;
trasferimento file; posta elettronica ecc…. Attraverso l'uso di questi
protocolli si possono scrivere applicazioni che offrono i suddetti servizi agli
utenti finali.
OSI Tcp/Ip
Application Application
Presentation
Session
Tranport Transport
Network Internet
Data Link
Host - to - Network
Fisico
Livello host-to-network
Il livello più basso non è specificato nell'architettura, che prevede di
utilizzare quelli disponibili per le varie piattaforme HW e conformi agli
standard. Tutto ciò che si assume è la capacità dell'host di inviare
pacchetti IP sulla rete.
32
Livello Internet
E' il livello che tiene insieme l'intera architettura. Il suo ruolo è permettere
ad un host di iniettare pacchetti in una qualunque rete e fare il possibile
per farli viaggiare, indipendentemente gli uni dagli altri e magari per strade
diverse, fino alla destinazione, che può essere situata anche in un'altra
rete. Dunque per quanto detto tale sistema è connectionless. E' un servizio
best-effort datagram. E' definito un formato ufficiale dei pacchetti ed un
protocollo, IP (Internet Protocol).
Livello Transport
E' progettato per consentire la conversazione delle peer entity sugli host
sorgente e destinazione (end-to-end). Sono definiti due protocolli in questo
livello:
Livello Application
Nell'architettura TCP/IP non ci sono i livelli session e presentation (non
furono ritenuti necessari; l'esperienza col modello OSI ha mostrato che
questa visione è condivisibile). Sopra il livello transport c'è direttamente il
livello application, che contiene tutti i protocolli di alto livello i quali
33
vengono usati dalle applicazioni reali. I primi protocolli furono: Telnet:
terminale virtuale; FTP (File Transfer Protocol): file transfer e SMTP (Simple
Mail Transfer Protocol) e POP (Post Office Protocol) utilizzati posta
elettronica. Successivamente se ne sono aggiunti altri, fra cui: DNS
(Domain Name Service): mapping fra nomi di host e indirizzi IP numerici;
NNTP (Network News Transfer Protocol): trasferimento di articoli per i
newsgroup; HTTP (HyperText Transfer Protocol): alla base del Word Wide
Web. I vari protocolli nell'architettura TCP/IP si collocano come segue:
Internet IP
34
infine mancò del tutto l'idea di internetworking: si pensava ad una rete
separata, gestita dallo stato, per ogni nazione. I protocolli dell'architettura
TCP/IP sono invece il punto di partenza del progetto, per cui l'architettura
è molto efficiente (punto a favore); il reference model non è generale, in
quanto descrive solo questa particolare architettura (punto a sfavore) ed è
difficile rimpiazzare i protocolli se necessario (punto a sfavore).
I protocolli OSI non sono riusciti ad affermarsi sul mercato per una serie di
ragioni: Scelta di tempo non appropriata: la definizione dei protocolli è
arrivata troppo tardi, quando cioè quelli TCP/IP si erano già
considerevolmente diffusi; le aziende non se la sono sentite di investire
risorse nello sviluppo di una ulteriore architettura di rete; l’infelicità di
scelte tecnologiche: i sette livelli (e i relativi protocolli) sono stati dettati in
realtà dalla architettura SNA dell' IBM, più che da considerazioni di
progetto; grande complessità e conseguente difficoltà di implementazione;
inutili i livelli session e presentation; la non ottimale attribuzione di
funzioni ai vari livelli: alcune funzioni appaiono in molti livelli ad es.
controllo errore e flusso in tutti i livelli e altre funzioni mancano del tutto
ad es. sicurezza e gestione rete ; l’infelice implementazione: le prime
realizzazioni erano lente ed inefficienti, mentre contemporaneamente
TCP/IP era molto ben implementato (e per di più gratis!). In effetti i
protocolli dell'architettura TCP/IP invece sono stati implementati
efficientemente fin dall'inizio, per cui si sono affermati sempre più, e quindi
hanno goduto di un crescente supporto che li ha resi ancora migliori. Ad
ogni modo, neanche l'architettura TCP/IP è priva di problemi, infatti :
l'architettura TCP/IP non ha utilità come modello (non serve ad altro che a
descrivere se stessa); non c'è una chiara distinzione fra protocolli, servizi e
interfacce, il che rende più difficile l'evoluzione dell'architettura; alcune
35
scelte di progetto cominciano a pesare oggi (ad es., indirizzi IP a soli 16
bit). In conclusione: il modello OSI è ottimo come “modello”, mentre i suoi
protocolli hanno avuto poco successo; TCP/IP è ottima (per ora e si crede
per ancora molti anni con l’introduzione di IPv6 ) come architettura di rete,
ma inutile come modello.
36
distribuzione è gaussiana, come nella maggior parte dei casi, allora la sua
distribuzione è nota:
37
A seconda dei casi le grandezze possono essere misurate in tensione allora
l'unità di misura degli spettri è V2 / Hz o in corrente allora A2 / Hz. Dagli
spettri di potenza dei segnali si possono anche ricavare gli spettri di
ampiezza di rumore:
I tipi di rumore
38
di comunicazione dotato di una banda passante da 0 Hz ad h Hz (passa-
basso di banda h) che trasporta un segnale consistente di V livelli discreti è
Disturbi elettromagnetici
39
Figura 1.21 - Schema di propagazione di disturbi elettromagnetici tra un dispositivo
sorgente di disturbi (Device 1, EMC Source) e un dispositivo soggetto a tali disturbi
(Device 2, EMC Sinc). In rosso i disturbi irradiati; in azzurro i disturbi condotti.
41
settembre 1980 a pubblicare la versione 1.0 dello standard Ethernet.
Intanto Metcalfe lasciò Xerox nel 1979 per promuovere l'uso del PC e delle
LAN per cui fondò 3Com. Metcalfe spesso attribuisce il successo di 3Com a
Jerry Saltzer. Questi collaborò alla stesura di un articolo importantissimo
dove suggeriva che l'architettura token ring fosse teoricamente superiore
alla Ethernet. Con questo le grosse aziende decisero di non puntare su
Ethernet mentre, al contrario, 3Com poté creare un business intorno al
sistema riuscendo a guadagnarsi un ottimo vantaggio tecnico e a dominare
sul mercato quando Ethernet prese piede. Successivamente, l'interesse
delle imprese del settore aumentò al punto che l'IEEE costituì alcuni
gruppi di studio finalizzati a perfezionare e consolidare Ethernet, nonché a
creare numerosi altri standard correlati. Uno dei risultati raggiunti fu la
pubblicazione, nel 1985, della prima versione dello standard IEEE 802.3,
basato sull'originale specifica Ethernet, ma non completamente
identificabile con essa. In seguito, lo standard Ethernet come tale non è più
stato mantenuto, ma il termine continua ad essere usato quasi come fosse
un sinonimo di IEEE 802.3, sebbene i due standard non coincidano affatto.
42
Il Frame
Questo è il frame ricevuto dallo strato di rete nella pila di protocolli. Gli
elementi sono:
Payload: Campo dati (da 46 a 1500 byte): contiene i dati reali e possono
essere di lunghezza variabile in base all'unità massima di trasmissione
43
della Ethernet. Se i dati superano la capacità massima, vengono suddivisi
in più pacchetti;
Indirizzo Ethernet
Gli indirizzi sono tutti a 6 byte in quanto Ethernet definisce uno schema di
indirizzamento a 48 bit: ogni nodo collegato, quindi, ha un indirizzo
Ethernet univoco di questa lunghezza. Esso corrisponde all'indirizzo fisico
della macchina ed è associato all'hardware. Sono anche detti indirizzi
hardware, indirizzi MAC (o MAC address) o indirizzi di livello 2.
Tipologia di trasmissione
44
Codifica Codifica
di Zero di Uno
+ 0,85 V
0V
- 0,85 V
Durata Durata
del bit del bit
47
indipendenti in cui le collisioni e i ritardi restano limitati. Molti bridge sono
adattativi o ad apprendimento per cui sono provvisti di un software con
elenchi di indirizzi per ogni scheda ethernet che posseggono. In questo
modo quando arriva un pacchetto, estrapolano l'indirizzo di destinazione, e
inviano lo stesso pacchetto nel segmento giusto in base agli elenchi
associati alle schede. Molto più sofisticati sono gli switch che sono
composti da un numero elevato di schede ethernet che consente ad ogni
host di essere connesso direttamente. Allo switch vengono poi collegati
uno o più cavi Ethernet ad alta velocità che collegano altri segmenti di LAN.
In questo modo lo switch intercetta i pacchetti e li ridireziona ad un host
oppure sui segmenti Ethernet. La gestione dei pacchetti, quindi, è
ottimizzata perché questi sono subito indirizzati alla destinazione evitando,
per quanto possibile, collisioni. In questo modo ogni scheda ha un suo
dominio di collisione.
48
FIGURA 1.24 : Retro di un PC con due porte RS-232 (i due connettori maschio in basso)
Utilizzi
Lo standard EIA RS-232 nacque nei primi anni '60 per opera della
"Electronic Industries Association" ed era orientato alla comunicazione tra i
mainframe e i terminali attraverso la linea telefonica, utilizzando un
modem. Oggi la porta seriale EIA RS-232 è presente in quasi tutti i PC
desktop, anche se è stata soppiantata dall'interfaccia USB (o da PS/2) in
quasi tutti gli utilizzi. La gran parte dei PC portatili invece non viene ormai
più dotata di questa interfaccia. Tra gli utilizzi della porta seriale, si
possono citare: connessione di terminali ad un calcolatore
(tradizionalmente un mainframe, ma anche un PC); connessione di
periferiche: la porta seriale è stata usata per collegare i mouse ai primi PC,
stampante (soppiantato dalla porta parallela, e poi da USB e dalle
stampanti di rete) dispositivi specializzati, come ad esempio lettori di codici
a barre e di tessere magnetiche (soppiantato da USB), ancora tutt’oggi in
uso collegare a un PLC ad un singolo PC od altri, connessione a dispositivi
embedded, ad esempio Dispositivi di rete, per scopi di configurazione e
monitoraggio. In questo utilizzo RS-232 è ancora ampiamente usato,
anche se spesso è necessario dotarsi di un adattatore seriale/USB per
utilizzare come terminale un computer privo di porta seriale.
49
Storia dello standard
Definizione
50
più fili, per esempio 8, 16 o 32. Parlando astrattamente si potrebbe pensare
che la trasmissione seriale sia intrinsecamente più lenta di quella parallela
(su di un filo possono passare meno informazioni che su 16). In realtà
questo non è vero in assoluto, soprattutto a causa della difficoltà di
controllare lo skew (disallineamento temporale tra i vari segnali) dei molti
trasmettitori in un bus parallelo, e dipende dalle tecnologie adottate: per
esempio in una fibra ottica, in un cavo ethernet, USB o FireWire (tutti
standard seriali) le informazioni transitano ad una velocità paragonabile a
quella di un bus PCI a 32 fili. In questo capitolo si tratterà solo di
interfacce seriali "lente" cioè gestibili da PC e microcontrollori "normali".
Asincrono significa, in questo contesto, che i dati sono trasmessi, byte per
byte, in modo anche non consecutivo e senza l'aggiunta di un segnale di
clock, cioè di un segnale comune che permette di sincronizzare la
trasmissione con la ricezione; ovviamente sia il trasmettitore che il
ricevitore devono comunque essere dotati di un clock locale per poter
interpretare i dati. La sincronizzazione dei due clock è necessaria ed è fatta
in corrispondenza della prima transizione sulla linea dei dati.
Le unità di misura
51
000, 1 V = 001, 2 V = 010…) ed in questo caso una trasmissione a 1000
baud equivale ad una a 3000 bps. Nel caso dello standard EIA RS-232 i
livelli utilizzati sono due quindi il baud rate coincide numericamente con il
bps.
Il modo più semplice per descrivere un segnale EIA RS-232 è partire con un
esempio. Nell’immagine è visualizzato, in modo idealizzato, cosa appare
collegando un oscilloscopio ad un filo su cui transita un segnale EIA RS-
232 a 9600 bps del tipo 8n2 (in seguito verrà indicato il significato di
questa sigla ) rappresentante il valore binario 01001011. L’ampiezza del
segnale è caratterizzata da un valore "alto" pari a circa +12 V ed un valore
"basso" pari a –12 V. Da notare che, nello standard EIA RS-232 un segnale
alto rappresenta lo zero logico ed uno basso un uno, è quindi una codifica
a logica negativa, ossia rovesciata rispetto al comune pensare. A volte un
segnale alto (+12 V, cioè uno zero logico) è indicato come space ed uno
basso (-12 V, uno logico) come mark. Tutte le transizioni appaiono in
corrispondenza di multipli di 104us (pari ad 1/9600 cioè ciascun bit dura
esattamente l'inverso del baud rate). La linea si trova inizialmente nello
stato di riposo, alta (nessun dato in transito); la prima transizione da alto a
basso indica l’inizio della trasmissione (inizia il "bit di start", lungo
52
esattamente 104us). Segue il bit meno significativo (LSB), dopo altri 104
uS il secondo bit, e così via, per otto volte, fino al bit più significativo
(MSB). Da notare che il byte è trasmesso "al contrario", cioè va letto da
destra verso sinistra. Segue infine un periodo di riposo della linea di
almeno 208us, cioè due bit di stop e quindi (eventualmente) inizia un
nuovo pacchetto di bit. Esistono diversi tipi di codifiche e metodi per capire
quando e dove una serie di dati termina, qui in seguito verranno mostrati e
proposti i principali. Se la trasmissione è più veloce o più lenta, la distanza
tra i fronti varia di conseguenza (p.e. a 1200 bps le transizioni avvengono a
multipli di 0,833 ms, pari a 1/1200) invece di trasmettere 8 bit, ne posso
trasmettere 5, 6, 7 o anche 9 (ma quest’ultima possibilità non è prevista
dalle porte seriali dei normali PC). Al termine è possibile aggiungere un bit
di parità. Alla fine la linea rimane nello stato di riposo per almeno 1, 1.5 o
2 bit; se non si ha più nulla da trasmettere, il "riposo" è molto più lungo,
ovviamente. Molti sistemi non possono utilizzare 1.5 bit di stop che
venivano usati dalle telescriventi a 110 baud di velocità perché permetteva
il CR/LF (ritorno carrello/salto linea). In genere, nei personal computer, il
formato del pacchetto ricetrasmesso è indicato da una sigla composta da
numeri e cifre, per esempio 8n1 e 7e2: la prima cifra indica quanti bit di
dati sono trasmessi (nei due esempi rispettivamente 8 e 7). La prima lettera
segna il tipo di parità (rispettivamente nessuna ed even-parity, cioè parità
pari). La seconda cifra il numero di bit di stop (rispettivamente 1 e 2).
Tenendo conto che esiste sempre un solo bit di start, un singolo blocco di
bit è quindi, per i due esempi riportati, costituito rispettivamente da 10
(1+8+0+1) e 11 (1+7+1+2) bit. Da notare che di questi bit solo 8 e,
rispettivamente, 7 sono effettivamente utili. Lo standard originale prevede
una velocità da 75 baud a 19200 baud. Uno standard successivo (RS-562)
ha portato il limite a 64 Kbps lasciando gli altri parametri elettrici
praticamente invariati e rendendo quindi i due standard compatibili a
bassa velocità. Nei normali PC le cosiddette interfacce seriali RS-232
arrivano in genere almeno a 115 Kbps o anche più: pur essendo
53
formalmente al di fuori di ogni standard ufficiale non si hanno particolari
problemi di interconnessione. Ovviamente sia trasmettitore che ricevitore
devono accordarsi sul modo di trasmettere i dati prima di iniziare la
trasmissione. È importante garantire il rigoroso rispetto della durata dei
singoli bit: infatti non è presente alcun segnale di clock comune a
trasmettitore e ricevitore e l'unico elemento di sincronizzazione è dato dal
fronte di discesa del bit di start. Come linea guida occorre considerare che
il campionamento in ricezione è effettuato di norma al centro di ciascun bit:
l'errore massimo ammesso è quindi, teoricamente, pari alla durata di
mezzo bit (circa il 5% della frequenza di clock, considerando che anche il
decimo bit deve essere correttamente sincronizzato). Naturalmente questo
limite non tiene conto della possibile difficoltà di riconoscere con precisione
il fronte del bit di start (soprattutto su grandi distanze ed in ambiente
rumoroso) e della presenza di interferenze intersimboliche tra bit adiacenti:
per questo spesso è consigliabile usare un clock con una precisione
migliore dell'1% imponendo di fatto l'uso di oscillatori a quarzo. Si
potrebbe anche ipotizzare un meccanismo che tenta di estrarre il clock dai
fronti intermedi, ma si tratta nel caso specifico di un lavoro poco utile, visto
che la lunghezza del pacchetto è piuttosto breve.
Il bit di parità
Oltre ai bit dei dati (in numero variabile tra 5 e 9) viene inserito un bit di
parità (opzionale) per verificare la correttezza del dato ricevuto. Di questo
particolare ma importante bit ne esistono 5 importanti versioni:
54
• Mark: il bit di parità vale sempre mark;
• Space: il bit di parità vale sempre space;
Il bit di parità può essere LRC o VRC , cioè la funzione di parità, un XOR di
bit a bit della stringa dati incluso il bit di parità stesso, può essere eseguita
sia lateralmente che verticalmente sui dati inviati, ottenendo una stringa
dati di parità finale con il relativo bit di parità : il LRC di tale stringa dati di
controllo deve combinarsi secondo le parità precedentemente eseguite
verticalmente che sul blocco VRC-dati creato.
55
Figura 2-1: schema logico architettura CIM
56
La piramide CIM
Gestione
Azienda
Livello 4 :
Gestione Stabilimento
57
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.
58
soprattutto dal punto di vista economico, rivestono le moderne soluzioni di
automazione basate su Personal Computer (PC).
59
statistico di errori di produzione e di conseguenza ha una maggior resa dal
punto di vista sia produttivo che dal punto di vista di costi a grosse
indagini di mercato e altro ancora.
Come accennato sopra, sposando questa causa, si ottengono ottimi
risultati e vantaggi tra i quali:
• ottimizzazione e pianificazione dei processi produttivi
• migliore utilizzo delle risorse
• riduzione del tempo di produzione
• semplificazione dell'installazione e manutenzione ad esempio
taratura a distanza e rilevamento guasti massima flessibilità di
produzione
• riconfigurazione del sistema a nuove lavorazioni in tempi brevi
• miglioramento del controllo della qualità
• controllo di ogni singolo prodotto invece che solo alcuni
campioni
60
sistema espleta le proprie funzioni e il campo di applicazione. Utilizzando il
linguaggio della matematica possiamo dire che i sistemi SCADA sono
insiemi di funzioni dei quali si usa dare una definizione enumerando le
funzioni dell’insieme senza che queste siano qualificate in termini di
dominio e codominio (determinati dalle caratteristiche del campo di
applicazione) e in termini di proprietà delle funzioni, è come se la
trigonometria potesse essere definita come Seno Coseno Tangente e
Cotangente senza la definizione delle caratteristiche di continuità,
periodicità e quant’altro necessario a giustificare l’esistenza stessa del
termine “trigonometria” e del metodo di calcolo che questa rappresenta.
Così come in matematica lo studio di un insieme di funzioni come “caso
particolare” serve a estendere la comprensione del problema ma non la
conoscenza, nel caso dei sistemi di controllo la distinzione tra sistemi
SCADA e altri sistemi affini serve a comprendere meglio il ruolo che `e stato
attribuito loro dall’applicazione che hanno avuto per la risoluzione di
problemi di controllo. Le parte seguente mostra una breve descrizione delle
funzioni svolte da un sistema SCADA e le differenze che possono essere
individuate nel confronto tra questo tipo di sistemi e un altro tipo, affine al
primo, anch’esso destinato a realizzare funzioni di controllo e
comunemente indicato con l’acronimo DCS (Distributed Control System).
61
Figura 2.3 : Schema logico SCADA
Acquisizione dati
L’acquisizione dati è una funzione che nella maggior parte dei casi ha un
ruolo di supporto alle funzioni di supervisione e controllo poiché mette in
relazione il sistema con il processo controllato consentendo la conoscenza
dello stato in cui si trova il processo e l’azione di controllo esercitata per
mezzo della variazione di parametri caratteristici del processo. In questo
senso “acquisizione dati” significa in realtà scambio dati in entrambe le
direzioni: dal processo verso il sistema e viceversa. In alcuni sistemi
classificati come sistemi SCADA l’acquisizione è la funzione principale
svolta dal sistema; questo è il caso in cui non ci sono procedure di controllo
implementate dal sistema e la fase di supervisione può essere realizzata
sporadicamente o come analisi a posteriori degli stati acquisiti dal
processo. Esempio di questo tipo di casi è un qualsiasi sistema di
telerilevamento nel quale il primo obiettivo è la raccolta e l’organizzazione
dei dati sui quali possono essere condotte analisi non necessariamente
predefinite. L’acquisizione dati entra nella definizione di sistema SCADA
per il fatto che non è possibile espletare funzioni di supervisione senza
62
acquisire informazioni sullo stato in cui si trova il processo osservato così
come non è possibile orientarne il comportamento, cioè controllarlo, senza
avere la possibilità di influenzare lo stato cambiando il valore di parametri
che lo caratterizzano. La funzione di acquisizione dati di un sistema SCADA
è considerata generalmente una funzione di scambio puro e semplice di
informazioni tra la parte di sistema che realizza supervisione e controllo e
processo controllato, cioè si considera assente qualsiasi processo
decisionale interposto tra le strutture di supervisione e controllo e il
processo controllato. Nei casi in cui questa condizione viene a mancare si
ha a che fare con sistemi che realizzano qualcosa di diverso rispetto a
quanto viene fatto da un sistema SCADA inteso in senso classico, si hanno
cioè strutture a intelligenza distribuita. Uno dei motivi per il quali esiste
questa distinzione consiste nel fatto che la distribuzione della capacità di
elaborazione si rende necessaria solitamente nei casi in cui il processo
controllato ha dimensioni geograficamente rilevanti, tali da ostacolare la
realizzazione di un sistema di elaborazione concentrato e collocato a
ridosso del processo.
Supervisione
63
informazioni di stato corrente e/o storiche del processo osservato e/o
controllato non può essere definito come sistema SCADA.
Controllo
64
caratteristiche del sistema destinato a controllarlo. Nel seguito sono
presentati alcuni elementi classici di indagine per la determinazione delle
caratteristiche fondamentali del sistema di controllo. La qualificazione del
processo rispetto a questi elementi permette di individuare vincoli nella
definizione delle specifiche tecniche,funzionali, organizzative che nella
maggior parte dei casi si traducono negli elementi distintivi del sistema
realizzato rispetto a tutti gli altri.
67
miniaturizzazione della componentistica elettronica e la diminuzione dei
costi, sono entrati anche nell'uso domestico. Si porta in proposito come
esempio l'installazione di un PLC nel quadro elettrico di un'abitazione, a
valle degli interruttori magnetotermico e differenziale (salvavita), esso
permette la gestione automatica dei molteplici sistemi e impianti installati
nella casa: impianto di riscaldamento, antifurto, irrigazione, LAN, luci,
ecc.... Un PLC è un oggetto hardware componibile. La caratteristica
principale è la sua robustezza estrema, infatti normalmente il PLC è posto
in quadri elettrici in ambienti rumorosi, con molte interferenze elettriche,
con temperature elevate o con grande umidità. In certi casi il PLC è in
funzione 24 ore su 24, per 365 giorni all'anno, su impianti che non
possono fermarsi mai. La struttura del PLC viene adattata in base al
processo da automatizzare. Durante la progettazione del sistema di
controllo, vengono scelte le schede adatte alle grandezze elettriche in gioco.
Funzionamento
La prima cosa che il PLC compie è la lettura degli ingressi e con questo si
intende tutti quelli digitali che analogici, on board o su bus di campo
(schede remote collegate al PLC o con una rete di comunicazione). Lo stato
degli ingressi, una volta letto, viene memorizzato in una memoria che è
definita "Registro immagine degli ingressi". A questo punto le istruzioni di
comando vengono elaborate in sequenza dalla CPU e 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 viene detto tempo di ciclo
(solitamente pochi millisecondi).
68
Struttura del PLC
Cpu
69
• unità di gestione, ovvero informazioni di gestione del PLC stesso,
impostate dal costruttore e trasparenti all'utente;
• archivio di temporizzatori e contatori funzionali all'operatività del
PLC;
• memorie immagine del processo, cioè le informazioni in ingresso ed i
comandi in uscita del processo;
• memoria utente, in cui vengono scritti i programmi che il PLC deve
eseguire;
• interfaccia per il dispositivo di programmazione, che comunica con gli
strumenti di programmazione;
• bus dati, comando, indirizzi per la veicolazione dei dati fra le varie
parti e con l'esterno della CPU.
Schede di comunicazione
• Profibus
• DeviceNet
• TCP/IP
• Modbus (molto importante)
• Fins, C-command
70
CANALI DI COMUNICAZIONE PER L’AUTOMAZIONE
71
Semplicità: questi protocolli non vengono utilizzati solo tra plc e pc ma
anche tra vari plc, per cui devono essere semplici poiché la
programmazione in questi apparati elettronici non è ancora cosi evoluta
come in quella dei pc. La semplicità, d’altra parte, non é sinonimo di facile
implementazione, infatti implementare questi protocolli su un normale
ambiente di sviluppo di pc comporta un’ottima conoscenza elettronica
riguardo alle varie conversioni. Ad esempio, per lavorare direttamente entro
il Plc, è necessario conoscere a fondo la conversione tra numeri in base
decimale in numeri in base esadecimale (la codifica che usano i Plc ), la
conversione in Bcd e la conversione in Big-endian
72
limiti: con esso i parametri possono in qualsiasi momento essere variati,
offre una velocità di trasmissione nemmeno paragonabile alla precedente
soluzione, senza contare la possibilità di “sniffare” tutto ciò che passa
attraverso la rete. Ciò detto costituisce ulteriore conferma del fatto che non
può e non deve esserci paragone tra le due tecniche di comunicazione.
C-Command
Uno dei protocolli usati da Omron per la comunicazione tra i plc e tra pc e
plc viene definito e denotato come C-Command. I C-Command sono uno
dei primi protocolli utilizzati dalla ditta implementati attorno agli anni ’80
erano il punto di forza dell’azienda. Comunicano solo ed esclusivamente
mediante porta seriale. Vorremmo brevemente spiegare il protocollo in tutte
le sue parti partendo con il mostrare in un breve disegno la sintassi e
semantica del pacchetto di invio
73
Terminator : Contiene l’asterisco e un carattere speciale di terminazione
Nella tabella unicode corrispondeva al carattere 13
74
Scrittura W# Scrittura Timer 1
Timer/counter W$ Scrittura Timer 2
W% Scrittura Timer 3
Stato Unità MS Lettura dello stato
CPU SC Cambiamento di modalità operativa
MF Lettura di errori
Forzatura KS Forzatura a 1
settaggio KR Forzatura a 0
resettaggio bit FK Forzatura multipla di bit
KC Cancellazione di tutte le forzature
Modello PLC MM Modello del PLC
Testaggio TS Test
Modalità RP Lettura del programma in memoria
lavoro WP Scrittura del programma in memoria
Creazione MI Creazione tabella I/O
tabella
Creazione QQMR Registro di memoria I/O
registri QQIR Lettura del registro
Processi di XZ Reset della macchina
comunicazione ** Inizializzazione
IC Comando lasciato a disposizione dell’utente
Figura 3-2: tabella comandi C-Command
75
Il campo Text in certe risposte può anche essere vuoto a seconda del
comando inviato. Se ci sono però stati problemi non dal punto di vista di
sintassi del comando ma se ad esempio una particolare istruzione non è
supportata in una determinata modalità in cui il PLC viene a trovarsi, se vi
è stato un errore nel calcolo FCS, se ancora viene definito un indirizzo di
memoria non incluso nel range disponibile in quel determinato PLC, nel
campo end code viene visualizzato un valore diverso da 00, che si riferisce
ad uno specifico errore. Al contrario se sono avvenuti errori di sintassi e
semantica del pacchetto, viene ricevuto un secondo pacchetto di errore:
Fins
76
ICF (Information control field) Configurato per mostrare la
sequenza del datagramma
RSV (Reserve) Bit usati dal sistema
GCT (Gateway Count) Indica quanti nodi di rete il pacchetto può
attraversare da 0 a 8.
DNA (Destination network address) Specifica in esadecimale la rete
di destinazione
DA1 (Destination node address) Specifica il nodo di rete di
destinazione
DA2 (Destination unit address) Specifica l’unità di comunicazione
di destinazione
SNA (Source network address) Specifica in esadecimale la rete
sorgente
SA1 (Source node address) Specifica il nodo di rete di sorgente
SA2 (Source unit address) Specifica l’unità di comunicazione di
sorgente
SID (Service ID) usato per identificare il processo di trasmissione
COMMAND Varia da comando a comando
CODE
TEXT Varia relativamente al comando inviato
77
Command
Code
Tipo Descrizione
MR SR
78
Errori 21 01 Lettura file di log
21 02 Cancellazione file di log
21 03 Eliminazione del File
Errori protocollo 21 40 Scrittura area di accesso Fins
FINS 21 41 Pulizia Area di scrittura comandi fins
Memoria 22 01 Lettura File
riservata ai File 22 02 Lettura di un singolo file
22 03 Scrittura di un singolo file
22 04 Cancellazione File
22 05 Formattazione Memoria
22 07 Copiatura File
22 08 Modifica none del File
22 0A Memoria Di appoggio di trasferimento file
22 0B Parametri di trasferimento File
22 0C Programma di trasferimento file
22 15 Creazione\Cancellazione Directory
22 20 Trasferimento memoria esterna
Forzature 23 01 Forzatura Bit
23 02 Eliminazione Forzature
Figura 3-6 : Comandi fins
79
Anche in questo caso la risposta contiene un altro campo denominato End
Code, che contiene un possibile errore avvenuto durante la comunicazione.
Se tutto è andato a buon fine il suddetto conterrà 00.
80
In questa foto non è visibile, ma come interfaccia di ingresso ha un
connettore RJ45 , mentre in uscita, come si vede chiaramente in figura, vi
è un connettore RS232 o comunemente chiamata porta Seriale. Al suo
interno contiene un piccolo server, nel quale è possibile settare i principali
parametri di configurazione, tra i quali: indirizzo ip e porta del bridge,
parametri di configurazione della porta seriale in uscita, ecc…. Oltre a
questi semplici e importanti parametri offre anche la possibilità di lavorare
in diverse modalità, a seconda della funzione ed infine contiene un access
list (ACL), la quale elenca tutti i possibili indirizzi IP che sono abilitati a
comunicare con o attraverso il bridge . Il corretto funzionamento è
permesso anche grazie ai driver forniti dall’azienda produttrice. Quando
un applicativo vuole comunicare tramite la porta seriale i driver controllano
se la porta seriale esiste veramente (porta fisica); in questo caso la
comunicazione avviene normalmente. Al contrario quando si tenta di
accedere ad una porta seriale inesistente (porta virtuale) i driver
redirezionano la comunicazione (inserendo header e tail appropriati) sulla
scheda ethernet e viene inviato il pacchetto in modo broadcast. Gli
eventuali bridge collegati alla rete ricevono il pacchetto, se la porta seriale
di destinazione coincide con i parametri precedentemente stabiliti,
convertono il segnale e lo trasmettono tramite l’interfaccia di output,
mentre se la porta non coincide, il pacchetto viene ignorato.
81
UN’APPLICAZIONE CONCRETA: CONTROLLO DI PLC OMRON
82
Figura 4-1 : vecchia architettura progetto
84
continuamente interrogare i Plc, soprattutto quelli connessi con
collegamenti seriali mantenendo ottime le prestazioni di accesso in base ad
un costo temporale. Come spiegato sopra questa applicazione richiede
anche un costante aggiornamento dell’orologio interno dei vari Plc.
Abbiamo utilizzato un piccolo server presente in azienda, costantemente
acceso per il monitoraggio di un’ altra applicazione, inserendo un piccolo
modulo software - chiamato appunto Sincronizzatore – che, dopo un tempo
costante, aggiorna l’ orologio di ogni Plc con l’ora corrente del server in cui
l’ applicativo è installato. L’ultimo ma non meno importante componente è
il programma di interfaccia utente, installato sulla postazione di controllo,
unico vero collante tra le varie parti del sistema.
Questa, viste le soluzioni precedenti e i vari software presenti in azienda,
necessitava essere snella, rapida da comprendere ed usare e infine dotata
di molti shortcut key (o tasti i scelta rapida) molto simile a vecchie
applicazioni Dos.
I sistemi controllati
Dopo aver mostrato l’architettura generale del sistema, abbiamo svolto una
breve e semplice analisi, dalla quale sono emerse le entità coinvolte
meritevoli di considerazione.
Qui sotto si propone un piccolo e breve elenco per capirle comprenderle al
meglio.
85
Lo SCADA : é un piccolo modulo software installato su un server che ha il
compito di sincronizzare gli orologi all’ interno dei PLC. Le caratteristiche
teoriche degli scada sono state chiarite in precedenza mentre per la parte
implementava é rimandata ad un successivo capitolo.
Per comunicare fra i vari PLC, abbiamo dovuto inserire dispositive o schede
elettroniche, atte al raggiungimento di una comunicazione snella e veloce.
Nei nuovi PLC, cioè quelli della famiglia C200HS, è possibile inserire una
scheda di rete, chiamata precisamente ETN-11, la quale, a sua volta,
contiene un connettore RJ45, il classico connettore di rete Ethernet.
Questo fa si che tra un normale computer e suddetto PLC, la
comunicazione avvenga tramite rete Ethernet. I dispositivi associati sono i
più comuni utilizzati in qualsiasi altro ambiente, dove la comunicazione
avviene mediante l’anzidetta tecnologia. (Hub,router,switch,ecc..) Per i
86
restanti PLC, quelli facenti parte della famiglia CP1A, tale modulo ETN-11,
non era più in produzione, pertanto la comunicazione poteva avvenire solo
ed esclusivamente mediante porta seriale. E’ stato quindi necessario
ricorrere ad un bridge ethernet seriale, in grado di ricevere in input un
segnale ethernet, convertirlo in un segnale seriale, inviarlo al plc e
viceversa. In questo modo tutta la comunicazione globale avviene tramite
cavi RJ45, mentre il cosiddetto “ultimo miglio” avviene tramite canale
seriale.
Dal punto di vista teorico lo scada è stato trattato in modo esaustivo nei
capitoli precedenti. Un’architettura di questo tipo però entra pedantemente
a far parte del nostro applicativo come sincronizzatore degli orologi interni
del plc. Vorremmo quindi spiegare brevemente la infrastruttura e la
architettura da noi sfruttata e utilizzata. La tecnologia usata é stata, nel
complesso, molto semplice. Come interfaccia grafica abbiamo pensato di
creare una piccola form che derivasse dalla classe WindowsForm presente
in C# in modo da avere tutte le potenzialità di una classica interfaccia
utente , ma con la possibilità di creare overriding e overloading dei metodi
per poter eliminare alcuni aspetti delle form per noi poco interessanti. La
form da noi creata risulta molto semplice e intuitiva, contiene il simbolo
dell’azienda, una progressbar e alcune label per visualizzare il risultato. Il
sincronizzatore opera in questo modo: sfruttando i componenti C# e
precisamente il componente Timer ne sono stati creati 7 uno generale e i
restanti associati ad ogni singolo stabile. Il primo chiamato -timer generale-
viene attivato ogni 15 minuti, questo non fa altro che attivare un altro
timer, e precisamente quello dello stabile A ( la scelta é ricaduta su questo
perché è il primo in ordine alfabetico, non per motivi tecnici) Il timer dello
stabile A richiama il comando per la sincronizzazione dell’orologio interno.
87
Inoltre, analizzando a fondo il programma del Plc ci siamo accorti che
l’orario era ripetuto all’interno di memorie utilizzate esclusivamente dal
programma e precisamente nella Dm 0, 1 e 2. L’orario però in queste 3
celle di memorie era diviso in questo modo: nella prima erano memorizzati i
secondi, nella seconda era memorizzato l’orario come minuti dalla
mezzanotte, cioè un numero intero compreso tra 0 se si trattava della
mezzanotte del giorno corrente e 1439 se si trattava della mezzanotte
meno un minuto. Ed infine nella terza ed ultima Dm era memorizzato il
giorno come un numero intero progressivo e compreso tra 1 se si trattava
di lunedì e 7 se si trattava della domenica. Questo timer rimane attivo per 1
minuto infatti il tempo che intercorre tra l’ invio del primo pacchetto
(sincronizzazione orologio) e la risposta dell’ultimo (scrittura avvenuta
correttamente) anche in casi peggiori è sicuramente minore . Ultimate in
modo corretto le sue operazioni attiva il secondo timer che svolge le
medesime operazioni. Terminate poi la sincronizzazioni dei primi 4 stabili
si passa alla sincronizzazione degli ultimi 2 stabili. In questo caso però il
programma contenuto all’interno dei PLC costantemente ed in automatico
aggiorna il suo orario anch’esso creato nelle sue dm cosi in questo caso é
bastato solo creare un piccolo socket e inviare tramite esso il comando
Fins appropriato. Terminato ciò si disabilitano e si rimane in attesa della
nuova abilitazione. Se il sincronizzatore per qualche motivo non riesce a
comunicare o i parametri dei comandi inviatogli sono errati in automatico
inserisce all’interno del database un record nella tabella dei log contenente
il tipo di errore.
Come in ogni applicazione che si rispetti anche in questo caso serviva una
base dati per la persistenza, la coerenza, la manutenibilità e i possibili
88
aggiornamenti o ampliamenti futuri. La nostra base di dati deve essere in
grado di soddisfare i seguenti requisiti:
• Contenere tutti i dati relativi ai dettagli generali dell’applicazione,
come ad esempio i parametri di connessione ai vari plc, i parametri
del protocollo Fins, e alcuni parametri riferiti ad alcune preferenze
dell’utente
• Contenere gli stessi dati, ovviamente in un formato diverso , presenti
in ogni Plc , per far si che gli utenti di questa futura applicazione, non
siano costretti a collegarsi ad un particolare Plc per poter visualizzare
i dati contenuti, ma con semplici istruzioni SQL possano essere
visibili , aumentando in questo modo l’efficienza globale (rispetto al
tempo di esecuzione).
• Contenere i dati e i vari privilegi degli utenti che andranno ad
utilizzare questa applicazione aumentando in questo modo la
sicurezza .
• Contenere un piccolo storico delle operazioni svolte per mantenere la
tracciabilità e la possibilità di effettuare un rollBack delle possibili
operazioni dannose commesse all’interno del sistema.
Dopo una lunga analisi (con non poche discussioni) siamo arrivati a
definire un piccola base di dati.
89
Figura 4-2: diagramma ER
90
Il Diagramma ER sovrastante spiega i collegamenti logici tra le varie
tabelle, mentre non spiega la semantica delle tabelle, che però viene di
seguito illustrata
PLC_LIST : oltre che ha contenere i 6 plc con i suoi dati “personali” sono
presenti anche i parametri di connessione.
RELE : contiene la lista delle uscite abilitate, che noi per semplicità
abbiamo definito in questo modo. Infine contiene tutti i vari parametri che
servono all’applicazione per trattare in modo corretto le possibili uscite o
rele che i Plc associati ofrono.
FASCIA : suddetta tabella contiene gli orari di inizio e fine di ogni relé
precedentemente abilitato. Una sua particolarità è quella di non caricare
antecedentemente tutte le fasce che potranno essere inizializzate, ma solo
quelle veramente abilitate, (cioè quelle che hanno subito una modifica da
un utente abilitato), in modo da evitare spreco di spazio. E’ stato il motivo
per cui è stato necessario inserire un campo numerico posizione che
permette, anche grazie al giorno e al relé , di risalire con precisione e senza
margine di errore la reale ubicazione della fascia.
PRIVILEGI : contiene i relé o gli stabili che un dato utente può manipolare
(modificare fasce orarie). Se un determinato utente e un Power Admin ,
sinonimo di Amministratore generale, questa tabelle viene ignorata poiché
questo particolare utente ha tutti i privilegi.
91
LOG e SESSIONI : la tabella dei log contiene le operazioni principali svolte
dagli utenti, mentre nella tabella sessioni è contenuto l’ora di ingresso,
inteso come login effettuato in modo corretto, e l’ora di uscita, intesa come
disconnessione o chiusura della form principale, di un utente.
Per l’implementazione di questa base di dati inizialmente ho creato tutte le
tabelle mediante comandi SQL . Per ogni tabella, poi, ho utilizzato una
sequence cioè un contatore che viene impiegato come chiave primaria.
L’unicità di questo particolare elemento viene costruita mediante la
realizzazione di un trigger che, dopo l’inserimento di un determinato
record, incrementa il contatore e lo inserisce nel campo prestabilito. Al
termine mi sono preoccupato di generare dei particolari trigger in grado di
mantenere coerenza e consistenza tra le chiavi primarie e le chiavi esterne
presenti nelle varie tabelle. In corso d’opera poi il cliente, ha modificato le
richieste, esigendo la possibilità che l’applicazione svolgesse il suo normale
compito (anche con funzionalità ridotte) senza la base di dati. Bisognava
quindi trovare una soluzione veloce, ottimale senza dover stravolgere il
codice e la logica già definite e scritte. Dopo una breve analisi e una lunga
ricerca tramite Internet, si è giunti alla soluzione creando dei file Xml in
grado di simulare la stessa base di dati (o almeno una parte…) su questi
particolare file. Pure in questa occasione abbiamo sfruttato le potenzialità
offerte dall’ ambiente di sviluppo e in particolare la libreria di classi
chiamate System.Linq. Tale libreria richiede in input uno schema (sfruttato
nel file per creare i tag e i nodi principali) e una serie di dati nello stesso
formato utilizzato in un database ed in output restituisce il file Xml. Come
si intuisce da quanto detto prima,la libreria non è nient’altro che un parser
Xml che permette di creare e gestire una piccola o modesta base di dati su
file, questo comporta anche la possibile ricerca, cancellazione, o modifica
dei record, chiamati, nello specifico, nodi. Il pacchetto Linq in questo caso
mette a disposizione un particolare linguaggio molto simile al linguaggio sql
atto a svolgere tutte le operazioni sopra citate. Per inserirlo nella logica
precedentemente definita abbiamo creato un serie di classi che hanno il
92
compito di svolgere le funzioni di manipolazione di dati su Xml, cioè un
adapter . Infine, sfruttando al massimo le capacità della programmazione
OOP abbiamo aggiunto un nuovo strato software, con il compito di
mantenere congruente la base di dati con file Xml. Ogni volta che viene
salvato un particolare record all’interno del database, viene salvato
contemporaneamente sul file Xml, cioè un wrapper, un “cappello” che
maschera il salvataggio.
Visione di insieme
93
Come si può notare sono presenti i sei plc dei quali due collegati
direttamente alla rete ethernet, mentre i restanti collegati mediante il
bridge ethernet-seriale. La base dati oracle è accessibile da ogni Pc o
dispositivo collegato.
94
UDP). Il secondo implementa i vari protocolli proprietari di Omron . Il terzo
pacchetto implementa la connessione e la comunicazione al database. Il
quarto si occupa di strutturare in memoria locale tutti i dati e le
informazioni presenti nel database. Ogni entità, quindi, viene rimappata in
memoria mediante le classi atte alla manipolazione dei dati all’interno del
database e all’interno dell’applicazione stessa. Il quinto pacchetto si occupa
delle varie conversioni dei dati per la comunicazione o per la corretta
sintassi dei dati utilizzati all’interno del PLC. L’ultimo pacchetto contiene
tutte le interfacce grafiche (quella rappresentata nella figura sovrastante è
solo la principale, ma, ne sono state realizzate molte altre al fine di
raggiungere un discreto grado di semplicità e immediatezza riguardo la
manipolazione dei dati). Il medesimo pacchetto sviluppa funzioni in grado
di soddisfare appieno le richieste del cliente. Un esempio è la navigazione
completa dell’interfaccia mediante short-key.
95
IL LAVORO OPERATIVO
Difficoltà incontrate
Dopo aver mostrato nei vari capitoli precedenti tutto ciò che riguarda
l’applicativo, visto sia dal punto di vista teorico sia dal punto di vista di
implementazione e progettazione vorrei soffermarmi sulle difficoltà avute e
incontrate in corso d’opera. Dal punto di vista di progettazione non
abbiamo incontrato particolari difficoltà perché il sistema era
completamente da rifare, i vincoli erano pochi tra i quali la struttura della
rete e anche la sua disposizione. Il problema maggiore è stata la vera e
propria implementazione, data anche dalla nostra poca esperienza con
l’ambiente di sviluppo. Abbiamo cominciato ad implementare i C-
Command, i manuali a disposizione erano tanti ma non sempre
descrivevano effettivamente ciò che si doveva fare nella realtà. E’ giusto
sottolineare che il protocollo utilizza una comunicazione seriale pertanto
era impossibile inserire tra i due attori uno strato software per capire o
visualizzare ciò che i medesimi si inviavano. Dopo alcune prove, ricerche e
tentativi il protocollo è stato implementato correttamente. Siamo poi
passati al protocollo Fins, in questo caso i manuali erano molto più efficaci
ed efficienti, le spiegazioni erano dettagliate (anche se alcuni parametri non
erano documentati sufficientemente). Il problema incontrato in questo
caso era rappresentato dall’implementazione di un socket UDP con il nuovo
linguaggio di programmazione, anche in questo caso, dopo molte ricerche
su Internet, la cosa si è risolta nei migliore dei modi. Il lavoro di
implementazione del socket, non è stato in seguito utilizzato entro il
progetto complessivo perchè in corso d’opera è risultato preferibile usare
un componente “chiuso” associato ai convertitori Ethernet-seriali. Il passo
successivo é stata la creazione del database. Questo passaggio non ha
creato alcuna difficoltà, sia dal punto di vista della progettazione sia quella
implementativi. Creato il diagramma ER è stato molto semplice ed intuitivo
96
l’implementazione tramite linguaggio sql. Forse l’unico ostacolo é stata la
creazione di “sequenze”. Oracle non contiene un campo speciale di chiave
primaria che permette in automatico la creazione di un numero univoco
che rappresenta ogni record. In Oracle bisogna creare una successione e
un trigger in grado di sopperire la mancanza di questo campo speciale. Un
ulteriore passaggio è stato quello di creare i metodi e le classi per la
comunicazione e la manipolazione di ogni entità all’interno dei database.
Dal punto di vista di logica implementativa non ci sono stati problemi
poiché è bastata la mia poca esperienza a portare a termine questo step.
Qualche difficoltà si è presentata con la vera e propria implementazione.
Per ultimo abbiamo affrontato il lavoro non poco difficoltoso della creazione
dell’interfaccia utente Per risolvere e soddisfare le richieste del cliente si
sono dovute creare molte icone semplici e intuitive da inserire nelle varie
parti del programma per facilitare gli accessi all’utenza. E’ stato poi
semplice “incollare” i vari passaggi sopra elencati, in quanto nelle varie fasi
di progettazione di ogni singola si sono applicate le tecniche apprese nel
corso di laurea.
97
attribuire al Bridge, ma scaricando da Internet un piccolo applicativo Open
Source scritto in Visual Basic 6, abbiamo constatato che la comunicazione
avveniva in modo non solo corretto, ma anche veloce. Il problema quindi si
è spostato dal Bridge al programma in sé. Chiedendo parere ad esperti si è
compreso che la gestione dell’oggetto porta seriale all’interno di C# era
completamente diverso e non supportava di conseguenza le porte virtuali.
Si è deciso pertanto di importare l’oggetto porta seriale, creando un Active
X da VB 6. Nel momento in cui abbiamo dovuto implementare la classe
socket, avendo riscontrato lo stesso problema, si è proceduto
analogamente. Su espressa e specifica richiesta del cliente, sono state
successivamente apportate variazioni e correzioni all’interfaccia grafica.
98
CONCLUSIONI
Il sistema in esecuzione
99
interessante ed istruttivo. Utilizzando un sistema di DBMS nuovo e di alto
livello ho avuto modo di ampliare la mia esperienza e la mia conoscenza. Mi
sono avvicinato al mondo del PLC, anche se di una singola marca, ma
parlando in ufficio con gente più esperta di me, ho potuto comprendere che
anche gli altri PLC di diversa marca, mantengono caratteristiche pressoché
simili. Non ho dubbi ad affermare di aver pertanto acquisito concrete
capacità di lavorare su PLC di qualsiasi altra marca. La vera e propria
implementazione è stata complicata, ma nello stesso tempo anche
interessante. Ho potuto e dovuto scrivere righe di codice agendo su varie
parti, anche completamente diverse, ma riutilizzabili sicuramente in altri
programmi. Si parte infatti dalla creazione di codice atto alla
comunicazione (porta seriale, e socket), la realizzazione di un protocollo (nel
caso specifico C Command e Fins, includendo pure la gestioni dei diversi
errori), la comunicazione con un data base, l’implementazione di query per
la manipolazione dei dati, la realizzazione di controlli per la manipolazione
di file XML ed infine una miriade di procedure, funzioni, classi e pacchetti
allo scopo di raggiungere la corretta e completa funzionalità del software.
100
notturni ecc…. L’utente avrebbe quindi la possibilità di opzione sui diversi
profili e un’amplia possibilità di caricamento dati. Non vediamo rilevanti
applicazioni o aggiornamenti futuri in quanto l’applicazioni e stata creata
ad hoc per quell’azienda rispettando le tutti i suoi vincoli ed esigenze. Ciò
non toglie pero che parti di codice vengano inserite in un altro contesto e
essere riutilizzate per scopi completamente diversi , si pensi al protocollo di
comunicazione Omron , la connessione al DataBase , la gestione dei file
Xml ,ecc…
101
INDICE DELLE FIGURE
102
1-24 Retro di un PC con due porte RS-232 (i due connettori
maschio in basso)
1-25 Segnale della porta RS232
103
BIBLIOGRAFIA
104
105