OPC Data Access Specification

Slides:



Advertisements
Presentazioni simili
INTRODUZIONE Il framework.NET. Un po di storia Sin dalla prima versione del sistema operativo Windows (1990 circa), nacque la necessità di far comunicare.
Advertisements

DBMS (DataBase Management System)
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
Sistema di gestione flussi documentali
Il Sistema Operativo.
File System Cos’è un File System File e Directory
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
Università degli Studi di Modena e Reggio Emilia
Esempio di OPC Data Access Automation Creazione di un OPC Client
OPC XML Data Access Specification
Integrazione delle Informazioni Necessità di accedere ai dati di campo da qualunque parte dellimpianto Visione omogenea.
1 System Call per Comunicazione tra Processi Pipe.
Interfaccia del file system
I file l I File sono l unità base di informazione nellinterazione tra utente e sistema operativo l Un file e costituito da un insieme di byte attinenti.
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Tecniche di automazione Corso: Tecniche di automazione – prof.ssa Laura ZUCCHI DDE Data Dynamic Exchange Appunti lezioni Classi 1C e 1H – gruppo A.
Introduzione agli stream e alle classi
Primo livello: Field Management. A questo livello le informazioni sono relative ai dispositivi di campo Secondo livello:
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
OPC Data Access Specification
Struttura dei sistemi operativi (panoramica)
L. Servoli - Corso Fisica dei Dispositivi Elettronici 1 Uno scheduler deve avere implementate almeno le seguenti funzionalità: 1) Inizializzatore: preparazione.
La Riflessione computazione Elisa Ferrando. Cos è la Riflessione La Riflessione Sistema riflessivo Sistema computazionale.
Linguaggi di programmazione
memoria gestita staticamente:
I File.
DBMS ( Database Management System)
Distributed File System Service Dario Agostinone.
Concorrenza e Sincronizzazione di Thread e Processi
File I record.
File ad accesso casuale o random
Guida IIS 6 A cura di Nicola Del Re.
Modulo 1 - Concetti di base della Tecnologia dell'Informazione
U N INFRASTRUTTURA DI SUPPORTO PER SERVIZI DI FILE HOSTING Matteo Corvaro Matricola Corso di Reti di Calcolatori LS – Prof. A. Corradi A.A.
BROKER SERVER Progetto di Ingegneria del Web 2008 Alessio Bianchi Andrea Gambitta Giuseppe Siracusano.
Architettura del calcolatore
DDE Data Dynamic Exchange Appunti lezioni Classi 1C e 1H – gruppo A
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Amministrazione della rete: web server Apache
Installazione Come tecnico, si potrebbe aver necessità di effettuare una installazione pulita di un sistema operativo. L'esecuzione di una installazione.
ASP – Active Server Pages - 1 -Giuseppe De Pietro Introduzione ASP, acronimo di Active Server Pages, sta ad indicare una tecnologia per lo sviluppo di.
Sistema Operativo (Software di base)
Prima di iniziare… Durata attività: due lezioni frontali + una lezione laboratorio + compiti per casa Prerequisiti: elementi base architettura dei calcolatori.
LABVIEW Sommario Che cosa è uno strumento virtuale (VI) creato con LABVIEW Parti di un VI: pannello frontale diagramma a blocchi Confronto tra il principio.
ESEMPIO DI MODELLIZZAZIONE OOP Sistema di gestione dei contatti con i clienti da parte del reparto vendite tratto da : VISUAL BASIC 6 Programmazione ad.
Introduzione a Javascript
INTERFACCE Schede elettroniche che permettono al calcolatore di comunicare con le periferiche, che possono essere progettate e costruite in modo molto.
Programmazione Web PHP e MySQL 1. 2Programmazione Web - PHP e MySQL Esempio: un blog.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Lez. 9 (13/14)Elementi di Programmazione1 Lezione 9 Valutazione di espressioni File di testo sequenziali.
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
Temp Sentry: un sistema di rilevazione dati ambientali Guerra Alberto INFN-Sezione di Roma, P.le Aldo Moro, 2, I Roma, Italy Introduzione Il sistema.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Progetto di Ingegneria del Web Anno Accademico 2007/2008 Stefano Pigiani Bruno Ricci Marco Ruzzon.
Supporto per la replicazione attiva di servizi Progetto per il corso di Reti di Calcolatori LS Montanari Mirko Matr:
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
Servizi Internet Claudia Raibulet
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
Laboratorio Informatico
 Primo livello: Field Management. A questo livello le informazioni sono relative ai dispositivi di campo  Secondo livello:
Conversione Analogico/Digitale Le grandezze fisiche che vogliamo misurare variano con continuità in un dato intervallo ed in funzione del tempo: sono descrivibili.
GESTIONE RETI TCP/IP l troubleshooting è necessario per risolvere molti problemi che si possono verificare all'interno di una rete, una delle aspirazioni.
Cloud Tecno V. Percorso didattico per l’apprendimento di Microsoft Access 4 - Le maschere.
+ Gestire la persistenza Nicolò Sordoni. + Meccanismi di persistenza dei dati In Windows Phone, come negli altri ambienti, abbiamo tre soluzioni principali.
Introduzione alle Classi e agli Oggetti in Java 1.
Controlli. ActionSheet e Alert Selezionare un’azione In molte situazioni è necessario fornire all’utente una scelta fra varie azioni disponibili. per.
Transcript della presentazione:

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

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 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 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 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, root OPCGroup Object, usati per organizzare gli OPCItem Object OPCItem 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 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 DCOM-based Custom Interface

