# Zusammenhang der S7Projektdaten...



## Jochen Kühner (28 August 2010)

Hallo, Ich versuche gerade in meinen MC7 umwandler das einlesen von einer S7 Symboltabelle einzubinden. Dazu würde Ich gerne ein Step 7 Projekt öffnen, und dem User Die möglichkeit bieten die entsprechende Tabelle auszuwählen. Doch dazu muss Ich erst mal das Projekt Strukturiert einlesen. (Falls das ganze jemand später verwenden will, kommt alles vorerst mal in meine Connection Library).

Nun versuche Ich die Struktur eines S7 Projektes auszulesen.

Haben schon rausgefunden das in
Homsave7\s7hstatx\hobject1.dbf
mal die Harwareordner der untersten ebene in step 7 enthalten sind.
Und in
hrs\S7resoff.dbf die programmordner.

Doch wie ist nun der zusammenhang ob ein Programmordner in der Grundstruktur angezeigt wird, oder unter dem Hardwareordner? Und welcher Programmordner zu welchem Harwareordner gehört... Gibts zu dem Projektaufbau schon irgendwo infos? Oder muss man da alles selbst rausfinden?


----------



## IBFS (28 August 2010)

Jochen Kühner schrieb:


> Nun versuche Ich die Struktur eines S7 Projektes auszulesen.


 
soso:

http://www.sps-forum.de/showthread.php?t=2939&highlight=SYMLISTS.DBF



SYMBOLIK:

http://www.sps-forum.de/showthread.php?t=37924&highlight=SYMLISTS.DBF


Da hast du dir ja was vorgenommen.
Ich habe mich vor langer Zeit mal damit
beschäftigt.

http://www.sps-foren.de/showpost.php?p=122530&postcount=14

In meiner besseren Version konnte ich verschiedenste Hardwaremodele auslesen.
Am Ende - als MiniVersionverwaltung - reicht aber S7Info auch.

Gruß

Frank



EDIT:

Falls im Projekt nur eine SYMLIST real vorhanden ist, aber im Baum mehrere 
Verzeichnisse sind, hilft nur Reorganisieren. Damit wird der überflüssige
Müll und die verwaisten Verzeichnisse gelöscht.


----------



## Jochen Kühner (28 August 2010)

*Danke mal...*

Danke mal, aber die Threads hatte Ich schon... Mir gehts ja auch nicht nur um einfach die Symlist einzulesen, sondern ich will halt schön wie in Step 7 darstellen zu welcher Hardware im Projekt die Symbolliste gehört...

Aber Ich werds schon rausfinden wie das funktionier...


----------



## Jochen Kühner (28 August 2010)

*Bischen was hab Ich schon....*

Zuordnung Symbolik:
ist in \YDBs\YLNKLIST.DBF:
TOI ist die ID in: Hrs\S7resoff.dbf Feld: ID
SOI ist YDBs\symlists.dbf Feld:ID 
und Entspricht auch dem Verzeichnis Namen mit der Symbolik.

Ich denke das langt mir auch mal fürs erste!


----------



## Jochen Kühner (29 August 2010)

*Sooo...*

So, hab nun noch ein bischen was rausgefunden und in meine Variablentabelle eingebaut, wenn's jemand testen mag.

Ist dann in der nächsten Version meiner Connection Library enthalten!


----------



## Jochen Kühner (29 August 2010)

*Noch was...*

Hatt jemand vielleicht schon rausgefunden, was für Informationen (und wie) in den lnk Dateien im Step7 Projekt Verzeichnis stecken. Ich denke zumindest die beziehung Zwischen Baustein Ordner und dem zugehörigen übergeordneten Ordner lassenen sich für mich nicht aus einer anderen Information aus der Datenbank ziehen. Wenn jemand was weiss, nur her mit den Infos.

Vieleicht ist das darin ja auch ein bekanntes spezifiziertes Dateiformat, so wie bei den dbf dateien eine dbase datenbank dahintersteckt, kann das ja auch was bekanntes sein!


----------



## Jochen Kühner (1 September 2010)

Zu den LNK Files:

Denke das es dort immer einen 0x200 Byte großen Datensatz gibt. 
Darin sind auch viele Bytes welche sich nicht ändern (vielleicht Reserve).

Aber der Rest...

Wenn jemand noch was weis... über Infos freue Ich mich....


----------



## Thomas_v2.1 (1 September 2010)

Hehe, diese Datenstruktur ist sowas von krude und zusammengefrickelt.
Die lnk-Files sind eine harte Nuss, wie alles zusammenhängt habe ich auch noch nicht herausgefunden, aber zumindest kann ich große Teile eines Projektes laden.

Was das mit (einem Teil) den lnk-Files auf sich hat habe ich bei plctalk schonmal geschrieben:

http://www.plctalk.net/qanda/showthread.php?t=52264

