Jump to content

Bedingung wird nicht beachtet


 Share

Recommended Posts

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-Variable
Variable:  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" verfahren

Tausche 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

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

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

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

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

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...