Jump to content

EV 2 Züge bremsen sich aus


beat.feller

Empfohlene Beiträge

Hallo Beat,

wenn man beide Fahrgruppen ("BLS_RE_465_ab Thun" und "geschwindigkeit TW_1") aktiviert und dann die Animation der Analge einschaltet, scheint zunächst nichts zu passieren. Irgendwann fährt die Re 465 im hinteren Bahnhof los, und der Triebwagen beginnt auf seinem Bahnhofsgleis im vorderen Bahnhof hin und her zu pendeln, ohne diesen zu verlassen. Die Re 465 bleibt dann mit ihrem Zug im Vorfeld des vorderen Bahnhofs stehen, während der Triebwagen mit "halber Schrittgeschwindigkeit" ausfährt und dann letztendlich mit dem im Vorfeld stehenden, von der Re 465 gezogenen Schnellzug zusammenstößt und diesen dann rückwärts vor sich her schiebt.

Startet man den Anlagenbetrieb im "Schnellgang", reißt sich der Triebwagen schon früher los und stößt dann bei gegenseitiger voller Fahrt bereits außerhalb des Bahnhofs-Gleisvorfelds mit dem D-Zug zusammen.

Dass die beiden Zugfahrten, wenn man sie nicht gleichzeitig aktiviert, problemlos durchgeführt werden, weist darauf hin, dass es in Deiner Ereignis-Steuerung ein Synchronisations-Problem zwischen beiden Zügen gibt. Auch das "Gezappel" des Triebwagens im Bahnhofsgleis, während die Re 465 im gegenüber liegenden Bahnhof ausfährt, lässt darauf schießen, dass die Ausfahrt des Schnellzugs in der EV irgendwie mit der Steuerung des Triebwagens gekoppelt ist.

Du soltest Deine EV nochmals daraufhin durchforsten, wo ein Zug auf den anderen einwirkt, und dann aber verhindern, dass beide Züge aus entgegengesetzten Richtungen in dasselbe Gleis einfahren. Du scheinst hier auch einige Weichen unsynchronisiert zu stellen. Denn der Triebwagen fährt beim "Zusammenspiel" beider Züge in ein anderes Streckengleis ein (nämlich in das des Gegenzugs), als wenn er "allein" auf die Strecke geht. Dies scheint damit zusammenzuhängen, dass der aus dem hinteren Bahnhof ausfahrende Schnellzug bereits sehr frühzeitig Weichen für die Einfahrt in den vorderen Bahnhof stellt und damit den Triebwagen aus dem vorderen Bahnhof in das falsche Gleis ablenkt. Bei einem Testlauf wurde bespielsweise eine solche Weiche unter dem ausfahrenden Triebwagen umgestellt, was insbesondere zu dessen Trennung führte.

Deine EV habe ich mir (bisher) nicht angeschaut. Die obigen Schlüsse habe ich allein aus dem Verhalten der Züge auf der Anlage gezogen.

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo beat,

ich weiß zwar nicht, wieso beide Lokgeschwindigkeitssetzungen deaktiviert sind und habe sie auch nicht aktiviert, weiß also gar nicht, was eigentlich passieren soll, aber ich habe ein gutes Dutzend $ in die EV gesteckt. Und einen Countdown auf 0,0001 zu setzen ist auch illusionär - der nimmt nur volle Sekunden! Das habe ich jetzt nicht geändert.
Weiß nicht, ob nun irgendetwas besser ist, aber ich gebe Dir die Anlage mal mit den $-Modifikationen zurück.
Wenn Du die Unterschiede zu Deiner Version sehen willst, dann suche im Forum mal nach BahnLand's XML-Auswerter. Exportierst und wandelst Deine und meine Version und vergleichst mit Notepad++ oder WinMerge. Wenn ich nach mehr suchen soll, brauche ich erstmal mehr Basisinformationen, was eigentlich wann sein soll.

Gruß
  Andy

thun mod.mbp

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Andy,

vor 3 Stunden schrieb Andy:

Und einen Countdown auf 0,0001 zu setzen ist auch illusionär - der nimmt nur volle Sekunden!

 

Am 1.11.2018 um 21:17 schrieb Andy:

... im Trread "Kreuzungen via Variablen steuern":

