Hallo Ralf,

Manche meiner Protokolle wurden über 10 und mehr Jahre verwendet und weiter entwickelt.
Dabei haben sich folgende Punkte bewährt:
1. Prüfsumme
2. Einen Befehl, womit man abfragen kann, welche Protokoll-Version das Gerät implementiert hat. Dieser Befehl darf dann nie mehr verändert werden. besonders wenn man einen PC als Master hat, spielen Codegrösse und Rechengeschwindigkeit keine grosse Rolle und man kann dann neuere Befehle mit alten emulieren, falls nötig.
3. Nicht verstandene Befehle werden ignoriert. Der Sender kann dann verlorene Antworten über einen Timeout erkennen, falls nötig und ein Empfänger hängt sich nicht auf, wenn er auf Befehle stösst, welche erst später definiert wurden.
4. Einen Befehl zum Abfragen des Modultyps.
5. Praktisch ist auch die Möglichkeit direkt auf Interna des Moduls zugreifen zu können, wie z.B. direktes Abfragen von Eingängen und setzen von Ausgängen. Ist bei der Installation und Fehlersuche unheimlich hilfreich

Das sind so meine 40 Jahre Erfahrung mit Protokollen. Bei mir kann noch hinzu, dass das Ganze an Kunden ausgeliefert wurde und es nicht nur ein einzelnes System war über welches man die Übersicht hat.
Ich musste auch Berücksichtigen, dass einem Kunden ein Gerät der neuesten Generation als Ersatzteil oder Erweiterung ausgeliefert wurde und seine Anlage sollte auch dann weiterhin funktionieren.
Teilweise hat dann die Software auch eine Meldung ausgegeben, dass sich der Kunde um ein Update kümmern soll, wenn neuere Komponenten eingefügt wurden. Das war noch zu Zeiten ohne Internet.
Auch meine Datenbanken waren entsprechend aufgebaut, da war im ersten Record immer eine Versions-Nummer drin. Meine Programme konnten dann immer das alte Format in das neue konvertieren, sodass man nicht alles wieder neu eintippen musste.
Zumindest in C funktioniert dies auch mit Konfigurationsdaten, wenn man weiss wie diese im Speicher verwaltet werden und wie man den Linker steuern muss. Dabei ist es aber auch wichtig, dass unbenutzte Bit einen definierten Zustand besitzen.

MfG Peter(TOO)