Transponder-Emulation für Tams RCLink

Beschreibung

Das Railcom Interface der Firma Tams (RClink) bietet endlich die Möglichkeit, Railcom mit dem PC zu nutzen. Neben weiteren Features kann zum Beispiel eine Zugerkennung über die Lokadresse realisiert werden.
Leider ist die Unterstützung der größeren Softwarehersteller zur Zeit(April 2010) sehr eingeschränkt. Aus diesem Grund habe ich nach Möglichkeiten gesucht, mit einem offengelegten Protokoll von bereits in der Modellbahnsoftware vorhandenen Zugerkennungssysteme diese mit wenig Aufwand zu emulieren. Auf Grund der Verfügbarkeit der Protokolle für das Helmo/LDT Transpondersystem mit den Interface Inter-10 und TD-88 von Littfinski Datentechnik konnte ich für den RClink zwei unterschiedliche Emulatoren erarbeiten, die eine Zugerkennung mittels Railcom-Daten durch Transponderemulation bereitstellen. Alle anderen Railcom-Möglichkeiten bleiben dadurch natürlich ungenutzt.
Das Helmo-Transpondersystem ermöglicht die Übergabe der IDs von an den Modellfahrzeugen angebrachten Passiv-Transpondern von bis zu 99 Lesegeräten auf den Transponderbus . Dabei wird bei der Einfahrt in den Lesebereich eine 32bit ID über das jeweilige Transponderinterface an den PC übermittelt, der sie mit einem entsprechenden Eintrag in der Lokdatenbank vergleicht.
Bei Railcom wird die Lokadresse(CV1) permanent ausgesendet, so das ein Railcomdetector, z.B. RCD-1 von Tams, diese Adresse zusammen mit seiner Detector-ID auf den Railcom-Bus legt, wo sie vom RClink an den PC übermittelt wird.
Der Emulator setzt nun die Lokadresse quasi der Transponder-ID gleich. Die oberen 16Bit einer Transponder-id wir auf Null gesetzt. Aus der übertragenen 16Bit Adressinformation wird die Richtungsinformation ausgeblendet und in die unteren 16bit der Transponder-ID eingeblendet. Mit der nun übermittelten Pseudo-Id kann die Modellbahnsoftware wie mit einer echten Transponder-ID arbeiten.

TD-88 Emulator

Der Emulator für TD-88 ist eine Microcontrolerlösung, die in einen vorhandenen S88 Rückmeldebus eingeschleift wird. Dieser S88-Rückmeldebus muss über ein LDT HSI-88 an den PC angeschlossen werden. Andere S88-Interface als das HSI88 werden von den Modellbahnsoftwareherstellern meist nicht unterstützt. Wie beim Inter-10 Emulator wird die Lokadresse auf eine Transponder-ID gemappt. Diese wird in 4 S88-Zyklen als S88-Rückmeldung an das Interface übertragen. Eine zweite S88-Adresse wird als Pseudo-Belegmelder verwendet, indem bei registrierter Adresse an einem Detector ein Rückmeldebit gesetzt wird. Leider ist mit dem RCD-1 keine echte Belegmeldung nach dem Stromfühlerverfahren möglich. Da ein S88-Modul nur 16bits hat, unterstützt der TD-88 Emulator nur 16 statt der 24 möglichen Detectoradressen. Somit belegt der TD-88 Emulator 2 S88-Moduladressen.

Der TD-88 Emulator wurde als Minimallösung mit einem AVR Mega8 und einem RS232-Interfacebaustein konzipiert. Nachfolgende S88-module werden per Software durchgereicht. Der RCLink wird entweder direkt (seriell) an den Emulator angeschlossen, oder z.B. für die USB-Version des RCLink über den PC durch ein Monitoring-Programm angesteuert.
Schaltplan
Schaltplan des TD-88 Emulator

Der ATMEGA8 ist eigentlich schon viel zu gross für die Anwendung, ist aber der kleinste Typ mit Bootloader. Ich habe einen modifizierten STK500V2-Bootloader implementiert. Die Software wurde in BASCOM realisiert. Die beiden Anschlussmöglichkeiten der seriellen Schnittstelle dürfen nicht gleichzeitig benutzt werden.

Leider habe ich nach einiger Zeit festgestellt, dass diese Lösung mM. nur begrenzt sinnvoll ist. Man benötigt ein RCLink mit seriellem Interface, welches ohne PC direkt über ein HSI88 melden kann und man darf nicht mehr als 16 Detectoren haben. Dazu kommt, das die Übertragung vom RCLink nicht immer sauber ist, so das man ständig hinterher ist, irgendwelche sporadisch auftretenden Zustände im AVR zu unterdrücken.
Ich habe die Arbeit nach dem ersten Prototypen abgebrochen,da man für die Modellbahnsoftware ohnehin einen PC braucht und nicht immer ein HSI88 und ein serieller RCLink angeschlossen werden kann/soll, Es ist wesentlich einfacher die nachfolgend beschriebene Inter-10 Emulation einzusetzen, da das Inter-10 von vielen, auch älteren Programmen ohne Nebenbedingungen unterstützt wird.

