Http://. Primo livello: Field Management. A questo livello le informazioni sono relative ai...

Post on 01-May-2015

216 views 0 download

Transcript of Http://. Primo livello: Field Management. A questo livello le informazioni sono relative ai...

http://www.opcfoundation.org/

Primo livello: Field Management. A questo livello le informazioni sono relative ai dispositivi di campo

Secondo livello: Process Management. Comprende i Sistemi di Controllo Distribuiti (DCS) e i sistemi SCADA per il controllo dei processi

Terzo livello: Business Management. In questo livello si integrano le informazioni raccolte dal processo con i sistemi per la gestione finanziaria.

HandheldPDA Configuration and

Maintenance

Measurement-Pressure

-Temp-Flow-Level

ValvesPositioners

Coriolis

PD MetersCommon Head

Analytical-Simple

-Complex

-Analog I/O-Discrete I/O

-TC/RTD

Fisher

Field Management

Fieldbus

Windows NTOperator Console

Windows NTRT/History DataServer

Windows 3.1Windows-95Windows NTClient Applications

Process Management

Plant Highway

Windows NTOperator ConsoleRT/History DataServer

Business Management

Plant Highway

Controller

Integrazione delle Informazioni

Integrazione delle Informazioni

Necessità di accedere ai dati di campo da qualunque parte dell’impianto

Visione omogenea dei dati (semantica dei dati)Indipendenza dei programmi dalle caratteristiche

hardware/software della sorgente dati

OLE for Process ControlOPC

Scopo: fornire una visione unica ed indipendente dalla sorgente dei dati prodotti in un impianto industriale

Si basa su tecnologie consolidate in ambiente Windows:Object Linking and Embedding (OLE). Insieme di servizi in

grado di permettere alle applicazioni Windows di scambiare oggetti.

Distributed Component Object Model (DCOM). Modello per la comunicazione tra applicazioni Windows attraverso reti di comunicazione.

Component Object Model (COM). Modello per la comunicazione tra applicazioni Windows locali.

OPC è un’architettura client/server che permette ad una qualsiasi sorgente di dati (Server) di comunicare in modo standard con qualsiasi altro processo (Client) dotato della stessa interfaccia.

I fornitori hardware offrono un Server OPC, che permette a qualsiasi applicazione Client di accedere ai dati da esso pubblicati.

Vantaggio principale di OPC:Indipendenza da una tecnologia proprietaria.

OLE for Process ControlOPC

Application OPC I/FOPC

Server

OPC I/FSCADASystem

Physical I/F

Physical I/FPhysical

I/O

PhysicalI/O

...

OPC ServerB

OPC ServerA

OPC ServerC

Application X

OPC Interface

Application Y

OPC Interface

OLE for Process ControlOPC

I server OPC

Un server OPC deve fornire le seguenti interfacce:OPC Alarm&Event ServerOPC HistoricalData ServerOPC DataAccess Server

Allarme: un allarme è una condizione “anomala”, dove per condizione si intende uno stato di un OPC ServerEvent, o di uno degli oggetti che contiene.

Evento: un evento è un avvenimento che ha un significato per l’OPC Server, per l'apparecchiatura che rappresenta e per i suoi OPC Client.

OPC Alarm & Event

L’interfaccia OPC Alarm & Event fornisce servizi affinchè:gli OPC client possano essere notificati sui tipi di

eventi che l'OPC server supporta.gli OPC client possano ricevere la notifica

dell’occorrenza di uno o più eventi. Inoltre si possono usare filtri per definire un sottoinsieme dell’evento desiderato.

Accedere e manipolare le condizioni implementate dall'OPC server (gestione allarmi).

OPC Alarm & Event

Gli historical engines forniscono una fonte aggiuntiva d’informazioni che devono essere distribuite agli utenti e ai software a cui servono.

Nell’ottica dell’integrazione dei dati a tutti i livelli, le informazioni storiche possono essere considerate come un altro tipo di dati da condividere ed integrare.

OPC HistoricalData

Ci sono molti tipi di server Storici. Qualche tipo chiave supportato è:Simple Trend Historical Data Servers. Questi

server permettono l’immagazzinamento di dati in piccole quantità di tipo semplice;

Complex Data Compression and Analysis Servers. Questi server provvedono alla compressione dei dati. Sono capaci di fornire dati riassuntivi o una loro analisi, tipo valori medi, valor massimo, minimo ecc.  

OPC HistoricalData

OPC Data Access Server permette di scegliere due sorgenti di dati: Cache e Device.

Un OPC Data Access server comprende gli oggetti: Server, Group, Item e Browser.

