====== Modellbahnsteuerung ====== Wie bereits beim Vergleich der diversen [[:modellbahn:zentrale:vergleich|Digitalzentralen]] erwähnt, verwende ich für meine Modellbahn das 2L Gleichstrom System und die Fahrzeuge werden mit [[https://de.wikipedia.org/wiki/Digital_Command_Control|DCC]] gesteuert. Signale, Weichen und alle Rückmelder für Gleisbesetztmeldungen und Weichenstellungen werden über ein anderes [[:modellbahn:zentrale:bussysteme|Bussystem]] gesteuert und gemeldet. Hier habe ich lange überlegt, welches System ich verwenden möchte. Die meisten Digitalzentralen sind Multiprotokollzentralen für alle möglichen Gleisformate zur Steuerung der Fahrzeuge und einige Digitalzentralen haben auch mehrere Bussysteme für Rückmeldungen und Handregler. Von Anfang ist aber auch ein Aspekt der Selbstbau von Elektronik für die Modellbahnsteuerung. Dafür ist in der Regel eine gute Dokumentation des Datenprotokolls erforderlich. LocoNet ist z.B. weit verbreitet, aber eine vollständige Protokollspezifikation gibt es nicht, nur eine sehr alte [[https://www.digitrax.com/support/loconet/loconetpersonaledition.pdf|Personal Edition]]. XPressNet((Ich konnte keine Spezifikation auf der Website von Lenz finden, es gab aber mal ein Dokument XpressNet.pdf für die 4.0 Version.)) und [[https://bidib.org/|BiDiB]] sind recht gut dokumentiert. Ich wollte erst BiDiB verwenden, aber da hapert es etwas mit freien Lizenzen, das kann noch kommen, aber aktuell gibt es da nichts. Natürlich gibt es auch andere Möglichkeiten wie dem Verzicht auf ein Bussystem. Weichen und Signale können auch über einfache Schalter gesteuert werden, Belegtmeldungen können mit LEDs signalisiert werden. Auch rein mechanisch können Weichen und Signale über Hebelwerke gestellt werden. Ohne ein Bussystem ist der Verdrahtungsaufwand nicht zu unterschätzen und von eine mechanische Stellmöglichkeit ist für wenige Weichen und Signale interessant, aber bei mehreren Komponenten sehr aufwändig. Nach einigen Experimenten mit der [[https://pgahtow.de/w/Zentrale_Z21PG|Z21PG]] und [[https://dcc-ex.com/index.html#gsc.tab=0|DCC-Ex]] tendierte ich Richtung fertiger Zentrale, wie z.B. die mc² oder Intellibox. Letztendlich bin ich wieder auf den Pfad der Tugend gelangt ;-) Ich würde aber gerne alles, was ich für meine Modellbahn baue, hier auf der Website veröffentlichen - Schaltungen, Quelltexte usw. - einfach alles. Das möglichst unter einer freien Lizenz, wie z.B. der [[https://de.wikipedia.org/wiki/GNU_General_Public_License|GPL]]. Nach einiger Recherche bin ich bei der Model Electronic Railway Group ([[https://www.merg.org.uk/|MERG]]) fündig geworden. Für den vollen Zugriff ist zwar eine Mitgliedschaft erforderlich, die aber mit 2,30€ im Monat moderat ausfällt. Dafür bekommt man Zugang zum Forum & Wiki und bekommt die vierteljährlich erscheinende Clubzeitschrift. Die Quelltexte für alle Bausätze sind bei Github erhältlich oder auch im umfangreichen Wiki. So ziemlich alles wird unter der [[https://creativecommons.org/licenses/by-nc-sa/4.0/deed.de|CC BY-NC-SA 4.0]] oder der GPL veröffentlicht. Unter der Lizenz kann alles völlig frei verwendet werden, solange auf die Quelle verwiesen wird, die gleiche Lizenz verwendet wird und es nicht kommerziell ist. Perfekt! Nun ist eine freie Lizenz für den Selbstbau und die Mischung von fertige erhältlichen Geräten (beim MERG nur als Bausatz) mit Eigenbau das eine, die Verwendbarkeit für die Modellbahn, bzw. für die eigenen Ansprüche das andere. Also habe ich mich eine Weile mit dem Konzept der Steuerung mit dem CBUS((CBUS protocol documents are a copyright of Mike Bolton and Gil Fuchs)) und dem abwärtskompatiblen VLCB beschäftigt. Es wird eine Philosophie verfolgt, die ich mit der [[https://de.wikipedia.org/wiki/Unix-Philosophie|Unix-Philosophie]] vergleiche, in Hardware und Software. Baue kleine Module, die nur eine oder wenige Funktionen haben, aber diese gut machen. Ein anderer Aspekt bei dieser Modellbahnsteuerung ist der, ich bin unabhängig von Hersteller, von Release-Zyklen, kann die Geräte selbst reparieren und selbst bauen. Ganz wie es mir gefällt. So habe ich mich entschlossen, die im Bau befindliche Modellbahn mit CBUS/VLCB zu steuern. ---- ===== CBUS / VLCB ===== Der CBUS((CBUS Spezifikation [[https://github.com/cbus-traincontrol/cbus-traincontrol.github.io|https://github.com/cbus-traincontrol/cbus-traincontrol.github.io]])) und auch der abwärtskompatible VLCB((VLCB Spezifikation [[https://github.com/Versatile-LCB/VLCB-documents|https://github.com/Versatile-LCB/VLCB-documents]])) , was im Prinzip eine Erweiterung des CBUS ist und gemischt auf dem gleichen Datenbus betrieben werden kann, basieren beide auf CAN - Controller Area Network. Der [[https://de.wikipedia.org/wiki/Controller_Area_Network|CAN Bus]] ist aus der Automobilbranche bekannt und wurde 1983 von Bosch entwickelt. Heute ist dieser Bus aus keinem neuen Auto mehr wegzudenken. Es handelt sich dabei um einen sogenannten Producer/Consumer oder auch Multi-Master Bus. Die Übertragungsrate beträgt beim CBUS und VLCB 125kBit/s (CAN geht bis 1MBit/s). Dabei wird mit Standard-CAN, also 8 Byte Nutzdaten und 11-Bit Identifier gearbeitet. Wenn ein Modul zum Beispiel ein Belegtmelder für einen Gleisabschnitt im Schattenbahnhof ist, werden die Ereignisse "Gleis frei" oder "Gleis besetzt" auf den Bus gegeben. Es wird dabei keine Gegenstelle adressiert, weil der Bus nur mit Events ([[.:steuerung:cbus:events|Ereignisse, die ein Modul auch lernen kann]]) arbeitet. Das jeweilige Modul, was mit der Meldung "Gleis belegt" etwas anfangen kann, wird dieses Ereignis verarbeiten. Das Ereignis kann auch von mehreren Modulen verarbeitet werden, z.B. könnte ein Schaltmodul die Weichen schalten, so das kein weitere Zug in das Gleis einfahren kann und ein anderes Modul schaltet die LEDs im Stellpult zur Visualisierung der Belegtmeldung an. Die Anzeige kann z.B. ein kleines Stellpult mit visualisiertem Gleisplan mit Taster für Weichen und Signale und LEDs für die Anzeige sein. Ein Taster für das Umlegen einer Weiche würde dann ein Ereignis auslösen, "Weiche gerade" und das Modul für diese Weiche würde auf das Ereignis reagieren. Es ist somit keine Zentrale Steuereinheit nötig, kein Computer an der Modellbahn. Auch die Digitalzentrale muss nicht mehr als DCC und den CAN Bus können. Alles wird über den Bus abgewickelt. Vom [[https://www.merg.org.uk/|MERG]] gibt es dazu eine ganze Reihe an Modulen, mit Baubeschreibung, freier Software und für viele Module auch Leiterplatten oder ganze Bausätze. Eine schematischen Überblick zeigt diese Grafik((Grafiken & Photos stammen von der MERG und dürfen frei veröffentlicht werden: [[https://www.merg.org.uk/resources/copyright|https://www.merg.org.uk/resources/copyright]])) : {{ :modellbahn:elektronik:cbus_modul_uebersicht.png?1024 |CBUS Module Overview from MERG}} Folgende Bausätze gibt es zur Zeit: {{ :modellbahn:elektronik:cbuskits.png?nolink&800x710 }}Mit diesen Bausätzen ist alles vorhanden was man als Basis für die Steuerung einer Modellbahn benötigt, von einer DCC Zentrale mit CBUS zu Weichen- und Signal Modulen, Multi I/O Modulen und Rückmeldern. Ein Video zu Modulen und der Funktion gibt es [[https://youtu.be/TXndquO2DWg?si=540054XEAuKTKmAT|hier]]. Eine kleine Modulübersicht gibt es auch auf der öffentlichen Webseite der [[https://www.merg.org.uk/resources/cbus|MERG]]. Die meisten Module lassen sich über den CAN Bus aktualisieren. Die Module haben dazu einen Bootloader und mit der entsprechenden Software auf einem PC oder Raspberry kann eine neue Firmware in das Modul geladen werden. Aktuell wird der CBUS von [[https://www.jmri.org/help/en/html/hardware/can/cbus/index.shtml|JMRI]] und [[https://wiki.rocrail.net/doku.php?id=cbus:overview-en|Rocrail]] unterstützt. Aus dem Rocrail Umfeld gibt es auch eigene CBUS Module. Mit dem node.js basierenden MMC-Server und MMC-Client steht auch ein browserbasierendes Tool für den CBUS bereit, für die Konfiguration und Aktualisierung der Module. ---- ====== Steuerung für meine Anlage ====== Für meine Anlage sind diverse Module geplant. Als erstes ist natürlich das Interface für einen PC oder Raspberry zu nennen - [[..:canusb4-iso|CANUSB4-ISO]]. Die Schaltung und Software habe ich weitestgehend übernommen, aber die Schaltung um ein ISO Interface und ein paar Details erweitert. Durch das USB ISO Interface besteht eine galvanische Trennung zwischen der Modellbahnelektronik und einem PC, was Probleme vermeidet. Der Schattenbahnhof soll automatisiert oder halbautomatisiert laufen. Dies will ich mit dem Rocrail Server und einem [[https://www.raspberrypi.com/products/raspberry-pi-4-model-b/|Raspberry 4]] realisieren, der über ein CANUSB4 Interface mit den Modulen am CBUS kommunízieren kann. Weitere geplante Module: * Rückmelder für Weichenstellung (CANVINP) * Rückmelder für Belegtkennung von Gleisen (CANVINP) * Schalt- und Servomodule für Weichen und Signale (CANVSERVO) * Multi-I/O (CANMIO) * DCC Zentrale (CANCMD) * Handregler (CANCAB) Fortsetzung folgt …