Jens Mohr

Ingenieur  +  Betriebswirt
 

... das (H0) Modellbahnprojekt
St. Margareten 

 



 

Home
 

 Projekt - Idee
 Projekt - Planung
 Projekt-Realisier.
       Anlagenaufbau
       Selectrix
       TrainController
          St.Margareten
          Philosophie
          Blöcke
          Fahrweg
          Signale
          Melder
          Schalter,Taster..
          Drehscheibe
          Lok-Zug-Komb.
          Lokführerstand
          Zugfahrten
          Zugbeschreibung
          Längenberechng
          Makros
          Explorer
          Meldungen
          +SmartHand
          Dig.System Konf.
          Beispiele
          Blöcke-Melder
          Ausleuchtung-WS
          Abstellgleis
          Bahnschranke
          Formsignal-Servo
          Drehscheibe
          Kohle-Wasser-Servo
          Kurswagen
          Lokwechsel
          Zug-Überholung
          Start-Ziel-Taster
          if .. then .. else
          Flip ... Flop
          Zähler-Binärzähler
          Zufallsgenerator
          Zugfahrt-Einfluß
          Texte-Meldungen
          Tipps
       Zentrale<>PC
       PC-Konfig.
       Umrüstungen
       Tipps
       Ausgestaltung
       Elektr.Entw.
       3D Druck
       Paternoster
       Ansichten

 Support & Serv.  Links
 Kontakt - Impres.


Copyright 2022
Jens Mohr
83224 Grassau
(Chiemsee/Achental)

 


TrainController (TC) * -
Beispiel  "Zugfahrtbeeinflussung"
(vorgestellt anhand der Variante "Gold" in der Version  8.0)


Vorwort

Wie bereits an anderer Stelle erwähnt, erlaubt TC* aufgrund seines streng objektorientierten Aufbaus, daß es im allgemeinen mehrere Wege gibt eine Aufgabe zu lösen.

Hier wird immer nur EINE Lösung dargestellt, die  für sich nicht in Anspruch nimmt allgemeingültig einsetzbar zu sein oder gar die optimale Lösung zu repräsentieren.

Die Herausforderung für den Leser besteht deshalb gerade darin, die vorgestellte Lösung an seine Belange anzupassen und zu optimieren. Sie soll und kann nur als Anregung dienen.


Hinweis

Die hier angeführten Beispiele basieren zum Teil auf Anregungen bzw. Vorleistungen von Teilnehmern aus dem TC-Forum, die von diesen dort veröffentlicht wurden OHNE eine Angabe auf Einschränkung bei deren Verwendung im PRIVATEN Bereich.
Im Einzelnen läßt sich die jeweilige "Mitwirkung" des / der Teilnehmer(s) an den hier vorgestellten Lösungen nicht mehr klären bzw. darstellen.

Darstellungsform

Zuerst wird bei jedem Beispiel die  jeweilige Aufgabenstellung vorgestellt. Danach erfolgt die Beschreibung eines allgemein gehaltenen Lösungsansatzes. Und als drittes der spezielle Lösungsweg, so wie er von mir mittels TC*-Objekten vorgenommen wurde.
Um Platz zu sparen, wurden die einzelnen Bildschirmabzüge, auf denen die Lösungen erfaßt wurden, in Miniaturansicht eingestellt.
Zur Darstellung der Grafik in lesbarer Form bitte das jeweilige Bild mit der mouse anklicken !!


Situation

Auf digitalen Modelleisenbahnen die mit einem PC-Steuerungsprogramm betrieben werden, stellt sich die Frage "wie lassen ich die Zugfahrten dynamisch vom Betriebsgeschehen im Ablauf beeinflussen".

Jedes PC-Steuerungsprogramm wird hier seine eigenen Methoden und Verfahren anbieten.

Im folgenden soll hier das Prinzip des Softwareprogramms TrainController (TC)* vorgestellt werden.

 

Beispiel 1:
 

Variable / beliebig lange Aufenthaltsdauer ("Zugfahrtunterbrechung")

