Hallo Modellbahner,
ich möchte mir heute erlauben, einen etwas tieferen Einblick in die serielle Datenübertragung der SUSI-Schnittstelle zu geben.
Ich war mir zu Beginn des Fadens nicht sicher ob es für Euch von Interesse ist hier so weit einzusteigen, aber die Zugriffe und Likes
haben mich den Mut fassen lassen etwas weiter einzusteigen. Vorab möchte ich Euch auf einen kleinen Ausflug in die Grundlagen
der Digitaltechnik mitnehmen. Aufbauend darauf will ich dann das SUSI-Protokoll darstellen.
Wer etwas mit den Begriffen „Bit“, „byte“, „Word“ anfangen kann,der kann diesen Teil ruhig überspringen und direkt zum Abschnitt
der Decodierung der SUSI Datenpakete gehen.
Sicherlich ist jedem bekannt, dass Informationen in der Digitaltechnik in Form von „Einsen“ und „Nullen“ übertragen und verwendet werden.
Zumindest hat jeder schon einmal davon gehört und gelesen.Diese „Einsen“ und „Nullen“ stellen dabei die kleinste Informationseinheit dar.
Diese kleinste Informationseinheit nennt man Bit. So ein Bit kann zwei Zustände annehmen, nämlich die oben erwähnte „Eins“ oder „Null“
oder „Strom An“ und „Strom Aus“.
Das folgende Bild zeigt diesen Zusammenhang anhand einer einfachen Lampenschaltung, so wie sie jeder mehrfach im Haus hat.
Diese beiden Zustände kann man folgendermaßen zusammenfassen.
"Eins" =Strom „An“ =High = true.
„Null“ = Strom „Aus“ = Low = false.
Die Begriffe High und Low werden meist in der Elektronik verwendet, wenn es um messbare Pegel an einem Bauteil geht.
True und False dagegen in der Programmierung bei der Bildung und Abfrage von logischen Zuständen.
Dezimales und duales Zahlensystem
Wie jeder sehen kann ist ein einziges Bit nur in der Lage zwei Zustände zu übertragen.Oder andersherum gesehen nur zwei Zahlen,
nämlich 1 und 0. (Das kommt uns in der Computertechnik wie gerufen, kann der Computer doch auch nur Strom An von Strom Aus unterscheiden.)
Dieses Zahlensystem nennt man auch Dualsystem, da es wie gesagt mit nur zwei Zahlen auskommt.Jeder von uns rechnet aber jeden Tag
im Dezimalsystem. Das Dezimalsystem kennt neben 0 und 1 noch die Zahlen 2 bis 9. Das Dezimalsystem ist für uns so selbstverständlich,
dass wir locker im Kopf den Übertrag bilden können, ist eine Zahl einmal größer als neun. Im Dualsystem verhält es sich exakt genauso wie im
Dezimalsystem, nur dass der Übertrag nicht bei der Zahl 9, sondern bei der Zahl 1 entsteht.
Beispiel: Im Dezimalsystem ständen auf meinem Einkaufszettel 2 Eier. Im Dualsystem dagegen 10 Eier.
Das stellt sich die Frage was zu tun ist, um neben Eiern zum Beispiel die Geschwindigkeit einer Lok im Bereich von 0-127 im Computer
verständlich darzustellen? Wir brauchen also ein Verfahren, um die Dezimalzahlen in Dualzahlen umzuwandeln oder einen Konverter.
Da ich hier keine Mathematikstunde geben möchte, belassen wir es bei einem kleinen Beispiel.Wer da tiefer einsteigen möchte,
das Netz ist voll von Tutorien.
Der Einfachheit halber gehen wir gedanklich den umgekehrten Weg. Nehmen wir an, wir möchten die Lokfahrstufe die in einer Dualzahl
dargestellt ist im Dezimalsystem wissen. Oben sprach ich davon, dass bei einer Zahl größer als Eins ein Übertrag stattfindet.
Dazu hat jede Stelle in einer Dualzahl einen entsprechenden Stellenwert im Dezimalsystem. Der Stellenwert errechnet sich aus dem
vielfachen des Exponenten der Zahl 2. Der Exponent gibt also gleichzeitig die Position des einzelnen Bits bei 0 beginnend an.
Addiert man jetzt die entsprechenden Stellenwerte zusammen, kommt man auf den Wert im Dezimalsystem.
Hört sich kompliziert an, ist aber simpel. Das folgende Beispiel soll es verdeutlichen:
Um die Dualzahl jetzt umzuwandeln, addiert man einfach alle dezimalen Stellenwerte (zweite Reihe) unter denen
eine 1 in der Dualzahl steht (dritte Reihe). Man sagt auch: Nur die gesetzten Bit’s addieren.
1 + 8 + 16 = 25 = Wert der Lokfahrstufe
Wer möchte, kann ja jetzt mal mit den Zahlen spielen und nachschauen welche größte Dezimalzahl sich mit den 8 Stellen (Bits)
der Dualzahl darstellen lässt. Um mehrere Bits zusammenzufassen hat man sich etwas einfallen lassen und Gruppen einzelner Bits
mit Sammelbegriffen versehen.Es gibt noch mehr Bezeichnungen aber für unsere weiteren Betrachtungen sind nachfolgend aufgeführte Begriffe ausreichend.
BYTE (8Bit)
Eine Zahl die in 8 einzelnen Bits, so wie in unserem Beispiel, dargestellt wird nennt man auch ein Byte.Mit einem Byte (8Bit) kann ich alle Zahlen zwischen 0 und 255 darstellen.
WORT (16Bit) (engl. Word)
Zwei Byte ergeben ein Wort.Mit einem Wort (16Bit) können alle Zahlen zwischen 0 und 65.535 dargestellt werden.
DOPPELWORT (32Bit) (engl. Double)
Mit einem Doppelwort lassen sich alle Zahlen zwischen 0 und 4.294.967.295 darstellen
Programmierer arbeiten zusätzlich (eigentlich meistens) mit einem weiteren Zahlensystem. Dieses Zahlensystem nennt sich Hexadezimalsystem und hat als Basis den Wert 16.
„Zufällig“ entspricht das genau der größten darstellbaren Zahl von 4Bit im Dualsystem.Das Hexadezimalsystem ist deshalb unter Programmieren das Zahlensystem
schlechthin, weil es große Zahlen recht kompakt darstellen kann. Für uns reicht es zu wissen, dass es das gibt, auch wenn ich weiter unten damit arbeite.
Wer wissen möchte wie die Zahlen in den unterschiedlichsten Zahlensystemen aussehen, der kann die Taschenrechner-App z.B. von Windows verwenden.
Dieser lässt sich in einen Programmierer Modus umschalten und konvertiert alle Zahlen in die verschiedensten Zahlensysteme. Kreuz und quer nach Belieben.
(Gibt es auch auf MAC und Linux).
Das Bild zeigt unsere Lokfahrstufe „25“ von oben in den verschiedenen Zahlensystemen.
Mit diesen Grundlagen bewaffnet stelle ich Euch demnächst das SUSI-Protokoll im Detail vor.
Bis dahin wünsche ich wieder viel Spaß beim Lesen.
Mit freundlichen Modellbahnergrüßen
Thomas