Slotbaer / Carrera Digital 124/132 / D132 & D124 Rundenzähler-Protokoll

Die nachfolgende Anleitung wurde mit grösster Sorgfalt erstellt. Trotzdem erfolgt der Nachbau auf eigene Gefahr und wir übernehmen weder Verantwortung noch Haftung für eventuell entstehende Schäden jedweder Art. Der
Umbau geht über den "normalen" Gebrauch hinaus, so dass Garantie- und Gewährleistungsansprüche erlöschen.

Hardware

Rundenzähler und Blackbox verfügen beide über Buchsen zum Anschluss einer PC-Unit.

Bei den Signalen an der PC-Unit Buchse handelt es sich um serielle Anschlüsse, die mit TTL bzw. CMOS kompatiblen Pegeln arbeiten.

Um mit einem Rechner kommunizieren zu können, muss man dem Rechner diese Signale zugänglich machen.

Weder PCs noch Macs haben dazu geeignete Anschlüsse. Moderne Rechner kommunizieren über die USB Schnitstelle mit externer Hardware.

Kabel Carrera's PC-Unit ist nichts anderes als genau so ein USB-TTL Seriell Converter.

Auf dem PC Zubehör Markt gibt es Tausende von billigen USB-Seriell Convertern. Diese verwenden allerdings RS232C Siganl Pegel und dürfen deshalb auf keinen Fall am Carrera Rundenzähler verwendet werden.

Die Firma FTDI bietet ein Kabel, das die Verbindung zwischen einer TTL kompatiblen seriellen Schnittstelle und einer USB Schnitstelle herstellt. Das Kabel wird u.a. von der Firma Segor angeboten. Es gibt noch weitere günstigere Bezugsquellen. Google hilft da weiter.

Da das Kabel allerdings auf der seriellen Seite keinen passenden Anschluss hat, muss man das Kabel an diesem Ende mit einem passenden Mini Din 6 Stecker versehen. Mac und PC Treiber für das Kabel sind ebenfalls auf der Webseite von FTDI zu finden.

Nebenstehendes Bild zeigt die Anschlussbelegung.

Eine Alternative ist es eine PC-Unit des Carrera Race Management Systems und einen handelsüblichen USB - RS232 Konverter zu verwenden. Man macht aus dem TTL SIgnal des Rundenzählers durch die alte PC-Unit ein RS232C kompatibles Signal und mit Hilfe des USB-Seriell Konverters aus dem RS232C kompatiblen Signal ein USB Signal.

Eine weitere Variante ist das Verbinden von Rundenzähler und Rechner über ein Bluetooth Modul. Luftikus beschreibt ein solchen Projekt.

Software

Die Verwendung des oben beschriebenen Konverters mit XLap, ohne dass man eine Kopie von XLap gekauft hat, ist nicht gestattet. Inzwischen gibt es neben dem Carrera eigenen XLap noch andere sowohl freie als auch kostenpflichtige Software. Auf dieser Webseite steht zum Beispiel iLap eine Software für den Macintosh zum kostenlosen Download bereit.

Hat eine Software die Verbindung mit dem Rundenzähler hergestellt, so zeigt er PC-Access an.

Solange der Rechner den Rundenzähler abfragt, bleibt diese Anzeige erhalten. Hört der Rechner auf den Rundenzähler abzufragen erlischt nach kurzer Zeit das PC-Access und der Rundenzähler kehrt in den normalen Betriebsmodus zurück.

Das Protokoll

Wie schon erwähnt handelt es sich um eine serielle Schnittstelle, eine asynchrone Datenübertragung im NRZ Verfahren. Die Übertragungsparameter sind 19200 Baud, 8 Bit, Keine Patität, 1 Stop Bit.

Die Kommunikation wird vom Rechner gesteuert, der Rundenzähler sendet Daten nur als Antwort auf Anfragen.

Der Rechner muss also ständig Anfragen senden.

Es gibt Befehle zum Lesen und zum Schreiben von Daten.

Lesebefehle (Lesen vom Rundenzähler)

In allen nachfolgenden Beschreibungen sind Zeichen, die vom Rechner gesendet werden, rot und alle Daten, die vom Rundenzähler gesendet werden, blau.

Der Rechner sendet ein Anführungszeichen gefolgt vom Befehlszeichen z.B. "H.

