Studio di un recente Standard di Comunicazione e Integrazione Dati in ambito industriale: OPC Unified Architecture - Ingegneria Informatica

Pagina creata da Lucia Grandi
 
CONTINUA A LEGGERE
Studio di un recente Standard di Comunicazione e Integrazione Dati in ambito industriale: OPC Unified Architecture - Ingegneria Informatica
Scuola Politecnica e delle Scienze di Base
Corso di Laurea in Ingegneria Informatica

Elaborato finale in Reti di Calcolatori

Studio di un recente Standard di
Comunicazione e Integrazione Dati in
ambito industriale: OPC Unified
Architecture

Anno Accademico 2018/2019

Candidato:
Francesco Garofalo
matr. N46000830
Studio di un recente Standard di Comunicazione e Integrazione Dati in ambito industriale: OPC Unified Architecture - Ingegneria Informatica
Verso l’infinito e oltre.
Toy Story.
Studio di un recente Standard di Comunicazione e Integrazione Dati in ambito industriale: OPC Unified Architecture - Ingegneria Informatica
Indice

Indice.................................................................................................................................................. III
Introduzione ......................................................................................................................................... 4
Capitolo 1: Industry 4.0 Communication Protocols ............................................................................ 7
   1.1 Classic OPC ............................................................................................................................... 9
   1.2 OPC Data Access ..................................................................................................................... 10
   1.3 OPC Alarm & Events............................................................................................................... 12
   1.4 OPC Historical Data Access .................................................................................................... 13
Capitolo 2: OPC UA .......................................................................................................................... 14
   2.1 OPC UA Software Layers........................................................................................................ 16
   2.2      Information Model ............................................................................................................. 18
      2.2.1 AddressSpace .................................................................................................................... 19
      2.2.2 Node Model ...................................................................................................................... 19
      2.2.3 Reference .......................................................................................................................... 20
      2.2.4 View .................................................................................................................................. 21
      2.2.5 Namespace ........................................................................................................................ 21
Capitolo 3: OPC UA IMPLEMENTATION ..................................................................................... 22
   3.1      Data sharing service (Read and Write) .............................................................................. 23
   3.2      Subscription Service .......................................................................................................... 24
   3.3      OPC UA OpenSource example .......................................................................................... 26
      3.3.1 Preparing ........................................................................................................................... 26
      3.3.2 Running the Server ........................................................................................................... 27
      3.3.3 Running the Client ............................................................................................................ 28
      3.3.4 Connect ............................................................................................................................. 28
      3.3.5 Browse .............................................................................................................................. 29
      3.3.6 Subscribe ........................................................................................................................... 29
      3.3.7 Write and Read ................................................................................................................. 30
Conclusioni ........................................................................................................................................ 31
Bibliografia ........................................................................................................................................ 33
Studio di un recente Standard di Comunicazione e Integrazione Dati in ambito industriale: OPC Unified Architecture - Ingegneria Informatica
Introduzione

     Il principale sforzo nello sviluppo del software di automazione negli anni passati è stato
     l'accesso ai dati di automazione, in dispositivi in cui viene utilizzato un numero
     innumerevole di diversi sistemi bus, protocolli e interfacce.
     Un problema simile esisteva per le applicazioni software all’accesso alle stampanti, in cui
     ogni applicazione doveva scrivere i propri driver per ogni stampante supportata.
     MS Windows ha risolto il problema incorporando il supporto della stampante nel sistema
     operativo.
     Questa interfaccia del driver forniva servizio a tutte le applicazioni che avevano bisogno
     dell’utilizzo della stampante. Questi driver sono forniti dai produttori della stampante e non
     dagli sviluppatori delle applicazioni.
     Poiché i fornitori di software HMI (Human Machine Interface) e SCADA (Supervisory
     Control and Data Acquisition) avevano problemi simili, nel 1995 è stata fondata una task
     force avviata dalle società Fisher-Rosemount, Rockwell Software, Opto 22, Intellution e
     Intuitive Technology. L'obiettivo della task force era definire uno standard Plug & Play per
     i driver di dispositivo, che fornisse un accesso standardizzato ai dati di automazione sui
     sistemi basati su MS Windows. Il risultato è stata la specifica di accesso ai dati definita OPC
     (OLE for Process Control), rilasciata dopo poco tempo nell'agosto1996. L'organizzazione
     no-profit che sta mantenendo questo standard è la Fondazione OPC.

                                               4
Studio di un recente Standard di Comunicazione e Integrazione Dati in ambito industriale: OPC Unified Architecture - Ingegneria Informatica
Quasi tutti i fornitori di sistemi per l'automazione industriale sono diventati membri
dell’OPC Foundation. Uno dei motivi di questo successo è stata la riduzione delle
funzionalità principali e la restrizione alla definizione di API (Application Protocol
Interface) che utilizzano le tecnologie Microsoft Windows Component Object Model
(COM) e Distributed COM (DCOM), interfacce che permettono la comunicazione tra
processi. L’esperienza maturata ha portato ad una nuova versione della specifica: OPC Data
Access, che è stata introdotta nel 1998. Questa versione ha consentito ad una maggiore
diffusione dello standard. La seconda versione di OPC Data Access è l'interfaccia più
importante dei prodotti OPC.
Sistemi SCADA e HMI, gestione dei processi e sistemi di controllo distribuito (DCS),
sistemi di controllo basati su PC e Manufacturing Execution Systems (MES) devono
supportare le interfacce OPC oggi. OPC è lo standard, universalmente accettato, che offre
la possibilità di scambiare dati tra diversi sistemi di automazione industriale, nell'industria
manifatturiera e di processo. Negli ultimi anni la Fondazione OPC ha definito una serie di
interfacce software
per standardizzare il flusso di informazioni dal livello di processo al livello di gestione.
OPC è un’architettura client/server che permette ad un qualsiasi processo (Client) basato su
OPC di accedere a qualsiasi sorgente di dati (Server) dotata di interfacce OPC. Il primo

