-> Hier kostenlos registrieren
Hallo Community,
kurz zur Einleitung… Ich schreibe zurzeit meine Masterarbeit an einer Uni im Themenbereich von CNC-Steuerungen. Ein kleiner Teil der Arbeit beschäftigt sich mit Wireshark und ein bisschen mit „Reverse Engineering“ des S7Comm-Protokolls für CNC-Maschinen.
Als Testexemplar dient hierbei eine Sinunerik 840D sl mit einer Bedieneinheit und einer zusätzlichen PCU 50.3.
Durch die Forumssuche bin ich schon auf sehr interessante Beiträge hinsichtlich des aktuell standardmäßig implementiert Wireshark - S7Comm-Dissectors sowie auf das Auslesen von Variablen in der NCU gestoßen. Erstmal Vielen Dank an die Leute die sich über Jahre mit den genannten Forumsbeiträgen beschäftigt haben…. Eine absolute Spitzenarbeit – Respekt!
.
Diese Forumsbeiträge waren für meine Masterarbeit schon eine sehr große Hilfe – Vielen Dank!. Jedoch bin ich mittlerweile an einem Punkt wo ich mich etwas im „Kreis drehe“.
Ich hoffe doch, dass ihr mir diesbezüglich etwas bei den nachfolgenden Fragen weiterhelfen könnt.
Allgemein:
1) TCP-Protokoll:
Nur zum Verständnis:
Das TCP-Protokoll ist datenstromorientiert, d.h. ein kontinuierlicher Strom von einzelnen Paketen ohne eindeutigen Anfang und Ende wird zwischen den einzelnen Geräten hin und hergeschickt.
Um diese Pakete abgrenzen zu können existiert eine Sequenznummer + eine entsprechende ACK-Nummer. Nach Senden einer Anfrage des Clients bestätigt der Server dies mit einer ACK-Nachricht
Nun zur eigentlichen Frage im TCP-Protokoll:
Wenn ich dieses Prinzip (Seq-Nr -> Ack-Nr (+ nächste Seq-Nr.) -> Seq-Nr -> …) in Wireshark verfolge lässt sich auch bedingt darauf zurückschließen.
Jedoch sobald 2 hintereinander folgende Userdatas (Userdata -> Cyclic data -> Memory) geschickt werden lässt sich dieses Prinzip nicht mehr nachvollziehen. Eine Userdata lässt sich entsprechend noch zuordnen, jedoch die Sequenznummer der 2. Userdata ist komplett unterschiedlich (hierzu sollte noch gesagt werden das beide Userdatas die gleiche IP besitzen, jedoch untersch. Ports).
Wieso fällt eine Userdata aus diesem Schema heraus, hätte hierzu jemand eine vorläufige Erklärung? (Screenshots kann ich bei Bedarf erst am Montag hochladen)
S7Comm
2) Userdata:
Jede Userdata enthält verschiedene Items mit Datenpaketen, lassen sich jeweiligen Items auf die „zuvor stattgefundenen Jobs“ wieder zuordnen?
Der Client stellt an den Server eine Anfrage und dieser Bestätigt den Erhalt der Anfrage mit einer ACK-Data (Je nach Modi Read/Write) beinhaltet sie ja schon entsprechende Daten.
Welche Daten beinhaltet dann eigentlich die Items in Userdata-Cyclic? (Erst hier sollten doch die Werte beinhaltet sein, da die CNC diese Anfrage erst hier bearbeitet oder?). Jedoch passt hierzu die Anzahl der Items in den zuvor gestellten „Jobanfragen“ nicht mit der Anzahl der Items in der Userdata überein.
Mit fehlt da noch eine bisschen das Verständnis dahinter wie diese Userdata aufgebaut ist und was sie wirklich beinhaltet, vllt. hat jemand einen Tipp für mich?
3) NCK-Variablen
Gibt es auch eine Möglichkeit die Zuordnung der einzelnen NCK-Variablen an die jeweiligen physikalischen Adressen ohne den NC-Var-Selektor zu tätigen?
4) Octet-String
Der Octet-String ist eigentlich eine ganz normale String-Variable nur mit Vorgabe der jeweiligen Länge oder?
Über Wireshark wird je nach Variablen ein Octet String zurückgeliefert. Diese variable Länge unterscheidet sich zwischen 36-222 Zeichen. Gibt es hierzu eine Möglichkeit diesen Octet-String in seine beinhalteten Informationen zu zerlegen? Ich denke bei einem Octet String mit 222 Zeichen werden mehrere Informationen übertragen, die in der CNC selektiert werden… Oder was fängt eine CNC mit einer Zeichenkette mit 222 Zeichen an?
Ich würde mich über eure Mithilfe sehr freuen und hoffe mit dem Beitrag doch noch die ein oder andere hilfreiche Erkenntnis mit euch teilen zu dürfen.
Vielen Dank erstmal.
Gruß
Biiebs
kurz zur Einleitung… Ich schreibe zurzeit meine Masterarbeit an einer Uni im Themenbereich von CNC-Steuerungen. Ein kleiner Teil der Arbeit beschäftigt sich mit Wireshark und ein bisschen mit „Reverse Engineering“ des S7Comm-Protokolls für CNC-Maschinen.
Als Testexemplar dient hierbei eine Sinunerik 840D sl mit einer Bedieneinheit und einer zusätzlichen PCU 50.3.
Durch die Forumssuche bin ich schon auf sehr interessante Beiträge hinsichtlich des aktuell standardmäßig implementiert Wireshark - S7Comm-Dissectors sowie auf das Auslesen von Variablen in der NCU gestoßen. Erstmal Vielen Dank an die Leute die sich über Jahre mit den genannten Forumsbeiträgen beschäftigt haben…. Eine absolute Spitzenarbeit – Respekt!

