# OPC Server in C#



## Marc_Quark (22 Dezember 2009)

Hallo zusammen,

ich habe mir überlegt in C# einen eigenen OPC server zu programmieren, welcher die Variablen erstmal nur von einer Textdatei bekommen soll. (Um zu schauen ob es überhaupt funktioniert).
Später sollte dieser Dann Gewichtswerte von einer Waage bereitstellen.
Ich habe noch nicht allzu viel mit OPC servern gearbeitet habe es jedoch schon hinbekommen einen Client zu schreiben, welcher mit einem Beckhoff OPC server kommuniziert.
Leider habe ich keine Ahnung wie ich die Geschichte, den Server zu programmieren, angehen soll. 
C# programmierung ist nicht das Problem. Nur habe ich eben wenig Ahnung von OLE und OPC...

Danke schon mal im vorraus

MfG,
Marc


----------



## Rainer Hönle (22 Dezember 2009)

Schon mal hier geschaut?


----------



## Marc_Quark (22 Dezember 2009)

Jupp, hab da schon geschaut.
Wie gesagt, mir fehlt  gerade irgendwie ein Ansatz für mein Problem...
Auf jeden fall hatte ich auf der Seite nix gefunden, finde diese auch etwas unübersichtlich


----------



## bike (22 Dezember 2009)

Also auf der Seite die dir Rainer verlinkt hat gibt es doch einige Beispiele und jede Menge Doku.
Wo da das Problem ist, kann ich nicht nachvollziehen

bike


----------



## Marc_Quark (22 Dezember 2009)

Mein Problem ist, dass ich schon zig sachen durchgelesen habe, aber bei den meißten Sachen nur Bahnhof vertehe. 

Naja, trotzdem danke...


----------



## RobiHerb (23 Dezember 2009)

*OPC und C#?*

Als man OPC erfand, war Microsofts COM Technologie der "Stein der Weisen". Zusammen mit ActiveX und derartigen Technologien meinte man die Lösung gefunden zu haben, um Daten zwischen Geräten allgemeinster Art austauschen zu können.

Das ist mittlerweile mehr als 10 Jahre her und die Technologie schreitet voran (im SPS Bereich ein wenig langsamer). Ein Grund war die immense Lernkurve, die das eigene Erstellen von COM Clients und Servern erforderte. Nur Bahnhof zu verstehen ist also nicht so selten, wenn man neu davor steht.

Du fragst aber nach C# und OPC. Das ist ein wenig daneben, C# und damit .NET sind modernere Technologien und hier ist zum Datenaustausch WCF angesagt. Auch hier ist der Einstieg nicht gerade trivial. Es gibt ein super Buch hierzu von Juval Löwi. OPC in .Net ist etwa so wie MS-DOS unter Windows laufen zu lassen.

Wie gesagt, WCF ist nix für das erste eigene Projekt, auch noch nicht für das 10.!


----------



## Rainer Hönle (23 Dezember 2009)

Meinst du dieses hier?


----------



## RobiHerb (24 Dezember 2009)

*Stimmt ...*

Der Link stimmt, Juval Löwy hat übrigens noch ein anderes Buch zum prinzipiellen .NET Verständnis geschrieben:

http://www.amazon.de/Programming-NET-Components-Juval-Löwy/dp/0596102070/ref=pd_sim_eb_15

Der Link wird ggf. nicht direkt gehen, also Buch heisst Programming .NET Components. Sein Name schreibt sich immer mal ein wenig verschieden, mal Amerikanisch, mal Deutsch, eigentlich kommt er aus Österreich.

Juval ist einer der ursprünglichen Architekten von .NET und bringt das ganze sehr gut im Gesamtkonzept rüber. Im Januar oder Februar macht er auch eine einwöchige (teure!) Schulung in Europa zu dem Thema. Mitte Dezember war er bei der .NET User Group und Microsoft/D in Frankfurt/Main zu Gast.

Um zum Ursprung zurück zu kommen, C# (-NET, WCF) und OPC ist eine schlechte Kombination, zwischen den Konzepten liegen Welten.


----------



## Marc_Quark (24 Dezember 2009)

Danki Robi 

Endlich mal eine Antwort mit der ich was anfangen kann...


----------



## beta (24 Dezember 2009)

RobiHerb schrieb:


> Um zum Ursprung zurück zu kommen, C# (-NET, WCF) und OPC ist eine schlechte Kombination, zwischen den Konzepten liegen Welten.



Kannst Du da mal etwas konkreter werden. Warum ist das eine schlechte Kombination? 
Also aus eigener Erfahrung kann ich Dir da nicht folgen. Gerade die neue UA-Spezifikation lässt sich gerade mit der Kombination WCF und .NET sehr gut umsetzen. Ob mit oder ohne .NET, die ganze Übertragung von OPC-UA basiert auf WCF oder den jeweiligen OS-Varianten. Da kommst du sowieso nicht dran vorbei, und mit einer .NET-Sprache lässt sich WCF meiner Meinung nach im Moment am besten umsetzen.

 @Marc_Quark
Nur mit der reinen Spezifikation wirst du wahrscheinlich dich sehr schwer tun, gerade wenn du da noch nicht viel gemacht hast. Alles was du zusätzlich zum Erstellen eines OPC-Servers brauchst kannst du nur als OPC-Foundation-Member herunterladen. Aus meiner Sicht ist es ohne diese Hilfsmittel nicht mehr im vernünftigen Rahmen hinzubekommen.

Mein Tip: Besorge dir einen fertigen OPC-Server und/oder ein fertiges OPC-Toolkit, oder kommuniziere direkt mit der SPS mittels einem SPS-Kommunikationstreiber. Jetzt oder in naher Zukunft kommen von den jeweiligen Herstellern auch schon OPC-UA-Produkte raus. Für das Geld, was die Lizenz kostet kannst du es nicht selbst programmieren.

Gruß Beta


----------



## Marc_Quark (25 Dezember 2009)

Danke,
Da es sich für mich nicht lohnt, wegen einem Server der gemacht werden muss Mitglied in der OPC Foundation zu werden werd ich es wohl dabei
belassen und auf einen fertigen Server zurückgreifen.

Wünsch euch allen noch Schöne und besinnliche Feiertage.

Gruß, Marc


----------



## david.ka (8 Januar 2010)

ich habe schon einige kleine OPC Server damit programmiert.
http://www.gray-box.net/

bis 100 Variablen sind die Sourcen kostenlos einsetzbar.


----------

