Aufzüge: Lua-Befehl zum ansprechen der Achsen

!!! 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 @All


    Irgendwie sehe ich den Fehler nicht.


    In EEPMain wird jede Sekunde ein neue Fahrstuhl per Zufall ausgewählt. Function HBFBstgAufzugAktivieren(rndAufzID) ruft den Zustand aus der Tabelle AufzZustand ab und speichert das in der Variablen lift.

    Es werden die einzelnen Schritte anschließen abgearbeitet. Nachdem aber lift wieder null ist sollte wieder eins kommen und das tut er nicht.


    Seht ihr den Fehler von mir ? Ich bin wahrscheinlich blind vom suchen.


    g

    Dirk

    LG aus Hannover

    Petzifun aka Dirk


    EEP: v16 Patch3 // v15 Patch1 // v14 .1 Patch2 Plugin 1 // v13.2 (Update 2) // v6.1 Classic

    Tools: Tauschmanger // Modellkonverter // Zugexplorer // Modellexplorer // Modellkatalog

    OS: MS Windows 10 Professional 64bit Insider Skip-Ahead Preview Version Build 19035 (vb_release) (21H1)

    Rechner: Prozessor Intel(R) Core(TM) i7-6700K CPU@4,0GHz // RAM: 32GB // HD: SSD 250GB System HDD 3+4TB Daten gespiegelt // Grafik: NVIDIA Dual GeForce GTX-1060 6GB RAM

  • Hallo Dirk,


    da es hier um ein Lua-Skript handelt habe ich deine Frage in den Forumsbereich Signale und Schalttechnik zu EEP (ab 7) verschoben.


    Gruß, Patrick

    AKTUELLES PROJEKT | Fleischmanns H0-wunderland '76


    Desktop | Intel Core i7 | ASUS X99 Mainboard | Zalman CNPS12X | ASUS GeForce GTX 1070 8GB | 32 GB DDR4 RAM

    Software | WIN 7 Ultimate 64Bit | EEP 13 Expert-Plugin 1 & 2| Home-Nostruktor 13.0 | EEP 13.2, Pl. 1-2 | EEP 15.0 (Deutsch) | Blender | GIMP | Inkscape

    Laptop | Asus VivoBook Pro | Intel Core i7 6700 HQ | Nvidia GTX 950M | 32 GB DDR4 RAM

    Software | WIN 10 | EEP 15.0 (English) | Blender | GIMP | Inkscape

  • Vorab (weil ich den eigentlichen Fehler noch nicht gefunden habe):

    Deine Funktion wait() friert dein komplettes Lua Skript bis zum Ablauf der Wartezeit ein! Weil es einfach alles in dieser Schleife festhält.


    Wahrscheinlich ist dir das bewusst, aber vielleicht auch nicht?


    Ich würde für Wartezeiten zu folgendem Prinzip raten: Setzt ein Flag auf false. Vergleiche bei jedem EEPMain()-Durchlauf einmal den Takt in der Main mit deinem Zielwert. Ist der Zielwert erreicht, dann setz das Flag auf true.


    Nachtrag: Sieht aus, als würdest du die Funktion gar nicht nutzen ...

  • Hi Goetz!


    Ja ist mir bewusst und sollte es auch als ich sie eingesetzt hatte.


    Die ist da mit reingeraten und wird auch nicht benutzt. Ich hatte damit nur verschiedene Pausen versucht.

    Im moment ist die irrelevant.


    Ich gib für heute auf mit der Suche:az_1:

    Kein Ahnung wo mein Fehler ist


    Gute Nacht

    LG aus Hannover

    Petzifun aka Dirk


    EEP: v16 Patch3 // v15 Patch1 // v14 .1 Patch2 Plugin 1 // v13.2 (Update 2) // v6.1 Classic

    Tools: Tauschmanger // Modellkonverter // Zugexplorer // Modellexplorer // Modellkatalog

    OS: MS Windows 10 Professional 64bit Insider Skip-Ahead Preview Version Build 19035 (vb_release) (21H1)

    Rechner: Prozessor Intel(R) Core(TM) i7-6700K CPU@4,0GHz // RAM: 32GB // HD: SSD 250GB System HDD 3+4TB Daten gespiegelt // Grafik: NVIDIA Dual GeForce GTX-1060 6GB RAM

  • Hallo petzifun


    wenn ich dich richtig verstanden habe, funktioniert die Weiterschaltung von lift=0 auf lift=1 nicht.


    Dann müsste der "Fehler" ja in function HBFBstgAufzugTuerUGAuf(x) liegen.


    In Zeile #92 fragst du ja if position1 > 99 then also auf >99.


    Ich hatte diesen Effekt auch schon,

    es kann sein, dass die Achse nicht ganz auf den Wert 100 kommt. (Klemmt irgendwie :at_1:)


    Probier es mal mit den Werten 98 , 97 oder 96.


    Zur Kontrolle kannst du dir ja in Zeile #91 mit print() diesen position1-Wert anzeigen lassen.


    Das gleich gilt für deine <1-Werte. Mit <2 oder <3 bist du auf der "sichereren" Seite.


    :aq_1:

    eep_gogo ( RG3 )

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

    Intel i3-540 3,2GHz 8GB, RAID10, HD 6570 1GB, W7/64 Prof., EEP 6-6.1, 10-15, HN13+15, TM, "Schiefe Ebene 6 + 8", "Bahn2000", "Faszination der St. Gotthard-Nordrampe"

    MK, ModellKonverter 1.0 wo nicht mehr tut. Ganz schnell ausgeschrieben, wg. Mod-Drohung: Ansonsten ... :am_1:

  • Eine weitere Ungereimtheit (aber noch nicht der Grund fürs Fehlverhalten):

    Du rufst die Unterfunktionen dann auf, wenn die Variable lift einen bestimmten Wert hat. Damit ist es zumindest redundant in dieser Unterfunktion noch einmal zu prüfen, ob lift diesen Wert hat.

  • Dein math.random(anzAufzID) erzeugt Zufallszahlen von 0 bis zur Anzahl der Tabellenplätze.

    Aber Lua kennt keinen Tabellenplatz 0. (Außer, wenn man ihn explizit anlegt.)

    Du brauchst Zahlen von 1 bis anzAufzID. Also math.random(1, anzAufzID)

    Ob das schon die Fehlerursache ist, kann ich nicht sagen. Ich schreibe deinen Code derzeit noch um, damit ich ihn besser lesen kann.

  • überhaupt macht dieser ganze Teil in der EEPMain() nicht das, was du willst:

    LUA Source Code
    1. if AufzCounter % 5 == 1 then
    2. rndAufzID = math.random(anzAufzID)
    3. HBFBstgAufzugAktivieren(rndAufzID)
    4. end

    Du wählst da jede Sekunde einen anderen Aufzug aus, egal, was der gerade macht.

    Und schickst ihm, wenn du Pech hast, mehrfach denselben Befehl, bis die Animation ihr Ziel erreicht hat.

    Dabei kommt nichts Gutes raus. Es wäre viel sinnvoller, nach jedem Schritt (Tür auf, Tür zu, Fahrt) eine zufällige Wartezeit vergehen zu lassen, bevor du den nächsten Schritt ausführst. Und ständig reihum alle Aufzüge zu "fragen", ob es etwas neues zu tun gibt.

  • Der wirkliche Fehler, welcher dein Skript zum Erliegen bringt, ist der, dass die unteren Fahrstuhltüren nicht Tuer UG heißen, sondern Tuer EG. Wegen dieses falschen Namens bewegen sich die Türen nicht. Und weil sie sich nicht bewegen, bekommt position1 nie den Wert den es braucht, damit es weitergeht. Und weil du den Achsennamen vom Modell falsch abgeschrieben hast, findest du auch den Fehler nicht. Weil du ihn nur im Skript suchst. Und im Skript steht kein Hinweis auf den falschen Achsennamen.


    Der erste Rückgabewert der Funktion zum Bewegen der Achse ist nur dann true, wenn die Achse tatsächlich existiert. Bei der Funktion zum Auslesen der Achsenposition ist es ebenso. Das ist der Wert, der bei dir in der Variablen h aufgefangen wird. Mit diesem Wert kannst du feststellen, ob du Modell- und Achsennamen richtig geschrieben hast. Bei dir ist h == false. Nach Korrektur des Skripts wird h == true sein.


    Also:

    Bei den Funktionen HBFBstgAufzuegeReset(), HBFBstgAufzugTuerUGAuf(x) und HBFBstgAufzugTuerUGAuf(x) den falschen Achsennamen Tuer UG gegen den richtigen Tuer EG tauschen und dann läuft dein Skript.

    "Im weiteren Verlauf der Befassung mit diesem Thema"

    - Klaus S. -

    The post was edited 2 times, last by Goetz ().

  • Hallo Goetz!


    Manchmal sieht man den Wald vor lauter Bäumen nicht:ac_1:


    Der wirkliche Fehler, welcher dein Skript zum Erliegen bringt, ist der, dass die unteren Fahrstuhltüren nicht Tuer UG heißen, sondern Tuer EG.

    Das ist natürlich logisch ... Habe ich nicht erkannt ...:at_1:


    Goetz wrote:

    Bei den Funktionen HBFBstgAufzuegeReset(), HBFBstgAufzugTuerUGAuf(x) und HBFBstgAufzugTuerUGAuf(x) den falschen Achsennamen Tuer UG gegen den richtigen Tuer EG tauschen und dann läuft dein Skript.

    Das habe ich gemacht und siehe da, es funkt dann auch ... Allerdings wie du oben unter #8 schon angemerkt hast,

    ist genau das Verhalten aufgetreten, das es ein Durcheinander gibt. Ich werde das entsprechend ändern.


    Den von dir unter #7 gemachten Hinweis habe ich ebenfalls geändert.


    Wie würdest du eine Warteschleife programmieren? Die von mir gewählte Variante bring das Script zum vollständigen erliegen. Macht eigentich in EEP keinen

    Sinn, da eventuell Zeitkritisch abgefragt werden muss.


    Vielen Dank für die Hilfe.


    mfg und schönen Sonntag noch

    Dirk aka Petzifun

    LG aus Hannover

    Petzifun aka Dirk


    EEP: v16 Patch3 // v15 Patch1 // v14 .1 Patch2 Plugin 1 // v13.2 (Update 2) // v6.1 Classic

    Tools: Tauschmanger // Modellkonverter // Zugexplorer // Modellexplorer // Modellkatalog

    OS: MS Windows 10 Professional 64bit Insider Skip-Ahead Preview Version Build 19035 (vb_release) (21H1)

    Rechner: Prozessor Intel(R) Core(TM) i7-6700K CPU@4,0GHz // RAM: 32GB // HD: SSD 250GB System HDD 3+4TB Daten gespiegelt // Grafik: NVIDIA Dual GeForce GTX-1060 6GB RAM

  • Hier hast du ein Beispiel für einen EEP-tauglichen Timer. Er nutzt die Variable, welche in der EEPMain() Funktion ständig hochgezählt wird. Dafür ist die nämlich da. Ich habe diese Variable Takt genannt, weil ich den Namen I unpraktisch finde.


    Stell auf einer leeren Anlage ein einzelnes Signal auf und ersetze das Basisskript durch mein Beispiel.

    Dann kannst du durch Umschalten des Signals den Timer starten und wirst sehen, dass 4 Sekunden später - nach Ablauf des Timers - das Signal wieder zurückgestellt wird.

  • petzifun und alle, die sich dafür interessieren.


    Hier ist ein Beispielskript für die MS2 Aufzüge aus dem Set V70NMS20003. Es enthält die Immobilien IDs, welche petzifun auf seiner Anlage hat. Die muss man im Bedarfsfall für die eigene Anlage anpassen. Das Skript lässt alle aufgelisteten Fahrstühle zufällig auf und ab fahren. An beiden Endpositionen pausiert der Fahrstuhl eine zufällig definierte Weile (zwischen 20 und 80 Sekunden) bei geöffneten Türen.

    So richtig schön ist das Skript noch nicht. Also immer her mit Verbesserungsvorschlägen.


    Unter "Kostenfrei" habe ich eine kleine Beispielanlage mit drei automatisch agierenden Aufzügen (und sonst nichts weiter!)

    hochgeladen.



    Das obige Skript und ebenso die Beispielanlage funktionieren nur mit EEP 15 oder höher. Eine Anpassung an andere Aufzüge oder ganz andere Animationen für Immobilien irgendwelcher Art ist möglich, erfordert aber gute Grundkenntnisse in Lua.

    "Im weiteren Verlauf der Befassung mit diesem Thema"

    - Klaus S. -

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

  • Das obige Skript und ebenso die Beispielanlage funktionieren nur mit EEP 15 oder höher. Eine Anpassung an andere Aufzüge oder ganz andere Animationen für Immobilien irgendwelcher Art ist möglich, erfordert aber gute Grundkenntnisse in Lua.

    genau das finde ich sehr schade ..... es ist toll das denn usern so für ein moment gehollfen wir .... aber ..... lasst doch in denn skripten ein wennig luft das man diese mal richtig schon auf andere ideen verwenden kann

  • Hallo,

    also ich finde da ist ganz viel Luft für alles was sich bewegt drin.


    Da ich die Aufzüge nicht habe hab ich es einfach mit drei Lokschuppen versucht.

    Die Zeilen 10, 15 und 16 angepasst. und schon gehen die Türen in unterschiedlichen Abständen auf und zu.


    Läßt sich also prima fuer alles was sich bewegt verwenden.


    Gruß

    Michael

    Motivation lebt von Anerkennung, Anregung und Kritik

    (unbekannt)


    EEP 6.1

    EEP 15.1 Expert(x64), EEP 16.0 Expert(x64), Patch 3
    PC: AMD Phenom(tm) II X4 955 Processor 3.20 GHz 16,00 GB 64-Bit WIN10 Pro,1903.18362.418, Grafikkarte: AMD Radeon HD 6700
    Laptop: Intel(R) Core(TM) i7-6700HQ CPU 2.6GHz 2.59GHz 16,00 GB 64-Bit WIN10 Pro,1903.18362.418, Grafikkarte: Intel(R) HD Graphics 530, NVIDIA GeForce GTX 960M

  • Hier ist ein Beispielskript für die MS2 Aufzüge aus dem Set V70NMS20003. Es enthält die Immobilien IDs, welche petzifun auf seiner Anlage hat. Die muss man im Bedarfsfall für die eigene Anlage anpassen. Das Skript lässt alle aufgelisteten Fahrstühle zufällig auf und ab fahren. An beiden Endpositionen pausiert der Fahrstuhl eine zufällig definierte Weile (zwischen 20 und 80 Sekunden) bei geöffneten Türen.


    Unter "Kostenfrei" habe ich eine kleine Beispielanlage mit drei automatisch agierenden Aufzügen (und sonst nichts weiter!)

    Hallo Goetz!


    Sehr schönes Script, welches ich eins zu eins übernommen habe und siehe da es klappt so wie ich es mir vorgestellt habe...

    Ein Interessante Programmierung... Ist neu für mich ... muss ich mich noch reinfuchsen...


    Vielen Dank dafür


    lg

    Dirk aka Petzifun

    LG aus Hannover

    Petzifun aka Dirk


    EEP: v16 Patch3 // v15 Patch1 // v14 .1 Patch2 Plugin 1 // v13.2 (Update 2) // v6.1 Classic

    Tools: Tauschmanger // Modellkonverter // Zugexplorer // Modellexplorer // Modellkatalog

    OS: MS Windows 10 Professional 64bit Insider Skip-Ahead Preview Version Build 19035 (vb_release) (21H1)

    Rechner: Prozessor Intel(R) Core(TM) i7-6700K CPU@4,0GHz // RAM: 32GB // HD: SSD 250GB System HDD 3+4TB Daten gespiegelt // Grafik: NVIDIA Dual GeForce GTX-1060 6GB RAM