Inter-10-Emulator

Beschreibung

Der Emulator für Inter-10 ist eine reine Softwarelösung. Download hier.
Das originale PCInterface Inter-10 besitzt eine serielle Schnittstelle für den direkten Anschluss an den PC, welche noramlerweise von der Modellbahnsoftware abgefragt wird. Nun wird über virtuelle ComPorts via COM0COM eine Softwarebrücke zwischen RCLink-COM-Port und die existierende Inter-10 Implementation der Modellbahnsoftware gebildet.
Da das RCLink nur bis zu 24 Lesestellen unterstützt, wird der Emulator auch nur auf die ersten 24 Adressen reagieren. Der Emulator stellt den "Spontan-2"-Modus des Inter-10 zur Verfügung, wie er vom Traincontroller benötigt wird. Die Daten des RCLink werden in das Format des Inter-10 umgewandeltund über die virtuelle Nullmodemverbindung an die PC-Software gegeben.
Implementationsschema
Schematische Darstellung der Lösung

Der Emulator wurde als schnell zu programmierende Kommandozeilenversion in Perl geschrieben und könnte theoretisch auch auf Linux eingesetzt werden. Allerdings unterstützt dort die Modellbahnsoftware meistens schon das RCLink direkt, so das der Bedarf dafür eher gering ist. Ich beschränke mich deshalb hier auf den Einsatz unter Windows, wofür ich eine selbständig laufende ausführbare Datei erstellt habe. Eine zusätzliche Perlinstallation mit den benötigten Zusatzmodulen ist deshalb nicht notwendig.

COM0COM einrichten

Als erstes muss der Gerätetreiber von der COM0COM Webseite geladen und installiert und konfiguriert werden. Dazu wird ein virtuelles Paar angelegt, welches per default für die COM-Ports die Namen CNCA0 und CNCB0 verwendet. Da man z.B. im Traincontroler die tatsächlich vorhandenen Schnittstellen nicht ermittelt, sonder nur eine statische Auswahlliste von COM1-256 angeboten wird, muss der Port CNCA0 als Alias den Namen eines noch nicht im System vorhandenen ComPorts, bei mir z.B. COM16, bekommen.
COM0COM-Konfiguation
COM0COM Konfiguration

Emulator starten

Das Inter-10 Emulator Programm erwartet als Parameter den COM-Port an dem der RCLink angeschlossen ist. Das ist entweder der virtuelle COMPort des RCLink-USB-Treibers oder der echten ComPort für den seriellen RCLink, bei mir COM2
Als 2. Parameter wird ein virtueller ComPort des COM0COM-Paares benötigt, z.B. CNCB0. Dorthin wird der Inter-10 Emulator die Daten schreiben, welche am anderen Ende des Paares(z.B. COM16) von der Modellbahnsoftware abgeholt werden.
Beispiel:

rclinteremu.exe COM2 CNCB0

Als optionaler dritter Parameter kann ein beliebiges Zeichen zur Einschaltung einer Debugausgabe angegeben werden.
Screenshot Emulator
Screenshot des laufenden Emulatorprogrammes

Modellbahnsoftware konfigurieren

Nachdem die Anlage eingeschaltet und das Emulator-Programm wie beschrieben gestartet wurde, kann die Modellbahnsoftware konfiguriert werden.
Ich zeige das am Beispiel des Traincontroller7 Gold von Freiwald Software und Railware6 von Railware.
Da die Unterstützung des Helmo-Systems schon seit längeren in der Software integriert ist, kann man in den meisten Fällen auch ältere Versionen (z.B Traincontroler 5.8 und Railware5) nutzen, um in den Genuss der Zugerkennung mittels Railcom zu kommen ohne ein Update erwerben zu müssen.

Traincontroler7

