Http:// OPC Data Access Specification DCOM-based.

50
http://www.opcfoundation.org/ OPC Data Access Specification DCOM-based

Transcript of Http:// OPC Data Access Specification DCOM-based.

Page 1: Http:// OPC Data Access Specification DCOM-based.

http://www.opcfoundation.org/

OPC Data Access Specification

DCOM-based

Page 2: Http:// OPC Data Access Specification DCOM-based.

E' la più vecchia delle specifiche OPC Definisce le interfacce Client/Server per l'accesso ai

dati di processo I Data Access Servers permetto ai Data Access

Clients l'accesso a differenti sorgenti di dati: Cache e Device

Device: i dati possono risiedere nelle schede di I/O connesse al PC (dove risiede il Server) o su periferiche (PLC) connesse al PC (tramite Fieldbus)

Esiste l'interfaccia Custom e Automation

OPC Data Access Specification

Page 3: Http:// OPC Data Access Specification DCOM-based.

Data Access Specification definisce due concetti: Namespace Gerarchia di oggetti OPC (nome oggetti OPCxxxxx)

Il Namespace mantiene le informazioni su tutti i dati disponibili sul server.

Il Namespace può essere organizzato ad albero o essere "flat"

Ogni informazione di base mantenuta da un Server OPC è rappresentata da un Item Ad esempio setpoint o valore di una variabile misurata

OPC Data Access Specification

Page 4: Http:// OPC Data Access Specification DCOM-based.

Nell'organizzazione ad albero del Namespace, gli Items sono le foglie e i nodi servono ad organizzare le foglie

Ciascun Item e ciascun Nodo è caratterizzato da Proprietà Ad esempio: il nome del produttore di un device, parametri

tecnici, etc. Accedere alle Proprietà permette al Client di ottenere utili

informazioni (es.informazioni sulla calibrazione di un measuring device)

A ciascun Item può essere associato un AccessPath, che specifica come avviene la comunicazione tra il Data Access Server e il device (RS, 4-20mA). E' opzionale

OPC Data Access Specification

Page 5: Http:// OPC Data Access Specification DCOM-based.

La connessione di un Data Access Client ad un Data Access Server, consiste nella creazione di diversi OPC Object all'interno del Data Access Server:

Tra gli OPC Object esiste una gerarchia. Ad esempio:OPCServer Object, rootOPCGroup Object, usati per organizzare gli OPCItem ObjectOPCItem Object, che in genere corrisponde ad un Item

E' possibile definire OPCItem Objects che corrispondono alle Proprietà di un Item.

• Esempio: un OPCItem object relativo alla proprietà di un sensore di temperatura definita come intervallo di manutenzione.

OPC Data Access Specification

Page 6: Http:// OPC Data Access Specification DCOM-based.

L'organizzazione degli OPCItem da parte del Client può essere fatta in base a diversi criteri scelti dall'utente. Ad esempio: aspetto logico (tutte le variabili di una sezione di

processo) aspetto relativo alla dinamica (tutte le variabili con

dinamica simile)

In un OPC Server esiste una gerarchia di OPC Object per ogni OPC Data Access Client connesso Il Namespace è unico ed è mantenuto dal Server

OPC Data Access Specification

Page 7: Http:// OPC Data Access Specification DCOM-based.

OPC Data Access Specification

DCOM-based

Custom Interface

Page 8: Http:// OPC Data Access Specification DCOM-based.

OPC Data Access Specification

Custom Interface

Oggetto istanziato nel lato Client:OPCClient Object

Oggetti istanziati nel lato Server, per ogni Client connesso:OPCServer ObjectOPCGroup ObjectOPCItem Object

Page 9: Http:// OPC Data Access Specification DCOM-based.

OPC Data Access Specification

Custom Interface

OPC Client

Componente Server

Node 11

Item 1 Item 2

Item 3 Item 4

Node 2Node 1

Root

OPCServer

OPCGroup OPCGroup

OPCItem OPCItem OPCItem OPCItem

OPC

Data Access Server

Page 10: Http:// OPC Data Access Specification DCOM-based.

OPCClient, OPCServer e OPCGroup Objects sono degli oggetti DCOM e hanno interfaccia Automation e Custom