Man sieht auf jeden Fall, dass da an allen Ecken und Enden wieder was angeflanscht wurde.


----------



## Jochen Kühner (1 September 2010)

*Jo..*

Die Grunddatenstruktur habe Ich auch schon, mir fehlt nur noch die Zuordnung von Bausteinordner zu programmordner.

Hab das was Ich hab mal angehängt....

Aber denke so wie Ich mir die Struktur jetzt aus den verschiedenen DBFs zusammensuch macht's Siemens bestimmt nicht...

Gibts später auch als Source in meiner Connection Library.


----------



## Jochen Kühner (1 September 2010)

*Ahh...*

@Thomas_v2.1:

Habs grad gesehen, du hast dazu ja was in deinem Thread geschrieben...


----------



## Jochen Kühner (2 September 2010)

*So...*

So, nun sollte man die Komplette S7 Projektstruktur der CPUs und Bausteine öffnen können...

Wenn Ichs überarbeitet hab, kommts in meine connectionLib...

Mfg.

Danke an Thomas!


----------



## Jochen Kühner (3 September 2010)

*So...*

Habs mal soweit in meine Connection Library integriert....

Dort ist auch der Source zu dem beispiel Programm enthalten...

Mfg.


----------



## Jochen Kühner (8 September 2010)

*Netzwerkinformationen...*

Kann es sein, das die Netzwerkinformationen in den gleichen Informationen stecken, in denen auch die Informationen über die Kommentare stecken?

Hat sich da schon jemand mit beschäftigt?


----------



## Thomas_v2.1 (8 September 2010)

Jochen Kühner schrieb:


> Kann es sein, das die Netzwerkinformationen in den gleichen Informationen stecken, in denen auch die Informationen über die Kommentare stecken?
> 
> Hat sich da schon jemand mit beschäftigt?



Ja, sind in den gleichen Feldern.
Für die verschiedenen Bausteine gibt es dazu verschiedene Werte im Feld SUBBLKTYP. Z.B. für OB=17, FB=18, FC=19 etc.

Im Feld MC5CODE finden sich dann beide Informationen (pro Netzwerkdatensatz) folgendermaßen codiert:

1.Byte:     Kennung 0x06
2/3.Byte:   Startoffset für Netzwerkkommentar (Low-Byte/High-Byte)
4/5.Byte:   Startoffset für nächsten Datensatz (Low-Byte/High-Byte)
6.Byte:     Kennung 0x06
7.Byte -\0: Netzwerkkommentar mit abschließender \0 (C-String)
y.Byte -\0: y=Offset aus 2./3. Byte, Netzwerkkommentar mit abschließender \0 (C-String)


----------



## Jochen Kühner (8 September 2010)

Thomas_v2.1 schrieb:


> Ja, sind in den gleichen Feldern.
> Für die verschiedenen Bausteine gibt es dazu verschiedene Werte im Feld SUBBLKTYP. Z.B. für OB=17, FB=18, FC=19 etc.
> 
> Im Feld MC5CODE finden sich dann beide Informationen (pro Netzwerkdatensatz) folgendermaßen codiert:
> ...



Danke schon mal, das gleiche habe Ich heute mittag durch rumprobieren auch rausgefunden... Bin gerade dabei das einzuarbeiten, so das ich mit der AWL Code Dekodierung und den Komentaren, wieder den AWL Quelltext auslese...


----------



## Jochen Kühner (9 September 2010)

*Aufbau...*

Es sind ja in dem feld nicht nur Netzwerk überschriften usw enthalten, sondern auch die Kommentar hinter den Anweisungen...

Die Zeilen folgen dann direkt dem Netzwerkkomentar:

Dies ist ein Kommentar in einer Leeren Zeile:
[Länge] [0x00] [0x00] [0x00] [0x00] [Kommentar] ...

Dies ist ein Kommentar in einer Zeile mit Anweisung:
[Länge] [0x00] [0x01] [0x00] [yy] [0x28] [Kommentar] ...
[yy] ändert sich äbhänig von der anweisung (0x80 bei U Mx.x, L MW x, 0xc0 bei AUF DB) noch keine Ahnung was das bedeutet, aber ich bin drann...

d.h. wenn die beiden bytes für die startoffsets <>0 sind ist es ein zeilenkommentar


----------



## Jochen Kühner (9 September 2010)

*So....*

So, hab in meiner Connection Library nun auch mal das auslesen von Bausteinen (im Moment nur FCs) implementiert...

Download hier:
http://jochensserver.dyndns.org/wordpress/?page_id=55

und das Testprogramm hab Ich mal direkt angehängt!


Es gibt aber noch Probleme:
Das auslesen des Interfaces ist noch nicht implementiert, also können solche FCs noch nicht geöffnet werden.

