WLAN Rückmelder für Märklin CS2
Virtuelle S88 für Märklin CS2


WLAN Rückmelder mit Wemos D1 Mini und Shield als Testgerät
WLAN Rückmelder von Viktor Krön mit Wemos D1 Mini und Shield als Testgerät mit 2 Kippschaltern.

Der Kollege Viktor Krön hat in der Dimo 2020/2 einen Aufsatz mit dem Titel "Wie viel WLAN braucht die Modellbahn?" veröffentlicht und darin einen drahtlosen 2-Bit Mas­se- oder Kontaktsensor auf der Basis eines Wemos D1 Mini beschrieben. Die Rück­mel­der haben sich an ein WLAN Gateway angemeldet, das auf der einen Seite alle Rückmeldun­gen ein­ge­sam­melt und auf der anderen Seite an den PC weitergereicht hat. Verwendet wur­de dabei das Roco / Fleisch­mann Z21 Ethernet Protokoll.
Seine Frage lautete: "Was müssen wir anders machen, damit die Rückmeldungen auch in der Anzeige des Gleisplans (im "Layout") auf einer Märklin CS2 sichtbar werden?"
Nun hat die Firma Märklin das von ihr verwendete CAN-Bus-Pro­tokoll und dessen Kap­selung in Ethernet Datenpaketen beschrie­ben und veröffentlicht. Wenn man mit dem Brow­ser auf die IP-Adresse der CS2 geht und dort cs2-CAN aufruft, gelangt man zu einer aus­führ­lichen Be­schrei­bung des Protokolls.
Für unser Vorhaben benötigen wir aus dem ganzen Pool von Befehlen nur den "Rückmelde-Event" mit der CAN-ID 0x22, bzw. 0x23. Damit senden wir der CS2 den Status eines S88 WLAN-Rückmelders. Theoretisch kann man alle Rückmelder, die auf der CS2 angelegt sind, erreichen. Das wären bis zu 16384 Stück. Wir beschränken uns aber auf den Bereich der S88 Rückmelder, die von der 6-poligen Schnittstelle am Boden der CS2 eingelesen werden. Für diese Schnittstelle sind intern immer 1024 Rückmelde-Adressen verfügbar. Die angesteckten S88 Module belegen davon maximal die ersten 512 Adressen, meistens aber nur einen Bruch­teil davon. Für die WLAN Rückmelder ist im Adressraum also noch aus­rei­chend Platz. Wenn man die 13 Byte des Telegramms "Rückmelde-Event" korrekt zusammensetzt, und es unter Anwendung der IP-Adresse der CS2 und Port 15731 in das Netzwerk absetzt, zeigen die klei­nen ellipsenförmigen Symbole des Rück­melders im Layout Display den aktuellen Status an (insofern sie ins Layout eingefügt wurden). Gelb steht für belegt, weiß für frei.
Viktor Krön hatte mit seinem Smartphone und der App "UDP-Sender" schon mal ausprobiert, wie er auf dem Gleisbild der CS2 einen Rückmelder aktivieren kann. Wir fragten uns, ob das nicht auch mit dem 2-Bit WLAN Rückmeldemodul möglich sein würde.
So könnte man sich das Gateway sparen, das bei der "Z21" Ausführung noch benötigt wurde, und beliebig viele (so viel wie das Netzwerk er­laubt) Rückmeldemodule direkt verwenden.
Am 16.5.2020 war der bestehende "Z21-Sketch" des 2-Bit-WLAN-Rückmelders so weit modifi­ziert, dass die S88 Anzeigen im Display der CS2 die Zustände der Rückmelde-Eingänge an­zeig­ten. Damit das funktioniert, müssen an der CS2 folgende Einstellungen gemacht werden:


  1. Der CS2 eine feste IP-Adresse aus dem Bereich des verwendeten WLAN Routers zuweisen. Hier im Beispiel die Adresse 192.168.20.100, die nicht im DHCP Bereich meines TP-Link_4174 WiFi Routers liegt. Die Netzwerkmaske und IP-Adresse des Routers entsprechend ergänzen.
  2. Konfiguration der Netzwerkparameter in der CS2
    Konfiguration der Netzwerkparameter in der CS2.

  3. CAN Gateway starten und als Broadcast Adresse die Broadcast Adresse des Router Netzwerkes verwenden. Diese Angabe musste ich löschen und wiederholen, bis sie aktiv wurde.
  4. CAN Gateway starten, damit CAN Meldungen auf das Ethernet Netzwerk gelangen
    CAN Gateway starten, damit CAN Meldungen auf das Ethernet Netzwerk gelangen

  5. Im Reiter Layout kann die Funktion der WLAN-Rückmelder beobachtet werden: gelb = belegt und weiß = frei. Mit den WLAN Rückmeldern wurden auch versuchsweise schon Fahrstraßen aktiviert (bei 321) und versuchsweise wurden auch andere Adress­bereiche für Rückmelder eingeblendet (bei 2016 und die oberen drei Reihen)
  6. CS2 Layout Anzeige mit aktiven WLAN S88
    CS2 Layout Anzeige mit aktiven WLAN S88

