Http://. Primo livello: Field Management. A questo livello le informazioni sono relative ai...
-
Upload
angelo-grieco -
Category
Documents
-
view
216 -
download
0
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.