Desweiteren gibt es in der BAUSTEIN.DBF den selben baustein ab und zu öfters, jedoch mit unterschiedlicher ID, woher weiss ich welches der richtige ist? Immer der mit der höchsten ID?

Wenn jemand noch infos dazu hat, nur her damit...


----------



## Jochen Kühner (9 September 2010)

*Ahh....*

Das mit dem aktuellen Baustein habe Ich wohl rausgefunden.

Scheint als beleiben die alten Daten in der Datenbank erhalten, und die von mir genutzte DBF Implementierung Zeigt auch gelöschte Datensätze noch an.... Mal schauen ob Ich dazu ein Bugfix finde...


----------



## Jochen Kühner (10 September 2010)

*Soooo*

So, nun sollte mal das auslesen von FCs (ohne Parameter) funktionieren.

Der rest kommt noch (also DBs, FBs, OBs, Parameter...)

Bin jetzt zu einem anderen DBF File Reader gewechselt, nun geht auch das erkennen gelöschter Bausteine.

Das aktuelle Beispielprojekt kann dann z.B. dazu verwendet werden versehentlich gelöschte Bausteine nochmal anzusehen, aber im Moment halt noch sehr eingeschränkt....

Wird in die nächste Version meiner Connection Library enthalten sein.

Mfg.


----------



## Jochen Kühner (12 September 2010)

*Hmmm..*

So, nun gehen FBs, OBs und FCs.

Auch Parameter, aber die noch nicht ganz richtig.

Auch gibts noch Probleme mit der DBF Library, irgenwas ist da mit den Memo Blocks noch nicht ganz richtig. Ich hab ein S7 Projekt wo die Lib den Memo Block nicht lesen kann, aber mit Access gehts. Wenn jemand dazu ne Idee hat, nutze die Lib von hier: http://www.codeproject.com/KB/bugs/LoadDBF.aspx


----------



## Jochen Kühner (12 September 2010)

*Netzwerkauswertung...*

Hatte noch Fehler in der Netzwerkauswertung....


----------



## Jochen Kühner (16 September 2010)

*so...*

News zum DeletdBlockViewer gibts in ab jetzt hier:

http://www.sps-forum.de/showthread.php?t=38988

Da dies mit dem eingentlichen Thread nix mehr zu tun hat...

Falls noch jemand Infos zum Projektformat hat nur her damit...


----------



## Jochen Kühner (12 Mai 2011)

Hab an den Netzwerkkommentaren noch ein wenig geforscht aber Byte 4 und 5 sind mir immer noch nicht ganz klar...
Im Moment denke ich das diese als Bitfelder genutzt sind, dann gilt's noch rauszufinden was die Bits bedeuten.

Wenn jemand hierzu noch was hat, nur her mit Infos...


```
Eine Komentarzeile beginnt immer mit 6 Byte:

Aufbau bei Netzwerkkommentar:
byte 0   = 06 bei Netzwerk
byte 1   = Start NW Kommentar [low/high Byte]
byte 2   = Start NW Kommentar [low/high Byte]
byte 3   = Ende NW Kommentar  [low/high Byte]
byte 4   = Ende NW Kommentar  [low/high Byte]
Byte 5   =  06 bei netzwerk
Nach diesen Bytes kommt der NW Kommentar und die Beschreibung

Aufbau bei Kommentarzeile
byte 0   = Anzahl Zeichen Kommentar
byte 1   = immer 00
byte 2   = Anzahl der Zeilen vor diesem Kommentar, inklusive aktueller Zeile! [low/high Byte]
byte 3   = Anzahl der Zeilen vor diesem Kommentar, inklusive aktueller Zeile! [low/high Byte]
byte 4   = "20" bei leerer Zeile, "00" bei Leerer zeile mit Kommentar, "c0" bei AUF d.h. Auf nicht kombinieren, "80" bei Befehlen
byte 5   = "28" bei zeilen mit Befehl, "00" bei Leerzeilen (mit oder ohne Kommentar)
Nach diesen Bytes kommt der Kommentar, danach beginnts wieder von vorne!
```


----------



## prasad.sawantdesai (27 Dezember 2012)

Seine wirklich nettes Forum. Derzeit bin ich auf einem Linux-basierten Projekt zur Step 7 Projekt-Dateien ändern. Die Bibliothek, die Sie Ihnen entwickelten basiert auf Microsoft dot net-Plattform basieren. Ist es möglich, einen Code für Ihr Projekt zu bekommen. Seine sehr interseting. Thanks.


----------



## Jochen Kühner (27 Dezember 2012)

den code gibts hier: http://siemensplctoolboxlib.codeplex.com/
und die binliothek sollte auch unter linux mit mono lauffähig sein, zumindest der größte teil!


----------



## prasad.sawantdesai (28 Dezember 2012)

Vielen Dank für die Informationen ...,..


----------

