Achte bitte darauf, dass Du mit deinem Thema bzw. mit deiner Frage im richtigen Bereich bist.
Die Bereiche sind: Einstellungen im Forum, EEP aktuell ab EEP7 , Splines, Rollmaterialien, Immobilien, Landschaftselemente, Signale und Schaltung, Anlagenvorstellungen, Schnappschüsse Konstrukteure, EEP Treffen , Laberecke, Online - Handbuch EEP Vielen Dank für die Unterstützung das Forum übersichtlich zu halten.
Bilder/Fotos aus dem Internet sind nur als Link gestattet. Eigene Fotos, also Fotos aus dem realen Leben, sind erstens mit Eigenes Bild als Quellenangabe zu kennzeichnen und zweitens nur als Dateianhang im Beitrag zulässig. Bilder ohne Quellenangaben und Bilder dessen Quelle das Internet wie z. B. Google ist, werden gelöscht.
  • Hallo,

    ich habe mir eine Testanlage mit einem Gleis aufgebaut. Am Endgleis steht ein unsichbares Signal(1). und ein Ausfahrtssignal(3).

    Bei der Einfahrt sind 2 Soundkontakte gesetzt. Der erste prüft die Geschwindigkeit, der zweite zeitverzögert setzt die Umkehr der Geschwindigkeit.

    Sobald ich das Ausfahrtssignal auf Fahrt gehe fährt der Zug jedoch weiter zum Prellbock.

    Die Lua Befehle stimmen, da die neue Geschwindigkeit angzeigt wird, aber EEP reagiert nicht.

    Was ist dann an meinem Code falsch?

    Gruß Gerhard

    EEP15.1
    Windows10 Home Premium 64Bit, DirectX 11

    Nvidia GeForce GTX10800i

  • Moin Gerhard,

    Was ist dann an meinem Code falsch?

    definitiv falsch ist die Zeile 37 weil sie überflüssig ist.

    Du musst an der Stelle lediglich die Abfrage und die Funktion beenden. Eigentlich sollte sich der Interpreter beim Laden des Skripts darüber beschweren.

    Über den Rest lässt sich vorerst nur spekulieren.

    In meinem Versuchsaufbau

    hat die Umkehr der Züge funktioniert.

    Um Dir bei dem Problem besser helfen zu können müsstest Du mal einen Screenshot von Deinem Aufbau posten und uns Aufschluss darüber geben,

    wie Du die Signale ansteuerst.

    Gruss, Oliver

    i7-6500U, 2,5 GHz, Geforce GTX 950M Win10

    EEP 17.3 Plug- in 1

  • Hallo Gerhard ( Salamanda19),

    wie BrettvormKopf schon schrieb ist in der Funktion "Umkehren" ein Syntaxfehler, ein "end" zuviel. Dadurch wird die Funktion beim Aufruf nicht ausgeführt und der Zug behält seine ursprüngliche Geschwindigkeit und Fahrtrichtung.

    Das stellen des Signale auf Fahrt verändert die ursprüngliche Fahrtrichtung nicht, die Funktion "Umkehren" muss ausgeführt werden.

    Ich weiß anhand Deines Quellcodes nicht, was zwischen den Aufrufen von "Geschwindigkeit" und "Umkehren" noch passiert, aber wenn Du den Wert der neuen Geschwindigkeit nur in "newSpeed" speicherst, dann sehe ich noch folgende Probleme:

    Wenn Du die Anlage zwischen den Aufrufen der beiden Funktionen beendest, dann hat "newSpeed" nach einem Neustart beim Aufruf von "Umkehren" keinen Wert mehr. Du müsstest den Wert "dauerhaft" in der Anlage speichern (DataSlot bzw. die Tag-Text-Funktionen bieten sich dafür an).

    Und wenn Dein Kopfbahnhof mal mehr als ein Gleis bekommen sollte, dann kannst Du "newSpeed" in der jetzigen Form nicht mehr dem entsprechenden Zug auf dem gewünschten Gleis zuordnen.

    Jürgen

    EEP: 12.1, 13.2, 14.1, 15.1, 16.4 (z.Zt. installiert aber nur für Tests im Einsatz)

    keinerlei externe Zusatztools und manuell manipulierte Anlagendateien

    Prozessor: Intel(R) Core(TM) i5-4460S CPU @ 2.90 GHz 2.90 GHz
    PC: RAM 12 GB, Windows 10 Home, 64 Bit
    GK: NVIDIA Geforce GT 730, 4 GB

    6 Mal editiert, zuletzt von JuergenSchm (19. Mai 2020 um 08:38)

  • Hallo ,

    zuerst Danke für eure Hilfe.

    Ja ihr habt recht die Syntaxfehler waren bei mir nicht mehr, da ich den falschen bzw. noch den Fehlerhaften kopiert habe. Ich konnte im Ereignisfenster sehen das die Geschwindigkeit gestellt wurde, jedoch nicht im Steuerelement weil das Signal auf Halt ist. Daher vermute ich es liegt an den KP.

    Der KP für die Geschwindigkeit liegt kurz vor dem KP für Umkehr und kurz vor dem Haltesignal. Aber werde mal mit den KP handieren.

    Ansonsten habe ich keinen Rat.

    Gruß Gerhard

    EEP15.1
    Windows10 Home Premium 64Bit, DirectX 11

    Nvidia GeForce GTX10800i

  • Hallo Salamanda19 ,

    ich habe die Situation mit Deinem Quellcode bei mir nachgestellt (ohne das überflüssige "end" und ohne Route-Abfrage) und es funktioniert, der Zug dreht nach der Kontaktpunkt-Verzögerung um. Ohne, dass das Signal auf Fahrt gestellt wird.

    Ich könnte mir vorstellen, dass es bei Dir noch ein Problem mit der Route gibt.

    Schreibe doch mal in Deinem Quellcode ein zusätzliches print(…) vor die beiden EEPSetTrainSpeed(…) in "Umkehren".

    Erfolgt eine entsprechende Anzeige?

    Du könntest das ganze auch erstmal ohne die Routen-Abfrage versuchen.

    Mir ist noch etwas aufgefallen:

    Du addierst beim "Personzug" 20. Wenn newSpeed -40 ist, dann würde der "Personenzug" mit -20 abfahren. Das ist doch sicherlich nicht gewollt?

    Jürgen

    EEP: 12.1, 13.2, 14.1, 15.1, 16.4 (z.Zt. installiert aber nur für Tests im Einsatz)

    keinerlei externe Zusatztools und manuell manipulierte Anlagendateien

    Prozessor: Intel(R) Core(TM) i5-4460S CPU @ 2.90 GHz 2.90 GHz
    PC: RAM 12 GB, Windows 10 Home, 64 Bit
    GK: NVIDIA Geforce GT 730, 4 GB

  • Hallo Salamanda19 , Gerhard,

    ich bin leider (noch) kein Anwender von Lua und habe da höchstens gefährliches Halbwissen. Vielleicht verstehe ich es deswegen nicht so ganz, aber warum willst Du es denn überhaupt mit einem Lua-Script lösen? Da reicht doch an richtiger Stelle lediglich ein unsichtbares Signal mit einem KP, der eine Fahrtrichtungsumkehr und Geschwindigkeitsvorgabe enthält.


    Falls ich einen Denkfehler mache, sieh es mir bitte nach ok?

    Viele Grüße,

    Christopher

    Mein System:

    Intel Core i7 6700k * Mainboard ASUS Z170 ProGaming * Grafikkarte NVidia GeForce GTX 1060 6GB * Arbeitsspeicher 32GB * 32"-Display 4K BenQ * Windows 11 Home (64 Bit) *

    Arbeite mit EEP17 mit allen Patches und Plugins auf SSD Samsung 850 EVO 250GB

  • Solch einen Versuchsaufbau kann ich bestätigen: Das unsichtbare Signal bleibt immer auf Halt. Ein einfahrender Zug kehrt nach 20 sec mit einer Geschwindigkeit von 40 Km/h um.

    Gruß Lelf

  • EEPSetTrainSpeed(Zugname,newSpeed + 20)

    Hallo Gerhard, Salamanda19

    Ohne jetzt deinen Aufbau zu kennen und mal abgesehen von dem oben genannten Fehler in der Syntax...

    in der zitierten Zeile veränderst Du die in newSpeed gespeicherte Geschwindigkeit indem Du 20 addierst.

    Wenn newspeed einen positiven Wert von sagen wir 40 hat ist alles kein Problem. Dann wird der Personenzug mit 60 weiter fahren.

    Ist aber newSpeed -40 dann wird die Geschwindigkeit -40 +20 = -20.

    Das solltest Du berücksichtigen.

    Wie @Lelf zeigt, kannst Du

    if EEPGetSignal(3) == 2 then --Ausfahrtsignal auf Fahrt
    EEPSetSignal(1,2)
    end

    dir das sparen. Denn wenn der Zug, egal an welchem Signal er steht eine Geschwindigkeitsumkehr erfährt, dann löst er sich aus der "Fesselung" des Signals.

    könnte man ersetzen durch

    Code
    function Geschwindigkeit(Zugname)   --Die Geschwindigkeit ermitteln ob sie negativ oder positiv ist
        hResult, speed = EEPGetTrainSpeed(Zugname)
        if hResult then
            print(speed)
            newSpeed = speed*-1                   -- umgekehrte Geschwindigkeit setzen
        end
    end

    ich habe hier mal einen Ausschnitt aus meinem Kopfbahnhof genommen.

    Die Messung der Geschwindigkeit erfolgt in dem Sound-KP jeweils links im Gleis.

    Lua
    ----------------Geschwindigkeit speichern Kopfbahnhof
    for dl = 101, 110 do
        _ENV["radar"..dl] = function(zn)
            ztempo = select(2, EEPGetTrainSpeed(zn))                            -- Geschwindigkeit ermitteln
            EEPSaveData(dl, ztempo)
            EEPSaveData(dl+10, zn)
        end
    end

    Da ich nicht mit Bennys Codeschnipsel arbeite müsstest Du (zn) durch (Zugname) ersetzen :ae_1:

    Bei mehreren Gleisen (hier 10) finde ich es einfacher, sowohl die Geschwindigkeit der Züge als auch den Zugnamen in je einem Slot zu speichern.

    Dann habe ich die Ausfahrtsignale noch in einer Tabelle angelegt, diese registriert und jeweils ein Callback erzeugt.

    Wird das Ausfahrtsignal auf Fahrt gestellt, dann wird für den Zug die neue Geschwindigkeit ausgehend von den in den Slots gespeicherten Werten errechnet und zugewiesen,

    Gruß
    Dieter

    -----------------------------------------------------------------------------------

    Sie haben Lua? :ad_1: Ist das ansteckend?

    Bleibt alle schön EEP-besessen :ae_1:

    Hardeware und Software

    __________________________________________
    EEP alle Versionen ab EEP6 mit allen Plugins,
    Homenos5, Homenos8,...,HomeNos17 DEV...
    Intel I7 4790k 4x 4Ghz, 32 GB RAM, NVidia GTX 1080 ti 11GB, Direct x V11, Windows 10 pro 64 Bit,
    Laptop Medion Erazer, 16GB RAM, 500GB SSD, 2 TB HDD, GT 850 von Nvidia, Windows 10 Home 64bit

  • Hallo und Danke für eure Hilfe.

    Christopher der Grund ist da bei einem KP der Zug nicht zu langsam sein darf. Daher muss der KP sehr knapp an das Vorsignal damit der Zug nicht zu früh umdreht. Weiters ist der Zug jetzt an das Signal gebunden.

    Mit Lua steht der Befehl des Umkehr über das Signal. Das heist ich kann jederzeit selbst die Zeit bestimmen wann er raus soll. Mit KP musst du eine Zeit vorgeben oder über das Signal freigeben.

    Aber Danke für den Rat.

    So ich habe es hinbekommen und sogar mit Route das er mit verschiedener Geschwindigkeit raus fährt. Hier der Code und ein Bild der Anlage.

    Anlagebild

    Gruß

    EEP15.1
    Windows10 Home Premium 64Bit, DirectX 11

    Nvidia GeForce GTX10800i

  • Hallo DIeter,

    unsere Beiträge haben sich überschnitten.

    Aber Danke werde deinen Code benutzen da er mit Tabellen ist und da es noch mehr werden ist das eine gute Sache.

    Edit: Dieter was bewirken die Fahrzeug KP am Ende des Bahnhofes?

    Code
    if Route == "ICE" or Route == "WZ" then              -- wenn kein Zugwechsel erforderlich
                    EEPSetTrainSpeed(zugn,Zspeed*-1)                 -- umgekehrte Geschwindigkeit setzen
                en

    Du vergibst den Zügen mit der Route ICE und WZ eine Umkehr.

    Lua rechnet - daher ergibt 100*-1 =99, -100*-1 = -101 ok? Das Tempo wird beim speichern bereits gedreht, aber was bedeutet bei select die 2?

    Sorry für die vielen Fragen aber ich möchte die Begriffe in Lua verstehen wie das abläuft und mit select habe ich noch nichts am Hut.

    Gruß Gerhard

    EEP15.1
    Windows10 Home Premium 64Bit, DirectX 11

    Nvidia GeForce GTX10800i

    5 Mal editiert, zuletzt von Salamanda19 (19. Mai 2020 um 13:47) aus folgendem Grund: Themen mit Dieter gekreuzt

  • daher ergibt 100*-1 =99, -100*-1 = -101 ok?

    Hallo Gerhard :)

    nein. Vielleicht wird es durch einige Leerzeichen klarer:

    Lua
    newSpeed =  100 * -1    -- +100 multipliziert mit -1 ergibt -100
    newSpeed = -100 * -1    -- -100 multipliziert mit -1 ergibt +100

    Mit anderen Worten: Du kehrst das Vorzeichen um.

    was bedeutet bei select die 2

    Mit select kannst Du aus einer Liste von Parametern einen bestimmten ansprechen, siehe z.B. hier.

    muss der KP sehr knapp an das Vorsignal damit der Zug nicht zu früh umdreht. Weiters ist der Zug jetzt an das Signal gebunden.

    Ersteres sehe ich nicht als (großes) Problem, letzteres ist für mich eher erwünscht, denn...

    ich kann jederzeit selbst die Zeit bestimmen wann er raus soll. Mit KP musst du eine Zeit vorgeben oder über das Signal freigeben.

    ... das kann ich genauso, weil ich die Freigabe durch ein beliebiges Ereignis auslösen kann, nicht nur zeitgesteuert.

    Gruß Ingo

  • 100*-1 =99, -100*-1 = -101 ok?

    Nein.

    100 - 1 = 99

    100 Mal Minus 1 = Minus 100

    (Einen Wert mal Minus1 rechnen kehrt das Vorzeichen um)

    100 wird zu -100

    1794357 wird zu -1794357

    -112344 wird zu 112344

    Es ist müssig, dauernd den Weltuntergang heraufzubeschwören. Man muss auch aktiv etwas dafür tun. :bn_1:

  • Edit: Dieter was bewirken die Fahrzeug KP am Ende des Bahnhofes?

    Hallo Gerhard,

    da dieses Bild aus einer größeren Anlage stammt habe ich bei dem Script ein wenig "gemogelt"

    Bei diesem Kopfbahnhof bekommen nur bestimmte Züge (Routen "WZ" für Wendezug und "ICE") die neue Geschwindigkeit am Signal. Der KP nach dem Du fragst hat den Eintrag "Geschwindigkeit 0 nach 30 Sekunden". Wie Du ja gemerkt hast nutze ich nicht dieses "Durchrutschen" am Signal und gebe den Zügen Ihre neue Geschwindigkeit wenn das Signal schaltet.

    Wenn Züge in den Kopfbahnhof einfahren, bei denen die Lok gewechselt werden muss, also keine Steuerwagen am anderen Ende. Dann wird die Lok abgekuppelt und eine neue Lok aus dem BW kommt zum Einsatz. Die alte Lok zieht bis zum Ende des Gleises vor während die andere Lok von hinten an die Wagen fährt.

    Also etwas komplexer :ae_1:

    select = wähle

    strbes, zn = select(2,EEPIsRoadTrackReserved(v[2],true))

    EEPIsRoadTrackReserved übergibt ja 3 Parameter. Wenn ich sicher davon ausgehen kann, dass ein Wert vorhanden ist, dann spare ich mir die Abfrage des ersten Wertes der ja entweder true oder false ist. Wie Du im Beispiel siehst lese ich daher aus dem Ergebnis nur ab dem 2. Rückgabewert aus, also Status des Splines und Name des Rollmaterials.

    Würde ich nur den Namen des Rollmaterails benötigen könnte ich anstelle von Select(2,xy) select(3,xy) nutzen.

    Also immer alle Werte ab dem Parameter der an der x-ten Stelle steht.

    Gruß
    Dieter

    -----------------------------------------------------------------------------------

    Sie haben Lua? :ad_1: Ist das ansteckend?

    Bleibt alle schön EEP-besessen :ae_1:

    Hardeware und Software

    __________________________________________
    EEP alle Versionen ab EEP6 mit allen Plugins,
    Homenos5, Homenos8,...,HomeNos17 DEV...
    Intel I7 4790k 4x 4Ghz, 32 GB RAM, NVidia GTX 1080 ti 11GB, Direct x V11, Windows 10 pro 64 Bit,
    Laptop Medion Erazer, 16GB RAM, 500GB SSD, 2 TB HDD, GT 850 von Nvidia, Windows 10 Home 64bit

  • Mir kommt die select-Funktion immer etwas komisch und unnötig komplex vor - sie verstellt mir den Blick auf die eigentlich wichtige EEP-Funktion.

    Statt

    strbes, zn = select(2,EEPIsRoadTrackReserved(v[2],true))

    schreibe ich mit der Dummy-Variablen "_"

    _, strbes, zn = EEPIsRoadTrackReserved(v[2],true)

    bzw. zumeist mit lokalen Variablen und explizitem returncode zur Vorbereitung einer Fehlerbehandlung:

    local rc, strbes, zn = EEPIsRoadTrackReserved(v[2],true)

    if rc == true then ... end

    Den Test kürze ich dann noch ab:

    if rc then ... end

    Online EEP-Tools: Gleisplan-Programm / Inventar-Programm

    EEP 15 ab Mai 2019 und EEP 17 ab Nov. 2021
    EEP 6 in 2011 und EEP 13 ab Januar 2019 sind eingemottet
    XMP Core 17 Laptop mit Intel Core i7-10870H 8-Core-CPU, 16 GB Arbeitsspeicher, NVIDIA GeForce RTX 3060 Laptop GPU mit DirectX 12

    Einmal editiert, zuletzt von frank.buchholz (20. Mai 2020 um 09:25)

  • Ich würde auch gern meine Senfkörner hier verstreuen.

    Meine persönliche Meinung zur Kopfbahnhofsteuerung.

    Züge würde ich durch ein unsichtbares Signal nahe am Prellbock (ca. 10m oder mehr) halten lassen.

    Eine Geschwindigkeit und -richtung über Kontaktpunkt, würde ich entfallen lassen, da das Ausfahrtsignal eh die Höchstgeschwindigkeit vorgibt. Hat man z.B. nur Halt und Fahrt am Signal, dann kann man mit einer Tabelle für jede Zuggattung (Route und/ oder Filter) bestimmte Geschwindigkeiten festlegen und dementsprechend zuordnen. Was die Richtung angeht, kann man über die Gleise die Richtung bestimmen, auch wenn der Zug steht, damit entfällt ein Speicher.

    Grundsätzlich fahren die Züge erst los, wenn das Ausfahrtsignal auf Fahrt steht. Und hier auch mit einer Verzögerung, damit die Bahnhofsdurchsage, alle Türen zu usw. von statten gehen können. Eine Besonderheit gibt es noch, wenn Zugverbände zur Wartung, Abstellgleise fahren.

    Ein Lua-Skript gibt es nicht, da ich keine Ahnung von Lua habe.:ad_1:

    MfG. Jörg
    Ausstattung: Notebook: i7-6700K, 4[8]x4.0 GHz, 32GB RAM DDR4, NVIDIA GTX 980M 8GB, Windows 10, 64-Bit
    Installiert: EEP17.2 Plugin 1 + 2

    Zusatzprogramme: ResourcenSwitcher2 (BH2), EEP-Gleisplan (Frank Buchholz)

  • Hallo und danke allen für die Zahlreiche Hilfe und Tipp's,

    Mit select kannst Du aus einer Liste von Parametern einen bestimmten ansprechen, siehe z.B. hier.

    Danke jetzt bin ich im Bilde.

    Zu euren Rechen Beispiele.

    Das die Rechnung stimmt hatte ich keinen Zweifel sonst würde er im Code nicht stehen.:an_1:. Hab mich nur gefragt warum der Taschenrechner falsch ausgibt.

    Hallo Gerhard,

    da dieses Bild aus einer größeren Anlage stammt habe ich bei dem Script ein wenig "gemogelt"

    Ist doch nicht schlimm. War nur neugierig.:aa_1:

    Danke für die Ausführliche Erklärung Dieter.

    EEP15.1
    Windows10 Home Premium 64Bit, DirectX 11

    Nvidia GeForce GTX10800i

  • Hab mich nur gefragt warum der Taschenrechner falsch ausgibt.

    Hallo Gerhard,

    wenn Du im Taschenrechner 100* -1 rechnest wird das "*" ignoriert, denn richtig müsste es ja 100 * (-1) heißen.

    Wenn du aber die Faktoren umdrehst, also -1 * 100, dann erhältst Du -100 :ag_1::ae_1:

    Gruß
    Dieter

    -----------------------------------------------------------------------------------

    Sie haben Lua? :ad_1: Ist das ansteckend?

    Bleibt alle schön EEP-besessen :ae_1:

    Hardeware und Software

    __________________________________________
    EEP alle Versionen ab EEP6 mit allen Plugins,
    Homenos5, Homenos8,...,HomeNos17 DEV...
    Intel I7 4790k 4x 4Ghz, 32 GB RAM, NVidia GTX 1080 ti 11GB, Direct x V11, Windows 10 pro 64 Bit,
    Laptop Medion Erazer, 16GB RAM, 500GB SSD, 2 TB HDD, GT 850 von Nvidia, Windows 10 Home 64bit

  • Hallo Dieter,

    Hallo Gerhard,

    wenn Du im Taschenrechner 100* -1 rechnest wird das "*" ignoriert, denn richtig müsste es ja 100 * (-1) heißen.

    Wenn du aber die Faktoren umdrehst, also -1 * 100, dann erhältst Du -100

    Ok haste recht, aber du bekommst keine 100 :ag_1: weder mit -1 * -100 oder -100 * -1.

    Dazu musste ich den Rechner von Windows auf Programmierer umstellen damit ich die Klammern verwenden konnte dann funktioniert's. :an_1:

    Gruß Gerhard

    EEP15.1
    Windows10 Home Premium 64Bit, DirectX 11

    Nvidia GeForce GTX10800i

  • Ihr wisst aber, wie man einen Taschenrechner benutzt?

    MfG. Jörg
    Ausstattung: Notebook: i7-6700K, 4[8]x4.0 GHz, 32GB RAM DDR4, NVIDIA GTX 980M 8GB, Windows 10, 64-Bit
    Installiert: EEP17.2 Plugin 1 + 2

    Zusatzprogramme: ResourcenSwitcher2 (BH2), EEP-Gleisplan (Frank Buchholz)