Nun antwortet der Rundenzähler mit dem Befehlszeichen gefolgt von den Antwortdaten, einer Prüfsumme und einem abschliessenden $, z.B.: H11$.

Die übertragenen Daten sind entweder ASCII Zeichen oder sie stellen binäre Werte dar.

In unserem Besipiel ist die erste 1 das ASCII Zeichen 1.

In der Übertragung ">><?;$ handelt es sich um einen binären Bytewert.

Ein Bytewert wird durch zwei Zeichen dargestellt. Es werden nur jeweils die unteren 4 Bit jeden Zeichens verwendet. Innerhalb eines Bytes werden zuerst die niederwertigen 4 Bits übertragen und dann die höherwertigen Bits.

in unsererem Beispiel stammen die unteren 4 Bit vom < und die oberen vom ?. Die ASCII Werte der Zeichen sind $3C und $3F. Das Byte hat also den Wert $FC.

Werden längere Werte übertragen, so beginnt die Übertragung mit dem höchstwertigen Byte.

Die Prüfsumme wir ermittelt indem man die unteren 4 Bits aller Daten addiert, dabei die Überträge ignoriert und das Ergebnis mit $30 verodert.

Für unser Beispiel gilt:

  • Die Datenzeichen haben die die Werte $3C und $3F.
  • $C + $F = $1B.
  • Die 1 ist ein Übertrag und wird verworfen also bleibt $B.
  • Das wird mit $30 verodert und so ergibt sich $3B.
  • $3B entspricht dem ASCII Zeichen ;.

Verfügt der Rundenzähler momentan über keine Daten so antwortet er mit einem #.
Z.B.: "??#

Ist ein Befehl unbekannt so antwortet der Rundenzähler mit einem # ohne das Befehlszeichen zu wiederholen.

Schreibbefehle (Schreiben zum Rundenzähler)

Der Rechner eröffnet wieder mit Anführungszeichen gefolgt vom Befehlszeichen.

Der Rundenzähler antwortet mit der Wiederholung des Befehlszeichens.

Nun überträgt der Rechner die Daten gefolgt von Prüfsumme und $ genau wie oben beschrieben.

Der Rundenzähler quittiert die Daten mit einem abschliessenden $.

Das ganze sieht dann z.B. so aus: "::??>$$

Befehlssatz

Der Befehlssatz des Rundenzählers ist ziemlich groß, aber fast alle Befehle laufen ins Leere. So gibt es Befehle für die Bahnabschaltung, zum Setzen und Lesen der Fahrernamen und noch so manches mehr. Aber der Rundenzähler führt die entsprechende Funktion nicht aus.

Der Befehlssatz unterscheidet sich von dem der Control Unit. Deren Befehlssatz wird hier beschrieben.

Die Minimalausstattung für einen Rundenzähler und Zeitmessprogramm auf einem Rechner

Für uns sind nur die Befehle "0 (Null), "H und "? interessant. Allesamt Lesebefehl.

 

Befehl W Daten Beschreibung
"0 0 NNNNP$ Abfrage der Versionsnummer: Die 4 N sind ASCII-Zahlen, die die Versionsnummern von Hard- und Firmware angeben. P ist die Prüfsumme und die Übertragung wird mit einem $ abgeschlossen
"? ? # Abfrage der letzten Zieldurchfahrt: Seit der letzten Abfrage erfolgte keine Zieldurchfahrt.
"? ? FBBBBBBBBP$ Abfrage der letzten Zieldurchfahrt: Das F ist eine ASCII Zahl zwischen 1 und 7, die der Fahrzeugnummer entspricht (7 = Ghostcar, 8 = Pacecar ?). Die nachfolgenden 8 Zeichen bilden ein 32 Bit Binärwort. Dies ist der momentane Zählerstand eines Timers im Rundenzähler. Er läuft mit 1 kHz. Subtrahiert man zwei aufeinanderfolgende Werte für das selbe Fahrzeug, so erhält man die Rundenzeit in Millisekunden. Die Übertragung wird wie üblich mit Prüfsumme und $ abgeschlossen.
"H H SP$ Abfrage des Rennstarts: Das übetragene Zeichen S ist immer eine 1, ausser direkt nach dem Rennstart (wenn die Startampel erlischt) dann ist das Zeichen für etwa 5 Sekunden eine 0. Die Übertragung wird wie üblich mit Prüfsumme und $ abgeschlossen.