Jump to content

Auslöser bei „Signalstellung hat sich geändert“: Gleiskontakt und Fahrzeug wären auch schön zu haben


Phrontistes

Empfohlene Beiträge

Hallo @Neo,

Es wäre schön, wenn das Ereignis „Signalstellung hat sich geändert“ außer dem Signal auch den Gleiskontakt und das Fahrzeug (falls eines auf dem Kontakt steht, sonst eben [Leer]) liefern würde.

Anwendungsfall: Das Fahrzeug soll nicht zeitgleich losrasen, sondern noch etwas warten (siehe Beispiel).

Das kann man zwar mit zwei Variablen lösen (siehe Beispiel), aber die Information ist ja sowieso vorhanden.

Mir ist klar, dass das Ereignis nicht durch den Gleiskontakt oder das Fahrzeug ausgelöst wurde – aber durch das Signal auch nicht, sondern manuell, durch die EV oder eine Fahrstraße.

It would be nice if, in addition to the signal, the "signal position has changed" event also provided the track contact and the vehicle (if one is on the contact, otherwise just [Empty]).

Use case: The vehicle should not start speeding at the same time, but wait a little longer (see example).

This can be solved with two variables (see example), but the information is available anyway.

I realize that the event was not triggered by the track contact or the vehicle – but neither by the signal, but manually, by the EM or a route.

Beste Grüße / Kind regards

Phrontistes

Example: Delay after signal change.mbp

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 8 Stunden schrieb Phrontistes:

Es wäre schön, wenn das Ereignis „Signalstellung hat sich geändert“ außer dem Signal auch den Gleiskontakt und das Fahrzeug (falls eines auf dem Kontakt steht, sonst eben [Leer]) liefern würde.

Beides kannst du schon jetzt haben, Phrontistes.
Da du aber in der Vergangenheit alle meine Vorschläge konsequent ignoriert hast, warte ich diesmal ab ob du mich fragst, wie es geht.

Viele Grüße
Götz

Bearbeitet von Goetz
Schreibfehler korrigiert
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @streit_ross,

vor 8 Stunden schrieb streit_ross:

Zeitverzögerung über die EV-Zeitsteuerung

genau das mache ich ja in meinem Beispiel.

vor 8 Stunden schrieb streit_ross:

des Fahrzeuges

Welches Fahrzeugs? Das ist doch genau das Problem. Auf das Fahrzeug kann ich im Ereignis „Signalstellung hat sich geändert“ ja nicht direkt zugreifen. Im Übrigen habe ich nur einen Teilaspekt beschrieben und im Beispiel gezeigt. Es gibt folgende Situationen wenn das Signal schaltet:

  • Auf dem Gleiskontakt befindet sich das auslösende Fahrzeug (im Beispiel gezeigt).
  • Auf dem Gleiskontakt befindet sich kein Fahrzeug (im Beispiel gezeigt).
  • Auf dem Gleiskontakt befindet sich ein anderes Fahrzeug als das, welches den Gleiskontakt ausgelöst hat, nämlich das andere Ende des Wendezuges (im Beispiel nicht gezeigt). Hier braucht es dann noch mehr, nämliche eine Variable im "vorderen" Fahrzeug, in der das "hintere" steht und entsprechende Prüfungen (im Beispiel nicht gezeigt).

Ich verstehe schon, weshalb Neo im Ereignis „Signalstellung hat sich geändert“ bisher kein Fahrzeug liefert. Mit dieser Information muss man dann schon umzugehen wissen.

Beste Grüße

Phrontistes

Bearbeitet von Phrontistes
Ergänzung nach Missverständnis Cafépause
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Phrontistes,

wäre schön, wenn du hierfür doch ein Beispiel angeben würdest.

vor einer Stunde schrieb Phrontistes:

Auf dem Gleiskontakt befindet sich ein anderes Fahrzeug als das, welches den Gleiskontakt ausgelöst hat, nämlich das andere Ende des Wendezuges (im Beispiel nicht gezeigt). Hier braucht es dann noch mehr, nämliche eine Variable im "vorderen" Fahrzeug, in der das "hintere" steht und entsprechende Prüfungen (im Beispiel nicht gezeigt).

