Mobb Geschrieben 2. Dezember Geschrieben 2. Dezember 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 Geschrieben 2. Dezember (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 von RoniHB
Goetz Geschrieben 2. Dezember Geschrieben 2. Dezember 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 Autor Geschrieben 3. Dezember 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 Geschrieben 3. Dezember 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 Geschrieben 3. Dezember (bearbeitet) Diese Beispielanlage hilft dir eventuell zum besseren Verständnis: Lok auf Kontakt ansprechen.mbp Viele Grüße Götz Bearbeitet 3. Dezember von Goetz Korrekturen
Mobb Geschrieben 5. Dezember Autor Geschrieben 5. Dezember @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 Geschrieben 5. Dezember 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 vor 20 Stunden Autor Geschrieben vor 20 Stunden @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 vor 18 Stunden Geschrieben vor 18 Stunden 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 vor 17 Stunden Geschrieben vor 17 Stunden (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 vor 17 Stunden von Goetz
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