In TC * kann -- in Abhängigkeit von der Version -- für einen TC-Block, der einen physikalischen Gleisabschnitt repräsentiert, eine Aufenthaltsdauer innerhalb einer Gesamtzugfahrt von "S"  nach  "Z"  in Abhängigkeit von der Zugfahrt selbst und / oder eingesetzter Lok vorgegeben werden.

Diese Zeitdauer ist dann "fix" eingestellt und wird immer bei dieser Zugfahrt in diesem Block wirksam.
Jeder Block in dem ein planmäßiger Aufenthalt erfolgen soll, kann mit einer anderen Zeitdauer belegt werden.

Sollen aber dynamische Vorgänge des Betriebsgeschehens eine Zugfahrtunterbrechung bewirken, z.B. bei einer Überholung (Güterzug <> ICE / D-Zug), dann stellt sich die Frage  "wie kann man das nachbilden ??"

 

allgemeiner Lösungsansatz

Wie bekannt, TC* reserviert -- wie bei der großen Bahn -- in Abhängigkeit von den jeweiligen Zugfahrteinstellungen vorausliegende Blöcke und zugehörige Weichenstraßen (Weichenstraße = Verbindung zwischen jeweils 2 Blöcken).

Soll nun der Zug in einem bestimmten Block "außerplanmäßig" warten, dann muß man die Ausfahrt aus diesem Block temporär sperren.
Die Dauer der Sperre bestimmt die Aufenthaltsdauer.

Nach Aufheben der Block-Ausfahrtsperre erfolgt die Fortsetzung der unterbrochenen Zugfahrt.

Hinweis zum Einsatz dieser Maßnahme
Die einzelnen Reservierungen und Belegungen erfolgen aufgrund der objektorientierten Programmstruktur nicht immer zum gleichen Zeitpunkt.
Daher kann es vorkommen, daß evtl. eine Sperre zu spät gesetzt wird und der Zug nicht hält.

Sicherer ist es, wenn man die Blockausfahrt grundsätzlich sperrt und dann in der betrieblichen Situation jeweils frei gibt, wenn KEIN Aufenthalt "erzwungen" werden soll.
Hat der Zug den Block passiert, wird die Sperre vorsorglich wieder gesetzt.
Der Nutzer muß also invers denken und handeln.

Fazit

Die Blockausfahrtsperre erlaubt eine dynamische Zugfahrtunterbrechung in einem Block.

Die Blockausfahrtsperre arbeitet bei jeder Zugfahrt.
Die zur Aufhebung der Blockausfahrtsperre eingesetzte Logik muß so ausgeführt werden, daß die Aufhebung immer erfolgt; in Fällen des Aufenthalts entsprechend  zeitverzögert.


Beispiel 2:
 

Ausführung von Aktionen VOR Start der Lok / des Zuges

Typische Vertreter sind ....

  • das Stellen von Formsignalen mit einem Servo-Antrieb
  • das Stellen von Schranken mit einem Servo-Antrieb
  • das Abspielen von Sounds (Ansagen, Lokgeräusch, Pfiff, ...)

 

allgemeiner Lösungsansatz

Wie bekannt, TC* startet eine Zugfahrt in einem Block durch Reservierung der Strecke (hier allgemein Weichenstraße genannt) zum nächst folgenden Block -- wie bei der großen Bahn.

Ist diese Reservierung erfolgreich verlaufen und sind die zugeordneten Weichen gestellt, dann startet TC die Zugfahrt.

"Sichtbares Zeichen" ist das Setzen des internen Blocksignals.

Der Zug setzt sich nach der in der jeweiligen Zugfahrt eingestellten Verzögerungszeit in Bewegung.
Diese Zeit ist fix und gilt für alle Zugstarts nach einem Aufenthalt, also auch nach Aufenthalten, seien sie geplant oder ungeplant -- wie oben dargestellt (Überholung).

Sollen aber vor der Abfahrt des Zuges noch spezifische Operationen durchgeführt werden, wie z.B. Bahnhofsansagen, Lok-Pfiff, stellen von Formsignalen und / oder Schranken, dann muß die physische Abfahrt des Zuges verzögert werden.

"Wie macht man das ??"

 