standard OPC di successo è stato - OPC Data Access COM/DCOM, concepito per definire
interfacce Client/Server per l’accesso in lettura scrittura ai dati di processo, permettendo
una semplice integrazione di tutti i dispositivi hardware/software per l’automazione.
OPC-DA non è stato ampiamente adottato nei sistemi di automazione industriale che non
utilizzavano standard COM, e dalle limitazioni dei meccanismi forniti per l’accesso remoto
da DCOM.
Poi altri standard come OPC Alarms and Events e OPC Historical Data Access, ampiamente
accettati nel settore e implementati da quasi tutti i sistemi destinati all’automazione
industriale. Ora OPC Foundation ha rilasciato una nuova generazione di specifiche OPC
denominate OPC Unified Architecture.

                                          5
Studio di un recente Standard di Comunicazione e Integrazione Dati in ambito industriale: OPC Unified Architecture - Ingegneria Informatica
OPC Unified Architecture unifica le specifiche precedenti in un unico spazio di indirizzi in
grado di gestire i dati correnti, gli allarmi e gli eventi, la cronologia dei dati correnti e degli
eventi. Un notevole miglioramento di OPC UA è il modello di spazio degli indirizzi, grazie
al quale i fornitori possono esporre un modello informativo ricco ed estensibile utilizzando
tecniche orientate agli oggetti.
OPC UA si adatta bene a dispositivi intelligenti, controller, sistemi DCS e SCADA fino a
sistemi MES e ERP.

                                            6
Studio di un recente Standard di Comunicazione e Integrazione Dati in ambito industriale: OPC Unified Architecture - Ingegneria Informatica
Capitolo 1: Industry 4.0 Communication Protocols

     L’industria 4.0 di cui spesso si sente parlare, è un processo di cambiamento all’adozione
     nelle fabbriche di sistemi di lavorazione intelligenti e totalmente automatizzati.
     Si adottano nelle aziende impianti a macchine robotizzate, in grado di prendere delle

     decisioni in maniera autonoma (machine learning, data mining). Vengono adottati inoltre
     Cyber-Physical System. I CPS sono dei sistemi informatici che permettono alle macchine
     di comunicare e operare a stretto contatto con il mondo reale.
     La smart factory è proprio questa, è un’azienda intelligente. Nell’Industria 4.0 ci sono due
     elementi fondamentali, gli oggetti IoT, dispositivi sempre connessi all’Internet of Things, e
     i Big Data. Questi sono legati con i sistemi CPS.
     Sostituire le macchine tradizionali con gli oggetti dell’Internet of Things consentirà alle
     imprese di tenere sotto controllo e in tempo reale tutti i processi aziendali e di raccogliere

     dei dati da utilizzare in molteplici modi. I Big Data, consentono di effettuare delle analisi
     predittive, ossia di fare delle previsioni e delle simulazioni in diversi campi di applicazione.
     Quindi un’infrastruttura di comunicazione affidabile, stabile e sicura è un requisito
     importante per la quarta rivoluzione industriale che possiamo definirla come la
     digitalizzazione della produzione e pertanto la disponibilità di una rete di comunicazione
     avanzata è diventata essenziale nel processo produttivo.

                                               7
Studio di un recente Standard di Comunicazione e Integrazione Dati in ambito industriale: OPC Unified Architecture - Ingegneria Informatica
L’automazione industriale vive una costante evoluzione, favorita dal sempre maggior
impiego dell’intelligenza distribuita, con la necessità di far dialogare piattaforme differenti
e caratterizzate da un proprio linguaggio. La crescente presenza di soluzioni di Networking
nel mondo industriale deriva quindi dal fatto che esiste una sempre più forte esigenza di
condivisione delle informazioni. Tali applicazioni richiedono soluzioni di Networking
omogenee, che possano integrare i dati di processo e diagnostica con la rete IT di
stabilimento, la sicurezza dati e la sicurezza funzionale, PLC, I/O distribuiti e azionamenti
con dispositivi standard Ethernet (PC, telecamere, router per accesso remoto via web).
Ethernet è un insieme di tecnologie standardizzate nate per la connessione di dispositivi
diversi come ad es. personal computer e stampanti in reti locali. L’Industrial Ethernet
sfruttando le basi e i vantaggi dello standard Ethernet è stato creato per l’applicazione in
campo industriale. Altra grossa differenza è che Ethernet non nasce come protocollo di
comunicazione deterministico, i dati trasmessi se non corretti vengono ritrasmessi, la
comunicazione avviene con tempi variabili, e questo non costituisce nelle reti Office o
Home una criticità, mentre in ambiente industriale il determinismo della trasmissione dati è
fondamentale e vitale per il funzionamento delle automazioni. Per tale motivo l’industria
usa le basi Ethernet ma con profili e protocolli appositamente studiati per garantire il
determinismo nella trasmissione dati.