OPCItem Object sono oggetti DCOM con la sola interfaccia Automation semplificazione dell'implementazione, in quanto molto

spesso la lettura degli OPCItem Objects viene realizzata tramite gli OPCGroup Objects

OPC e DCOM

Page 11: Http:// OPC Data Access Specification DCOM-based.

OPC e DCOMIOPCDataCallBack

IOPCServerShutdown

OPC Client

IOPCCommonIOPCServer

OPC Server

IConnectionPointContainer

IOPCItemProperties[IOPCServerPublicGroups]

[IOPCBrowseServerAddressSpace]

IOPCItem Mgt

IOPCGroupStateMgt

OPC Group

[IOPCPublicGroupStateMgt]IOPCSyncIO

IOPCASyncIO2IConnectionPointerContainer

[IPersistFile]

IDataObjectIOPCASyncIO

IEnumOPCItemAttributes

Page 12: Http:// OPC Data Access Specification DCOM-based.

Sono definite differenti modalità dello scambio informativo tra OPC Data Access Server e Client: Lettura (device, cache) di uno o più OPCItems Scrittura (device, cache) di uno o più OPCItems

Scrittura su cache solo nell’ultima versione DA (3.0)

Refresh di un OPCGroups Aggiornamento Automatico dei Dati

E' stato definito anche il formato dello scambio informativo: Actual Data (Valore) Time Stamp (Informazione Temporale) Status Information (Qualità)

Scambio Informativo

Page 13: Http:// OPC Data Access Specification DCOM-based.

Actual Data. Vengono utilizzati i tipi di dato tipici di DCOM, chiamati VARIANT

Il mapping con i tipi legati all'applicazione viene fatto nel client e nel server

Time Stamp. E' codificato su 8 bytes e permette di rappresentare il tempo in incrementi di 100ns.

Si usa l'UTC di Windows (Universal Time Coordinated) Viene fornito dai device se lo supportano, altrimenti viene inserito dal

Server.

Status Information. E' un campo di 2 bytes, anche se attualmente si usa solo il byte meno significativo

Quality (2 bit): Good, Bad (es.no link), Uncertain (es.no sense) Status (4 bit): descrizione dello stato (es. "Not Connected" se Quality è

Bad) Limit (2 bit): informazioni diagnostiche (es.sensor failure)

Scambio Informativo

Page 14: Http:// OPC Data Access Specification DCOM-based.

1. La prima attività eseguita dal Data Access Client è quella di creare l'oggetto OPCServer

2. Il Cliente crea uno o più OPCGroups3. Il Client accede all'oggetto OPCServer, per fare un

browsing del namespace al fine di avere informazioni sulla struttura e ottenere gli identificatori degli items

4. Creazione di OPCItems scelta di eventuale modifica di codifica dati

5. Modifica proprietà Items e/o Groups (es.ActiveState)6. Operazioni di Lettura/Scrittura7. Disconnessione

può avvenire anche da parte del Server

Attività di un OPC Data Access Client

Page 15: Http:// OPC Data Access Specification DCOM-based.

Il Browsing dell'oggetto OPCServer permette al client di esplorare l'intera struttura del namespace

Per ciascun nodo può conoscere: Solo i nodi al di sotto Solo le foglie al di sotto Tutto quello presente al di sotto, in modo "flat"

E' possibile che il Client applichi dei filtri SOLO sulle foglie:

Solo le foglie che hanno un particolare VARIANT Data Type (es. unsigned Integer 2-bytes)

Solo le foglie con una specifica tipologia di accesso (es.solo lettura) Solo le foglie contenente una stringa (es. Te*)

Browsing

Page 16: Http:// OPC Data Access Specification DCOM-based.

La creazione degli OPCGroup è dovuta solo a motivi di organizzazione degli OPCItems

Per ciascuna richiesta di creazione di un Oggetto OPCGroup, il Data Access Client specifica:

Symbolic Name: Nome del Gruppo. Permette di esplicitare la semantica dell'oggetto. Se non specificato, viene assegnato dal Server.

ActiveState: permette al client di specificare se vuole attivare la procedura di Aggiornamento Automatico dei valori degli item e se vuole l'Aggiornamento della Cache.

