# [Beginner] S7 Daten auslesen -- Allgemeines Problem



## squarefan (10 Juli 2009)

Hi@all,

bin neu hier im forum und schon einiges durchgelesen... leider hab ich was plcs etc. angeht nicht sehr viel ahnung. Bin programmierer und soll fuer meinen Vater Werte aus seiner S7 rausziehen und dann in einem Webportal weiter aufbereiten

Setup:
Simatic S7-300 CPU313C incl. Touchpanel
Windows XP mit WINCC flexible fuer Visualisierung
MPI Kabel RS232 <-> RS232-USB (Verbindungsaufbau und WinCC funktionieren einwandfrei)

Nach dem was ich online gefunden habe waere fuer einen "handler" (kleiner daemon der im hintergrund laueft und daten rauszieht und dann in die webDB schreibt) am besten mit libnodave zu realisieren.
Mein Problem ist allerdings, die Steuerung wurde von einer Firma installiert mit einem fertigen Steuerungsprogramm. Ich kenne also die interne Konfiguration nicht wirklich + habe auch keinen direkten physischen Zugriff auf den CPU (laueft per remote).

Mein problem ist nachdem ich die Verbindung aufgebaut habe:
- wie kann ich mir die Daten im Klartext rausziehen, bzw. 
- welche Speicheradressen muss ich auslesen und dann konvertieren.
- ist es moeglich alle daten live mitzuloggen und diese im nachhinein umzukonvertieren und dann weiterzuverarbeiten

Ich kann mein Hirn nicht um diesen Mittelteil herumbringen... Connectionaufbau OK, Weiterverarbeitung OK... allerdings das Auslesen und Umkonvertieren, da steh ich derzeit an.

Hoffe mir kann jemand helfen!

cheers,
Alex


----------



## Ralle (10 Juli 2009)

Daten werden in der S7 in Datenbausteinen bzw. Merkerbereichen gehalten. in deinem Fall geht es wahrscheinlich eher um Daten aus Datenbausteinen. Du hast in libnodave Lesefunktionen, mit denen du Daten aus einem Datenbaustein (z,Bsp. DB10) in einen internen Buffer deiner PC-Applikation einlesen kannst. Der Buffer ist z.Bsp. ein Bytearray. Nun kannst du entweder mit Hilfe von libnodave aus dem Buffer die Daten extrahieren (Int, Dint, Real etc.) oder du machst das selber, indem du die einzelnen Byte in der richtigen Reihenfolge und mit der richtigen Logik zusammenbastelst. In jedem Falle mußt du aber wissen, welche Daten wo in der SPS abgelegt sind. 1. Damit du genau diese Daten holst und 2. damit du sie richtig zusammensetzen kannst. Im Idealfalle liegen alle Daten in einem Datenbaustein in einem zusammenhängenden Bereich. Dann kannst du mit einem einzigen Lesezugriff, genau diesen Bereich auslesen. Ich verwende dazu einem eigenen Sammel-DB, in welchem ich die Daten in der SPS zusammenstelle. Dazu muß man dann aber in das SPS-Programm eingreifen und diese Daten entsprechend umkopieren. In deinem falle könnte es passieren, daß zu aus vielen DB viele einzelne Daten auslesen mußt. Das bedeutet dann u.U. auch einen gewissen Zeitverlust, da die Daten einzeln adressiert und geholt werden müssen.

Eine weitere, allerdings nicht kostenlose Variante wäre ein OPC-Server, der die Daten aus der SPS liest und ein Client, den du in deine Applikation integrierst. 

PS: Schau dir mal PVBrowser, das könnte schon genau das sein was du benötigst. Und kostet nix


----------



## Manni01 (10 Juli 2009)

Du musst

1. dich mit den absoluten Grundlagen der Siemens-SPS befassen müssen,
2. das dokumentierte SPS-Programm haben,

sonst ist es stochern im Nebel bei Dunkelheit.

Das wird Dir keinen Spaß machen....


----------