L’oggetto OPC Server mantiene le informazioni sul server e funge da contenitore per gli oggetti OPC Group.

L'oggetto OPC Group fornisce i meccanismi per contenere e organizzare logicamente gli OPC Item. Per ciascun gruppo è possibile associare la frequenza con cui un OPC Server può aggiornare i dati relativi agli OPCItem in esso contenuti.

OPC Data Access

Gli OPC Item rappresentano connessioni a sorgenti dati all’interno del server. Ogni item ha associato un: Value, una Quality e un

TimeStampSi noti che gli Item non sono le sorgenti dei dati, ma solo i

collegamenti ad esse L’ oggetto OPC Browser è una collezione di “rami” o

di nomi di Item che esistono nel server. Il browsing è opzionale, cioè il server può non supportarlo.

OPC Data Access

Le specifiche OPC contengono due set di interfacce:Custom Interfaces;Automation Interfaces.

Interfacce Custom e Automation

C++ Application

VB Application

OPC Custom I/F

OPC Automation I/F

OPC Server(In-Proc, Local, Remote,

Handler)Vendor Specific Logic

L’OPC Data Access Automation Interface 2.xx aggiorna la precedente versione OPC 1.0. Questo per:fornire al programmatore Visual Basic delle interfacce più

semplici;sfruttare le nuove caratteristiche del Visual Basic (es: gli

eventi)Caratteristica principale dell’OPC Data Access

Automation:viene creato un wrapper DLL (involucro) per gli OPC Data

Access Custom Interface Servers già esistenti;viene fornito così un meccanismo automatico per accedere

alle stesse funzionalità ottenibili dalla interfaccia Custom.

OPC Data Access Automation

OPC Data Access Automation

Automation Client

OPC Automation Wrapper

COM / DCOM

OPC Custom Interface Server

L’ OPC Data Access Automation Interface fornisce quasi tutte le funzionalità dell’ OPC Data Access Custom Interface, sia quelle obbligatorie che quelle opzionali.

Le interfacce sono completamente supportate da VC++ e Visual Basic.

Le interfacce non supportano VBScript o Java Script, per queste applicazioni verrà sviluppato un wrapper apposito.

OPC Data Access Automation

Modello dell’OPC Data Access Automation  

 

OPCServer

OPCGroups(collection)

OPCGroup

OPCItems(collection)

OPCItem

OPCBrowser

L’OPC Client è stato realizzato:in Visual Basic® 6.0usando la libreria OPC Automation 2.0 messa a

disposizione dalla OPC Foundationin Properties| References deve essere selezionata la

libreria “OPC Automation 2.0”.

Esempio di OPC Data Access AutomationCreazione di un OPC Client

Esempio di OPC Data Access AutomationCreazione di un OPC Client

Viene fornita la lista dei Servers, presenti nella macchina specificata dall’indirizzo IP o dal corrispondente URL.

Se non viene specificato nessun indirizzo viene fornita la lista degli OPC Servers della macchina locale.

Passo 1: Raccolta delle Informazioni sugli OPC Servers disponibili in un Nodo

GetOPCServers (Optional Node As Variant) As VariantMetodo dell’Oggetto OPC ServerRestituisce i nomi (ProgIDs) degli OPC Servers.Si utilizza uno di questi ProgID nel metodo Connect.Il servizio fornisce un array di stringhe.L’indirizzo del Node è l’indirizzo IP che può essere di tipo

“www.vendor.com” o “180.151.19.75”.

Passo 1: Raccolta delle Informazioni sugli OPC Servers disponibili in un Nodo

Set AnOPCServer = New OPCServerOPCServerList.ClearNodeServerName = Text2.TextAllOPCServers = AnOPCServer.GetOPCServers(NodeServerName)For i = LBound(AllOPCServers) To UBound(AllOPCServers) OPCServerList.AddItem AllOPCServers(i) Next i

Passo 2: Connessione con l’OPC Server Selezionato

  

Connect (ProgID As String, Optional Node As Variant)Metodo dell’Oggetto OPC ServerViene invocato per stabilire una connessione con un OPC Data

Access Server.ProgID: È una stringa che identifica un OPC Data Access

Server.Node: Specifica l’indirizzo IP della macchina con cui

connettersi

Passo 2: Connessione con l’OPC Server Selezionato

Set ConnectedOPCServer = New OPCServerConnectedServerName = OPCServerName.TextNodeServerName = Text2.TextConnectedOPCServer.Connect ConnectedServerName, NodeServerName

Le proprietà del Server possono essere ottenute tramite il pulsante “Proprietà”. Queste vengono visualizzate in una schermata secondaria

