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.
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 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.
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.
Schematische Darstellung der Lösung
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 Konfiguration
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
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.
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
Als nächstes wird dem Block der entsprechende Railcom-Detector RCD-1 zugeordnet.
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.
Erstellung eines Blockwärters
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 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.
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.
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.
Funktionsfähige Zugverfolgung
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
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.
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.
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.
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.
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.
Zuordnung einer Railcom-Adresse als Transponder-ID zu einer Lok
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.
Erkannter Zug