SX Bus Signale

SX Bus

Zur Steuerung von Weichen, Signalen und zur Abfrage von Handreglern und Belegtmeldern verwendet Selectrix den sogenannten SX-Bus mit fünfpoligen DIN-Steckern und -Buchsen. sx-buchse
An den fünf Anschlüssen liegen Masse, +20 V Gleichspannung (Achtung, die 20 V bekommen dem µC nicht gut!) und drei digitale Signale, die alle 5-V-Pegel haben.

Die digitalen Signale, die das Selectrix Signal ausmachen, sind das Takt- (T0) und das Datensignal (T1), das die Zentrale sendet. Mehr zum Rücksignal „D“, welches z.B. die Handregler auf den Bus legen, später.

Das Grundprinzip eines Selectrix-Decoders ist, dass wir bei jedem Taktpuls den Wert des Datensignals T1 einlesen (0 oder 1). Dies ist der Selectrix „Datenstrom“, aus dem wir die Werte der einzelnen Selectrix-Kanäle berechnen.

Datenstrom Dekodierung

Selectrix sendet die 112 Kanäle (= Adressen) in 16 verschiedenen Datenpaketen zu jeweils sieben Kanälen, (7 * 16 = 112). Dies erfolgt in einem festen Zeitraster, so dass sich die Datenpakete alle 77 Millisekunden wiederholen.

Die ständige Wiederholung bewirkt automatisch eine gewisse Störsicherheit, die SX-Zentrale entscheidet nicht (anders als bei z.B. DCC), wie häufg ein Kanal wiederholt werden muss.

Das Taktsignal ist jeweils 10 µsec auf 0 (= 0 V), dann 40 µsec auf 1 (= + 5 V), die Taktfrequenz beträgt also 20Khz. Hier T0 und T1 Signal im Scope:

sx-signal-scopeSie wurden aufgenommen am Eingang eines Arduinos nach den 27-kΩ-Widerstände des Interfaces. Diese bilden zusammen mit der Eingangskapazität des Mikrocontrollers jeweils einen Tiefpass, die das Takt- (T0, gelb oben) und das Datensignal (T1, blau unten) verschleifen. Aber auch, wenn die Signale nicht mehr ideal rechteckig sind, können sie eindeutig gelesen werden. Die Abtastung muss jeweils bei der steigenden Flanke des Takts (siehe die senkrechten Linien) erfolgen. Im Beispiel ergibt sich die Bitfolge 1 0 0 1 0.

Um in einem seriellen Datenstrom feststellen zu können, wo man sich gerade befindet, benötigt man eine Synchronisation, einen Anfang des Datenpakets. Das SX-Protokoll verwendet hierfür die Bitfolge 0 0 0 1 – die sonst natürlich nicht vorkommen darf.

Mit dieser Bitfolge (genannt SYNC) beginnt jedes der 16 Datenpakete. Danach folgt ein Bit, das angibt, ob gerade eine Spannung auf dem Gleis liegt, gefolgt von einem Trennbit, das immer den Wert 1 hat. Die nächsten vier Bits (Wertebereich 0 – 15) enthalten die Basisadresse, die aussagt, welches der 16 Pakete folgt. Die Codierung (Bitreihenfolge) ist hier [Bit3] [Bit2] [1] [bit1] [bit0] [1], also mit zwei zwischen die Datenbits eingeschobenen Bits mit Wert 1.

Warum kommt die SYNC-Bitfolge nicht im sonstigen Bitstrom vor? Ein Daten-Byte (= 8 Bits) wird bei SX nicht als acht aufeinander folgende Bits gesendet, sondern es wird jeweils nach zwei Bit Nutzdaten ein Bit mit Wert 1 eingefügt. Beispiel: Das Wert (dezimal) 43 soll gesendet werden, die Bitfolge ist also 43 = (32 + 8 + 2 + 1) = 0 0 1 0 1 0 1 1.

Daraus wird bei SX 0 0 1 1 0 1 1 0 1 1 1 1, also ein auf zwölf Bit verlängertes Daten-“Bytes“. Die SYNC-Folge 0 0 0 1 kann nun im Datenstrom nicht mehr vorkommen, da nach spätestens zwei Datenbits eine 1 gesendet wird.

aufbau-des-sx-datenstroms
 

Weiter zu: