OpenDCC - Z1, eine Zentrale für DCC

Überblick

    "Noch eine DCC-Zentrale? Gibt es doch wie Sand am Meer, kann man doch kaufen oder irgend einen anderen Bauvorschlag nehmen!"

    Ja, es gibt genug käufliche Zentralen, auch eine Reihe Selbstbauprojekte. Nur bei der Erprobung entdeckten wir das eine oder andere Defizit: mal ist die Zahl der zu fahrenden Loks (in weiser Selbstbeschränkung) zu stark beschränkt, mal gibt es sporadische Resets, mal ist die Priorisierung des DCC-Stacks ungeeignet für einen Anlagenbetrieb - wie kann man nur dem Lokpfiff eine höhere Priorität als dem Bremsbefehl geben?
    Und manche Zentrale ist überhaupt nicht auf Datendurchsatz oder kurze Latenzzeiten ausgerichtet. Da wird nach einem Kommando erst mal CTS=off zurückgesendet, dann das empfangene Kommando bearbeitet und dann erst geht die Zentrale wieder online. Fällt nicht weiter auf, wenn nur 4 Loks fahren ...

    Eine DCC-Message dauert etwa 6-12ms (je nach Adresse und Fahrstufen), daher ist eine intelligente Verwaltung und Priorisierung unabdingbar, sonst kommt es bei mehreren gleichzeitig beschleunigenden oder bremsenden Loks zu unschönem Fahrverhalten bzw. zum "Verbremsen".

    Nachdem unsere bisherige Zentrale für den Fahrbetrieb auf unserer Modellbahn nicht wirklich geeignet war, enstand diese Selbstbauzentrale. OpenDCC erreicht maximalen Durchsatz am Gleis und auf der PC-Schnittstelle durch die intelligente Abarbeitung von Befehlen. Zudem ist es natürlich auch eine kompakte und preislich attraktive Lösung, welche speziell im Zusammenspiel mit dem PC andere Zentralen ersetzen kann.

    Der maximale Durchsatz an DCC-Befehlen war oberstes Designziel bei der Entwicklung. Es ist ein intelligenter Refreshalgorithmus implementiert, der neue Fahrbefehle priorisiert und dann zyklisch wiederholt, wobei die Wiederholrate bei schon lange nicht mehr benutzten Loks zurückgenommen wird. Bei der Priorisierung wird zusätzlich noch zwischen Funktionen, Beschleunigung und Abbremsen unterschieden: Bremsbefehle und damit die Fahrsicherheit haben höchste Priorität, selbst wenn viele Loks gleichzeitig gefahren werden. Die dynamische Zuteilung des Gleisprotokoll garantiert dabei extrem schnelle Reaktionszeit der angeschlossenen Fahrzeuge und Dekoder und sorgt dafür, dass dies auch bei langer Betriebsdauer so bleibt. Auch ist der PC-Anschluß unabhängig vom Handregleranschluß - Steuerbefehle des PC müssen sich nicht den Steuerbus mit den Handreglern teilen. Die Zentrale ist mit entsprechenden Handreglern auch ohne PC verwendbar.

    Die Platine ist universell ausgelegt und kann mit passender Software als Ersatz für gängige Digitalzentralen (z.B. Lenz oder Intellibox®) bzw. Rückmeldebausteine (HSI88-Emulation) verwendet werden. Bei den Bauteilen und beim Layout habe ich darauf geachtet, dass der Selbstbau leicht möglich ist, d.h. überwiegend "normale" Bauelemente und DIL-ICs. Es ist ein kleiner Booster integriert, um z.B. "schnell mal" fahren oder programmieren zu können. Für den Anlagenbetrieb, insbesondere mit Rückmeldern, sollte ein optogekoppelter Booster nachgeschaltet werden.
    Es ist bis auf Nothalt keine Tastatur vorgesehen, auch die Anzeige beschränkt sich auf ein paar Status-LEDs. Mit passender Software (z.B. rocrail) kann aber ganz einfach mit einem PC oder Laptop gefahren werden. Ein weiteres Einsatzgebiet ist die DMX-Ansteuerung, damit kann dann auch das Umgebungslicht für die Modellbahn gesteuert werden.

    Eigenschaften:
    Digitalsystem: DCC, mit BiDi-Unterstützung
    Ausgänge: Hauptgleis mit Minibooster(1.0A)
    Programmiergleis
    Rückmeldung: drei S88-Busse und zusätzlich echte Weichenrückmeldung
    Bedienung am Gerät: 2 Taster (Stop-Go)
    4 LEDs (CTRL, STOP, GO, RS232)
    PC-Schnittstelle: USB oder Seriell (RS232)
    Bedienung am PC: wahlweise Intellibox® oder Xpressnet™-Emulation
    Handbedienung: über Xpressnet™-Geräte, z.B. multiMaus®
    Nothalt: Taster
    Optokoppler Ein- und Ausgang
    Lichtsteuerung: Raumlichtsteuerung mit DMX
    Maße: 105 * 125 * 46mm

