Idee für die automatische Anforderung von Fahrstraßen durch die Fahrstraßen selbst

!!! Please ensure, that your contribution or question is placed into the relevant section !!!
Questions about rolling stock, for example, do not belong in "Questions about the Forum". Following is perhaps the right area where your question will be better looked after:
General questions to EEP , Splines, rolling stock, Structures in EEP, landscape elements, Signalling system and controlling, designers, Europe-wide EEP meetings , Gossip
Your cooperation to keep the forum clear is appreciated.
In the case of pictures that are attached to the article, the source must also be stated. This also applies to your own pictures, which were taken by you. Pictures without source information will be deleted!
  • Guten Morgen!


    Mir geht seit Tagen eine Idee durch den Kopf und lässt mich nicht pennen: ist es möglich, Fahrstraßen von anderen Fahrstraßen anzufordern? Die Idee kam mir beim Spielen mit stellwerksim, vielleicht kennt das der eine oder andere ja. Bei stellwerksim kann man ja die sogenannte AutoFS einschalten. Dadurch werden Fahrstraßen automatisch freigeschaltet (natürlich nur wenn sie nicht belegt sind), und zwar nur wenn man als Fahrdienstleiter ganz am Anfang einer Strecke eine Fahrstraße freischaltet. Schon setzt sich eine Kaskade in Gang, ausgehend von der ersten Fahrstraße bis zu einer Fahrstraße, die nicht automatisch geschaltet werden kann, da es nun plötzlich Abzweigungen in der Fahrstraße gibt. Hier muss man dann als Fahrdienstleiter wieder selbst aktiv werden.


    Hier ein Code, den ich geschrieben hatte :



    Demnach sollen die Fahrstraßen nach der ersten freigeschalteten Fahrstraße durch das auf Fahrt schaltende Signal jeweils am Anfang der vorhergehenden Fahrstraße angefordert werden.


    Kann das so klappen?


    Euer Thomas


    PS: es kann übrigens durchaus sein, dass die Stellungen der Signale für die Fahrstraßen und die Stellungen für die jeweiligen Einfahrtsignale in diesem Code geändert werden müssen. Ich bin mir da nie sicher, wann die Fahrstraßen jetzt "Fahrt" haben und wann sie aufgelöst sind. Als Einfahrtsignale benutze ich in der Testanlage Ks-Signale aus dem Shop. Welche weiß ich jetzt gerade nicht .

    Thomas


    Computer mit MSI-Board

    Prozessor: IntelCore i7-10700 CPU @ 3.80 GHz 32GB Ram

    Grafik: NVIDIA Geforce RTX 2080 SUPER

    Bildschirm: Philips 328E 32,5", LG 17" als Zweitbildschirm

    Microsoft Windows 10 Home


    EEP14; EEP15; EEP16 Plug-In1 Patch 4; EEP17

  • Die Fahrstraße kannst Du mit anderen Fahrstraßen schalten, aber eben nur einmalig,. Wenn sie nicht frei ist, wird es nicht erneut versucht,


    Daher hat auf meiner aktuellen Anlage jede Fahrstraße ein unsichtbares Speichersignal, welches ihre Anforderung speichert.

    In Lua habe ich eine Tabelle mit allen Paaren von Fahrstraße/Speichersignal. Ein kurzer Lua Code geht ständig alle Paare durch und versucht, die Fahrstraßen, deren Speichersignal auf Fahrt steht, zu schalten. Die Fahrstraße setzt bei Erfolg ihr Speichersignal dann wieder auf Halt.


    Die Speichersignale könntest Du natürlich auch mit einer anderen Fahrstaße schalten.

    Viele Grüße

    Carsten (CR1)


    EEP17dev HomeNOS16dev PaintshopPro Blender 2.79b

    Windows 10 Intel i7-7700HQ @ 2.80GHz 8GB RAM NVIDIA GTX 1050

  • Guten Morgen Thomas TStegemann ,


    ich muss dir leider mitteilen, dass in deinem Code keine einzige Fahrstraße geschaltet wird, denn die Funktion EEPLoadData() hat 2 Rückgabewerte. Du fragst immer nur den 1. Wert ab. Der Inhalt des Speicherslots steht aber im 2. Wert. Anmerkung: Siehe auch hierzu #5


    Bei der Auflösung der Fahrstraßen den Slot auf false anstatt nil zu setzen, wäre für mich logischer. Aber "jede Jeck is anders". Anmerkung: Siehe #5


    Übrigens die Stellung 1 löst immer eine FS auf. Stellungen > 1 stellen sie auf Fahrt und zwar in der Reihenfolge (Stellung -1) in der abgehende FS vom FS-Signal ausgehen. D.h. Stellung 2 die 1. FS, Stellung 3 die 2. FS, u.s.w.


    Dann frage ich mich, warum du die nächste FS über das Blocksignal (das ja in die FS eingebunden ist) anmeldest, anstatt direkt bei der Stellung einer FS auf Fahrt, die nächste anzufordern.


    Last but not least, kannst du die FS-Signale in einer Tabelle zusammenfassen. Dann kannst du nicht nur sowohl die Registrierung als auch die Abfrage in einer Schleife abhandeln sondern auch alle FS-Schaltungen in der Registrierungsschleife. Die einzige Bedingung im folgenden Code ist, dass du in der Tabelle die FS-Signale in der Reihenfolge der erforderlichen Anfragen einträgst.


    Viel Spaß beim Ausprobieren.

    Fried-liche Grüße:aq_1:


  • Mir geht seit Tagen eine Idee durch den Kopf und lässt mich nicht pennen: ist es möglich, Fahrstraßen von anderen Fahrstraßen anzufordern?

    Deine Idee mit den "Fahrstraßenketten" hat bei mir eine "Resonanzschwingung" ausgelöst und mich auf einen weiteren möglichen Ansatz zu eine Wegfindung in Anlagen und über mehrere Anlagen hinaus gebracht. Dankeschön dafür, denn irgendwie saß ich in einem Gedankenknäul dazu eingeschlossen.:aq_1:

    LG aus dem Randboulettenland
    Ekkehard


    :aq_1: Es gibt immer mehrere Wahrheiten. Deine, seine, ihre, meine und ... die echte.

    Meine Freiheit endet dort, wo das Recht anderer beginnt. Ab da müssen immer

    ausgewogene Kompromisse geschlossen werden.:aq_1::co_k:


  • Hallo Thomas TStegemann ,


    man soll doch nicht an einem Sonntagmorgen zu früh posten. Zurück, zurück, zumindest was false und nil angeht. Dein Ansatz ist in diesem Fall der bessere!


    Der 1. Rückgabewert von EEPLoadData() gibt an, ob etwas im Slot steht. Und ist das nicht der Fall, dann gibt der 1. Rückgabewert false zurück. Da du immer nur trues in den Slot geschrieben hast und ihn ansonsten mit nil gelöscht hast, ist das hier vollkommen ausreichend und sogar sicherer als mein Vorschlag. Denn ...


    ... die Lua-Funktion select() ist in EEP ganz großer Mist.
    Ich habe nur den 2. Rückgabewert abgefragt. Ist der Slot aber leer, gibt der 2. Rückgabewert in EEP eine "0" zurück und eine "0" wird in Lua als "wahr" interpretiert. Damit träte genau das Gegenteil ein.


    Also bei anderen Slotabfragen, wenn es auf den Inhalt ankommt und nicht nur ob der Slot existiert, sollte man in EEP immer beide Rückgabewerte abfragen und auswerten!

    Hier mein korrigierter Code von oben. Anstatt true kann bei der Anforderung auch irgendetwas anderes (z.B. "x") eingetragen werden. Hauptsache der Slot existiert.

    Fried-liche Grüße:aq_1:


  • Hallo Sebastian Sebibahner ,


    nehmen wir an deine FS-Signale hätten in der einen Richtung die Signals-IDs 1, 3, 5 und in der Gegenrichtung die Signal-IDs 6, 4, 2 jeweils in Fahrtrichtung.

    Nun hast du 2 Möglichkeiten:


    1. Du machst 2 Tabellen:

    Du siehst, in jeder for-Schleife kannst du k und v verwenden, denn k und v sind innerhalb der jeweiligen Schleife local. Ist die Schleife beendet, gibt Lua die Speicherplätze frei und das nächste k und das nächste v sind praktisch für Lua wieder neue Variablen.

    Bei dieser Variante kann es aber leicht zu Kopierfehlern kommen und man bläht sich den Code durch fast Gleiches auf.


    2. Du packst beide Tabellen in eine Tabelle:

    Auch hier gilt, k und v sind in jeder for-Schleife local. D.h. k und v der inneren Schleife beinhalten andere Werte als k und v der äußeren Schleife.
    Aber ist dieser Code sinnvoll?

    Meiner Meinung nach nicht. Denn spätestens nächste Woche blickst du nicht mehr durch. (Ich auch nicht.)

    Du musst die Variablen aber nicht k und v nennen. Programmierer sind faul und nehmen gerne Abkürzungen: k für Key (Schlüssel, Schleifenzähler) und v für Value (Wert bei k). Du kannst x-beliebige Variablennamen verwenden: Hugo, Anton oder was weiß ich.

    Häufig kann es auch vorkommen, dass man eine der beiden Variablen in der for-Schleife gar nicht benötigt. Dann verwenden manche (du weißt "Programmierer sind faul") einfach einen Unterstrich _ als Variablennamen. Auch der ist gültig.


    Zurück zu unserem Code. in den jeweils äußeren Schleifen benötigt man k nicht; denn dieses k kommt gar nicht mehr in der äußeren Schleife vor. Für das v der äußeren Schleife würde ich einen anderen Namen wählen, bei dem ich auch nächste Woche noch weiß, was gemeint ist, z.B. SigKette. Für die innere Schleife, kannst du k und v beibehalten (musst aber nicht).


    Damit hätten wir:


    Ich hoffe, ich habe etwas Licht in das Dunkel von k und v gebracht. Wenn noch nicht genug, gerne weiter fragen.

    Fried-liche Grüße:aq_1:


  • Hallo zusammen und vielen Dank für die regen Antworten!


    Das mit den Tabellen in Lua ist mir noch nicht so ganz klar, ich kann damit einfach nicht umgehen. Und das mit dem _ENV kapier ich einfach nicht. Also gehe ich den komplizierteren Weg mit den ganzen Funktionen

    .

    Zusätzlich dachte ich mir, dass wenn "True" in einem Speicherslot gespeichert ist, dann und nur dann wird durch die Funktion AutoFS() die entsprechende Fahrstraße geschaltet. Wenn ein "nil" oder halt nichts in dem entsprechenden Slot gespeichert ist dürfte ja eigentlich auch nichts geschaltet werden.


    Aber ein dickes Danke an alle Antwortenden! Leider hatte ich heute keine Lust den Code auszuprobieren. Das werde ich morgen aber ganz bestimmt mal versuchen. Und ich werde berichten!


    Thomas

    Thomas


    Computer mit MSI-Board

    Prozessor: IntelCore i7-10700 CPU @ 3.80 GHz 32GB Ram

    Grafik: NVIDIA Geforce RTX 2080 SUPER

    Bildschirm: Philips 328E 32,5", LG 17" als Zweitbildschirm

    Microsoft Windows 10 Home


    EEP14; EEP15; EEP16 Plug-In1 Patch 4; EEP17

  • Hallo zusammen,

    ich verfolge mit sehr grossem Interesse Eure Beiträge. Aber ich bin nicht Ansatzweise so gut mit LUA bzw. dem Programmieren von Fahrstrassen. Mein Problem, falls es überhaupt hier hin gehört, ist folgendes:

    Ich habe einen kleinen Bahnhof an der Muldentalbahn nachgebaut den ich steuern möchte. Ich verwende Parry36 RUS Paket. Problem ist das sich einige FS anfordern lassen - und auch schalten. Andere können nur angefordert werden oder schalten gar nicht. Ich habe fünf virtuelle Depots. Kann das an nicht vorhandenen Flankenschutz liegen? Wie kann ich das abändern?

  • Andere können nur angefordert werden oder schalten gar nicht

    Anhand dieser Kurzinfo wird man Dir wohl nicht wirklich helfen können. Welche EEP-Version benutzt Du? Kannst Du ein Screenshot Deines Problems zeigen?

    Klicke mal auf den Start der Fahrstraße, die nicht schalten will, und lasse Dir den Status anzeigen. Darin erkennst Du am schnellsten das Problem.

    Grüße aus der Hauptstadt von Berlin.


    Seit EEP 2.43 dabei, alle Folge-Versionen plus Plugins bis EEP 17 (außer EEP 8), über 88.000 Modelle, fast alle im Shop angebotenen Anlagen ab EEP7.

    Aktuell in Nutzung: EEP17.


    AMD FX Quad-Core 4,20 GHz, 32 GB RAM, 1 TB SSD, 2 TB SSD speziell für EEP, insgesamt 18 TB HDD,

    NVIDIA GeForce GTX 960, 2x 24" FullHD Monitor, 64 Bit Windows10 Home & Pro

  • Hallo Stangenantrieb ,


    bitte hänge deine Frage nicht einfach an ein beliebiges Thema an, sondern erstelle für eine neue Frage auch ein neues Thema. Im bestehenden Thema ging es weder um das RundUmSorglos-Paket noch um Depots. Vielen Dank für deine Unterstützung das Forum übersichtlich zu halten.


    Gruß Michael

    35098-katalog-banner-jpg

    Hardwarekonfiguration:
    Laptop: Lenovo IdeaPad L340 4*2,4 GHz, 16GB RAM, Win10 64 bit, EEP 6.1/EEP 17.0 Expert DEV