BiDiB, Übertragung über Netzwerk ‐ Entwurf

BiDiB - Bidirektionaler Bus - Logo

Inhaltsverzeichnis

1. Allgemeines

Das Protokoll BiDiB dient zur Kontrolle einer Modellbahnanlage. Es ermöglicht die Ansteuerung von Loks, Zubehör und sichere Übertragung von Rückmelderinformationen aus der Modellbahnanlage an den steuernden Rechner.

BiDiB kann über verschiedene Übertragungsmedien transportiert werden, dabei wird das Framing und die Sicherung der Nachrichten gewährleistet.

Eine Erläuterung der hier verwendeten Begriffe und der Protokollgrundzüge findet sich im allgemeinen Teil der Protokollbeschreibung, gleiches gilt auch für die Hinweise zur Benutzung und zur Lizenz.

Im folgenden ist der Transport über eine Netzwerkverbindung beschrieben, verwendet wird das User Datagram Protocol (UDP).

2. Netzwerkverbindung

UDP, ist ein minimales, verbindungsloses Netzwerkprotokoll, welches geeignet ist, bestimmten Programmen auf Zielrechnern Daten zu senden. Hierzu verwendet es einen sog. Port, dessen Nummer bei den Daten mitgesendet wird.

Für BiDiB wird der Port 62875 verwendet. (Dieser Port ist im Bereich der dynamisch zugeordneten Ports)

2.1. UDP-Datagramm

Ein UDP-Datagramm besteht aus:

2 Byte2 Byte2 Byte2 Byten Bytes
QuellportZielportLängeCRCDaten

Es ist seitens des Netzwerkes nicht garantiert, das UDP-Pakete in der Sendereihenfolge beim Empfänger eintreffen, obwohl dies (speziell bei einem lokalen Netz) in aller Regel der Fall ist. Für BiDiB ist die Einhaltung der Sendereihenfolge wichtig, daher wird in den Daten eine durchlaufende Nummer mit übertragen, welche es dem Empfänger erlaubt, die Reihenfolge zu erkennen und zu korrigieren.

2.2. Paketdefinition

Ein UDP-Paket (Datenanteil) für BiDiB ist prinzipiell wie folgt aufgebaut:

PACKET ::= SESSION_KEY  SEQUENCE  MESSAGE_SEQ
MESSAGE_SEQ ::= ε | MESSAGE  MESSAGE_SEQ
SESSION_KEY ::= 16 Bit Integer
SEQUENCE ::= 16 Bit Integer

Die Datensicherung und Paketlängenbestimmung wird über die Definition des UDP-Paketes bestimmt. Die für BiDiB-Pakete max. erlaubte Paketgröße ist 512 Byte.

SESSION_KEY ist ein vom Interface beim Protokollstart vergebener Wert, welcher bei allen Übertragungen mitgesendet wird.

  • 0: nur horchender Zugriff
  • 1…1023: steuernder Zugriff
  • 1024 … 65535: reserviert

SEQUENCE ist eine durchlaufende Nummer (16 Bit), welche dem Empfänger eine Bestimmung der Reihenfolge ermöglicht. Ein Interface muss in der Lage, bis zu vier Pakete in der Reihenfolge zu sortieren.

2.3. Verbindungsaufbau

Der Verbindungsaufbau mit dem BiDiB-System läuft wie folgt ab:

  1. Das PC-Programm sendet ein Paket mit nur einer enthaltenen Nachricht MSG_SYS_GET_MAGIC an das BiDiB-System. Diese Nachricht hat die SEQUENCE = 0 und einen SESSION_KEY = 0.
  2. Das BiDiB-System antwortet mit der SYS_MAGIC, sowie mit SEQUENCE = 0 und mit einem SESSION KEY.
    Wenn der Session Key ungleich 0 ist, dann wird die Kontrolle erlaubt und das PC-Programm kann die Übernahme und Initialisierung des BiDiB-Systems durchführen.
    Wenn dieser Session Key vom BiDiB-System gleich 0 ist, so wird die Kontrolle über das BiDiB-System nicht erlaubt und das PC-Programm kann und darf nur horchend Nachrichten auswerten. (Beispiel: Rückmeldemonitor, Fahrstufenübersicht).