Http:// OPC Data Access Specification.

49
http://www.opcfoundation.org/ OPC Data Access Specification

Transcript of Http:// OPC Data Access Specification.

Page 1: Http:// OPC Data Access Specification.

http://www.opcfoundation.org/

OPC Data Access Specification

Page 2: Http:// OPC Data Access Specification.

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.

Data Access Specification definisce due concetti: Namespace Gerarchia di oggetti OPC

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 Es.setpoint o valore di una variabile misurata

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

OPC Data Access Specification

Page 4: Http:// OPC Data Access Specification.

Ciascun Item e ciascun Nodo è caratterizzato da Proprietà Ad esempio: il nome del produttore di un device 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.

Esempio di interazione

tra OPC Data Access Server e Client

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:

la creazione degli oggetti avviene in base al tipo di "vista" del processo che il Client vuole ottenere

Tra gli oggetti che un OPC client può creare, esiste una gerarchia:OPCServer Object, rootOPCGroup Object, usati solo per organizzare i datiOPCItem Object, relativi ai dati a cui si vuole accedere

Page 6: Http:// OPC Data Access Specification.

L'organizzazione degli Item da parte del Client può essere fatta in base a diversi criteri scelti dall'utente:

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 oggetti per ogni OPC Data Access Client connesso

Il namespace è unico ed è mantenuto dal Server

E' possibile definire OPCItems Object che corrispondono non ad un item, ma alle sue proprietà.

Esempio: un Data Access Client potrebbe definire un OPCGroup object contenete un OPCItem object relativo ad un sensore di temperatura e un OPCItem object relativo alle sue proprietà (ad esempio intervallo di manutenzione).

OPC Data Access Specification

Page 7: Http:// OPC Data Access Specification.

OPC Data Access Specification

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 8: Http:// OPC Data Access Specification.

OPCServer and OPCGroup Objects hanno interfaccia Automation e Custom

OPCItem Object ha solo l'interfaccia Automation (semplificazione dell'implementazione)

Sono definite differenti modalità (sia in lettura sia in scrittura) per lo scambio informativo tra OPC Data Access Server e Client

Scambio Informativo

Page 9: Http:// OPC Data Access Specification.

Operazioni di Lettura Cache Device

Synchronous Read x xAsynchronous Read Solo nelle vecchie

specifiche xRefresh x x

Operazioni di Lettura

Cache/Device: i valori (read/write) sono disponibili localmente al server (PC) o in un dispositivo esterno L'aggiornamento della Cache è fatto solo per gli OPCItem

"attivi" e se viene specificato un "UpdateRate"

Page 10: Http:// OPC Data Access Specification.

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. E' più adatto per l'accesso al device

Refresh: il client chiede i valori di tutti gli OPCItems Object di un OPCGroup Object "attivo".

Operazioni di Lettura

Page 11: Http:// OPC Data Access Specification.

Le modalità di lettura precedenti vengono sempre iniziate dal client hanno il limite di richiedere il trasferimento dei valori

anche quando questi non cambiano

Esiste una quarta modalità di trasferimento che permette l'aggiornamento automatico dei valori di items ad un client.

Il Server legge dei valori (configurati dal client) in accordo ad una cerca frequenza (Update Rate, configurato dal client) e li passa al client SOLO se vi è stata una modifica (rispetto ad un range configurato dal client)

Operazioni di Lettura

Page 12: Http:// OPC Data Access Specification.

Operazioni di Scrittura

Operazioni di Scrittura

Cache Device

Synchronous Write Solo nella versione 3.0 x

Asynchronous Write Solo nella versione 3.0 x

Refresh Solo nella versione 3.0 Solo nella versione 3.0

Page 13: Http:// OPC Data Access Specification.

E' stato definito anche il formato dello scambio informativo: Actual Data. Vengono definiti dei 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. Nel caso di device che lo supportano, altrimenti viene inserito dal Server. E' codificato su 8 bytes e permette di rappresentare il tempo in incrementi di 100ns. Si usa l'UTC di Windows (Universal Time Coordinated)

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")Limit (2 bit): informazioni diagnostiche (es.sensor failure)

Formato dello Scambio Informativo

Page 14: Http:// OPC Data Access Specification.

Nella configurazione di un Data Access Server avviene sostanzialmente la definizione del Namespace. Vengono, inoltre, specificati gli identificatori degli items e

le relative proprietà e AccessPaths.

La prima attività eseguita dal Data Access Client è quella di accedere all'oggetto OPCServer, per fare un browsing del namespace al fine di avere informazioni sulla struttura e ottenere gli identificatori degli items per poter istanziare gli OPCItems Objects

