Jump to content

Züge generisch beschleunigen


MarkoP

Recommended Posts

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?

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Screenshot 2022-02-18 190442.jpg

Screenshot 2022-02-18 200207.jpg

Link to comment
Share on other sites

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

2051541756_Bild007.jpg.c8cbf0bbe81a77e76260d7a9b38d6ee9.jpg

1534442401_Bild001.thumb.jpg.a9b909a6cd77a4b619a42b6a346b0127.jpg

1996650329_Bild002.thumb.jpg.012dc2b20f5b1c7e18dbd40f02a7396b.jpg

218516212_Bild003.thumb.jpg.bde0fba452f5832fdcedc16f12025b4a.jpg

107246627_Bild004.thumb.jpg.bbe398990bdc3e3b4b9cd12953e01b98.jpg

145906714_Bild005.thumb.jpg.d1ab964e015014b22f9d42010e25382b.jpg

... geht.

... diesen EV Eintrag "zu Skript konvertieren" zeigt etwas deutlicher was diese Einträge auslösen...
995551866_Bild006.jpg.9ba4d787cdfd8fb77bd1070775b779c1.jpg

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

Edited by EASY
Link to comment
Share on other sites

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 

Link to comment
Share on other sites

@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.

Edited by MarkoP
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...