Spezifikation der Paketformate


zurück

In SLIP-Pakete eingebettet sind folgende Pakete definiert.

Index der definierten Pakete

Legende Relevanz Symbol Erläuterung
notwendig + muss gesendet werden
muss empfangen werden
notwendig (nur
empfangsseitig)
(+) kann gesendet werden
muss empfangen werden
nicht
anwendbar
- wird nicht gesendet
wird beim Empfang ignoriert
optional o kann gesendet und empfangen werden
ist für Blockfunktionen nicht relevant
Name Bytecode Blockbauform
Dez Hex Relaisblock
Felderblock
Tf71
Selbstblock
Achszähler
Selbstblock
Gleiskreis
Schweizer
Block
Reserviert für interne Zwecke
Bodos EStW zu Bodos EStW 1..10 1..0A - - - -
Konfiguration
Information über Bauart und Technologie 41 29 o o o o
Felderblock/Relaisblock/Tf71
Vorblock 42 2A + - - -
Rückblock 43 2B + - - -
Erlaubnis-Abgabe 44 2C + + + -
Erlaubnis-Anfrage 45 2D (+) (+) (+) -
Klick-Klack 40 28 o - - -
Optionale Acknowledges für Debugzwecke
Vorblock Acknowledge 142 8E o - - -
Rückblock Acknowledge 143 8F o - - -
Erlaubnis-Abgabe Acknowledge 144 90 o - - -
Erlaubnis-Anfrage Acknowledge 145 91 o - - -
Selbstblock
Achssensor Zählerstand 46 2E - + - -
Achszählergrundstellung 49 31 - + - -
Austausch von Gleisstromkreis-Zuständen 53 35 - - + +
Zustandsmeldung
Einfahrsignal-Zustand 47 2F o + + o
Blockstellensteuerung/-überwachung
Blockstellen-Zustand 50 32 o o o o
Befehle an die Blockstelle 51 33 o o o o
Selbststellbetrieb
Anstoßmeldung 52 34 o o o -
americaN
Transportcontainer für Broadcast über Blockleitung 55 37 o o o o
Stacked Data 56 38 o o o o
Aspect Transfer 57 39 o o o o
Schweizer Block
LSPOL LoopStatusPositiveOddLowOhmic 70 46 - - - +
LSPOH LoopStatusPositiveOddHighOhmic 71 47 - - - +
LSPEL LoopStatusPositiveEvenLowOhmic 68 44 - - - +
LSPEH LoopStatusPositiveEvenHighOhmic 69 45 - - - +
LSH LoopStatusHigh 67 43 - - - +
LSL LoopStatusLow 66 42 - - - +
LSO Loop Status Off 65 41 - - - +
ZN-Light
Transportcontainer für vereinfachte Zugnummernweiterschaltung 72 48 o o o o
Alte Pakete, die nicht mehr verwendet werden, sind hier gelistet, damit wir wissen, dass wir diese Nummern nicht aus Versehen für etwas Neues verwenden
Plug & Pray Konfiguration 48 30 - - - -
Zusatzinformationen für Zentralblock 54 36 - - - -

Weitere Pakete

Alles weitere sind Planungen, die zur Diskussion stehen. Falls jemand bei der Implementierung von diesem oder jenem mitwirken möchte, ist er herzlich eingeladen!

Weitere Blockbauformen

Wer weiss, was noch kommt ;-)

Beispiele

Die o.g. Bytecodes werden im sogenannten Serial Line Internet Protocol (SLIP) eingebettet. Dies dient dazu, hintereinander geschickte Pakete voneinander zu trennen. Das Trennzeichen ist C016. Beispiel eines Vorblock-Pakets in hexadezimaler Darstellung:
        C0 2A C0
Das erste C016 ist optional, schadet aber auch nicht. Man kann es als Paketende des vorausgehenden Paketes oder als Paket mit 0 Bytes Länge auffassen, welches ignoriert wird. Die 2A16 ist die Nutzlast des Paketes, in der Tabelle oben als "Vorblock" definiert. Das zweite C016 ist das Paketende des Vorblocks.

Andere Pakete haben mehr Nutzbytes und variable Inhalte. Zum Beispiel ist
        C0 2F 3F C0
die Meldung eines Hp1-zeigenden Einfahrsignals. 2F16 zeigt an, dass es sich um die Meldung eines Signalzustands handelt, 3F16 ist der Code für GO, was im Gebiet der Deutschen (Bundes-)Bahn Hp1 entspricht.

Was ist zu tun, wenn C016 selbst zur Nutzlast des Pakets gehört? C016 entspricht 192 in dezimaler Darstellung. Wenn man nun einen Achszählerstand von 192 melden möchte, wäre die Lösung vermeintlich:
        C0 2E 10 CO 00 C0
Dies führt jedoch beim Empfänger zum Missverständnis, dass das Paket schon nach den ersten beiden Nutzbytes beendet ist und dann noch ein Paket mit der Nutzlast 0016 folgt. Laut SLIP ist die Lösung hierfür folgender Algorithmus:
Ist ein Nutzbyte C016, so wird es durch die zwei Zeichen DB16DC16 ersetzt.
Ist ein Nutzbyte DB16, so wird es durch die zwei Zeichen DB16DD16 ersetzt.


Der Empfänger muss diese Zeichenfolgen ebenfalls erkennen und wieder durch die ursprünglichen Nutzbytes C016 und DB16 ersetzen. Das korrekte Paket zur Meldung von 192 Achsen lautet also:
        C0 2E 10 DB DC 00 C0
Durch dieses Protokoll sind beliebig lange Zeichenketten aus allen 256 Zeichen übertragbar.

Die Realisation der Übertragung ist hier erläutert.

Autor: Stefan Bormann. Site hosted by: SourceForge Logo Valid HTML 4.01 Transitional