Esempio di interazione

tra OPC Data Access Server e Client

Page 15: Http:// OPC Data Access Specification.

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*)

Esempio di interazione

tra OPC Data Access Server e Client

Page 16: Http:// OPC Data Access Specification.

Il Data Access Client può procedere alla creazione di Oggetti OPCGroup e OPCItem (in ordine)

La creazione degli OPCGroup è dovuta solo a motivi di organizzazione dei dati (OPCItems)

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

Symbolic Name: 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 ricezione automatica delle variabili (in corrispondenza di ciascun cambiamento) 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 lo scambio automatico sia per l'update della Cache.

PercentDeadband: determina il criterio di invio delle variabili da parte del Server (range di cambiamaneto). Serve per lo scambio automatico.

Esempio di interazione

tra OPC Data Access Server e Client

Page 17: Http:// OPC Data Access Specification.

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)

Esempio di interazione

tra OPC Data Access Server e Client

Page 18: Http:// OPC Data Access Specification.

ClientHandle. Il Fully Qualified ItemId non è sufficiente ad individuare in modo univoco un OPCItem Object.

Diversi Client potrebbero creare diversi OPCItem Object in un Server con lo stesso FullyQualified ItemId.

Allo scopo di individuare in modo univoco ciascun OPCItem object, 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.

Esempio di interazione

tra OPC Data Access Server e Client

Page 19: Http:// OPC Data Access Specification.

In risposta a ciascuna richiesta di creazione di OPCItem object, il Data Access Server invia: CanonicalDataType. Permette di specificare se il Server è

in grado 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)

Esempio di interazione

tra OPC Data Access Server e Client

Page 20: Http:// OPC Data Access Specification.

Dopo la creazione dell'albero di oggetti, il client può iniziare le letture/scritture o ricevere le informazioni sui cambi di valore

Scelta del tipo di lettura/scrittura: Synchronous Reading/Writing. E' possibile leggere sia dalla Cache sia dal Device Nel caso di Lettura dalla Cache, il parametro

RequestedUpdateRate determina la frequenza con cui il Server aggiorna i dati in cache.Sia l'OPCGroup sia l'OPCItem devono essere "attivi"

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

Le scritture sono riferite solo al device

Esempio di interazione

tra OPC Data Access Server e Client

Page 21: Http:// OPC Data Access Specification.

Scelta del tipo di lettura/scrittura: Asynchronous Reading/Writing. La differenza con il metodo sincrono è che ogni richiesta

fatta dal client viene notificata subito 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: Il client può richiedere valori da uno o più OPCItem

objects o scrivere valori su uno o più di essi E' necessario specificare esplicitamente gli OPCItem

objects attraverso gli Handles

Esempio di interazione

tra OPC Data Access Server e Client

Page 22: Http:// OPC Data Access Specification.

Scelta del tipo di 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 (SOLO LEGGERE) tutti gli OPCItem objects 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

Esempio di interazione

tra OPC Data Access Server e Client

Page 23: Http:// OPC Data Access Specification.

Scelta del tipo di lettura/scrittura: Lettura Automantica dei Dati su Modifica di Valore. Vi è la possibilità di richiedere che il Server invii al Client

solo i valori degli OPCItem objects che hanno subito una 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

Esempio di interazione

tra OPC Data Access Server e Client

Page 24: Http:// OPC Data Access Specification.

Durante la definizione del namespace nel Server, viene definita per ciascuna variabile il EU (Engineering Unit) type e l'EU information (ampiezza del range di variazione).

Se l'EU type è "analog" il Server si comporta nel seguente modo:

Calcola il valore assoluto dell'EU information Moltiplica il risultato per il valore della PercentDeadband relativo ad

un OPCGroup objectIl server legge 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 e quello attualeSe tale differenza è più grande del valore calcolato come detto prima,

allora il valore appena letto dell'OPCItem object viene inviato al client

Esempio di interazione

tra OPC Data Access Server e Client

Page 25: Http:// OPC Data Access Specification.

Esempio di interazione

tra OPC Data Access Server e Client

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-45|=4>3

Page 26: Http:// OPC Data Access Specification.

Il Client riceve tutti i valori degli OPCItem objects che hanno subito una variazione compatibile con il criterio prima illustrato

Il client riesce a distinguere i singoli valori di ciascun OPCItem object grazie alla coppia ServerHandle-ClientHandle

E' importante sottolineare che i valori RequestedUpdateRate e PercentageDeadBand sono gli stessi per tutti gli oggetti OPCItem di un OPCGroup.

