Jump to content

EV exportieren


baki2512

Empfohlene Beiträge

Hallo, ich hab da mal wieder eine Frage - aber vorab: Neo, die neue EV ist super, damit hab selbst ich die rudamentären Grundlagen von Variablen begriffen(y). Aber nun zur Frage: In V 4 gab es bei der EV den kleinen Button "EV exportieren", den vermisse ich in V 5 oder kann ich wieder nicht richtig gucken? War eigentlich schön: Exportieren und in Word umwandeln, dann in der Suchfunktion das falsch schaltende Element eingegeben und schon bekam man eine Übersicht, wo überall dieses Element in der EV steckte.

Gruß und schönes WE

Baki

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi baki2512

Das EP (ereignisprotokol) bietet einige filter und such funktionen die recht komfortabel zu eventuellen problemen in der EV fuehren. Falls das EP permanent im hintergrund laeuft, waehrend man an der EV schraubt, wird sofort bei jedem probelauf reklamiert (durch fehlermeldung mit link zum problemeintrag, sowie pausieren der gesammten anlage) Wenn man die EV in script mode schreibt, verweigert MBS die annahme fehlerhafter eintraege. Daher denke ich das eine export funktion geschichte ist.

Cheers

Tom

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

tatsächlich handelte es sich bei dem alten Export um eine Funktion, um die Unzulänglichkeiten der alten EV zu umgehen, die sehr unübersichtlich war und kenne nennenswerte Suchfunktion besaß. Auch suggerierte der Export einen erneuten Import, den es nie gab und schon aus technischen Gründen nie geben wird. Aus diesem Grund liegt mein Fokus nicht mehr bei einer Export-Funktion für die neue EV, sondern in verbesserten Such- und Anzeigemöglichkeiten, direkt im Programm. Diese möchte ich auch in Zukunft weiter verbessern (die neue EV ist ja gerade erst "geboren"), wodurch ein Export immer unwichtiger wird.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Neo,

der Export der EV bis V4 hatte - wie @baki2512 oben schreibt - eben den großen Vorteil, dass man die gesamte EV komplett in einer Datei ablegen konnte und dann eben ganze Abschnitte der EV im Blick hatte. Dies ist heute nicht mehr möglich. Man kann sich immer nur eine einzelne Ereignisdefinition anzeigen lassen und muss dann sogar noch jede einzelne Bedingung oder Aktion separat öffnen, um deren Inhalt identifizieren zu könnnen. Oder man muss nach Lua umschalten, um sich das Script für diese Ereignisdefinition anschauen zu können. 

Der Trace (das Ereignisprotokoll) kann kein Ersatz für die exportierte Ereignissteuerung sein, da der Trace nur den aktuellen Ablauf protokolliert, aber nicht die Gesamtheit der Ereignisdefinition wiedergibt. Im Prinzip wäre zum EV-Export aus V4 das Äquivalent in V5 die Ausgabe des kompetten Lua-Scripts, wobei der Lua-Script-Abschnitt für jede Ereignisdefinition noch mit deren Bezeichnung überschrieben werden müsste.

Beispiel:

66456621_AktuelleEV-Darstellung.thumb.jpg.29f0a794e7e5773511812b3559ef3741.jpg

Ausgehend von der linken Übersicht der aktuellen Anzeige in der Ereignisverwaltung könnte ich mir einen Export etwa in der folgenden Form vorstellen (unvollständig):

Export_01.thumb.JPG.15dd5557b9d957ed5c177b71097af956.JPG
Export_02.thumb.JPG.8438a3eb37cc0446f6d0ea64486168c5.JPG
Export_03.thumb.JPG.ba1afbd70c5d4eb781431dbd9bc4a1d9.JPG
Export_04.thumb.JPG.aee934d324243feef32628931720fbf4.JPG

Dies würde dem Export in V4 ziemlich nahe kommen und könnte sogar direkt in Lua geschriebene Teile mit umfassen, da es ja nichts anderes als die Lua-Script-Darstellung der Ereignissteuerung ist. Zumindest hätte man mit einer solchen Ausgabe wieder eine komplette Zusammenstellung der Ereignissteuerung, ohne jedes einzelne Ereignis anwählen, aufklappen, und dann noch jede einzelne Aktion darin separat öffnen (oder doch wieder nach Lua umschalten) zu müssen.

