Software Watchdog für Traincontroller

Letzten Monat hatte ich mich mal wieder über den PC geärgert der meinte er müsste mal eben gerade irgendwas anderes machen anstatt die Modellbahn zu steuern. In der Folge liefen die Loks noch eine Zeitlang planlos ohne Steuerung und wurden vor dem Absturz in die Tiefe zum Glück nur noch von einer Auffangmatte aufgehalten 😡

Ein Kollege hat mal gesagt: Software ist böse! Er meinte damit vor allem die Software der Betriebssysteme. Nicht meine Steuerungssoftware war schuld, sondern irgendein Update der im Hintergrund meinte er müsste mal eben alle Systemresourcen fressen.

In grossen Infrastrukturen werden Fertigungssysteme auch nicht dem Computer überlassen – hier gibt es s.g. Wachhunde (Watchdogs), welche laufend die Verbindung zum Computer überprüfen und im Fehlerfall entsprechende Maßnahmen einleiten und das System geregelt abschalten.

Und tatsächlich: Das gibt es auch für die Modellbahn. Nach intensiver Lektüre der Dokumentation meiner TAMS B-4 Booster konnte ich dort folgendes nachlesen:

Die Zentrale (i.d.R. gesteuert durch eine PC-Software) sendet bei dieser Funktion in Abständen von ca. 5 Sekunden einen DCCWeichenstellbefehl an eine Weichenadresse, die dem B-4 zugewiesen wurde. Sobald der B-4 diese Befehle nicht mehr empfängt, schaltet er sich automatisch ab. Nach dem Einschalten des Boosters ist die Watchdog-Funktion zunächst inaktiv. Sie wird aktiviert, indem an die zugeordnete Weichenadresse ein Stellbefehl gesendet wird. Damit besteht die Möglichkeit, die Anlage ohne PC-Steuerung zu steuern, ohne die Watchdog-Funktion zu deaktivieren.

Das war genau was ich gesucht hatte. Und natürlich dachte ich zunächst: Ist doch wunderbar! Nach genaueren Recherchen fand ich heraus, das es sogar eine Funktion ist die bei vielen Digitalzentralen und Boostern vorhanden ist!

Wir müssen unserer Steuerungssoftware also nur noch klarmachen in festen Zeitintervallen einen „BinNochDa“-Befehl zu senden. Sobald der PC dann denkt es wäre Zeit etwas anderes zu tun oder ganz hängen zu bleiben würde der Befehl ausbleiben oder zu spät kommen – die Booster würden abschalten und die teuren Loks wären gerettet! 1 Wie ihr wisst steuere ich meine Anlage mit der Software Traincontroller – die Umsetzung sollte aber auch in anderen Steuerungsprogrammen möglich sein.

Nun wäre es eigentlich ein einfaches eine während der gesamten Sitzung laufende Loop zu machen in welcher periodisch laufend ein Stellbefehl für den Booster aktiviert wird.  Allerdings haben wir dabei mehrere Probleme:

  1. Wird aus dem laufenden Betrieb in TC in den Editormodus geschaltet so unterbricht TC diese Loop. Damit würden auch sofort die Booster abschalten.
  2. Die Zeitabstände sind nicht immer einzuhalten. So habe ich festgestellt, das eine normale Loop im laufenden Betrieb und unter Last des PC auch mal länger laufen kann als geplant. Die Folge davon ist klar: Der Booster wird abschalten.

Das Problem lässt sich natürlich mit TC lösen – allerdings müssen wir dazu etwas tiefer in die „Trickkiste“ von TC greifen. Punkt 1 lässt sich mittels eines Melders einfach lösen – Punkt 2 ist etwas komplizierter. So ist es in TC so, das eine Loop in einem externen Zubehör eigenständig abläuft – warum wissen die Götter äh Programmierer – und zwar immer und unabhängig von den „Aussenbedingungen“ in dem festgelegten Zeitintervall. Also müssen wir ein externes Zubehör erstellen (wer bis hierher mitgelesen hat: Im Downloadbereich findet sich dieses Zubehör sodaß es jeder nutzen kann und nur importieren muss – die Beschreibung hier ist also vornehmlich zur Erklärung):

Erweitertes Zubehör – „Kontinuierlich EIN/AUS“

Wir benötigen 4 Elemente – wobei diese Elemente relativ einfach gestrickt sind (von rechts nach links): Eine Anzeige, ein Taster (Stellbefehl), ein Schalter und ein 2. Taster (Taster2). Die eigentliche Arbeit macht der Schalter unten rechts beim einschaltenden Zustand:

Erweitertes Zubehör – Schalter für Blinkfrequenz

Hier findet sich eine Variable in welcher wir festlegen, in welchem Zeitintervall der Stellbefehl ausgeführt werden soll. Meinen B-4 reichen eigentlich 10 Sekunden, aber Sicher ist Sicher – daher sende ich den Befehl hier im Beispiel mal alle 4 Sekunden (der reale Wert ist das doppelte des angegebenen Werts!).

So lange der Taster2 aktiv ist, wird jeweils die Anzeige eingeschaltet, der Stellbefehl mit dem Taster „Stellbefehl“ gesendet und sich dann wieder 2 Sekunden Schlafen gelegt. Dann wird der Taster offiziell Ausgeschaltet, wieder 2 Sekunden gewartet und wieder eingeschaltet.

Der Ausschaltvorgang unseres Schalters ist dann eigentlich nur noch das Rücksetzen der Statusabfrage. Auch hier steht nochmal die Blinkfrequenz (kann man hier auch löschen!)

