|
Wie wir festgestellt haben, werden vom Terminal nur Datenpakete übertragen, die aus 9 Datenworten zu je 8 Bit bestehen.
Jedes Datenpaket besteht also aus 9 Byte. Von den 9 Byte haben 3 Byte eine feste Funktion, während die anderen 6 Byte unterschiedliche Bedeutungen haben.
Das erste Byte ist immer $55 und kennzeichnet den Beginn eines Datenpaketes.
Das zweite Byte gibt immer die Art der Information, die übertragen wird, an.
Die nachfolgenden sechs Bytes enthalten die eigentliche Information.
Das letzte Byte gibt eine Prüfsumme an, an Hand derer man feststellen kann, ob die vorangegangen Bytes fehlerfrei übertragen wurden. Bei der Prüfsumme handelt es sich um eine Variante des Standard 8-Bit CRC allerdings mit anderen Startwerten.
Für Controlleranwendungen bietet sich die Tabellen Version des Konvertierungsalgorithmuses an. Die Tabelle wird wie üblich erstellt und basiert auf dem Wert $31. Die Prüfsumme wird über alle Bytes eines Datenpakets gebildet (mit Ausnahme der Prüfsumme). Am Ende muss die Prüfsumme noch mit $BB geexored werden.
Es gibt verschiedene Datenpakete, das wohl wichtigste ist das
Reglerpaket: $55 $FF R0 R1 R2 R3 R4 R5 PS etwa alle 102ms und immer wenn eine Änderung eines Reglers (Spurwechsel oder Geschwindigkeitsänderung) festgestellt wird. (Siehe auch Regler Internas)
Das Datenpaket teilt den Autos mit mit welcher Geschwindigkeit sie fahren sollen und ob der Spurwechseltaster am Regler gedrückt ist oder nicht. Das Paket überträgt immer Informationen für 6 Autos unabhängig davon wieviele Regler angeschlossen sind.
| $55 |
Start des Datenpakets |
| $FF |
Kennung für ein Reglerpaket |
| R0 bis R5 |
Je ein Byte pro Regler. Die Terminals zählen die Regler durch, wobei sie mit der 0 beginnen. Ist ein Regler nicht angeschlossen, so hat das entsprechende Byte den Wert $AA. Ist ein Regler angeschlossen so hat sein Byte das folgende Format:
| Bit 7 |
Immer 1 |
| Bit 6 |
Immer 1 |
| Bit 5 |
= 0 Licht an; = 1 Licht aus |
| Bit 4 |
= 0 Taste am Regler gedrückt; = 1 nicht gedrückt |
| Bits 3 bis 0 |
Fahrzeuggeschwindigkeit 0 bis 15 |
|
| PS |
Prüfsumme |
Zuweisungspaket: $55 $CC RG $FE $FF $FF $FF $FF PS sobald beim Zuordnen eines Autos zu einem Regler (Program-Taste am Terminal) die Taste des Reglers gedrückt wird, wird dieses Paket zweimal gesendet.
Dieses Datenpaket teilt dem Auto mit welche Fahrzeugnummer es erhalten soll.
| $55 |
Start des Datenpakets |
| $CC |
Kennung für ein Zuweisungspaket |
| RG |
Enthält u.a. die Nummer des Reglers. Die Regler werden von 0 an durchnummeriert.
| Bit 7 |
Immer 1 |
| Bits 6 bis 3 |
Immer 0 |
| Bits 2 bis 0 |
Die Nummer des Reglers. |
|
| $FE $FF $FF $FF $FF |
Immer gleich.
|
| PS |
Prüfsumme |
Busfreigabepaket: $55 $AA ZÄ NN $F0 $F0 $F0 $F0 PS sobald mindestens ein Auto einen Reedkontakt des Anschlusstückes auslöst, wird diese Paket zweimal im Abstand von 1,7 ms gesendet. Dabei ändert sich der ZÄ Wert. Nach 100ms werden die beiden Pakete noch einmal gesandt, unabhängig davon ob ein Auto seine Kennung schickte oder nicht.
Diese Pakete zeigen den Autos an, dass das Terminal in Kürze aufhören wird die Leiter zu versorgen und dass das Auto, das das Ziel durchfahren hat, nun seine Kennung schicken kann.
Wie der genaue Ablauf einer Zieldurchfahrt ist, wird an anderer Stelle beschrieben.
| $55 |
Start des Datenpakets |
| $AA |
Kennng für ein Busfreigabepaket |
| ZÄ NN |
Die zwei Byte bilden einen Quotienten der Form ZÄ / NN und geben vermutlich an wielange es noch dauert bis der Bus frei ist. Die Werte beim S-Terminal sind $06/$06 = 1 und $12/$06 = 3 beim B-Terminal $18/$06 = 4 und $0C/$06 = 2
|
| $F0 $F0 $F0 $F0 |
Immer gleich.
|
| PS |
Prüfsumme |
Zieldurchfahrtpaket: $55 $EE R0 R1 R2 R3 R4 R5 PS sobald mindestens ein Auto seine Kennung nach einem Busfreigabe Paket gesendet hat, wird dieses Paket zweimal gesendet.
Diese Pakete identifizieren die Fahrzeuge, die gerade das Ziel durchfahren haben.
| $55 |
Start des Datenpakets |
| $EE |
Kennng für ein Zieldurchfahrtpaket |
| R0 bis R5 |
Ein Byte für jeden Regler. Ist das Byte $E7 so hat dieses Fahrzeug das Ziel durchfahren. Alle anderen Werte bedeuten, dass das Fahrzeug nicht das Ziel durchfahren hat
|
| PS |
Prüfsumme |
Platzierungspaket: $55 $D3 P0 P1 P2 P3 P4 P5 PS nach einer Zieldurchfahrt und dann alle 300ms.
Diese Pakete enthalten die Fahrzeugnummern in der Reihenfolge ihrer gegenwärtigen Platzierung.
| $55 |
Start des Datenpakets |
| $D3 |
Kennng für ein Platzierungspaket |
| P0 bis P5 |
Ein Byte für jeden Position beginnend mit dem Führenden. Hat das Byte den Wert $FF dann gibt es kein Fahrzeug auf dieser Position, weil z.B. weniger Fahrzeuge am Rennen teilnehmen oder noch nicht alle Fahrzeuge gestartet sind.
| Bit 7 |
1 ausser wenn das Fahrzeug mehr als 15 Runden hinter dem Führenden zurück liegt. |
| Bits 6 bis 3 |
Die Anzahl der Runden (0 - 15), die das Auto hinter dem führenden liegt. 0 Falls das Auto mehr als 15 Runden hinter dem Führenden zurück liegt. |
| Bits 2 bis 0 |
Die Fahrzeugnummer (0-5) |
|
| PS |
Prüfsumme |
Rundenzeitpaket: $55 $D4 FN RU1 RU0 VS Z1 Z0 PS nach einer Zieldurchfahrt und dann alle 300ms.
Dieses Paket enthält die aktuelle Anzahl Zieldurchfahrten und Rundenzeit des angegebenen Fahrzeugs. Es werden immer nur die Daten des/der Fahrzeug/e übertragen, die als letzte das Ziel durchfahren haben.
| $55 |
Start des Datenpakets |
| $D4 |
Kennung für ein Rundenzeitpaket |
| FN |
Fahrzeugnummer (0-5) |
| RU1 RU0 |
Diese beiden Bytes geben zusammen mit Bit 0 von VS die aktuelle Runde an. Runde = 256 * RU1 + RU0 + Bit 0 von VS
|
| VS |
Verschiedenes
| Bits 7 bis 4 |
Immer 0 |
| Bit 3 |
Ist das Bit gesetzt werden 256 zum Zeitwert hinzugezählt. |
| Bit 2 |
? |
| Bit 1 |
? |
| Bit 0 |
Gerade (0) oder ungerade (1) Rundenzahl |
|
| Z1 Z0 |
Diese beiden Werte zusammen mit Bit 3 von VS bilden den Grundwert für die Rundenzeit. Grundwert= 256 * Z1 + Z0 Sollte Bit 3 von VS gesetzt sein, so wird der Grundwert um 256 erhöht.
Die Rundenzeit ergibt sich wenn man den Grundwert mit 0,01024 multipliziert.
Ich bin mir dieses Wertes nicht ganz sicher, kann ihn aber mangels eines Chronometers nicht verifizieren. Sollte sich jemand finden , der mir einen Chronometer leiht, so werde ich das gerne nachholen.
Bei der ersten Zieldurchfahrt wird die Rundenzeit mit 0 angegeben.
|
| PS |
Prüfsumme |
Rundenzählerpaket: $55 $D5 RI RU2 RU1 RU0 $FF $FF PS sobald die Starttaste lange genug gedrückt wurde wird dieses Paket zweimal gesendet.
Dieses Datenpaket teilt den Geräten die Startrundenzahl und die Zählrichtung mit.
| $55 |
Start des Datenpakets |
| $D5 |
Kennung für ein Rundenzählerpaket. |
| RI |
Zählrichtung einer der folgenden Werte
| 00 |
hoch zählend |
| FF |
herunter zählend. |
|
| RU2 RU1 RU0 |
Startrundenzahl = 256 * RU2 + 16 * RU1 + RU0
Diese Formel ist richtig. Es werden nur die unteren 4 Bit eines jeden Bytes verwendet.
|
| $FF $FF |
Immer gleich.
|
| PS |
Prüfsumme |
Qualifyingpaket: $55 $DB RU2 RU1 RU0 FZ $FF $FF PS ird an die Fahrzeuge nach dem Einstellen des Qualifying Modus gesendet.
| $55 |
Start des Datenpakets |
| $DB |
Kennung für ein Qualifyingpaket. |
| RU2 RU1 RU0 |
Startrundenzahl = 256 * RU2 + 16 * RU1 + RU0
Diese Formel ist richtig. Es werden nur die unteren 4 Bit eines jeden Bytes verwendet.
|
| FZ |
Die Anzahl der Fahrzeuge, die am Qualifying teilnehmen. |
| $FF $FF |
Immer gleich.
|
| PS |
Prüfsumme |
Resetpaket: $55 $D0 §FF ZÄ NN $AA $AA $AA PS sobald die Starttaste lange genug gedrückt wurde wird dieses Paket zweimal gesendet.
Dieses Datenpaket teilt mit, dass die Starttaste gedrückt wurde und die Rundenzahl, Rundenzeiten und Platzierungen zurückgesetzt wurden.
| $55 |
Start des Datenpakets |
| $D0 |
Kennung für ein Resetpaket. |
| $FF |
Immer $FF |
| ZÄ NN |
Die zwei Byte bilden einen Quotienten der Form ZÄ / NN
|
| $AA $AA $AA |
Immer gleich.
|
| PS |
Prüfsumme |
Startpaket: $55 $DD $00 $AA $AA $AA $AA $AA PS sobald die Starttaste lange genug gedrückt wurde wird dieses Paket zweimal gesendet nachdem das Resetpaket zweimal gesendet wurde.
Das Paket kennzeichnet den Rennbeginn.
| $55 |
Start des Datenpakets |
| $DD |
Kennung für ein Startpaket. |
| $00 $AA $AA $AA $AA $AA |
Immer gleich.
|
| PS |
Prüfsumme |
Endpaket: $55 $DC $FF $FF $FF $FF $FF $FF PS sobald das letzte Fahrzeug die Ziellinie überquert oder das Rennen abgebrochen wird, wird dieses Paket zweimal gesendet.
| $55 |
Start des Datenpakets |
| $DC |
Kennung für ein Endpaket |
| $FF $FF $FF $FF $FF $FF |
Immer gleich.
|
| PS |
Prüfsumme |
Benzinstandpaket: $55 $D6 S0S1 S2S3 S4S5 $14 $50 $AA PS Etwa alle 500ms (sehr unregelmässig) wird der aktuelle Benzinstand gesendet.
| $55 |
Start des Datenpakets |
| $D6 |
Kennung für ein Benzinstandpaket |
S0 S1 S2 S3 S4 S5 |
Diejeweils 4 höheren und niedrigeren Bits geben den Füllstand eines Fahrzeuges an. Die höheren Bits entsprechen dem Auto mit der niedrigeren Nummer. Der Füllstand beginnt bei 8 und zählt dann herunter. Er entspricht der Anzahl grüner Leds auf der Boxengassenanzeige.
|
| $14 $50 oder $00 $50 |
Vermutlich wieder ein Quotient.
| $14 $50 |
Falls Benzin Verbrauch aktiv entspricht dezimal 0,25. |
| $00 $50 |
Falls Benzin Verbrauch nicht aktiv entspricht dezimal 0. |
|
| $AA oder $FF |
Selten $FF aber ich weiss nicht wann.
|
| PS |
Prüfsumme |
AnzeigeWechselPaket: $55 $DE WE $FF $FF $FF $FF $FF PS wird an das Chronometer gesendet um ihm mitzuteilen, dass ein Wechsel der angezeigten Werte zu erfolgen hat. Es gibt keine Funktionszuordnung. Es sagt nur Wechseln nicht wohin oder wovon.
Die Boxengasse erzeugt diese Pakete wenn man den rES wählt.
Beim ersten Drücken der Select Taste wird kein Paket gesendet. Beim zweiten Drücken der Select Taste wird ein Paket mir WE gleich 0 gesendet. Beim nächsten Drücken der Select Taste wird ein Paket mir WE gleich 0 und eins mit WE gleich 1 gesendet. Beim nächsten Drücken der Select Taste wird ein Paket mir WE gleich 1 und eins mit WE gleich 0 gesendet.
Danach wiederholen sich die letzten beiden Pakete.
Verlässt man den rES Modus beginnt die Sqeuenz beim nächsten Aufruf von vorne.
| $55 |
Start des Datenpakets |
| $DE |
Kennung für ein AnzeigeWechselPaket. |
WE
|
Wechsel Entweder 0 oder 1.
|
| $FF $FF $FF $FF $FF |
Immer gleich.
|
| PS |
Prüfsumme |
Bremsenpaket: $55 $D7 RG BR $83 $93 $DB $FF PS wird an das Fahrzeug in der Boxengasse gesendet um die Bremswirkung ein zu stellen.
Das Paket erscheint nur in der Boxengasse.
| $55 |
Start des Datenpakets |
| $D7 |
Kennung für ein Bremsenpaket |
RG
|
Die Nummer des Reglers der gedrückt wurde (0-5)
|
| BR |
Einer der folgenden 3 Werte
| $00 |
Keine Bremse |
| $02 |
Halbe Bremswirkung |
| $04 |
Volle Bremswirkung |
|
| $83 $93 $DB $FF |
Keine Ahnung
|
| PS |
Prüfsumme |
|