AndreasWB Geschrieben 3. Dezember 2020 Geschrieben 3. Dezember 2020 Hallo, um das Vorsignal einer Bahnhofs-Einfahrt gemäß eines per geschalteter Fahrstraße erreichbaren gestellten Ausfahrtsignals schalten zu können, müssen natürlich die Stellungen aller an einer Fahrstraße beteiligen Weichen geprüft werden. Dazu möchte ich in der EV-Gestaltung das Element "Wiederholungen" zum durchprüfen der Weichenliste und zugehöriger Stellungen (Liste) nutzen. Bei jedem Ausfahrtsignal habe ich jeweils die Liste der beteiligten Weichen und deren Stellungen, womit diese von der Einfahrt her erreichbar sind, hinterlegt. Ebenso die Objekte als Zeiger für das Einfahrtsignal und bei diesem den Zeiger auf das "angehängte" Vorsignal. Nun geht es um das Verständnis der einzelnen Parameter im EV-Wiederholungen Element. Dazu habe ich ein paar Screenshots angehängt. Fragen: Ist "@wdh" der Index, mit dem durchgezählt wird? Ich hadere wieder einmal mit den Auswahlen beim letzten "Signal Einstellen" Eintrag. Eigentlich sollte hier das Ergebnis dieser LUA-Script Zeile signal.variables["Vorgaenger"].variables["KombVorSigHell"].state = signal.stateCount entsprechen. Hier auch noch die Problematik wie .state und .stateCount gewertet wird. Ich schätze mal, die angehängte Bilder sind nicht in der richtigen Reihenfolge für obigen Text, es wird aber hoffentlich trotzdem einigermaßen klar. Gruß Andreas
Goetz Geschrieben 3. Dezember 2020 Geschrieben 3. Dezember 2020 (bearbeitet) vor einer Stunde schrieb AndreasWB: Ist "@wdh" der Index, mit dem durchgezählt wird? Leider nein. Das ist der Zelleninhalt. Den Index (oder Schlüssel, bei einer Tabelle) bekommst du in der grafischen EV leider nicht zu fassen. Da wirst du auf Lua umschwenken müssen. Lua liefert dir mit in ipairs() die Wertepaare key, value (Index, Wert) zu jeder Zelle. Bitte beachten: es gibt in pairs() und in ipairs() Aber eine Liste sollte reichen, wenn du in dieser Liste Wertepaare ablegst. Dann geht es auch grafisch. Dann kannst du Wdh.Weiche.Stellung mit Wdh.Sollstellung vergleichen Gruß Götz Hier ist eine Beispielanlage, die ich eben aus einer früheren Demo für dich gebaut habe.. Die GBS Signale lassen sich in dieser Version nur dann auf Fahrt schalten, wenn die Weichen korrekt für die Ausfahrt gestellt sind.Weichenstrasse pruefen.mbp Bearbeitet 3. Dezember 2020 von Goetz
AndreasWB Geschrieben 4. Dezember 2020 Autor Geschrieben 4. Dezember 2020 Hallo Goetz, danke. Jetzt muß ich es erst schrittweise verstehen. Ich sehe eine Liste von Tabellen. - OK Woher stammt der Name "Elementepaar"? Kann ich in den Variablen / Listen / Tabellen nicht finden. Oder ist das in diesem Zusammenhang ein Schlüsselwort? Ich hätte es nach Deinem (vor-)letzten Hinweis einfach mal als LUA-Skript versucht. Gruß Andreas
Goetz Geschrieben 4. Dezember 2020 Geschrieben 4. Dezember 2020 (bearbeitet) vor 59 Minuten schrieb AndreasWB: Woher stammt der Name "Elementepaar"? Den habe ich ersatzweise für Wdh gewählt, um deutlicher zu machen, was hier übergeben wird. Wdh ist nur der default Name für die lokale Variable. Du kannst da jeden beliebigen Namen reinschreiben. Es passiert folgendes: Das GBS Signal hat eine Variable für das zugehörige Hauptsignal. Im Hauptsignal steht die Liste mit den Weichen und ihren Sollstellungen. (Diese Liste kann theoretisch überall stehen) Das Hauptsignal hat eine Variable für das zugehörige GBS Signal. (beide kennen also ihren "buddy") Interessant ist für dich in der EV nur "Signal schaltet (2)" (bitte entschuldige, dass ich vergessen habe das besser zu bezeichnen) Wenn ein GBS Signal schaltet, dann holt die EV aus dem zugehörigen Signal die Liste mit den Weichenstellungen zu diesem Signal. Die Weichenstellungen werden geprüft. Stimmen sie überein, wird das Hauptsignal geschaltet. Andernfalls geht das GBS Signal zurück auf "Halt". Bearbeitet 4. Dezember 2020 von Goetz
AndreasWB Geschrieben 5. Dezember 2020 Autor Geschrieben 5. Dezember 2020 (bearbeitet) Hallo Goetz, vielen Dank für Dein Beispiel. So konnte ich die Eigenheiten von "Tabelle" hier in der grafischen EV-Erstellung besser verstehen. Das ist wohl eher nur jeweils eine Tabellen-Zeile. Erst durch das vorgebaute Zeilen-Konstrukt wird daraus eine Tabelle, wie wir sie allgemeinhin kennen. Bei "Index" muß also das jeweilige Attribut / Spaltenname eingetragen werden. Klar, dann funktioniert der ganze Mechanismus natürlich einwandfrei. Mal abgesehen vom 2-begriffigen gekoppelten FormHauptSignal. Gruß Andreas Bearbeitet 5. Dezember 2020 von AndreasWB kurze Ergänzung
Goetz Geschrieben 5. Dezember 2020 Geschrieben 5. Dezember 2020 Ne, mit dem "Zeilen-Konstrukt" verrennst du dich gedanklich, Andreas. Was du da siehst, ist eine durchnummerierte Liste. Und in der Liste stecken wiederum Tabellen. Unterschied zwischen Liste und Tabelle: die Liste hat nummerierte Plätze die Tabelle hat Plätze mit Bezeichnern. Ich hätte ebenso gut in der Liste weitere Listen (anstelle von Tabellen) anlegen können. Aber mit Bezeichnern fand ich das Konstrukt lesbarer. Letztlich ist es eine mehrdimensionale Tabelle. Äh, Liste ... Das ist vielleicht etwas verwirrend, weil die Bezeichnungen durcheinander geraten, wenn man mehrere Programmiersprachen mischt. Lua kennt nämlich nur Tabellen, unterscheidet aber trotzdem klar zwischen nummerierten Plätzen und solchen mit Bezeichnern. Du kannst nur über den lückenlos durchnummerierten Teil einer Tabelle iterieren. Vielleicht noch wichtiger ist aber, dass die Objektvariablen zunächst nichts mit Lua zu tun haben. Lua läuft nur nebenher und gewährt mir Zugriff auf diese Dinge. Deshalb werden im MBS Listen und Tabellen unterschieden. Gruß Götz
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