OpenDCC, Details zur Software, echte Weichen-Rückmeldung

Einleitung

    Beim Schalten von Weichen ist immer die Gefahr gegeben, daß eine Weiche nicht schaltet. Die Folgen sind in einem automatisierten Betrieb fallweise heftig, da speziell Digitalsteuerungen normalerweise keine Möglichkeit kennen, einen Irrläufer abzubremsen - die Lok bekommt unabhängig von ihrem Ort die Fahrstufe, auch wenn sie z.B. wegen nicht schaltender Weiche auf dem Gegengleis unterwegs ist.
    Zuverlässige Weichenantriebe sind daher (neben einer funktionierenden Belegtmeldung) das A und O beim Anlagenbetrieb. Nun, Vertrauen ist gut, Kontrolle ist besser - daher haben wir im Verein nach entsprechenden Erfahrungen beschlossen, die tatsächliche Lage der Weiche zu überwachen.

    Erste Voraussetzung ist die Erfassung der Lage der Weichen - hier gibt es verschiedene Möglichkeiten.

    Weiters muß ein Rückkanal vom Weichendecoder in die Zentrale geschaffen werden - dies kann entweder über ein bidirektionales Bussystem (Sx-Bus, Loconet, MR-Bus, CAN-Bus) oder über die geplante Erweiterung von DCC (BiDi) geschehen. Auch eine Einspeisung in ein vorhandenes Rückmeldesystem (z.B. S88) wäre denkbar. Sieht man sich jedoch die notwendige Informationsmenge in Rückkanal an (max. 20 Baud, "ja, ich habe geschaltet"), so müßte auch eine einfache Ringleitung reichen, die im Multiplexbetrieb den Decodern zugeteilt wird.

    Nachdem mir die Kosten und der Implementierungsaufwand für einen Bus zu hoch waren, entschied ich mich für die Ringleitung.

    Bei dieser Ringleitung gibt es zwei verschiedene Implementierungstechniken:
    1. klassischer OpenCollector-Ring, d.h. ein zentraler Pullup und die Decoder legen in dem ihnen zugeteilten Zeitschlitz den Ring auf Null (oder eben nicht).
      Nachteil: man braucht diese Leitung, Vorteil: kein Einfluß durch Booster o.ä.
    2. Rückwirkung auf der schon vorhandenen DCC-Leitung - z.B. durch Lasterhöhung oder Rückspeisung.
      Nachteil: diese Rückwirkung muß auch über Booster hinweggeführt werden, kann durch Verbraucher mit schwankender Stromaufnahme gestört werden. Vorteil: gleiche Leitung.
    Hier wird der Sicherheit halber die separate Leitung gewählt.

Wirkungskette

    Wie funktioniert nun die Sicherung gegen Falschfahrten? Hierzu ist folgender Ablauf notwendig:

      feedback sequence
    1. Die PC-Software stellt einen Fahrweg, dabei sei eine Weiche beteiligt. Sicherheitshalber werden die Ausfahrten aus den Gleisen, welche auf die Weiche zulaufen, gesperrt.
    2. Die PC-Software sendet den Weichenschaltbefehl an die Zentrale.
    3. Die Zentrale stellt das Rückmeldebit dieser Weiche auf falsch und sendet den Weichenschaltbefehl (Spule ein) an den Decoder, dieser wird vom Decoder erkannt und ausgeführt.
    4. Nach der eingestellten Schaltzeit sendet die Zentrale den Abschaltbefehl für die Spule. Wichtig: das muß auch entsprechend von PC-Programm angesteuert werden. Z.B. bei TC muß man hierfür eine 'Schaltzeit' für die Weiche eintragen.
    5. Der Decoder schaltet die Spule aus und prüft die Lage der Weiche. Der Decoder ist so programmiert, dass er einen kurzen Quittungspuls (=ACK für 3ms) zurückliefert, wenn die Weiche jetzt in der richtigen Lage liegt.
      (Die Lageprüfung durch den Decoder kann entweder ein Schalter an der Stellschwelle oder die Auswertung der integrierten Endabschaltekontakte sein)
    6. Die Zentrale kontrolliert während des Aussendens der nächsten Präambel, ob der Quittungspuls für den letzten Befehl vorliegt. Davon abhängig wird das Rückmeldebit (S88) dieser Weiche wieder auf richtig gesetzt.
    7. Die PC-Software kann nun alle Rückmeldebits der betroffenen Weichen auswerten und entsprechend reagieren, z.B. die Ausfahrt aus zulaufenden Gleisen auf die fragliche Weiche wieder freigeben.

