Guten Abend,
ich hab noch keine Lösung gefunden, die meinem ausufernden Perfektionismus entspricht.
Folgende Dinge vorab (Einige mögen ihre Ratschläge darin wiedererkennen):
- Das Umstellen eines Mehrabschnittsignales muss unterbleiben, wenn es gerade Halt zeigt
- Die Abfrage des Haltzustandes muss direkt vor dem Umschalten durchgeführt werden, bei Steuerstrecken im selben Kontakt, sonst wird ggf. ein eben gestelltes "Halt" mit einem Fahrtbegriff überschrieben.
- Ebenfalls muss die Weichenverbindung zwischen MAS und folgenden Hauptsignal noch eingestellt sein und auch überprüft werden
- Reine Vorsignale und Vorsignalwiederholer lassen sich via Signalverknüpfung machen. Daher hab ich die erstmal außen vor gelassen
Als ersten Ansatz hatte ich die einfache Aufsignalisierung. Die Signale werden beim Übergang von Halt auf einen Fahrtbegriff auf "Halt erwarten" eingestellt, ggf. mit Geschwindigkeitsbegrenzung falls der Bremsweg verkürzt ist. Für jede Geschwindikeitsabstufung beim Folgesignal wird ein Übergang zwischen Stellungen des MAS-definiert, z.B. wenn das Folgesignal "Fahrt mit 60" anzeigt, wechselt das MAS von "Halt erwarten" auf "Fahrt mit 60 erwarten". Das ist von der Logik her einfach genug, das es sich mit Schaltstrecken lösen lässt.
Das Schaltauto kann mittels bedingter Kontakte das Hauptsignal und die Weichen zwischen den beiden Signalen abfragen und sich selber die Weichen im Steuerkreis stellen. Wenn alle Kriterien abgefragt sind und stimmen, fährt das Schaltauto über ein Gleis mit einen Kontakt, welcher das MAS aufsignalisiert, sofern es gerade "Halt erwarten" zeigt. Bei den HV-Hauptsignalen mit Vorsignal dran oder den Hl-Signalen will man hier ggf. mehrere Kontakte für jede Geschwindigkeitsstufe (Zs3), die man ja beibehalten will. Also aus "Halt erwarten mit 60" wird "Fahrt mit 60".
Das geht dann ähnlich so mit Lua und kann dann so aussehen:
- EEPRegisterSignal(132)
- function EEPOnSignal_132(HS)
- if EEPGetSignal(119) > 1 and HS == 4 then
- EEPSetSignal(119, 2)
- end
- end
Das Signal 132 ist hier das folgende Hauptsignal, das Signal 119 ist das Mehrabschnittsignal. Anfangs zeigt das Signal 119 auf "Halt erwarten".
Das folgende Hauptsignal wird von seiner Fahrstrasse von 1 "Halt" auf 4 "Halt erwarten" umgestellt, dies löst den Callback aus. Im Callback wird mittels > 1 sichergestellt, das das MAS nicht Halt zeigt und dies dann von "Halt erwarten" auf 2 "Fahrt" eingestellt.
Das geht, das ist aber unflexibel und kriegt Probleme damit, wenn man händisch an den Signalen rumspielt. Außerdem ist das etwas schwieriger, wenn das Zs3 als separates logisches Signal angebaut wird. Für die Ks-Signale von GK3 hatte ich daher noch was anderes probiert:
- S=setmetatable({},{
- __index=function(t, s) return EEPGetSignal(s) end,
- __newindex=function(t, s, v) return EEPSetSignal(s, v, 1) end
- })
- function Update_1()
-
- if S[1] < 2 or S[1] > 6 then
- S[5]=1
- S[8]=1
- return
- end
-
- if S[2]==1 then
- S[1]=3
-
- elseif S[2] <= 4 then
- S[8]=S[6]
- if S[6] == 1 then
- S[1]=4
- else
- S[1]=6
- end
- S[5]=1
- else
- S[1]=2
- S[8]=1
- S[5]=4
- end
- end
- function Update_2()
-
- if S[2] < 2 or S[2] > 4 then
- S[6]=1
- return
- end
- end
- function EEPMain()
- Update_1()
- Update_2()
- return 1
- end
Display More
Das Ergebnis hab ich in den beiden Anhängen nochmal abfotographiert. Das kommt auch damit klar, das man an den Signalen händisch herumspielt. Die Anlage gibts bei Wunsch via DM.
Auch hatte ich die Idee, das man für alle Signale die Stellungen und Zusatzsignale eintragen könnte, dann noch die IDs der Signale, welche sich
Vorsignalisieren sollen, und das Lua macht den Rest alleine... das konnte ich mit Lua scripten, das war zwar viel Code und lief dann, aber ich fand es dann sehr nervig, für jedes Signal so viele Daten eintragen zu müssen.
Bei allen Lösungen finde ich es nicht so toll, was für ein Lua- oder Steuerstrecken-Unwuchs da entsteht, wenn man mal einen etwas größeren Bahnhof hat. Davon abgesehen habe ich jetzt grob einen Plan, wie man das angehen kann, das es auch zuverlässig funktioniert. Aber Entschlossenheit hab ich daraus nicht gewonnen.
LG Nero