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.