TaskMemorizer + Schattenbahnhof

!!! 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 Benny,
    ich beschäftige mich gerade mit dem "Schattenbahnhof" + "TaskMemorizer", die
    ich erst vor ein paar Tagen auf Deiner Webpage entdeckt habe.
    Ich hatte vor ein paar Wochen begonnen eine Anlage aufzubauen, die über LUA gesteuert
    werden soll. Ich war positiv überrascht als ich Deine beiden Module zu LUA entdeckt habe.
    Das spart mir eine Menge Arbeit.
    Was mir dazu fehlt, ist eine etwas verbesserte Duko.


    Dehalb hier ein paar Fragen:
    1. Tasks:print()
    Im Audruck links wird ein "X" dargestellt, was meist vorhanden ist,
    manchmal aber auch nicht.
    Was zeigt das "X" an?
    Annahme: Wenn das "X" fehlt, gibt es Probleme in den Init-Daten.


    2. Gibt es Beispielanlagen wo die Signalbelegungen für die Ein-/Ausfahrt-Signale
    für LUA-Betrieb nachvollziehbar sind?
    Das Problem sind nicht die drei Signale pro Gleis, die möglich sind,
    sondern die zwei oder drei Signale in deinem Beispiel zum TaskMemorizer,
    z.B. Signal-ID 109, 110 und 63.
    Sind zu den notwendigen Signalen noch Kontaktpunkte/Verknüpfungen o.ä. notwendig?


    3. Beim Schattenbahnhof habe ich festgestellt, wenn z.B. unter "Create" "readyIdStart"
    definiert wird, werden Änderungen unter "tracks" mit "readID" nicht berücksichtigt.
    Ist das richtig?


    4. Der Sbf:print() listet die initialisierten Signale-IDs sauber auf. Zu den Weichen wird
    nur die Anzahl der initialisierten Weichen angegeben.
    Was bedeuten diese Zahlen? Die Anzahl scheint sich von Gleis zu Gleis zu erhöhen.
    Gleis 1 - 3 Weichen, Gleis 2 - 4 Weichen, Gleis 3 - 5 Weichen, Gleis 4 - 7 Weichen
    und Gleis 5 - 7 Weichen.
    Ich habe im Moment 2 Schattenbahnhöfe, gleich aufgebaut:
    Beide habe 4 Weichen in Ein- und Ausfahrt.


    Viele Grüße
    wernerp.

    Rechner: Acer Predator - neues MB, i5-7600, 16 GB, SSD M.2 - 275 GB, HD7870, Monitore 23" und 19"
    EEP 5 - 14 Expert + Plugins + wichtige Tools + MK + ME + KE + ZE + PlanEx + RescuEx
    Windows 7 Pro 32/64bit, Windows 10 PRO 1803


    DK2JD !

  • Hallo Werner,
    zu 1., dem Tasks:print():
    An erster Position wird der Status des Tasks angezeigt. Falls es ein Zähler ist, der Zählerstand, ansonsten ein X für "Task aktiv" (also das Signal nicht auf "erledigt" steht) oder nichts für "Task erledigt".


    Zu 2.:
    Ja, vielleicht bringe ich meine eigene Lua-Demo-Anlage auch noch raus.
    Bis dahin eine kurze Erklärung:
    Signal 109 ist in dem Fall eine Weiche, spielt aber keine Rolle. Hierbei handelt es sich um die Anforderung für die Schattenbahnhofseinfahrt. Die wird also per KP von einem ankommenden Zug rechtzeitig auf "mach was" gestellt. Die Rückstellung übernimmt der TaskMemorizer.
    Signal 110 ist ein Zustandssignal für die Belegung der Schattenbahnhofseinfahrt, damit nicht zwei Züge gleichzeitig einfahren. Es wird vom (selbstgeschriebenen) Skript auf "Besetzt" gestellt, und per Zugschluss-KP vom Zug wieder auf "Frei" gestellt, nachdem er im Schattenbahnhof angekommen und somit die Einfahrt wieder frei ist.
    Signal 63 ist das Einfahrtsignal. Es wird vom (selbstgeschriebenen) Skript auf Fahrt gestellt, wenn die Einfahrt für den angemeldeten Zug frei ist. Auf Halt gestellt wird es vom Zug per KP direkt nach Überfahren.


    Zu 3.:
    Ich habe mir gerade nochmal mein Skript angeschaut, und da sieht es wirklich so aus, als ob bei Vorhandensein von create.readyIdStart bereits eingetragene readyIds überschrieben werden.
    Ist immer nicht so ganz einfach, alle möglichen Kombinationen von automatisch und manuell vorauszusehen.
    Wenn Bedarf besteht, ließe sich das aber bestimmt noch ändern.


    Zu 4.:
    Standardmäßig zeigt Schattenbahnhof:print() wirklich nur die Anzahl der zu stellenden Weichen bei einer Einfahrt in dieses Gleis an.
    Das habe ich deshalb so gemacht, weil es bei größeren Schattenbahnhöfen mit vielen Weichen sonst sehr schnell sehr unübersichtlich wird.
    Wenn du die zu stellenden Weichen-IDs und ihre Zielpositionen doch sehen willst, übergibst du einen Parameter true, also Schattenbahnhof:print(true).


    Bei einem "normalen" Schattenbahnhof erhöht sich die Anzahl der Weichen tatsächlich von Gleis zu Gleis - für das erste Gleis muss nur die erste Weiche richtig gestellt werden, für das zweite Gleis die ersten beiden, usw.
    Wie du jetzt zu den von dir genannten Zahlen kommst, kann ich so nicht nachvollziehen, ohne deine genaue Konfiguration zu kennen.


    Aber vielleicht verstehst du ja schon selbst, was da wie wo geschaltet wird, wenn du dir die Weichen mit auflisten lässt.



    Falls es immer noch Fragen oder Probleme gibt, melde dich nochmal, und/oder schicke mir mal deine Anlage, damit ich sie mir anschauen und die Probleme besser nachvollziehen kann.


    Viele Grüße
    Benny

  • Hallo Benny,
    Zu 1. Anscheinend wird das X auch weggelassen, wenn etwas mit den Initialisierungen für das nicht stimmt.
    Habe durch Korrekturen, ich weiß im Moment nicht mehr genau was, das fehlende X noch angezeigt bekommen.


    zu 2. Es würde reichen in die bestehende Doku, so etwas wie Du beschrieben hast, einzubringen.


    zu 3. Ist ja kein Problem, man sollte das eben wissen -> Doku.


    zu 4. Werde ich ausprobieren. Noch ein weiter Punkt für die Doku:-))).


    Erst einmal vielen Dank, mal sehen wie ich damit weiterkomme.
    Und Grüße von wernerp.

    Rechner: Acer Predator - neues MB, i5-7600, 16 GB, SSD M.2 - 275 GB, HD7870, Monitore 23" und 19"
    EEP 5 - 14 Expert + Plugins + wichtige Tools + MK + ME + KE + ZE + PlanEx + RescuEx
    Windows 7 Pro 32/64bit, Windows 10 PRO 1803


    DK2JD !

  • Hallo Benny,
    es gibt doch noch ein Problem.
    Erstmal kann man "switchIdStart" nicht weglassen.Läßt man es weg gib es
    einen Fehler, man wollte mit "switchIdStart" eine Arithmetik ausführen -
    Zeile 72 Schattembahnhofssteuerung_BH2.lua.


    Setze ich "switchIdStart" wieder ein und erweitere sfb:print(true), dann
    wird das Signal, welches unter "switchIdStart" eingetragen ist, mehrfach pro Zeile
    aufgelistet, siehe Bild Schattenbahnhof im Anhang. Das "switchInkrement" habe ich auf 0 gesetzt.
    Daher die Wiederholung der gleichen Nummer.
    Wenn das ein Signal mit Funktion ist, fahren die Züge alle auf das selbe Gleis.
    Durch die Mehrfacheintragungen werden auch die vielen Signale gezählt, die als Anzahl beim
    normalen Ausdruck angezeigt werden.


    Ich glaube bei "signalIdStart" tritt etwas ähnliches auf.


    Ich habe versuchsweise mal eine Dummy-Weiche 181 bei "switchIdStart" eingesetzt
    und habe dann wenigstens die richtige Einfahrt erreicht.


    Im Anhang habe ich weitere Bilder mitgeliefert, wie den Fehlertext, 2 x Init, Main
    und den Startausdruck von Schattenbahnhof.


    Meine Schattenbahnhöfe in dieser Anlage bestehen aus 5 Gleisen - eines in der Mitte
    und je zwei rechts und links davon, was sicher kein Problem ist.


    Falls Du noch mehr Info benötigst, bitte sagen, bzw. schreiben.


    Warum kann man hier keine Dateien hochladen?
    Kopieren der Bilder war zu lang!?
    Ich sende die Bilder per Mail.


    Viele Grüße, wernerp.

    Rechner: Acer Predator - neues MB, i5-7600, 16 GB, SSD M.2 - 275 GB, HD7870, Monitore 23" und 19"
    EEP 5 - 14 Expert + Plugins + wichtige Tools + MK + ME + KE + ZE + PlanEx + RescuEx
    Windows 7 Pro 32/64bit, Windows 10 PRO 1803


    DK2JD !

  • Hallo Werner,
    die Mail mit den Bildern ist bei mir angekommen, ebenso wie die zweite Mail. Ich erlaube mir mal, den Inhalt hier reinzukopieren, damit meine Antwort nicht aus dem Zusammenhang gerissen ist.

    wernerp wrote:

    Was mir noch fehlt, ist die Beschreibung der Ausfahrt-Funktion am Schattenbahnhof so wie Du das für die Einfahrt bereits getan hast.
    Mir ist nicht klar, wieso die Ein- und Ausfahrt identisch sind, obwohl hier unterschiedliche Dinge zu tun sind.


    Aber erstmal zu den anderen Problemen.


    Die Schattenbahnhofssteuerung habe ich so konzipiert, dass die Konfiguration für einen idealen Standardfall möglichst simpel ist - mit jeder Abweichung vom Standardfall muss die simple Konfiguration ein bisschen erweitert werden. Außerdem habe ich unterschieden zwischen "manueller Angabe" der Parameter, also für jedes Gleis einzeln, und der Angabe einer "allgemeinen Konstruktionsanleitung" (mit create). Wenn der Schattenbahnhof so gebaut ist, dass er sich "allgemein beschreiben" lässt, kann man auf die manuelle Angabe für jedes Gleis verzichten, und stattdessen die "allgemeine Konstruktionsanleitung" (mit IdStart und IdIncrement) verwenden.


    Soweit ich das auf deinen Bildern gesehen habe (für die Zukunft: Code ist als Text-Datei besser zu lesen. Da muss ich mir nicht selbst die Reihenfolge der verschiedenen Bilder zusammensuchen, die manche Teile doppelt, andere Teile gar nicht zeigen...), hast du zum einen keinen "idealen" Schattenbahnhof (also ist ein bisschen mehr als die Minimalkonfiguration nötig), zum anderen vieles doppelt angegeben: individuell pro Gleis und dann noch als "allgemeine Konstruktionsanleitung". Das ist unnötig und führt nur zu Fehlern (wie du ja selbst gemerkt hast ;) )
    Da du alle Gleise schon manuell konfiguriert hast, kannst du im Prinzip den gesamten create-Block weglassen. Dann sollten auch keine Fehlermeldungen mehr kommen wegen unmöglichen Arithmetiken und so.
    (Trotzdem danke für den Hinweis: Den Arithmetik-Fehler habe ich vergessen abzufangen - wenn ich dran denke, werde ich das in einer evtuellen zukünftigen Version berichtigen).


    Ich glaube, da hast du ein bisschen was falsch verstanden. "switch" steht für Weiche. Natürlich kann man auch Signale eintragen, allerdings macht das nur bedingt Sinn. Gedacht ist das ganze zum Stellen der Weichenstraße. Mit dem switchIncrement=0 hast du zwar das Hochzählen erfolgreich unterbunden, aber mein Skript geht trotzdem noch von einer "idealen Weichenstraße", sprich einer einseitigen Gleisharfe aus. Alle dafür benötigten Weichen werden eingetragen. Dabei werden bereits manuell eingetragene Weichen zwar nicht überschrieben, aber weitere Weichen an die Liste angehängt.
    Da du bereits alles komplett selbst definiert hast, kannst du, wie oben erwähnt, den create-Zweig komplett weglassen.


    Und noch was zur Frage aus der Mail: Soweit ich das auf die Schnelle sehe (ist auch schon ein Weilchen her, dass ich das geschrieben habe), sind einfahrt- und ausfahrt-Funktion beide relativ knapp beschrieben. Viel zu sagen gibt es dazu mMn eigentlich aber auch nicht.
    Der allergrößte Teil des Erklärungs- und Einstellungsbedarfs liegt in der Konfiguration - die hat deshalb auch einen großen Abschnitt in der Dokumentation erhalten.


    Ich hoffe, wenigstens einen Teil deiner Probleme lösen zu können. Wenn noch weitere Schwierigkeiten auftreten oder sonstwas unklar geblieben ist, melde dich nochmal.


    Viele Grüße
    Benny


    PS: Wegen Bildern direkt hier im Forum schau mal hier. Direkt reinkopieren geht nicht, du musst die Bilder erst woanders hochladen und dann hier verlinken.

  • Hallo Benny,
    entschuldige, habe im 2. Absatz Weiche mit Signal verwechselt, unten bei Dummy-Weiche ist es wieder richtig.


    Was mir jedoch immer noch fehlt, ist eine Beschreibung der eingesetzten Elemente in den Ausfahrt-Routinen in Deinem Script Beispielkonfiguration im TaskMemorizer.
    Zum Beispiel was ist 124, 125 und 61 für SbfAusfahrt... ? (Beispielkonfiguration Zeile 31 bis 36).


    Entschuldige , wenn ich da nachfrage, aber ohne ein klare Definition geht es eben nicht.


    Einen schönen Tag, wernerp.

    Rechner: Acer Predator - neues MB, i5-7600, 16 GB, SSD M.2 - 275 GB, HD7870, Monitore 23" und 19"
    EEP 5 - 14 Expert + Plugins + wichtige Tools + MK + ME + KE + ZE + PlanEx + RescuEx
    Windows 7 Pro 32/64bit, Windows 10 PRO 1803


    DK2JD !

  • Hallo Werner,
    achso, da habe ich dich falsch verstanden. Ich hatte gedacht, du meinst die sbf:einfahrt()- bzw. sbf:ausfahrt()-Funktionen. Was du wohl wirklich meinst, ist die Beispielkonfiguration von meinem TaskMemorizer.


    Da ist die Ausfahrt ähnlich definiert wie die Einfahrt.
    Auf der Anlage gibt es einen Schattenbahnhof (für die Hauptbahn), der beide Richtungen der Strecke speist. Folglich gibt es zwei verschiedene Ausfahrgleise, die jeweils einen Zug "anfordern" können (durch Setzen des Zustandssignals, das im TaskMemorizer eingestellt ist). Damit nun aber nicht beide Richtungen gleichzeitig einen Zug anfordern können (und somit zwei Züge zeitgleich ausfahren, was definitiv zu Chaos führen würde), habe ich (wie bei der Einfahrt, wo es auch zwei konkurrierende Anforderungen geben kann) ein weiteres Zustandssignal (ID 125) aufgebaut. Wenn eine Ausfahrt angefordert und vom TaskMemorizer verarbeitet wird, wird erstmal dieses Zustandssignal geprüft. Steht es auf "Besetzt", ergibt die Bedingung false und die Funktion wird mit return false abgebrochen. Steht es dagegen auf "Frei", und die "Auslösung der Schattenbahnhofs-Ausfahrt" war erfolgreich, wird das Zustandssignal auf "Besetzt" gestellt (und gewartet, bis es auch wirklich besetzt ist). Anschließend wird die Weiche mit der ID 61 so gestellt, dass der gerade ausfahrende Zug auch dort landet, wo die Anforderung herkam.


    Die Signale mit den IDs 123 und 124 sind die "Anforderungssignale", die vom TaskMemorizer abgefragt werden. Mein Schattenbahnhof (bzw. die anschließenden Gleise) sind so aufgebaut, dass an jeder Ausfahrt immer schon ein Zug (vor einer Beschleunigungsrampe) wartet. Sobald die Strecke auf der Anlage frei ist, fährt er los. Sobald er das "Wartegleis" verlassen hat, wird das Anforderungssignal gesetzt, und der nächste Zug bereitgestellt - je nach Anfahrbeschleunigung und/oder Belegung der Schattenbahnhofsausfahrt durch einen anderen Zug kann das aber ein Weilchen dauern.


    Ich hoffe, das beantwortet deine Frage?


    Viele Grüße
    Benny