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  "Zufallsgenerator"
(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 !!


Aufgabenstellung

Sollen Abläufe, insbesondere Zugfahrten nicht nach einem festen Schema erfolgen, so kann man in TC* bereits eine Reihe von Einstellungen in den Zugfahrtsregeln verwenden, um dieses Ziel zu erreichen.

Darüber hinaus schafft ein "Zufallsgenerator" in Verbindung mit den TC* Möglichkeiten noch mehr Abwechselung,

Diese Abwechselung könnte z.B. darin bestehen, daß bei einem Wert 8 ein Zug aus dem laufenden Ablauf gegen einen aus einem Abstellgleis ausgetauscht würde.

Bei einem Fahrplanbetrieb ließe sich bei einem bestimmten Wert z.B. eine Betriebsstörung aktivieren, die dann zu Verspätungen führt.


allgemeiner Lösungsansatz

Zum Einsatz gelangt der Binärzähler.
Dieser Zähler wird mit Impulsen aktiviert.

Liefert z.B. jedes Gleis in einem Bahnhof / Abstellgruppe eine unterschiedliche Anzahl von Impulsfolgen an den Zähler, wenn es belegt wird, dann kann aufgrund der ein- und aus- fahrenden Züge im voraus nicht gesagt werden, wann der Zähler einen vorbestimmten Zählerstand (Wert) erreicht hat.
Überläßt man TC* über die Zugfahrtsregeln noch die freie Wahl des Gleises, so gibt es bereits zwei Variablen, die nicht vorherbestimmbar sind.

Die unterschiedliche Impulsanzahl läßt sich auch in Abhängigkeit von einer Zuggruppe erzeugen.



Lösung mittels TC * in der Version 7.0

In diesem Einsatzbeispiel, dem Schattenbahnhof "Bodenwöhr" mit seinen Gleisen B-Gleis 1  bis B-Gleis 5 kommt ein solcher "Zufallsgenerator" zum Einsatz.

    Überblick über den Schattenbahnhof

 

Ziel des Einsatzes eines "Zufallsgenerators" im Projekt  St. Margareten

Durchführung folgender Zugoperationen nach
Eintreffen eines Zuges auf B-Gleis 1  -  B-Gleis 5
UND
Zähler (Wert) < 10
--- ein Zug wird gestartet > Ausfahrt Gleis 2-5 nach Heimhausen
--- ein Zug wird gestartet > Überhol und Wartegleis 7-8
Zähler (Wert)  > 10 und <16
--- je nach Zuggruppe wird ein Zug aus den Abstellgleisen 1-6 bzw. 7-11 zur Ausfahrt bereitgestellt und ein Zug aus den Gleisen 2-5 abgestellt
 

Erstellung des "Zufallsgenerators":

Jedes der Gleise löst mittels des Bremsmelders eine unterschiedliche Anzahl von Impulsen aus, die als Zählimpulse auf den Binärzähler wirken.

    Beispiel für eine Impulsanzahl

hier:
B-Gleis 1   gibt  2  Zählimpulse ab;
B-Gleis 2   gibt  2  Zählimpulse ab;
B-Gleis 3   gibt  1  Zählimpulse ab;
B-Gleis 4   gibt  2  Zählimpulse ab;
B-Gleis 5   gibt  3  Zählimpulse ab;

Diese Kombination hat z.B. zur Folge, das alle Gleise einmal belegt worden sein müssen, bevor der Zähler einen Wert zwischen 10 und 15 erreicht, sofern er bei  0 gestartet wurde.

Mit diesen Impulswerten und in Zusammenhang mit dem spezifischen Zielbereich, ein einzelner Wert oder Werte von - bis, kann der "Zufallsgenerator" quasi eingestellt werden. D.h. wie oft er ansprechen soll.

TC* ist mit den Zugfahrten so eingestellt, daß immer unterschiedliche, freie Gleise ausgewählt und angefahren werden.

Somit ist es nicht vorhersagbar, wann sich der gewünschte Wert einstellt.

Nach jeder Zugeinfahrt und Abgabe der Zählimpulse wird jeweils immer der gleiche Makro gestartet, der wiederum mehrere Makros parallel startet, wobei diese mittels Bedingungen so eingestellt sind, daß nicht alle aktiv werden.

Quasi wird eine if..then..else Abfrage nachgebildet.
 

Ein Parameter ist dabei ....

"Zufallswert" eingetroffen --- Abstellen ??

Diesen Zustand markiert ein Bahnwärter, s. nächstes Bild. Damit wird die Folgezugfahrt(en) nach der Ausfahrt gesteuert.


 

Mittels der oben gestarteten "Folgemakros" wird dieser Bahnwärter mit in die Entscheidung einbezogen, wie das folgende "Makro-Beispiel" zeigt.

  Zählwert nicht erreicht, Bahnwärter nicht gesetzt

  Start der gemeinsamen Zugfahrt für alle Gleise

TC* startet nach einem eigenen Verfahren "längster wartende Zug zuerst fahren", die nächste Zugausfahrt, wenn alle Gleise eine gemeinsame Ausfahrt - Zugfahrt besitzen und dies in den Zugfahrtsregeln so vermerkt wurde.


  Zählwert erreicht, Bahnwärter gesetzt

  Merker (Schalter) wird gesetzt

  Überwachung des Schalters mittels Bahnwärter

  Prüfen, ob die Bedingungen vorliegen

...wenn erfüllt, dann Zugfahrten zum Abstellen und Ausfahrt starten

Auch hier startet TC*  wieder nach dem eigenen Verfahren "längster wartende Zug zuerst fahren", die nächste Zugausfahrt, wenn alle Gleise eine gemeinsame Ausfahrt - Zugfahrt besitzen und dies in den Zugfahrtsregeln so vermerkt wurde.

 

"Zufallswert" noch nicht eingetroffen --- Überhol - / Warte- Gleis ??

Dieser Vorgang läuft in Analogie zu dem oben dargestellten für die Abstellgleise ab.
Der Unterschied besteht darin, daß hier als "steuerndes Element" die Belegungsdauer der Überhol- / Warte- Gleise mit hineinspielt. Diese Wartezeit ist mittels eines Bahnwärters zeitgesteuert.

Ablaufprinzip:
Es kommt zu einer allgemeinen Zugausfahrt und eines der Überhol- / Warte- Gleise ist frei; dann wird der Zug dorthin gelenkt und verbleibt dort für die eingestellte Zeitdauer.
Ist diese abgelaufen wird er über eine eigene Zugfahrt, die alle anderen Einstellungen ignoriert durch die Gleise B-Gleis 1 - 5 geleitet und zum Schattenbahnhof Heimhausen geschickt.
Sind alle Überhol- / Warte- Gleise gelegt; dann erfolgt die Zugfahrt direkt nach Heimhausen.


Lösung mittels TC * in der Version 8.0

Ab dieser Version steht mit der Variante "Gold" ein Zählerobjekt zur Verfügung;
näher, als Ergänzung, im TC-Beispiel "Binärzähler"  dargestellt .

Wird das obige Beispiel mit dem Zähler - Objekt ausgeführt, so werden die Zählimpuls auf den Zähler gegeben.

Da ferner ab der obigen Version auch neue Objekte für die Ablaufsteuerung bereitstehen, können auch die zuvor beschriebenen Auswertung nunmehr durch diese neuen Objekte vorgenommen werden.
Diese Objekte sind näher, als Ergänzung, im Beispiel  TC-Beispiel "If..Then..Else"  dargestellt.

 

 

 

 

 

 


Auf diese Art und Weise kommt eine "nicht vorhersehbare Mischung an Zugfahrten" zustande.
Je nach belieben läßt sich das diese Methode als Anregung verwenden und auf die eigenen Verhältnisse übertragen.

Anmerkung:

Soll nach "Fahrplan" gefahren werden, dann stört natürlich eine solche Anordnung. Mit einem einfachen TC* - Schalter kann das ganze aber EIN / AUS geschaltet werden. Somit lassen sich beide Varianten auch parallel betreiben.

Mit etwas "tüfteln" lassen sich mit einem solchen "Zufallsgenerator" auch zufällige Verspätung in einem Fahrplan einbauen.


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.