Externe Verdrahtung

    Die Verdrahtung ist recht einfach, zusätzlich zur normalen Verbindung per DCC werden alle Rückmeldeausgänge der OpenDecoder zusammengeschaltet und mit dem CTRL-Eingang von OpenDCC verbunden. Derjenige Decoder, welcher die Quittung sendet, zieht mit seinem Ausgang die Ringleitung auf GND, dadurch fließt Strom und der Optokoppler im CTRL-Eingang von OpenDCC schaltet durch. Sinnvollerweise soll diese Rückmeldeleitung als verdrillte Leitung ausgeführt werden.

    Schaltbild
      Hinweise
      Auf der Platine von OpenDCC muß die Lötbrücke SJ4 geschlossen sein, damit die Rückmeldung auch am Prozessor ankommt.
      Weichenrückmeldung ist nicht möglich zusammen mit externem Nothalt.

Tipps zur Fehlersuche

  • Sind die CVs der Zentrale richtig gestellt?
  • Sind die Melderadressen richtig? Es gilt (normalerweise): Weichenadresse = Rückmeldebit.
  • Verdrahtung korrekt? Wenn die Rückmeldeleitung unterbrochen ist, so werden alle Weichen in der gleichen Lage angezeigt. Wenn man die Rückmeldeleitung kurzschließt, so wird die andere Lage angezeigt.
  • Sendet der PC auch den Abschaltbefehl? Bitte Schaltzeit bzw. entsprechende Einstellung in der jeweiligen .ini Datei beachten.

Software-Integration in die vorhandenen Module

    (Dieser Abschnitt ist nur wichtig für Entwickler) Die Aufgaben der DCC-Zentrale in obiger Wirkungskette werden wie folgt auf die Module abgebildet:

    Beim Empfang eines Weichenbefehles wird bereits im Parser das Rücksetzen des Meldebits veranlaßt. Der Befehl durchläuft dann wie üblich die weiteren Schichten bis zur Gleisausgabe. Es gibt zwei mögliche Positionen für dieses Rückmeldebit: im S88-Modul (als Ersatz für eine Gleisbesetzmeldung) und/oder im Speicher der Weichenpositionen.

    Handelt es sich beim Weichenbefehl um einen Abschaltbefehl, wird auf der Ebene organizer dem Befehl zusätzlich die Eigenschaft is_feedback angeheftet; der Schaltbefehl wird aber ansonsten ganz normal in den Queues verarbeitet.

    Auf der Ebene dccout wird bei Befehlen mit der Eigenschaft is_feedback die Adresse der Weiche ausgekoppelt und am Ende der nächsten Präambel wird die Rückmeldeleitung abgefragt. Dieses Feedbackereignis wird als Nachricht an die Module s88 und organizer gemeldet.

    Beim nächsten Scan nimmt das S88-Modul das gemeldete Ereignis in die Rückmeldebits auf, wo es dann vom Steuerprogramm im PC erkannt und ausgewertet werden kann. Die Kodierung des Rückmeldebits wird in S017 festgelegt.
    Um die Zuordnung zwischen Weichennummer und Rückkanal einfach zu gestalten, sollten exakt die gleichen Nummern für die Weiche sowie für das zugehörige S88-Bit verwendet werden. Deshalb muß bei aktivierter Weichenrückmeldung der normale S88 Betrieb unterbleiben, da sich sonst die Meldungen überlagern würden. Siehe hierzu die Spezial-Optionen 7 und 16. (Bei gleichzeitigem Betrieb von Weichenrückmeldung und S88 muß der S88-Block immer bei 0 beginnen, der Weichenrückmeldungsblock hat dann einen entsprechenden Offset. (SO16))

Auswertung in Traincontroller


    Diese Bild zeigt die Auswertung in Traincontroller: es wird für jede Weiche ein Bahnwärter erzeugt, bei dessen Auslöser jeweils die Stellung der Weiche (hier w4) und die Rückmeldung (hier rm4) eingetragen wird und zwar für beide Richtungen der Weiche. Der Bahnwärter wird aktiv, wenn Schaltstellung und Rückmeldung der Weiche nicht übereinstimmen.

    Bei den Aktionen dieses Melders werden Ausfahrtssperren der benachbarten Blöcke eingetragen, und zwar in der Richtung, die auf die Weiche zuläuft.

    Diese Sperren müssen bei deaktiviertem Bahnwärter wieder aufgehoben werden. Bei mehreren Weichen in einer Weichenstraße muß ein Sammelbahnwärter gebaut werden, welcher die Überwacher der Weichen verodert und dann das komplette Umfeld der Weichenstraße sperrt.