Tra i più diffusi protocolli industriali deterministici abbiamo: PROFINET RT/IRT,
EtherNet/ IP, POWERLINK.
CC-Link IE (Industrial Ethernet) e CC-Link sono invece reti industriali aperte che
consentono ai dispositivi di molti produttori diversi di comunicare tra loro. Vengono
utilizzate prevalentemente in applicazioni di controllo per macchinari, celle o processi nelle
industrie manifatturiere e di produzione, ma possono essere impiegate anche per gestire gli
impianti e informatizzare gli edifici.

                                          8
Studio di un recente Standard di Comunicazione e Integrazione Dati in ambito industriale: OPC Unified Architecture - Ingegneria Informatica
CC-Link IE (Industrial Ethernet), attualmente è l’unico protocollo aperto con rete Ethernet
      industriale in grado di operare a velocità Gigabit rendendolo la scelta ottimale per le
      applicazioni Industry 4.0 emergenti. CC-Link IE è disponibile in due versioni: CC-Link IE
      Control, destinata a essere utilizzata come “dorsale” di comunicazione per intere fabbriche,
      e CC-Link IE Field, per il collegamento dei controller ai dispositivi di campo. Entrambe
      funzionano a 1 Gigabit al secondo.

1.1 Classic OPC
      OPC è basata su un’architettura Client-Server, è tipico che un’applicazione rivesta entrambi
      i ruoli, perchè spesso nei dispositivi fisici è integrato anche il lato Server (comunicazione
      device to device). In base ai requisiti delle applicazioni industriali OPC ha tre specifiche
      OPC: DA, A&E, HDA.

         •   L’accesso ai dati di processo correnti sono descritti nelle specifiche DA.
         •   A&E definisce l’interfaccia per le info basate sugli eventi e conferma degli allarmi
             di processo.

         •   HDA descrive le funzioni per accedere ai dati archiviati.

      Tutte le interfacce offrono un modo per navigare nello spazio degli indirizzi e fornire
      informazioni sui dati disponibili. Si avrà un Server OPC che incapsula le informazioni e le
      rende disponibili tramite un’interfaccia.

                                                  9
Studio di un recente Standard di Comunicazione e Integrazione Dati in ambito industriale: OPC Unified Architecture - Ingegneria Informatica
Figura 1

     Il vantaggio di questo approccio è stata la riduzione del lavoro delle specifiche, ci sono
     diverse API per diverse esigenze specializzate, senza la necessità di definire un protocollo
     di rete o un meccanismo per la comunicazione tra processi. COM e DCOM forniscono un
     meccanismo trasparente a un Client per chiamare metodi su un oggetto COM in un Server
     in esecuzione nello stesso processo, in un altro processo o su un altro nodo di rete. L'utilizzo
     di questa tecnologia disponibile su tutti i sistemi operativi Windows ha ridotto i tempi di
     sviluppo delle specifiche dei prodotti e il time-to-market di OPC.
     I due principali svantaggi sono la dipendenza da piattaforma Windows di OPC e i problemi
     DCOM quando si utilizza la comunicazione remota. DCOM è difficile da configurare, ha
     time-out molto lunghi e non configurabili e non può essere utilizzato per le comunicazioni
     Internet.

1.2 OPC Data Access
     L'interfaccia di accesso ai dati OPC consente la lettura, la scrittura e il monitoraggio di
     variabili contenenti i dati di processo correnti. Il caso d'uso principale è quello di spostare i
     dati in tempo reale da PLC, DCS e altri dispositivi di controllo, verso HMI e altri client di
     visualizzazione. OPC DA è l'interfaccia OPC più importante.
     Oggi è implementato nel 99% dei prodotti utilizzando la tecnologia OPC.
     Altre interfacce OPC sono per lo più implementate in aggiunta a DA.

                                               10
methods on a COM-object in a server running in the same process, in another
     process, or on another network node. Using this technology available on all PC-
     based Windows operating systems reduced the development time of the specifica-
     tions and products and the time-to-market for OPC. This advantage was important
     for the success of OPC.
        The two main disadvantages are the Windows-platform-dependency of OPC
     and the DCOM issues when using remote communication with OPC. DCOM is
     difficult
I client  OPCto DA
                 configure, has very long
                       selezionano        and non-configurable
                                      esplicitamente           timeouts,
                                                       le variabili      and cannot
                                                                    (elementi   OPC)be che desiderano
     used for internet communication.
leggere, scrivere o monitorare nel server. Il client OPC stabilisce una connessione al server
creando
    1.2.1unOPC
            oggetto
                DataOPCServer.
                     Access
L'oggetto Server offre metodi per navigare attraverso la gerarchia dello spazio degli indirizzi
     The OPC Data Access interface enables reading, writing, and monitoring of vari-
     ables
per trovarecontaining
             gli oggetticurrent
                             e leprocess data. The main
                                   loro proprietà,    come useilcase
                                                                 tipoisditodati
                                                                           movee real-time  data
                                                                                  i diritti di  accesso.
     from PLCs, DCSs, and other control devices to HMIs and other display clients.
     OPC DA is