Paßt auch bei den Countdowns auf. Sie nehmen nur volle Sekundenwerte an. Kleiner als 1 Sekunde geht nicht, das wird auf 1 Sekunde hochgesetzt.

Die beiden Aussagen stimmen so nicht ganz. Man kann einen Countdown sehr wohl nach einem Bruchteil von einer Sekunde loslaufen lassen. Hierzu habe ich eine kleine Demo erstellt:

Countdown-Test.mbp

Countdown-Test.thumb.jpg.9e8f933005aa2cc216ee6e3e0495842b.jpg

Die Demo betseht aus einem Schalter (Mitte), einem durch einen Countdown zu verändernden Zähler (links) und zwei Wartezeit-Vorgaben, von welchen die eine fest als Variable "Timerzeit" mit dem Wert "0,1" definiert ist und die andere über das Eingabefeld im obigen Bild rechts individuell eingestellt werden kann (im Eigenschaftsfenster des Beschriftungsfeldes).

Wird der Schalter eingeschaltet, wird der Zähler links von 0 auf 100 hochgezählt. Dies geschieht mittels eines Countdowns, der vom Schalter mit der im Beschriftungsfeld rechts eingetragenen Wartezeit angestoßen wird, selbst die Zähler-Variable um 1 erhöht, in das Feld links hinein schreibt und dann "sich selbst" mit derselben Wartezeit erneut startet - solange der Zählerwert 100 nicht erreicht ist.

Wird der Schalter ausgeschaltet, wird ein anderer Countdown gestartet, der den Zählerwert links von 100 auf 0 herunter zählt. Dieser wird als sich automatisch wiederholender Countdown mit der in der Variable "Timerzeit" hinterlegten Wartezeit (0,1 Sekunden) gestartet und beendet sich, sobald der Zählerwert 0 erreicht ist.

Sowohl der sich selbst immer wieder neu startende Countdown als auch der auf automatische Wiederholung eingestellte Countdown halten die Wartezeit ziemlich genau ein, solange der für die Wartezeit eingegebene Wert 0,02 Sekunden nicht unterschreitet. Kleinere Werte führen tatsächlich zu einer "wundersamen" Beschleunigung der Zählschleife mit deutlich kürzerer Wartezeit bis zur tatsächlichen Wartezeit "0" ab etwa 0,017 Sekunden abwärts (zumindest kann man ab da im Anzeigefeld links keine Zwischenwerte mehr erkennen).

Bei diesem Test sind mir noch zwei "Ungereimtheiten" aufgefallen, die sich @Neo anschauen sollte:

  1. Wenn ich in der Ereignisverwaltung für eine Variable den Text "0.1" (mit Punkt in der Mitte) eingebe, wird dieser automatisch in eine Dezimalzahl "0,1" (mit Komma in der Mitte) umgewandelt. Es ist mir also nicht möglich, in eine Variable einen Text zu schreiben, der aus Ziffern und (genau) einem Punkt dazwischen besteht. Enthält der Text mehrere Punkte, bleben diese erhalten. Streiche ich alle Punkte bis auf einen heraus, wird der verbleibende Punkt wieder in ein Komma umgewandelt.
     
  2. Wird der Inhalt einer Variable, die eine Dezimalzahl mit Komma enthält, in ein Beschriftungsfeld übertragen, wird diese dort mit Dezimalpunkt dargestellt. Möchte ich einen von Hand in ein Beschriftungsfeld eingetragenen Text (über dessen Eigenschaftsfenster) als Dezimalzahl verstanden wissen, muss ich diese Zahl mit Dezimalpunkt eintragen. Gebe ich diesen Wert als Zahl mit Dezimalkomma ein (wird hier tatsächlich akzeptiert), interpretiert das Modellbahn-Studio (die Ereignisverwaltung) diese Eingabe als Text und erkennt den Dezimalwert nicht.

Meiner Ansicht nach sollten Dezimalzahlen von einem Programm zumindest an der Benutzerschnittstelle immer auf dieselbe Weise (grunsätzlich mit Punkt oder grundsätzlich mit Komma) dargestellt und interpretiert werden. Bei einer Interaktion mit anderen Programmen lässt sich möglicherweise eine Konvertierung von einer in die andere Form nicht vermeiden (in den vom Modellbahn-Studio auszuwertenden x-Dateien werden Dezimalwerte entsprechend der DirectX-Syntax grundsätzlich mit einem Dezimalpunkt dargestellt). Dies sollte jedoch dem Nutzer innerhalb derselben Benutzerschnittstelle nicht zugemutet werden.