RequestedUpdateRate: determina la frequenza di lettura automatica delle variabili da parte del server (solo se ActiveState = TRUE). Questa frequenza serve sia per l'Aggiornamento Automatico sia per l'Aggiornamento della Cache.

PercentDeadband: determina il criterio di invio delle variabili da parte del Server (range di cambiamaneto). Serve per l'Aggiornamento Automatico dei valori degli item.

Creazione di OPCGroups

Page 17: Http:// OPC Data Access Specification DCOM-based.

Per la creazione di un oggetto OPCItem, il Data Access Client specifica:Fully Qualified ItemId. Identifica in modo univoco l'item all'interno

del namespace.ActiveState. E' possibile attivare/disattivare il meccanismo di

Aggiornamento Automatico dei valori per ciascun OPCItem object e il meccanismo di Aggiornamento della Cache.

RequestedDataType. Il client può richiedere una conversione dei dati dal formato originario a quello specificato (e vicerversa).Il Server potrebbe non supportare questa possibilità (ciò viene notificato al client).

AccessPath (optional)ClientHandle (vedi lucido successivo)

Creazione di OPCItems

Page 18: Http:// OPC Data Access Specification DCOM-based.

ClientHandle. Problema: diversi Client potrebbero creare OPCItem

Objects in un Server, con riferimento allo stesso FullyQualified ItemId.

Allo scopo di creare una corrispondenza uno-a-uno tra OPCItem object e Item, viene utilizzato un meccanismo a coppia ClientHandle-ServerHandle.

Il Data Access Client specifica un ClientHandle e il Server crea un ServerHandle per il Client. In questo modo a ciascun OPCItem object corrisponde una sola coppia ClientHandle-ServerHandle.

Creazione di OPCItems

Page 19: Http:// OPC Data Access Specification DCOM-based.

In risposta a ciascuna richiesta di creazione di OPCItem object, il Data Access Server invia: Risultato di conferma sulla capacità del Server di

supportare la conversione di tipo richiesta dal client. ServerHandle. Il server alloca diversi ServerHandle per i

diversi client. Ha dimensione di 32 bit (viene gestito come puntatore)

Creazione di OPCItems

Page 20: Http:// OPC Data Access Specification DCOM-based.

E' possibile leggere sia dalla Cache sia dal Device La lettura dalla Cache è abilitata solo per OPCItems

"attivi" appartenenti all'OPCGroup "attivo" Il parametro RequestedUpdateRate determina la frequenza

con cui il Server aggiorna i dati in cache

Nel caso di lettura da Device il dato è letto direttamente dal device quando richiesto

L'operazione di scrittura è riferita solo al Device (ad eccezione della versione 3.0)

Operazioni di Lettura/Scrittura

Page 21: Http:// OPC Data Access Specification DCOM-based.

Lettura/Scrittura Synchronous di un Singolo OPCItem Con la lettura/scrittura sincrona il Client deve attendere la

conferma ad ogni richiesta Lettura/Scrittura Asynchronous di un Singolo OPCItem

