WinCC OPC Variablen mit Excel auslesen

matki

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Liebe Gemeinde,

Ich habe eine WinCC(v7.2) Station und möchte gerne interne Variablen die in dieser angelegt sind per OPC in ein Exceldokument einlesen.
Mache ich dies lokal funtkioniert das erstmal ganz gut mit dem Beispielprojekt das in der WinCC Onlinehilfe hinterlegt ist. Jetzt möchte ich aber das ganze von einem Remote PC aus versuchen.
Ich habe auf dem Remote die gleiche Excel version wie bei der WInCC Staion (Excel 2003) binde da nun meine sopcdaauto.dll ein (im VB Editor unter Verweise) die ich von der WinCC Staion kopiert hab und starte das selbe Markro in Excel.

Dann kommt folgende Fehlermeldung: "Lizenzierungsinformationen für diese Komponente nicht gefunden. Sie verfügen nicht über die erforderliche Lizenz, um dieses Funktionsmerk in der Entwurfsumgebeung zu nutzen zu können.

Starte ich nun im VB Editor das Makro starte kommt eine andere Fehlermeldung und zwar: "Objeterstellung durch active-X-Komponente nicht möglich"

Bei der ersten Fehler habe ich keinen blassen schimmer warum diese kommt. Mit der zweiten könnte ich mir noch vorstellen das es was mit den Com einstellungen zu tun hat. Ich hab jetzt schon zig Stunden verbraucht das Probelm zu lösen komme aber um keinen Millimeter weiter.

Folgende Einstellunge habe ich schon vorgenommen.

1.Firewall beider Pc's aus
2.Benutzerrechte passen auch (gleicher Benutzer mit gleichem PW) Dateifragegabe usw funktioniert tadellos
3.in den Comstettings bzw bei der Comsicherheit bei den Zugriffsberechtigungen und Start- bzw. Aktivierungsberechtigungen den angemeldeten Benutzer eingetragen mit Vollzugriff auf alles (lokaler Zugriff, Remote Zugriff, Lokaler Start, Remotestart, lokale Aktivierung, Remoteaktivierung auf Zulassen) und im zweiten Schritt auch noch den Benutzer "Jeder" mit Vollzugriff ausgestatet. Dies auf der Wincc Staion und dem OPC Client
4. in der DCom Konfiguration(der WinCC Station) unter den Eigenschaften des OPC.ServerWinCC bei Sicherheit in den Start- und Aktivierungsberechtigungen, den Zugriffsberechtigungen und den Konfigurationsberechtigungen auch Vollzugriff des Benutzer "Jeder" eingestellt

Irgendwer noch Idee ich lauf nämlich bald noch die Wände hoch hier.


ps. WinCC Station ist ein IPC mit Win7 64bit und der Client ein Win7 32bit, Client mit Win 7 64 Bit auch schon ausprobiert selbe Fehlermeldungen
pps.: mit dem OPC Scout kann ich vom Remote pc aus die Variablen sehen lesen und schreiben.

ppps. ich poste mal nich den code

Code:
Option Explicit

Option Base 1


Const ServerName = "OPCServer.WinCC"


Dim WithEvents MyOPCServer As OPCServer

Dim WithEvents MyOPCGroup As OPCGroup

Dim MyOPCGroupColl As OPCGroups

Dim MyOPCItemColl As OPCItems

Dim MyOPCItems As OPCItems

Dim MyOPCItem As OPCItem


Dim ClientHandles(1) As Long

Dim ServerHandles() As Long

Dim Values(1) As Variant

Dim Errors() As Long

Dim ItemIDs(1) As String

Dim GroupName As String

Dim NodeName As String


'---------------------------------------------------------------------

' Sub StartClient()

' Purpose: Connect to OPC_server, create group and add item

'---------------------------------------------------------------------

Sub StartClient()

' On Error GoTo ErrorHandler

'----------- We freely can choose a ClientHandle and GroupName

ClientHandles(1) = 1

GroupName = "MyGroup"

'----------- Get the ItemID

NodeName = "OPC-Server

ItemIDs(1) = "testvar"

'----------- Get an instance of the OPC-Server

Set MyOPCServer = New OPCServer

MyOPCServer.Connect ServerName, NodeName


Set MyOPCGroupColl = MyOPCServer.OPCGroups

'----------- Set the default active state for adding groups

MyOPCGroupColl.DefaultGroupIsActive = True

'----------- Add our group to the Collection

Set MyOPCGroup = MyOPCGroupColl.Add(GroupName)


Set MyOPCItemColl = MyOPCGroup.OPCItems

'----------- Add one item, ServerHandles are returned

MyOPCItemColl.AddItems 1, ItemIDs, ClientHandles, ServerHandles, Errors

'----------- A group that is subscribed receives asynchronous notifications