Da notare inoltre il diverso comportamento degli oggetti OPCItem in un OPCGroup a seconda del EU Information

Il tipo di scambio è applicabile solo a Items con EU Type "Analog" di dati semplici. Non applicabile a:

Tutti i dati con l'altro valore previsto per EU Type "Enumerated"Tipi di dati strutturati

Esempio di interazione

tra OPC Data Access Server e Client

Page 27: Http:// OPC Data Access Specification.

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

Viene fornito un "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 dll

Interfaccia Automation

Page 28: Http:// OPC Data Access Specification.

Interfaccia Automation

OPCServer

OPCGroups(collection)

OPCGroup

OPCItems(collection)

OPCItem

OPCBrowser

Vi è un oggetto che rende possibile la funzione di browsing. Se il server non supporta tale funzione, l'oggetto non esiste

Vi sono oggetti di tipo "collezione"

Differrenze con l'Interfaccia Custom:

Page 29: Http:// OPC Data Access Specification.

Eventi L'interfaccia Automation supporta il meccanismo di notifica degli

eventi fornito in Visual Basic 5.0. Il Server Automation controlla l'occorrenza di un evento in

corrispondenza ad una chiamata del client di tipo: AsyncRefresh, AsyncRead, AsyncWrite e Data Changes (in accordo alle specifiche utente)

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

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

Interfaccia Automation

Page 30: Http:// OPC Data Access Specification.

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

OPCServer, tranne:i metodi per fare il browsing del namespace, e per aggiungere e

rimuovere gli oggetti OPCGroupTali metodi sono disponibili rispettivamente negli oggetti OPCBrowser e

OPCGroups (collection) dell'Interfaccia Automation

Sono disponibili (tra gli altri) i seguenti metodi:GetOPCServers(NodeName), ritorna l'ID dei server disponibili

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

Server che implementa la Custom InterfaceDisconnectCreateBrowser, crea l'oggetto Browser (solo se supportato dal Server)

Interfaccia Automation

Page 31: Http:// OPC Data Access Specification.

Esempi di Metodi dell'Oggetto OPCServer

GetOPCServers(Optional Node As Variant) As VariantNode è 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 un una macchina, in una standard VB listbox.

Dim AllOPCServers As VariantAllOPCServers = AnOPCServer.GetOPCServersFor i = LBound(AllOPCServers) To UBound(AllOPCServers)

listbox.AddItem AllOPCServers(i)Next i

Page 32: Http:// OPC Data Access Specification.

Eventi dell'OPCServer Object ServerShutDown. E' generato dal Server prima di disattivarsi, in

modo che il client rilasci le sue risorse.

Interfaccia Automation

Dim WithEvents AnOPCServer As OPCServer

Private Sub AnOPCServer_ServerShutDown(ByRef aServerReason As String)

‘ write your client code here

End Sub

Page 33: Http:// OPC Data Access Specification.

OPCBrowser Object Sono disponibili metodi per permettere al client la "navigazione" nel

namespace del ServerShowBranches, ShowLeafs, MoveToRoot, MoveDown, MoveTo,

MoveUp

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

OPCGroups Object (Collection) 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 in un OPCGroup object

Interfaccia Automation

Page 34: Http:// OPC Data Access Specification.

Interfaccia Automation

OPC Groups Collection

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:

AsyncRefreshRichiesta di aggiornamento automatico dei dati (su cambiamento)

Page 35: Http:// OPC Data Access Specification.

OPCGroup Object Permette l'accesso alle proprietà del Gruppo 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

Interfaccia Automation

Page 36: Http:// OPC Data Access Specification.

Interfaccia Automation

OPC Group

  

Attributi IsActive. Questo attributo controlla lo stato attivo del gruppo. Un

gruppo che è attivo acquisisce dati in modo automatico IsSubscribed. Questo attributo controlla le notifiche asincrone al

gruppo. DeadBand. Una deadband è espressa come percentuale della scala

completa (i valori ammessi vanno da 0 a 100 o da 0 a 1) UpdateRate. La massima velocità alla quale gli eventi DataChange

(Refresh e Aggiornamento automatico dati) possono essere generati. La velocità è espressa in millisecondi.

Gli attributi assumo valore di default dal OPC Groups Collection

Page 37: Http:// OPC Data Access Specification.

OPCGroup Object: 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.

Interfaccia Automation

Page 38: Http:// OPC Data Access Specification.

OPCGroup Object: SyncWrite Scrive in uno o più items di un gruppo. I valori sono scritti

SOLO nel DEVICE. 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.

Interfaccia Automation

Page 39: Http:// OPC Data Access Specification.

OPCGroup Object: 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’.

