Signalschaltung SpDrS50 bei Fahrstraßen

!!! 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!
  • Das Setting:

    Für eine EEP-Fahrstraße habe ich Elemente des SpDrS60 von Rayler per "Strg"+Mausklick eingebunden. Diese Elemente werden mir auch in der Lister der Fahrstraßenelemente angezeigt, allerdings mit unterschiedlichem Erfolg:

    - Weichen- und Signaltaster - Schaltung funktioniert, Weichen und Signale werden korrekt gestellt

    - Signalmelder rot (als Sperrmelder für die Nachbarweiche) funktioniert

    - Streckenmelder funktionieren nicht - bei Schaltung der Fahrstraße sollten sie gelb anzeigen für Stellung Fahrstraße, bleiben aber auf "aus". Wenn der Zug darüber fährt, schalten sie auf rot (Gleis besetzt). Kann das damit zusammen hängen, dass sie über das SpDrS60 Main Skript in die used_TrackDtcSets_SpDr eingebiunden sind und von dort auf "aus"gehalten werden? Und wenn ja, wie kann man das vermeiden, ohne die Einbindung aufzugeben?

    Viele Grüße
    Berthold


    Mein System+EEP

    Lenovo LegionY720 i7 2,8GHz, 16GB 64bit, NVIDIA GeForce GTX 1060 - Win10Home

    EEP17, P1, Plugin 1,2 PlanEx 3.2, SpDrS60-3, Modellkatalog, Modell Explorer, Modellkonverter, EEP-TauschManager2

  • - Streckenmelder funktionieren nicht - bei Schaltung der Fahrstraße sollten sie gelb anzeigen für Stellung Fahrstraße, bleiben aber auf "aus".


    da hast du recht, das gelingt nicht. Dazu musst du anders vorgehen:

    wenn du ein einzelnes TrkDtcSet "manipulieren" möchtest, findest du in der "TmpFunctionFile.txt" (im SpDrS60-Ordner) den Copy-Code für eine entsprechende Methode.

    Als Beispiel: -- TrkDtcSet_ID25.setDtcState(2) -- bringt das Set ID25 in Fahrstraßenstellung.

    Wenn du aber mehrere Sets schalten möchtest, kannst du sie in einer Funktion sammeln:

    Lua
    function Fahrstrasse_West()
        TrkDtcSet_ID25.setDtcState(2)
        TrkDtcSet_ID12.setDtcState(2)
        TrkDtcSet_ID32.setDtcState(2)
    end;

    Das wäre eine Methode für z.B. ein Kontaktpunkt, lässt sich so aber nicht in eine Fahrstraße einbinden. Dazu musst du weiter "ausholen".

    Als erstes brauchst ein "Stellvertretersignal", z.B. einen "Taster Universal" aus dem SpDr-Signalbestand. Den registrierst du, als Beispiel nenne ich mal Signal14

    EEPRegisterSignal(14)

    Dann nimmst du die gewünschten TrkDtcSet-Methoden in eine Callbackfunktion für Sig14 auf.

    Das Rücksetzten der TrkDtcSets im else-Statement gewährleistet die Grundstellung bei händischer Auflösung der Fahrstraße. Normalerweise wird sonst die Fahrstraßenanzeige der Melder durch den fahrenden Zug über die Besetztanzeige aufgelöst, spätestens jedoch, wenn das Zielsignal der Fahrstraße erreicht ist.

    Sollte deine Fahrstraße registrierte Weichen (in einer used-Tabelle geführt) enthalten, findest du die Methoden ebenfalls in der "TmpFunctionFile.txt" und kannst sie dann mit integrieren.

    Beispiel: SwitchObjSpDr_ID20.setDtcState(2)

    Die hier beschriebenen Tipps stellen einen ersten Ansatz zur Fahrstraßenanzeige da und erheben keinen Anspruch auf Perfektion.

    Ray

  • Hallo @Rayler (RL2),

    vielen Dank für die schnelle und ausführliche Antwort. So werde ich es versuchen, zumal dies Vorgehensweise letzlich sehr viel einfacher ist, als das Einbinden der Elemente in die Fahrstraße, da die Signalsymbole im 2-D-Modus der Fahrstraßeneinrichtung nur sehr umständlich zu erfassen sind.

    Viele Grüße
    Berthold


    Mein System+EEP

    Lenovo LegionY720 i7 2,8GHz, 16GB 64bit, NVIDIA GeForce GTX 1060 - Win10Home

    EEP17, P1, Plugin 1,2 PlanEx 3.2, SpDrS60-3, Modellkatalog, Modell Explorer, Modellkonverter, EEP-TauschManager2

  • Hallo @Rayler (RL2),

    die erste Fahrstraße ist jetzt so eingebunden, dass sie bei Schaltung gelb ausgeleuchtet ist, bis auf ein Pultelement, das sich weigert, obwohl kein Eingabefehler vorliegt. Danke noch einmal für die Hilfe.

    Viele Grüße
    Berthold


    Mein System+EEP

    Lenovo LegionY720 i7 2,8GHz, 16GB 64bit, NVIDIA GeForce GTX 1060 - Win10Home

    EEP17, P1, Plugin 1,2 PlanEx 3.2, SpDrS60-3, Modellkatalog, Modell Explorer, Modellkonverter, EEP-TauschManager2

  • Hallo @Rayler (RL2),

    dazu noch eine Frage: Um Code einzusparen, kann man die TrkIds in eine Tabelle schreiben und per for .. do Schleife als Variable an TrkDtcSet_IDx.setDtcState(2) übergeben?

    Viele Grüße
    Berthold


    Mein System+EEP

    Lenovo LegionY720 i7 2,8GHz, 16GB 64bit, NVIDIA GeForce GTX 1060 - Win10Home

    EEP17, P1, Plugin 1,2 PlanEx 3.2, SpDrS60-3, Modellkatalog, Modell Explorer, Modellkonverter, EEP-TauschManager2

  • Um Code einzusparen, kann man die TrkIds in eine Tabelle schreiben

    das kann man, Aber etwas anders.

    du kannst eine weitere Tabelle nutzen, zu finden in der Datei "SpDrS60_TmpDtcCol.lua" im SpDrS60-Verzeichniss.

    In dieser Datei werden SpDr-Objekte in diversen Tabellen gespeichert. Für die DtcSets kannst du die "_SPDRS60_TrkDtcSetsCol" verwenden.

    Du benötigst dazu dann deine Tabelle mit den Ids der TrkDtcSets.

    FahrstrasseWest={102,74,55,66}

    Nun brauchst du eine Funktion, die deine Table verarbeitet. Hier ein einfaches Beispiel:

    Lua
    function setFahrstrasse(_argTbl, _mode)
        for _,v in pairs(_argTbl) do
            for _,vi in pairs(_SPDRS60_TrkDtcSetsCol) do
               if v == vi.getObjId() then     --Objektmethode liefert SetId
                    vi.setDtcState(_mode);    --Objektmethode setzt DtcState
                end;
             end;
        end;
    end;

    Nun noch der Aufruf zur Aktivierung der Fahrstrasse mit _mode = 2

    setFahrstrasse(FahrstrasseWest,2)

    Um die Melder zurückzusetzen einfach mit _mode = 1 aufrufen.

    setFahrstrasse(FahrstrasseWest,1)

    Dieses Beispiel enthält keinerlei Kontrollstrukturen, es geht lediglich um die Anwendung der entsprechenden Tabellen.

    Ray

  • Hallo @Rayler (RL2),

    sehr nett von Dir, so schnell und ausführlich zu antworten. Vielen herzlichen Dank!

    Viele Grüße
    Berthold


    Mein System+EEP

    Lenovo LegionY720 i7 2,8GHz, 16GB 64bit, NVIDIA GeForce GTX 1060 - Win10Home

    EEP17, P1, Plugin 1,2 PlanEx 3.2, SpDrS60-3, Modellkatalog, Modell Explorer, Modellkonverter, EEP-TauschManager2