Nach meinem Verständnis ist das Fahrzeug, das auf einem Gleiskontakt steht, immer die aktive antreibende Lok, egal an welcher Position im Zug sie steht. Das erste Fahrzeug vor dem Signal ist hierbei nicht relevant.

Auch ist Zuweisung des Signals im Gleiskontakt als Variable überflüssig. Du kannst den Signal-GK direkt im Ereignis „Signal schaltet“ ansprechen.

VG,

Hawkeye

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Hawkeye,

vor 47 Minuten schrieb Hawkeye:

Du kannst den Signal-GK direkt im Ereignis „Signal schaltet“ ansprechen.

Wie? Jedenfalls nicht als Trigger:

Screenshot2023-09-22100456.thumb.jpg.a8cc2302b791514bd34a6df1af0da855.jpg

Ich würde beim markierten Zahnrad gerne den Trigger "Track contact" (oder von mit aus auch "Signal") auswählen, wenn er angeboten würde, wird aber aber (bisher) nicht.

vor 53 Minuten schrieb Hawkeye:

ist das Fahrzeug, das auf einem Gleiskontakt steht, immer die aktive antreibende Lok, egal an welcher Position im Zug sie steht

Nicht, wenn Du mit "Vehicle is located on track/track contact" fragst. Die folgende allgemeingültige Routine für verzögerte Abfahrt an Signalen funktionierte ohne die zweite Abfrage auf das "hintere" (jetzt aber am Signal stehende) Fahrzeug nicht.

Screenshot2023-09-22101434.thumb.jpg.c9997cf5e6eae6b4606b6f89e9816716.jpg

Bei einer Kopfwende am Prellbock mit Lichtwechsel, Wechsel der Zugzielanzeige, Wechsel der Führerstandskamera, und Wechsel des mit einer Außenkamera zu verfolgenden Fahrzeugs hat man das gleiche Problem, weshalb mich das auch nicht überrascht hat

Beste Grüße

Phrontistes

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Hawkeye,

vor 2 Stunden schrieb Hawkeye:

Bei mir geht das. 

Du benutzt auch nicht den Trigger, sondern hast ein einzelnes Signalobjekt eingetragen. Natürlich geht das, nutzt aber nichts für eine allgemeingültige Routine (schau' in meinem Bild auch mal ganz oben, welches Ereignis ausgewertet wird), die für alle Signale, bei denen die Abfahrt verzögert werden soll nur einmal geschrieben wird.

Beste Grüße

Phrontistes

Bearbeitet von Phrontistes
Komma hatte gefehlt
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 4 Minuten schrieb Hawkeye:

So besser? 

Auch nicht. Und ich lag ebenfalls falsch als ich schrieb, dass du so das Gleis bekommen würdest!
Denn mit connection ist etwas anderes gemeint.

connection würde dir das zugehörige Signal liefern, wenn du im Gleiskontakt eine Verbindung zu einem Signal herstellst.

Ihr zwei denkt noch viel zu kompliziert. Das geht alles viel einfacher

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 6 Minuten schrieb Hawkeye:

So besser?

Ja! Code einfügen Screenshot2023-09-22110929.jpg.e33d3fdc039113d1645f42eaeed2a69d.jpgstatt Bild wäre noch nett, dann muss man nicht abtippen :).

vor 1 Minute schrieb Hawkeye:

Eigenschaften

Danke für den Hinweis; ich hab' (mal wieder) nicht an die Properties gedacht :$. Eigentlich weiß ich ja, dass man auch dort fündig werden kann; z.B. starte ich das Fahrzeug ja damit.

Beste Grüße

Phrontistes

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 59 Minuten schrieb Hawkeye:

Wenn ich eine print-Anweisung einbaue, dann bekomme ich den GK des Signals. 

... weil du die Verbindung des Fahrzeugs prüfst. 
Prüf die Verbindung des Signals und du wirst nicht das bekommen, was du erwartest.
Denn darüber findest du ein verbundenes Signal (falls es das gibt). Beispielsweise das Vorsignal zum Signal.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Drei Lösungsansätze