Diese Forumsbeiträge waren für meine Masterarbeit schon eine sehr große Hilfe – Vielen Dank!. Jedoch bin ich mittlerweile an einem Punkt wo ich mich etwas im „Kreis drehe“.
Ich hoffe doch, dass ihr mir diesbezüglich etwas bei den nachfolgenden Fragen weiterhelfen könnt.
Allgemein:
1) TCP-Protokoll:
Nur zum Verständnis:
Das TCP-Protokoll ist datenstromorientiert, d.h. ein kontinuierlicher Strom von einzelnen Paketen ohne eindeutigen Anfang und Ende wird zwischen den einzelnen Geräten hin und hergeschickt.
Um diese Pakete abgrenzen zu können existiert eine Sequenznummer + eine entsprechende ACK-Nummer. Nach Senden einer Anfrage des Clients bestätigt der Server dies mit einer ACK-Nachricht
Nun zur eigentlichen Frage im TCP-Protokoll:
Wenn ich dieses Prinzip (Seq-Nr -> Ack-Nr (+ nächste Seq-Nr.) -> Seq-Nr -> …) in Wireshark verfolge lässt sich auch bedingt darauf zurückschließen.
Jedoch sobald 2 hintereinander folgende Userdatas (Userdata -> Cyclic data -> Memory) geschickt werden lässt sich dieses Prinzip nicht mehr nachvollziehen. Eine Userdata lässt sich entsprechend noch zuordnen, jedoch die Sequenznummer der 2. Userdata ist komplett unterschiedlich (hierzu sollte noch gesagt werden das beide Userdatas die gleiche IP besitzen, jedoch untersch. Ports).
Wieso fällt eine Userdata aus diesem Schema heraus, hätte hierzu jemand eine vorläufige Erklärung? (Screenshots kann ich bei Bedarf erst am Montag hochladen)
S7Comm
2) Userdata:
Jede Userdata enthält verschiedene Items mit Datenpaketen, lassen sich jeweiligen Items auf die „zuvor stattgefundenen Jobs“ wieder zuordnen?
Der Client stellt an den Server eine Anfrage und dieser Bestätigt den Erhalt der Anfrage mit einer ACK-Data (Je nach Modi Read/Write) beinhaltet sie ja schon entsprechende Daten.
Welche Daten beinhaltet dann eigentlich die Items in Userdata-Cyclic? (Erst hier sollten doch die Werte beinhaltet sein, da die CNC diese Anfrage erst hier bearbeitet oder?). Jedoch passt hierzu die Anzahl der Items in den zuvor gestellten „Jobanfragen“ nicht mit der Anzahl der Items in der Userdata überein.
Mit fehlt da noch eine bisschen das Verständnis dahinter wie diese Userdata aufgebaut ist und was sie wirklich beinhaltet, vllt. hat jemand einen Tipp für mich?
3) NCK-Variablen
Gibt es auch eine Möglichkeit die Zuordnung der einzelnen NCK-Variablen an die jeweiligen physikalischen Adressen ohne den NC-Var-Selektor zu tätigen?
4) Octet-String
Der Octet-String ist eigentlich eine ganz normale String-Variable nur mit Vorgabe der jeweiligen Länge oder?
Über Wireshark wird je nach Variablen ein Octet String zurückgeliefert. Diese variable Länge unterscheidet sich zwischen 36-222 Zeichen. Gibt es hierzu eine Möglichkeit diesen Octet-String in seine beinhalteten Informationen zu zerlegen? Ich denke bei einem Octet String mit 222 Zeichen werden mehrere Informationen übertragen, die in der CNC selektiert werden… Oder was fängt eine CNC mit einer Zeichenkette mit 222 Zeichen an?
Ich würde mich über eure Mithilfe sehr freuen und hoffe mit dem Beitrag doch noch die ein oder andere hilfreiche Erkenntnis mit euch teilen zu dürfen.
Vielen Dank erstmal.
Gruß
Biiebs