Als Nächstes stand der Versuch an, diese Rückmeldungen auch in Programmen wie Roc­rail, iTrain und Win-Digipet zu verwenden. Das war anfangs noch mit Schwierig­keiten verbunden.
Mittlerweile (ab Version V2.01) sollten aktuelle Modellbahnprogramme (probiert haben wir iTrain, WDP und Rocrail) mit den WLAN-Meldern für die CS2 kompatibel sein. Auch bei der Verwendung der Märklin Apps "CS2.exe" auf dem PC oder "MainStation" auf dem Smartphone oder Tablet werden die WLAN Rückmelder wie die bisherigen kabelgebundenen Rückmelder gehandhabt.


Virtuelle Rückmelder

Der Wemos D1 Mini sitzt nun da, überwacht die beiden Eingangsports und langweilt sich die meiste Zeit. Da kam Viktor Krön auf die Idee, ihn nicht nur zwei reelle S88 sondern auch noch n virtuelle S88 Meldungen erzeugen zu lassen.
Wofür braucht man aber virtuelle S88 Meldungen? Die reellen S88 Eingänge haben die Auf­gabe, den Zustand der Eingänge jederzeit zeitnah zur CS2 zu übertragen. So werden auch die durch Kontaktprobleme der Räder erzeugten Aussetzer der S88 Signale übertragen und führen zu falschen Entscheidungen im Memory. In der CS2 besteht nun leider nicht die Möglichkeit, sich ein Ereignis zu merken, so im Sinne von "S88 #2 war gerade noch belegt und wenn jetzt S88 #3 aktiv wird, dann ist der Zug wohl auf Gleis 4 gefahren". Denn gerade wenn S88 #3 aktiv wird, kann S88 #2 einen solchen Aussetzer haben.
Hier helfen also nur "Merker", gespeicherte Informationen, die zwar indirekt von einem Rück­melder gesetzt werden können aber erst wieder zurückgesetzt werden, wenn ein an­de­res Ereignis eintritt.
Mit einem Schaltdecoder und einem freien S88 Eingang (nehmen wir S88 #17) kann man das Problem mit Hardware lösen: Wenn S88 #2 kommt, wird eine Fahrstraße aktiviert, die den Schaltdecoderausgang einschaltet. Der Kontakt des Schaltdecoders legt Masse auf den S88 Eingang #17 und egal, wie der Eingang S88 #2 flattert, der S88 Eingang #17 bleibt aktiv. Nun kann CS2 den stabilen Status des Eingangs #17 für die Entscheidung verwenden. Anders aus­ge­drückt, macht der Schaltdecoder aus einem kurzen Impuls ein Dauersignal.
Das Prinzip kann man auch auf die Software des WLAN Rückmelders übertragen. S88 Bits in der CS2 setzen und löschen kann sie bereits. Was noch fehlt, ist der "Schaltdecoder". Da wir die CS2 so eingestellt haben, dass alle CAN Nachrichten aufs Ethernet als Broadcast (Rund­ruf) kopiert werden, ist auch das kein großes Problem. Die Weichenbefehle erreichen so den Wemos D1 Mini über WLAN, genauso, wie Sie auch den PC am selben WLAN Router erreichen würden. Der Wemos verwendet nun die Weichenbefehle, um weitere S88 Bits ein- (grün) oder wieder auszuschalten (rot). Voreingestellt ist der Bereich ab 513, also Weiche 513 ist mit S88 #513 gekoppelt. Der voreingestellte Bereich geht bis 520, umfasst also 8 Weichen und entsprechend 8 virtuelle S88. Es spielt keine Rolle, ob die Weiche als MM oder DCC Wei­che definiert wurde, der Nummernbereich 1 - 1024 gilt für beide Typen gemeinsam. Obwohl 2048 Weichen möglich wären, begrenzt der Bereich der eingebauten S88 Schnitt­stelle die Obergrenze auf 1024.


Konfiguration

Der WLAN Rückmelder wird mittels Web-Interface konfiguriert. Der Wemos D1 Mini spannt ein WLAN auf mit der SSID "APXXXX". "XXXX" ist dabei eine einmalige 4-stellige Nummer, die aus der Mac-ID des Wemos Bausteins errechnet wird. Hier im Konfigurationsbeispiel ist das die Nummer 0292. Man meldet sich in dieses WLAN an und verwendet dabei das Passwort "NWKONFIG". Anschließend wird der Browser aufgerufen und in der Adresszeile wird "192.168.16.1" (ohne Gänsefüßchen) eingegeben. Der Browser zeigt nun nachfolgende Maske an:

Web-Interface des 2-Kanal Rückmeldemoduls
Web-Interface des 2-Kanal Rückmeldemoduls vor der Konfiguration

Module NID: In diesem Beispiel ist das 292 (eigentlich 0292, immer 4-stellig) die einmalige Kennung des Moduls. Die Nummer ist unveränderlich und belegt, dass man sich im zuge­hörigen WLAN "AP0292" eingeloggt hat. Dahinter wird die Mac-ID des Wemos angezeigt. Anhand dieser Mac-ID sieht der Router, dass dieses Wemos Modul schon mal verbunden war und falls noch frei, erhält dieser Rückmelder wieder seine alte IP-Adresse.

SSID: Das WLAN Rückmeldemodul verbindet sich über einen WLAN-Router mit der CS2. Dazu braucht es die SSID des Routers (meistens unten auf dem Router aufgedruckt).

Password: Das Passwort des WLAN Routers (steht auch meistens unten auf dem Aufkleber des Routers)

Last Octet of the CS2 IP Address (1 - 255): Geben Sie die 4. Stelle der IP-Adresse der CS2 ein, die Sie in Schritt 1 weiter oben im Setup der CS2 manuell festgelegt haben (oder die automatisch mittels DHCP vergeben wurde).

Address of the first feedback channel (1 - 1023) : Das WLAN Rückmeldemodul verwendet 2 Rückmeldekanäle aus dem Standard S88 Bereich der CS2. An dieser Adresse dürfen sich keine physikalischen S88 Rückmelder befinden. Haben Sie z.B. 2 S88 Module ange­schlos­sen, sind die ersten 32 Bit (1 - 32) nicht für WLAN Rückmelder zu gebrauchen. Der erste WLAN Rück­melder kann, muss aber nicht, die Nummer 33 sein. Der zweite Melder des WLAN Rückmelders erhält automatisch die Nummer 34. Sie können aber im Bereich 1 - 1023 eine beliebige Nummer wählen, unter Umständen überlappt sich der Bereich mit den phy­si­schen S88. WLAN- und physikalische S88 Rückmelder auf derselben Adresse funktioniert, macht aber keinen Sinn. Hier im Beispiel meldet sich der Rückmelder auf den Adressen #1 und #2, weil keine S88 direkt an der CS2 angeschlossen wurden.

Address of the first of 8 virtual S88 (1 - 1016): Das ist die Adresse des ersten von 8 "Mer­kern" oder virtuellen Rückmeldern, die über Weichenbefehle gesetzt (grün) oder wieder gelöscht werden können (rot). Nach dem Einschalten der WLAN Rückmelder sind alle vir­tu­ellen Rückmeldungen aus, und zwar unabhängig von der aktuellen Lage der dazu­ge­hörigen Weiche. Die Nummer des virtuellen Rückmelders korrespondiert immer mit der Nummer der Weiche, die zum Stellen verwendet wird. Hier im Beispiel habe ich die vir­tu­ellen Rückmel­der auf #9 - #16 angemeldet, weil auch die Weichen #9 - #16 nicht physi­kalisch vorhanden sind.

Sind alle Daten eingegeben, klicken Sie auf "Send". Der WLAN Rückmelder startet neu, die WLAN Verbindung zum Browser bricht ab und der Rückmelder startet mit den neuen Para­metern. Er meldet sich am WLAN Router an und beide Rückmelder senden ihren Initial­zu­stand an die CS2. Wenn man sich jetzt noch mal mit dem APxxxx Netzwerk verbindet (hier im Beispiel mit AP0292) und den Browser mit der Adresse 192.168.16.1 aufruft, belegt die grüne Farbe in der Überschift der Webseite, dass die Verbindung des WLAN Rückmelders mit dem Router zustande gekommen ist. Vor der Konfiguration war die Überschrift noch rot.

Web-Interface des 2-Kanal Rückmeldemoduls
Web-Interface des 2-Kanal Rückmeldemoduls nach erfolgter Konfiguration

Die Verbindung des Browsers mit dem Netzwerks "APXXXX" kann nun gekappt werden. Das war nur eine temporäre Verbindung zum Konfigurieren, die im Betrieb nicht weiter benötigt wird.


Diagnose

Der WLAN Rückmelder wird über seinen USB-Port mit 5V versorgt. Verbindet man den USB Port mit dem PC, besteht die Möglichkeit, mit einem Terminal Programm die seriellen Debug-Ausgaben des Rückmelders zu beobachten. So wird angezeigt, mit welchem WLAN Netzwerk sich der Wemos versucht zu verbinden. Hier sieht man auch die Modulkennung, die "NID". Im Betrieb werden alle Rückmeldungen angezeigt, egal, ob sie von der CS2, einem anderen WLAN Rückmelder, einem Telefon oder von einem CAN-Bus Teil­neh­mer stammen (z.B. Link S88). Weil für die virtuellen Rückmelder Weichente­legramme ver­wendet werden, werden diese ebenfalls angezeigt, auch, wenn sie nicht mit einem vir­tu­el­len Melder verbunden sind. Der im Monitor angezeigte Ablauf beim virtuellen Melder ist möglicherweise etwas verwirrend. Zuerst wird eine Spule der Weiche rot oder grün be­stromt. Darauf reagiert der virtuelle Melder mit der Statusänderung und direkt danach wird der Strom wieder abgeschaltet. Der virtuelle Melder reagiert jetzt nicht. Wird die andere Spule bestromt, reagiert der virtuelle erneut und wechselt den Status. Sofort danach wird der Strom wieder abgeschaltet. So sehen Sie immer 3 Telegramme für einen Statuswechsel eines virtuellen Melders. Hier ist eine Kopie der seriellen Ausgabe des WLAN Rückmelders #0292:

***************************************************************************************
WEMOS D1 Mini20200907 Dual Channel Wireless Contact Feedback Module V2.04
(c) 2020 Gerard Clemens
Router WiFi SSID       : TP-Link_4174
Router WiFi Password   : ********
Connecting to TP-Link_4174
........ took 4.00 s
IP Address S88 Module  : 192.168.020.101
CS2/CS3 IP Address     : 192.168.020.100
MAC Address S88 Module : 24:62:AB:0B:9E:4D
Module NID             : 0x124 (dec. 292)
WiFi Sensor Module and CS2 are connected
FB-Channels            : 1 - 2 (Märklin CS2 S88).
VirtChannels           : 513 - 520 (Märklin CS2 S88).
To change FB-Channels and router WiFi credentials connect to WiFi network SSID AP0292,
use Password NWKONFIG and your web browser on IP 192.168.016.001.
***************************************************************************************
13 B -> 192.168.020.100:15731 : WiFi FB NID = #0292 - 0001=1     - 00 23 0B 24 08 00 00 00 01 00 01 01 24
13 B -> 192.168.020.100:15731 : WiFi FB NID = #0292 - 0001=0     - 00 23 0B 24 08 00 00 00 01 01 00 01 24
13 B -> 192.168.020.100:15731 : WiFi FB NID = #0292 - 0002=1     - 00 23 0B 24 08 00 00 00 02 00 01 01 24
13 B -> 192.168.020.100:15731 : WiFi FB NID = #0292 - 0002=0     - 00 23 0B 24 08 00 00 00 02 01 00 01 24
13 B <- 192.168.020.100:15731 : WiFi FB NID = #3562 - 0004=1     - 00 23 6F 6A 08 00 00 00 04 00 01 0D EA
13 B <- 192.168.020.100:15731 : WiFi FB NID = #3562 - 0003=1     - 00 23 6F 6A 08 00 00 00 03 00 01 0D EA
13 B <- 192.168.020.100:15731 : WiFi FB NID = #3562 - 0004=0     - 00 23 6F 6A 08 00 00 00 04 01 00 0D EA
13 B <- 192.168.020.100:15731 : WiFi FB NID = #3562 - 0003=0     - 00 23 6F 6A 08 00 00 00 03 01 00 0D EA
13 B <- 192.168.020.100:15731 : DCC Switch#0009,Coil#1,State: 1  - 00 16 A7 09 06 00 00 38 08 01 01 00 00
13 B -> 192.168.020.100:15731 : Virt. S88#0009, State: 1         - 00 23 0B 24 08 00 00 00 09 00 01 01 24
13 B <- 192.168.020.100:15731 : DCC Switch#0009,Coil#1,State: 0  - 00 16 A7 09 06 00 00 38 08 01 00 01 24
13 B <- 192.168.020.100:15731 : DCC Switch#0009,Coil#0,State: 1  - 00 16 A7 09 06 00 00 38 08 00 01 00 00
13 B -> 192.168.020.100:15731 : Virt. S88#0009, State: 0         - 00 23 0B 24 08 00 00 00 09 01 00 01 24
13 B <- 192.168.020.100:15731 : DCC Switch#0009,Coil#0,State: 0  - 00 16 A7 09 06 00 00 38 08 00 00 01 24

Ausgabe des WLAN Rückmelders #292 in einem Terminalprogramm (115 kBaud, 8n1)

Zwischen den Balken mit den Sternchen werden die Eigenschaften und die Schritte beim Ein­schalten des Rückmelders angezeigt. Danach wird der Rückmelder gestartet und der Be­trieb protokolliert. Sollte beim Einschalten ein Rückmelder belegt sein, so wird das sofort weitergeleitet und angezeigt. In den ersten beiden Zeilen wird der WLAN Rückmelder S88 #1 zuerst ein- und danach wieder ausgeschaltet. In Zeilen 3 und wiederholt sich das für den WLAN Rückmelder #2. Da diese Meldungen vom Baustein mit der Kennung 0292 erzeugt wer­den, gehen Sie direkt über Port 15731 an die CS2. Die CS2 macht daraus einen Rundruf, ei­nen "Broadcast", und benachrichtigt alle Teilnehmer im Netz, also auch die anderen WLAN Rückmelder, die eventuelle Modellbahnsoftware und die Apps. In den Zeilen 5 - 8 des Kom­mu­ni­kationsprotokolls sieht man, dass auf dem Rückmelder mit der Kennung #3562 ebenfalls beide S88 eingeschaltet und anschließend wieder ausgeschaltet wurden. Der Baustein #3562 sendet diese Information über Port 15731 an die CS2. Diese verbreitet nun den neuen Status mit einem Broadcast und so werden sie auch vom Baustein #292 empfangen und angezeigt. Dann sehen wir in Zeile 9, wie die grüne Spule von Weiche 9 eingeschaltet wird, was zur Fol­ge hat, dass der virtuelle Rückmelder #9 aktiv wird. Gleich danach wird die Weichen­spu­le wieder ausgeschaltet, wobei sich der Status des virtuellen Rückmelders #9 nicht ändert. Erst wenn in Zeile 15 die rote Spule von Weiche 9 eingeschaltet wird, geht der Status des virtuellen Rückmelders #9 wieder auf 0.

Layout mit Testanordnung der Weichen 9-16 und der gekoppelten virtuellen Rückmeldern 9-16
Layout mit Testanordnung der Weichen 9-16 und der
gekoppelten virtuellen Rückmeldern 9-16

Nachbau

Wie man einen WLAN Rückmelder auf der Basis Wemos D1 Mini aufbaut, hat Viktor Krön in eimem Artikel in der Zeitung "Digitale Modellbahn" - "DiMo" Jg. 2020 Heft 2 - ausführlich beschrieben. Genau dieselbe Hardware wird auch für das vorliegende Projekt für die CS2 verwendet. Die Software ist natürlich eine andere und das im damaligen Projekt verwendete Gateway kann bei diesem Projekt entfallen. Der einge­zeich­nete Programmiertaster und die dazugehörige LED werden von der aktuellen Firmware (noch) nicht bedient. Die Eigabe der Rückmeldeadressen kann im Moment nur mit der Web Konfiguration durchgeführt werden.

Der Aufbau auf einem Steckbrett ist identisch mit der Z21-Variante
Der Aufbau auf einem Steckbrett ist identisch mit der "Z21"-Variante. Der Programmiertaster, der in diesem Entwurf noch vorhanden ist, wird für den Rückmelder mit der CS2 Software nicht ausgewertet

Nachbau des WLAN Rückmelders für CS2
Binärcode für Wemos D1 Mini für 2 WLAN Rückmelder + 8 virtuelle Melder
Das Firmware Flashtool für die NodeMCU Entwicklungsmodule (ESP8266Flasher)
Das Freeware Terminal Programm HTerm von Tobias Hammer
Mehr zum Thema in der DIMO 4/2020

©2015 - 2020  Gerard Clemens   letzter Update 14.09.2020


Zurück nach oben