Version 1 (mit Lua)

AuslserSignalV1.jpg.87d8ea74956a7f0e15fce2709d1860bf.jpg

Skriptbedingung:

return #layout:getVehiclesOn(signal) > 0 

Skriptaktion:

local vehicles = layout:getVehiclesOn(signal)
for _, vehicle in pairs(vehicles) do
  if vehicle:hasEngine() then
    vehicle.engine.active = true
    vehicle.targetSpeedAbs = 180
  end
end

Über die Variable "signal" erreiche ich in Lua Skripten das auslösende Signal. Und da es mit dem Kontakt eine Einheit bildet, kann ich über diese Variable auch die Fahrzeuge auf dem zugehörigen Kontakt erreichen.

 

Variante 2 (benutzerdefiniertes Ereignis)

In benutzerdefinierten Ereignissen stehen die Parameter an jeder Stelle als Auslöser zur Verfügung!

AuslserSignalV2a.jpg.262ab9bd69218553ca83cc9cc4a6a943.jpg

 

AuslserSignalV2b.jpg.865455a81f95c8ab905e2e01340102f1.jpg

 

Variante 3 (Beschleunigung im Signal aktivieren und deaktivieren)

Diese Version würde ich bevorzugen, weil sie garantiert dass der Zug auf dem Kontakt auch dann angesprochen wird, wenn das angetriebene Fahrzeug an anderer Stelle steht. Also beispielsweise ein geschobener Beiwagen auf dem Signalkontakt steht. Und die Prüfung, ob überhaupt ein Zug auf dem Kontakt steht, entfällt hier auch.

AuslserSignalV3.jpg.251b323c7d4f2dd330aef08637c9a590.jpg

Wichtig ist bei dieser Methode, dass die Beschleunigung im Signal deaktiviert wird, bevor die Signalstellung auf Halt wechselt!

Beispielanlage:    delay after signal change three examples.mbp    (Variante 3 ist im Beispiel aktiviert)

 Viele Grüße
Götz

 

Bearbeitet von Goetz
Beispielanlage hinzugefügt
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 31 Minuten schrieb Goetz:

... weil du die Verbindung des Fahrzeugs prüfst.

Nein. Die wird nicht geprüft.

vor 31 Minuten schrieb Goetz:

Prüf die Verbindung des Signals und du wirst nicht das bekommen, was du erwartest.

Doch. Ich bekomme den GK des Signals.

vor 32 Minuten schrieb Goetz:

Denn darüber findest du ein verbundenes Signal (falls es das gibt). Beispielsweise das Vorsignal zum Signal.

Auch nicht. Siehe Beispiel.

Screenshot2023-09-22125555.thumb.jpg.fe2cbc6a5966e59141c53a472d1e7717.jpg

Screenshot2023-09-22125654.thumb.jpg.b47a553500c7962a5f92781d18d0b71d.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 13 Minuten schrieb Hawkeye:

Doch. Ich bekomme den GK des Signals.

Okay, dann hatte ich mich bei meinen Versuchen verfummelt. Tut mir leid!
Nachtrag: Ich hatte nur signal.connection probiert.

Und ich hatte bei meiner Erklärung dazu connection und link verwechselt. 
Danke für die Berichtigung.  :)

Bearbeitet von Goetz
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 31 Minuten schrieb Goetz:

und gefallen dir meine drei Lösungsvorschläge

Äh, da bin ich der falsche Ansprechpartner. Da mußt du @Phrontistes fragen.

Ich verwende solche Konstellationen und zusätzlichen Abfragen i.d.R. nicht.

Bei mir bekommt das Signal den nächsten Zug rechtzeitig per Variable zugewiesen, wenn er auf das Signal zufährt, und dieser bekommt dann beim Schalten des Signals auf „Fahrt“ direkt die Geschwindigkeit zugewiesen, egal ob er auf dem GK steht oder nicht.

VG,

Hawkeye

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