# Windows-Dienst OPC-Zugriff ermöglichen



## seeba (26 August 2006)

Guten Morgen,
ich will meine #SCADA Data Provider gerne als Dienste laufen lassen, aber irgendwie krieg ich 'ne Zugriffsverweigerung beim OPC Zugriff. 
Muss ich an den Sicherheitseinstellungen irgendwo rumfummeln? Bringt auch nicht den Dienst mit einem Administratorkonto usw. zu starten. :-(

Vielleicht weiß ja jemand etwas.

Gruß & Dank,
Sebastian


----------



## afk (26 August 2006)

Hallo Seeba,

die Einstellungen für die Zugriffsrechte auf den OPC-Server findest Du sowohl unter Win2k als auch unter XP mit "dcomcnfg.exe" in Start->Ausführen. Da kannst Du die Zugriffsrechte für COM/DCOM global und für die einzelnen "Out-of-Process"-Server einstellen, also auch für den OPC-Server. 

Wenn Du mit einem "normalen" Programm Zugriff auf den OPC-Server bekommst, mit dem Systemdienst nicht, dann kann das daran liegen, daß einige (die meisten ?) OPC-Server unter dem Account des Interaktiven Users laufen, unter dem auch ein Anwendungsprogramm läuft, Systemdienste aber üblicherweise nicht. Die Rechte für den Zugriff von Deinem Systemdienst auf die Schnittstellen des OPC-Servers und umgekehrt müssen entsprechend eingestellt werden.

Schau auch mal ins EventLog, da findest Du evtl. entsprechende Einträge von der Quelle DCOM, die Dir näheren Aufschluß über den Grund der Zugriffsverweigerung liefern.

Bei mir funktioniert der Zugriff von Systemdiensten auf OPC-Server, ich kann aber erst wieder nächste Woche nachschauen, was ich dafür im Detail gemacht habe, aus dem Gedächtnis bekomme ich es nicht mehr zusammen, ist zu lange her ...  


Gruß Axel


----------



## seeba (26 August 2006)

afk schrieb:


> Bei mir funktioniert der Zugriff von Systemdiensten auf OPC-Server, ich kann aber erst wieder nächste Woche nachschauen, was ich dafür im Detail gemacht habe, aus dem Gedächtnis bekomme ich es nicht mehr zusammen, ist zu lange her ...


Hallo Axel,
wäre schön, wenn du mich dann nächste Woche nochmal belehren könntest.

Ich danke dir und wünsche ein schönes Wochenende.

Sebastian


----------



## seeba (29 August 2006)

Darf ich nochmal nachfragen? Bin selbst aber leider auch noch nicht zum Rumspielen gekommen.


----------



## afk (29 August 2006)

Hallo Seeba,

ich habe meine Dienste immer mit Delphi als Win32-Application implementiert, daher weiß ich nicht, ob's bei VS unter .net auch so läuft:

Der Service läuft in einem eigenen Thread, daher müssen beim Start des Threads (in  Delphi im ServiceStart-Event) die API-Funktion CoInitializeEx und beim Beenden (ServiceStop-Event) CoUninitialize aufgerufen werden, um die COM-Library für den Thread zu initialisieren.

Wenn das nicht hilft, dann kannst Du noch per CoInitializeSecurity die Zugriffsrechte auf Deinen Prozess per Code einstellen, die Zugriffsrechte für den OPC-Server mußt Du im Programm dcomcnfg.exe einstellen.

Ich hoffe, daß Dir das ein wenig weiter hilft ...


Gruß Axel


----------



## Thorsten.Brach (7 September 2006)

Hallo ,


mit dem COM/DCOM hab ich mir ach mal einen gemacht in VB.NET...

Hatte damals bei OPCLabs ne Anleitung auf der Seite gefunden, was man wie und wo einstellen muss... 

Dort gibts auch einen einfach OPCDA-Client - heißt glaub ich EasyDA oder so...

wenn das nicht klappt, dann gibt es von Softing auch einen OPC-Tunnel um der COM/DCOM Problematik aus dem weg zugehen...

Wenn Du mit Codesys arbeitest, dann gibt es noch den Trick, dass Du über den Codesys-Gateway auf den OPC-Server zugreifst... 

Evtl. musst Du im ConfigOPC eine Multi-PLC Konfiguration anlegen, wenn du an mehrere Server willst...

hoffe es hilft ?


mfg Thorsten


----------

