-
Gesamte Inhalte
6150 -
Benutzer seit
-
Letzter Besuch
Alle erstellten Inhalte von Goetz
-
So viel kann ich bislang (nach einem ersten ernsthaften Probelauf) sagen: Zweimal ist der Betrieb aus dem Ruder gelaufen und in beiden Fällen war der Grund identisch. Im Signal FSSig0010 war der benötigte Eintrag für den Zug leer. Ich habe die Testläufe im Video aufgezeichnet und dabei das Ereignsprotokoll neben der Anlage geöffnet. So konnte ich die Fehlermeldung sehen, dass beim verzögerten Aufruf von "Ein Signal mit Schlagwort BREMSSIGNAL schaltet" in Zeile 7 des Skripts ein leerer Index das Problem verursacht hat. Im Protokoll sah ich, dass Signal 10 das angesprochene Signal war. Beim zweiten Testlauf habe ich daher die Variablen von Signal 10 anzeigen lassen. Es dauerte diesmal wesentlich länger, bis derselbe Fehler auftrat. Aber der Fehler war dann identisch. Es gibt offenbar eine Konstellation, in der der Zugname im Signal 10 vorzeitig gelöscht wird. Ob ich mittels Aufzeichnung herausfinde, was genau diese Konstellation ist, muss ich schauen. Generell sind solche Aufzeichnungen sehr hilfreich, weil man so ein "was bisher geschah" verfügbar hat. (Aber da sage ich dir nichts Neues ) Anlagen schalten im Fehlerfall übrigens nur dann auf Pause, wenn das Ereignisprotokoll sichtbar ist. Andernfalls geht der Betrieb weiter, aber vermutlich unter falschen Bedingungen, weil der Rest des Fehler-verursachenden Skripts nicht mehr ausgeführt wurde. Ohne Ereignisprotokoll sieht man also möglicherweise nicht den eigentlichen Fehler, sondern Spätfolgen an anderer Stelle.
-
Klein, aber stilvoll
-
Jetzt habe ich mir das Beispiel angesehen und ich finde deinen Weg prima. Das ist eine saubere und verständliche Lösung Und die Anlage ist ein gutes Beispiel dafür, warum sich ein Umstieg auf V5 lohnt.
-
Niemand "fordert", Feuerfighter. Man gibt dir Tipps. Mehr nicht. Warum reagierst du darauf so überempfindlich? Du musst nichts an deinen Modellen ändern. Aber du kannst, wenn du magst.
-
Das glaube ich in diesem Fall weniger, FeuerFighter. Drei Reihen Ziegel unter dem Fenstersims sind zu wenig. Das ist keine Geschmacksfrage sondern eine Frage der richtigen Abmessungen. So ein Ziegelstein ist in der Regel ca. 7 Zentimeter hoch. Aber es ist natürlich Geschmacksache (und somit dir überlassen) ob man realistische Proportionen anstrebt oder nicht. Und die Hinweise sollten kein Grund für dich sein, dich mit dem Modellbau zurückzuhalten. Deine Modelle kommen doch gut an und sind populär. Nimm sie als nützliche Tipps an und entscheide dann für dich, ob du sie anwenden willst oder nicht.
-
kann ich nicht entdecken. Aber eine ungewöhnliche Anlage
-
Lua Abfrage, ob variable existiert?
Goetz antwortete auf HaNNoveraNers Thema in Fragen zur Steuerung
Vertrau mir, Thomas. Die einzelne Zeile, welche ich dir als Alternative genannt habe, macht genau dasselbe. -
Lua Abfrage, ob variable existiert?
Goetz antwortete auf HaNNoveraNers Thema in Fragen zur Steuerung
statt == nil nimm not local route=vehicle.variables["route"] if not fsignal.variables["R_Alle"] then fsrouten=fsignal.variables[route] else fsrouten=fsignal.variables["R_Alle"] end Aber das geht noch viel schicker: fsrouten = fsignal.variables["R_Alle"] or vehicle.variables["route"] fertig. Das nimmt "R_Alle", wenn es existiert und ansonsten "route" -
Lua Abfrage, ob variable existiert?
Goetz antwortete auf HaNNoveraNers Thema in Fragen zur Steuerung
Da hast du einen Dreher drin. Wenn deine Liste ungleich nil ist, also existiert, dann nimmst du die Route. Existiert sie hingegen nicht, dann nimmst du die Liste Schmeiß den Vergleich ganz raus. Der ist eh überflüssig. -
Lua Abfrage, ob variable existiert?
Goetz antwortete auf HaNNoveraNers Thema in Fragen zur Steuerung
Mit if if Liste1 then print("Die Liste existiert, kann aber leer sein") else print("Liste? Ich weiß von keiner Liste! Wer soll das sein?") end -
Lua Abfrage, ob variable existiert?
Goetz antwortete auf HaNNoveraNers Thema in Fragen zur Steuerung
Wenn die Liste existiert? Oder wenn Elemente in der Liste existieren? Das ist nämlich nicht dasselbe. Wenn du T1 und T2 löscht, dann existiert Liste1 als leere Liste. Willst du (in dem Glauben, alles sei vorhanden) auf T1 zugreifen, dann bekommst du die Fehlermeldung, dass dieses Feld nicht existiert. -
Dafür habe ich sehr viel Verständnis, Kutscher. Und du hast meine Hochachtung, weil du dich in deinem Alter weiter darum bemühst, solche Dinge zu lernen. Meine Hinweise waren nicht böse gemeint. Ich hoffe, dass du sie nicht als "Schimpf" empfunden hast. Ich möchte dich nur vor weiterem Frust bewahren. Das Lernen fällt schwerer, wenn man bei den eigenen Versuchen über solche "Unsauberkeiten" stolpert. Weil es nur schwer auseinanderzuhalten ist, ob man etwas falsch verstanden hat oder nur bei der Umsetzung unachtsam war.
-
Nach einem ersten Blick in die EV möchte ich meinen Rat wiederholen: Beginne mit einem Oval, an dem nur ein Signal steht. Und sonst nichts! In deinem Bahnhof Daudieck liegt ein Gleiskontakt mit Namen "Gleiskontakt stop Daudiek N". Soweit, so gut. Zu diesem Kontakt hast du ein Ereignis namens "Wiedmarschen" in deiner EV. Und in diesem Ereignis speicherst du den Zug, der den Kontakt in Daudieck überfährt, in einem Signal, welches in "Wiedmarschen" steht. Also weit weg, auf der gegenüberliegenden Seite der Anlage. Hier ist der EV Eintrag. Oben habe ich die beiden relevanten Hinweise eingerahmt. Im weiteren Verlauf hat die EV noch mehr Einträge, die unsinnig sind. "Fahrzeuggeschwindigkeit setzen" ist doppelt vorhanden. Einmal stoppt es alle Fahrzeuge auf der Anlage. Und einmal stoppt es nur das Fahrzeug, welches über den Kontakt gefahren ist. Der nachfolgende "Animation abspielen" Eintrag hat kein Zielobjekt und keine Animation. An der Stelle steigt die EV dann aus und führt die nachfolgenden Befehle nicht mehr aus. Die anschließende Verzögerung wird also nie gestartet. Deshalb kann dein Zug nicht wieder losfahren. Aber wenn sie gestartet würde, dann kämen darunter weitere Einträge, die "leer" sind. Das sind keine Folgen von Verständnisproblemen, Kutscher. Das ist einfach nur sehr unordentlich. Sorry, wenn ich dir das so unverblümt sage. Deshalb rate ich zum kleinen Oval mit nur einem Signal. Weil du dann nicht so leicht an solcher Unordnung scheiterst. Weil du die EV dann besser konzentriert angehen kannst.
-
Okay, dann schau ich mir heute mal die richtige an.
-
Ich hab jetzt erst im zweiten Anlauf gesehen, dass das Signal "Hauptsignal 1" ... ... zu einem halbfertigen Oval gehört, welches unter den beiden Modulen Aheim und Bedorf hindurch läuft. Das Signal "Ausfahrt Süd" hast du zwischen den Modulen Aheim und Bedorf aufgestellt Wozu soll es an dieser Stelle dienen? Dort stehen doch schon zwei Signale. Und wozu schwebt die kleine Dampflok über deinem Hauptsignal in der Luft? Warum speicherst du den Zug, der einen Kontakt in Aheim überfährt, im Signal unten auf dem kleinen (unfertigen) Oval? Sorry, Kutscher, aber du musst bitte erst einmal aufräumen. Und dann klar sagen, was du genau erreichen willst. So hat niemand eine Chance dir zu helfen.
-
Du hast so viele Signale auf dieser kleinen Anlage, dass du sie leider an manchen Stellen in deiner EV verwechselst. Den Zug speicherst du in "Hauptsignal 1". Aber die Ausfahrt bestimmst du mit dem Signal "Ausfahrt Süd". Und in diesem Signal suchst du dann auch den Zug. Aber da steht er nicht drin. Ich möchte dir empfehlen, das Prinzip zuerst mit einem einzigen Signal an einem Oval (ohne Bahnhof) auszuprobieren. Dann kannst du dich darauf konzentrieren die richtige Methode zu lernen und musst nicht frustriert aufgeben, nur weil du zwei Signale verwechselt hast. Du hast mit Aheim und Bedorf zu viele Baustellen auf einmal.
-
Ne, du hattest im Kontakt Stop0003 die Variable "signal" falsch benannt. Der hat stattdessen ein "o_signal" Das Schlagwort "Stop" war kein Hindernis. Der Kontakt wurde ja trotzdem erkannt und die EV hat reagiert. Um Groß/klein zu korrigieren, mach einen Zwischenschritt: Lösch einen Buchstaben. Oder füge einen hinzu. Und Schlagworte sowie Variablennamen immer aus der Auswahlliste nehmen! Dann sind Schreibfehler ausgeschlossen.
-
Die habe ich schon "studiert"
-
Kannst du machen. Aber ich denke, es wäre ausreichend die Suche nur jeweils einmal anzustoßen, wenn sich hinter dem Einfahrsignal etwas ändert. Wenn also ein dahinterliegender Abschnitt von jemandem verlassen wird. Denn vorher kann nichts frei werden. (Ausgenommen, du schmeißt händisch Züge runter.)
-
Soweit, so gut, Brummi. Den Teil kannst du bei bigrala auch als "erledigt" betrachten. Aber wenn ein Zug nicht einfahren durfte, dann muss der nächste Versuch durch die Ausfahrt eines anderen Zuges angestoßen werden. Und in diesem Augenblick will bigrala ganz vernünftig prüfen, welche Art Zug am Eingang wartet. Weil der ausfahrende Zug nicht zwingend das Gleis freigibt, auf welches der einfahrende Zug wartet.
-
Als Bedingung wählst du Und dann gibst du das Schlagwort einfach als Namen der Variablen an, die existieren soll Hier "einmal über Bande gespielt", weil das Schlagwort in dem Zug steht, den du im Einfahrsignal hinterlegt hast.
-
Objekte in andere Anlagen übernehmen?
Goetz antwortete auf HaNNoveraNers Thema in Fragen zur Planung
Ich hab's getestet (und gestaunt!) Eigenschaften, Schlagworte und Variablen werden - wie Andy sagt - mit gespeichert, wenn man einen Block in "eigene Modelle" speichert. Und Bezüge innerhalb des Blocks (= Moduls) ebenfalls. -
Das Wichtigste hat Timba alles schon exzellent beantwortet. Deshalb habe ich nur noch eine Anmerkung hierzu; Wenn du dieses eine Gleis nicht mit einem Namen versiehst, der es eindeutig identifiziert, dann musst du es trotzdem irgendwie deinem Code zuweisen. Für deine eigene Anlage triffst du diese Zuweisung, indem du das Gleis entweder direkt oder in einer Auswahlliste anklickst. Damit ist es eindeutig benannt, auch wenn der Name dir diese Eindeutigkeit nicht zeigt. Fertig Willst du einen generischen Code schreiben, dann musst du irgendwelche Faktoren haben, anhand derer du das richtige Gleis erkennen kannst. Diese Merkmale können alles mögliche sein: Eine Objektvariable, ein Schlagwort oder eine andere Eigenschaft (Position, Drehung ...) die du per Skript prüfen kannst. Mit diesem Merkmal kannst du zu Beginn alle Gleise abklappern und Objekte, welche deine Kriterien erfüllen, in eine Liste übertragen. Diese Liste wird die Objektadressen enthalten, nicht die Objektnamen. Jetzt hast du auf einer beliebigen Anlage die Gleise identifiziert, für die deine Aktion ausgeführt werden soll.
-
Nein, weder noch. Gleis ist nur eine Variable. Entscheidend ist, was du an diese Variable übergibst. In meinem Beispiel sind das die Objekte aus der Liste t. local t = {$("Gleis 1"), $("Gleis 2"), $("Gleis 3")} for i, Gleis in ipairs(t) do if #layout:getVehiclesOnTrack(Gleis) > 0 then Gleis.variables["GBS"].state = 2 else Gleis.variables["GBS"].state = 0 end end
-
Unter dem Plus in der EV findest du die Möglichkeit, ein generisches Skript anzulegen, welches einmal beim Start der Anlage ausgeführt wird. Alternativ kannst du unter "Ereignis" ein "benutzerdefiniertes Ereignis" anlegen, welches du dann z.B: auf Knopfdruck starten kannst. P.S.: Kann ich dich dazu animieren, Lua korrekt (also nicht in Versalien) zu schreiben?