# Zugriff auf einem OPC DA



## PhuongTran1983 (13 September 2016)

Hallo zusammen,

ich habe gestern einen Auftrag für eine Erweiterung eines alten Projektes bekommen. Bei einem Projekt haben wir einen HMI Rechner verwendet, in dem sich ein OPC DA Server und ein OPC DA Client befinden. Dabei hat man eine lokale OPC Verbindung.

Für die Erweiterung sollen wir eine SPS einrichten, welche auf den OPC Da Server im HMI Rechner über Netzwerk zugreifen kann. Dabei möchten wir nur die Daten auf dem Server einlesen. Danach werden diese Daten auf einen OPC UA Server zur Verfügung stehen lassen.

Dabei sehe ich einige Problematiken sowie Schwierigkeiten:

- bei der DCOM Konfiguration für die OPC Verbindung

- bei der Suche nach einer SPS, welche OPC DA Client Schnittstelle besitzt.

Ich habe danach an eine Lösung gedacht, dabei man eine Beckhoff SPS verwenden könnte.

- Erstellung eines .Net  Programms für OPC DA Client und lokale ADS-Verbindung
- Erstellung eines TwinCAT Programms für den OPC UA Server

Ich weiß nicht ob das sinnvoll ist. Ich habe zusätzlich eine Netzwerk-Topologie erstellt und hoffe dass es nachvollziehbarer für Euch ist. Wenn es Euch etwas aufgefallen ist oder Ihr andere Lösungen geben könntest, bin ich sehr dankbar.

VG Phuong


----------



## andy_l (14 September 2016)

Hallo Phuong,

falls Du unter .Net direkt auf den OPC UA Server zugreifen willst, gibt es jetzt von Microsoft etwas passendes:

https://github.com/OPCFoundation/UA-.NETStandardLibrary

Ich selbst habe das noch nicht verwendet. Habe es nur neulich gelesen. OPC ist bei meinen Anwendungen meistens zu lansgam, so dass ich schnellere Zugriffe (auf SIEMENS-SPSen) verwende.
Aber vielleicht wäre das etwas interessantes für Dich?

Gruß


----------



## PhuongTran1983 (14 September 2016)

Hallo Andy,

das ist Standard-Library in .NET für OPC UA. Ich brauche auf einen OPC DA zugreifen. Ich habe heute einen Beitrag von Siemens gefunden. Ich lese es gerade und denke es passt zu meinem Thema.

OPC Ua glaube ich nicht zu langsam für die Visualisierung. Es reicht mittlerweile für HMI sowie normale DB. 

VG Phuong


----------



## dolo280 (14 September 2016)

Guten Morgen Phuong,

hier ist eine schöne Übersicht von OPC DA Clients für .NET: http://www.opcconnect.com/dotnet.php#clients

Alternative schau Dir das hier mal an!: https://fistfulofbytes.com/opc-sample-code 

Gruß Dominik


----------



## erdmann (14 September 2016)

Hallo,

Danke für den Link 'fistfulofbytes'.
Der Satz unter der Überschrift 'OPC' beschreibt vollumfänglich auch meine 
persönliche Meinung. 

mfg

R.Erdmann


----------



## PhuongTran1983 (16 September 2016)

Hallo,

erstmals danke Dolo für den Links.

Ich habe ein anderes Problem. Ich möchte alle OPC Server auf dem Local- sowie Remote-Rechner identifizieren. Ich habe ein Beispiel gefunden, es funktioniert aber nicht.
http://stackoverflow.com/questions/4921943/opc-client-how-to-read-from-remote-opc-server

Hat jemand von Euch dieses Thema schon mal beschäftigt. Könnte mir eine Idee geben.

Schöne Grüße,

Phuong


----------



## shevek (16 September 2016)

Hallo,

da die Geschichte mit DCOM so eine Sache ist, ist das Ansprechen von OPC-Servern auf Remote-PCs ziemlich tricky. Ich hatte dieses Problem auch schon, und für mich war es damals am einfachsten zu lösen, indem ich einen OPC-Tunnel eingesetzt habe. Der Tunnel läuft auf den Remote-Rechnern als Client und auf dem lokalen Rechner als Server. Funktioniert ziemlich einfach, ist aber nicht kostenlos. In meinem Fall kommt die Software von Softing: http://industrial.softing.com/de/startseite.html Vielleicht ist das ja eine Lösung für Dich?

Viele Grüße

Michael


----------



## andy_l (16 September 2016)

Wie Michael schon schreibt, ist das nicht immer so einfach. Ich habe früher auch öfters OPC eingesetzt und mir einige Male schwer die Haare raufen müssen.  (vielleicht habe ich deswegen jetzt nicht mehr so viele)   

Wenn ich manchmal etwas testen wollte, habe ich gerne Tools von dieser Seite verwendet:
http://www.kassl.de

Insbesondere der OPC Explorer hat mir schon oft gute Dienste geleistet. Wenn der einen OPC Server nicht findet, dann ist er auch nicht da. So kann man sich das Suchen an der falschen Stelle oft ersparen.

Gruß

Andy_L


----------



## PhuongTran1983 (16 September 2016)

Hallo, 

es stimmt, dass die Geschichte mit DCOM nicht einfach ist. Ich habe schon mal viel Zeit gebraucht, um diese DCOM-Konfiguration zu schaffen. Ich hatte damals keine richtige Doku für dieses Thema gefunden.

Mein Problem ist aber anders. Ich benutze zwei API von Opc Foundation OPcNetApi.dll und OpcNetApi.Com.dll. Ich glaube, dass man irgendeine Funktion für OPC Server Browse wie bei Opc ua benutzen kann. D.h. das Programm kann OPC Server identifizieren und verbinden, wenn ein OPC Server vorhanden ist. 

Wenn mehr als einer Server vorhanden sind, kann man von der gefundenen Listen auswählen. Gleiches Problem mit den Items von Server ist es, wenn man zahlreiche Items hat. Es wäre schön, wenn man alle Items von den Server identifizieren kann. Dann man kann irgendwelcher Item auswählen wie man will. So kann man viel Zeit einsparen statt aufwändig per Hand alle Itemsnamen schreiben.

Ich versuche mal weiter zu schaffen. Danke Euch für die Infos nochmals und falls Ihr eine Idee hat, könntet Ihr bitte schreiben. Ich bin immer dafür dankbar.

Schöne Grüße,

Phuong


----------



## golem (22 Februar 2017)

Hallo,

falls es noch jemanden interessiert, eine Gut OPC DA implemetierung für .Net gibt es unter https://github.com/titanium-as/TitaniumAS.Opc.Client .
Habe ich seit 2 Monaten im Einsatz und funktioniert super.

Gruß Denis


----------

