Variablen können verwendet werden, um Operationen, Bedingungen, Auslöser und viele andere Optionen flexibler einsetzbar zu machen. Durch die Verwendung einer Variablen anstelle eines festen Wertes für eine bestimmte Option ist es möglich, den Wert dieser Option zur Laufzeit und abhängig von der aktuellen betrieblichen Situation zu ändern.
Variablen können verwendet werden, um
zu zählen und auszuwerten, wie oft ein bestimmtes Ereignis während des Betriebs eintritt
den Namen von Zügen zu ändern, der in Blöcken während der Ausführung von Zugfahrten angezeigt wird
Berechnungen durchzuführen und deren Ergebnisse auszuwerten
ein Objekt aus einer Vielzahl von identischen Objekten für die Ansteuerung mit einem allgemeingültigen Makro auszuwählen
die Verzögerungen oder Wahrscheinlichkeiten von Operationen in einer Liste von Operationen dynamisch zu ändern
die Geschwindigkeit von temporären Geschwindigkeitsbeschränkungen während des Betriebs zu anzupassen
die Distanzen oder Rampen von Markierungen oder die Entfernungen der Zugoperation «Bewegen» während des Betriebs zu ändern
Variablen werden üblicherweise durch Bearbeiten der Operationen erstellt, die auf die Variablen zugreifen. Mit Ausnahme von lokalen Variablen können alle anderen Variablen über das Explorer-Fenster angelegt, bearbeitet und gelöscht werden.
Gültigkeit von privaten Variablen in TC9G
Bei privaten Variablen wird immer das Objekt verwendet, das im engsten Kontext des Zugriffs steht.
Wenn Sie also auf eine private Variable innerhalb der Ausführung einer Lokfunktion zugreifen, so wird auf den bei der Lok gespeicherten Wert zugegriffen. Auch wenn diese Lok gerade eine Zugfahrt ausführt, so ist die Zugfahrt im Kontext dieses speziellen Zugriffes "weiter entfernt" als die Lok.
Wenn Sie aber direkt in den Startoperationen einer Zugfahrt auf eine private Variable zugreifen, so ist die Zugfahrt im Kontext dieses Zugriffes näher dran als die Lok. Hier wird auf den bei der Zugfahrt gespeicherten Wert zugeriffen. Und zwar greifen hier alle Züge, weklche diese Zugfahrt ausführen, auf denselben Wert zu.
Bei privaten Variablen ist in der Regel das Objekt, welches die Operationen gerade ausführt, dasjenige, auf dessen Wert zugegriffen wird (eine Ausnahme bilden Makros. Makros haben keine eigenen privaten Werte, es wird immer auf den Wert des Aufrufers des Makros zugegriffen).
Vorsicht also !
Eindeutiger wird es, wenn Sie Zugfahrt als Gültigkeitsbereich der Variablen festlegen. Dann wird in beiden oben beschriebenen Fällen auf den bei der Zugfahrt gespeicherten Wert zugegriffen.
Aber auch hier wieder Vorsicht!
Wird diese Zugfahrt von mehreren Zügen gleichzeitig ausgeführt, so wird immer auf denselben Wert zugegriffen. Alle aktiven Instanzen derselben Zugfahrt greifen auf denselben Wert einer Variablen mit Zugfahrt als Gültigkeitsbereich zu.
Möchte man für jeden Zug einen eigenen Wert pflegen, so wählt man also besser Zug als Gültigkeitsbereich.
Mit Hilfe von HTML-Code in Textelementen, zusammen mit Variablen, können vielfältige Anwendungsgebiete erschlossen werden - ich habe hier eine Zähler für die Anzahl der gerade aktiven Zugfahrten realisiert.
Es werden fünf Variablen verwendet:
iZF_Counter (vom Typ Integer (=ganze Zahlen), hier wird die Anzahl gespeichert)
sZF_TextColor (vom Typ String (=Text), hier wird die Schriftfarbe hinterlegt)
sZF_BackgroundColor (vom Typ String (=Text), hier wird die Hintergrundfarbe hinterlegt)
iZF_ValueMaxGreen (vom Typ Integer (=ganze Zahlen), maximaler Wert für «grünen» Bereich)
iZF_ValueMaxYellow (vom Typ Integer (=ganze Zahlen), maximaler Wert für «gelben» Bereich)
Zusätzlich werden in meinem Anwendungsfall 3 Bahnwärter benötigt, welche die folgenden Zustände abfragen:
Anzahl Zugfahrten sind im «grünen» Bereich
Anzahl Zugfahrten sind im «gelben» Bereich
Anzahl Zugfahrten grösser als der «gelbe» Bereich
Mit dem Bahnwärter wird die Variable iZF_Counter abgefragt und je nach Wert der Inhalt der Variablen sZF_TextColor und sZF_BackgroundColor verändert.