http://www.opcfoundation.org/
Integrazione delle Informazioni
Windows 3.1
Windows-95
Windows NT
Client Applications
Business Management
Windows NT
Operator Console
RT/History Data
Server
Windows NT
RT/History Data
Server
Windows NT
Operator Console
Plant Highway
Plant Highway
Process Management
Controller
Fieldbus
Fisher
Measurement
-Pressure
Valves
-Temp
Positioners
-Flow
-Level
Coriolis
Analytical
PD Meters
Common Head -Simple -Analog I/O Handheld
Configuration and
PDA
-Complex -Discrete I/O
Maintenance
-TC/RTD
Field Management
 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 dell’impianto
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.
OLE for Process Control
OPC
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 Control
OPC
Application Y
Application X
...
OPC Interface
OPC Server
A
Application
OPC I/F
OPC Interface
OPC Server
B
OPC Server
C
OPC I/F
SCADA
System
Physical I/F
Physical
I/O
OPC
Server
Physical I/F
Physical
I/O
I server OPC
Un server OPC deve fornire le seguenti interfacce:
OPC Alarm&Event Server
OPC HistoricalData Server
OPC DataAccess Server
OPC Alarm & Event
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 HistoricalData
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 Data Access
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
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.
Interfacce Custom e Automation
Le specifiche OPC contengono due set di interfacce:
Custom Interfaces;
Automation Interfaces.
C++ Application
OPC Custom I/F
OPC Server
(In-Proc, Local, Remote,
Handler)
VB Application
OPC Automation I/F
Vendor Specific Logic
OPC Data Access Automation
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
Automation:
principale
dell’OPC
Data
Access
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
OPC Data Access Automation
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.
Modello dell’OPC Data Access Automation
OPCServer
OPCGroups
(collection)
OPCBrowser
OPCGroup
OPCItems
(collection)
OPCItem
Esempio di OPC Data Access Automation
Creazione di un OPC Client
L’OPC 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
Passo 1: Raccolta delle Informazioni sugli
OPC Servers disponibili in un Nodo
 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.
GetOPCServers (Optional Node As Variant) As Variant
Metodo dell’Oggetto 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.
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 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 l’OPC Server
Selezionato
Connect (ProgID As String, Optional Node As Variant)
Metodo dell’Oggetto 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 l’indirizzo IP della macchina con cui
connettersi
Passo 2: Connessione con l’OPC Server
Selezionato
Set ConnectedOPCServer = New OPCServer
ConnectedServerName = OPCServerName.Text
NodeServerName = Text2.Text
ConnectedOPCServer.Connect ConnectedServerName, NodeServerName
Passo 3: Visualizzazione delle Proprietà del
Server a cui ci si è Connessi
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
Passo 4: Creazione di un Gruppo
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 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 5: Creazione Browser &
Esplorazione Items Disponibili
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
CreateBrowser
Metodo dell’Oggetto OPC Server
Crea un oggetto OPCBrowser
Visualizza l’organizzazione 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
L’Oggetto OPC Browser ha un attributo (Organization) che
restituisce il tipo di organizzazione interna.
ShowLeafs
Metodo dell’Oggetto OPC Browser
Visualizza i nomi delle foglie della posizione corrente (nel caso in
cui l’organizzazione del server sia di tipo “gerarchica”).
Passo 6: Aggiunta di un Item nel Gruppo
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 Groups
Restituisce un OPCGroup indicato dall’ItemSpecifier.
ItemSpecifier: nome dell’OPC Group.
AddItem (ItemID As String, ClientHandle As Long)
Metodo dell’Oggetto OPC Items
Crea 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 7: Lettura Proprietà Items
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 Item
Legge un Item dal Server, o dalla cache o dal device
Legge l’ultimo 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 ) 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.
Passo 8: Scrittura Proprietà Items
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 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)
Definizione di Altre Azioni da Compiere
nell’Ambito di un Gruppo
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.
Passo 9: Eliminazione Item
Remove (Count As Long, ServerHandles() As Long, ByRef Errors() As Long)
Metodo dell’Oggetto 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 10: Eliminazione Gruppo
Remove(ItemSpecifier As Variant)
Metodo dell’Oggetto OPC Group
Rimuove l’OPC Group specificato
ItemSpecifier: nome di un
OPCGroup.
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
Passo 11: Disconnessione dal Server
Disconnect
Metodo Oggetto OPC Server
Disconnette da un OPC Server.
Dim ConnectedOPCServer As OPCServer
ConnectedOPCServer.Disconnect
Scarica

OPC Data Access