Hallo mitenand,
nach längerer Teilabstinenz von EEP und nur teilweisem Mitlesen im Forum muss ich mich nun mit einer Frage an euch wenden, für deren Lösung ich partout keine Lösung und trotz Suche auch keine Antwort im Forum finde.
Ausgangslage: Bahnhof sollte mit Fahrstrassen versehen werden. Neun Bahnsteiggleise und auf einer Seite vier Ein-/Ausfahrtgleise und auf der anderen Seite derer jeweils fünf. Damit der jeweilige gut einen Kilometer lange Ein-/Ausfahrtbereich nicht komplett durch ein- bzw. ausfahrende Züge (40-60 Km/h wegen Weichen) blockiert wird, sind FS vom Einfahrtsignal bis zum jeweiligen Bahnsteighalt und umgekehrt recht unpraktikabel. Darum habe ich für jeden möglichen Weg von Einfahrtsignal bis zum Bahnsteighalt drei bis sechs Fahrstrassen in Reihe angelegt (jeweils bis kurz hinter beide Stränge einer abzweigenden Weiche, Ausfahrt analog), damit bereits überfahrene Weichen bzw. Streckenabschnitte wieder für andere Fahrstrassen freigegeben werden können.
Nun habe ich aber das Problem, dass wenn ich solch eine Reihe von Fahrstrassen schalten will, beispielsweise erst die dritte Fahrstrasse nicht geschaltet werden kann. Dann sind aber in jenem Durchlauf der main, in dem die FS-Signale effektiv geschaltet werden, bereits die ersten beiden Fahrstrassen aktiviert worden und Rückgängig machen kann ich das erst frühestens im nächsten Durchlauf der main. Mein Ziel ist aber, das jede einzelne Fahrstrasse einer Reihe von Fahrstrassen, z.B vier FS hintereinander von Einfahrtgleis 4 bis Bahnsteiggleis 2, nur dann geschaltet wird, wenn auch tatsächlich alle FS dieser Reihe auch tatsächlich aktiviert werden können. Wenn auch nur eine einzige FS der Reihe nicht aktiviert werden kann, dann soll auch keine andere FS der Reihe aktiviert werden. Prinzip für jede solcher FS-Reihen: Alle oder keine.
Ich benötige also eine Abfragemöglichkeit, ob z.B EEPSetSignal(22,4) überhaupt möglich wäre, bevor EEP/Lua versucht das Signal bzw. diese Fahrstrasse zu schalten. Als Beispiel: FS-Reihe FS-Signal21 dann FS-Signal22 dann etc. - bevor FS-Signal21 überhaupt geschaltet wird (weil es möglich ist) soll überprüft werden, ob überhaupt FS-Signal24 wie gewünscht geschaltet/aktiviert werden kann. Wenn FS-Signal24 nicht geschaltet/aktiviert werden kann, dann soll bitteschön von vornherein FS-Signal21 auch nicht geschaltet/aktiviert werden - und zwar bevor EEP/Lua erstmalig versucht, dies zu tun aufgrund eines request für diese Fahrstrasse.
EEPOnSignal nützt mir hier sicher nichts, da diese Abfrage d.h. der Rückgabewert ja erst im nächsten Durchlauf der main für Lua sichtbar wird und dann die (ungewollte Schaltung mindesten einer FS der jeweiligen Reihe bereits erfolgt wäre, obwohl nicht alle FS dieser Reihe geschaltet werden (können). Nach meinem Verständnis als quasi Lua Anfänger hilft mir die callback Funktion, z.B, EEPSetSignal(22.4.1) nachdem das Signal registriert wurde, aus gleichem Grund auch nicht weiter.
Habe ich irgendwo einen Denkfehler? Bin halt leider eher Lua Anfänger. Kann mir eventuell einer der Spezialisten weiter helfen oder mich zumindest in eine gangbare Richtung dirigieren, in der ich mein o.g. Ziel allfällig erreichen kann?
Als Notlösung käme mir bisher lediglich in den Sinn, sämtliche FS-Reihen in de Schattenbereich zu spiegeln, also dorthin wo keine Züge fahren , und die Überprüfung ob eine Reihe von FS komplett von Anfang bis Ende durchgeschaltet werden könnte dort vorzunehemen, und erst im positiven Falle dies auch im sichtbaren Bahnhof vorzunehmen. Erscheint mir aber ein mega aufwendiges und kompliziertes Unterfangen, weil ich ja sicherlich nicht nur die aktiven und angefragten FS monitoren müsste, sondern auch für jedes einzelne betroffene Gleis im sichtbaren Bahnhof ob es allfällig besetzt oder gar nur von einer aktiven FS quasi reserviert ist. Diese Möglichkeit sehe ich sehr, sehr weit entfernt vom Machbaren.
Herzlichen Dank für eure Hilfe!
LG, Matthias