MyOPCGroup.IsSubscribed = True

Exit Sub


ErrorHandler:

MsgBox "Error: " & Err.Description, vbCritical, "ERROR"

End Sub


'---------------------------------------------------------------------

' Sub StopClient()

' Purpose: Release the objects and disconnect from the server

'---------------------------------------------------------------------

Sub StopClient()

'----------- Release the Group and Server objects

MyOPCGroupColl.RemoveAll

'----------- Disconnect from the server and clean up

MyOPCServer.Disconnect

Set MyOPCItemColl = Nothing

Set MyOPCGroup = Nothing

Set MyOPCGroupColl = Nothing

Set MyOPCServer = Nothing

End Sub


'---------------------------------------------------------------------

' Sub MyOPCGroup_DataChange()

' Purpose: This event is fired when a value, quality or timestamp in our Group has changed

'---------------------------------------------------------------------

'----------- If OPC-DA Automation 2.1 is installed, use:

Private Sub MyOPCGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)

'----------- Set the spreadsheet cell values to the values read

Range("B2").Value = CStr(ItemValues(1))

Range("C2").Value = Hex(Qualities(1))

Range("D2").Value = CStr(TimeStamps(1))

End Sub


'---------------------------------------------------------------------

' Sub worksheet_change()

' Purpose: This event is fired when our worksheet changes, so we can write a new value

'---------------------------------------------------------------------

Private Sub worksheet_change(ByVal Selection As Range)

'----------- Only if cell "B3" changes, write this value

If Selection <> Range("B3") Then Exit Sub

Values(1) = Selection.Cells.Value

'----------- Write the new value in synchronous mode

MyOPCGroup.SyncWrite 1, ServerHandles, Values, Errors

End Sub
 
Remote OPC ist immer fummelig, aber wenn es mit einem anderen OPC-Client funktioniert sollten die Sicherheitseinstellungen schonmal stimmen.

Was ich problematisch finde, ist dass du die sopcdaauto.dll einfach herüberkopiert hast. Normalerweise muss diese registriert werden. Wie das geht findet man zumindest zur originalen opcdaauto.dll (ohne s, die dll ist von Siemens). Ob das für die Siemens dll auch so gilt weiß ich nicht.
Wenn du die OPC Core Components nachinstallierst, sollte auch die opcdaauto.dll vorhanden, und hoffentlich korrekt registriert sein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Idee mit dem Wrapper hatte ich auch schon,
hab mir heute schon die opc-core-components-3.00.105-release- von der OPC Foundation runtergeladen hab aber nach der installation der "OPC Core Components Redistributable (x64) 105.1" und der "OPC Core Components SDK 105.1" aber keine opcdaauto.ddl auf dem Rechner gefunden. Jetzt hab ich grad noch "opc-da-automation-interface-sample-code-2.02.5.30-release-" gefunden evtl ist sie ja hier dabei ich teste gleich mal.

Auf alle Fälle danke schon mal für deine Hilfe

€: ok Fortschritt erkennbar ich habs jetzt nicht hinbekommen die opcdadauto.dll auf meinem Testrechner zu installieren. Aber ich hatte noch ne VM rumliegen mit Simatic Net 8.2 drauf, da excel installiert mit dem Siemens wrapper gleiches Problem dann auf dem Standart OPC Wrapper der offensichtlich bei einer Simatic Net-Installation mitdabei ist und ausprobiert -> geht wie geschmiert. Da ich nun Siamtic-Net ungern auf dem Remote client installieren möchte folgende frage

-> gibts irgendwo ne Anleitung für Dummys wie man die opcdaauto.dll richtig installiert bzw. registriert ? (ich mein diese datei runterladen dann diese datei ausführen .... usw, tun wir einfach mal so als ob ich mich nicht auskennen würde...)

2€: jetzt gehts, Lösung nicht schön ich versteh sie auch nicht wirklich aber mir egal ich lass es erstmal so

Das Ganze mit Adminrechten
1. opc-core-components runtergeladen und installiert
2. die opcdaauto.dll von einem anderen rechner kopiert in den System32 ordner
3. Registriert mit cmd eintrag -> REGSVR32 "%WINDIR%\System32\OPCDAAuto.dll"
4 . und abschließend halt im Vb Projekt auf die OpcDaAuto.dll verwiesen nicht auf die Siemens dll
5. Fertig und es geht jetzt

Abschließend halt die ganzen Rechte von Jeder auf den bestimmten Benutzer umgestellt Firewall wieder ein +Regeln für Excel eingefügt

Danke nochmal Thomas_v2.1 für deinen Anstoß hat mich auf alle Fälle auf den richtigen Weg gebracht


mfg
Matki
 
Zuletzt bearbeitet:
Zurück
Oben