MarkoP Geschrieben 26. Januar 2022 Geschrieben 26. Januar 2022 Hallo, ich würde gerne einen Fahrplan mittels einer Tabelle erstellen. Also mehrere Abfahrtzeiten als Index. Pro Zeile sollen dann noch andere Variablen wie Ziel etc. befüllt werden. Dazu habe ich mir für jeden Zug eine List angelegt und jedem Listeneintrag eine Tablle mit verschiedenen Werten angeführt der Zeit zugewiesen. Leider finde ich bisher keine Möglichkeit mit der EV zu prüfen ob einer dieser Zeitpunkte erreicht ist. Gibt es da eine Möglichkeit oder wie habt ihr sowas gelöst?
Andy Geschrieben 26. Januar 2022 Geschrieben 26. Januar 2022 Hallo MarkoP, ich habe dafür einen Sekundenticker. Zusätzlich rechne ich diesen Wert noch einmal um (Lua-Funktionen). So bedeutet der Wert 915 letztlich 9:15 Uhr. Damit kann man noch eine gute Lesbarkeit in der Tabelle erreichen. Wenn Du nur aufsteigende Werte in der Tabelle hast, kannst Du da einfach einen Index hochlaufen lassen, der nur den Eintrag mit dem Zeitwert vergleicht, auf den der Index verweist. Gruß Andy
Andy Geschrieben 26. Januar 2022 Geschrieben 26. Januar 2022 Noch was: bei derart zeitbezogenen Systemen mußt Du höllisch aufpassen beim Testen, speziell beim Speichern!!! Zu schnell hat man mal an der falschen Stelle die Grundstellung überschrieben und dann könnte das ganze Projekt hinüber sein! Ich kann da ein Lied singen. Gruß Andy
Neo Geschrieben 27. Januar 2022 Geschrieben 27. Januar 2022 Hallo, bei der Arbeit mit Zeitwerten empfehle ich das Ereignis Zeitpunkt wird erreicht mit der Angabe "Jede Minute". Dieses Ereignis besitzt den Auslöser "Zeit" im Format hh:mm. Wenn du nun für deine Indizes in den Tabellen dieses Format nutzt, kannst du direkt per Auslöser auf den Tabelleneintrag zugreifen (mit den Standardmitteln der grafischen EV/Lua). Auf Timer würde ich verzichten, da sie nicht direkt an die Simulationszeit gekoppelt sind. Viele Grüße, Neo
Andy Geschrieben 27. Januar 2022 Geschrieben 27. Januar 2022 Hallo @Neo, was, wenn auf einen Eintrag einer mit der gleichen Zeit folgt? Gruß Andy
Neo Geschrieben 27. Januar 2022 Geschrieben 27. Januar 2022 Hallo Andy, vor 5 Minuten schrieb Andy: was, wenn auf einen Eintrag einer mit der gleichen Zeit folgt? soweit ich MarkoP richtig verstehe, verwendet er die Abfahrtszeiten als Index in einer Tabelle. Doppelte Indizes können in einer Tabelle nicht vorkommen. Viele Grüße, Neo
Andy Geschrieben 27. Januar 2022 Geschrieben 27. Januar 2022 Na gut, ich frage dann nicht weiter, denn alles andere als eine natürliche Zahl kann ich mir als Index nicht vorstellen. Der NeunUhrFünfte Eintrag einer Tabelle - da hört's bei mir auf... Gruß Andy
Goetz Geschrieben 27. Januar 2022 Geschrieben 27. Januar 2022 (bearbeitet) vor 13 Minuten schrieb Andy: alles andere als eine natürliche Zahl kann ich mir als Index nicht vorstellen. Hallo Andy, Der Bezeichner kann wahlweise eine Zahl oder ein String sein. Zahlen als Index ergeben eine Liste Strings als Index ergeben eine Tabelle. Den "NeunUhrFünften" Eintrag gibt es in dieser Form nicht, weil in einer Tabelle nichr durchgezählt wird. Strings als Bezeichner kannst du besser mit Sprungadressen vergleichen. Viele Grüße Götz Bearbeitet 27. Januar 2022 von Goetz Ergänzungen
Andy Geschrieben 27. Januar 2022 Geschrieben 27. Januar 2022 (bearbeitet) Hallo Götz, ist gut gemeint, aber offensichtlich bin ich in einem anderen Universum groß geworden. Bei mir hat eine Tabelle (Array) Indizes (ggf. mehrere, je nach Dimension) und eine Liste (List) keinen, weil dort die Datenelemente Einträge besitzen, die auf das vorangegangene bzw. folgende Listenelement verweisen. Bitte laß uns die Diskussion an dieser Stelle beenden, ich mag nicht mehr. Warten wir darauf, was MarkoP dazu sagt. Gruß Andy Bearbeitet 27. Januar 2022 von Andy
Goetz Geschrieben 27. Januar 2022 Geschrieben 27. Januar 2022 vor 2 Stunden schrieb Andy: offensichtlich bin ich in einem anderen Universum groß geworden Stimmt, Andy. Dieselben Begriffe werden in den verschiedenen Programmiersprachen sehr unterschiedlich verwendet. Man muss sich da jeweils anpassen und umdenken. Meine Beschreibung bezieht sich auf die Bedeutung von Listen und Tabellen im MBS. Weil die (und nur die) relevant ist, wenn man im Studio Listen oder Tabellen verwendet. Viele Grüße Götz
MarkoP Geschrieben 27. Januar 2022 Autor Geschrieben 27. Januar 2022 @Neo Wenn ich mit "jede Minute" auf den Indizes abgleichen, wie kann ich dann feststellen welche Zeile zutrifft. Um die anderen Felder der Tabelle zuzuweisen muss ich ja dann eine bestimmte Zeile der Tabelle vorgeben. Das zuweisen erfolgt ja nicht im gleichen Schritt. Weiterhin muss ich mir was überlegen wie ich die zu benutzende Fahrstraße in Abhängigkeit des Gleises und Ziels anfordern kann.
Goetz Geschrieben 27. Januar 2022 Geschrieben 27. Januar 2022 vor 38 Minuten schrieb MarkoP: Wenn ich mit "jede Minute" auf den Indizes abgleichen, wie kann ich dann feststellen welche Zeile zutrifft. Hallo Marko Wenn du noch ein paar Tage Geduld hast (bis ich wieder zuhause bin), dann versuche ich gerne ein Beispiel für dich zu erstellen. Viele Grüße Götz
MarkoP Geschrieben 27. Januar 2022 Autor Geschrieben 27. Januar 2022 Da ich mit dem Bereich Listen/Tabellen nicht wirklich klar komme (in der Form wie sie im Modelleisenbahnplaner benutzt werden) nehme ich jede Hilfe an. Generell komme ich mit der aktuellen grafischen EV nicht wirklich klar und habe unheimlich Verständnisprobleme bei der Auswahl von Objekten/Variablen etc. Natürlich probiere ich in der Zeit auch selber noch weiter rum. Damit du etwas mehr Hintergrundinfos hast: Meine Loks haben verschiedene Objektvariablen. Da ist das Ziel, die Route, die Zugnummer, der Loktyp, die Zugart und das Zielgleis. Die ersten drei dienen dem Befüllen der Anzeigetafeln im Bahnhof, Loktyp und Zugart zur Routenauswahl, also woher, wohin und welche Strecke und das Zielgleis gibt vor welches Gleis im Bahnhof angesteuert werden soll, also welche Fahrstraße freigegeben werden muss. Nach dem Halt, müssen die Variablen zum Teil dann mit neuen Werten gefüttert werden. Dazu habe ich wie gesagt eine unabhängige Variable mit einer Liste erstelle bei der jeder Listenpunkt eine Tabelle mit Abfahrtszeit, Ziel (Endziel als Anzeige), Route und Zielgleis sowie den nächsten Bahnhof (für die Richtungswahl) beinhaltet. Ich möchte also mit "jede Minuten" prüfen ob die aktuelle Zeit zu einem der Werte in den jeweiligen Tabelleneinträgen der Listen passt. Wenn dem so ist, sollen die Objektvariablen mit den Tabelleninhalten neu befüllt werden und die Fahrstraße für das Ausfahrtsgleis (in Abhängigkeit des Gleises auf dem der Zug steht und der Richtung in die er fahren soll) angefordert werden. Ein weiteres Problem bei der Bahnhofssteuerung ist auch der Richtungswechsel. Die Einfahrt erfolgt über eine Fahrstraße bei der das Ausfahrtssignal auf HP00 gestellt wird. Bei einem Richtungswechsel müsste aber nicht das Ausfahrtssignal reagieren, sondern das Einfahrtssignal nach dem Überfahren. Und zur Vereinfachung würde ich gerne beim Richtungswechsel die Triebwagen wechseln, also einfach den Moter beim einen ausschalten und beim anderen einschalten - geht sowas ohne den Namen der Lok zu kennen? Soweit meine Idee - mal sehen was dir dazu einfällt (oder mir)
Goetz Geschrieben 29. Januar 2022 Geschrieben 29. Januar 2022 Am 27.1.2022 um 19:55 schrieb MarkoP: Ich möchte also mit "jede Minuten" prüfen ob die aktuelle Zeit zu einem der Werte in den jeweiligen Tabelleneinträgen der Listen passt. Hallo Marko, das kannst du theoretisch zwar machen, aber es erzeugt eine gigantische Rechnerlast, die nicht notwendig ist. Denn du müsstest bei diesem System alle Tabelleneinträge durchforsten, bis du den passenden gefunden hast. Wenn du stattdessen die Uhrzeiten als Bezeichner für Tabellenplätze verwendest, dann kannst du jede Minute ganz einfach prüfen, ob ein Tabellenplatz existiert, der die aktuelle Uhrzeit als Bezeichner hat. Und wenn es den Platz gibt, dann nutzt du den Inhalt dieses Tabellenplatzes um z.B. eine Fahrstraße zu schalten. Die Tabelle sieht in dem Fall so aus: Und die EV für das Ereignis "Zeitpunkt erreicht" sieht so aus: In diesem sehr einfachen Beispiel wird nur jede Minute ein neuer Text in ein Textfeld geschrieben. Wenn die Uhrzeit in der Tabelle gefunden wird, dann wird der Text aus der "Fahrplan" Tabelle genommen. Andernfalls wird einfach die Uhrzeit auf das Textfeld geschrieben. Jedes Ereignis bringt in dem Moment, wo es ausgelöst wird, eine oder mehrere Variablen mit. Das sind Werte, die individuell zu diesem Ereignis gehören. Beim Ereignis "Zeitpunkt erreicht" ist es eine einzelne Variable. Sie enthält die Uhrzeit in Form eines Strings (sprich: in Textform). Die individuellen Parameter, die vom Ereignis selbst mitgegeben werden, findet man stets über das Zahnrad mit dem Begriff "Auslöser" Deshalb bekomme ich im obigen Beispiel jede Minute mit "Auslöser" die Zeit zu fassen, um die das Ereignis ausgelöst wurde. Und kann prüfen, ob es einen Tabellenplatz mit diesem Namen gibt. Weil das MBS wirklich sehr gut durchstrukturiert ist, funktioniert die oben beschriebene Methode bei jeder Geschwindigkeit, egal ob ich in den Anlageneinstellungen die Dauer eines Tages ändere ... oder oben in der Kopfleiste eine höhere Abspielgeschwindigkeit wähle. Referenz bleibt in jedem Fall die unten angezeigte Uhrzeit. Am 27.1.2022 um 19:55 schrieb MarkoP: Generell komme ich mit der aktuellen grafischen EV nicht wirklich klar Vielleicht müssten wir zunächst hier ansetzen, bevor wir eine komplexe Fahrplansteuerung mit Anzeigetafeln und vielerlei mehr angehen? Ich weiß nur leider nicht, wo genau deine Verständnisprobleme sitzen. Deshalb kann ich dir noch nicht die entscheidenden Hinweise geben. Viele Grüße Götz
MarkoP Geschrieben 29. Januar 2022 Autor Geschrieben 29. Januar 2022 Mein grundsätzliches Verständnis ist in so fern unklar, dass ich nie die Reihenfolge und Zugehörigkeit erkenne. Was ich meine lässt sich am einfachsten an einem Beispiel erklären: ich möchte aus einer Objektvaribale einer Lok beim berühren eines Gleiskontaktes einen Wert auslesen. Mein Problem ist, dass ich nicht begreife ob ich erst den Auslöser und dann das Objekt und zuletzt die Variable auswählen muss oder beispielsweise erst die Variable des Objekts das den Kontakt auslöst oder womöglich erst den Kontakt und dann die Variable des Objekts. Ich hoffe es ist verständlich geschrieben. Was den Fahrplan angeht ist das schon so wie ich es mir gedacht habe. Lediglich weiß ich nicht, wie ich an die restlichen Werte aus der Tabellenzeile der zutreffen Zeit komme. Ich kann mit jede Minute eben nur prüfen ob ein Eintrag der Tabelle mit der aktuellen Zeit übereinstimmt. Aber ich muss ja an die restlichen Felder dieser einen Zeile rankommen. Denn ich will ja bei erreichen von z.b. "12:05" das Ziel, die Route etc. aus genau dieser Zeile an die Lok übertragen.
Goetz Geschrieben 29. Januar 2022 Geschrieben 29. Januar 2022 vor 4 Minuten schrieb MarkoP: Ich hoffe es ist verständlich geschrieben. Ja, das ist es. Und die Antwort ist: Du musst immer zuerst das Objekt nennen und dann die Variable in diesem Objekt. Wenn es sich um eine Lok handelt, die einen Gleiskontakt betritt, dann bringt dieses Ereignis zwei Argumente mit: den Kontakt, der betreten wurde die Lok, welche den Kontakt betreten hat Deshalb musst du als Objekt "Auslöser" wählen und dann aus der Liste von Auslösern das "Fahrzeug" nehmen. Der Weg zur Variable im auslösenden Fahrzeug führt über die "erweiterte Variable". Die bietet dir zwei Felder, damit du im oberen Feld das auslösende Fahrzeug angeben kannst und im unteren dann den Namen der Variablen, die in diesem Fahrzeug gefunden werden soll: vor 12 Minuten schrieb MarkoP: Lediglich weiß ich nicht, wie ich an die restlichen Werte aus der Tabellenzeile der zutreffen Zeit komme. Das kannst du im obigen Beispiel sehen. In meinem Fall ist der Inhalt nur ein Text. Aber das Prinzip ist immer gleich: Du wählst unter dem Zahnrad den letzten Punkt "Variable (Liste/Tabelle)". Das ist dein Zugriff auf den Inhalt dieser Zelle. Wenn der wiederum eine Tabelle mit mehreren Einträgen ist, dann musst du dasselbe Prinzip noch einmal anwenden, um an die Untertabellen zu gelangen. Viele Grüße Götz
Goetz Geschrieben 29. Januar 2022 Geschrieben 29. Januar 2022 Hallo @MarkoP unter der Content-ID E57B44BC-28BC-473C-8330-04985D6473B2 findest du jetzt eine kleine Beispielanlage. Schau mal bitte, ob sie dir weiterhilft. Viele Grüße Götz
MarkoP Geschrieben 29. Januar 2022 Autor Geschrieben 29. Januar 2022 Ich weiß nicht wo du den Index "Zeit" hernimmst. In der Tabelle der Variablen "Fahrplan" lautet der Index doch "Name"
Goetz Geschrieben 29. Januar 2022 Geschrieben 29. Januar 2022 vor 16 Minuten schrieb MarkoP: Ich weiß nicht wo du den Index "Zeit" hernimmst. Jedes Ereignis bringt - wie ein Funktionsaufruf - Argumente mit. Also einen oder mehrere Parameter. Das Ereignis "Zeitpunkt erreicht" stellt unter "Auslöser" den Parameter "Zeit" zur Verfügung. Er enthält die aktuelle MBS-Uhrzeit als Text in der Form "hh:mm", also Stunde und Minute jeweils zweistellig geschrieben, mit einem Doppelpunkt dazwischen.
MarkoP Geschrieben 29. Januar 2022 Autor Geschrieben 29. Januar 2022 Ich bekomme es nicht hin. Bei mir wird nicht in die Objektvariable der Lok übertragen. Kann ich dir meine Anlage zur Verfügung stellen ohne sie zu veröffentlichen?
Goetz Geschrieben 29. Januar 2022 Geschrieben 29. Januar 2022 Gerade eben schrieb MarkoP: Kann ich dir meine Anlage zur Verfügung stellen ohne sie zu veröffentlichen? Ja, du kannst sie exportieren und hier an dein Posting anhängen. Aber was spricht gegen die Veröffentlichung?
MarkoP Geschrieben 29. Januar 2022 Autor Geschrieben 29. Januar 2022 Weil Sie private Elemente enthält die nicht im Katalog sind und außerdem noch lange nicht fertig ist. Es geht nur um den Bahnhof unten (Köln Hbf) und den roten ICE. Alles andere kannst du erstmal vernachlässigen Bahnhof.mbp
Goetz Geschrieben 29. Januar 2022 Geschrieben 29. Januar 2022 (bearbeitet) vor 2 Stunden schrieb MarkoP: Was den Fahrplan angeht ist das schon so wie ich es mir gedacht habe. Tut mir leid, Marko, aber das ist es nicht. Deine Tabelle ist nicht nach dem Muster organisiert, welches ich dir vorgeschlagen habe: Du verwendest nicht, wie von mir empfohlen, die Uhrzeit als Bezeichner. Siehst du den Unterschied? Dieses Ereignis hat auch nur wenig Ähnlichkeit mit dem, was ich dir vorgeschlagen habe. Außerdem würde ich dir dringend empfehlen, deine große Anlage beiseite zu legen und das ganze Prinzip mit Minibeispielen zu erforschen. Viele Grüße Götz Bearbeitet 29. Januar 2022 von Goetz Ergänzungen
MarkoP Geschrieben 29. Januar 2022 Autor Geschrieben 29. Januar 2022 Sorry, du hast die falsche Tabelle erwischt. Die ICE 32 war ein erster Versuch. Ich arbeite im Moment mit der ICE 411-Tablle und eben diesem Zug (der ICE3 mit dem roten Streifen) In der aktuellen Version habe ich es geschafft, dass der Zeitpunkt erkannt wird. Leider läuft die Aktion der Variablenübertragung in einen Fehler. Und die Fehlermeldungen sind für mich leider nicht wirklich aussagekräftig. Bahnhof V2.mbp
Goetz Geschrieben 29. Januar 2022 Geschrieben 29. Januar 2022 (bearbeitet) vor 22 Minuten schrieb MarkoP: Ich arbeite im Moment mit der ICE 411-Tablle Die ist in dem Beispiel, das du mir zuerst geschickt hattest, komplett leer gewesen. Deshalb hatte ich mich auf die Tabelle konzentriert, die wenigstens einen Inhalt hatte ... Bearbeitet 29. Januar 2022 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