Zusammenhang der S7Projektdaten...

Jochen Kühner

Level-3
Beiträge
4.291
Reaktionspunkte
527
Zuviel Werbung?
-> Hier kostenlos registrieren
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?
 
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.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
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...
 
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!
 
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!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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!
 
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....
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 

Anhänge

  • ProjectFileFunctions.zip
    109,6 KB · Aufrufe: 41
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!
 

Anhänge

  • ProjectFileFunctions.zip
    113,4 KB · Aufrufe: 116
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?
 
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)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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)

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...
 
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
 
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...
 

Anhänge

  • ProjectFileFunction.zip
    112,7 KB · Aufrufe: 41
Zuviel Werbung?
-> Hier kostenlos registrieren
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...
 
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.
 

Anhänge

  • ProjectFileFunctions.zip
    92,1 KB · Aufrufe: 30
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
 

Anhänge

  • ProjectFileFunctions.zip
    96,4 KB · Aufrufe: 62
Zurück
Oben