====== Variablen Werte aus einer Lok auslesen und zurückschreiben ====== Diese Seite beschäftigt sich damit, wie man zwischen einem Block und einer Lokomotive Inhalte einer Variable ausliest oder ändert. Die Variable wird dabei in der Lokomotive als "Funktion" geführt. ===== Anlegen der Variable in der Lokomotive ===== - Die Lokomotive wird um eine Funktion erweitert. Dazu muss man in der Lokfunktionen-Bibliothek eine neue Funktion anlegen, wie z.B. "Variable" oder einen sinnigeren Name. - Man geht in die Lokomotive(n) und weißt denen eine neue Funktion zu, nicht aber als "Decoderfunktion", sondern eine vom Typ "Liste". Wir wählen dabei auch gleich als Zustand den Typ "Taster". \\ [{{:tc:variablen:pasted:20240820-091715.png|Lokfunktion Variable einrichten}}] - Nun geht man in die "Liste" und wählt aus dem Reiter "Operationen" --> Ablaufsteuerung den Punkt "Variablen". Da unsere Variable noch gar nicht erstellt wurde, müssen wir diese **einmalig** erstellen. - Mit einem Doppelklick auf "Zugriff auf Variable" kann man eine Variable wählen oder durch Klick auf "Neu" erstellen. Wir erstellen einmalig eine neue und wählen diese bei den weiteren Lokomotiven nur aus:[{{:tc:variablen:pasted:20240820-103959.png|Leere Variable}}] \\ [{{:tc:variablen:pasted:20240820-104255.png|Durch Klick auf "Neu..." kann man eine neue Variable erstellen.}}] - Das Beispiel zeigt, wie ich die Varaible anlege. Sie hat den Wert Zahl und die Gültigkeit "Zug", was bedeutet, dass die gleiche Variable in jedem Zug bzw. jeder Lok einen anderen Wert haben kann. \\ [{{:tc:variablen:pasted:20240820-104604.png|Anlegen der Lokvariablen}}] - Der Lokvariablen können wir, zum späteren Testen, einen Wert zuweisen, z.B. die Zahl "1". \\ [{{:tc:variablen:pasted:20240820-104847.png|Zuweisen des Werts "1"}}] - So sollte die Einstellung in der Lokomotive aussehen: [{{:tc:variablen:pasted:20240820-105002.png|Funktion der Variable in der Lok}}] ===== Anlegen eines Tasters um Lok in einem Block auszulesen bzw. zu beschreiben ===== Um die nun angelegte Variable in eine Zug/Lok in einem Block auszulesen bzw. zu ändern, müssen wir im Stellwerk einen Taster anlegen. **Wichtig:** Der Taster muss dem Block zugeordnet werden, in dem das Auslesen bzw. das Ändern der Variable passieren soll, sonst weiß TC nicht, wo es lesen bzw. schreiben: \\ [{{:tc:variablen:pasted:20240820-110323.png|Taster dem Block zuordnen}}] Für die Übergabe der Variable in den Block benötigen wir noch eine weitere Variable. Entweder man verwendet die Variable nur einmal im gesamten Programm, dann darf die Variable die Gültigkeit "global" haben oder man verwendet dabei Variable in verschiedenen Blöcken, dann sollte die Variable die Gültigkeit "Block" haben. Wir entscheiden uns für "Block". \\ [{{:tc:variablen:pasted:20240820-111040.png|Erstellung Blockvariable}}] ===== Wert aus der Lok auslesen ===== Nachdem nun beide Variablen angelegt sind, legen wir in die Operation des Tasters folgendes an: \\ [{{:tc:variablen:pasted:20240820-112437.png|Befehle zum Auslesen der Lokvariable}}] \\ \\ Drückt man nun den Taster, ohne dass eine Lok im Block ist, erscheint im Meldefenster folgendes: \\ [{{:tc:variablen:pasted:20240820-111822.png|Auswertung ohne Lok in dem Block}}] \\ \\ Auslesen der Variable der Lok im Block 19: \\ [{{:tc:variablen:pasted:20240820-112358.png|Auswertung mit Lok in dem Block}}] ===== Wert in die Lok schreiben ===== Wir erweitern das Programm des Tasters von oben wie folgt: [{{:tc:variablen:pasted:20240820-113017.png|Das Programm wurde um eine weitere Abfrage und die Addition der Variable in der Lok erweitert}}] \\ \\ Nun ist es vollbracht: Wir fragen die Variable der Lok ab, addieren 1 dazu und fragen den neuen Wert ab. {{:tc:variablen:pasted:20240820-113726.png}} \\ \\ Der Knopf kann nun z.B. in eine Automatik integriert werden. Je nach Wert der Variablen können nun z.B. Zugfahrten gestartet werden oder andere Abläufe ausgelöst werden.