OpenDCC OneSpy
Überblick, Entstehung
- OneSpy ist kein BiDiB-Knoten im eigentlichen Sinn, sondern ein Spion bzw. Logger.
OneSpy liest passiv am Bus mit.
Mögliche Anwendungen sind:
- Logging: Beobachten des Busverkehrs, als Debughilfsmittel bei der Entwicklung von Knoten oder PC-Software.
- Monitoring: Auswertung von Informationen auf dem Bus, z.B. separate Anzeige von Belegtmeldungen, Lokadressen, Verschmutzungsmeldungen und Schaltzuständen Die Monitoring-Funktionen emulieren bekannte Modellbahn-Interfaces für Adressmeldung und Belegtmeldung und erlauben so die Nutzung von BiDiB-Systemen zusammen mit bisheriger Software. Das ist natürlich nur ein absoluter Notbehelf, viele der neuen Eigenschaften von BiDiB bleiben dabei auf der Strecke.
Schaltplan
-
Es sind 3 zusätzliche serielle Schnittstellen auf FTDI-USB-RS232
nötig. Diese sind auf dem OneTester als Steckverbindungen vorgesehen. Optional ist auch eine
einfach Nachverdrahtung möglich.
Funktion
- Die Firmware liest den BiDiBus komplett mit und wertet die Nachrichten aus. Aus diesen Nachrichten können folgende
Informationen (zugleich!) abgeleitet werden:
- Logging des Busses: Damit kann für Test und Debugzwecke genau analysiert werden, welche Nachrichten von wem gesendet wurden. Die Nachrichten werden dabei in Klartext rückübersetzt.
- HSI88: Belegungen werden gesammelt und mittels einer HSI88-Emulation an den PC gesendet
- RCTALK: Adressmeldung werden mittels einer RCTALK-Emulation an den PC gesendet Hierzu werden mehrere Tabellen benutzt: eine Knoten-Referenztabelle und Monitoring-Tabellen für HSI88 und RCTALK. In den Tabellen für HSI88 und RCTALK ist hinterlegt, welcher BiDiB-Knoten welchen Melder zugeordnet ist.
- A) Tabelle für Adressmeldungen (RC-Talk-Tabelle)
- B) Tabelle für Belegtmeldungen (HSI88-Tabelle)
- C) Tabelle für zusätzlichen Dekoder (HSI88-Tabelle)
Basis der Analyse ist die Knoten-Referenztabelle. Diese wird anhand der Logon-Nachrichten eine erzeugt (spyref[], z.Z. max. 40 Einträge (NODETAB_SIZE)). In dieser Tabelle ist zu jedem Knoten die Unique-ID, die aktuelle Knotenadresse und der von Anwender vergebene Knotenname abgelegt. Deshalb ist es wichtig, dass der Spy vor dem Einschalten des Busses bereits aktiv ist. (Mit dem Befehl N kann man sich diese Tabelle anzeigen lassen.)
Kommt nun eine Adress- oder Belegtmeldungsnachricht am Bus, so wird in der Tabelle die Unique-ID zur aktuellen Adresse nachgeschlagen. Mit dieser Unique-ID werden nun die Monitoring-Tabellen durchgesehen, ob weitere Aktionen erforderlich sind. Monitoring-Tabellen kann man im Spy definieren, diese verknüpfen UniqueID und ev. Melderadresse mit einer Zielaktion. Es gibt drei Monitoringtabellen:
Sofern eine Übereinstimmung gefunden wird, werden die entsprechenden Daten in das jeweilige Interface eingetragen.
Die Firmware OneSpy implementiert vier serielle Schnittstellen. Auf diesen werden Protokollemulatoren verlinkt, welche sich dann aus der jeweiligen Monitoring-Tabelle bedienen. Z.Z. sind RCTalk und HSI88 als Protokollemulatoren verfügbar.
A) Adressmeldungen
- In den BiDiB-Belegtmeldern kann jeder Knoten auf allen Meldereingängen eine oder mehrere Lok-Adresse erkennen.
Diese werden auf virtuelle RC-TALK Melder abgebildet. RC-Talk bietet aber nur eine Lok-Adresse je Melder, auch ist
die Gesamtzahl der Melder (offiziell) auf 32 beschränkt. Das Protokoll kann aber auch bis zu 128 Melder
verarbeiten, zumindest in der Melde-Richtung.
Diese Abbildung wird also definiert durch Zielnummer des (virtuellen) RCTALK-Melders, sowie durch Knotennummer und Melderadresse, welche diesem virtuellen Melder zugeordnet ist. Die Firmware ist in der Lage, zwei verschiedene Melderadressen (auf einem Knoten) auf den gleichen (virtuellen) RCTALK-Melder abzubilden.
C) Belegtmeldungen
- Belegtmeldungen aus dem BiDiB-System werden auf virtuelle S88-Melder abgebildet.
Diese Abbildung wird bereichsweise definiert durch die Angabe einer Basisadresse für einen bestimmten BiDiB-Knoten. Damit werden dann die Melder dieses Knotens (die ja von 0 bis zu maximalen Melderzahl des Knotens reichen) ab der Basisadresse in das S88-Feld eingetragen. Die untersten 16 Melder sind reserviert für die Funktion C.
C) Zusätzlicher Dekoder in Abschnitt
- BiDiB-Belegtmelder können auch mehrere Dekoder in einem Abschnitt unterscheiden. Das kann man sinnvoll
nutzen: z.B. wenn man auf einen Zug aufrangieren will und die einfahrende Lok beim Betreten des Abschnittes
einen Melder auslöst, quasi eine virtuelle Lichtschranke.
Diese Funktion ist als Momentmelder gebaut: sie löst immer dann aus, wenn ein weiterer Dekoder den Abschnitt betritt (sich also die Zahl der railcom-Dekoder im Abschnitt erhöht) und bleibt dann für 3s aktiv.
Diese Abbildung wird definiert durch Zielnummer des (virtuellen) S88-Melders, sowie durch Knotennummer und Melderadresse, welche in dieser Weise überwacht werden soll.
Schnittstelle DebugIF
-
Hier kann mit 115200 8N1 ein Terminal angeschlossen werden. Über diese Schnittstelle sind zum einen die anderen 3 Schnittstellen
konfigurierbar, zum anderen sind Loggingausgaben zur Busanalyse implementiert.
- N Show Nodelist
Es wird eine Liste der aktuellen Knoten und der Knotennamen angezeigt. - R Show RC-Talk
Es wird der Status der RC-Talkemulation angezeigt, gefolgt von einer Liste der konfigurierten RC-Talk Melder (Monitoring-Tabelle für RCTalk), der Zustand dieser Melder sowie die gemeldete Adresse. - RS Simulate RC-Talk
Es folgen drei Parameter: RC_INDEX, LOKADDR, DIR.
RC_INDEX In diesem (virtuellen) RC-Talk-Melder wird eine Lok simuliert. LOKADDR Die simulierte Lokadresse. Wertebereich 1 .. 10239 DIR Richtung der simulierten Lok; 1=forward, 0=rückwärts. - RC Config RC-Talk
Anlegen der Monitoringtabelle. Es folgen optional drei oder mehr Parameter: RC_INDEX, NODE, MNUM [MNUM). Fehlen die Parameter, wird die momentane Konfiguration angezeigt.
RC_INDEX Dieser (virtuelle) RC-Talk-Melder wird konfiguriert. Es sind bis zu 32 virtuelle RC-Talk Melder möglich. NODE Der virtuelle Melder wird mit diesem Node verknüpft. Anzugeben ist hier der aktuelle Index, den man der Nodetabelle entnehmen kann (Befehl N). MNUM Der virtuelle RC-Talk-Melder wird mit diesem Melder auf dem Node verknüpft. Es können zwei Melder auf einen virtuellen RC-Talk-Melder verknüpft werden, z.B. um Strecke und Halt eines Abschnittes gleichzeitig zu erfassen. - RL Log RC-Talk
- reserved - - HC Config Monitoring-Tabelle für HSI88
Es folgen zwei Parameter: NODE, BASE. Fehlen die Parameter, wird die momentane Konfiguration angezeigt.
NODE Die Melderzuordnung dieses Nodes wird eingestellt. Anzugeben ist hier der aktuelle Index des Knotens, den man der Nodetabelle entnehmen kann (Befehl N). BASE Basisadresse der Zuordnung, Wertebereich 0 ... 1016. Die Basisadresse muß bei Division durch 8 den Rest 0 ergeben. (Beispiele: 32, 40, 128, 256) - HD Config 'Double'-Tabelle für HSI88
Es folgen drei Parameter: S88_NUM, NODE, MNUM. Fehlen die Parameter, wird die momentane Konfiguration angezeigt.
S88_NUM Dieser S88-Melder wird als virtuelle Lichtschranke definiert. (Bereich: 0..15) NODE Die Melderzuordnung dieses Nodes wird eingestellt. Anzugeben ist hier der aktuelle Index des Knotens, den man der Nodetabelle entnehmen kann (Befehl N). MNUM Dieser Melder wird mit virtueller Lichtschranke ausgerüstet - HS SImulate HSI88
Es folgen zwei Parameter: INDEX, ON_OFF Fehlen die Parameter, wird eine kurze Hilfe angezeigt.
INDEX Dieser Melder wird ein- oder ausgeschaltet. Wertebereich 0...1016 ON_OFF 0: Melder ausschalten
1 (oder kein Parameter): Melder einschalten. - O Anzeige Occupancy
Es folgen keine Parameter. Die momentane Belegung wird angezeigt.
Befehle:
Logging:
Der Logger ist sehr mächtig und kann neben der Textdarstellung auch eine weitreichende Dekodierung von Nachrichten in Klartext vornehmen.
Eine Befehlsübersicht ist mit ? <cr> abzufragen.
Schnittstelle Serial 0 (Port C0)
-
Hier wird mit 115200 8N1 ein HSI88 emuliert. HSI88 kann im Orginal maximal 496 Melder, viele PC-Programm erlauben auch nur
eine Konfiguration im Bereich bis 496. Es werden hier die ersten 496 Melder
der HSI88-Tabelle ausgegeben.
Schnittstelle Serial 1 (Port C1)
-
Hier wird mit 115200 8N1 ein weiteres HSI88 emuliert. Dieses greift mit Offset 512 in die Tabelle, damit stehen weitere
496 Melder ab Adresse 512 zur Verfügung.
Schnittstelle Serial 2 (Port D1)
-
Hier wird mit 115200 8N1 das RC-Talk Interface emuliert.
Hinweis zu TC
-
Um unter TC ein Interface mit vom Orginal abweichender Baudrate zu verwenden, muß man diese Baudrate im Devicemanager einstellen und
dann mittels eines Eintrages in railroad.ini TC anweisen, diese Einstellung auch zu verwenden. Hierzu wird eine
Zeile UseCommmDefaults=1 eingetragen (für weitere Digitalsystem mit höherer Nummer dann entsprechend
UseCommmDefaults2=1, UseCommmDefaults3=1).
