# OPC-Standard



## Red-Sh4nks (9 April 2010)

Hallo Hallo!

Ich habe inzwischen ein Programm erstellt, welches
Eingänge, Ausgänge, Merker und Datenbausteine
von einer CPU über Libnodave liest, und diese anschließend
in eine Datenbank schreibt.

Sieht ganz gut aus und funktioniert auch toll. Mein
Professor sagte aber, dass er als letzten Schliff diese
Daten noch gerne auf den OPC-Standard aufbereitet hätte.

Wie sehen diese Daten auf dem OPC-Standard aus? 

In meiner Datenbank wird dann beispielsweise E0.2 mit dem
Zustand "1" gespeichert. Wie würde das auf dem OPC-Standard
aussehen und wie bringe ich diesen Eingang auf den OPC-Standard?

Ich danke für jede Hilfe im vorraus 

lg Marco*


----------



## Dr. OPC (23 April 2010)

Nach dem OPC Standard besteht ein Wert immer aus drei Teilen "Wert", "Qualität" und "Zeitstempel". Vielleicht meint dein Prof. das?

Oder sollst Du den Wert über OPC Standard holen? Dann wären die Zusatzinfos auch dabei. Die Datenbanktabelle benötigt dann zusätzliche Spalten um diese Info aufzunehmen.


----------



## Red-Sh4nks (27 April 2010)

Aus drei Teilen? Interessant...
Mal sehen ob ich rausbekomme:
welches Format, welches Trennzeichen,
welche Datei,...

Melde mich ;-)


----------



## david.ka (30 April 2010)

Red-Sh4nks schrieb:


> Aus drei Teilen? Interessant...
> Mal sehen ob ich rausbekomme:
> welches Format, welches Trennzeichen,
> welche Datei,...
> ...



nein, es sind definitiv mehr sachen die man beachten muss...

du kannst dein proggy auch als richtigen opc server anbieten.
ganz einfach und zum teil kostenlos (ich glaube bis 100 Tags kostenlos) bekommst du es damit hin:
http://gray-box.net/daawrapper.php


----------



## Ticeimmobby (30 April 2010)

*OPC Standard*

und das PC-Programm, das mit dem OPC-Server arbeitet willst/kannst du selber erstellen ? Hast du an deiner Steuerung eventuell eine Visu ProTool oder WinCCFlexibel. Am Besten diese als PC-Runtime oder auf einem Multipanel ?Wenn ja, dann könnte diese auch die Aufgabe übernehmen ... GrußLL


----------



## Dr. OPC (2 Mai 2010)

Also, du liest Daten aus einer SPS und schreibst die Werte in eine Datenbank. 

Das ist erstmal aus OPC-Sicht eine "Client-Funktionalität". Also ein OPC Client könnte quasi das selbe machen, er würde die Daten von einem OPC Server lesen (der sie aus der SPS holt) und dann in die Datenbank schreiben. 

Ein OPC Client würde aber nicht nur den "Wert" lesen sodern auch die "Qualität" und den "Zeitstempel". Auch diese Daten könnten in die Datenbank geschrieben werden. Eventuell meint dein Prof. genau dies.

Weiterhin würde ein OPC Client die Daten nicht zyklisch lesen sondern sich beim Server nur für Datenänderungen anmelden. Dann bekommt der Client immer nur dann Daten wenn sie sich geändert haben, sonst aber nicht. Dadurch kann die Kommunikationslast stark reduziert werden. Auch in der Datenbank müssten viel weniger Werte gespeichert werden. Vielleicht meinte der Prof. genau dies.

Vielleicht fragst du auch einfach nochmal nach.


----------



## Red-Sh4nks (2 Mai 2010)

Danke Dr. OPC!

Eine Frage zu dieser "Client-Funktionalität"

Aktuell:
Ich lese die Daten direkt von der SPS und schreibe
sie in eine Datenbank. (Als Alternative solange der
OPC-Standard nicht funktioniert)

Ziel:
Ich lese die Daten direkt von der SPS und bereite
sie auf den OPC-Standard auf.

Das Ziel wäre dann doch eine "Server-Funkionalität", oder
lieg ich da falsch?

lg Marco*


----------



## Dr. OPC (3 Mai 2010)

Ja wenn das so ist, ich bin davon ausgegangen dass das "Abfüllen der Datenbank" die Kernfunktion ist. Sorry, ein Mißverständnis.

Um einen Server nach OPC-Standard zu schreiben, muss man schon eine Menge Code schreiben. Denn "nur ein bischen" von OPC implementieren geht nicht, dann ist es nähmlich kein Standard. Ein OPC Server MUSS alle "mandatory" Interfaces implementieren.

Daher verwenden die Meisten ein OPC-Server-Toolkit, da ist die OPC Seite schon fertig implementiert und man muss (lediglich) noch die Datenanbindung zur Datenquelle hinzuimplementieren. Je nach Toolkit ist das nicht so schwierig und wird einfach gesagt auf eine Lese/Schreib-Operation abgebildet, die dann einen "Treiber-Aufruf" oder eventuell bei dir die entsprechende "Libnodave-Funktion" aufruft.

Zusätzlich zur Datenanbindung muss ein OPC Server auch einen Adressraum anbieten. Dies ist eine (meist) hierarchische Darstellung aller möglichen erreichbaren Datenpunkte, die der Server so anbietet. Ein Client kann sich mit den Browse-Funktionen durch diesen Adressraum bewegen und sich die Datenpunkte aussuchen, die er dann Lesen/Schreiben möchte. Anders gesagt es ist eine (hierachische) Liste aller möglichen Datenpunkte. Auch das ist in dem Toolkit schon drin, muss allerdings von dir "befüllt" werden. Du musst dann überlegen woher du diese Daten bekommen kannst.


----------



## Red-Sh4nks (4 Juni 2010)

*Hier ein nützlicher Link*

http://help.sap.com/saphelp_di471/helpdata/DE/ac/fcca47c955ae44b4a852ad2667995e/frameset.htm

Hat mir sehr geholfen bei meiner Diplomarbeit


----------

