MarkoP Geschrieben 15. Februar 2022 Geschrieben 15. Februar 2022 Um Züge unabhängig vom Signal/Gleiskontakt abfahren zu lassen, habe ich für meine Fahrstrassen aus dem Bahnhof heraus ein Schlagwort und eine Textvariable vergeben. Letztere beinhaltet den Gleisnamen des Abfahrtsgleises auf dem der betreffende Zug steht. Leider bekomme ich es nicht hin, den Ablauf generisch zu erstellen, so dass er unabhängig der aktivierten Fahrstrasse ist. Nach meinem Verständnis muss als Ereignis "Bei Aktivierung einer Fahrstrasse mit dem Schlagwort" ausgewählt werden. Als Ereignis "Geschwindigkeit setzen" in dem dann für Fahrzeuge alle und als Gleis der Auslöser (also die Fahrstrasse) mit der zugehörigen Textvariable angegeben werden. Hat jemand eine Idee?
jloos Geschrieben 16. Februar 2022 Geschrieben 16. Februar 2022 Hallo, ich weiß nicht genau ob ich Dein Problem verstanden habe. Deshalb hänge ich ein Beispiel an. Ich lege die Fahrstraßen in Variablen ab und frage die Zugposition per Gleiskontakt ab. Die Abfragestellennr. und die in jeder Lok gespeicherte LokNr. fragen dann in der Datenbank die Fahrstraße für die nächste Fahrstraße ab und speichert sie in der Lok. Am Bahnhof wird mittig am Bahnsteig gehalten. Der Lokname wird dabei im Signal gespeichert. Die in der Lok gespeicherte Wartezeit wird abgewartet und dann die Fahrstraße angefordert. Wird die Fahrstraße vom MBS freigegeben, schaltet das Signal auf Hp1 und der abgespeicherte Zug wird gestartet. Diese Form ist für diese kleine Beispielanlage vollkommen übertrieben, funktioniert aber auch noch mit 30 Zügen und 80 Fahrstraßen. Gruß Jürgen Beispiel Zugsteuerung und FS.mbp
MarkoP Geschrieben 18. Februar 2022 Autor Geschrieben 18. Februar 2022 Ich will nicht den Umweg über den Zug gehen, darum habe ich den Gleiskontakt direkt an eine Variable in der Fahrstrasse abgelegt und rufe ihn von da ab. Doch leider gibt mir die EV nur den folgenden Fehler aus mit dem ich aber nichts anfangen kann: bad argument #1 to 'for iterator' (table expected, got nil) Auch der Versuch den Gleisnamen in einer Variablen des Signals zu speichern und von dort abzurufen kommt zr gleichen Fehlermeldung. Kann es sein, das hier ein Fehler in der EV vorliegt wenn für das Fahrzeug "Alle Fahrzeuge" eingestellt ist? Wenn ich ein bestimmtes Fahrzeug auswähle gibt es keine Fehlermeldung, doch das Fahrezug fährt auch nicht ab.
EASY Geschrieben 18. Februar 2022 Geschrieben 18. Februar 2022 Hallo @MarkoP Deine Variable "Gleis" hat den falschen Typ. Das MBS erwartet ein "Objekt" (als Variablentyp) und Du hast als Typ "Text"... Gruß EASY
MarkoP Geschrieben 18. Februar 2022 Autor Geschrieben 18. Februar 2022 Wenn ich Objekt einstelle, dann kann ich aber nicht mehr auf den Inhalt der Objektvariablen zugreifen. Oder sehe ich das falsch?
EASY Geschrieben 19. Februar 2022 Geschrieben 19. Februar 2022 (bearbeitet) Hallo, vor 10 Stunden schrieb MarkoP: Wenn ich Objekt einstelle, dann kann ich aber nicht mehr auf den Inhalt der Objektvariablen zugreifen. Oder sehe ich das falsch? ... Du liegst total falsch. Es geht nur darum welchen Typ die Variable haben muß... ...um bei Deinem Beispiel mit dem Signal zu bleiben... ... geht. ... diesen EV Eintrag "zu Skript konvertieren" zeigt etwas deutlicher was diese Einträge auslösen... 1) Es wird eine Liste erstellt mit allen Fahrzeugen, die auf dem Gleis stehen welches in der Variablen "Gleis" vom Formsignel1 hinterlegt ist. 2) Bei allen Fahrzeugen dieser Liste, die einen Antrieb besitzen wird dieser eingeschaltet und die Geschwindigkeit 70 zugewiesen. Wenn bei 1) der Variablentyp falsch ist (Text anstatt Objekt) kann die Liste nicht erzeugt werden und das ergibt die von Dir erwähnte Fehlermeldung. Gruß EASY Bearbeitet 19. Februar 2022 von EASY
Hawkeye Geschrieben 19. Februar 2022 Geschrieben 19. Februar 2022 Hallo @MarkoP, vor 10 Stunden schrieb MarkoP: Wenn ich Objekt einstelle, dann kann ich aber nicht mehr auf den Inhalt der Objektvariablen zugreifen. Doch, wieso nicht. (Hat @EASY gerade erklärt.) 😊 vor 14 Stunden schrieb MarkoP: bad argument #1 to 'for iterator' (table expected, got nil) Diese Meldung kommt, wenn du eine Liste oder Table als „local“ z.B. in einer Bedingung definiert hast und an andere Stelle wiederverwenden möchtest. Die steht in anderen Codeteilen dann aber nicht mehr zu Verfügung, weil „nil“. Deshalb wären, um dir zu helfen, schon ein paar Informationen mehr nützlich. z.B. Inhalt von „Skript ausführen“ und ein Screenshot vom Ereignisprotokoll. Viele Grüße, Hawkeye
MarkoP Geschrieben 22. Februar 2022 Autor Geschrieben 22. Februar 2022 (bearbeitet) @EASY Hab den Denkfehler gefunden. Ich meinte meinte mit Objekt den ersten Punkt nicht Objekt (Name). Dort kann ich ja nur noch in einem Dialogfenster aus einer Liste auswählen. Ich nutze die Variante mit der Variablen an der Fahrstrasse. Da jede Fahrstrasse sich auf ein bestimmtes Gleis bezieht, kann ich einfach in einer Variablen zur Fahrstrasse das Gleis benennen und dadurch im Ereignis sagen: "Beschleunige alle Fahrzeuge auf diesem Gleis". Das finde ich persönlich etwas einfacher als deine Lösung, wobei die natürlich auch möglich ist. @Hawkeye Problem ist gelöst, aber Danke für die Erklärung, auch wenn ich nur die Hälfte davon verstehe weil mir die Logik dahinter noch nicht geläufig ist. Bearbeitet 22. Februar 2022 von MarkoP
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