Viele Grüße
BahnLand

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin @BahnLand,

es ist jetzt eine knappe Woche her, da habe ich die Pfadsuche in meiner Anlage von Countdowns auf Schrittkettenvariablen umgestellt, weil er jedesmal ellenlang gebraucht hat, obwohl ich 0,1 für die einzelnen Zeiten eingegeben hatte. Dann habe ich nochmal in der Wiki nachgeschaut und da stand dann 'Angabe in Sekunden'. Ja, dazu zählt dann wohl auch ein fraktaler Wert. Jedenfalls überrascht mich das jetzt alles etwas, bin aber sehr dankbar für die Aufklärung. Die 'Schallmauer' mit 20 ms haben wir ja schon an anderer Stelle nachgewiesen.
Warten wir mal ab, ob meine Anpassungen etwas genutzt haben. Die $-Falle ist mir ein Dorn im Auge. Ich bin Texte mit " " und Variablenwerte ohne Präfixe gewohnt. Und Variablennamen, die mit einer Ziffer beginnen, mag ich auch nicht.

Gruß
  Andy

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Andy,

ich hatte mir das so fast schon gedacht, wollte aber auf "Nummer sicher" gehen. Ich hätte das "Folge von Aktionspaketen" genannt, was aber im Wesentlichen auf dasselbe hinaus läuft. Wie machst Du den Übergang von Schritt A nach Schritt B? Durch die Erhöhung der Schrittkettenvariable als letzte Aktion in Schritt A und die Realisierung des Schritts B als Ereignis "Variable wird gesetzt ... auf den Schritt B zugeordneten Wert"? So könnte ich es mir zumindest nach Deiner Beschreibung vorstellen.

Ich habe die Folge-Pakete bisher immer problemlos mit einem Countdown mit Wartezeit 0 gestartet. Die Wartezeit "0" bewirkt, dass das Ereignis sofort auftritt und damit die dort hinterlegten Aktionen unmittelbar nach dem Countdown-Aufruf zur Ausführung gelangen.

Also:
Schritt A: Letzte Aktion = Starte Countdown B  mit  Wartezeit 0
Schritt B: Auslöser = Countdown B, Letzte Aktion = Starte Countdown C mit Wartezeit 0
Schritt C: Auslöser = Countdown C, Letzte Aktion = Starte Countdown D mit Wartezeit 0
... usw.

Ich halte beide Varianten im Prinzip für gleichwertig.

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @BahnLand,

ja, genau so. Man kann dann, wie früher in Basic auch Zehnerschritte nehmen, um später noch was einzufügen.

Der Countdown-Trick gefällt mir, den kannte ich so auch noch nicht.
Aber - eben aus der Erfahrung der Programmierung von Maschinen - die Countdowns, die ich lieber Timer nenne, werden da meistens als Schrittüberwachung genommen, also Abbruch/Ausweg, wenn die Bedingung einfach nicht eintritt. Das werde ich vom Stil her auch so beibehalten. Aber hier kann man's als gleichwertig ansehen, da hast Du vollkommen recht.

Gruß
  Andy

p.s.: früher hat man das sogar mit einzelnen Bits programmiert, als S/R-Flipflops. Das war im Kontaktplan für die Elektriker lesbarer.
Die Schrittkette hat dann übrigens auf dem Kopf gestanden, also letzter Schritt als erster im Programm.
Damit konnte man in jedem Zyklus maximal einen Schritt abfertigen und nach der Kette eventuell noch auf Not-Aus-Situationen reagieren.
Neo's EV hat ein wenig von dem Stil.

Bearbeitet von Andy
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo ihr beiden EV Genies.

Frage Countdown. Kann mann dafür ein Plug In erstellen das man einblenden kann um zu sehen, ob der Countdown auch läuft? Mir passiert es immer wieder das ich wie so vielen in der EV ein Fehler passiert und ich dann oft warte und warte und warte, das der Countdown abläuft. und nichts passiert. weil ein Ereignis den Coutdown ausbremst oder es Ihn nicht startet wegen eines Fehlers. Mir persönlich würde das oft extrem helfen ( derzeit auf der Neuen laufen schon 52 Countdowns).

MfG Hans

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...