Upload
domenico-lorusso
View
243
Download
11
Embed Size (px)
Citation preview
http://www.opcfoundation.org/
Esempio di OPC Data Access AutomationCreazione di un OPC Client
L’OPC Client è stato realizzato:in Visual Basic® 6.0usando la libreria OPC Automation 2.0 messa a disposizione
dalla OPC Foundationin Progetto -> Riferimenti deve essere selezionata la libreria
“OPC Automation 2.0”.Implementa solo servizi (lettura/scrittura) sincroniNon realizza ad esempio l’aggiornamento automatico
dei dati
Esempio di OPC Data Access AutomationCreazione di un OPC Client
Esempio di OPC Data Access AutomationCreazione di un OPC Client
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.
Passo 1: Raccolta delle Informazioni sugli OPC Servers disponibili in un Nodo
GetOPCServers (Optional Node As Variant) As VariantMetodo dell’Oggetto OPCServerRestituisce 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 OPCServerOPCServerList.ClearNodeServerName = Text2.TextAllOPCServers = AnOPCServer.GetOPCServers(NodeServerName)For i = LBound(AllOPCServers) To UBound(AllOPCServers) OPCServerList.AddItem AllOPCServers(i) Next i
Note:
OPCServerList è definita come ListBox
AllOPCServers è locale di tipo Variant
Passo 2: Connessione con l’OPC Server Selezionato
Connect (ProgID As String, Optional Node As Variant)Metodo dell’Oggetto OPCServerViene 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
Dim ConnectedServerName As StringDim NodeServerName As Variant On Error GoTo MostraErroriConnect Set ConnectedOPCServer = New OPCServer 'Viene istanziato un oggetto OPCServer ConnectedServerName = OPCServerName.Text NodeServerName = Text2.Text ConnectedOPCServer.Connect ConnectedServerName, NodeServerName GoTo SaltaErroriConnect MostraErroriConnect: Set ConnectedOPCServer = Nothing Call MostraErrori("Connect", Err.Number)
SaltaErroriConnect: If Not ConnectedOPCServer Is Nothing Then form1.Caption = "Server Connesso"
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 OPCServerForm2.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 3: Visualizzazione delle Proprietà del Server a cui ci si è Connessi
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
Bisogna prima creare l'oggetto OPCGroups collection (dall'oggetto OPCServer)
Add(Optional Name As Variant) As OPCGroup:Metodo dell’Oggetto OPC GroupsCrea un nuovo oggetto OPCGroup e lo aggiunge alla
collezione.Name è il Nome del gruppo. Il nome deve essere
univoco. Se non viene fornito nessun nome il server ne genera uno.
Il gruppo eredita i valori di default (o quelli impostati come default nell'OPCGroups collection): es. Gruppo attivo, deadband 0
Dopo che un gruppo è aggiunto i suoi attributi possono essere modificati (Es UpdateRate; Default=1000 msec.)
Passo 4: Creazione di un Gruppo
Dim ConnectedOPCServer As OPCServerDim ConnectedServerGroup As OPCGroups
Set ConnectedServerGroup = ConnectedOPCServer.OPCGroups
Set ConnectedGroup = ConnectedServerGroup.Add(OPCGroupName.Text)ConnectedGroup.UpdateRate = Val(GroupUpdateRate.Text)ConnectedGroup.IsSubscribed = TrueConnectedGroup.IsActive = TrueConnectedGroup.DeadBand = 10
Passo 4: Creazione di un Gruppo
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 “foglie” (sottoinsieme di Items) e “nodi”. Se è di tipo flat vengono mostrati unicamente gli Item.
L'oggetto OPCBrowser deve essere creato utilizzando un metodo dell'OPCServer object.
CreateBrowserMetodo dell’Oggetto OPC ServerCrea un oggetto OPCBrowserVisualizza l’organizzazione del Server, che può essere di tipo
gerarchico o flatL’Oggetto OPCBrowser ha un attributo (Organization) che
restituisce il tipo di organizzazione interna (OPCHierarchical o OPCFlat).
ShowLeafsMetodo dell’Oggetto OPCBrowserVisualizza i nomi delle foglie relativi alla posizione corrente
della "navigazione" (nel caso in cui l’organizzazione del server sia di tipo “gerarchica”).
Passo 5: Creazione Browser & Esplorazione Items Disponibili
Dopo aver selezionato un Gruppo è possibile aggiungervi un Item
tramite Item Collection:
OPCItems.
Passo 6: Aggiunta di un Item nel Gruppo
Dim mygroup As OPCGroup
Set OneOPCItem = mygroup.OPCItems.AddItem(Text1.Text, mygroup.ClientHandle)
AddItem (ItemID As String, ClientHandle As Long)Metodo dell’Oggetto OPCItemsCrea un nuovo oggetto OPCItem e lo aggiunge alla collezione.ItemID: nome dell’Item selezionato da aggiungere.ClientHandle identificativo interno al client
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 OPCItemLegge un Item dal Server, o dalla cache o dal device (0 o 1)Legge l’ultimo valore letto dal ServerVengono letti: Value, Quality, TimeStampGli attributi che sono restituiti sono tra loro sincroni
Passo 7: Lettura Proprietà Items
Passo 7: Lettura Proprietà Items Form3.Timer1.Interval = Grp1.UpdateRate
'Mostra gli attributi degli items appartenenti alla collezione del gruppo selezionato. L’aggiornamento e’ periodico (update rate)
For i = 1 To ItemCount
Set Itm = itms.Item(i) 'Prendi l'item i-esimo della collezione.
Itm.Read (1) 'Viene invocato il metodo Read sull'oggetto OPCItem corrente.
Form3.ListView1.ListItems.Add 'Aggiungiamo al listview le informazioni seguenti
Form3.ListView1.ListItems.Item(i) = Itm.ItemID
Form3.ListView1.ListItems.Item(i).SubItems(1) = Itm.Value
Form3.ListView1.ListItems.Item(i).SubItems(2) = Itm.CanonicalDataType
Form3.ListView1.ListItems.Item(i).SubItems(3) = Itm.Quality
Form3.ListView1.ListItems.Item(i).SubItems(4) = Itm.TimeStamp
Next i
Selezionando un Item è possibile modificarne il valore
Write (Value As Variant)Metodo dell’Oggetto OPC ItemScrivere il valore Value nel serverNota Bene: il valore viene scritto nel Device
Passo 8: Scrittura Proprietà Items
Remove (Count As Long, ServerHandles() As Long, ByRef Errors() As Long)Metodo dell’Oggetto OPCItemsRimuove uno o più OPCItem contenuti nella collezioneCount: il numero di items che devono essere rimossi.ServerHandles(): array di identificatori usati dal server per gli item
processatiByRef Errors() array di Long che indicano il successo delle operazioni
effettuate sugli items
Passo 9: Eliminazione Item
Passo 10: Eliminazione Gruppo
ConnectedServerGroup.Remove (List2.List(List2.ListIndex))List2.ClearListView2.ListItems.ClearCommand2.Enabled = FalseCommand4.Enabled = FalseCommand3.Enabled = FalseFor i = 1 To ConnectedServerGroup.Count List2.AddItem (ConnectedServerGroup.Item(i).Name)Next i
Remove(ItemSpecifier As Variant)Metodo dell’Oggetto OPCGroupRimuove l’OPCGroup specificatoItemSpecifier: nome di un
OPCGroup.
Passo 11: Disconnessione dal Server
Dim ConnectedOPCServer As OPCServerConnectedOPCServer.Disconnect
DisconnectMetodo Oggetto OPCServerDisconnette il client da un OPC Server.