Die "Kapitel-Überschriften" (aus der Liste der Ereignisdefinitionen in der linken Spalte des ersten Bildes) habe ich hier nur als "Bildausschnitte" einkopiert (genauso wie die Indformation unter "Wann wird das Ereignis ausgelöst?"). Diese müsste man irgendwie noch in den Ausgabetext des Exports integrieren - genauso wie die (jeweils Ereignismodul-spezifische Variablen- und Timer-Liste).

Wäre die Realisierung eines solchen Exports mit überschaubarem Aufwand möglich?

Viele Grüße
BahnLand

Bearbeitet von BahnLand
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

wenn ich als ziemlich unbedarfter Nutzer und kein EDV Experte (Lua ???????) das Beispiel anführen darf, was mich zu meiner Frage gebracht hat:

Zug betritt Gleis 1 --> Signal 1 wird ausgelöst

Jetzt mein Fehler an anderer Stelle:

Zug betritt Gleis 2 --> Signal 1 wird ausgelöst

Die falsche Aktion war klar, das Signal schaltete, obwohl es nicht sollte - aber welches falsche Ereignis löste diesen Fehler aus? Im Protokoll sehe ich zwar z.B. mit Hilfe des Filters, dass das Signal geschaltet hat, aber nicht wer es getan hat. Da muss man schon sehr genau aufpassen und die Anlage sofort stoppen, wenn das Ereignis zur Unzeit ausgelöst wird. Früher habe ich exportiert, alles unter Word abgespeichert (damit kann ich wenigstens umgehen) und als Suche eingegeben: Signal 1. Sofort zeigte mir Word alle Ereignisse an, in denen Signal 1 vorkam.

Und ein weiterer Vorteil für mich war, dass ich in für mich lesbarer Form ausgewählte Ereignisse komplett ausdrucken konnte und so z.B. an anderer Stelle, wenn ich es in ähnlicher Form brauchte, wieder erfassen konnte (hier nehme ich mal das Beispiel aus den Tutorials "Bahnübergang öffnen/schließen"). Die Abfolge der Ereignisse habe ich mir einmal ausgedruckt und brauche jetzt nicht mehr bei einer neuen Anlage überlegen, wie das Teil ainzurichten ist.

Und wie gesagt, ich bin (zwar langjähriger) Nutzer der EDV - aber mit Programmierung habe ich nichts zu tun gehabt. Ich kann mit den Standardprogrammen umgehen. Da hätte ich selbst mit dem Beispiel von Bahnland so meine Probleme, das zu lesen, geschweige denn, zu verstehen. Aber das könnte ich auch in  meinem Alter dann vielleicht noch lernen (bin ja nicht unwillig - hab nur keine Zeit)

Gruss

Baki

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es ist schwer genug das eigene Programm unter Kontrolle zu halten. Aber ein fremdes Programm in den kribbelbunten Kästchen mit der kaum lesbaren Schrift und nur stets einem 'sichtbaren' Ereignis mit den derzeitigen Suchfunktionen auf Fehler abzuklopfen, da passe ich. Das habe ich in der V4 nur per Export geschafft, und indem ich mit Textprocessing und Mustersuchen unstrukturierte zigfachkopierte Dinge zusammengefasst und in eine Art von neuen Funktionsaufrufen umgewandelt habe.
Wie finde ich denn z.B. ereignisübergreifende Lua-Funktionsaufrufe? Oder die Stelle, wo die Funktion definiert ist? Geht nicht! Die Folgeeffekte einer Umbenennung eines Timer kann ich gar nicht abschätzen. Der neue Begriff taucht in der Suchliste 'nach Timer' jedenfalls gar nicht auf. Da steht noch der alte Name drin. Wie finde ich einen Kommentar -- TODO den ich mir irgendwo reingeschrieben habe? Keine Chance. Hier gibt es echte Mängel, die nur über einen Export schnell ausgeglichen werden könnten. Was wir da alles noch brauchen, wissen wir wahrscheinlich noch gar nicht. Das kommt erst richtig, wenn wir mit V5 richtig loslegen. Warum geht die Suche nicht einfach so wie im Lua-Editor? Vermutlich wegen den Referenzen. Dann müssen die in der Suche eben 'entfaltet' werden. Und ja - der Export wäre im Endeffekt ein langes Lua-Listing, das in einem Texteditor weiterbehandelt werden kann. Das in den bunten Blöckchen zum Ausdrucken? Wer glaubt, er käme damit weiter, irrt. Das gab's vorher ja auch nicht. Mit dem puren Export habe ich auch nichts anfangen können, nach Einsatz von BahnLand's XML-Auswerter ging's aber richtig los!

Sorry, wenn das jetzt vielleicht etwas harsch ausgefallen ist. Aber wenn's um die Wurst geht, muß man auch mal kämpfen.

Gruß
  Andy

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Baku

Wenn du ein Objekt aktiviert hast und im Eigenschaften Fenster oben rechts das Quadrat mit den Linien anklickst öffnet sich das Fenster in dem du auf Aktionen klicken kannst (darunter ist die Option für variable u schlagworte). Es erscheint eine Auflistung aller Aktionen in die das aktive Objekt in der EV eingebunden ist. Vielleicht am besten alle deaktivieren und einzeln nacheinander wieder aktivieren um den Fehler zu finden.... Manchmal ist es auch nur eine vergessene Änderung eines Eintrags wenn man eine Aktion vervielfältigt um sie in ähnlichen Situationen zu recyceln.

Cheers

Tom

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 3 Stunden schrieb baki2512:

Da hätte ich selbst mit dem Beispiel von Bahnland so meine Probleme, das zu lesen, geschweige denn, zu verstehen.

Hallo Baki,

das siehst du viel zu pessimistisch. Mal dein eigenes Beispiel zugrundegelegt: Schaltet dein Signal 1 falsch, dann könntest du in einem Listing in der Art von BahnLands Beispiel alle Stellen finden, wo Signal 1 geschaltet wird, auch ohne Lua zu "verstehen". Hast du die Stellen erst gefunden, ist der Rest reine Formsache.

Gruß Timba

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb metallix:

Es erscheint eine Auflistung aller Aktionen in die das aktive Objekt in der EV eingebunden ist.

Hi Tom,

das ist nicht ganz richtig. Es erscheinen an der Stelle nur die Ereignisse, für die das betreffende Objekt der Auslöser ist und nicht die Ereignisse, deren Ziel das betreffende Objekt ist. In dem o.a. Beispiel von Baki kannst du Signal 1 selektieren, findest dort aber nichts, weil das Signal durch ein Gleis geschaltet wird. Um das Ereignis über das Eigenschaftsfenster zu finden müsste man wissen, welches Gleis die Signalschaltung bewirkt hat, aber genau das ist ja sein Problem: Er weiß es an der Stelle nicht.

Gruß Timba

Bearbeitet von Timba
Fehler korrigiert
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Metallix, hallo Timba,

jetzt bist Du mir zuvorgekommen, Timba. Als ich Metallix Vorschlag ausprobiert habe, kam bei  mir nämlich bei Ereignissen nur "neu". Geht also nicht.

Und ob ich es zu pessimistisch weiß ich noch nicht - dazu kenne ich das alles noch zu wenig.

Gruß Baki

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Minuten schrieb baki2512:

Und ob ich es zu pessimistisch weiß ich noch nicht - dazu kenne ich das alles noch zu wenig.

Hallo Baki,

vertraue doch einfach. :D Ich glaube nicht, dass ich übertrieben habe. Ein Lua-Listing ist zunächst mal ein Text, ob du die Befehle verstehst oder nicht. Einen Text mit Word zu durchsuchen ist dir doch vertraut. Also findest du die Stellen, an denen "Signal 1" steht leicht. Nach dem Beispiel von BahnLand steht obendrüber die Bezeichnung des Ereignisses, damit kannst du zielgerichtet in deine EV zurück und den Fehler eliminieren, ohne dich um die Bedeutung von Lua-Befehlen kümmern zu müssen.

Gruß Timba

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Baki

Eine andere moeglichkeit waere das signal einfach mal loeschen, das EP ausklappen und die anlage laufen lassen. Sobald etwas das nicht vorhandene signal referenziert sollte das EP alarm schlagen und dir einen link zu dem entsprechendem eintrag zeigen. Wuerde natuerlich helfen wenn die moeglichkeiten ueberschaubar waeren und du den oda die richtigen ausloeser eindeutig kennst. Die entsprechenden aktionen sollten dann vorher deaktiviert werden, so das lediglich die ungeplante(n) aktion(en) den fehler ausloesen....

Cheers

Tom

Bearbeitet von metallix
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 9 Minuten schrieb metallix:

Abba vielleicht waere das etwas was Neo einrichten koennte

Hi Tom,

Neo hat ja in seinem Beitrag gestern bereits in Aussicht gestellt, die Such- und Anzeigemöglichkeiten der EV weiter zu verbessern. Ich nehme ihm auch seine Ambition ab, eine gewisse Perfektion dabei zu erreichen. Hätte er diesen Ehrgeiz nicht, wäre MBS nicht das, was es ist. Nur selbst der weltbeste Programmierer kann nicht jede Möglichkeit bedenken und so werden immer Wünsche offen bleiben. Schon alleine die von Baki erwähnte Möglichkeit, sich bestimmte Dinge auszudrucken als Vorlage für andere Projekte, was ich übrigens auch oft schon gemacht habe, entfällt bzw. ist nur umständlich möglich. Man kann eben nur ein einzelnes Ereignis nach Lua konvertieren, nach Word kopieren und muss dann dort die verschiedenen Ereignisse des Moduls wieder zusammensetzen. Die Arbeit mache ich mir, wenn es mir wichtig ist, aber mit einem Export nach BahnLands Beispiel wäre das deutlich einfacher. Zwar kann ich Neo nicht widersprechen, durch eine verbesserte Such- und Anzeigemöglichkeit wird der Export unwichtiger, aber er wird nicht völlig überflüssig.

Gruß Timba

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Minuten schrieb metallix:

Eine andere moeglichkeit waere das signal einfach mal loeschen, das EP ausklappen und die anlage laufen lassen. Sobald etwas das nicht vorhandene signal referenziert sollte das EP alarm schlagen und dir einen link zu dem entsprechendem eintrag zeigen.

Super Idee! (y) Muss ich mir gleich mal merken für meine eigenen Probleme, die unweigerlich irgendwann auftreten werden. Danke. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 3 Minuten schrieb Timba:

Super Idee! (y) Muss ich mir gleich mal merken für meine eigenen Probleme, die unweigerlich irgendwann auftreten werden. Danke. ;)

Keine ursache,  kam mir halt gerade so in den kopp, als ergebniss:D. Langes gruebeln, ewiges probieren mit V5 und stetiger austausch hier im forum waren die zutaten;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Metallix,

den Fehler habe ich schon selbst gefunden - aber eben etwas umständlich über die EV Protokollierung. Es reicht nämlich m.E. nicht, das Objekt (z.B. Signal 1) zu filtern, da erscheint  der Auslöser nicht sondern nur, das ausgelöst wurde. Also Protokoll vollständig laufen lassen und wie ein Luchs aufpassen, wann das Ereignis eintritt und sofort stopp, dann sient man auch den Auslöser. Das ist aber bei größeren Anlagen kaum ein probates Mittel, bei meiner kleinen geht es noch, aber 20 Züge müssen auch erst einmal über ihre Gleise fahren.

Gruss Baki

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 32 Minuten schrieb metallix:

Hi Baki

Eine andere moeglichkeit waere das signal einfach mal loeschen, das EP ausklappen und die anlage laufen lassen. Sobald etwas das nicht vorhandene signal referenziert sollte das EP alarm schlagen und dir einen link zu dem entsprechendem eintrag zeigen. Wuerde natuerlich helfen wenn die moeglichkeiten ueberschaubar waeren und du den oda die richtigen ausloeser eindeutig kennst. Die entsprechenden aktionen sollten dann vorher deaktiviert werden, so das lediglich die ungeplante(n) aktion(en) den fehler ausloesen....

Cheers

Tom

Das werde ich übrigens auch mal ausprobieren - geht ja über studieren.

Gruss Baki

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb baki2512:

Also Protokoll vollständig laufen lassen und wie ein Luchs aufpassen, wann das Ereignis eintritt und sofort stopp, dann sient man auch den Auslöser.

Falls du mal nicht wie ein Luchs aufpassen möchtest, kannst du dir ein winziges Skript in die EV packen. Als Auslöser nimmst du "Signal schaltet" und trägst dort das betreffende Signal (in diesem Fall "Signal 1") ein. Ins Skript schreibst du nur "error()". Solange das Ereignisprotokoll mitläuft bleibt die Anlage exakt da stehen, wo das Signal geschaltet wird.

beispiel.jpg.4e6111dc64653f3bb999fa8a502a3d14.jpg

Gruß Timba

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

ich habe als Beispiel für eine Export-Ausgabe noch ein etwas komplexeres Beispiel ausgesucht und um die Ausgabe der Objektvariablen ergänzt. Basierend auf dieser Struktur

