Jump to content

Lok variable


 Share

Recommended Posts

hab da ein Problem ich möchte gerne das z.B Güterloks eine Weiche schalten und Personenloks die Weiche wieder umschalten ohne das ich jeder einzelnen Lok einen befehl geben muss.

Meine Loks haben den Name GLok 1 oder GLok 2 usw oder PLok 1 usw sind ca.150 Züge auf der Bahn.

Link to comment
Share on other sites

Hallo Klaus

Ich bin Experte in der EV , aber wenn ich Dich richtig verstehe will Du nur GLok's und PLok's trennen über einer Weiche .

Mein Vorschlag wär :

In dem Du über ein Kontaktgleis " Weiche_umschalten" mit jeder Lok bestimmen kannst welche der beiden Arten von Züge ( PLok' oder GLok's ) die Weiche ( z.B . Einfahrt ) schalten .

 

 

" in Version 4 "           

Name: Weiche_schalten / Einfahrt

Ereignis (Auslöser)

Zug / Fahrzeugverbund betritt ein Gleis / eine Straße       

   Fahrzeug (mit Antrieb) : [Alle Fahrzeuge (mit Antrieb)]

                    Gleis/Straße: Weiche_schalten

Bedingungen

Alle Bedingungen müssen erfüllt sein (UND)

   Fahrzeug steht auf einem Gleis/einer Straße

                      Fahrzeug: PLok

                 Gleis/Straße: Weiche_schalten                                      zB. Kontaktgleis

Aktionen

Aktionen für "Bedingungen sind erfüllt"

Weiche schalten

                 Gleis/Straße:  2271L                                          zB. Märklin-K Weiche L

                 Position: 1

Aktionen für "Bedingungen sind NICHT erfüllt"

Weiche schalten

                 Gleis/Straße:  2271L                                          zB. Märklin-K Weiche L

                 Position: 0

 

Erklärung : Hier werden alle Züge ( auch Zugverband ) über ein Kontaktgleis mit den

Namen "Weiche_schalten" die Weiche '2271L' gesteuert.

Nur weil eine Bedingung gegeben wurde , daß nur die PLok die Bedingung erfüllen kann .

