Swen44 Geschrieben Donnerstag um 09:23 Uhr Geschrieben Donnerstag um 09:23 Uhr Hallo, diese Stichwörter werden in der Wiki und auch im Forum nur recht diffus beschrieben. Daher will ich das für alle Neueinsteiger mal als eigenes Thema aufmachen. Ich fange mal mit Schlagwörtern an: Ausgangspunkt ist die Anweisung "Fahrtrichtung wechseln". Dabei muss man eine Lok angeben. Da ich das mit den Schlagwörtern nicht hinbekomme, mache ich es komplizierter und erfrage beim Einfahren aufs Gleis ganz oben den Lok-Namen und speichere ihn in eine Variable. Ganz unten nutze ich dann für den Richtungswechsel die neue Variable als erforderten Lok-Namen. (1. Bild) Jetzt will ich den Umweg mit der Variable durch ein Schlagwort ersetzen, da ich identische Loks nutze. Ich habe Ihnen also ein für alle Loks gleiches Schlagwort vergeben. (Es wäre mit dem allgemeinen Schlagwort trotzdem eindeutig, da die EV ja nur für dieses konkrete Gleis Anweisungen gibt.) (2. Bild) Ich finde in der Auswahl für Lok-Bezeichnung der EV-Anweisung keine Option für "Schlagwort". ??? (3. Bild) Also gehe ich über die Option "Variable" und finde da auch in der Liste der "Objektvariablen" meine Schlagwörter wieder. (4. u. 5. Bild) Wenn ich das jetzt für die EV-Anweisung wähle, funktioniert das ganze Ereignis nicht mehr. Der Fahrtrichtungswechsel wird nicht durchgeführt. (6. Bild) Was mache ich falsch? Oder geht das überhaupt nicht?
AndreasWB Geschrieben Donnerstag um 09:46 Uhr Geschrieben Donnerstag um 09:46 Uhr Hallo @Swen44, tja, das Konzept mit der Ereignissteuerung bedarf zunächst etwas der Eingewöhnung. Den Anfang hast Du aber schon gemacht: Meist ist es ein Fahrzeug, das ein Ereignis auslöst (... betritt ein Gleis / Kontakt ...), oder ein Objekt (Signal) schaltet, und ähnliche. Ein Schlagwort in einem Objekt dient dazu, einer Gruppe von z.B. Fahrzeugen die Auslösung einer gleichen Ereignissteuerung zu ermöglichen. -> Alle LKWs bekommen per EV ein bestimmtes Ziel auf einer bestimmten Straße zugewiesen. Für PWS oder Busse ist dann eine andere EV zuständig. Alle Güterzug-Loks (Schlagwort "Güterzug") sollen an bestimmten Kontakten warten. usw. Man kann damit also bestimen, welche "Klasse" von Fahrzeugen/Bojekten mit einem bestimmten Schlagwort welche EV(s) auslösen werden. In Deinem Fall ist aber eine andere Strategie zielführender: Jedes Fahrzeug, das diesen Kontakt (Gleiskontakt oder Gleisstück) betritt, soll das Ereignis "Fahrtrichtung wechseln" auslösen. Hier kannst Du über Auswählen des kleinen Zahnrad-Symbols dann statt eines konkreten Objekts den Auslöser, also das Fahrzeug, das gerade auf diesem Gleis diese zugeordnete EV getartet hat, eintragen. Zum Thema Schlagwörter / Variable: Ja, das Schlagwort ist auch eine Variable, hat aber eine kleine Sonderstellung, die die folgende Abbildung eigentlich besser veranschaulicht, als eine großartige Beschreibung. Ich hoffe, das hilft fürs erste. Gruß Andreas
Swen44 Geschrieben Donnerstag um 10:06 Uhr Autor Geschrieben Donnerstag um 10:06 Uhr Danke für die Erklärung, Andreas. Ich habe meinen Fehler gefunden. Ich habe immer aufs falsche Zahnrad getippt. Ich muss das ganz oben antippen, um an die Option "Auslöser" zu kommen. Das habe ich auch schon bei den benutzerdefinierten Ereignissen gesucht. - Manchmal bin ich aber auch ein Depp In dem Fall brauche ich ja nicht mal ein Schlagwort. Danke. L. Gruß Swen.
Swen44 Geschrieben Donnerstag um 11:27 Uhr Autor Geschrieben Donnerstag um 11:27 Uhr Hier erst mal das Ergebnis in Form der modifizierten Anlage. Damit entfällt das ständige Auslesen des Lok-Namens an jedem Bhf. Zugleich habe ich noch die Zeiten (Stoppzeit am Bahnsteig und die Bremszeit bis zum Halt) über zentrale Variablen gelöst, so dass ich sie eventuell einfacher ändern kann. Im zweiten Schritt habe ich mich schon an Benutzerdefinierte Ereignisse herangewagt. Das betrifft "Neu Parken Re", das obere, rechte Gleis. Natürlich funktioniert es nicht. Das Ereignis wird gar nicht angesprochen. Darum kümmere ich mich aber später. Die Lok fährt dort gemäß Programm gleich wieder zurück. Zum Probieren dann das Nebengleis nutzen. ... Auf das Benutzerdefinierte Ereignis [ Parken ] auf "GL NeuParken Re 1" komme ich später zurück (mit vielen Fragen). SBahn-1new.mbp
Goetz Geschrieben Donnerstag um 12:05 Uhr Geschrieben Donnerstag um 12:05 Uhr vor 36 Minuten schrieb Swen44: "GL NeuParken Re 1" funktioniert aktuell nicht wie von dir beabsichtigt, weil das Fahrzeug sofort bei Betreten des Gleises die Fahrtrichtung umkehrt. Das ist der zweite Befehl in diesem Ereignis.
Phrontistes Geschrieben Donnerstag um 13:24 Uhr Geschrieben Donnerstag um 13:24 Uhr (bearbeitet) vor 1 Stunde schrieb Swen44: Auf das Benutzerdefinierte Ereignis [ Parken ] auf "GL NeuParken Re 1" komme ich später zurück (mit vielen Fragen). Bevor Du Fragen stellst, gleich mal der Hinweis, dass Du Gleise, Signale, Weichen (und z.B. Fahrzeuge) als Typ Objekt definieren musst (nicht als Text). Du willst im benutzerdefinierten Ereignis diese Objekte ansprechen. Deinen Versuch, in GL NeuParken Re 1 die Namen der Objekte zu übergeben, habe ich gesehen. Über ihren Namen kannst Du die Objekte aber nicht ansprechen. Namen sind nur für die Oberfläche, d.h. für die leichtere Erkennbarkeit durch den User. Das kannst Du daran erkennen, dass Objektnamen nicht eindeutig sein müssen, die Objekte (genauer: die Objektreferenzen) sind es aber schon, ohne dass das an der Oberfläche zu sehen ist. Bearbeitet Donnerstag um 13:26 Uhr von Phrontistes typo
Phrontistes Geschrieben Donnerstag um 13:36 Uhr Geschrieben Donnerstag um 13:36 Uhr (bearbeitet) vor 2 Stunden schrieb Swen44: Das Ereignis wird gar nicht angesprochen Doch es wird angesprochen (blaue Zeile), aber Du produzierst einen Fehler (rote Zeile), weil man eine Weiche nicht mit einem Text bezeichnen kann. Wenn Du die Ereignisverfolgung öffnest (F12) siehst Du den Fehler auch: Und wenn Du auf die rote Zeile doppelklickst, bist Du im Ereignis, das den Fehler verursacht (hier: Text- statt Objektvariable wie im vorigen Post beschrieben). Bearbeitet Donnerstag um 13:39 Uhr von Phrontistes
Swen44 Geschrieben Donnerstag um 17:23 Uhr Autor Geschrieben Donnerstag um 17:23 Uhr Ich hatte eure Antworten noch nicht gelesen und einfach weiter probiert. Jetzt ist es so, dass das "eigene Modul" (nenne es: Kopfbahnhof) (1. Bild) auf der rechten Seite der oberen Abstellgleise funktioniert. (2. und 3. Bild) Aber auf der linken Seite funktioniert das gleiche Modul nicht. (Dort ist nur das Gleis "...Li 1" mit den neuen Modul versehen. 4. Bild) Die Lok macht alles, was im Modul steht, aber führt dann den Befehl "Fahrtrichtung setzen" nicht aus. Jedenfalls schließe ich das aus dem Verhalten der Lok. Das Nebengleis "...Li 2" ist noch ohne dem Modul und so funktionsfähig (zum Vergleich). Warum geht es rechts und links nicht? In meinen ersten Versuchen hatte ich die erste Zeitverzögerung im Modul mit drin. Aber die hat das Modul völlig ignoriert, obwohl ich im Modul weiter unten auh eine Zeitverzögerung fürs Halten drin habe, und die auch gemacht wird. Jetzt habe ich sie rausgenomen. (Modul = Bebnutzerdefiniertes Ereignis / hier "Kopfbahnhof") Und noch eine Frage zum Textfenster: wie bekomme ich die Bilder an den Ort, wo ich sie gerne im Text hätte, so wie bei euch? Und nicht hinten angehangen? L Grüße Swen. SBahn-1newDef.mbp
Goetz Geschrieben Donnerstag um 17:51 Uhr Geschrieben Donnerstag um 17:51 Uhr vor 23 Minuten schrieb Swen44: wie bekomme ich die Bilder an den Ort, wo ich sie gerne im Text hätte mit "Einfügen". Setz vorher den Cursor an die gewünschte Stelle im Text.
Goetz Geschrieben Donnerstag um 17:52 Uhr Geschrieben Donnerstag um 17:52 Uhr (bearbeitet) vor 34 Minuten schrieb Swen44: Ich hatte eure Antworten noch nicht gelesen und einfach weiter probiert. Dann hole das jetzt bitte nach, bevor wir weiter beraten ... Sonst reden wir eventuell aneinander vorbei. Bearbeitet Donnerstag um 17:57 Uhr von Goetz Schreibfehler korrigiert
Phrontistes Geschrieben Donnerstag um 17:55 Uhr Geschrieben Donnerstag um 17:55 Uhr (bearbeitet) vor 32 Minuten schrieb Swen44: Ich hatte eure Antworten noch nicht gelesen Dann mach' das jetzt erst mal, bevor Du und bildreich zeigst, dass Du Deine Fehler, die man Dir erklärt hat, nicht behoben hast. vor 32 Minuten schrieb Swen44: wie bekomme ich die Bilder an den Ort, wo ich sie gerne im Text hätte Indem Du den Cursor an die gewünschte Stelle setzt und damit dort das Bild einfügst. Bearbeitet Donnerstag um 17:55 Uhr von Phrontistes typo
AndreasWB Geschrieben Donnerstag um 18:39 Uhr Geschrieben Donnerstag um 18:39 Uhr (bearbeitet) Hallo @Swen44, gleich mal zu Deiner esten abgebildeten EV: Ein Gleis kann keine Geschwindigkeit zugeordnet bekommen. -> Auslöser ist Fahrzeug. Ferner (gilt für alle Deine EVs) referenzierst Du die Signale, Weichen, usw. immer noch mit "Name". Es wurde bereits erklärt, daß die Objekte direkt zu referenzieren sind. Wenn die EVs jeweils für alle gleichgeartete Stellen gelten sollen, dann noch nicht mal die konkreten Objekte eintragen, sondern auch hier: Auslöser. Also als Beispiel: Ein Ausfahrtsignal (Schalgwort: Ausfahrtsignal) soll Aktionen ausführen (z. B. Türen schließen beim Zug vor Anfahrt) Das Signal bekommt das Schlagwort: Ausfahrtsignal Wenn es schaltet, soll es geeignete Aktionen ausführen: Also kein konkretes Signal, kein mit "Name" identifiziertes Signal, sondern "generalisiert" für alle Ausfahrtsignale. Das Ganze pflanzt sich durch Deine EVs fort. Gruß Andreas Bearbeitet Donnerstag um 18:42 Uhr von AndreasWB besseres Bild
Phrontistes Geschrieben Donnerstag um 20:06 Uhr Geschrieben Donnerstag um 20:06 Uhr vor einer Stunde schrieb AndreasWB: Ein Gleis kann keine Geschwindigkeit zugeordnet bekommen. Aber ein beliebiges Fahrzeug, das sich auf einem Gleis/Gleiskontakt befindet durchaus und das hat er (insoweit korrekt) programmiert. vor einer Stunde schrieb AndreasWB: Auslöser ist Fahrzeug. Auslöser kann in einem benutzerdefinierten Ereignis nur das sein, was man dem benutzerdefinierten Ereignis übergibt. Ein Fahrzeug übergibt er aber nicht. Auf einem anderen Blatt steht, dass es aber vermutlich sinnvoll wäre, das Fahrzeug zu übergeben.
Swen44 Geschrieben vor 15 Stunden Autor Geschrieben vor 15 Stunden Erst mal danke für die Antworten. In dem konkreten Beispiel verstehe ich die Kritik nicht. Die Anweisung "Geschwindigkeit setzen" im ersten Bild besagt doch (wenn ich es richtig verstehe), dass für alle Fahrzeuge (wie es gewählt ist) auf dem konkreten Gleis (die Übergabe-Variable "Gleis") die Geschwindigkeit gesetzt wird. Die Anweisung funktioniert ja auch prima. Das ganze Modul funktioniert auch dort, wo nach dem Modul (Fehlerhaft) die Fahrtrichtung nicht gewechselt wird. Ich betrachte die benutzerdefinierten Ereignisse, als wären es Unterprogramme, die man an geeigneter Stelle mit entsprechenden Übergabe-Variablen in das Hauptprogramm einfügt. Und genau so funktioniert es ja auch auf der Anlage. Unten ist die Ereignisverwaltung für die anderen Kopfbahnsteige, die noch nicht durch das Benutzerdefinierte Modul ersetzt wurden. Und die funktionieren überall tadellos. Wo ist da jetzt der Unterschied zu der Benutzerdefinierten Ereignisverwaltung? ... Wie gesagt, funktioniert das benutzerdefinierte Modul selbst ohne Fehler. L Grüße Swen.
Goetz Geschrieben vor 15 Stunden Geschrieben vor 15 Stunden vor 35 Minuten schrieb Swen44: Die Anweisung "Geschwindigkeit setzen" im ersten Bild besagt doch (wenn ich es richtig verstehe), dass für alle Fahrzeuge (wie es gewählt ist) auf dem konkreten Gleis (die Übergabe-Variable "Gleis") die Geschwindigkeit gesetzt wird. Das ist korrekt, Swen vor 35 Minuten schrieb Swen44: Ich betrachte die benutzerdefinierten Ereignisse, als wären es Unterprogramme, die man an geeigneter Stelle mit entsprechenden Übergabe-Variablen in das Hauptprogramm einfügt. Und auch das ist soweit richtig. Aber in diesem Zusammenhang ist folgendes wichtig: Die EV sendet eine Reihe von Befehlen aus. Aber sie wartet nicht auf das Ende der Ausführung! Wenn du also einem Fahrzeug zuerst die Geschwindigkeit 0 zuweist und dann gleich im Anschluss mit dem nächsten Befehl die Fahrtrichtung umkehrst, dann geschieht diese Umkehr nicht dann, wenn das Fahrzeug zum Stillstand gekommen ist, sondern sofort. Damit geht die neue Sollgeschwindigkeit 0 gleich wieder verloren. Stattdessen ist die neue Sollgeschwindigkeit jetzt der negative Wert der aktuellen Ist-Geschwindigkeit. Viele Grüße Götz
Swen44 Geschrieben vor 14 Stunden Autor Geschrieben vor 14 Stunden (bearbeitet) Danke Götz für die Erklärung. Da werde ich morgen gleich dran fummeln Ich habe doch aber zwischen dem Stoppen (0kmh) und dem neuen setzen der Geschwindigkeit (Speed) eine Verzögerung im Prog (Warten bzw. Haltezeit). Aber trotzdem interessant, weil ich die Fahrtrichtungsumkehr nicht ins Modul integrieren kann. Ich bekomme dann nicht [Fahrzeug] in das Ereignis hinein. Genauso komisch ist, dass ich die erste Verzögerung ganz oben (Boden.Parken) nicht ins Modul an oberste Stelle integrieren kann. Wenn ich das mache (also richtig mit entspr. übergebender Variable und so), wird das Modul zwar abgearbeitet, aber diese erste Anweisung (Verzögerung) einfach ignoriert. Erst dachte ich, dass man keine Verzögerungen in benutzerdef. Ereignisse integrieren darf (habe ich irgendwo in einem Beitrag gelesen), aber ich habe ja mittig im Modul eine Verzögerung drin, die auch wie gewollt funktioniert. ???? Also noch viele Fragen. LG Swen. Bearbeitet vor 14 Stunden von Swen44
Goetz Geschrieben vor 13 Stunden Geschrieben vor 13 Stunden (bearbeitet) Hallo Swen! vor 1 Stunde schrieb Swen44: Ich habe doch aber zwischen dem Stoppen (0kmh) und dem neuen setzen der Geschwindigkeit (Speed) eine Verzögerung im Prog (Warten bzw. Haltezeit). Hier aber nicht: (das Bild ist aus deinem ersten Beitrag) Im Benutzerdefinierten Ereignis "Kopfbahnhof" ist zwar eine Wartezeit eingetragen. Aber die verzögert nicht den nachfolgenden Befehl "Fahrtrichtung setzen" im gezeigten Ereignis. Sondern nur die nachfolgenden Befehle im Benutzerdefinierten Ereignis. Du kannst das besser durchschauen, wenn du das Benutzerdefinierte Ereignis in Lua umwandelst. Dann siehst du, dass dieses Ereignis nach Ablauf der Wartezeit ein weiteres Mal aufgerufen wird. Das hat aber keine Auswirkung auf die nachfolgende Aktion in dem Ereignis, welches das Benutzerdefinierte Ereignis triggert. vor 1 Stunde schrieb Swen44: weil ich die Fahrtrichtungsumkehr nicht ins Modul integrieren kann. Ich bekomme dann nicht [Fahrzeug] in das Ereignis hinein. Du musst das Fahrzeug als weiteres Argument an das Benutzerdefinierte Ereignis übergeben. Das hat @Phrontistes dir weiter oben erläutert. vor 1 Stunde schrieb Swen44: Genauso komisch ist, dass ich die erste Verzögerung ganz oben (Boden.Parken) nicht ins Modul an oberste Stelle integrieren kann. Wenn ich das mache (also richtig mit entspr. übergebender Variable und so), wird das Modul zwar abgearbeitet, aber diese erste Anweisung (Verzögerung) einfach ignoriert. Da ist in deinem Code etwas unsauber. Denn das geht eigentlich problemlos. Eventuell hast du die Verzögerungszeit nicht als Zahl übergeben? vor 1 Stunde schrieb Swen44: Erst dachte ich, dass man keine Verzögerungen in benutzerdef. Ereignisse integrieren darf (habe ich irgendwo in einem Beitrag gelesen) Das wirst du verwechselt haben. In Wiederholungen sind keine Verzögerungen zugelassen. Viele Grüße Götz Bearbeitet vor 13 Stunden von Goetz
Goetz Geschrieben vor 13 Stunden Geschrieben vor 13 Stunden Hallo @Swen44, mit diesem kleinen Beispiel möchte ich dir verdeutlichen, wie sich eine Wartezeit im Benutzerdefinierten Ereignis auswirkt: Wartezeit im Benutzerdefiniertem Ereignis.mbp Auf Knopfdruck wird im Benutzerdefinierten Ereignis eine Liste mit vier Namen erzeugt. Gleich im Anschluss gibt ein Befehl im Ereignis "Schalter wird betätigt" den Inhalt der Liste in einem Textfeld aus. Weil der dritte und vierte Namen erst nach einer Verzögerung in die Liste eingefügt werden, siehst du im Textfeld nur die ersten beiden Namen. Schaust du dir die Liste anschließend im Ereignisprotokoll an, dann enthält sie alle vier Namen. Daraus kannst du ableiten: Alles, was vor der Verzögerung im Benutzerdefinierten Ereignis steht, wird ausgeführt, bevor die Textausgabe im Ereignis "Schalter wird betätigt" erledigt wird. Alles, was nach der Verzögerung im Benutzerdefinierten Ereignis steht, kommt für die Textausgabe zu spät. Auch dann, wenn die Verzögerungszeit (ein Parameter) = 0 ist! Denn auch eine Verzögerung der Dauer 0 bewirkt einen erneuten Aufruf des Ereignisses. Und dieser zweite Aufruf folgt erst, wenn alles im aufrufenden Ereignis bis zur eigenen Verzögerung (für die Rücksetzung des Tasters) erledigt ist. Viele Grüße 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