Warum 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.
  • Nur mal eine neugierige Newbie Frage in die Runde dieses Threads, da dieser praktisch bei jedem Forumsaufruf in den ungelesenen Beiträgen auftaucht:

    Was ist das Ziel dieses Threads? Soll Trend in einer der nächsten EEP Versionen Lua zugunsten irgendeiner anderen Steuerung aus dem Programm werfen? Ich fange gerade an, mir erste Luakenntnisse anzueignen, aber das könnte ich mir ja dann sparen.

    Board: Asus Gigabyte P55-UD3, Intel Core i7 - 860 @ 2,8 GHz, 16GB DDR3 RAM Dual Channel,

    Geforce GTX 960 m. 4 GB RAM, Windows 7 - 64 Bit

    EEP 15.1 (Patch August 2019), EEP Modellkatalog, EEP Zug-Explorer

  • das könnte ich mir ja dann sparen.

    Lua lernen ist keine Verschwendung.


    In der nächsten EEP-Version wird es gewiss noch keine grafische Alternative zu Lua geben. Und in der übernächsten auch nicht. Eine Entwicklung würde mehr Zeit brauchen.


    Und das eigentliche Problem ist nicht die Sprache Lua, sondern der generelle Umgang mit Logik. Daran scheitern viele. Egal, ob sie Schaltkringel, Lua, PlanEx oder - bei der richtigen Modellbahn - TrainController oder Rocrail benutzen.

    "... this poltroonish loiter-sack. This wiffle-waffle fustylugs who doesn't have a sense of a ninnyhammer, you gilli-wet-foot fribble!"

    - Stephen Colbert -

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

  • Und das eigentliche Problem ist nicht die Sprache Lua, sondern der generelle Umgang mit Logik. Daran scheitern viele.

    Die Logik ist der Zusammenhang zwischen Ursache und Wirkung.


    Nicht die Logik an sich macht Probleme, es ist die Logik einer Programmiersprache in ihrer abstrakten Darstellung. Das Ganze wird dadurch erschwert, dass es nur 0 und 1 gibt, das widerspricht unserer täglichen Erfahrung.


    Logisch ist, wenn (if) ich am Schalter drücke dann (then) geht das Licht an,

    Wenn ich also nicht drücke, dann dunkel, wer hat damit Probleme?


    Fällt ein Ziegel auf meine Zehen ist es logisch das es weh tut, ein Programm kann aber virtuell genau das Gegenteil bewirken und hier endet die gelernte Logik.


    Das 1+1=2 ist erscheint uns logisch, dass ein krabüxel+ zwei knartüfel aber auch 2 ist und das Licht einschaltet "erscheint" uns nicht logisch.

    Seh ich aber die Befehle von krabüxel; knartüfel grafisch dargestellt in zusammenhängenden Abläufen, so sehe ich das, was sich ein Programmierer in abstrakter Form vorstellen kann

    und die Funktion wird klar.


    viele Grüße Max

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

  • Logisch ist, wenn (if) ich am Schalter drücke dann (then) geht das Licht an,

    Wenn ich also nicht drücke, dann dunkel, wer hat damit Probleme?

    Der Logiker hat damit Probleme.

    Denn wenn du den Schalter nicht betätigst, dann bleibt das Licht aus.

    Ob es dann auch dunkel ist, hängt von weiteren Faktoren ab.


    Und damit ist dein Beispiel perfekt geeignet, um das klassische Logik-Problem vieler Menschen zu demonstrieren:


    Es geht nie um eine einzelne Bedingung. Sondern immer um die richtige Kombination mehrerer Bedingungen. Und viele Menschen haben das Problem, das überhaupt zu erkennen. Die scheitern schon an der Wechselschaltung zweier Lichtschalter, wenn sie die auf dem Brett und mit Drähten aufbauen sollen.


    Das ist kein Makel. Aber es ist eine Tatsache.

    "... this poltroonish loiter-sack. This wiffle-waffle fustylugs who doesn't have a sense of a ninnyhammer, you gilli-wet-foot fribble!"

    - Stephen Colbert -

  • ... und

    Logisch ist, wenn (if) ich am Schalter drücke dann (then) geht das Licht an,

    ist schon mal "unzulänglich" formuliert,

    denn wenn das Licht AN war, geht es aus, bzw. fehlt die Taster/Schalter-DEFINITION :at_1::aa_1::ac_1:


    und wenn "gleichzeitig" ein anderer den Wechselschalter betätigt,

    passiert das, was der letzte wollte, oder auch nicht.:ao_1:


    Klugscheiss... aus


    :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:

  • Die scheitern schon an der Wechselschaltung zweier Lichtschalter

    Für eine Wechselschaltung braucht man 2 korrespondierende, elektrische Leiter (Drähte) , bei einer Sparwechselschaltung braucht man nur einen korrespondierenden elektrischen Leiter (Draht). Profis arbeiten mit der Sparwechselschaltung, nur mal so am Rande. :be_1:

    Ach ja Lua ist für mich ein Fremdwort, aber zum Schluss passt es fast immer, wenn auch nicht so kurz, wie bei den Profis. Dafür waren meine Steuerstrecken schön kurz. :af_1:

    MfG. Jörg
    Notebook: i7-6700K, 4[8]x4.0 GHz, 32GB RAM DDR4, NVIDIA GTX 980M 8GB, Windows 10, 64-Bit
    installiert: EEP15.1 Patch2 mit Plugin 1; EEP16.0 Patch3

    Zusatzprogramme: ResourcenSwitcher2

  • ... und

    Logisch ist, wenn (if) ich am Schalter drücke dann (then) geht das Licht an,

    ist schon mal "unzulänglich" formuliert,

    denn wenn das Licht AN war, geht es aus, bzw. fehlt die Taster/Schalter-DEFINITION :at_1::aa_1::ac_1:


    :aq_1:

    Nein, denn der zweite Satz, den Du raus geschnitten hast, sagt: wenn nicht - dann dunkel, ob Schalter oder Taster

    es kann also nicht "An" sein.


    viele Grüße Max

  • Guten Abend an Allen,


    selbstverständlich ist Lua für die Meisten unter uns ein Fremdwort (oder Fremdsprache) . Aber wie jede Fremdsprache kann auch Lua gelernt werden. Man muss es nur lernen wollen.


    Aber das Schöne an EEP ist dass man jederzeit von Anfang an und auch später an jedem Zeitpunkt selber seine eigene Anlagensteuereung auswählen kann. Es sei über Kontaktpunkte, Steuerstrecken oder Lua (mit oder ohne PlanEx). Aber jede Steuerung fordert ein gewisses Logik vom Anlagenbauer und jede Steuerung hat ihre Vor- und Nachteile.


    Vor allem ist es wichtig zu wissen, dass eine grafische Bedienoberfläche für Lua noch in den Sternen steht und dass NIEMAND hier gezwungen wird eine bestimmte Anlagensteuerung zu benutzen.


    Viele Grüße, 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

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

  • wenn nicht - dann dunkel

    das ist aber deine Schlußfolgerung aus der (ersten) If-Bedingung,

    das wußte man eben vorher NICHT


    das wollen wir/ich aber hier nicht "ernsthaft" ausdiskutieren


    vielleicht wird hierdurch auch die "Problematik" der "Logik" oder Programmierung deutlich


    ich meine das hier eher allgemein und nicht persönlich :bg_1:


    :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:

  • wenn nicht - dann dunkel

    das ist aber deine Schlußfolgerung aus der (ersten) If-Bedingung,

    das wußte man eben vorher NICHT


    :aq_1:

    Nicht meine Schlussfolgerung sondern ein Zustand.

    Aber ich sehe mein Beispiel ist schwer zu verstehen,

    probier das mit dem Ziegelstein, dann sind Zustände und Eigenschaften

    als Erfahrungen der Logik bessere nachvollziehbar.


    viele Grüße Max

  • Hi,


    ich habe vor einiger Zeit einmal George Boole => https://de.wikipedia.org/wiki/George_Boole verwiesen.

    Er hatte damals die sogenannt klassische Logik auf lediglich zwei Zustände reduziert, TRUE und FALSE,

    Sein tragendes Argument war, dass jedes Problem auf mehrere Glieder mit ja/Nein reduziert, schlussendlich zum richtigen Ergebnis des Gesamten führt.


    Darauf gründet die Boolesche Algebra, auf die jede Programmierung fusst.


    Wir hier beschäftigen uns z.Z. mit dem Thema, wie solches nun am einfachsten in EEP umzusetzen ist!

    Ich persönlich vertrete die These, dass das auf den Visuellen Eben viel effizienter und für ungeübte einfacher nachzubilden ist, als via Skripts, welche mitunter zu recht kryptischen und undurchschaubaren Gebilden führt...


    Ihr dürft mir glauben, ich weiss von was ich hier spreche, den auch mir fällt es oft schwer, solche Codes in Script zu durchschauen.


    Dazu ein einfaches Beispiel: Das ist in sich ein Funktionsblock, da dieser >1 Rückgabewert hat

    Das Ganze dient lediglich dazu, die Eingangs-Variablen den Ausgangs-Variablen entsprechend zuzuweisen.

    Es wird benutzt, um auf einer Tabelle eines Leitsystem, durch Auswahl die Alarme an die Operateure (8 Pers.) oder an das Piket (die gleichen 8Pers.) automatisch weiterleiten zu lassen.

    Was wird hiermit erreicht, und welchen Zustand unterbunden?

    Wie schnell könnt Ihr das tatsächlich entschlüsseln?

    Wenn Ihr es wünscht, kann ich das Ganze auch mal in FB zeigen.

    Dabei wird hier jedoch im Unterschied zu Lua anstelle von Integer eben mit BYTE Binär verfahren (16# = Hex)

    Das Prinzip jedoch sollten auch Lua-Texter durchaus lesen können.


    1. Variablentabelle die umfasst lediglich 2 Ein- und Aus-Gänge plus 2 Zwischenresultate.

    Habe nun alle Variablen auf Wunsch ausgetauscht!

    Class Identifire Type Initial Comment
    VAR_INPUT
    I_Operateur BYTE 16#00 set operator
    VAR_INPUT I_Piket
    BYTE 16#00 set emergency
    VAR Lk_Operateur BYTE 16#00 sel operator
    VAR Lk_Piket BYTE 16#00 sel emergency
    VAR_OUTPUT Q_Operateur BYTE 16#00 if operator
    VAR_OUTPUT Q_Piket BYTE 16#00 if emergency


    2. Hier das zugehörige Skript:

    Im Kopf (Header) finden sich alle Variablen ab 'ST' folgt der eigentliche Code

    (Dabei hier in Code, da der ST-Code sonst falsch formatiert erscheint)

    Ps.

    Beachtet bitte, dass hier die Operatoren "=" Gleich, ">" Grösser bedeuten und die Zuweisung mit ":=" geschrieben sind.

    Vielleicht hier noch eine Erklärung, warum das hier in BYTE geschrieben ist. Das liegt daran, dass so direkt die Booleschen Ausgänge Bit-Weise geschrieben werden können. So können zum Beispiel Anzeigelampen an den Ausgängen direkt den Status anzeigen.

    EEP v13.2 Patch 1, Plugin 1&2

    hat ein klein wenig Ahnung von System-Programmierung :bn_1:

    https://picload.org/image/dddgolpr/gueter.png


    Windows 10 Pro 64-Bit

    HP Compaq 8100 Elite CMT PC / Intel(R) Core(TM) i5 CPU 760 @ 2.93GHz RAM 12GB

    HP Prolient Debian 9.6

    GeForce GTX 1050 Ti 2 * 23" Wide LCD Monitor & 1*25" LCD

    The post was edited 7 times, last by Marino: 1. Einfügung 2. Formatierung korrigiert 3. Variablen Austausch ().

  • hi klioli,


    ich verstehe schon, was Du meinst. Das war aber eben durch das Leitsystem gegeben...


    Andererseits:

    Dazu gibt es in der Steuerungstechnik Konventionen

    1. Stelle I = Input, Q = Output, M = Merker (Global), Lokal oft ohne Vorzeichen wie eben auf unserem Leitsystem.

    2. x = BOOL, b = BYTE, w = WORD, r = REAL, i = INTEGER,

    und die Kombinierer dazu d = double , s = short, l = long
    darauf folgend 1. Zeichen Grossbuchstaben, bis 3 folgende Konsonanten und den letzten Konsonant.

    (Die Erfahrung hat gelehrt, dass gekürzte Worte durch die Konsonanten-folge besser erkennbar sind)

    Im Steuerungscode jedoch oft der Platz für das Ausschreiben der Variablen bei komplexen Rechnungen fehlt;

    insbesondere dann, wenn mehrere Argumente einer Funktion mitgegeben werden müssen.


    Deswegen hier: 1.Zeichen I, Q, ohne

    Oprt = Operator

    Spkt = Sonder Piket

    EEP v13.2 Patch 1, Plugin 1&2

    hat ein klein wenig Ahnung von System-Programmierung :bn_1:

    https://picload.org/image/dddgolpr/gueter.png


    Windows 10 Pro 64-Bit

    HP Compaq 8100 Elite CMT PC / Intel(R) Core(TM) i5 CPU 760 @ 2.93GHz RAM 12GB

    HP Prolient Debian 9.6

    GeForce GTX 1050 Ti 2 * 23" Wide LCD Monitor & 1*25" LCD

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

  • Wie schnell könnt Ihr das tatsächlich entschlüsseln?

    ich verstehe schon, was Du meinst. Das war aber eben durch das Leitsystem gegeben...

    Dein Beispiel hinkt dadurch etwas. Du willst doch damit demonstrieren, dass Codezeilen sich nicht so leicht durchschauen lassen wie eine grafische Darstellung. Aber ein guter Teil der Undurschaubarkeit wird hier - zumindest für technische Laien - allein durch die obskure Namensgebung verursacht,

  • Mal ne Frage: Sind wir hier in einem Programmiererforum oder in einem Modelleisenbahnsimulator-Forum. Langsam reicht's.


    BHG

    :co_k:


    Rechner i5-7500 3,4Ghz | RAM 16GB | GeForce GTX 1060 6GB | W10 Home 1903

    EEP10 - EEP13, EEP14, (EEP16)


    Gott hat dem Menschen die Zeit gegeben, aber von Eile hat er nichts gesagt.

    (wird Imru' al-Qais zugeschrieben)

  • Nö, mich interessiert nämlich immer noch das Ergebnis. Aber statt um den heissen Brei herumzureden wie man etwas machen kann sollte man vielleicht auf den Ursprung zurückkommen, und Marino sollte einmal zeigen wie er sich die grafische Oberfläche vorstellt, einfach damit man weiss worüber man redet, denn bisher habe ich nur nichtssagende Liniendiagramme gesehen. Und an Marino, bitte die beruflichen Scheuklappen ablegen und überlegen mit wem man es hier im Forum hauptsächlich zu tun hat.


    MfG BHG

    :co_k:


    Rechner i5-7500 3,4Ghz | RAM 16GB | GeForce GTX 1060 6GB | W10 Home 1903

    EEP10 - EEP13, EEP14, (EEP16)


    Gott hat dem Menschen die Zeit gegeben, aber von Eile hat er nichts gesagt.

    (wird Imru' al-Qais zugeschrieben)


  • Und nun sind wir hier angekommen:



    Das veranlasst mich zu folgenden Zitaten:

    was nutzen diese Ausführungen dem EEP-User der seine mit Liebe und Mühe erstellte EEP-Anlage mit einem lebhaften Betriebs-Ablauf ausstatten möchte?

    Sind wir hier in einem Programmiererforum oder in einem Modelleisenbahnsimulator-Forum.

    Marino, bitte die beruflichen Scheuklappen ablegen und überlegen mit wem man es hier im Forum hauptsächlich zu tun hat.

    bisher habe ich nur nichtssagende Liniendiagramme gesehen.


    ... und bei den Ausführungen in #151 und #153 versteh ich nur noch "Bahnhof", was wiederum zu einem EEP-Forum in gewissem Sinne passt.


    Schade um dieses an sich interessante Thema.

  • Hallo,


    mir würde es schon reichen wenn die Lua Code-Zeilen in einem Debugger schrittweise

    abgearbeitet werden könnten.

    Man könnte da leichter Fehler finden und das Resultat nach jeder abgearbeiteten Codezeile

    auf die Auswirkung überprüfen.

    Damit würde auch der gesamte Code leichter verständlich und man muss nicht immer um die Ecke denken.


    Ob die Programmierung mit grafischen Komponenten leichter wird, wage ich zu bezweifeln

    und da EEP ein grafisch stark beanspruchtes Programm ist, ist es nicht unbedingt von Vorteil, es auf diese Weise noch weiter aufzublähen.


    Viele Grüße

    Karl Heinz

    ,

    Benutzte Programme: EEP 16.0 Expert (x64), Patch 2, EEP 15.1 Expert(x64), Patch 2, PlugIn 1; PlanEx 3.1; PlanEx-Easy


    Notebook Dell Inspiron 7720; Intel Core(TM) i7 - 3630QM CPU 2,4/3,8 GHz; 8 GB RAM, nVidia GeForce GT 650 M
    Windows 10 Home - 64 Bit, Version 1909, Betriebssystembuild 18363.535