Per accedere    ai the
                    datimost  important
                          il Client       OPC interface.
                                      seleziona             It is implemented
                                                  le variabili     (OPC items)   in che
                                                                                    99% vuole
                                                                                          of the leggere, scrivere
     products using OPC technology today. Other OPC interfaces are mostly imple-
     mented in addition
o monitorare    sul Server.to DA.Il Client raggruppa gli elementi con impostazioni identiche come
        OPC DA clients explicitly select the variables (OPC items) they want to read,
     write, orilmonitor
ad esempio       tempo indithe    server. The OPC
                              aggiornamento,       inclient   establishes
                                                       un oggetto          a connection
                                                                      OPCGroup            to the1.1).
                                                                                     (Figura
     server by creating an OPCServer object. The server object offers methods to navi-
     gate through
Quando     vengono  the aggiunti
                         address spacea unhierarchy
                                              gruppo,to find
                                                         gli items   and possono
                                                                oggetti    their properties
                                                                                      essere likeletti o scritti su
     data type and access rights.
        For accessing the data, the client groups the OPC items with identical settings
OPCServer.
     such as update time in an OPCGroup object. Figure 1.3 shows the different objects
     the OPC client creates in the server.

                        Fig. 1.3 Objects created by an OPC client to access data
                                                    Figura 2.1

Tuttavia, il modo preferito per la lettura ciclica dei dati da parte del Client, è il monitoraggio

delle modifiche del valore nel server. Il Client definisce un tasso di aggiornamento sul
gruppo contenente gli elementi di interesse. Il tasso di aggiornamento viene utilizzato nel
Server per verificare ciclicamente i valori. Dopo ogni ciclo, il Server invia al Client solo i
valori modificati.
OPC fornisce dati in tempo reale che potrebbero non essere accessibili in modo permanente,
ad esempio quando la comunicazione con un dispositivo viene temporaneamente interrotta,
OPC gestisce questo problema fornendo timestamp e un valore di qualità per i dati forniti.
La qualità, specifica se i dati sono accurati (buoni), non disponibili (cattivi) o sconosciuti
(incerti).

                                                     11
1.3 OPC Alarm & Events

     L'interfaccia OPC A & E consente la ricezione di notifiche di eventi e notifiche di allarme.
     Gli eventi sono notifiche singole che informano il Client dell'avvenimento di un evento. Gli
     allarmi sono notifiche che informano il Client sul cambiamento di una condizione nel
     processo. Tale condizione può essere il livello di un serbatoio ad esempio, un cambiamento
     di condizione può verificarsi quando viene superato un livello massimo o scende al di sotto
     di un livello minimo. Molti allarmi includono il requisito che l'allarme debba essere
     riconosciuto. OPC A & E offre quindi un'interfaccia flessibile per la trasmissione di allarmi
     e eventi di processo da diverse fonti di eventi.
     Per ricevere notifiche, il Client OPC A & E si connette al server, si abbona per le notifiche
     e riceve tutte le notifiche attivate nel server. Per limitare il numero di notifiche, il client OPC
     può specificare determinati criteri di filtro.
     Il client OPC si connette creando un oggetto OPCEventServer nel server A & E e genera un

     OPCEventSubscription utilizzato per ricevere i messaggi di evento.
      I filtri per questi messaggi di evento possono essere configurati separatamente per ogni
     abbonamento. La Figura 1.2 mostra i diversi oggetti creati dal client OPC nel server.

                                            Figura 1.2

                                                12
1.4 OPC Historical Data Access

      OPC Historical Data Access consente di accedere ai dati che sono già archiviati. Da un
      semplice sistema di registrazione dati seriale, a un sistema SCADA complesso, gli archivi
      storici possono essere recuperati in modo uniforme.
      Il client OPC si connette creando un oggetto OPCHDAServer nel server HDA. Questo
      oggetto offre tutte le interfacce e i metodi per leggere e aggiornare i dati storici. Un secondo
      oggetto OPCHDABrowser è definito per la navigazione nello spazio degli indirizzi del
      server HDA.
      La funzionalità principale è la lettura dei dati storici in tre modi diversi. Il primo
      meccanismo legge i dati grezzi dall'archivio in cui il Client definisce una o più variabili che
      vuole leggere e il dominio temporale. Il Server restituisce tutti i valori archiviati per
      l'intervallo di tempo specificato dal Client. Il secondo meccanismo legge i valori di una o
      più variabili per i timestamp specificati. Il terzo meccanismo di lettura preleva i dati
      aggregati (provenienti da più sistemi) nel database storico per il dominio temporale
      specificato per una o più variabili. I valori includono sempre la qualità e il timestamp

      associati. Oltre ai metodi di lettura, OPC HDA definisce anche i metodi per l'inserimento,
      la sostituzione e l'eliminazione dei dati nel database della cronologia.

                                                13
Capitolo 2: OPC UA

    OPC Unified Architecture come già detto precedentemente nasce dalla volontà di creare un
    sostituto di tutte le versioni COM-based senza perdita di nessuna funzionalità e senza alcun
    problema di efficienza.
    Le specifiche OPC UA sono suddivise in diversi componenti, necessarie anche per la
    standardizzazione IEC.
    La seguente figura mostra una panoramica di tutte le parti specifiche, suddivise nelle
    componenti principali che definiscono la base per OPC UA.

                                         Figura 2.1

                                            14
La struttura OPC-UA è strutturata in diversi strati (Figura 2.2). I componenti fondamentali
di OPC Unified Architecture sono i meccanismi di trasporto e il Data Modeling (Information
Model).
Nel livello di trasporto sono definiti due diversi meccanismi:
   •   Un protocollo TCP binario per la comunicazione intranet ad alta performance;
   •   Un protocollo basato sui Web Services per la comunicazione internet firewall-
       friendly.
Entrambi utilizzano lo stesso modello di sicurezza message-based utilizzato nei Web
Services.

                                       Figura 3.2

L’Information Model definisce le regole e i blocchi di base necessari per esporre un modello
di informazioni OPC UA. Definisce anche i punti di ingresso nello spazio degli indirizzi e i
tipi di base utilizzati per costruire una gerarchia di tipi. Questa base può essere estesa
mediante modelli di informazioni che si basano sui concetti di modellazione astratta.
I servizi UA costituiscono interfacce tra Server e Client, i primi intesi come fornitori di
modelli informativi e gli altri come “consumatori” di tali modelli. Per coprire tutte le
funzionalità di successo note da Classic OPC, l’Information Model è definito da OPC UA
in cima alle specifiche di base.
Vediamo i diversi strati del modello informativo OPC UA:

                                        15
DA definisce estensioni automation-data-specific, come i modelli per la descrizione di dati
     analogici e digitali, e come esporre la qualità del servizio. Tutte le altre funzionalità di DA
     sono già coperte dalla base. Alarm & Conditions (AC) specifica un modello avanzato per la
     gestione degli allarmi di processo e il monitoraggio delle condizioni. L'Historical Access
     (HA) definisce i meccanismi per accedere ai dati storici e agli eventi storici. Programs
     (Prog) specifica un meccanismo per avviare, manipolare e monitorare l'esecuzione dei
     programmi.
     Altre organizzazioni possono costruire i loro modelli sopra la base UA o sopra il modello
     di informazioni OPC, esponendo le loro informazioni specifiche tramite OPC UA.

                                               Figura 2.3

2.1 OPC UA Software Layers

     I servizi UA costituiscono interfacce tra Server e Client, i primi sono fornitori di modelli
     informativi, i secondi sono consumatori di tali modelli, in OPC UA è tipico che
     un’applicazione rivesta ruoli sia di client che di server.
     Una tipica applicazione è composta da tre strati software descritti da questa figura:

                                               16
Figura 2.1.1

L’UA Stack software può essere realizzato nei linguaggi C, C++, NET o JAVA, questo ha
il compito di convertire le API Calls in Messages. Inoltre l’UA Stack riceve i Messages
spedendoli al Client o al Server attraverso le API.

L’API (Application Process Interface) isola il codice Client/Server dall’OPC UA Stack,
questa espone o “consuma” dati attraverso lo Stack (che implementa soltanto i meccanismi
di comunicazione) e OPC-UA SDK (Software Development Kit).
L’utilizzo di una SDK riduce lo sforzo in fase di sviluppo e facilita una veloce
interoperabilità.

OPC UA definisce tre livelli Stack e diversi profili per ogni livello:

    •   Il livello di codifica dei messaggi (Encoding) definisce la serializzazione dei
        parametri di servizio in formato binario e XML.
    •   Il livello di sicurezza dei messaggi (Secure Channel) specifica come i messaggi
        devono essere protetti utilizzando gli standard di sicurezza dei Web Service.
    •   Il livello di trasporto (Transport) dei messaggi definisce il protocollo di rete
        utilizzato, che potrebbe essere UA TCP o HTTP e SOAP per i servizi Web.

La seguente figura illustra i diversi livelli di Stack di comunicazione UA.

                                         17
Figura 2.1.2

2.2 Information Model

     Nell’Information Model OPC UA le informazioni vengono esposte su Oggetti, Tipi di Dati
     e Metodi, sotto forma di Nodi. Differenti semantiche possono essere definite per i Nodi
     tramite l’uso di metadati e References. Nei precedenti standard OPC, la codifica della
     semantica era impossibile, per esempio, nel caso della temperatura misurata da un sensore,

     le sole informazioni disponibili per comprendere la semantica del dato erano il nome della
     variabile e pochi altri elementi come l’unità di misura. Inoltre l’Information Model è
     facilmente estendibile in termini di nuovi tipi di dati e di nuove relazioni tra i Nodi. OPC
     UA Information Model è sempre lato server. I servizi UA sono usati per accedere agli
     oggetti e ai loro componenti, come leggere o scrivere un valore di una variabile, chiamare
     un metodo o ricevere eventi dall'oggetto. Il servizio di navigazione può essere utilizzato per
     esplorare le relazioni tra gli oggetti e i loro componenti.

                                               18
Figura 2.2. 1

2.2.1 AddressSpace
        L'insieme di oggetti e le informazioni correlate che il server OPC UA mette a disposizione
        dei Client è il suo spazio di indirizzamento. Gli oggetti e i loro componenti sono
        rappresentati nello spazio degli indirizzi come un insieme di Nodi descritti da attributi e
        interconnessi da References.

                                               Figura 2.2 2

2.2.2 Node Model
        I nodi possono essere di differenti NodeClasses in base al loro obiettivo specifico.
        Esistono 8 NodeClasses:
        Variable, Object, Method, View, DataType, VariableType, ObjectType, ReferenceType.

                                            Figura 2.2.3

                                                 19
In base alla NodeClass un nodo può avere un differente set di attributi; Alcuni di essi sono
        comunque presenti in tutti i nodi. I NodeClass vengono derivati da una BaseNodeClass.
        Alcune NodeClasses sono:

            •     NodeClass Variable: i nodi rappresentano un valore; i client possono leggerlo,
                  scriverlo, effettuare una Subscription ad esso. Si distinguono in: DataVariables
                  (rappresentano valori fisici dei processi). Properties (meta-data che descrivono i
                  Nodi).

            •     NodeClass Method: rappresentano metodi con parametri di input e di output che i
                  client possono richiamare mediante il servizio Call per ottenere un risultato. Possono
                  essere metodi, ad esempio quelli per aprire una valvola, avviare un motore, o anche
                  calcolare i risultati di una simulazione in base ai parametri d’ingresso forniti.

            •     NodeClass Object: systems, system components, real-world objects e software
                  objects. Ad esempio, definizione di un Device (elenco di hardware, software, dati).
                  Contiene attributi. Raggruppa DataVariables, Methods o altri Objects. Permette di

                  realizzare un EventNotifier a cui i client possono registrarsi. Non contiene dati ma
                  può contenere (tramite una reference particolare) uno o più DataVariable che
                  specifica valori. Esiste una tipologia di Object (OPC UA Folder Object) che realizza
                  solo "directory/folder" il quale non rappresenta informazioni ma serve solo per
                  organizzare tutti i Nodi dell'AddressSpace.

2.2.3 Reference
        Una Reference descrive la relazione tra due nodi; E’ identificata univocamente da una
        coppia di nodi e dalla sua direzione.
        Considerare le References come puntatori ad altri nodi aiuta a capire meglio il loro ruolo.

                                                    20
Le References sono istanze di ReferenceType NodeClass, OPC UA definisce un certo
        insieme di ReferenceType di base, ma ogni server può definire un proprio specifico set
        estendendo quello di base. I ReferenceTypes vengono esposti esposti nell’Address Space
        come nodi e ciò consente ai client di recuperare facilmente le informazioni sulle References
        utilizzate dall’OPC UA server di interesse. I ReferenceType inoltre possono essere
        simmetriche e non simmetriche; nelle prime la direzione non è significativa, nelle seconde
        la direzione può indicare “has parent” oppure “is child of” nell’altra direzione.

2.2.4 View
        Una View viene usata per restringere il numero di nodi e References visibili in un Address
        Space esteso. Con le Views i server possono fornire all’esterno diverse rappresentazioni del
        proprio Address Space in base a particolari casi d’uso.
        Una View è rappresentata nell’Address Space come un nodo che fornisce un punto
        d’ingresso ai dati che si vogliono mostrare. Tutti i nodi che fanno parte di una View sono
        accessibili a partire dal nodo di partenza.

2.2.5 Namespace
        I server possono supportare più Information Model allo stesso momento, quindi l’Adderss
        Space di un server offre Nodes realativi a differenti Information Models. Ciascun Server
        espone una variabile chiamata NamespaceArray, definito come un array di URI dello spazio
        dei nomi. Gli indici nella tabella NamespaceArray sono indicati come NamespaceIndexes.
        Quindi il NodeId identifica il Node all’interno di un NamespaceIndex, e la coppia NodeId-
        NamespaceIndex identifica in modo univoco il Node nell’Address Space di un server.

                                                  21
Capitolo 3: OPC UA IMPLEMENTATION

    Come già detto precedentemente OPC UA si base su un modello di comunicazione Client-
    Server, che prevede il mantenimento di informazioni di stato. Tali informazioni sono

    mantenute all’interno di una sessione. Una Sessione è definita come una connessione logica
    tra Client e Server e questa è indipendente dal protocollo di comunicazione sottostante. Le
    Sessioni terminano su espressa richiesta di Client o Server, o sulla base della loro inattività.

                                            Figura 3.0

    L’Application Layer come possiamo osservare dalla figura precedente viene usato per la
    trasmissione di informazioni tra Client e Server che hanno stabilito una Session.
    La OPC UA Session viene stabilita su un canale Secure Channel che rende sicuro lo scambio
    dei dati di una sessione attraverso cifratura, e integrità attraverso firma digitale. Il Transport
    Layer è il livello fisico responsabile della trasmissione e ricezione dei dati.

                                               22
Per stabilire una Session su una connessione sicura tra Client e Server:

        •   Il Client seleziona un Session Endpoint, ovvero invia una Request al Discovery
            Endpoint (ovvero dove sono registrati tutti i server attivi) del server a cui vuole
            collegarsi, se ne verifica il certificato.
        •   Il Client fa una richiesta di apertura di un Secure Channel, se il Server accetta invia
            richiesta al Client.
        •   Viene creata una Session.
        •   Si attiva la Session ed il Client può quindi iniziare ad accedere ai dati di processo del
            Server.

3.1 Data sharing service (Read and Write)
      Il modo più semplice per lo scambio dei dati è il Read e Write Service set, ovvero i servizi
      che permettono di leggere o scrivere i valori degli attributi dei Nodi. Questi servizi sono
      ottimizzati per trasferire gruppi di dati e non per singoli valori.

      Per il Read Service, il Server dovrà sempre restituire un valore che sia stato aggiornato più
      recentemente, ovvero si usa un parametro MaxAge; questo se impostato a 0, obbliga il server

      a restituire un valore attuale.
      Altro parametro importante è il Timestamp, in OPC UA ne sono definiti due: Source e
      Server.
      Poi la lista dei Nodi e dei relativi attributi da leggere:
        •   NodeId (NameSpaceIndex, Id).
        •   AttributeId.
        •   DataEncoding: nel caso si si voglia leggere il Value di una Variabile.

                                                 23
Per il Write Service:
        •   Source e Server Timestamp
        •   NodeId
        •   AttributeId
        •   Valore da scrivere

3.2 Subscription Service

      OPC UA offre una funzionalità più elegante, la cosiddetta Subscription. Un client UA può

      abbonarsi a dei Nodi di interesse e consentire al server di monitorare questi elementi. Solo
      in caso di modifiche, ad es. ai loro valori, il server notifica al client tali cambiamenti. Questo
      meccanismo riduce la quantità di dati trasferiti. Oltre alla riduzione della larghezza di banda,
      questo meccanismo introduce ulteriori vantaggi ed è il meccanismo consigliato per
      "leggere" le informazioni da un server UA. Un client può sottoscriversi a diversi tipi di
      informazioni fornite da un server OPC UA. Lo scopo di un “abbonamento” è raggruppare
      insieme queste fonti di informazioni, denominate voci monitorate, formando

      un'informazione chiamata notifica. La figura seguente mostra i servizi coinvolti quando un
      client si iscrive a modifiche ed eventi dei dati.

                                                Figura 3.2.1

                                                 24
Una Subscribe consiste di almeno un oggetto monitorato, deve essere creato nel contesto di
una sessione e può essere trasferito a un'altra sessione. Per creare una sessione, è necessario
stabilire un canale sicuro tra il client e il server come già detto precedentemente.
Esistono tre diversi tipi di "changes" a cui un Client può sottoscriversi quando aggiunge
elementi da monitorare:
  •   Può effettuare una Subscribe alle modifiche dei Value delle Variabili (attributo valore
      di una variabile).
  •   Subscribe ad Eventi di Oggetti (attributo EventNotifier di un oggetto e set di filtri di
      eventi).
  •   Subscribe a Value che sono calcolati in intervalli di tempo definiti dal client, in base
      ai Value correnti.

                                          Figura 3.2.2

L'intervallo di campionamento definisce individualmente per ciascun elemento monitorato,
un intervallo di tempo. Questa è la periodicità con cui il server controlla i dati per le
modifiche. Il campionamento può essere impostato molto più rapido della notifica al client,
in qual caso il server può accodare i campioni e pubblicare la coda completa. I filtri
contengono diversi criteri per distinguere quali modifiche o eventi devono essere segnalati
e quali devono essere bloccati.
Un server UA può supportare l'accodamento di campioni di dati o eventi. La dimensione
della coda, ovvero il numero massimo di valori che possono essere accodati, può essere
configurata per ciascun articolo monitorato. Quando i dati vengono consegnati al Client, la
coda viene svuotata. Ogni coda ha una politica di scarto (ad es. Scarta il meno recente) nel

                                         25
caso si verifichi un overflow. Impostando la modalità di monitoraggio, il campionamento e
        il reporting dei dati possono essere abilitati o disabilitati.
        Dopo ogni intervallo di pubblicazione le notifiche raccolte nelle code vengono consegnate
        al client in un messaggio di notifica (Pubblica risposta). Il Client deve assicurare che il
        server abbia ricevuto un numero sufficiente di Token di Pubblicazione (Richieste di
        Pubblicazione), in modo tale che quando l'intervallo di pubblicazione è scaduto e una
        notifica sia pronta per l'invio, il server utilizza tale token e invia i dati all'interno di una
        Request di pubblicazione. Nel caso in cui non vi sia nulla da segnalare (ad esempio, nessun
        valore è stato modificato) il server invierà una notifica al client, che è una pubblicazione
        vuota, per indicare che il server è ancora attivo. L'invio del messaggio di notifica può essere
        abilitato o disabilitato modificando l'impostazione Pubblica abilitata.

3.3 OPC UA Open Source example

        In questo Paragrafo si mostra un esempio di implementazione di una comunicazione Client
        Server OPC UA; Utilizziamo Stack e SDK dello sviluppatore Milo che fornisce una

        distribuzione su GitHub. L’esempio che mostreremo viene eseguito sull’IDE Eclipse, e
        caricato utilizzando Maven che è uno strumento di gestione di progetti software su Java e
        build automation. Maven usa un costrutto conosciuto come POM, un file XML che descrive
        le dipendenze fra il progetto e le varie librerie. Maven effettua automaticamente il download
        di librerie Java e plug-in Maven dai vari repository.
        Quindi una volta scaricato Maven e una versione Java JDK compatibile, per installarlo si
        può eseguire da riga di comando: mvn package.

3.3.1 Preparing
        Possiamo eseguire da riga di comando il comando: mvn clean install. Oppure dall’IDE
        Eclipse: build clean, e build install come nella figura seguente, per installare tutte le
        funzionalità OPC UA.
                                                   26
Figura 3.3.1

3.3.2 Running the Server
        Affinché il Server possa avviarsi correttamente nel nostro esempio, deve essere in grado di
        collegarsi alla porta locale TCP 4840. Il server verrà avviato e verrà elencato per le
        connessioni sulla porta 4840.

                                              Figura 3.3.2

                                                27
3.3.3 Running the Client
        Gli esempi di Client presenti in Milo OPC UA richiedono un'istanza del server OPC UA in
        esecuzione.

                                           Figura 3.3.3

3.3.4 Connect
        L'esempio si collegherà al server OPC UA remoto e mostrerà l'output sulla console. L’
        output che indica una connessione riuscita sarà: Wait for completion… Connected Bye bye.

                                           Figura 3.3.4

                                               28
3.3.5 Browse
        Il Client visita l’Address Space. Il browsing si basa totalmente sui References dei Nodi.
        Dato un nodo di partenza, il servizio di browsing permette di scoprire tutti i References di
        quel Nodo. Come possiamo vedere dalla figura seguente, il server restituisce per ogni Nodo
        iniziale, la lista dei Nodi ad esso connessi.

                                               Figura 3.3.5

3.3.6 Subscribe
        Questo si iscriverà all'attributo "Value" dei “Nodi ns = 1; i = 114” e “ns = 1; i = 117” e

        stamperà le modifiche alla console. L'applicazione verrà eseguita per 15 minuti e quindi
        terminata.

                                                Figura 3.3.6

                                                  29
3.3.7 Write and Read
        Il Write scriverà un valore booleano sull’applicazione remota sul Nodo “ns=1; i=117”; Il
        Read lo andrà ovviamente a leggere.

                                              Figura 3.3.7

                                                  30
Conclusioni

     Un pilastro fondamentale dell’OPC UA è la sicurezza, uno degli elementi principali da
     tenere in considerazione nella scelta di quest’ultimo come protocollo di comunicazione.
     L’OPC UA è una tecnologia che si integra perfettamente con i firewall, grazie alla
     disponibilità di una serie di controlli. Infatti ci sono diversi protocolli che offrono opzioni,
     come il trasporto ultra veloce binario OPC, o il più universalmente compatibili SOAP
     HTTPS. I messaggi vengono inviati in modo sicuro tramite crittografia a 128 o 256 bit e
     quelli firmati sono ricevuti esattamente come sono stati spediti. I pacchetti sono inviati
     sequenzialmente, così l’esposizione ad attacchi che sfruttano le funzionalità di risposta ai
     messaggi, viene eliminata grazie alla gestione della sequenza. Inoltre ciascun Client e Server
     UA è identificato tramite certificati OpenSSL. Un altro obiettivo raggiunto è quello
     dell’estensibilità, ovvero la possibilità di aggiungere nuove funzionalità senza toccare le
     applicazioni esistenti. L’architettura multi-livello di OPC UA mette a disposizione un
     framework pronto anche per le evoluzioni future. Tecnologie e metodologie innovative,
     come nuovi protocolli per il trasporto dei dati, algoritmi di sicurezza, standard di codifica o
     servizi applicativi, possono essere integrati mantenendo la compatibilità con i prodotti
     precedenti.

                                               31
Qualunque sia il settore in cui si opera, industria di processo, manifatturiero, controllo delle
macchine, produzione di energie, smart grid o, per esempio, gestione del traffico, è possibile
integrare tutti i dispositivi, i sistemi di automazione e le applicazioni software presenti in
fabbrica, utilizzando una piattaforma standard indipendente e sicura. A chi realizza
dispositivi e macchinari è possibile rendere i propri prodotti interoperabili con quelli di altri
produttori, consentendo di creare sistemi completi. Utilizzando una tecnologia
standardizzata e sicura l’integrazione diventa più stabile e i costi si riducono.

                                          32
Bibliografia
     [1]     Prof. Ing. Salvatore Cavalieri, Studenti Alberto Bruccini, Giovanni Torrisi, OPC
     Unified Architecture (OPC UA) Concetti e documentazione dei servizi.
     [2]     Wolfgang Mahnke, Stefan-Helmut Leitner, Matthias Damm, OPC Unified,
     Springer, 2009.

     [3]     Prof. Salvatore Cavalieri, OPC UA Openness, Productivity, Connectivity Unified
     Architecture.
     [4]     Libero Tecnologia, https://tecnologia.libero.it/che-cose-la-smart-factory-13603,
     2018.
     [5]     Unified Automation, Embedded OPC UA Stack 1.0.0.125,
     http://documentation.unified-automation.com/uasdkhp/1.0.0/html/index.html, 2018.
     [6]     Wikipedia, https://it.wikipedia.org/wiki/Apache_Maven, 2018.
     [7]     eclipsecon.org, Developing OPC UA with Eclipse Milo,

     https://www.eclipsecon.org/europe2017/session/developing-opc-ua-eclipse-milo           milo-
     ece2017.
     [8]     Automazionenews, Uno standard a prova di futuro scalabile ed estendibile,
     http://www.automazionenews.it/uno-standard-prova-futuro-scalabile-ed-estensibile/, 2018.

                                               33
Puoi anche leggere