Interfaccia Automation

Page 40: Http:// OPC Data Access Specification.

OPCGroup Object: 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’.

Interfaccia Automation

Page 41: Http:// OPC Data Access Specification.

OPCGroup Object: AsyncRefresh Legge tutti gli Items “attivi” di un OPCGroup “attivo” 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 OPCGroups.

Interfaccia Automation

OPCGroup Object: AsyncCancel Richiede che il Server cancelli una transizione in sospeso.

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

Page 42: Http:// OPC Data Access Specification.

Eventi dell’OPCGroup Object Esistono Eventi che informano il client del completamento di

una precedente chiamata asincrona o circa la modifica di un valore

DataChange: L’evento DataChange si verifica quando un valore o la qualità di un item all’interno del gruppo è cambiato in corrispondenza:

in corrispondenza di una richiesta di AsyncRefresh

della richiesta di aggiornamento automatico dei valori

AsyncReadComplete: Questo evento avviene quando un AsyncRead è completato 

AsynsWriteComplete: Questo evento avviene quando un AsyncWrite è completato.

AsyncCancelComplete: Questo evento viene svegliato non appena un AsyncCancel è completato. 

Interfaccia Automation

Page 43: Http:// OPC Data Access Specification.

Interfaccia Automation

OPC Group

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 OPCItems

Page 44: Http:// OPC Data Access Specification.

OPCItems Object Collection Permette l'aggiunta, la gestione e la rimozione degli oggetti OPCItems Alcuni Metodi: AddItem, AddItems, Remove, Validate, SetActive

OPCItem Object Sono disponibili i metodi read e write per leggere e

scrivere un item (sono entrambe blocking)

Interfaccia Automation

Page 45: Http:// OPC Data Access Specification.

' General startup initializationPrivate Sub Form_Load()

'Create a new OPC Server objectSet ConnectedOPCServer = New OPCServerConnectedOPCServer.Connect "Kepware.KepserverEx.V4"' Add the group Set ConnectedServerGroups = ConnectedOPCServer.OPCGroupsSet ConnectedGroup = ConnectedServerGroups.Add("Test1")' Set the update rate for the groupConnectedGroup.UpdateRate = 500' Subscribe the group so that you will be able to get the data change callbacks from the serverConnectedGroup.IsSubscribed = True' Identify only one item to be added in the groupItemCount = 1OPCItemIDs(1) = "Channel_1.Device_1.R0"ClientHandles(1) = 1' Add an Item Collection where to add the previous itemSet OPCItemCollection = ConnectedGroup.OPCItemsOPCItemCollection.DefaultIsActive = TrueOPCItemCollection.AddItems ItemCount, OPCItemIDs, ClientHandles, ItemServerHandles, ItemServerErrors

End Sub

Esempio di Programmazione con

l'Interfaccia Automation

Page 46: Http:// OPC Data Access Specification.

Il Working Group "OPC and XML" iniziò il lavoro di definizione dello standard nel Marzo del 2000 (conclusione 2002)

Obiettivi erano: Integrazione di OPC con Microsoft BizTalk Integrazione di OPC in applicazioni Web utilizzando XML

Le tecnologie utilizzate sono: XML, Web Services, SOAP, BizTalk

Le specifiche definiscono un servizio OPC XML come Web Service (uso di WSDL)

OPC e XML

Page 47: Http:// OPC Data Access Specification.

Le specifiche OPC XML Data Access si differenziano da quelle basate su tecnologia COM, per motivi legati alla tecnologia XML/HTTP Interazione client/server “short-term” Protocollo stateless HTTP Difficoltà nel realizzare Web Services meccanismi che permettano

di creare oggetti per ciacun client secondo la filosofia COM

Non vengono definiti i gruppi Se il client vuole un aggiornamento automatico dei dati, dovrà

sempre effettuare la richiesta di lettura (se niente è cambiato nessun valore è tornato al client)

OPC e XML

Page 48: Http:// OPC Data Access Specification.

OPC e XMLMethods Description

Browse Queries the hierarchical namespace of the server for the names of all the available items (tags).

GetProperties Returns extra information associated with one or more item.

GetStatus Returns info about the server, version information, current mode, overall health etc.

Read Returns the value quality and timestamp for one or more items.

Subscribe Indicates a list of items for which the client wants continuous updates.

SubscriptionCancel Removes a list of items indicated in a previous call to Subscribe

SubscriptionPolledRefresh Returns all items indicated in a subscription that have changed since the previous call to SubscriptionPolledRefresh.

Write Writes new values to one or more items.

Page 49: Http:// OPC Data Access Specification.

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