Der eigentliche Befehl wird also von Taster2 gesendet – das sieht dann so aus:

Externes Zubehör: Stellbefehl senden

Wie man sieht arbeiten wir hier mit einem Weichenbefehl – und das ist schon die ganze „Magie“ in diesem externen Zubehör. Die Spezialisten für externes Zubehör können sich gerne das ganze im Detail anschauen. Und was Punkt 1 anbelangt der Problemstellung: Das erkläre ich gleich unten bei der Installation. Was mir aber wichtig war:

Es funktioniert (seit mehreren Wochen) genial gut!

Und wie kann man das benutzen?

Klar – ich schreib das ja jetzt hier nicht nur um euch die Nase lang zu machen, sondern damit ihr es auch selbst verwenden könnt in euren Anlagenkonfigurationen. Dazu braucht es zunächst natürlich einen (oder mehrere) Booster die auch mittels Wachhund-Befehl aktivierbar sind. Schreibt euch die Adresse (in unserem Falle eine DCC Adresse auf) – wir brauchen sie später noch. Ach ja: Und testet die Adresse aus – also legt einfach eine Weiche an mit der Adresse und schaltet die mal ein – und aus – und ein – und aus. Nach einem gewissen Timeout sollte euer Booster jetzt abgeschaltet haben.2 (Tut er das nicht solltet ihr die Kiste einschicken oder den Hersteller fragen – manchmal ist es nur ein Firmwareproblem wenn es nicht wie geplant funktioniert)

Jetzt könnt ihr auch gleich noch eine 2. „Weiche“ anlegen – weil ihr jetzt nämlich euren Booster ausgeschaltet habt – aber ihr müsst ja auch eine Möglichkeit haben ihn wieder über die Software einzuschalten. Auch das findet sich in der Dokumentation des Boosters. Statt einer Weiche könnt ihr aber auch einfach einen x-beliebigen Schalter verwenden dessen Kontakte eine Funktion schalten.

Nun können wir es in TC auch installieren, oder?

Ja – dazu brauchen wir zunächst mal das zusätzliche externe Zubehör welches sich im Downloadbereich findet oder hier: [ddownload id="1240"]

Zum Import in TC im Reiter Zubehör – Erweitertes Zubehör – Bibliothek für erweitertes Zubehör – Import wählen 3falls es ausgegraut sein sollte müsst ihr vorher erst eine Tab mit einem Stellwerksfenster aktiviert haben

Nun könnt ihr dieses erweiterte Zubehör auch an eure Booster anpassen – oder ihr könnt die Einstellung von 4 Sekunden lassen. Falls ihr es anpassen müsst solltet ihr in der Bibliothek die Funktion „Eigenschaften“ auswählen. Dort wählt ihr den Schalter unten links im Bild und ändert die Blinkfrequenz – in beiden auslösenden Zuständen. Damit ist das erweiterte Zubehör einsatzbereit!

Das wars aber nicht – was ist mit der Konfiguration in TC

Nee – das wars noch nicht. Jetzt müssen wir das Zubehör auswählen und in TC im Stellwerk platzieren. Danach mit Rechtsklick geben wir ihm eine Adresse – und zwar genau die Adresse welche den Watchdog eures Boosters aktiviert:

Externes Zubehör – Watchdogadresse konfigurieren

Soweit so gut. Aber wir benötigen noch einen Schalter mit dem wir den Watchdog aktivieren – den sieht man im Bild ganz rechts

Schalter für externes Zubehör – EIN
Schalter für externes Zubehör – AUS

Das wars auch schon – jetzt wird das externe Zubehör kontinuierlich den Watchdog-Befehl senden sobald der Schalter aktiviert ist. Aber Achtung: Wenn der Schalter ausgeschaltet ist, dann ist auch der Watchdog ausgeschaltet – und euer Booster gleich mit! Deshalb sollte man beim Einschalten der Anlage direkt nach dem Einschalten der Booster auch den Watchdog aktivieren und aktiviert lassen!

Da war doch noch was mit dem Editiermodus?

Richtig – den hätte ich fast vergessen! Wenn wir nämlich bei TC in den Editiermodus gehen, dann wird auch unser Watchdog seine Loop beenden – was wir aber in der Regel eigentlich vermeiden wollen. Man will vielleicht auch im Editiermodus noch einen funktionierenden Booster haben – wüsste eigentlich auch kaum einen Fall wenn nicht. Zum Glück hat TC hier einen Monitor welcher uns mitteilt das der Editiermodus aktiv ist. Und das macht für uns ein Bahnwärter den wir erstellen und der folgenden Auslöser hat:

Bahnwärter für Editiermodus
Bahnwärter Operationen

Die Operationen für das Einschalten und für das Ausschalten (!) sind identisch – in jedem Falle wird der Watchdog aktiviert – in diesem Falle indem wir direkt das externe Zubehör aktivieren. In obigem Beispiel gibt es 2 Booster (S und N) die jeweils aktiviert werden. Die zusätzliche Voraussetzung stellt noch sicher das dies nur passiert wenn der Watchdog auch aktiviert wurde.

Thats it! Und wer es nochmal genau nachschauen will kann sich auch gerne meine aktuelle TC Datei anschauen – die findet sich auch im Downloadbereich.

Viel Spass damit und ich hoffe ihr habt eure Moba damit ein wenig sicherer gemacht!

Views: 1075

Translate »