Hallo,
Die EEPGetSignalTrainsCount() Abfrage funktioniert nicht wenn die Zug Geschwindigkeit auf NULL steht. Kann man dies irgendwo ändern?
Gruss aus Namibia, JPB
nB Wir haben leider keine Signale am Bahnhof in Omaruru
Hallo,
Die EEPGetSignalTrainsCount() Abfrage funktioniert nicht wenn die Zug Geschwindigkeit auf NULL steht. Kann man dies irgendwo ändern?
Gruss aus Namibia, JPB
nB Wir haben leider keine Signale am Bahnhof in Omaruru
Schönen guten Morgen und erst 'mal 'nen Gruß aus dem Rheinland ...
Mit einem geeigneten Lua-Skript im LUA Skript-Editor und einem Sound-Kontakt im Bahnhofsbereich liese sich das Problem bestimmt lösen. Es kommt halt d'rauf an welches Ergebnis du dir letztendlich vorstellst.
Hallo,
die Frage ist ja erst mal grundsätzlich ob die Funktion bestimmungsgemäß funktioniert. Reden wir von Soll- oder Istgeschwindigkeit 0? Ersteres sollte vor einem Signal ja in der Regel nicht der Fall sein.
Gruß Michael
Hi @Bottazzoli
Die Erklärung für den Befehl:
EEPGetSignalTrainsCount(ID)
Anzahl = EEPGetSignalTrainsCount(3)
Zweck Gibt die Anzahl Fahrzeugverbände zurück, welche am spezifizierten Signal gehalten werden.
Bemerkungen • Das Argument ist die Signal ID.
• Rückgabewert ist die Anzahl der an diesem Signal haltenden Züge (Autos, Straßenbahnen etc.)
Was also möchtest du denn machen?
Und was hat das mit der Geschwindigkeit zu tun,
Wenn der Zug noch Geschwindigkeit hat, hält er nicht vor dem Signal.
Gruß Wilfried
Hallo,
danke für die Ausführungen.
Nennen wir es Kopfbahnhof:
Der Zug fährt ein und wir vom Signal normal angehalten. Nach einer kleinen Zeitspanne wird die Fahrtrichtung geändert. Damit aber der Zug nicht gleich losfährt in die andere Richtung, wird die Zug Geschwindigkeit auf 0 gesetzt. Danach wird durch das Lua Skript die Fahrstraße freigeschalten und die vorher gemessene Geschwindigkeit eingestellt.
All das funktioniert supper.
Das Problem:
Wenn ich die Anlage neu Lade/Starte wird in einem Lua Skript jedes Signal nach einem wartenden Zug abgefragt und in die Warteliste eingetragen. Die Züge, welche durch die vorherige Funktion auf Tempo 0 stehen, werden nicht berücksichtigt.
Daher die Frage:
Die EEPGetSignalTrainsCount() Abfrage funktioniert nicht wenn die Zug Geschwindigkeit auf NULL steht. Kann man dies irgendwo ändern?
Ist dies normal?
Macht einfach den Versuch, stellt das Tempo auf 0 und fragt die Funktion EEPGetSignalTrainsCount() ab.
Gruss, JPB
Hallo @Bottazzoli
warum setzt Du die Geschwindigkeit auf 0? Lass die doch so, wie sie ist (Problem gelöst) und bei Abfahrt des Zuges
setzt Du die Geschwindigkeit auf den (umgekehrten) Wert. Das machst Du dann, wenn der Zug losfahren soll, da
das Setzen derGeschwindigkeit ja die Signalsfunktion aufhebt.
Gruß Volker
Die EEPGetSignalTrainsCount() Abfrage funktioniert nicht wenn die Zug Geschwindigkeit auf NULL steht. Kann man dies irgendwo ändern?
Hallo
nein.
Ist dies normal?
Ja., denn...
Gibt die Anzahl Fahrzeugverbände zurück, welche am spezifizierten Signal gehalten werden.
Wenn die Fahrzeuggeschwindigkeit 0 ist, wird es eben nicht vom Signal gehalten.
Der Zug fährt ein und wir vom Signal normal angehalten. Nach einer kleinen Zeitspanne wird die Fahrtrichtung geändert. Damit aber der Zug nicht gleich losfährt in die andere Richtung, wird die Zug Geschwindigkeit auf 0 gesetzt.
Ich löse das anders. Ich ändere die Richtung beim Einfahren mit einem Umkehr-KP ganz kurz vor dem VS. Dieses Signal (in der Regel ein unsichtbares) integriere ich in die FS zur Ausfahrt. D.h. wenn die FS aktiviert wird, geht das Signal auf Fahrt und der Zug fährt rückwärts aus. Funktioniert ganz einfach und völlig problemlos.
Gruß Ingo
Der Zug wird ab dem Zeitpunkt nicht mehr vom Signal gehalten in dem Du ihm das Tempo 0 zuweist. Wenn Du ihn per Lua in die Gegenrichtung ausfahren lässt musst Du weder das Signal auf Fahrt stellen noch die Soll- Geschwindigkeit auf 0 setzen. So wird der Zug auch bei Neustart der Anlage als wartend erkannt.
Alternativ kannst Du auch die Fahrtrichtungsänderung klassisch mit einem Kontaktpunkt, ganz kurz vor dem Vorsignal und ohne Zeitverzögerung, realisieren und das Signal mit Lua schalten.
Anscheinend habe ich das Brett vor dem Kopf.
Schalte ich die Umkehr Funktion durch einen Kontakt oder per LUA dan fährt der Zug weg, auch wenn das Signal auf Halt steht. Dass will ich nicht. Der soll da stehen bleiben, bis die Fahrstraße freigegeben wird.
Schalte ich die Umkehr Funktion durch einen Kontakt oder per LUA dan fährt der Zug weg, auch wenn das Signal auf Halt steht.
Hallo
logisch.
Dass will ich nicht. Der soll da stehen bleiben, bis die Fahrstraße freigegeben wird.
Das ist kein überhaupt Problem, wenn Du so vorgehst, wie BrettvormKopf oder ich oben schrieb:
ändere die Richtung beim Einfahren mit einem Umkehr-KP ganz kurz vor dem VS. Dieses Signal (in der Regel ein unsichtbares) integriere ich in die FS zur Ausfahrt. D.h. wenn die FS aktiviert wird, geht das Signal auf Fahrt und der Zug fährt rückwärts aus. Funktioniert ganz einfach und völlig problemlos.
Gruß Ingo
ändere die Richtung beim Einfahren mit einem Umkehr-KP ganz kurz vor dem VS. Dieses Signal (in der Regel ein unsichtbares) integriere ich in die FS zur Ausfahrt. D.h. wenn die FS aktiviert wird, geht das Signal auf Fahrt und der Zug fährt rückwärts aus. Funktioniert ganz einfach und völlig problemlos.
Ja danke, habe ich auch schon versucht. Ist nicht befriedigend, zu ungenau.
Danke für die Hilfe.
Gruss, JPB
Hallo, hier mal ein ganz anderer Ansatz.
Die Züge fahren in ein Endgleis und halten an einem unsichtbaren Signal.
Vor dem Vorsignal liegt ein Sound-KP in den die Funktion radarxy eingetragen ist, wobei xy für eine Zahl steht, die der Position des Signals in einer Tabelle entspricht.
Wird dieses Signal auf Fahrt gestellt dann wird der jeweilige Zug in entgegengesetzter Richtung aus dem Gleis ausfahren.
wendesignale = {452,711,712,808,809,763,764,765,766} -- IDs der Signale an denen ein Zug hält in einer Tabelle
for k,v in pairs (wendesignale) do -- Schleife durch die Tabelle
EEPRegisterSignal(v) -- Signale registrieren
_ENV["radar"..k] = function(zn) -- Funktionen radar1, radar2,.. ,radar9 erzeugen Werden in Sound KP vor dem Vorsignal aufgerufen)
espeed = select(2,EEPGetTrainSpeed(zn)) -- Geschwindigkeit des Zugs auslesen
EEPSaveData(400+k, espeed) -- und in Slot (hier ab 400) speichern
EEPSaveData(450+k, zn) -- Zugname in Slot (hier ab 450) speichern
print("Geschwindigkeit ",espeed," Zug ", zn) -- Hinweis ausgeben (optional)
end
_ENV["EEPOnSignal_"..v] = function(stellung) -- Callback Funktionen für registrierte Signale erzeugen
if stellung == 1 then -- wenn die Stellung Fahrt ist (es werden unsichtbare Signale benutzt)
aspeed = select(2,EEPLoadData(400+k)) -- Geschwindigkeit aus Slot lesen
zn = select(2,EEPLoadData(450+k)) -- Zugname aus Slot lesen
-- im folgenden Block werden unterschiedliche Geschwindigkeiten für verschiedene Bereiche ausgegeben
if k < 4 then -- für die ersten 3 Signale in der Tabelle
if aspeed > 0 then -- wenn die gespeicherte Geschwindigkeit größer als 0 (der Zug fuhr vorwärts)
speed = -25 -- den Wert auf -25 festlegen
elseif aspeed< 0 then -- sonst wenn die gespeicherte Geschwindigkeit kleiner als 0 (der Zug fuhr rückwärts)
speed = 25 -- den Wert auf 25 festlegen
end
elseif k > 3 then -- sont für die Signal ab der 4. Stelle
if aspeed > 0 then -- s.o. für 40 km/h
speed = -40
elseif aspeed< 0 then
speed = 40
end
end
EEPSetTrainSpeed(zn,speed) -- Geschwindigkeit an Zug übertragen
EEPSaveData(400+k,0) -- die verwendeten Slots löschen
EEPSaveData(450+k,0)
end
end
end
Alles anzeigen
Vorteil ist, die Zugnamen und die Geschwindigkeiten bleiben nach einem Neustart der Anlage in den Slots erhalten.
Hallo,
Danke schlingo für die Bestätigung und die Antwort auf meine Frage:
"Wenn die Fahrzeuggeschwindigkeit 0 ist, wird es eben nicht vom Signal gehalten."
Danke DH1 für das Script. Mein Problem ist nicht die Umkehr Funktion, diese funktioniert ungefähr gleich wie Dein Script.
-- FUNCTION FS_SET ------------------------------------------------------------------------------------------------------------
function fs_set(z,fsn)
-- Kopfbahnhof
-- Die Funktion wird durch einen Sound Kontakt ausgelöst.
-- Dazu muss ein Fahrzeugkontakt den Zug nach einiger Zeit stopen und Die Fahrtrichtung Umkehren.
-- In die fünfte Stelle wird die Geschwindikeit eingetragen
local tm = EEPTime
local ok, k, v
local ok, spd = EEPGetTrainSpeed(z)
spd = spd *-1
for k,v in pairs (ret_gl) do
if (v[2] == fsn) then
v[6] = tm + v[1]
v[5] = spd
v[7] = z
v[8] = 1
prn_ret = "Module Return, fs_set, Train: "..z.." / Speed: "..v[5].." / Next Time: "..v[6]
end
end
end
-- FUNCTION FS_SET END ---------------------------------------------------------------------------------------------------------
-- FUNCTION FS_RET -------------------------------------------------------------------------------------------------------------
function fs_ret()
-- Diese Funktion wird laufend abgefragt
-- Sobald die Aktuelle Zeit grösser ist als die in v[5] gespeicherte wird die Fahrstrasse in fs_wait eingetragen.
-- Die erste Stelle ist der Zeitintervall für die Ausfahrt des Zuges.
-- Die zweite Stelle die Fahrstrassen Nummer.
-- Die dritte Stelle ist die Signal Nummer.
-- Die vierte stelle ist die Gleisnummer vor dem Signal
-- Die fünfte Stelle ist vorgegebene Geschwindikeit des Zuges.
-- Die sechste Stelle ist die nächste Abfahrtszeit.
-- Die siepte Stelle is der Zugname.
-- Die achte Stelle ist 0 = no Train / 1 = Train
local tm = EEPTime
local k, v
for k,v in pairs (ret_gl) do
if (v[8] == 1) then
prn_ret = prn_ret.."\n Return Fahrstrasse: "..v[2].." / Signal: "..v[3].." / Zug: "..v[7].." / Speed: "..v[5].." / Time: "..tm.." / Next Time: "..v[6].." / Active: "..v[8]
end
if (v[8] == 1) and (tm > v[6]) then
fs_con("Return "..v[7], v[2], 0)
v[8] = 0
end
if (EEPGetSignal(v[3]) == grn) then
EEPSetTrainSpeed(v[7], v[5])
v[8] = 0
prn = "Return left Train: "..v[7].."\n\n"
end
end
end
-- FUNCTION FS_RET END ----------------------------------------------------------------------------------------------------------
Alles anzeigen
Um die wartenden Züge (Speed = 0) trotzdem in die Warteliste einzutragen beim Starten der Anlage, verwende ich jetzt die Gleis Besetzt Abfrage für die Umkehr Gleise.
Alles Gelöst!
Gruß JPB
Nachtrag:
Und nochmals Danke an DH1 für den Tip mit der aktuellen Zug Geschwindigkeit im Slot abspeichern, dass hatte mir einiges an Kopfzerbrechen gemacht.
Gruss JPB