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. Integrazione delle Informazioni
Necessità di accedere ai dati di campo da qualunque parte dellimpianto Visione omogenea dei dati (semantica dei dati) Indipendenza dei programmi dalle caratteristiche hardware/software della sorgente dati
OLE for Process Control OPC 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 è unarchitettura 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 Control OPC
I server OPC Un server OPC deve fornire le seguenti interfacce: OPC Alarm&Event Server OPC HistoricalData Server OPC 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 lOPC Server, per l'apparecchiatura che rappresenta e per i suoi OPC Client. OPC Alarm & Event
Linterfaccia 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 delloccorrenza di uno o più eventi. Inoltre si possono usare filtri per definire un sottoinsieme dellevento desiderato. Accedere e manipolare le condizioni implementate dall'OPC server (gestione allarmi). OPC Alarm & Event
Gli historical engines forniscono una fonte aggiuntiva dinformazioni che devono essere distribuite agli utenti e ai software a cui servono. Nellottica dellintegrazione 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 limmagazzinamento 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. Loggetto 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 allinterno del server. Ogni item ha associato un: Value, una Quality e un TimeStamp Si 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
LOPC 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 dellOPC 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
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 dellOPC Data Access Automation OPCServer OPCGroups (collection) OPCGroup OPCItems (collection) OPCItem OPCBrowser
LOPC Client è stato realizzato: in Visual Basic® 6.0 usando la libreria OPC Automation 2.0 messa a disposizione dalla OPC Foundation in Properties| References deve essere selezionata la libreria OPC Automation 2.0. Esempio di OPC Data Access Automation Creazione di un OPC Client
Viene fornita la lista dei Servers, presenti nella macchina specificata dallindirizzo 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 Variant Metodo dellOggetto OPC Server Restituisce i nomi (ProgIDs) degli OPC Servers. Si utilizza uno di questi ProgID nel metodo Connect. Il servizio fornisce un array di stringhe. Lindirizzo del Node è lindirizzo IP che può essere di tipo o
Passo 1: Raccolta delle Informazioni sugli OPC Servers disponibili in un Nodo Set AnOPCServer = New OPCServer OPCServerList.Clear NodeServerName = Text2.Text AllOPCServers = AnOPCServer.GetOPCServers(NodeServerName) For i = LBound(AllOPCServers) To UBound(AllOPCServers) OPCServerList.AddItem AllOPCServers(i) Next i
Passo 2: Connessione con lOPC Server Selezionato Connect (ProgID As String, Optional Node As Variant) Metodo dellOggetto OPC Server Viene invocato per stabilire una connessione con un OPC Data Access Server. ProgID: È una stringa che identifica un OPC Data Access Server. Node: Specifica lindirizzo IP della macchina con cui connettersi
Passo 2: Connessione con lOPC Server Selezionato Set ConnectedOPCServer = New OPCServer ConnectedServerName = OPCServerName.Text NodeServerName = Text2.Text ConnectedOPCServer.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 OPCServer Form2.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
Il tasto Aggiungi permette la creazione e laggiunta di un nuovo gruppo a quelli esistenti. Il gruppo così creato avrà il nome e lupdate rate specificati nelle corrispondenti caselle. Passo 4: Creazione di un Gruppo
Add(Optional Name As Variant) As OPCGroup: Metodo dellOggetto OPC Groups Crea 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 OPCServer Dim ConnectedServerGroup As OPCGroups Set ConnectedServerGroup = ConnectedOPCServer.OPCGroups Set 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 lesplorazione 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
CreateBrowser Metodo dellOggetto OPC Server Crea un oggetto OPCBrowser Visualizza lorganizzazione del Server, che può essere di tipo gerarchico o flat Se è di tipo gerarchico vengono mostrati i vari rami e foglie Se è di tipo flat vengono mostrati direttamente gli Item LOggetto OPC Browser ha un attributo (Organization) che restituisce il tipo di organizzazione interna. ShowLeafs Metodo dellOggetto OPC Browser Visualizza i nomi delle foglie della posizione corrente (nel caso in cui lorganizzazione 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 dellOggetto OPC Groups Restituisce un OPCGroup indicato dallItemSpecifier. ItemSpecifier: nome dellOPC Group. AddItem (ItemID As String, ClientHandle As Long) Metodo dellOggetto OPC Items Crea un nuovo oggetto OPCItem e lo aggiunge alla collezione. ItemID: nome dellitem 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 dellOggetto OPC Item Legge un Item dal Server, o dalla cache o dal device Legge lultimo valore letto dal server Vengono letti: Value, Qualità, TimeStamp Gli attributi che sono restituiti sono tra loro sincroni Passo 7: Lettura Proprietà Items
ItemID (Sola lettura) ID(unico ) dellitem Value (Sola lettura) Restituisce lultimo valore dellitem letto dal server. CanonicalDataType (Sola lettura) Restituisce il tipo di dato. Quality (Sola lettura) Restituisce lultima Quality letta dal server. TimeStamp (Sola lettura) Restituisce lultimo TimeStamp letta dal server.
Selezionando un item è possibile modificarne il valore facendo di OPCClient uno strumento utile anche per il controllo oltre che per lanalisi di un processo industriale. Passo 8: Scrittura Proprietà Items
Write (Value As Variant) Metodo dellOggetto OPC Item Scrivere il valore Value nel server Nota 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 dellOggetto 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 allinterno del gruppo è cambiato. Laggiornamento non può avvenire con frequenza maggiore di quella dellUpdateRate dellOPC Group. Definizione di Altre Azioni da Compiere nellAmbito di un Gruppo
Remove (Count As Long, ServerHandles() As Long, ByRef Errors() As Long) Metodo dellOggetto OPC Items Rimuove uno o più OPC Item contenuti Count: il numero di items che devono essere rimossi. ServerHandles(): array di identificatori usati dal server per gli item processati ByRef 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.Clear ListView2.ListItems.Clear Command2.Enabled = False Command4.Enabled = False Command3.Enabled = False For i = 1 To ConnectedServerGroup.Count List2.AddItem (ConnectedServerGroup.Item(i).Name) Next i Remove(ItemSpecifier As Variant) Metodo dellOggetto OPC Group Rimuove lOPC Group specificato ItemSpecifier: nome di un OPCGroup.
Passo 11: Disconnessione dal Server Dim ConnectedOPCServer As OPCServer ConnectedOPCServer.Disconnect Disconnect Metodo Oggetto OPC Server Disconnette da un OPC Server.