TIA Portal Dateiformat, Info Thread

Jochen Kühner

Level-3
Beiträge
4.323
Reaktionspunkte
551
Zuviel Werbung?
-> Hier kostenlos registrieren
Hat sich den jetzt schon mal jemand mit dem Dateiformat beschäftigt? Ich hab ja schon angefangen die Binärdateien zu analysieren siehe hier:
http://www.sps-forum.de/hochsprache...-tia-file-format-grammar-file.html#post533281

hab aber nicht wirklich viel herausgefunden (auch zwecks Zeitmangel).

Vlt. können wir in diesem Thread zusammentragen wenn noch jm. was herausfindet!

Ich hatte bisher nur erfolg wenn Ich über TIA Portal die Projektdateien in XML umgewandelt habe, diese lassen sich mit einigem Aufwand parsen. (ich will ja aber auch ohne TIA Portal die Dateien lesen können)
 
Beispielexport

Ich hab hier mal ein Beispiel XML Export, und die PLF Datei dazu, vlt kann ja jemand mehr entschlüsseln als ich schon in meiner Hexinator Grammatik habe!

StorageObject id="" entspricht der TypeId in der Grammatik!

ich wollte z.b. das item " <StorageObject id="69643" instId="2441" clusterId="0">" analysieren. ich finde die Strings aus dem XML auch darin, und das byte vor den einzelnen Texten davor ist die Länge, aber der rest...

Mal schaun wann Ich Zeit habe und mehr analysieren kann

Bildschirmfoto 2016-02-19 um 15.05.05.jpg
 

Anhänge

  • Archive.zip
    5,7 MB · Aufrufe: 20
Zuviel Werbung?
-> Hier kostenlos registrieren
Codesys XML Export

Hallo, ich bereite gerade einen Codesys Profi Kurs vor und habe mal einen Ausschnitt meines simplen "Hello World" Beispielprojekts für den Raspberry Pi aus Codesys 3.x über den Menu Punkt PLCOpen XML Export rausgezogen.

xml.jpg

im XML Notepad kann man den Export sich ansehen, er funktioniert sehr gut und auch schon unter Codesys 2.x habe ich das damals noch proprietäre Exportformat (ASCII Klartext mit Schlüsserworten) häufig verwendet, um von einem Hersteller auf den anderen wechseln zu können.

Die Entwicklungssysteme wie TIA oder leider auch Codesys 3.x verwenden irgendwelche nicht nach aussen dokumentierten Filecodierungen oder Datenbanken. Ich denke, das ist Absicht (Kundenbindung). ASCII mögen sie gar nicht!

Die IEC hatte da mit dem XML Export endlich dem Anwender (eigentlich König Kunde!) einen Weg geöffnet, um zwischen Systemen verschiedener Hersteller sein eigenes Know How transferieren zu können.

Der (noch) Marktführer sträubt sich wohl mit Händen und Füssen gegen so eine Offenlegung.
 
Das XML von TIA kann Ich aber parsen.... Ist zwar umständlich, aber möglich! Problem ist, Ich will direkt das Binärformat vom TIA Portal unterstützen, das man kein TIA braucht, um z.B. die Symboltabelle, DB oder ähnliches auszulesen. Wenn man sich die PLF mit der Grammatik für den HEX Editor ansieht, findet man in der Datei die gleichen Blöcke wie auch im XML, nur Codierung der einzelnen Typen, ist glaub je nach typ unterschiedlich...
Und wofür die commit punkte etc in dem Dateiformat sind, kein plan bis jetzt!
 
So ein paar Jahre später versuche ich mich hier mal wieder... Hat jemand zufällig noch irgendwelche neuen Infos?
Ein paar Objekte kann ich mittlerweile lesen, aber vlt. gabs ja zwischenzeitlich irgendwo mehr infos?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe in den letzten Tagen mit der .plf-Datei gearbeitet, um die "Referenzadresse (8A0E0038.2C.13.A.1)" aus symbolischen Adressen zu extrahieren, wie hier besprochen: https://github.com/thomas-v2/S7CommPlusDriver/discussions/36.

Ich habe das Dateimuster gerade so weit verstanden, dass ich mein Ziel erreichen konnte, daher kann ich dir mitteilen, was ich herausgefunden habe. Obwohl es nicht viel ist, könnte es dennoch hilfreich sein.

Jedes Mal, wenn ein Block im Projekt geändert oder hinzugefügt wird, wird der PLUSBLOCKD-Identifikator in die Datei eingefügt, 103 Bytes bevor der Name des Datenblocks zu finden ist, oder 132 Bytes, wenn es sich um einen internen Sicherheitsblock handelt.
1725008200562.png
1725008195045.png

Jeder neue Block oder Änderungen an zuvor konfigurierten Blöcken führen zu einer XML-Struktur in der Datei, was sehr nützlich ist. Die LID ist die eindeutige ID, nach der ich gesucht habe, und sogar komplexe Datentypen können abgebildet werden.
1725008133516.png

Der Hex-Wert nach dem Ende der XML-Struktur repräsentiert den Offset bis zum Ende der Datenblock-ID.
1725008448441.png

Die Blockadresse befindet sich 67 Bytes nach dem Blocknamen, bei Sicherheitsblöcken sind es 96 Bytes.
1725008556940.png

Wie du sehen kannst, benutze ich ImHex, das ich auch empfehlen kann. Ich habe versucht, deine .grammar-Datei in Hexinator zu verwenden, aber dafür benötigt man jetzt die Premium-Version. Ich arbeite mit TIA Portal V19 und weiß noch nicht, wie sehr sich das Format von Version zu Version ändert.
 
Die Grammer hab ich schon ein bisschen angepasst, zumindest bekommt man dann die ganzen Blöcke, ich schaue das ich die grammer die tage mal wieder hochladde. Die daten innerhalb eines Objekt sind eher die schwierigen. Vor allem wenn man sie komplett verstehen will. Ich will ja aus der Datei auch den Baum der im TIA Portal ist generieren.
 
Die Grammer hab ich schon ein bisschen angepasst, zumindest bekommt man dann die ganzen Blöcke, ich schaue das ich die grammer die tage mal wieder hochladde. Die daten innerhalb eines Objekt sind eher die schwierigen. Vor allem wenn man sie komplett verstehen will. Ich will ja aus der Datei auch den Baum der im TIA Portal ist generieren.
Sehr gut, könnten Sie die neueste Version der Grammatik mit mir teilen?

Vielen Dank.
 
Zurück
Oben