Jump to content

Bedingung wird nicht beachtet


Empfohlene Beiträge

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...