In diesem Fall fährt nur die PLok ( oder auch alle PLok's ) auch nur gerade über die Weiche .

Und die GLok ( oder auch alle GLok's)  keine Bedingung erfüllt , haben sie den Abzweig der Weiche erhalten.

 

Bei meiner kleinen Test-Anlage hat es zumindest so funktioniert , wie oben geschrieben in der EV . Es ist auch nur ein einziger Eintrag für den Auslöser gebraucht worden .

Die Bezeichnung " PLok " ohne Nummer und auch " GLok " ohne Nummer .

 

Vielleicht gibt es noch eine andere Lösung/en .

Viel Spaß

Viele Grüße

H:xnS

Edited by h.w.stein-info
Erklärung angehangen
Link to comment
Share on other sites

Hallo Klaus,

wenn es nur eine "PLok" und nur eine "GLok" gibt, ist der Vorschlag von Hans (@h.w.stein-info) in Ordnung. Sobald es jedoch mehrere Loks mit demselben Namen "PLok" oder "GLok" gibt, funktioniert der Vorschlag von Hans nicht mehr, da dann mit der Referenz "PLok" oder "GLok" nur noch eine Lok mit dieser Bezeichnung identifiziert werden kann. Alle anderen Loks mit demselben Namen werden nicht als solche erkannt und führen daher auch nicht zu der erwarteten Weichenschaltung.

Ich habe die im nachfolgenden Bild gezeigte Demo-Anlage als mbp-Datei beigelegt, die den Unterschied zwischen der Abfrage des Lok-Namens selbst oder alternativ einer jeder Lok zugeordneten Objekt-Variable verdeutlichen soll:

5a51fa9ead1a8_AnlageWeichenschaltung.thumb.jpg.263167b18bd6f27fcc202d3b8c950195.jpg
Bild 1:   Weichenschaltung.mbp

Zunächst habe ich den von Hans gemachten Vorschlag nachgestellt. Hierbei habe ich 3 Personenzugloks mit "PLok" und 3 Güterzugloks mit "GLok" bezeichnet.

Objektlisten.thumb.jpg.10a916f30d744551a399bdf39f084d0c.jpg
Bild 2:  Liste der auf der Anlage befindlichen Objekte (links mit doppelten, rechts mit eindeutigen Lok-Bezeichnungen)

In der obigen Liste links werden aufgrund der identischen Bezeichnung 3 Loks mit Namen "PLok" und 3 mit Namen "GLok" angezeigt. Stellt man nun in der Anlage aus Bild 1 die Ausweiche im Vordergrund anhand der von Hans skizzierten Bedingung aus Bild 3, ...

5a52052ddc586_FalscheBedingung.jpg.3c9ac50450cae060ce47a963c8c3e66a.jpg
Bild 3:  "Fahrzeug steht auf Gleis"-Bedingung mit Lokname

... so wird genau eine Lok mit dieser Bezeichnung erkannt (es ist nicht vorhersehbar, welche), und die anderen werden "ignoriert".

Bedingungen.thumb.jpg.60a76b4f176bc12ce2d841a6bd798838.jpg
Bild 4:  Alternative Zusatzbedingung mit Auswertung der "_Trigger1"-Variable

Spezifiziert man jedoch in der Zusatzbedingiung nicht die Lok selbst über ihren Namen, sondern testet anhand der vom Modellbahn-Studio gelieferten Objekt-Variable "_Trigger1._Name", ob dieser mit der Zeichenkette "PLok" identisch ist (in obigen Bild links), werden alle Loks mit dem Namen "PLok" erkannt, und die Weiche dann entsprechend korrekt gestellt.

Diese Lösung hat jedoch einen Haken:
Es müssen alle Loks, die so erfasst werden und damit die Ausweiche korrekt stellen sollen, denselben Namen besitzen. Damit können sie aber nicht mehr untereinander unterschieden werden. Wenn man dagegen den Loks unterschiedliche Namen verpasst (bitte zur Probe einfach zwei Loks von "PLok" nach "PLok 2 und PLok 3" und zwei Loks von "GLok" nach "GLok 2" und "GLok 3" umbenennen - wie im Bild 2 rechts gezeigt), wird auch mit dieser Zusatzbedingung nur noch jene Lok erkannt, die ihre alte Bezeichnung "PLok" behalten hat.

Möchte man eine "saubere" Lösung dieser Aufgabe erreichen, die für alle Loks mit unterschiedlichen Namen "greift", benötigt man Objekt-Variablen, die man den einzelnen Lokomotiven zuordnet, und in denen man die zu unterscheidende Eigenschaft (z.B. "PLok" oder "Glok") hinterlegt.

Objektvariablen-Definition.thumb.jpg.fa5402985da82bec06bd3c4fe6be0e82.jpg
Bild 5:  Definition einer Objekt-Variable

Hat man auf der Anlage eine Lok ausgewählt, kann man wie oben gezeigt dieser über den Button im Eigenschaftsfenster ganz rechs eine Objektvariable zuweisen. Objektvariable, können auch in der Ereignisverwaltung angezeigt werden.

Ich habe hierfür jedoch die Eigenschaften "alt" und "neu" zugewiesen, um nicht Personenzug- und Güterzugloks, sondern Altbau- und Neubauloks unterscheiden zu können. Das Prinzip ist jedoch dasselbe.

Variablen-Anzeige.thumb.jpg.83259454afc13a3a3b999de0ee928299.jpg
Bild 6:  Anzeige von Variable in der Ereignisverwaltung

Im obigen linken Fenster (vollständig 2-spaltig angezeigt) sieht man nur zwei Objekt-Variable, obwohl allen 6 Loks welche zugeordnet sind. Der Grund hierfür liegt in der nicht eindeutigen Vergabe der Loknamen. In der Objekt-Variablen-Liste kann nämlich jeder Objekt-Name nur einmal angezeigt werden (es gibt keine Unterscheidungsmöglichkeit zwischen Objekten mit gleichem Namen). Anders sieht es aus, wenn man jeder Lok einen eindeutigen Namen verpasst. Dann erhält man die im zur Hälfte angezeigten Fenster rechts angezeigte Liste.

Wählt man nun in der Zusatzbedingung für das "Zug betritt Gleis"-Ereignis die in Bild 4 rechts gezeigte Variante, wobei anstelle des Namens der Lok deren Wert in der Objektvariable als Unterscheidungsmerkmal herangezogen wird, funktioniert die Schaltung für Loks mit gleichen Namen immer noch, aber sie funktioniert auch bei Loks mit unterschiedlichen Namen, da die Lok-Bezeichnungen in der Zusatzbedingung nicht mehr abgefragt werden. Da der Wert in der Objektvariable wirklich nur eine "Eigenschaft" und nicht die "Identifizierung der Lok" darstellt, kann hier problemlos derselbe Wert mehreren Objekten (hier den Loks) zugeordnet werden.

Viele Grüße
BahnLand

 

Link to comment
Share on other sites

Hallo Klaus und Hans-Martin

Habe ich mir schon gedacht, das es doch noch spezifischer ( genauer ) geht .

Gut , das ich vorher geschrieben habe , das ich kein Experte bin . Sonst könnte ich mich nicht mehr heraus reden .

Ich ging auch davon aus das es auch ohne Variablen gehen könnte . Was aber doch zeigt , das es doch nicht ohne gehen kann .

Einfach ist nicht immer die gute Lösung !

Auch wenn sie zum Teil funktionieren kann , aber doch nicht ausreicht .:/

 

Viele Grüße

H:xnS

Link to comment
Share on other sites

vor 15 Stunden schrieb h.w.stein-info:

Gut , das ich vorher geschrieben habe , das ich kein Experte bin

Genau genommen hast du versehentlich das Gegenteil geschrieben:  9_9

 

vor 23 Stunden schrieb h.w.stein-info:

Hallo Klaus

Ich bin Experte in der EV

 

Link to comment
Share on other sites

Am 7.1.2018 um 14:18 schrieb BahnLand:

Hallo Klaus,

wenn es nur eine "PLok" und nur eine "GLok" gibt, ist der Vorschlag von Hans (@h.w.stein-info) in Ordnung. Sobald es jedoch mehrere Loks mit demselben Namen "PLok" oder "GLok" gibt, funktioniert der Vorschlag von Hans nicht mehr, da dann mit der Referenz "PLok" oder "GLok" nur noch eine Lok mit dieser Bezeichnung identifiziert werden kann. Alle anderen Loks mit demselben Namen werden nicht als solche erkannt und führen daher auch nicht zu der erwarteten Weichenschaltung.

Ich habe die im nachfolgenden Bild gezeigte Demo-Anlage als mbp-Datei beigelegt, die den Unterschied zwischen der Abfrage des Lok-Namens selbst oder alternativ einer jeder Lok zugeordneten Objekt-Variable verdeutlichen soll:

5a51fa9ead1a8_AnlageWeichenschaltung.thumb.jpg.263167b18bd6f27fcc202d3b8c950195.jpg
Bild 1:   Weichenschaltung.mbp

Zunächst habe ich den von Hans gemachten Vorschlag nachgestellt. Hierbei habe ich 3 Personenzugloks mit "PLok" und 3 Güterzugloks mit "GLok" bezeichnet.

Objektlisten.thumb.jpg.10a916f30d744551a399bdf39f084d0c.jpg
Bild 2:  Liste der auf der Anlage befindlichen Objekte (links mit doppelten, rechts mit eindeutigen Lok-Bezeichnungen)

In der obigen Liste links werden aufgrund der identischen Bezeichnung 3 Loks mit Namen "PLok" und 3 mit Namen "GLok" angezeigt. Stellt man nun in der Anlage aus Bild 1 die Ausweiche im Vordergrund anhand der von Hans skizzierten Bedingung aus Bild 3, ...

5a52052ddc586_FalscheBedingung.jpg.3c9ac50450cae060ce47a963c8c3e66a.jpg
Bild 3:  "Fahrzeug steht auf Gleis"-Bedingung mit Lokname

... so wird genau eine Lok mit dieser Bezeichnung erkannt (es ist nicht vorhersehbar, welche), und die anderen werden "ignoriert".

Bedingungen.thumb.jpg.60a76b4f176bc12ce2d841a6bd798838.jpg
Bild 4:  Alternative Zusatzbedingung mit Auswertung der "_Trigger1"-Variable

Spezifiziert man jedoch in der Zusatzbedingiung nicht die Lok selbst über ihren Namen, sondern testet anhand der vom Modellbahn-Studio gelieferten Objekt-Variable "_Trigger1._Name", ob dieser mit der Zeichenkette "PLok" identisch ist (in obigen Bild links), werden alle Loks mit dem Namen "PLok" erkannt, und die Weiche dann entsprechend korrekt gestellt.

Diese Lösung hat jedoch einen Haken:
Es müssen alle Loks, die so erfasst werden und damit die Ausweiche korrekt stellen sollen, denselben Namen besitzen. Damit können sie aber nicht mehr untereinander unterschieden werden. Wenn man dagegen den Loks unterschiedliche Namen verpasst (bitte zur Probe einfach zwei Loks von "PLok" nach "PLok 2 und PLok 3" und zwei Loks von "GLok" nach "GLok 2" und "GLok 3" umbenennen - wie im Bild 2 rechts gezeigt), wird auch mit dieser Zusatzbedingung nur noch jene Lok erkannt, die ihre alte Bezeichnung "PLok" behalten hat.

Möchte man eine "saubere" Lösung dieser Aufgabe erreichen, die für alle Loks mit unterschiedlichen Namen "greift", benötigt man Objekt-Variablen, die man den einzelnen Lokomotiven zuordnet, und in denen man die zu unterscheidende Eigenschaft (z.B. "PLok" oder "Glok") hinterlegt.

Objektvariablen-Definition.thumb.jpg.fa5402985da82bec06bd3c4fe6be0e82.jpg
Bild 5:  Definition einer Objekt-Variable

Hat man auf der Anlage eine Lok ausgewählt, kann man wie oben gezeigt dieser über den Button im Eigenschaftsfenster ganz rechs eine Objektvariable zuweisen. Objektvariable, können auch in der Ereignisverwaltung angezeigt werden.

Ich habe hierfür jedoch die Eigenschaften "alt" und "neu" zugewiesen, um nicht Personenzug- und Güterzugloks, sondern Altbau- und Neubauloks unterscheiden zu können. Das Prinzip ist jedoch dasselbe.

Variablen-Anzeige.thumb.jpg.83259454afc13a3a3b999de0ee928299.jpg
Bild 6:  Anzeige von Variable in der Ereignisverwaltung

Im obigen linken Fenster (vollständig 2-spaltig angezeigt) sieht man nur zwei Objekt-Variable, obwohl allen 6 Loks welche zugeordnet sind. Der Grund hierfür liegt in der nicht eindeutigen Vergabe der Loknamen. In der Objekt-Variablen-Liste kann nämlich jeder Objekt-Name nur einmal angezeigt werden (es gibt keine Unterscheidungsmöglichkeit zwischen Objekten mit gleichem Namen). Anders sieht es aus, wenn man jeder Lok einen eindeutigen Namen verpasst. Dann erhält man die im zur Hälfte angezeigten Fenster rechts angezeigte Liste.

Wählt man nun in der Zusatzbedingung für das "Zug betritt Gleis"-Ereignis die in Bild 4 rechts gezeigte Variante, wobei anstelle des Namens der Lok deren Wert in der Objektvariable als Unterscheidungsmerkmal herangezogen wird, funktioniert die Schaltung für Loks mit gleichen Namen immer noch, aber sie funktioniert auch bei Loks mit unterschiedlichen Namen, da die Lok-Bezeichnungen in der Zusatzbedingung nicht mehr abgefragt werden. Da der Wert in der Objektvariable wirklich nur eine "Eigenschaft" und nicht die "Identifizierung der Lok" darstellt, kann hier problemlos derselbe Wert mehreren Objekten (hier den Loks) zugeordnet werden.

Viele Grüße
BahnLand

 

Hallo Bahnland tausend dank, das hat mir geholfen und sogar noch mehr jetzt kann ich auch noch andere Ereignisse verwalten wie Geschwindigkeit und Signale setzen 

Gruss Klaus

Link to comment
Share on other sites

  • 1 month later...

Hallo Michael,

hast Du die neuesete Version des Modellbahn-Studios installiert (4.2.2.0 (64 Bit)). Wenn nicht, würde ich Dich bitten, diese nachzuinstallieren. Denn mit dieser Version abgespeicherte Anlagen (insbesondere die von Dir genannte) lassen sich von älteren Versionen nicht mehr laden. Mir ist momoentan nicht bewusst, ob es sich bei dieser Version um eine Beta-Version handelt. Wenn ja, und wenn Du keine Beta-Versionen einsetzen möchtest, musst Du den nächsten offiziellen Update von Neo abwarten. Genaueres kann Dir da sicher Neo sagen.

Viele Grüße
BahnLand

Link to comment
Share on other sites

Michael,

wenn Du zusätzlich noch die V3 auf deinem Rechner hast, zeigt die Windows-Verknüpfung ( endung .mbs) auf die alte Version.

Du musst dann "Öffnen mit..." auswählen und auf die V4 verweisen.

( oder in der Systemsteuerung >> ->Programme->Standardprogramme->Dateityp immer mit einem bestimmten Programm öffnen << die V4 auswählen ).

Gruß ~ Lutz

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...