Aufwand S7 1500 Treiber
Sowas macht man Nachts ;-)
Aber hat auch Spaß gemacht. Wenn man mal lange Zeit absolut nicht weiterkommt, und dann hat man eine Idee, sozusagen den Stein von Rosetta und dann gehts weiter...
Das traurige ist allerdings auch wenn ich weiß wie es prinzipiell funktioniert, das Erstellen eines Treibers dafür immer noch ein nicht unerheblicher Aufwand ist. Zumindest ist das nicht mit einem Treiber für die S7-300/400 zu vergleichen, da liegen bestimmt 1-2 Größenordnungen gemessen an Codezeilen dazwischen. Eine Minimalversion für die 300er nur um Variablen über Ethernet zu lesen bekomme ich in C in ~100 Codezeilen hin. Für die 1500 würde ich da eher 5000-10000 Zeilen ansetzen, und das ohne die notwendigen Crypto-Bibliotheken. Das Problem ist, du kannst da nicht mit einer Minimalversion die nur Variablen lesen kann anfangen, sondern musst gleich "fast" alles verstehen.
Und aufgrund der Authentifizierungsmethode, würde ich das niemals nachverfolgbar unter meinem Namen veröffentlichen. Meiner Meinung nach ist das ist mit Absicht so konstruiert worden, dass es schwer sein dürfte zu behaupten an die Methode ohne Reverse-Engineering des Quellcodes gelangt zu sein. Den einzigen Ausweg den es da geben könnte, ist über das womögliche Monopol von Siemens in dem Bereich. Aber ich habe keine Lust mich in der Freizeit detailliert mit Rechtsangelegenheiten zu befassen.
Das mit der Idee in der Nacht ist auch bei mir so. Aber sonst ist es viel Arbeit, oft in Details. Wissen über die interne Arbeistweise einer Steuerung ist notwendig.
Ein SPS Protokoll präsentiert immer die interne SPS, das war schon bei der 300er oder der S5 der Fall. Sichtbar ist das in den SZLs und beim Bausteinlesen - die Bausteinköpfe zeigen das. Hilfreich ist es auch mal eine Softsps erstellt zu haben bzw mit Leuten die das machen sich auszutauschen (IBH Softec, Process Informatik, ABCIT). Mit diesem Wissen ist ein Protokoll nachzubauen - ohne Disassemblieren irgendwelchen Codes.
Ein reiner S7 1500 Protokolltreiber hat ohne Cryptlib ca 5000 Zeilen. Mit Online Browsen sind es ca 8000. Mit kompletten SPS Stati, Hardwareausbau sind es ca 12000. Soll die S7 1500 auch programmiert werden so liegen im Protokoll und dem Datenmanegement ca 18000 Zeilen C Code. Dieser Code läuft dann aber über all, auch im Raspberry PI. Damit kann dann ein komplettes SPS
Backup erstellt und wieder in die SPS zurückgespielt werden, oder es werden SPS Programme mit Codegeneratoren erstellt.
Das Gleiche für die Rockwell ControlLogix sieht gleich aus, und es hat auch die gleichen Funktionen. Rockwell ist zwar etwas offener mit Informationen, um die SPS zu programmieren hilft das aber nicht.
Zusätzlich hilft Wissen über FPGA und deren Programmierung. Vieles aus den SPS Protokollen bildet solche Hardwarebausteine ab.
So sind all die Tani SPS Treiber entstanden, und so sind seinerzeit auch die INAT Treiber gebaut worden.
Vielen Dank auch für die gute Unterstützung mit der ständigen Weiterentwicklung des S7 1500 Dissektors. Es ist das klassische Beispiel guter Zusammenarbeit. Jeder hilft dem Anderen.