allgemeiner Lösungsansatz

Wie die anderen TC-Objekte auch, hat das Objekt "Weichenstraße" ein Register "Operationen".

Sind hier Operationen eingetragen, dann werden die VOR dem Abschluß der Reservierung der Weichenstraße ausgeführt.

D.h. die Zugfahrt wird erst dann gestartet, wenn alle hier eingetragenen Operationen ausgeführt worden sind.

Da es für eine Reihe von Operationen (z.B. Ansagedauer, Formsignal / Schrankenbewegung) keine Rückmeldung gibt, zumindest keine die hier abgefragt werden könnte, muß man mit einer Hilfskonstruktion arbeiten.

Diese Hilfskonstruktion besteht darin, daß man eine "Systemzeit" von X sec setzt; wobei X größer sein muß als die theoretisch längste reale Operationszeit.

Ist die Zeit abgelaufen, dann erfolgt die in der Reihenfolge eingetragene nächste Operation; ist keine mehr vorhanden, dann wird die Zugfahrt gestartet, so nicht weitere Aktionen "im Wege stehen".

 

Fazit

Die Zugausfahrt aus einem Block kann dynamisch dadurch verzögert werden, indem in die Operationen der sich anschließenden Weichenstraße(n) entsprechende Operationen / Wartezeiten eingefügt werden.

Diese Einstellungen arbeiten bei jeder Zugfahrt.

Will man z.B. die Ansagetexte von den Zugfahrten / Zuggattung / Loks oder sonstigen Bedingungen abhängig machen, dann muß man z.B. pro Zugfahrt einen Schalter setzen, der über Bedingungen zu konfigurieren ist, sodaß immer nur einer anspricht (aktiviert werden aus der Weichenstraße heraus alle).

In den Operationen des jeweiligen Schalters sind dann die entsprechenden Sound-Funktionen zu starten.


Beispiel 3:
 

Zugbeschreibungen und ihre Filterwirkungen

Mit der TC Version 8.0 (Gold) wurde die Funktion "Zugbeschreibung" eingeführt.

Eine Zugbeschreibung definiert ein Fahrzeug und kann in allen TC-Objekten die in den Eigenschaften ein Register "Züge" aufweisen, dort eingefügt werden und wirkt damit in diesem TC Objekt als Filter.

Eine Filterwirkung kann z.B. darin bestehen, daß Fahrzeuge, die dieser Zugbeschreibung entsprechen diese Strecke (Block) benutzen dürfen oder auch nicht.

Die Zugbeschreibung wird hier gesondert dargestellt.


Beispiel 4:
 

Variabler Haltepunkt bei einer Zugfahrt

Mit der TC Version 8.0 (Gold) wurde diese Funktion "Längenberechnung" eingeführt.

Die Längenberechnung ermöglicht es Züge flexibel und genau zu positionieren, so daß Rangierfahrten mit Fahrzeug - Entkopplungen / Kopplungen an beliebiger Stelle des Zugverbandes möglich werden.

Diese Funktion ist hier näher beschrieben.


HINWEISE     zu mit  *  markierten Worten

Alle Firmenbezeichnungen / Firmennamen; Produktbezeichnungen / Produktnamen stellen keine Werbung oder Empfehlung dar, sondern beschreiben nur die in diesem Projekt individuell und subjektiv ausgewählten Produkt - Hersteller bzw. Lieferanten als auch deren verwendeten Produkte zur Anschauung, Darstellung und Beschreibung des eigentlichen Projekt - Inhalts.

Analoges gilt auch für die eingetragenen Links (s. hierzu Distanzierung auf der Link-Seite).

Der Leser soll selbst auf dem Markt recherchieren und für seine Bedürfnisse selbst entscheiden welches Produkt er einsetzen will und wo er sich dieses beschaffen möchte.

In dieser Veröffentlichung verwendete Produktnamen / Produktbezeichnungen sind von / durch den einzelnen Hersteller(n) geschützt. Ihre Nutzung dient lediglich zur Kennzeichnung / Beschreibung des Produktes selbst.
Analoges gilt für die erwähnten
Firmenbezeichnungen / Firmennamen.