Passo 3: Visualizzazione delle Proprietà del Server a cui ci si è Connessi

Dim ConnectedOPCServer As OPCServerForm2.Show Form2.Label5.Caption = ConnectedOPCServer.StartTime Form2.Label12.Caption = ConnectedOPCServer.CurrentTime Form2.Label16.Caption = ConnectedOPCServer.LastUpdateTime Form2.Label17.Caption = ConnectedOPCServer.MajorVersion Form2.Label18.Caption = ConnectedOPCServer.MinorVersion Form2.Label19.Caption = ConnectedOPCServer.BuildNumber Form2.Label20.Caption = ConnectedOPCServer.VendorInfo Form2.Label21.Caption = ConnectedOPCServer.ServerState Form2.Label22.Caption = ConnectedOPCServer.LocaleID Form2.Label23.Caption = ConnectedOPCServer.Bandwidth Form2.Label24.Caption = ConnectedOPCServer.ServerName Form2.Label25.Caption = ConnectedOPCServer.ServerNode

Passo 3: Visualizzazione delle Proprietà del Server a cui ci si è Connessi

Passo 3: Visualizzazione delle Proprietà del Server a cui ci si è Connessi

Il tasto “Aggiungi” permette la creazione e l’aggiunta di un nuovo gruppo a quelli esistenti. Il gruppo così creato avrà il nome e l’update rate specificati nelle corrispondenti caselle.

Passo 4: Creazione di un Gruppo

Add(Optional Name As Variant) As OPCGroup:Metodo dell’Oggetto OPC GroupsCrea un nuovo oggetto OPCGroup e lo aggiunge alla

collezione.Name: Nome del gruppo. Il nome deve essere

univoco. Se non viene fornito nessun nome il server ne genera uno.

Dopo che un gruppo è aggiunto i suoi attributi possono essere modificati (vedi UpdateRate; Default=1000 msec.)

Passo 4: Creazione di un Gruppo

Dim ConnectedOPCServer As OPCServerDim ConnectedServerGroup As OPCGroupsSet ConnectedServerGroup = ConnectedOPCServer.OPCGroupsSet ConnectedGroup = ConnectedServerGroup.Add(OPCGroupName.Text)ConnectedGroup.UpdateRate = Val(GroupUpdateRate.Text)Command2.Enabled = False

Passo 4: Creazione di un Gruppo

Passo 5: Creazione Browser & Esplorazione Items Disponibili

 

Permette l’esplorazione delle risorse messe a disposizione dal Server, la cui organizzazione può essere di tipo gerarchica o flat.

Nel primo caso gli item vengono raggruppati formando una struttura ad albero con “archi” (cioè un certo sottoinsieme di Items) e “nodi” (cioè ogni singolo Item). Se è di tipo flat vengono mostrati unicamente gli Item.

OPCClient consente una esplorazione delle risorse del server in modo agevole e intuitivo.

Passo 5: Creazione Browser & Esplorazione Items Disponibili

CreateBrowserMetodo dell’Oggetto OPC ServerCrea un oggetto OPCBrowserVisualizza l’organizzazione del Server, che può essere di tipo

gerarchico o flatSe è di tipo gerarchico vengono mostrati i vari “rami” e “foglie”Se è di tipo flat vengono mostrati direttamente gli ItemL’Oggetto OPC Browser ha un attributo (Organization) che

restituisce il tipo di organizzazione interna.ShowLeafs

Metodo dell’Oggetto OPC BrowserVisualizza i nomi delle foglie della posizione corrente (nel caso in

cui l’organizzazione del server sia di tipo “gerarchica”).

Passo 5: Creazione Browser & Esplorazione Items Disponibili

Dopo aver selezionato un Gruppo è possibile aggiungervi un Item.

Un item può far parte anche di più gruppi contemporaneamente.

Passo 6: Aggiunta di un Item nel Gruppo

GetOPCGroup (ItemSpecifier As Variant) As OPCGroup.Metodo dell’Oggetto OPC GroupsRestituisce un OPCGroup indicato dall’ItemSpecifier.ItemSpecifier: nome dell’OPC Group.

AddItem (ItemID As String, ClientHandle As Long)Metodo dell’Oggetto OPC ItemsCrea un nuovo oggetto OPCItem e lo aggiunge alla

collezione.ItemID: nome dell’item selezionato da aggiungere.ClientHandle identificativo interno al client

 

Passo 6: Aggiunta di un Item nel Gruppo

