Zeitgesteuerte Depotausfahrt mit Fahrstrasse und Lua

!!! 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.
  • Hallo


    Ich wollte Euch gerne ein kleines Beispiel-Lua-Script zur Verfügung stellen in dem man eine Zeit in Sek. angeben kann und nach diesem Zeitinterval ein Fahrzeug aus dem Depot ausgespuckt wird, wenn die Fahrstrasse vor dem Depot frei ist und, das war mir wichtig, auch ein Fahrzeug im Depot auf Wartend steht.


    Mal ein bischen Vorgeschichte.


    Ich bin noch nicht lange mit EEP beschäftigt, sauge im Moment noch alles in mich auf was ich an Informationen über EEP finde, hier im Forum und auf anderen Seiten.

    Schriftform, Videos, Beispiele usw.

    Versuche das mir Angeeignete in runtergeladenen Anlagen umzusetzen, baue andere Steuerungen ein mittels Lua, versuche zu automatisieren und gleichzeitig den manuellen Spielspaß einer Anlage nicht zu vernachlässigen.

    Mit Neu bauen habe ich mich noch nicht beschäftigt, außer mit den Tutorial Videos die mit EEP 13 mitkamen. Mir ist erstmal das realisieren einer Steuerung wichtiger, bauen kann ich immer noch und dann kann ich es wenigstens auch steuerbar machen.


    Was mich jetzt dazu bewegt hat dieses kleine Script zu entwickeln, was sicher nicht perfekt ist und evtl. finde ich hier auch noch Verbesserungsanmerkungen...wer weiß.


    Ich hatte immer ein Problem damit Zeitgesteuert ein Fahrzeug aus einem Depot zu bekommen.

    Einmal war das Depot leergelaufen weil der Zeittakt viel zu niedrig war, das andere mal war der Block vor dem Depot noch nicht freigegeben und der Zug wurde trotzdem ausgespuckt...wenn ich die Zeit ändern wollte musste ich dies entweder im Depot machen oder wenn ich es über Signal und Kontaktpunkt steuerte über die Kontaktpunkte, die immer zu finden und ggf. mal einen zu vergessen, außerdem musste ich da immer in den Editiermodus was mir auch nicht so zugesagt hat.


    So...nun aber mal zu dem kleinen Script.

    Es ist aus einer kleinen Beispielanlage die ich dazu gebaut habe, wenn einer daran interesse hat müsste ich schauen wie ich die hier hochladen könnte oder wie da vorzugehen ist.


    Das Script sollte selbsterklärend sein, jedenfalls für die die sich etwas mit Lua beschäftigen. Ich habe auch so gut es geht Kommentare im Script hinterlassen.


    Die Fahrstrasse ist vor dem Depot...meistens bis zum nächsten Blocksignal. Das Ausgangsfahrtsignal das bei einer Fahrstrasse mit angegeben wird ist im Depot eingetragen und regelt den Ausstoß.

    Das Script versucht die Fahrstrasse zu schalten wenn es ein wartendes Fahrzeug im Depot gefunden hat, ist die Fahrstrasse frei geht das Ausgangsfahrtsignal auf Fahrt und das Depot spuckt das Fahrzeug aus, ist die Fahrstrasse belegt wird auch nicht das Ausgangsfahrtsignal auf Fahrt geschaltet und es kommt kein Fahrzeug aus dem Depot.


    Vielleicht kann der Ein oder Andere ja etwas damit anfangen, vergleichbares habe ich bis jetzt nicht gefunden.


    Gruß Joachim


    Edit: Da ist mir ja tatsächlich noch ein Fehler im Script aufgefallen anstatt


    Code
    1. if EEPGetTrainyardItemStatus(1,"",Anzahl_DP1) == 1 then
    2. und
    3. if EEPGetTrainyardItemStatus(2,"",Anzahl_DP2) == 1 then
    4. muß es
    5. if EEPGetTrainyardItemStatus(1,"",w1) == 1 then
    6. und
    7. if EEPGetTrainyardItemStatus(2,"",w2) == 1 then

    heißen.

    Habe dies im oberen Script korrigiert.

    Sorry :aw_1:

    Win7 SP1 64bit, Intel Core i3-530 @2.93GHz, 12GB RAM, nVIDIA GeForce GT320

    EEP13.2 Expert Patch 2 Plugins 1+2 / Anlagenverbinder 6.0.2 zu „EEP 13.1- Expert

    The post was edited 1 time, last by Ela ().

  • Ich habe Ela per PN folgende Variante vorgeschlagen und die Erlaubnis bekommen, sie hier zu zeigen:



    In der EEPMain() wird nur noch die DepotZeit() Funktion aufgerufen. Die Prüfung, ob die erforderlichen Bedingungen für die Ausführung erfüllt sind, erfolgt jetzt in der Funktion selbst. Meines Erachtens macht das die EEPMain() übersichtlicher. Insbesondere später, wenn immer mehr Funktionsaufrufe hinzu kommen.


    Alle Aktionen, welche die Depots betreffen, sind hier in einer Unterfunktion DepotAusfahrt() zusammengefasst. Und alle individuellen Depot-Parameter stehen in einer Tabelle. Beides erleichtert Änderungen.


    Wenn man am Algorithmus etwas ändern möchte, dann muss man es jetzt nur einmal für alle Depots machen. Und man kann weitere Depots in die Tabelle aufnehmen, ohne an anderer Stelle im Skript etwas ändern zu müssen.


    Die Sekundenzähler werden jetzt mittels Modulo Operator zurück gesetzt. Der Anfangswert für Sekunde steht in den Tabellen auf 1 damit die Wartezeit einmal komplett ablaufen muss, bevor bei Sekunde 0 der erste Zug aus dem Depot abgerufen wird.


    Viel Spaß

    Götz