Mobb Geschrieben 2. Dezember 2024 Geschrieben 2. Dezember 2024 Hallo, ich bin ganz neu und habe folgende Frage: Ich habe eine kleine Abstellanlage mit 3 Gleisen (51-53). Darauf stelle ich verschiedene Loks ab. Wenn ich am nächsten Tag das Programm wieder öffne, will ich wissen, welche Lok z.B. auf Gleis 51 steht, damit ich sie zum weiteren Verlauf bewegen kann. 1. Welche Lok steht auf dem Gleis? 2. Wenn ich sie starte, ist es besser vorwärts oder rückwärts, oder wie weiß ich in welche Richtung sie fahren will? Wenn ich einfach nur sage, setze die Geschwindigkeit auf 0, dann erhalte ich folgende Fehlermeldung: 'Attempt to index a nil value' - womit er ja Recht hat, denn ich habe keine Lok angegeben, da ich den Namen der Lok nicht kenne. Mit dem blauen Taster kann ich die Lok weiter fahren von einem Gleiskontakt zum anderen, aber alle weitere Optionen schmeissen die Fehlermeldung raus. Aussenrum baue ich mir eine repeat/until oder while Schleife, mit der ich die Loks auf Grund von einer Zufallsvariable abrufe, deshalb ist lua vermutlich die bessere Lösung. t01.mbp
RoniHB Geschrieben 2. Dezember 2024 Geschrieben 2. Dezember 2024 (bearbeitet) Hallo @Mobb, so ganz ist mir nicht klar, was du vorhast, aber hier mal ein paar Denkanstöße: vor 1 Stunde schrieb Mobb: will ich wissen, welche Lok z.B. auf Gleis 51 steht, damit ich sie zum weiteren Verlauf bewegen kann. starte einfach die Lok, die auf dem Gleis 51 steht. vor 1 Stunde schrieb Mobb: Wenn ich sie starte, ist es besser vorwärts oder rückwärts, oder wie weiß ich in welche Richtung sie fahren will? Setze die Geschwindigkeit relativ zur Fahrtrichtung. vor 1 Stunde schrieb Mobb: Aussenrum baue ich mir eine repeat/until oder while Schleife, mit der ich die Loks auf Grund eins nach dem anderen erstmal 1 und 2 lösen. vor 1 Stunde schrieb Mobb: deshalb ist lua vermutlich die bessere Lösung. Nein, das geht auch mit der grafischen EV. Du hast beim Gleiskontakt 53 2 Kontakte übereinander liegen. LG Ronald Bearbeitet 2. Dezember 2024 von RoniHB
Goetz Geschrieben 2. Dezember 2024 Geschrieben 2. Dezember 2024 Hallo Mobb, vor 2 Stunden schrieb Mobb: ich habe keine Lok angegeben, da ich den Namen der Lok nicht kenne. Du nicht, aber die EV kennt ihn. An jedem Ereignis, auf das du in der EV reagierst, ist jemand beteiligt. Wenn ein Fahrzeug einen Gleiskontakt betritt, dann gibt es in diesem Ereignis zwei beteiligte Objekte. Diese kannst du als "Auslöser" ansprechen: Wenn es wie in diesem Fall mehrere Auslöser gibt, dann findest du dort, wo jetzt [Leer] steht, eine Auswahlliste. Hier musst du den gewünschten Auslöser wählen. Im Beispiel wäre das dann "Fahrzeug". Viele Grüße Götz
Mobb Geschrieben 3. Dezember 2024 Autor Geschrieben 3. Dezember 2024 Hi RoniHB bei einer automatichen Steuerung nach dem Starten von 3d-mbs weiß ich ja nicht, welche Lok dort steht, denn ich will ja einen Automatik-Betrieb für diese Sache ablaufen lassen. Und falls ich mal eine andere Lok drauf stelle, soll sie automatisch erkannt werden und eben anders herum fahren. Jetzt probiere ich die ganze Zeit rum auch mit Fahrtrichtungswechsel und verschiedenen Ausgaben, aber die Fahrtrichtung wird nicht gewechselt. Übrigens: Goetz: Falls ich das Teil so angebe, wie beschrieben, erhalte ich folgende Fehlermeldung: 'Unknown method or property name drivingDirection' - funktioniert also auch nicht. Wa mache ich falsch? t01.mbp
Goetz Geschrieben 3. Dezember 2024 Geschrieben 3. Dezember 2024 vor 1 Minute schrieb Mobb: Wa mache ich falsch? Du hast nach "Auslöser" nicht in der Auswahlliste auf Fahrzeug umgeschaltet. Der Gleiskontakt hat keine Fahrtrichtung, sondern das Fahrzeug. Da beide Objekte Auslöser des Ereignisses "Fahrzeug betritt Gleiskontakt" sind, musst du spezifizieren, welches der Objekte du ansprechen willst.
Goetz Geschrieben 3. Dezember 2024 Geschrieben 3. Dezember 2024 (bearbeitet) Diese Beispielanlage hilft dir eventuell zum besseren Verständnis: Lok auf Kontakt ansprechen.mbp Viele Grüße Götz Bearbeitet 3. Dezember 2024 von Goetz Korrekturen
Mobb Geschrieben 5. Dezember 2024 Autor Geschrieben 5. Dezember 2024 @Goetz Ich habe noch einige Fragen, aber die ersten: Wie wird die Auswahl des Gleises in z.B. einem Textfeld angezeigt? Und was muss ich dazu alles machen? Und was ist der Unterschied zwischen einer Objekt- und Modul-Variable? Sind beide globale Variablen? Viele Grüße
Goetz Geschrieben 5. Dezember 2024 Geschrieben 5. Dezember 2024 vor 37 Minuten schrieb Mobb: Wie wird die Auswahl des Gleises in z.B. einem Textfeld angezeigt? Der Name des Gleises ist eine Eigenschaft des Objekts. Du kannst dem Textfeld dieses Objekteigenschaft als Inhalt zuweisen: vor 41 Minuten schrieb Mobb: Sind beide globale Variablen? Ja, beide sind global. Die Modulvariable legst du im Ereignismodul an, die Objektvariable in einem Objekt. Das macht nur organisatorisch einen Unterschied. Wenn Objekte sich individuelle Werte unter demselben Namen merken sollen, dann ist es praktischer diese Werte im Objekt mitzuführen. Geht es um allgemeine Werte, dann sind sie im Ereignismodul besser aufgehoben. Die Ordner in der linken Spalte des EV Fensters werden als Module bezeichnet. Viele Grüße Götz
Mobb Geschrieben 22. Dezember 2024 Autor Geschrieben 22. Dezember 2024 @Goetz Hallo, ich bin es mal wieder. Danke für Deine Hilfe bzgl der Rangierfahrten - ich habe sie mal 'Fahrt aus Wartegleis und zurück' benannt. Das funktioniert alles, auch wenn ich die Zufallszahl nun anders ermittle. Mein nächstes Problem ist Folgendes: Ich habe zwei Wagen auf Gleis 1 stehen - dort wo die vielen Gleiskontakte sind Bei einmaligem Betätigen des roten Tasters soll eine der drei Loks kommen, die beiden Wagen ankuppeln und eine Runde drehen. Warum bremst die Lok vor Kontakt 5x? Am Signal S3 wird der Inhalt von 'AktGleis' in 'LetztesGleis' kopiert und erneut eine neue Zufallszahl generiert, deren Inhalt in 'AktGleis' gespeichert wird. Nun stelle ich es mir so vor: Sind 'AktGleis' und 'LetztesGleis' gleich und der Schalter noch auf 'an', so fährt der Zug eine weitere Runde Sind die beiden Variablen unterschiedlich, so fährt der Zug auf Gleis 1, kuppelt ab und die neue Lok kuppelt an und fährt dann die Runde Und das Ganze so lange, wie der rote Taster auf an steht. Stelle ich den roten Taster auf aus, wird die Runde beendet, Lok kuppelt ab und fährt in ihr Gleis Auf dem Ring fährt der Zug - das ist okay Ich habe noch ein paar Ausgaben eingebaut zum Prüfen. Meiner Meinung nach wäre eine 'while'- bzw. 'until'-Schleife ideal für die Lösung 1. Kann ich das auch mit weniger Kontakten lösen? 2. Wie kann ich eine Funktion von verschiedenen Stellen aus aufrufen, z.B. Generieren der Zufallszahl? 3. Manches Mal kann ich eine Fahrstraße nicht schalten und weiß nicht warum? 4. Wenn ich in der EV ein Script anlege an oberster Stelle - wie kann ich darauf zugriefen - oder geht das alles anders? 5. Ein Handbuch gibt es nicht für das Programm? Danke für die Antwort t07.mbp
Goetz Geschrieben 22. Dezember 2024 Geschrieben 22. Dezember 2024 vor 1 Stunde schrieb Mobb: Meiner Meinung nach wäre eine 'while'- bzw. 'until'-Schleife ideal für die Lösung Bevor ich mich mit deiner Anlage auseinandersetze ... While und Until Schleifen eignen sich nur für Programme, die eigenständig und unabhängig laufen. Weil ein Programm in der Schleife verbleibt, bis die Bedingung erfüllt ist. Die EV soll Teilaufgaben erledigen, während der ganze Verkehr weiterläuft. Verkehr, der parallel vielleicht auch noch die Erledigung andere Teilaufgaben erfordert. Deshalb ist das für eine Steuerungslogik (wie sie hier benötigt wird) kein guter Ansatz. vor 1 Stunde schrieb Mobb: Ein Handbuch gibt es nicht für das Programm? Doch. Es nennt sich Wiki und du findest es oben in der Kopfzeile, gleich rechts neben "Forum" Viele Grüße Götz
Goetz Geschrieben 22. Dezember 2024 Geschrieben 22. Dezember 2024 (bearbeitet) vor 2 Stunden schrieb Mobb: Warum bremst die Lok vor Kontakt 5x? Weil in den Eigenschaften des Kontakts 5x "Abbremsen auf 0 km/h" aktiviert ist. Außerdem hält die Lok vorher schon am Signal S1, weil dort für die Stellung Hp00 beide Fahrtrichtungen aktiviert sind. Wenn ich die Lok dann händisch weiterschicke und sie am Kontakt 5x ankommt, stoppt sie und fährt in umgekehrter Richtung wieder los. Sie koppelt nicht an den Waggons an. So weit kommt sie gar nicht. Nachdem ich diese beiden Punkte korrigiert habe, ändert die Lok am Kontakt 5x abrupt ihre Richtung und fährt gleich zurück ins Wartegleis. Angekuppelt wird auch jetzt noch nicht. Ich habe mich noch nicht mit deiner ganzen EV auseinandergesetzt. Aber folgender Punkt fiel mir da auf: Wenn du zwei Bedingungen mit einem oder verknüpfst, dann reicht die Erfüllung einer der beiden Bedingungen, damit das Ergebnis wahr ist. Das bedeutet für das untere Feld (= nicht erfüllt), dass weder die eine, noch die andere Bedingung erfüllt ist. Der Schalter steht auf true und beide Variablen enthalten dasselbe Gleis. Das ist genau der Zustand, den du direkt darunter noch einmal prüfst. vor 2 Stunden schrieb Mobb: Kann ich das auch mit weniger Kontakten lösen? Sehr wahrscheinlich, ja. vor 2 Stunden schrieb Mobb: Wie kann ich eine Funktion von verschiedenen Stellen aus aufrufen Für diesen Zweck gibt es das "benutzerdefinierte Ereignis". Das ist im Grunde eine Funktion, die du an beliebiger anderer Stelle aufrufen kannst. vor 2 Stunden schrieb Mobb: Manches Mal kann ich eine Fahrstraße nicht schalten und weiß nicht warum? Fahrstraßen lassen sich nicht aktivieren, wenn sie entweder mit einer anderen aktiven Fahrstraße im Konflikt stehen oder wenn sich irgendwo auf dem Weg Rollmaterial befindet. "Manches Mal" ist als Beschreibung zu dürftig um zu erkennen, was genau in deinem Fall der Grund ist. Du musst bitte genauer beobachten, welche Fahrstraße es ist und wie die aktuelle Konstellation auf der Anlage zu diesem Zeitpunkt aussieht. vor 2 Stunden schrieb Mobb: Wenn ich in der EV ein Script anlege an oberster Stelle - wie kann ich darauf zugriefen Du kannst in diesem Skript Funktionen anlegen, die du an anderer Stelle in der EV (wiederum in Lua) ausführst. Oder du nimmst stattdessen das erwähnte benutzerdefinierte Ereignis. Das lässt sich auch in der grafischen EV auslösen. Viele Grüße Götz P.S.: Ich würde mich freuen, wenn du mich nicht wieder 3 Wochen auf eine Reaktion warten lässt. Bearbeitet 22. Dezember 2024 von Goetz
Mobb Geschrieben 28. Dezember 2024 Autor Geschrieben 28. Dezember 2024 @Goetz Danke für die Antworten. Ich bin erst heute dazu gekommen ind probiere weiter. Ich bin echt froh und dankbar, so einen kompetenten Helfer zu haben. Dir erstmal guten Rutsch und ich versuche, so schnell wie möglich weiterzumachen.
Goetz Geschrieben 28. Dezember 2024 Geschrieben 28. Dezember 2024 vor 32 Minuten schrieb Mobb: ich versuche, so schnell wie möglich weiterzumachen. Sorry Mobb, so war das nicht gemeint. Ich tu mich nur schwer mit Menschen, die sich erst dann wieder melden, wenn sie eine neue Frage haben. Weil mir dann bis zu dem Tag die Rückmeldung fehlt, ob die letzte Antwort hilfreich war oder nicht. Viele Grüße Götz
Mobb Geschrieben 28. Dezember 2024 Autor Geschrieben 28. Dezember 2024 @Goetz Hallo, ich bin es mal wieder. Danke für Deine Hilfe Die beiden funktionieren nach der Änderung - sorry, dass ich das nicht selbst gesehen habe - aber da merkt man die Kenntnis und Erfahrung Weil in den Eigenschaften des Kontakts 5x "Abbremsen auf 0 km/h" aktiviert ist. Außerdem hält die Lok vorher schon am Signal S1, weil dort für die Stellung Hp00 beide Fahrtrichtungen aktiviert sind. Ich habe eine Funktion 'Zufallszahl' geschrieben, die ich aufrufen kann und sie funktioniert auch bei der blauen Taste. Weitere Fragen: 1. Mein nächstes Problem ist, falls ich die rote Taste betätige dass, wenn eine Lok aus dem 'Depot' herausfährt, sie bis zum Kontakt '5x' kommt und dann zurückfahren will? Warum? Denn die Variable 'LokAusWartegleisUndZurueck' steht auf 'false' und so sollte meiner Meinung nach beim Kontakt '5x' der else-Zweig zum Zug kommen. Die Ausgabe stimmt, aber die Lok fährt trotzdem zurück. Dann fährt die Lok bis zum Signal 'S1'. Was mache ich da falsch? (t11_problem1.jpg) Denn eigentlich sollte die Lok die Wagen ankuppeln und dann losfahren. Also wie komme ich über den '5x' drüber? 2. Falls ich dann über den '5x' drüber bin, wie schaffe ich es, dass egal welche Lok - welcher Länge auch immer - die Wagen ankuppelt und losfährt? Mit dem 'S3' Signal-Kontakt beschäftige ich mich wieder, wenn das Ankuppeln und Losfahren funtioniert. Danke für die Antwort -------------------------------------------- t11.mbp
Goetz Geschrieben 28. Dezember 2024 Geschrieben 28. Dezember 2024 vor 13 Minuten schrieb Mobb: Die Ausgabe stimmt, aber die Lok fährt trotzdem zurück. Das tut sie, weil du ihr eine positive Geschwindigkeit zuweist und die Lok zum Signal S1 hin ausgerichtet ist. Wenn du die Option "Relativ zur Fahrtrichtung" aktivierst, behält eine Lok ihre letzte Fahrtrichtung bei, wenn du einen positiven Wert einträgst. Ein negativer Wert würde die Fahrtrichtung umkehren. Das erspart dir die Prüfung, ob du für die Fortsetzung der Fahrt eine positive oder negative Geschwindigkeit bräuchtest.
Goetz Geschrieben 28. Dezember 2024 Geschrieben 28. Dezember 2024 (bearbeitet) vor 47 Minuten schrieb Mobb: Falls ich dann über den '5x' drüber bin, wie schaffe ich es, dass egal welche Lok - welcher Länge auch immer - die Wagen ankuppelt und losfährt? Da würde ich folgenden Weg empfehlen: Schmeiß beim Kontakt 5m alles raus, was die Lok beeinflusst! Die Lok stoppt selbständig, sobald sie die Waggons berührt. In der EV kannst du auf das Ereignis "Zug/Fahrzeug stoppt" reagieren. Damit das nur für die Rangierfahrt (einer beliebigen Lok!) gilt, gib im Ereignis ein, dass es für alle Loks mit einem Schlagwort (z.B. "Ankuppeln") gelten soll. Dieses Schlagwort kannst du der Lok im Ereignis "Gleiskontakt 5x wird betreten" (wie eine erweiterte Variable) zuweisen. Im Ereignis musst du nur sagen, dass die auslösende Lok mit negativer Geschwindigkeit relativ zur letzten Fahrtrichtung losfahren soll. Und dann natürlich das Schlagwort aus dieser Lok löschen, damit beim nächsten Stopp nichts ungewolltes passiert. In dieser Anlage habe ich die vorgeschlagenen Änderungen vorgenommen: t11 Korrekturen.mbp Bearbeitet 28. Dezember 2024 von Goetz Anlage angehängt
Mobb Geschrieben 28. Dezember 2024 Autor Geschrieben 28. Dezember 2024 @Goetz Hallo, das mit dem Haken bei 'Relativ zur Fahrtrichtung' funktioniert Den Kontakt '5m' habe ich mal in die Wiese gesetzt, der kann nichts mehr falsch machen. In '5x' habe ich eine erweiterte Variable gesetzt, unter Schlagwörter/Variablen bei der Lok sieht es für mich so aus, als wäre das Schlagwort 'Ankuppeln' gesetzt. Das Ereignis 'Zug/Fahrzeug stoppt' funktioniert aber nicht wie gewünscht, da passiert nämlich nichts. Das sollte ja auch funktionieren, wenn die Lok händisch gefahren wird. Danke für die Antwort --------------------------------------------
Goetz Geschrieben 28. Dezember 2024 Geschrieben 28. Dezember 2024 vor 5 Minuten schrieb Mobb: Das Ereignis 'Zug/Fahrzeug stoppt' funktioniert aber nicht wie gewünscht, da passiert nämlich nichts. ... die Ursache dafür kann ich leider nicht erkennen, solange du mir das Ereignis nicht zeigst.
Goetz Geschrieben 28. Dezember 2024 Geschrieben 28. Dezember 2024 So muss die Zuweisung des Schlagwortes aussehen: und so das Ereignis, welches auf eine Lok mit diesem Schlagwort reagiert sobald diese stoppt: Die Verzögerung ist nicht erforderlich. Ich fand es nur ansehnlicher, wenn die Lok nicht sofort wieder anfährt. Das Ereignis wird auch dann ausgelöst, wenn du die Lok selber bewegst, indem du z.B. den Tacho regelst. Wenn du die Lok händisch auf dem Gleis schiebst, wird das nicht als Fahrt angesehen und somit gibt es dann auch kein Ereignis "Lok stoppt". Aber das wirst du sicher nicht mit "händisch fahren" gemeint haben.
Mobb Geschrieben 28. Dezember 2024 Autor Geschrieben 28. Dezember 2024 @Goetz Hallo, das mit dem Schlagwort habe ich korrigiert. Jedoch kommt es mir so vor, dass das Teil 'Zug/Fahrzeug stoppt' überhaupt nicht ausgeführt wird, denn meine Ausgabe erscheint nicht. Danke für die Antwort t11.mbp
Goetz Geschrieben 28. Dezember 2024 Geschrieben 28. Dezember 2024 vor 25 Minuten schrieb Mobb: Jedoch kommt es mir so vor, dass das Teil 'Zug/Fahrzeug stoppt' überhaupt nicht ausgeführt wird Der Grund scheint mir zu sein, dass deine Lok (von früheren Versuchen?) noch eine Variable "Ankuppeln" hat, die ein Boolean (wahr/falsch) enthält. Deshalb scheitert die Zuweisung eines Schlagwortes mit demselben Namen. Wenn du die falsche Variable aus der Lok löscht, sollte es funktionieren.
Mobb Geschrieben 28. Dezember 2024 Autor Geschrieben 28. Dezember 2024 @Goetz Hallo, ich habe die Variable rausgelöscht - aber es funktioniert noch nicht. Ich denke, wie lassen es für heute. Ich wünsche Dir einen schönen Abend und falls Du noch eine Idee hast, so melde Dich bitte. Danke t11.mbp
Goetz Geschrieben 28. Dezember 2024 Geschrieben 28. Dezember 2024 vor 16 Minuten schrieb Mobb: falls Du noch eine Idee hast, so melde Dich bitte. Das mach ich gerne, Mobb. Erstens hat das Schlagwort im Modul Ereignisse nichts verloren! Und zweitens musst du bei der Lok den Namen der Variablen als Text angeben und nicht versuchen, ihn aus einer Modulvariablen zu holen, die gar keinen Inhalt hat (weil sie selbst als Schlagwort deklariert ist). (Die Fettschrift in meiner Erklärung soll bitte nur der Hervorhebung dienen.) Viele Grüße Götz
Mobb Geschrieben 29. Dezember 2024 Autor Geschrieben 29. Dezember 2024 @Goetz Das hat funktioniert - super. Vielen Dank für Deine Mühe. Ich melde mich wieder. Viele Grüße Werner
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen.
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden