Jump to content

Anlagenzeit in grafischer EV?


Timba

Empfohlene Beiträge

Hallo,

gibt es in der grafischen EV auch irgendwo die Möglichkeit auf den Wert der Anlagenzeit (in Lua = layout:time) zuzugreifen oder ist das ausschließlich über Lua möglich? Meine Suche danach war gerade nicht von Erfolg gekrönt. Vielleicht mag mir jemand den Weg weisen.

Gruß Timba

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Andy, ich glaube allmählich, das geht gar nicht. Irgendwie erinnere ich mich sogar schwach, dass ich Ähnliches hier schon mal thematisiert habe. Ich glaube, man kann layout:time nur einen Wert zuweisen, aber ihn nicht auslesen und weiterverarbeiten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich glaube, es geht nur, wenn Du ein Zeitereignis mit 'jede Minute' nimmst. Dann kommst Du über den Auslöser ran!
Aber da steht in der Lua-Übersetzung auch das Auslöser-Codewort time. Was dann aber vermutlich identisch ist. Ich glaube an _layout:time kann er gar nicht rankommen, wegen dem Doppelpunkt.
Kriegst es halt nur jede volle Minute - wobei auszutesten wäre, ob es die Simulationsminute ist, oder die echte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bei dem fehlerhaften Bild oben setzt er layout:time. Aber - wie man sieht - mußte da wieder extra was eingerichtet werden, was die Optionen aufbläht (und zum Lesen noch nicht eingerichtet ist).
Das gilt für alle anderen über Lua erreichbaren Variablen auch. Was in Lua ein paar Buchstaben sind, damit hat Neo in der 'Grafischen' richtig Arbeit.
Deswegen nervt das, wenn die Leute da nicht in irgendeiner Weise entgegenkommend sind, wenn sie mal eine Zeile 'Skript ausführen' einsetzen müßten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja, in diesem Fall geht es ja über Lua auch nicht.

Besonders witzig ist ja, dass in der Hilfe zu "layout" als Beispiel so ein Aufruf angeboten wird:

beispiel.thumb.jpg.da911094305ff068c88a153277b5dfb9.jpg

Aber gibst du den Befehl genau in der Form ein, verweigert die Kiste ihren Dienst. Da müsste @Neo vielleicht auch noch mal drübergucken.

PS: War mein Fehler! Hatte statt Punkt einen Doppelpunkt gesetzt.

Bearbeitet von Timba
Ergänzung
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok, ich hab jetzt ein Script angehängt mit nem Zweizeiler. Musste ja nicht unbedingt grafisch sein. Mache grade einen Langzeittest. Als ich vorhin nach einigen Stunden nachgesehen habe, ob noch alles läuft, war ein Zug im Bahnhof stehengeblieben und es war nicht zu ermitteln, warum. Ereignisprotokoll reicht nur ne gute halbe Stunde zurück udn da steht's nicht mehr drin. Nun wollte ich nochmal starten und habe dem Zug eine OV spendiert, in der bei jedem Halt die Anlagenzeit hinterlegt wird. Dann weiß ich zwar immer noch nicht, warum der nicht weiterfuhr, aber wenigstens weiß ich dann, wann es passiert ist. :D

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 49 Minuten schrieb Andy:

externe Screen-Videoaufzeichnung

Habe ich nicht. Habe ich vor einiger Zeit mal versucht, scheiterte aber an mangelnder Performance vom Rechner. Bin bereits in Verhandlungen, einen Teil meiner Rente gegen eine neue Kiste zu tauschen. :D

Aber es gibt ja noch ne andere Möglichkeit: Wenn das nochmal passiert, dann speichere ich nicht nur die Einfahrtszeit in den Bahnhof in der OV, sondern mache obendrein noch den minütlichen Abgleich mit der Anlagenzeit. Der Zug braucht ca. 3 Min. für eine Runde, also könnte man einen error programmieren, der die Anlage sofort auf Pause stellt, wenn die Differenz zwischen OV und Anlagenzeit größer als 5 Min. ist. Oder so. Dann hat man den Vorfall auf jeden Fall im EP und kann evtl. Rückschlüsse ziehen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Timba,

 

was über die grafische EV möglich wäre ist das du die Simulationszeit in einem Textfeld mitlaufen lässt, dies ist wie folg möglich.

Bild2.thumb.jpg.854483f9d61c86d9d24985bd0bb17bbd.jpg

Wenn dich dann ein bestimmter Zeitpunkt interessiert könntest du das Beschriftung setzten Ereignis einfach über die EV deaktivieren lassen. Damit bleibt der entsprechende Zeitpunkt auf dem Textfeld „eingefroren“ obwohl die Uhr weiterläuft. In meinem Beispiel habe ich als Auslöser einfach den Schalter.

Zeit.mbp

Gruß Frank

Bearbeitet von fzonk
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

danke, ich hab's ja schon erreicht. Wie oben beschrieben habe ich die EV für eine Anlage mit drei Bahnhöfen so weit fertig und machte einen Langzeittest. Dabei lasse ich den Rechner alleine, will ja nicht stundenlang auf den Monitor starren. Nach ca. 3 bis 4 Stunden schaute ich nach und der einzige Fehler war, dass ein Zug in einem Bahnhof stehengeblieben war. Das EP reichte nur eine gute halbe Stunde zurück und darauf war nichts mehr von diesem Zug zu finden. Alle Variablen und Werte, die noch vorhanden waren, ließen keinen Fehler erkennen. Das heißt, weiter probieren. Falls das nochmal vorkommt wollte ich dann wenigstens wissen, ob es gleich zu Anfang oder später oder wann überhaupt passiert. Deswegen wollte ich die Anlagenzeit (=Echtzeit) bei jeder Einfahrt des Zugs in den fraglichen Bahnhof in einer OV speichern. Wäre er stehengeblieben wäre in der OV der Zeitpunkt des Malheurs abzulesen gewesen. Das habe ich mit der Lua-Zeile »vehicle.variables["Ankunft"] = layout.time« erreicht. Zusätzlich hätte ich nun noch einen minütlichen Abgleich einbauen können, der die Anlage anhält, sobald die OV mehr als 4 bis 5 Minuten von der Anlagenzeit abweicht, was ein Beleg dafür gewesen wäre, dass der Zug stehengeblieben ist.

Wie auch immer, der Fehler ist nicht mehr aufgetreten. Ich kann nur mutmaßen, dass ein Befehl "verschluckt" wurde. Der Gleiskontakt wurde jedenfalls ausgelöst, sonst hätte der Zug nicht anhalten können und derselbe Gleiskontakt startet mit einer Verzögerung gemäß der eingestellten Haltedauer den Zug wieder. Das ist aus irgendeinem Grund nicht passiert.

Gruß Timba

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nochmal Hallo in die Runde,

ein anderes Problem:

Prüfen ob ein Zug auf einer Strecke steht kriege ich hin. Mit »layout:getVehiclesOnTrack« erhalte ich auch die Liste aller Fahrzeuge. Aber wie kann ich dem Programm mitteilen, welches Fahrzeug aus der Liste das Triebfahrzeug ist? Die Angabe brauche ich z.B., wenn ich den Fahrzeugverband in Bewegung setzen will. »GetVehicleGroup()« hilft mir auch nicht weiter, weil das Triebfahrzeug mal als erstes und mal als letztes angezeigt wird. Who has Ahnung?

Gruß Timba

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Timba,

local vehicles = layout:getVehiclesOnTrack(...)
for k, v in pairs(vehicles) do
  if v:hasEngine() then
    -- Vehicle ist eine Lok
  end
end

jedes Fahrzeug besitzt die Funktion "hasEngine", mit der du prüfen kannst, ob es sich um ein angetriebenes Fahrzeug handelt.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Neo,

vielen Dank. Auf etwas wie

vor 34 Minuten schrieb Neo:

jedes Fahrzeug besitzt die Funktion "hasEngine"

hatte ich gehofft. Leider war das nirgends dokumentiert (oder ich hab's nicht finden können). Kommt jetzt sofort in meine persönliche Sammlung wichtiger Lua-Methoden und -Funktionen.

Gruß Timba

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Timba,

vor 42 Minuten schrieb Timba:

Leider war das nirgends dokumentiert (oder ich hab's nicht finden können).

alle Lua-Funktionen und Eigenschaften sind direkt im Skript-Editor durch die Autovervollständigung dokumentiert. Drücke Doppelpunkt (:) für eine Liste aller Funktionen, Punkt (.) für eine Liste aller Eigenschaften und STRG+Leertaste für eine Übersicht aller globalen Variablen und Parameter.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb Tesla:

unsere Finanzminister sind noch penibler als einst Herr Schäuble

Ist bei dir vielleicht anders, bei uns bin ich der Finanzminister. Die "Verhandlungen" beschränken sich auf den Austausch zwischen meinem Dealer und mir. Nach dem ersten Angebot wollte ich eine bessere Grafikkarte und einen niedrigeren Preis, er hingegen will das andersrum. Da ist noch ne Menge Überzeugungsarbeit zu leisten. :D

Gruß Timba

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