Con la lettura/scrittura asincrona ogni richiesta fatta dal client viene notificata subito (non l'esito!)

Il risultato della richiesta viene inviato con un meccanismo di CallBack (ossia il server invoca un metodo all'interfaccia del client)

Sia con la tipologia Sincrona sia con la Asincrona: E' possibile (tranne qualche caso) selezionare la Cache o il

Device E' necessario specificare esplicitamente gli OPCItem

objects attraverso gli Handles

Operazioni di Lettura/Scrittura

Page 22: Http:// OPC Data Access Specification DCOM-based.

Lettura/Scrittura Refresh Le letture (sincrone o asincrone) richiedono grossi

trasferimenti di dati quando è necessario leggere molti OPCItems di un OPCGroup

E' necessario specificare l'Handle di ogni OPCItem

La modalità Refresh si usa quando il client ha necessità di Leggere/Scrivere tutti gli OPCItem objects "attivi" di un OPCGroup object "attivo"

E' possibile selezionare come sorgente Cache/Device In tal caso non bisogna trasferire alcun Handle La modalità Refresh sulla scrittura non viene supportata

nelle versioni 1.x e 2.0, ma solo nella 3.0

Operazioni di Lettura/Scrittura

Page 23: Http:// OPC Data Access Specification DCOM-based.

Operazioni di Lettura Cache Device

Synchronous Read SI SIAsynchronous Read Solo nelle vecchie

specifiche SI

Refresh SI SI

Operazioni di Lettura

Synchronous Read: il client chiama il metodo e aspetta il valore di ritorno i tempi di risposta dipendono dall'opzione Cache/Device

Asynchronous Read: il client chiama il metodo, ottenendo conferma immediata. Il valore richiesto verrà consegnato dopo (CallBack)

E' più adatto per l'accesso al device Refresh: il client chiede i valori di tutti gli OPCItems Object "attivi" di un

OPCGroup Object "attivo"

Page 24: Http:// OPC Data Access Specification DCOM-based.

Operazioni di Scrittura

Operazioni di Scrittura

Cache Device

Synchronous Write Solo nella versione 3.0 SI

Asynchronous Write Solo nella versione 3.0 SI

Refresh Solo nella versione 3.0 Solo nella versione 3.0

Synchronous Write: il client chiama il metodo e aspetta l'esito dell'operazione di scrittura

Asynchronous Write: il client chiama il metodo, ottenendo conferma immediata. L'esito verrà consegnato dopo (CallBack)

Page 25: Http:// OPC Data Access Specification DCOM-based.

Vi è la possibilità di richiedere che il Server invii al Client solo i valori degli OPCItem objects che hanno subito una "certa" modifica dall'ultimo valore

Il Data Access Client deve aver creato un OPCGroup specificando tutti i tre parametri: PercentDeadband, RequestedUpdateRate, ActiveState

Il Server leggerà tutti i valori di tali OPCItem objects, valutando opportune condizioni in base alle quali il server potrà inviare o meno i valori al client in modo automatico

Aggiornamento Automatico dei Dati

Page 26: Http:// OPC Data Access Specification DCOM-based.

Durante la definizione del Namespace nel Server, viene definita per ciascuna variabile (item):EU (Engineering Unit) Type. Uno dei possibili

valori è "Analog"EU Information (ampiezza del range di

variazione)

L'aggiornamento automatico dei dati ha luogo solo se l'EU type è "Analog"

Aggiornamento Automatico dei Dati

Page 27: Http:// OPC Data Access Specification DCOM-based.

Il Server si comporta nel seguente modo:Calcola il valore dell'ampiezza del range fornito da EU

InformationMoltiplica il risultato per il valore della PercentDeadband

(0-1) relativo ad un OPCGroup objectlegge i valori degli OPCItem object per ciascun

OPCGroup secondo il RequestedUpdateRatePer ogni lettura viene calcolata la differenza in valore

assoluto tra l'ultimo valore letto (mantenuto in Cache) e quello attuale

Se tale differenza è più grande del valore calcolato come detto prima, allora il valore appena letto dell'OPCItem object viene memorizzato in Cache ed inviato al client (CallBack)

Aggiornamento Automatico dei Dati

Page 28: Http:// OPC Data Access Specification DCOM-based.

RequestedUpdateRate= 1000ms

PercentDeadBand=0.1

EU Type=Analog

EU Information = {40,70}

30

40

50

60

70

80

90

1000 ms

0.1*(70-40)=3

50-45=5>3

0.1*(70-40)=3

|41-50|=9>3

Aggiornamento Automatico dei Dati

Aggiornamento Cache Aggiornamento Cache

Page 29: Http:// OPC Data Access Specification DCOM-based.

http://www.opcfoundation.org/

OPC Data Access Specification

DCOM-based

Automation Interface

Page 30: Http:// OPC Data Access Specification DCOM-based.

L'interfaccia OPC Automation permette di "mascherare" i metodi di accesso al Data Access Server

Viene fornito un "OPC Automation Wrapper" che, in ambiente Windows, è realizzato da una dll, che permette l'accesso al Data Access Server

Ogni Client crea un'istanza del Wrapper Fornisce al programmatore Visual Basic delle interfacce più semplici

(senza l'uso di puntatori) per accedere alle stesse funzionalità ottenibili dalla interfaccia Custom.

Automation Client (VB)

OPC Automation Wrapper

Custom Interface (COM / DCOM)

OPC Custom Interface Server

Automation Interface

OPC Data Access Specification

Automation Interface

Page 31: Http:// OPC Data Access Specification DCOM-based.

Interfaccia OPC Automation

OPCServer

OPCGroups(collection)

OPCGroup

OPCItems(collection)

OPCItem

OPCBrowser

OPCBrowser rende possibile la funzione di browsing

Se il server non supporta tale funzione, l'oggetto non esiste

Vi sono oggetti di tipo "collezione"

OPCGroups Collection

Creazione, rimozione, impostazioni proprietà, gestione callback

OPCItemsCollection

Creazione, rimozione, impostazioni proprietà

Differenze con l'Interfaccia Custom:

Page 32: Http:// OPC Data Access Specification DCOM-based.

L'interfaccia Automation supporta il meccanismo di notifica degli eventi fornito in Visual Basic.

In generale, per ciascun oggetto OPC vengono gestiti eventi Ad esempio per l'oggetto OPCServer esiste l'evento

"ServerShutDown". Una classe di eventi sono relativi a chiamate del client di tipo

Asincrono: AsyncRefresh, AsyncRead, AsyncWrite e Data Changes

L'implementazione dell'Interfaccia Automation si basa sull’assunzione che il Client riesca a gestire questi eventi.

Eventi dell'Interfaccia OPC Automation

Page 33: Http:// OPC Data Access Specification DCOM-based.

L'oggetto offre tutti i metodi dell'interfaccia Custom dell'oggetto OPCServer

L'oggetto NON offre i metodi per fare il browsing del namespace, e per aggiungere e rimuovere gli oggetti OPCGroup

Browsing offerto dall'oggetto OPCBrowser Aggiunta/Rimozione di Gruppi offerto da OPCGroupsCollection

Esempi di metodi disponibili: GetOPCServers(NodeName), ritorna l'ID dei server disponibili

(registrati) Connect(Id,NodeName), permette la connessione con il Data Access

Server che implementa la Custom Interface Disconnect CreateBrowser, crea l'oggetto Browser (se supportato dal Server)

OPCServerObject

Page 34: Http:// OPC Data Access Specification DCOM-based.

Esempi di Metodi dell'Oggetto OPCServer

GetOPCServers(Optional Node As Variant) As Variant Node è opzionale. Esempi di valori ammessi: “server.com”,

“www.vendor.com”, “180.151.19.75”. Esempio di programma che memorizza la lista degli OPC Server

registrati nella macchina locale, in una standard VB listbox.

Dim AllOPCServers As Variant AllOPCServers = AnOPCServer.GetOPCServers For i = LBound(AllOPCServers) To UBound(AllOPCServers) listbox.AddItem AllOPCServers(i) Next i

Page 35: Http:// OPC Data Access Specification DCOM-based.

ServerShutDown. E' generato dal Server prima di disattivarsi, in modo che il client rilasci le sue risorse.

Esempio di programma lato client che gestisce lo spegnimento del Server DA

Dim WithEvents AnOPCServer As OPCServer

Private Sub AnOPCServer_ServerShutDown(ByRef aServerReason As String)

‘ write your client code here

End Sub

Eventi dell'OPCServerObject

Page 36: Http:// OPC Data Access Specification DCOM-based.

Sono disponibili metodi per permettere al client la "navigazione" nel namespace del ServerShowBranchesShowLeafsMoveToRootMoveDownMoveToMoveUp

E’ istanziato dal metodo CreateBrowser (OPCServerObject), se il Server supporta il browsing

OPCBrowserObject

Page 37: Http:// OPC Data Access Specification DCOM-based.

Non esistono oggetti corrispondenti nell'interfaccia custom

Tale oggetto è usato per aggiungere, gestire e rimuovere oggetti OPCGroup

Permette di impostare il default per gli OPCGroup object creati dal client le proprietà possono essere cambiate per ogni OPCGroup

object

Esiste un evento (GlobalDataChange) gestito da OPCGroups object, che avvisa il client di una modifica del valore o dello stato di un item del gruppo (CallBack)

OPCGroupsCollectionObject

Page 38: Http:// OPC Data Access Specification DCOM-based.

Attributi  

Metodi  

Add Remove RemoveAll

DefaultGroupIsActive DefaultGroupDeadbandDefaultGroupUpdateRate

Eventi 

GlobalDataChange. Il Server notifica al client:L'Id dell’oggetto OPCGroup relativo alla modificaIl numero di Items, i relativi Ids, valori, quality e timestampsUn parametro per specificare che l'evento è generato in corrispondenza ad una precedente:

RefreshRichiesta di aggiornamento automatico dei dati (su cambiamento)

OPCGroupsCollectionObject

Page 39: Http:// OPC Data Access Specification DCOM-based.

Permette l'accesso al Gruppo (Lettura/Scrittura) Offre tutti i metodi disponibili nell'interfaccia Custom

per l'OPCGroup Object Vengono usati nomi differenti per lo scambio dati:

SyncRead e SyncWrite per lo scambio Sincrono AsyncRead, AsyncWrite, AsyncRefresh e

AsyncCancel per lo scambio Asincrono (CallBack)

OPCGroupObject

Page 40: Http:// OPC Data Access Specification DCOM-based.

  

Attributi IsActive. Questo attributo controlla lo stato attivo del

gruppo. IsSubscribed. Questo attributo abilita le notifiche asincrone

(CallBack) Non Esiste nell'Interfaccia CustomAd esempio il Refresh non può essere realizzato se questo attributo

non è settato, in quanto Refresh viene implementato come servizio asincrono

DeadBand. I valori ammessi vanno da 0 a 100 o da 0 a 1 UpdateRate. La velocità è espressa in millisecondi. Gli attributi assumo valore di default dal OPC Groups

Collection

OPCGroupObject

Page 41: Http:// OPC Data Access Specification DCOM-based.

SyncRead Questa funzione legge il valore, la qualità e il timestamp per uno o più

item in un gruppo. La lettura può avvenire dalla cache o dal device.  I parametri del metodo sono:

Source: OPC_DS_CACHE o OPC_DS_DEVICE (dalla cache solo se l’item è attivo)

NumItems: Il numero di items che devono essere lettiServerHandles: Array degli identificatori degli items del server che

devono essere letti.Values: Array di valori.Qualities: array di interi che rappresentano le Qualities degli items letti.TimeStamps: array di TimeStamps. Se il dispositivo non può fornire un

timestamp il server provvederà a fornirne uno.Errors: Array di Long che indica se ci sono stati errori leggendo il valore,

il timestamp e qualità degli item.

La funzione viene eseguita fino al completamento prima di ritornare i valori.

OPCGroupObject

Page 42: Http:// OPC Data Access Specification DCOM-based.

SyncWrite Scrive in uno o più items di un gruppo. Parametri:

NumItems: Numero di item che devono essere scrittiServerHandles: Array degli identificatori degli items del server

che devono essere scritti.Values: Array di valori.Errors: Array di Long che indicano il successo delle singole

operazioni di scrittura degli items.

OPCGroupObject

Page 43: Http:// OPC Data Access Specification DCOM-based.

AsyncRead Legge uno o più items di un gruppo. Il risultato (il o i valori degli

item) è restituito attraverso l’evento AsyncReadComplete associato all’oggetto OPCGroup. 

L’evento AsyncReadComplete associato all’oggetto OPCGroup verrà svegliato dal Server non appena sarà pronto il risultato dell’operazione AsyncRead

 Parametri:NumItems: Il numero di item che devono essere letti.ServerHandles: Array degli identificatori degli items del server

che devono essere letti.Errors: Array di Long che indicano il successo delle singole

operazioni di lettura degli items.TransactionID: La transactionID specificata dal client.CancelID: Una transaction ID generata dal server. E’ fornita per

permettere al client di cancellare la ‘transaction’.

OPCGroupObject

Page 44: Http:// OPC Data Access Specification DCOM-based.

AsyncWrite Scrive uno o più items di un gruppo. Il risultato (la conferma) è

restituito attraverso l’evento AsyncWriteComplete associato all’oggetto OPCGroup

L’evento AsyncWriteComplete associato all’oggetto OPCGroup verrà svegliato dall’Automation Server non appena sarà pronto il risultato dell’operazione AsyncWrite.

Parametri:NumItems: Il numero di item che devono essere scritti.ServerHandles: Array degli identificatori degli items del server che

devono essere scritti.Values: Array di valoriTransactionID: La transactionID specificata dal client.CancelID: Una transaction ID generata dal server. E’ fornita per

permettere al client di cancellare la ‘transaction’.

OPCGroupObject

Page 45: Http:// OPC Data Access Specification DCOM-based.

AsyncRefresh Legge tutti gli Items “attivi” di un OPCGroup “attivo”

(attributo IsSubscribed attivato) La lettura avviene con frequenza non superiore a UpdateRate Il Refresh deve essere annullato da AsyncCancel I risultati sono restituiti attraverso l’evento DataChange

associato all’oggetto OPCGroup e l'evento GlobalDataChange associato all'oggetto OPCGroupsCollection.

AsyncCancel Richiede che il Server cancelli una transizione in sospeso.

Un evento AsyncCancelComplete indicherà se la cancellazione è avvenuta o meno.

OPCGroupObject

Page 46: Http:// OPC Data Access Specification DCOM-based.

Attributi  

Metodi  

SyncRead SyncWrite AsyncRead(AsyncReadComplete)

AsyncWrite(AsyncWriteComplete)

AsyncRefresh(DataChange e GlobalDataChange)

AsyncCancel(AsyncCancelComplete)

  

Eventi 

DataChange(AsyncRefresh eAggiornamento dati)

AsyncReadComplete (AsyncRead)

AsyncWriteComplete(AsyncWrite)

AsyncCancelComplete(AsyncCancel)

   

IsActive IsSubscribed DeadBand

UpdateRate

OPCGroupObject

Page 47: Http:// OPC Data Access Specification DCOM-based.

Permette l'aggiunta, la gestione e la rimozione degli oggetti OPCItems

Alcuni Metodi: AddItem AddItems Remove Validate SetActive

OPCItems Object Collection

Page 48: Http:// OPC Data Access Specification DCOM-based.

Sono disponibili i metodi read e write per leggere e scrivere un item (sono entrambi blocking)

OPCItem Object

Page 49: Http:// OPC Data Access Specification DCOM-based.

Private Sub Form_Load()

Set ConnectedOPCServer = New OPCServer 'Create a new OPC Server object

ConnectedOPCServer.Connect "Kepware.KepserverEx.V4"

Set ConnectedServerGroups = ConnectedOPCServer.OPCGroups 'Add a Groups ‘Collection

Set ConnectedGroup = ConnectedServerGroups.Add("Test1") ' Add the group

ConnectedGroup.UpdateRate = 500 ' Set the update rate for the group

ConnectedGroup.IsSubscribed = True ' Activate callbacks from the server

ItemCount = 1 ' Identify only one item to be added in the group

OPCItemIDs(1) = "Channel_1.Device_1.R0"

ClientHandles(1) = 1

Set OPCItemCollection = ConnectedGroup.OPCItems ' Add an Item Collection OPCItemCollection.DefaultIsActive = True

OPCItemCollection.AddItems ItemCount, OPCItemIDs, ClientHandles, ItemServerHandles, ItemServerErrors ' Add an Item

End Sub

Esempio di Programmazione di un OPC Client con l'Interfaccia OPC Automation

Page 50: Http:// OPC Data Access Specification DCOM-based.

I produttori di software OPC devono superare dei test: Errori dovuti a differenti ed incorrette interpretazioni della

specifica OPC e/o a implementazioni incorrette ed incomplete Attualmente solo per i Server, visto che un errore in un Client

viene scoperto dalla corrispondente risposta errata da parte del Server

Il superamento di un test permette di acquisire una certificazione

OPC Foundation rende disponibili: Un framework test, test cases e l'OPC Compliance Client

Il Compliance Test Client è un software che realizza: Stress, Logical e Interface tests

OPC Compliance Test