778870181_10Beispielbersicht.JPG.796c35d0f0e0876668415dff4ff5fa34.JPG

könnte der Export dann nach meinem Verständnis so aussehen, beginnend mit der Auflistung der in dieser Struktur selbst nicht enthaltenen Objektvariablen:

862995502_11BeispielTeil01.JPG.de32fc9dde0933941ec619bc03590964.JPG
1140541392_12BeispielTeil02.JPG.0d95c88b21e74f9c6668344792b551f1.JPG
344724346_13BeispielTeil03.JPG.26a5e3497ff6d4d7f54358e155124a26.JPG

Hierbei habe ich die Schlagwörter (hier konkret eines) vorangestellt und darunter jene Objekte aufgelistet, welchen dieses Schlagwort zugeordnet ist. Danach folgt die Liste aller Objekte, welche Objektvariablen vom Typ "nicht Schlagwort" sind, mit jeweils der Liste der zugeordneten Objektvariablen.

Nachfolgend wird die Struktur der Ereignisdefinitionen abgearbeitet. Hierbei werden die Inhalte eines Ereignismoduls stets gegenüber diesem etwas eingerückt dargestellt, was bei verschachtelten Ereignismodulen zu einer größeren Schachtelungstiefe führt: Jede Ereignisdefinition wird um die Art des Ereignisses und mögliche Parameterwerte ergänzt (entsprechend dem unter der Überschrift "Wann wird das Ereignis ausgelöst?" angezeigten Informationstext). Danach folgt wie bereits oben beschrieben das Lua-Scrigt für die komplette Ereignisdefinition - ebenfalls noch einmal eingerückt:

120461699_14BeispielTeil04.JPG.6e9e47cd71b708e420113b20ff241b33.JPG
1962976346_15BeispielTeil05.JPG.2e3998ab604a63e278d1625aa57abc19.JPG
510515243_16BeispielTeil06.JPG.6b332a517d9785723fcd583d803223ef.JPG
523450448_17BeispielTeil07.JPG.09b8e5062117a25fea76b435d008f267.JPG
1462804887_18BeispielTeil08.JPG.cc05d5e232bf640e188fb07334612023.JPG
1802777066_19BeispielTeil09.JPG.527b9a97602137089c23147080b8bc78.JPG
1545256836_20BeispielTeil10.JPG.3856b0eefc4b1aaa32fbc034910d4b3b.JPG

Abgesehen davon, dass die einzelnen Bedingungen und Aktionen in der Ereignisdefinition nicht mehr über deren "Schlüsselbegriffe" und die zugehörigen Parameter, sondern als Lua-Statements wiedergegeben werden, ist der Inhalt doch weitgehend identisch. Wenn man dabei einzelne Statements möglicherweise nicht sofort "nachvollziehen" kann, bleibt dann immer noch der Ausweg, die entsprechende Aktion in der originalen Ereignissteuerung nachzuschauen (z.B. bedeutet das Statement "$("Wartegleisweiche").state = ($("Wartegleisweiche").state + 1) % $("Wartegleisweiche").stateCount", dass der Zustand der Weiche einfach "umgeschaltet wird" - der "%"-Operator ist hierbei der "modulo"-Operator, mit dem der Zustand, sobald er durch das Hinzuaddieren von "1" den möglichen Maximalwert überschritten hat, wieder auf "0" zurückgesetzt wird).

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Wochen später...
Am 17.11.2019 um 11:07 schrieb Timba:

Falls du mal nicht wie ein Luchs aufpassen möchtest, kannst du dir ein winziges Skript in die EV packen

Hallo Timba, das funktioniert richtig gut (y). Meinen Fehler jetzt hätte ich wohl sonst nicht gefunden (das die EDV auch so genau in Zehntelsekunden arbeitet, dass nicht einmal das EV-Protokoll die zeitliche Abfolge anzeigt).

Am 17.11.2019 um 09:17 schrieb metallix:

Eine andere moeglichkeit waere das signal einfach mal loeschen

Hallo Tom, bei einer komplexeren EV muss ich vor der Fehlerberichtigung aber einmal schließen ohne zu speichern. Sonst muss ich ja alle Ereignisse suchen, wo dieses Signal angesprochen wird und nicht nur das Falsche. Da scheint mir Timbas Lösung praktikabler.

Einen schönen Advent und viele Grüße

Baki

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