Ich würde am liebsten erstmal den Parameter-Teil vollständig haben.
Was haben z.B. die ersten 3 Bytes bei Userdata-Telegrammen zu bedeuten? Bzw. ist "Userdata" als Name für diese Telegramme überhaupt richtig, denn in diesen Telegrammen steckt alles andere außer den Variablendiensten. Die anderen Kennungen lauten in Siemens original-Sprech z.B. "Auftrag mit Quittung", was ich einfach mal "Job" übersetzt habe. Die Antworten heißen dann im original "Quittung ohne Zusatzfeld" und "Quittung mit Zusatzfeld", bei mir "Ack" und "Ack_Data" genannt.
Wenn man das Schema wie bei den Variablendiensten annimmt, wäre das erste Byte im Parameter der Funktionscode. Der ist dabei aber immer Null.
Das zweite Byte ist immer 1. Vielleicht gibt dieses die Anzahl der Parameter-Datensätze an. Ich habe aber immer nur einen Satz gesehen.
Das dritte Byte ist immer 0x12, vielleicht gibt das an wie der Parameter-Satz aufgebaut ist? Irgendeine Bedeutung muss das aber haben, denn es ergibt ja keinen Sinn 3 Bytes für hier überflüssige Konstanten einzusetzen.
Bei den Bytes 4, 5 und 6 scheint das was ich mir da überlegt habe von der Funktion her zwar zu passen, aber so einen verrückten Aufbau traue ich nichtmal Siemens zu. Da muss irgendeine andere Logik hinterstecken.
Dann gibt es noch ein Byte vor dem Byte welches kennzeichnet dass dieses die letzte Dateneinheit zu einem Datensatz ist. Dort steht immer ein Wert ungleich Null wenn dieses nicht der letzte Datensatz ist, aber die Werte darin sind immer unterschiedlich. Ich habe schon 2, 5 und 7 gesehen. Keine Ahnung was das soll.
Technisch sinnvoll wäre eigentlich dem Partner die Anzahl der noch folgenden Pakete mitzuteilen wenn fragmentiert wird, aber das scheint es nicht zu sein.
Ich habe meinen aktuellen Arbeitsstand mal angehängt, kannst dir das ja mal ansehen (hab' die 32 und 64 Bit reingepackt). Ich habe im Laufe der Zeit noch ein paar andere Dinge geändert.