Jump to content

Ereignisverwaltung Countdown


Jochen

Empfohlene Beiträge

Guten Abend,
ich habe auf einem Gleisstellpult 18 Kontrolllampen (als Signal definiert).
Wenn ein Signal die Position offen erhält, sollen alle anderen den Zustand geschlossen erhalten.
Jedes Signal hat Aktionen für den Zustand offen bzw. geschlossen.
Dazu habe ich einen Countdown definiert in der alle Signale auf geschlossen gesetzt werden.
Das funktioniert. Dummerweise wird jetzt natürlich auch das Signal wieder auf geschlossen gesetzt und die damit verbundene Aktion ausgeführt.
Ich habe nicht  rausbekommen wie ich das verhindern kann.
Beispiel.
Ereignis: Signal 1 wird auf offen gesetzt: (Doppelklick auf die Kontrolllampe)
   Aktion1: Countdown ausführen: alle Signale auf geschlossen setzen:
         funktioniert. Alle Signale sind geschlossen und die Aktionen wurden ausgeführt (auch die vom Signal 1 - damit kann ich leben)
   Aktion2: Signal 1 wieder auf offen setzen: (damit die entsprechende Reaktion ausgeführt wird)
        funktioniert nicht. keine Reaktion des Signals 1. Weil jetzt wohl wieder die Aktion 1 ausgeführt wird, da Signal schaltet.

Gibt es eine Möglichkeit im Countdown die Aktion (Signal schließen) für das auslösende Element zu verhindern?

Ich könnte natürlich noch zusätzlich zu jedem Signal einen Schalter einbauen, das müste dann gehen. Allerdings hätte ich in EV dann 36 Elemente zu verwalten. '
Da dies nur eine Seite des Bahnhofes ist verdoppelt sich die Anzahl der Signale und Schalter wenn ich die andere Seite dann dazubaue.

Hat jemand vielleicht ein ähnliches Problem schon gelöst?

Viele Grüße
Jochen

 


 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hey @Jochen,

antwortet noch kaum jemand auf dein Problem, ich versuchs mal, auch wenn ich noch nicht der EV-Spezialist bin. Wenn du ein Signal öffnest und damit alle anderen Signale schließen willst, verstehe ich nicht, wozu es den Countdown benötigt. Du kannst doch mit dem zu öffnenden Signal alle anderen direkt schließen.

vor 1 Stunde schrieb Jochen:

Dazu habe ich einen Countdown definiert in der alle Signale auf geschlossen gesetzt werden.
Das funktioniert. Dummerweise wird jetzt natürlich auch das Signal wieder auf geschlossen gesetzt und die damit verbundene Aktion ausgeführt.

Wenn du aber einen Countdown startest, der alle Signale schließt, hm... naja dann macht der das auch ;)
Ein Signal schalten und damit alle anderen Signale "aus"-schalten sollte direkt gehen. Und dieses Ereignis musst du dann für jedes Signal schreiben (man kann ja ein Ereignis kopieren und dann nur noch das auslösende, schaltende oder betroffene Element ändern).

Gruß
Porrey61

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Jochen,

Du hast 2 Möglichleiten, dieses Problem zu lösen:

  1. Zu verzichtest auf den Countdown und schließt beim "Öffnen" einer Kontrolllampe alle 17 anderen Kontrolllampen explizit in der Aktionen-Liste für das Öffnen der Kontrolllampe. Da Du beim Öffnen noch andere Aktionen vorgesehen hast, würde ich - um Schreibaufwand zu sparen - beim Erstellen der Ereignisdefinitionen wie folgt vorgehen:
    a) für eine Kontrolllampe beim Öffnen das Schließen aller 18 Lampen(einschließlich der eigenen) in der Aktionen-Liste definieren
    b) Ereignisdefinition 17 mal kopieren
    c) in allen 18 Ereignisdefinitionen korrekten Auslöser einstellen und jeweils die Auslöser-Lampe aus der Liste der zu schließenden Lampen im Aktionenfenster löschen
    d) die ursprünglich vorgesehenen individuellen Aktionen für das Öffnen oder Schließen der Lampe(n) hinzufügen
     
  2. Du belässt es bei dem Countdown, musst aber dann einen Indikator hinzufügen, um zu erkennen, dass das Schließen nicht für die den Countdown auslösende Lampe gelten soll. Führe hierzu eine Variable ein, die Du z.B. mit "Auslöser-Lampe" bezeichen kannst. Wenn nun eine Lampe "geöffnet" wird, schreibst Du deren Namen in die Variable. Dann ziehst Du den Countdown auf (als Wartezeit kannst Du hier ruhig "0" eintragen - dann wird der Countdown sofort wirksam). Auf das Ablaufen des Countdowns reagieren nun alle Lampen. Dort machst Du aber das Schließen davon abhängig, ob der dort hinterlegte Name jener der eigenen Lampe ist (Zusatzbedingung in der Ereignisdefinition). Nur wenn dies nicht der Fall ist, führst Du die Aktion "Schließen Lampe" für die "eigene" Lampe aus.

    Solange Fu die Kontrolllampen nur "händisch" (also explizit mit der Maus) bedienst, läufts Du keine Gefahr, dass die Variable durch parallele Aktionen überschrieben werden könnte (Du kannst zu einem Zeitpunkt immer nur eine Kontrolllampe anklicken). Wenn dieser Vorgang aber einmal automatisiert werden sollte, funktioniert dieser Mechanismus nicht mehr, ohne zusätzliche Vorkehrungen gegen zeitlich parallele Betätigungen der Kontrolllampen zu treffen.

Wie hieß es einst in einer früheren Fernsehsendung mit Rudi Carell: "Nun musst Du Dich entscheiden ...." - allerdings nicht für den Kandidaten des anderen Geschlechts, sondern für die von Dir bevorzugte Lösung :D.

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Porrey61, Hi Bahnland
vielen Dank für Eure Antworten
ich werde werde mal in mich gehen, ob ich die Variante mit der Variablen wähle oder die Aktionen dupliziere.
Derzeit überblicke ich noch nicht, wie ich später den Automatikbetrieb realisiere.

Auf alle Fälle nochmals vielen Dank für Eure schnelle Reaktion.

PS. Wie bekommt man eigentlich hin, den Namen des Mitgliedes, das man ansprechen möchte, wie in Porrey61' s Antwort,  einzusetzen?

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Jochen,

wenn Du ein Wort mide m "Klammeraffen" ("@") beginnst, werden Dir während des SChreibens des danach folgenden Textes die Namen aller Mitglieder des Forums angezeigt, die mit der bisher eingegebenen Zeichenkette beginnen.

Mitgliedsname.jpg.ebc3792aab9ccdf9aa0bb842cdebe704.jpg

Wenn Du dann auf einen dieser Namen klickst, in der obigen blauen Darstellung übernommen.

Viele Grüße
@BahnLand

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