Rainer Posted May 28, 2014 Share Posted May 28, 2014 Hallo,Ich habe ein kleines Problem und sehe keine Lösung.Gruppe: Ereignisse Ereignis: Namen auslesen 1 Auslöser: Zug betritt ein Gleis Lok='[Alle Loks]' Gleis='Namen1' Aktion: Variable setzen Name='BusNamen1' Wert='$_trigger1._Name' Aktion: Variable setzen Name='Linie31' Wert='$Bus31.Linie' Ereignis: Namen auslesen 2 Auslöser: Zug betritt ein Gleis Lok='[Alle Loks]' Gleis='Namen2' Aktion: Variable setzen Name='BusNamen2' Wert='$_trigger1._Name' Aktion: Variable setzen Name='Linie32' Wert='$Bus32.Linie' Ereignis: W11 Bus31 Linie1 Auslöser: Zug betritt ein Gleis Lok='[Alle Loks]' Gleis='W11 SchW11-1' Bedingung: Variable besitzt den Wert Name='Linie31' Wert='Linie1' Negieren='0' Aktion: Weiche schalten Weiche='W11' Position='0' Ereignis: W11 Bus32 Linie2 Auslöser: Zug betritt ein Gleis Lok='[Alle Loks]' Gleis='W11 SchW11-1' Bedingung: Variable besitzt den Wert Name='Linie32' Wert='Linie2' Negieren='0' Aktion: Weiche schalten Weiche='W11' Position='1' Variable: BusNamen1 'Bus31'Variable: BusNamen2 'Bus32'Variable: Linie31 'Linie1'Variable: Linie32 'Linie2'OBJ-VariableVariable: Bus31.Linie 'Linie1'Variable: Bus32.Linie 'Linie2' Wie man aus obiger EV erkennen kann funktioniert das Auslesen der 2 Busse (31 u.32).Jetzt fahren diese auf ein Gleis (W11 SchW11-1) um eine Weiche zu steuern.Die Weiche soll je nach Linie (1 o.2) unterschiedlich schalten.Leider werden die 2 unterschiedlichen Bedingungen nicht beachtet.Es wird immer nach dem 2 Eintrag "Ereignis: W11 Bus32 Linie2" verfahrenTausche ich diese Einträge platzmäßig in der EV wird "Ereignis: W11 Bus31 Linie1" verfahren.Dies würde doch bedeuten dass die Bedingung keine Rolle spielt sondern der Platz in der EV.Wo ist mein Denkfehler? Ich habe schon alle Variablen im Namen und Wert geändert.GrußRainer Link to comment Share on other sites More sharing options...
Elgiloy Posted May 28, 2014 Share Posted May 28, 2014 Der Wert der Variable "Linie31" ist nun immer "Linie1". das heißt der Vergleich trifft immer zu. Durch das Auslesen auf dem Gleis wird sie nicht verändert. Ebenso die Variable "Linie32". Deine Weiche schaltet also jedesmal hin und her.Stattdessen solltest du $_Trigger1.Linie auslesen. Link to comment Share on other sites More sharing options...
Rainer Posted May 28, 2014 Author Share Posted May 28, 2014 Hallo Elgiloy,richtig, die Werte sind immer gleich je nach Linie. Das sollen sie auch sein.Wenn du dir meine Nachricht nochmal anschaust. Ich wäre froh, wenn die Weiche schalten würde.Genau das tut sie aber nicht!, sondern es wird "immer" das in der EV an "zweiter Stelle" stehende Ereignis verwendet.GrußRainer Link to comment Share on other sites More sharing options...
Neo Posted May 28, 2014 Share Posted May 28, 2014 Hallo Rainer,laut deiner EV ist das aber auch logisch. Die Variablen "Linie31" und "Linie32" haben immer die gleichen Werte, wenn die Busse erstmal über die "Namen-Gleise" gefahren sind. Danach sind die Bedingungen der beiden Ereignisse "W11 Bus31 Linie1" und "W11 Bus32 Linie2" immer erfüllt, weshalb beide Ereignisse gleichzeitig eintreten und die Weiche daher erst auf 0 und anschließend sofort auf 1 geschaltet wird (das sieht man nicht, da es innerhalb eines Frames geschieht). Das erklärt auch, warum das Vertauschen in der EV eine Rolle spielt, weil die Weiche dann erst 1 und danach sofort auf 0 geschaltet wird (das Studio verarbeitet die Ereignisse von "oben" nach "unten").Wenn du einfach nur willst, dass eine Weiche eine bestimmte Position anhand des Fahrzeugs einnimmt, dann lässt sich das aber deutlich einfacher realisieren, ohne den Umweg über Zwischenvariablen. Da würden die beiden Objektvariablen reichen und beim Betreten eines Gleises vor der Weiche würde man einfach nur prüfen, ob das Objekt eine entsprechende Variable hat. Für jede Weichenstellung bräuchte man dann ein Ereignis. Aber womöglich ist das was du erreichen willst noch komplexer als hier dargestellt.Viele Grüße,Neo Link to comment Share on other sites More sharing options...
Rainer Posted May 29, 2014 Author Share Posted May 29, 2014 Hallo,habe eine Weile gebraucht um meinen Fehler zu "verstehen".Aber... Gut Ding braucht halt ne weile :-)Jetzt klappt es, zuerst zurück auf "eine" Variable mit sich änderndem Wert (war ja der Grundfehler) dann nachvollziehen ohne Variable mit Gleissteuerung. Jetzt geht es auch mittels Trigger.Puh, war ne schwere Geburt. Danke für eure Hilfe, auch wenn ich meine Idee der Steuerung nicht aus dem Kopf bekam. Bin halt doch manchmal sehr stur. :-))GrußRainer Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now