Jump to content

Empfohlene Beiträge

Geschrieben (bearbeitet)

Hallo
Ich habe folgendes vor;
- auf ein längeres Abstellgleis sollen nach und nach mehrere Loks geparkt werden und bei Bedarf in umgekehrter Reihenfolge wieder gestartet werden.
Mein Gedanke dazu....  Beim Signal aktiviere ich beide Richtungen und nehme das Anhalten bei geschlossenem Signal raus, in der EV habe ich die Richtungsabfrage (1 / -1)
Bei 1 setze ich Geschwindigkeit = 0, bei -1 wird der Fahrzeugnahme in eine Liste geschrieben.
Also erste Lok = Index 1, zweite Lok = Index 2 usw. in den Signal habe ich eine Zahlvariable "AnzLok", welche ich bei jeder Lok jeweils um 1 hoch zähle und habe somit die Anzahl der geparkten Loks auf dem Gleis.

Wird nun eine Lok abgerufen, so schaue ich nach der Signalvariable (in dem Fall 3), schalte das Signal auf Fahrt und starte die Lok aus der Liste mit Index 3, gleichzeitig wird die Signalvariable um 1 verringert ind der entsprechende Index aus der Loste gelöscht.

Soweit die Theorie
Ich hab einiges versucht, kann auch die Lok in die Liste schreiben, aber nur wenn ich den Index direkt angebe.
- Wie kriege ich das hin, dass der Index bei jeder neuen Lok hochzählt.
- Wie ich die Lok mit dem Index der Signalvariablen starte
- Wie geht es, dass der Index = Signalvariable aus der Liste gelöscht wird, wenn Lok das Gleis verläßt

Kann mir da jemand weiterhelfen oder gibt es dafür eine andere sinnvollere Lösung

 

Screenshot 2025-02-10 205441.jpg

Screenshot 2025-02-10 211837.jpg

Bearbeitet von bigrala
Geschrieben
vor einer Stunde schrieb bigrala:

nur wenn ich den Index direkt angebe

 

vor einer Stunde schrieb bigrala:

Wie geht es, dass der Index = Signalvariable aus der Liste gelöscht wird

Ich sehe zwei Möglichkeiten:

  • Du stellst Deine kleine Testanlage hier zur Verfügung und wirst dann bestimmt eine Lösung bekommen.
  • Du arbeitest eine Anleitung durch wie man unter Lua mit Listen und Tabellen umgeht, z.B. diese hier.
Geschrieben (bearbeitet)
vor 6 Stunden schrieb bigrala:

Wie kriege ich das hin, dass der Index bei jeder neuen Lok hochzählt.

Indem du anstelle des = ein + verwendest, um 1 hinzu zu addieren.
hochzhlen.jpg.8840385069682614387da96ec1c50661.jpg

 

vor 6 Stunden schrieb bigrala:

Wie ich die Lok mit dem Index der Signalvariablen starte

indem du bei Index auf den Typ "Variable" wechselst und dann die Objektvariable mit der gespeicherten Zahl wählst
IndexausVariable.jpg.f7df2d878dd71f70d2a8fe1cb9f2ee03.jpg

 

vor 6 Stunden schrieb bigrala:

Wie geht es, dass der Index = Signalvariable aus der Liste gelöscht wird

Mit Variable löschen. Als Variable wählst du "Variable (Liste/Tabelle)" und der Index ist auch hier die gespeicherte Zahl.
Anschließend wird die Zahl im Speicher um 1 verringert.

Das lässt sich soweit alles mit der grafischen EV machen und funktioniert, solange du das System nicht durcheinander bringst.

Mit Lua hättest du die Möglichkeit, weitere Sicherheiten einzubauen. Du könntest dann beispielsweise deinen Zähler mit der Anzahl der Listenelemente abgleichen. Oder ganz auf den Zähler verzichten und gleich mit der Anzahl Elemente in der Liste arbeiten.

Hier ist die oben beschriebene, simple Version ohne Skripte:

Listenzähler für geparkte Loks.mbp

und ein Lua Beispiel:

Lua für geparkte Loks.mbp

Im Übrigen hat @Phrontistes vollkommen recht.
Wenn du uns deine Versuche zeigen würdest, dann könnten wir daraus deine Denkfehler ablesen.
Dann hätten wir eine Möglichkeit, da anzusetzen wo du stehst. Wir könnten dir aufzeigen, was an deinem Gedanken falsch war.
Fehler sind unsere besten Lehrmeister. Aber nicht, wenn wir sie verstecken oder vertuschen. Sondern nur, wenn wir sie genau untersuchen.

 

Viele Grüße
Götz

Bearbeitet von Goetz
Ergänzungen
Geschrieben (bearbeitet)

Hallo Götz,

deine Lösung Listenzähler ist genau das was ich eigentlich wollte, nur einfacher als ich es mir gedacht hatte.

Du hast eim Bremskontakt immer explizit auf die Objektvariablen im Signal zugegriffen.
Könnte man das nicht allgemeiner verfassen, indem man im Bremskontakt eine Objektvariable mit dem Signal hinterlegt und darüber auf die Variablen im Signal zugreift? Wäre dann mehrfache erweiterungen - oder ?

 

Normalerweise zeige ich auch inmmer wieder mal ein Demo zu meinem Problem.
Im vorliegenden Fall hatte ich mich mit einem Screenshot begnügt, da ich es als verständlich empfand - sorry werde mich bessern ;)

Gruß Ralf

 

 

Bearbeitet von bigrala
Geschrieben
vor 34 Minuten schrieb bigrala:

Könnte man das nicht allgemeiner verfassen, indem man im Bremskontakt eine Objektvariable mit dem Signal hinterlegt

Ja, das ginge und wäre sicher vernünftig.
Und du würdest in dem Fall, wie du richtig sagst, über eine mehrfache Erweiterung an die Variable des Signals kommen, das selbst im Kontakt hinterlegt ist.

Geschrieben

Hallo Götz,

Ich habe das mal versucht direkt im Signal zu erledigen, indem ich beide Richtungen aktiviert habe und dann mit der Bedingung "Richtung" aggiere.
Mit dem Zähler ist das kein Problem, beim Eintrag in die Liste kann ich den Zähler nicht auswählen ohne über die Objektvariable zu gehen.

 

Test Lok Parkplatz.mbp

Geschrieben
vor 4 Minuten schrieb bigrala:

beim Eintrag in die Liste kann ich den Zähler nicht auswählen

Du musst den Index ebenfalls als erweiterte Variable angeben:

erweiterterIndex.jpg.d6fb4c6cd5845ead8d7d06c69b301e6a.jpg

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