Dim mygroup As OPCGroup Dim itms As OPCItems Dim Itm As OPCItem Dim ItemCount As Integer Set mygroup = ConnectedServerGroup.GetOPCGroup(List2.List(List2.ListIndex)) Set OneOPCItem = mygroup.OPCItems.AddItem(Text1.Text, mygroup.ClientHandle)Dim ItemName As String Set itms = mygroup.OPCItems ItemCount = itms.Count 'List3.Clear ListView2.ListItems.Clear For i = 1 To ItemCount Set Itm = itms.Item(i) ListView2.ListItems.Add , mygroup.Name + Str(i), Itm.ItemID 'List3.AddItem (Itm.ItemID) ListView2.View = lvwReport Next i Command3.Enabled = True 

Passo 6: Aggiunta di un Item nel Gruppo

Selezionando un gruppo e azionando il pulsante “Proprietà Items”, è possibile visualizzare una form contenente le informazioni relative agli Items appartenenti al gruppo specificato.

Queste comprendono: ItemID, Value, DataType, Quality e TimeStamp.

Passo 7: Lettura Proprietà Items

Read (Source, Optional Value, Optional Quality, Optional TimeStamp)Metodo dell’Oggetto OPC ItemLegge un Item dal Server, o dalla cache o dal deviceLegge l’ultimo valore letto dal serverVengono letti: Value, Qualità, TimeStampGli attributi che sono restituiti sono tra loro sincroni

Passo 7: Lettura Proprietà Items

Passo 7: Lettura Proprietà Items

ItemID (Sola lettura)ID(unico ) dell’item

Value (Sola lettura)Restituisce l’ultimo valore dell’item letto dal server.

CanonicalDataType (Sola lettura)Restituisce il tipo di dato.

Quality (Sola lettura)Restituisce l’ultima Quality letta dal server.

TimeStamp (Sola lettura)Restituisce l’ultimo TimeStamp letta dal server.

Selezionando un item è possibile modificarne il valore facendo di OPCClient uno strumento utile anche per il controllo oltre che per l’analisi di un processo industriale.

Passo 8: Scrittura Proprietà Items

Write (Value As Variant)Metodo dell’Oggetto OPC ItemScrivere il valore Value nel serverNota Bene: il valore viene scritto nel Device

Passo 8: Scrittura Proprietà Items

Dim s As Integer Dim Grp As OPCGroup Dim i As Integer Dim itms As OPCItems Dim Itm As OPCItem Dim ItemCount As Integer Dim ItemName As String s = ListView1.SelectedItem.Index Set Grp = form1.ConnectedServerGroup.GetOPCGroup(form1.List2.List(form1.List2.ListIndex)) Set itms = Grp.OPCItems Set Itm = itms.Item(s) Itm.Write (Form3.Text1.Text)

Passo 8: Scrittura Proprietà Items

E’ possibile disporre di altri metodi dell’Oggetto OPC Group:SyncRead: permette di leggere uno o più items specificati

da una sorgente dei dati (Cache/Device). Per ciascun item vengono letti: valore, qualità e timestamp.

SyncWrite: permette di scrivere i valori di uno o più items specificati nel Device.

AsyncRefresh & DataChange: E’ possibile imporre che il Server aggiorni gli Item di un OPCGroup quando un valore o la qualità di un Item all’interno del gruppo è cambiato. L’aggiornamento non può avvenire con frequenza maggiore di quella dell’UpdateRate dell’OPC Group.

 

Definizione di Altre Azioni da Compiere nell’Ambito di un Gruppo

Remove (Count As Long, ServerHandles() As Long, ByRef Errors() As Long)Metodo dell’Oggetto OPC ItemsRimuove uno o più OPC Item contenutiCount: il numero di items che devono essere rimossi.ServerHandles(): array di identificatori usati dal server per gli item

processatiByRef Errors() array di Long che indicano il successo delle operazioni

effettuate sugli items

Passo 9: Eliminazione Item

Passo 10: Eliminazione Gruppo

 

ConnectedServerGroup.Remove (List2.List(List2.ListIndex))List2.ClearListView2.ListItems.ClearCommand2.Enabled = FalseCommand4.Enabled = FalseCommand3.Enabled = FalseFor i = 1 To ConnectedServerGroup.Count List2.AddItem (ConnectedServerGroup.Item(i).Name)Next i

Remove(ItemSpecifier As Variant)Metodo dell’Oggetto OPC GroupRimuove l’OPC Group specificatoItemSpecifier: nome di un

OPCGroup.

Passo 11: Disconnessione dal Server

  

Dim ConnectedOPCServer As OPCServerConnectedOPCServer.Disconnect

DisconnectMetodo Oggetto OPC ServerDisconnette da un OPC Server.