Bus-Protokoll
Wie bereits an anderer Stelle erwähnt, kann in diesem System jedes Modul bzw. jeder Controller mit jedem anderen kommunizieren. Es gibt keinen Master. Um dieses realisieren zu können, sind Kommunikationsregeln unerläßlich. Wir nennen diese Regeln Protokoll. Wann immer Daten über den Bus übertragen werden sollen, müssen diese in ein Paket zusammengefaßt werden. Alle Datenpakete sind nach diesem Muster aufzubauen:
| Start | Absender | Empfänger | Befehlstype | Befehlssubtype | Länge | Nutzdaten | Checksumme |
Mit Ausnahme der Nutzdaten ist jede Komponente 1 Byte groß. Da die Länge des Gesamtpaketes auf 255 Byte gegrenzt ist, können die Nutzdaten 248 Byte groß sein (255-7). Reicht das nicht, so muss die Botschaft auf mehrere Pakete aufgeteilt werden. Der notwendige Paketzähler ist Bestandteil der Nutzdaten.
Als Start-Zeichen benutze ich ein kleines 'y'. Absender und Empfänger werden jeweils durch einen Buchstaben representiert, wobei die Software case-sensitiv ist, Groß- und Kleinbuchstaben also unterscheidet. Für den Befehlstype und -Subtype benutze ich ebenfalls Buchstaben. Die Checksumme wird mit Modulo 256 berechnet. Als Länge werden die Zeichen in den Nutzdaten incl. Checksumme gezählt.
Es gibt keine Regel, wer wann übertragen darf. Eine Belegt-Abfrage des Busses könnte grundsätzlich realisiert werden, allerdings wurde bisher darauf verzichtet. Vielmehr gilt: Schickt ein Empfänger kein positives Aknowledge (also keins oder ein negatives), wird die Übertragung max. 3 mal wiederholt. Erfolgt immer noch keine Antwort, gilt der adressierte Controller als nicht erreichbar. Dieses Verfahren hat sich auch in anderen Protokollen bewährt und führte bisher auch in diesem Projekt zu keinem Problem.
Die detaillierte Beschreibung und die Dokumentation der implementierten Befehle finden Sie im Protokollhandbuch.
.