Nach dem Start des Traincontrollers muss ein neues Digitalsystem konfiguriert werden (Datei->Digitalsystem einrichten->hinzufügen). Dabei ist "Helmo Inter-10" (unter "weitere Systeme) einzurichten.
Interface definition
Interface Definition

Als nächstes wird dem Block der entsprechende Railcom-Detector RCD-1 zugeordnet.
Block Definition
Zuordnung eines Detectors zu einem Block

Der Block bekommt als Belegmelder einen Bahnwärter. Dafür wird gemäß des Vorschlages von Hrn. Freiwald die Bedingung "aktueller Block" ausgewertet.
Blockwärter Definition
Erstellung eines Blockwärters

Belegmeder
Zuordnung des Blockwärters als Belegmelder zum Block

Jetzt muss einer Lok/Zug die ausgesendete Railcom-Adresse als Transponder-ID zugewiesen werden. Dazu müssen zunächst alle Loks/Züge aus den Bereich aller Railcom-Detektoren gefahren werden. Dann wird in den Lokeigenschaften die Zugerkennung definiert.
Zugerkennung konfigurieren
Zugerkennung einer Lok konfigurieren

Bei Klick auf Einstellen erscheint das nachfolgende Fenster. Jetzt wird eine Lok in den Erfassungsbereich eines Detectors gefahren. Wenn das Kontrollfeld das grüne OK-Kennzeichen hat, wurde die Lokadresse als Transponder-ID hinterlegt.
Adress-Definition
Zuordnung einer Railcom-Adresse als Transponder-ID zu einer Lok/Zug

Damit ist die Konfiguration abgeschlossen. Fährt man nun mit der vorher konfigurierten Lok in den Block ein, wird diese dem Block zugewiesen. Für die Nutzung der Zugverfolgung ist allerdings noch ein echter Belegmelder notwendig, sonst verbleibt der Block mit einer Reservierung für diese Lok. Die Funktionsfähigkeit der Zugerkennung kann man sehen, wenn im Block-Tooltip als "Erfasster Zug" die richtige Lok steht.
erkannte Lok
Funktionsfähige Zugerkennung

Für die Zugverfolgung ist es nun wichtig, das alle Blöcke einen Belegmelder erhalten. Da für den RCD-1 z.Z. kein echter Belegmelder zur Verfügung steht, wurde der Belegmelder im Block mit der Zugerkennung als Bahnwärter realisiert. Die anderen Blöcke haben einen normalen Belegmelder (Stromfühler)
Bewegt sich nun der zuvor erkannte Zug aus dem Erfassungsbereich des RCD-1 und fährt in den nächsten Block mit Belegmelder, wird die Zuganzeige entsprechend mitgeführt.
Zugverfolgung
Funktionsfähige Zugverfolgung

Railware6

Die Konfiguration für Railware ist ein wenig anders.
Zunächst wird nach dem Aufruf des Starterprogrammes nur der Menupunkt "Programmoptionen" aufgerufen. Dort wird die grundsätzliche Nutzung der Zugerkennungsfunktionen aktiviert
RW6 Programmoptionen
Railware6 Programmoptionen

Anschliessend werden die "Systemoptionen" aufgerufen, um das Interface zu konfigurienen. Im Abschnitt Zugerkennung wird dann "Helmo Inter-10/S" (Betonung liegt auf das "/S" für Spontanmodus) einzurichten.
RW6 Interface Definition
Interface Definition
Anschliessend kann man das Gleisbild starten, welches seinerseits zuerst das Interface-Programm aufruft. Der Status sollte dann für die konfigurierte Schnittstelle "grün" sein.
RW6 Interface Status
Interface Status

Ist das nicht der Fall, ist zu prüfen, ob das rclinteremu Programm schon läuft und der richtige COM-Port configuriert ist. Es hat sich auch als einfacher erwiesen, wenn schon eine eine Railcom-Lok im Detectorabschnitt steht. Mit einem Klick auf den entsprechenden Interface-Button bekommt man Zusatzinformationen.
RW6 StatusDetails
Interface Status Details

Als nächstes wird dem entsprechenden Zuganzeiger der Railcom-Detector zugeordnet. Dazu wird der Zuganzeiger markiert und die Eigenschaft Zugerkennung mit der Detectoradresse versehen.
Block Definition
Zuordnung eines Detectors zu einem Zuganzeiger

Auch bei Railware muss einer Lok/Zug die ausgesendete Railcom-Adresse als Transponder-ID zugewiesen werden. Man kann in Railware sowohl einem Zug als auch der Lok oder beidem die TransponderID zuweisen. In meinen Test habe ich aber festgestellt, das bei mir willkürlich der Erste Zug in der DB in den Zuganzeiger gestellt wird, wenn man nur die ID bei der Lok einstellt. Möglicherweise ist das ein Programmfehler
Bei Railware kann man die ID von Hand eingeben oder auch Erkennen lassen, wenn man auf das "#" klickt. wieder müssen alle Loks/Züge aus den Bereich des Detektors gefahren werden und anschliessend die richtige Lok in diesen Bereich hinein. Dann sollte die Railcomadresse erscheinen. Jetzt muss noch gespeichert werden.
Adress-Definition
Zuordnung einer Railcom-Adresse als Transponder-ID zu einer Lok

Adress-Definition Adress-Definition2
Zuordnung einer Railcom-Adresse als Transponder-ID zu einem Zug

Damit ist die Konfiguration abgeschlossen. Fährt man nun mit der vorher konfiguriertem Zugin den Block ein, wird dieser dem Block zugewiesen. Für die Nutzung der Zugverfolgung ist allerdings noch ein echter Belegmelder notwendig, sonst verbleibt der Block mit einer Reservierung für diese Lok. Die Funktionsfähigkeit der Zugerkennung kann man sehen, wenn im Zuganzeiger der richtige Zug angezeigt wird.
Blockabschnitt
Erkannter Zug


Teil 1S88 Grundlagen
Teil 2S88 Monitor/Sniffer mit AVR
Teil 3S88 Sniffer mit AVR
Teil 4Weichenlagedetector mit S88 Rückmelder
Teil 5RCLink emuliert TD-88/Inter10

Home
Disclaimer
© 2010 Thomas Dreßler
Alle Rechte vorbehalten
letzte Änderung 14.05.2010