Die Eigenschaften im Detail

  • Stromversorgung: Die Stromversorgung erfolgt mit einem externen Netzteil, welches geregelte Gleichspannung liefert. Das Netzteil sollte passend zur Spurweite gewählt werden. Für N empfiehlt sich 12-14V, für H0 16-18V.
  • PC-Anschluß: Die Verbindung erfolgt entweder über USB (VID: 0x0403, PID: 0xBFD8, Product Description: 'USB-IF OpenDCC V1.2') oder seriell (9-polige DSUB-Buchse RS232 an der Rückseite), es ist 19200 Baud, 8 Bit, keine Parity, 1 Stopbit einzustellen (bei Betriebsart Lenz) Die Auswahl der verwendeten Schnittstelle erfolgt durch Jumper auf der Platine. (Bestückungsalternative bzw. über Steckbrücken umschaltbar). Bei Verwendung der USB-Schnittstelle ist auf der PC-Seite ein Treiber zu installieren, mit diesem Treiber läßt sich dann OpenDCC über einen virtuellen COM-Port ansprechen.
    Das verwendete Protokoll des Interfaces hängt von der geladenen Software ab. Zur Zeit gibt es eine Universalsoftware, die per Compileoption auf Lenz V3.6 bzw. P50X (Intellibox) oder HSI88 eingestellt werden kann. Es ist keinerlei Geschwindigkeitsbeschränkung des PC erforderlich (wie z.B. bei der IB), OpenDCC arbeitet voll duplex bei der maximalen Geschwindigkeit der Schnittstelle, echter Hardwarehandshake wird unterstützt. Zudem müssen bei OpenDCC die Fahrbefehle nicht erst über einen Modellbahn-Bus an die Zentrale übertragen werden (wie es z.B. bei Lenz der Fall ist), sondern werden direkt an das Gleis ausgegeben.
    Die Software ist über die normale Schnittstelle updatebar, es ist hierfür kein Programmieradapter erforderlich.
    Sicherheitshinweis: Es ist (im Gegensatz zu manch käuflicher Lösung) eine vollwertige RS232 Schnittstelle mit korrekten Pegeln und Hardware-Handshake implementiert, diese ist galvanisch nicht vom PC getrennt. Dadurch ist je nach PC fallweise die Schutztrennung, welche bei Spielzeug gefordert wird, aufgehoben. Zur Erreichung der Schutztrennung ist ein optogekoppelter Booster nachzuschalten. Siehe auch NEM 609.
  • Schnittstellen zur Modellbahn:
    • Es gibt zwei DCC-Ausgänge, Programmiergleis und Hauptgleis. Der Hauptgleisausgang ist mit einer intelligenten Datenverwaltung ausgerüstet, welche das Optimum aus dem DCC-Protokoll herausholt.
      Das verwendete Stecksystem ist Wago Mini, Raster 3,5mm; (Der Einlötstecker hat die Art.Nr. 734-164, das Steckerteil die Nummer 734-104;) Alternativ sind auch handelsübliche Schraubklemmen RM5.04 möglich. Beide Ausgänge sind kurzschlußgeschützt (Programmiergleis 0,5A, Hauptgleis 1,5A), wobei der zu entnehmende Dauerstrom 1,0A nicht übersteigen soll. Dies kann zu einer Zwangsabschaltung wegen Übertemperatur führen.
    • Optokopplereingang und Ausgang für Nothalt oder Weichenrückmeldung. Das Stecksystem ist wieder Wago wie oben. Nothalt und Weichenrückmeldung können nicht gleichzeitig verwendet werden.
    • Xpressnet (in der XP_Version (Atmega644P)): Als Stecksystem wird RJ12 (6-poliger Modularstecker) verwendet. Hier können Handregler wie z.B. der MFT oder die Roco Multimaus™ angeschlossen werden.
    • Es sind drei S88-Ports vorgesehen, diese dürfen in Summe mit 1,5A auf den 5V belastet werden, wenn der bestückte 5V-Regler das auch kann (siehe hierzu auch die Hinweise zur Schaltung). Die s88-Ports sind wahlweise als übliche Stiftleiste oder als RJ45-Buchse (Anschluß gemäß der Norm S88-N) zu bestücken. Die Verkabelung mit den aus der Computertecknik bekannten Ethernetkabeln CAT-5 wird empfohlen, um die Störeinkopplungen auf den S88-Bus zu minimieren.
    • Hinweis zur Verdrahtung: Der Gleisausgang wird bezogen auf die Netzteilmasse von OpenDCC zwischen etwa 0,3V und 14,7V geschaltet (DCC wechselt ja Polarität) und darf daher nicht mehr mit Masse verbunden werden. Insbesondere Rückmelder können hier direkt oder über den Umweg RS232/USB und PC eine ungewollte Masseverbindung schaffen. In diesem Fall ist das Potential zwischen der Endstufe in OpenDCC und dem Rückmelder durch einen optogekoppelten Booster zu trennen! (Diese Trennung braucht man aus VDE-Gründen sowieso ..)
      Näheres hierzu auf der Seite Anlagenverdrahtung.
  • Bedienelemente und Anzeigen:
    • LEDs:
        Anzeige:

        LED1, orange
        PROG
        in Normalbetrieb:
          aus: alles okay
          blinkend: zu viele Befehle, dem Host wird "not ready" gemeldet.
        in Programmierbetrieb:
          dauernd leuchtend: Programmierung erfolgreich.
          flackernd: ACK wird gerade gelesen
          blinkend: Programmierfehler

        LED2, rot
        STOP
        dauern leuchtend: DCC wurde per Taster abgeschaltet.
        blinkend: Nothalt über den externen Eingang ausgelöst.
        Rot und grün gemeinsam: Fahrstufe 0

        LED3, grün
        GO
        dauern leuchtend: alles okay
        mit STOP im Wechsel blinkend: Fehler in der Ausgangsstufe, entweder Kurzschluß oder Übertemperatur.

        LED4, grün
        RS232
        Diese LED zeigt den Zustand der Datenverbindung zu PC an:
        langsam blinkend: keine Verbindung
        dauernd leuchtend: Verbindung vorhanden
        leuchtend, kurze Pausen: Datentransfer
        schnell blinkend: Datentransfer blockiert (Fifo voll)
    • Taster:
        TasterFunktion
        STOP:
        Erster Druck: Das System wird angehalten, die Spannung an Gleis bleibt bestehen, es wird jedoch nur Fahrstufe 0 ausgegeben.
        Zweiter Druck: Die Spannung am Gleis wird abgeschaltet (Nothalt)
         GO: 
        Die Spannung am Gleis wird wieder eingeschaltet.
    • Über eine kleine Zusatzplatine sind externe Handregler (z.B. Roco multiMaus™ oder MFT) mit Xpressnet™-Anschluß anschließbar. Das PC Interface und das Xpressnet™-Interface laufen parallel und unabhängig voneinander.
  • Programmierschnittstelle:
    • JTAG Port: Stecker X4, realisiert als übliche 10pol. Stiftleiste, RM 2.54 (ist nicht bestückt)
    • Ponyprog Port: für das bei www.lancos.com ladbare Programmiertool ponyprog ist eine zweite RS232 auf der Platine vorgesehen.
    • 6-polige ISP-Schnittstelle (JP3): Hier kann für die Erstinbetriebnahme der übliche Programmieradapter eingesteckt werden.
    • Ein späterer Update der Software ist ohne Öffnen des Gerätes und ohne Programmieradapter entweder über RS232 oder USB möglich.
  • Sonstige Ports:
      RS485-Port für direkte DMX-Ansteuerung oder Lichtsteuerung mit DCC. Das Raumlicht kann mit normalen Weichenschaltbefehlen von der Modellbahnsteuerung aus gedimmt werden. Es gibt preiswerte DMX-Dimmer, diese können direkt an OpenDCC angeschlossen werden. Der Anschluß auf der Platine erfolgt mit Schraubklemmen.
      (Hinweis: für DMX wird die Verwendung des DMX-Decoders empfohlen)
  • Technische Basis:
      OpenDCC ist auf einem Atmel AVR Prozessor programmiert. Es gibt zwei Varianten, eine für den Atmega32 und eine für den Atmega644P. Auch wenn kein Xpressnet verwendet werden soll, so empfehle ich doch den größeren Prozessor, schon aus Gründen der Zukunftssicherheit. Dieser ist zusammen mit einem kleinen Booster (H-Brückenschaltung, basierend auf STM L6206) und kleineren Peripherieschaltungen auf auf einer Platine 120*100mm integriert. Das Layout ist zweiseitig mit breiten Leiterbahnen und Durchsteckbauelemente erstellt, so daß der Nachbau auch mit Hobbymitteln möglich sein sollte.

      Die Software ist modular in C geschrieben (mit WinAVR) und als Open Source verfügbar.
  • Bisherige Erprobung und bekannte Mängel:
      folgende Tests wurden bisher durchgeführt:
    • HSI88-Mode: Betrieb mit Traincontroller 5.8 per RS232 und USB. Kontrolle der richtigen Bitpositionen, Kontrolle der Signale am S88-Bus
    • HSI88-Mode: Betrieb mit Railware 5.01 und USB (Alex)
    • Lenz-Mode: Baudratenumschaltung, Modeumschaltung
    • Lenz-Mode: Betrieb mit Traincontroller und 28 Fahrstufen
    • Lenz-Mode: Schaltbefehle
    • Lenz-Mode: Betrieb mit P.F.u.Sch. und 28 Fahrstufen, Lichtfunktion
    • Lenz-Mode: Decoder auslesen im CV-Betrieb mit P.F.u.Sch.
    • Lenz-Mode: Test der S88 unter Railware (Alex)
    • Lenz-Mode: Programmieren der Opendecoder (ab V0.14)
    • Intellibox-Mode: Betrieb mit TC (mit RS232 und USB inkl. BABI) an einer mittleren Anlage (16 Booster, 320 Meldeabschnitte)
    • Intellibox-Mode: Test der S88 unter Railware (Alex)
    • Intellibox-Mode: Betrieb mit Railware und 28 Fahrstufen, Fahren, Schalten, Funktionen
    • Intellibox-Mode: Schaltbefehle und Zusammenspiel mit OpenDecoder
    • Intellibox-Mode: Programmieren mit TrainProgrammer von www.freiwald.com sowie mit railware (Alex)
    • Intellibox-Mode: Betrieb mit srcpd und spdrs60 - Schalten, Fahren, Rückmeldung mit S88.
    • Intellibox-Mode: Betrieb mit Rocrail (Open Source)
    • DMX-Mode: Lichtansteuerung für Raumlicht
      Einschränkungen und Mängel:
    • Der Zustand von Weichen wird in OpenDCC nicht permanent gespeichert, bei der Initialisierung von PC-Programmen wird (z.Z.) immer "Stellung grün (=0)" zurückgeliefert. Während des Betriebes wird die Weichenposition aber gespeichert. Wenn sich ein PC Programm daran stören sollte, gibt es folgenden Workaround: Vor dem Steuern der Anlage mit dem PC einmal ALLE Weichen durchschalten.

Unterlagen / Links