OPC Client (Excel & VBA)

WinCCPapst

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Leute,

ich hab folgendes Problem....

Habe einen OPC Server (Siemens) und greife mit Excel und VBA auf Variablen zu. Funktioniert soweit.

Wie kann ich umsetzen, dass bei Tastendruck am TP (vor Ort) in Excel automatisch eine Messwertarchivierung erfolgt.

Kann ich im Client Werte und Variablen automatisch anzeigen bzw. aktualisieren lassen (bei Wertänderung)?

Grüße und vielen Dank vorab für jegliche Ideen...
 
Du kannst doch im Excel ein Script laufen lassen, was bei einer Wertänderung (deine Variable hinter dem Tastendruck) die Aufzeichnung startet.
Thomas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mein Problem ist es diese Wertänderung zu erkennen.

Die Werte im Excel OPC- Client aktualisiere ich per Steuerelement mit nem Script und der Funktion:SynchRead.

Wie kann ich die Items vom OPC- Server bei Wertänderung im Client aktualisieren?
 
Das mit der Werteaktualsierung geht normal automatisch. Da musst du nichts machen. So ist es zumindest bei dem OPC-Server denn wir verwenden.
 
Ne, is klar....

Hab mich miserabel ausgedrückt, sorry

Die Wertänderung bekommt der OPC- Server natürlich mit.

Nur mein Client nicht, da ich momentan mit der Funktion SyncRead die Werte vom OPC-Server abhole.

Ich würde jedoch gern, ohne den SyncRead anzustoßen, direkt die Werte des Servers in Zellen meines Excel-Clients anzeigen lassen.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Als erstes must du die Gruppe mit "WithEvents" deklarieren
Code:
Private WithEvents MyGroup As OPCGroup
dann legst du die Gruppe ganz normal an und schaltest sie erstmal "inaktiv"
Code:
'create group object
  Set MyGroup = MyServer.OPCGroups.Add()
'disable callbacks
  MyGroup.IsActive = False
  MyGroup.IsSubscribed = False
anschließend fügst du die Items, die du "beobachten" möchtest, in die Gruppe ein, ganz normal wie sonst auch
Code:
Call MyGroup.OPCItems.AddItems(bla, bla, ein Haufen Parameter)
danach schaltest du die Gruppe "scharf"
Code:
' enable the callbacks
    MyGroup.IsActive = True
    MyGroup.IsSubscribed = True
da die Gruppe mit den Schlüsselwort "WithEvents" deklartiert wurde, gibt es einen EventHandler für das Gruppen-Objekt. Hier ruft der Server immer dann rein, wenn er dir neue Werte mitteilen möchte
Code:
Private Sub MyGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)
' ToDo
' abfüllen der Werte in die richtigen Excel-Cells
End Sub
 
Zurück
Oben