OPC Data Access Specification Custom Interface Oggetto istanziato nel lato Client: OPCClient Object Oggetti istanziati nel lato Server, per ogni Client connesso: OPCServer Object OPCGroup Object OPCItem Object

OPC Data Access Specification Custom Interface OPC Client Componente Server Node 11 Item 1 Item 2 Item 3 Item 4 Node 2 Node 1 Root OPCServer OPCGroup OPCItem OPC Data Access Server

OPC e DCOM 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 IOPCDataCallBack OPC Client IOPCServerShutdown IOPCCommon IConnectionPointContainer OPC Server IOPCItemProperties [IOPCServerPublicGroups] [IOPCBrowseServerAddressSpace] [IPersistFile] IOPCItem Mgt IOPCGroupStateMgt [IOPCPublicGroupStateMgt] IOPCSyncIO OPC Group IOPCASyncIO2 IConnectionPointerContainer IEnumOPCItemAttributes IOPCASyncIO IDataObject

Scambio Informativo 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 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)

Attività di un OPC Data Access Client La prima attività eseguita dal Data Access Client è quella di creare l'oggetto OPCServer Il Cliente crea uno o più OPCGroups 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 Creazione di OPCItems scelta di eventuale modifica di codifica dati Modifica proprietà Items e/o Groups (es.ActiveState) Operazioni di Lettura/Scrittura Disconnessione può avvenire anche da parte del Server

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

Creazione di OPCGroups 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 OPCItems 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 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 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)

Operazioni di Lettura/Scrittura 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 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 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 Operazioni di Lettura Cache Device SI Synchronous Read SI Asynchronous Read Solo nelle vecchie specifiche Refresh 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"

Operazioni di Scrittura Operazioni di Scrittura Cache Device Synchronous Write Solo nella versione 3.0 SI Asynchronous Write Refresh 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)

Aggiornamento Automatico dei Dati 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 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 Il Server si comporta nel seguente modo: Calcola il valore dell'ampiezza del range fornito da EU Information Moltiplica il risultato per il valore della PercentDeadband (0-1) relativo ad un OPCGroup object legge i valori degli OPCItem object per ciascun OPCGroup secondo il RequestedUpdateRate Per 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 90 Aggiornamento Cache Aggiornamento Cache 80 0.1*(70-40)=3 |41-50|=9>3 0.1*(70-40)=3 50-45=5>3 70 60 50 40 30 1000 ms EU Type=Analog EU Information = {40,70} RequestedUpdateRate= 1000ms PercentDeadBand=0.1

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

OPC Data Access Specification Automation Interface 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

Interfaccia OPC Automation Differenze con l'Interfaccia Custom: OPCServer OPCGroups (collection) OPCGroup OPCItems 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à

Eventi dell'Interfaccia OPC Automation 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.

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

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

Eventi dell'OPCServerObject 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

OPCBrowserObject Sono disponibili metodi per permettere al client la "navigazione" nel namespace del Server ShowBranches ShowLeafs MoveToRoot MoveDown MoveTo MoveUp E’ istanziato dal metodo CreateBrowser (OPCServerObject), se il Server supporta il browsing

OPCGroupsCollectionObject 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   OPCGroupsCollectionObject Attributi   DefaultGroupIsActive DefaultGroupDeadband DefaultGroupUpdateRate Metodi   Add Remove RemoveAll GlobalDataChange. Il Server notifica al client: L'Id dell’oggetto OPCGroup relativo alla modifica Il numero di Items, i relativi Ids, valori, quality e timestamps Un parametro per specificare che l'evento è generato in corrispondenza ad una precedente: Refresh Richiesta di aggiornamento automatico dei dati (su cambiamento) Eventi    

OPCGroupObject 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 Attributi     OPCGroupObject Attributi IsActive. Questo attributo controlla lo stato attivo del gruppo. IsSubscribed. Questo attributo abilita le notifiche asincrone (CallBack) Non Esiste nell'Interfaccia Custom Ad 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 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 letti ServerHandles: 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 SyncWrite Scrive in uno o più items di un gruppo. Parametri: NumItems: Numero di item che devono essere scritti ServerHandles: 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 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 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 valori TransactionID: La transactionID specificata dal client. CancelID: Una transaction ID generata dal server. E’ fornita per permettere al client di cancellare la ‘transaction’.

OPCGroupObject AsyncRefresh AsyncCancel 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 Attributi IsActive IsSubscribed DeadBand UpdateRate     OPCGroupObject Attributi   IsActive IsSubscribed DeadBand UpdateRate SyncRead SyncWrite AsyncRead (AsyncReadComplete) AsyncWrite (AsyncWriteComplete) AsyncRefresh (DataChange e GlobalDataChange) AsyncCancel (AsyncCancelComplete) Metodi   DataChange (AsyncRefresh e Aggiornamento dati) AsyncReadComplete (AsyncRead) AsyncWriteComplete (AsyncWrite) AsyncCancelComplete (AsyncCancel)   Eventi      

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 entrambi blocking)

Esempio di Programmazione di un OPC Client con l'Interfaccia OPC Automation 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

OPC Compliance Test 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