Eggu Geschrieben 26. Oktober 2021 Geschrieben 26. Oktober 2021 Hallo, ich möchte anhand eines Beispiels (Bahnübergang) einen besonderen Aspekt der EV-Steuerung/Programmierung darstellen und diskutieren. Wenn ich ein Modul (Teil-Modell/Anlage mit EV-Code) kopiere (Ctrl-C, Ctrl-V) wird zwar das eigentliche Modell dupliziert, nicht aber der EV-Code (was hier auch erwünscht ist). Ob die beiden Kopien dann korrekt (insb. unabhängig voneinander) arbeiten, hängt von der Art des Codes ab. Benutze ich z.B. nur Gleiskontakte mit Schlagworten als Trigger, sollte es funktionieren. Referenzieren mehrere Trigger eine gemeinsame Variable, definiert man diese üblicherweise direkt in der EV-Steuerung als Modulvariable. (z.B. einen gemeinsamen Lok-Zähler, um zu triggern, wann die Schranke geschlossen/geöffnet werden muss). Diese Variable wird aber nicht gedoppelt beim kopieren, aber das bräuchte ich hier. Möchte ich nun erreichen, dass mehrere Kopien korrekt mit dem gleichen gemeinsamen Code arbeiten, muss ich die entsprechenden Variablen und Referenzen auch automatisch mit kopieren (und anpassen). Das erreiche ich, indem ich diese Größen nicht im Modul definiere, sondern alle als Objekt-Variablen (also an ein vorhandenes Objekt oder Dummy-Objekt "hänge"). Allerdings ist der Zugriff dann umständlicher, z.B. von einem Kontakt (Auslöser) indirekt (über eine Objekt-Variable) auf das gemeinsame (Dummy-) Objekt verweisen, dort dann die gewünschte Variable angeben oder weiter verweisen auf ein gemeinsames weiteres Objekt oder Liste (z.B. auf eine Liste der Schranken, die bedient werden sollen). In der EV-Steuerung ist das dann das Konstrukt Variable(erweitert)...Variable(erweitert). Wenn ich das so mache, ist eine Kopie sofort funktionsfähig, ohne weitere Anpassungen, weil beim Kopieren automatisch die Variablen und Objekt-Referenzen angepasst werden. In meinem Beispiel habe ich das mal umgesetzt und beschrieben, das funktioniert auch mit den Verzögerungen, allerdings nicht mit expliziten Timern, diese kann ich nicht an ein Objekt "hängen", sondern nur auf Modulebene definieren. Die Methode ist angelehnt an objekt-orientierte Programmierung, nur dass ich hier keine Klassen vorab definieren kann, sondern gleich eine (kopierbare) Instanz. Geht es auch einfacher ? Modul Bahnübergang: F3646E03-DDF4-435E-8EF5-AB192A7DB659 Hinweis: "Bearbeiten - Einfügen-aus - Anlage" funktioniert anders, da wird ein (externes) Modul inkl. EV-Code eingefügt, füge ich es mehrmals ein, wird auch der EV-Code mehrfach eingefügt. Ist der EV-Code wie oben beschrieben entworfen, müsste ich die Kopien löschen, sonst werden z.B. Zähler mehrfach bedient. Gruß Eggu
Goetz Geschrieben 26. Oktober 2021 Geschrieben 26. Oktober 2021 (bearbeitet) vor 26 Minuten schrieb Eggu: Wenn ich ein Modul (Teil-Modell/Anlage mit EV-Code) kopiere (Ctrl-C, Ctrl-V) wird zwar das eigentliche Modell dupliziert, nicht aber der EV-Code Hallo Eggu, wenn du hingegen die Anlage auf diesen Teilbereich reduzierst und als kleine Anlage abspeicherst, wird beim Import dieser kleinen Anlage in eine andere ... ... auch die zugehörige EV mit importiert und in einem Unterordner der EV abgelegt. So bleiben auch Referenzen etc. erhalten. Viele Grüße Götz Bearbeitet 26. Oktober 2021 von Goetz Bilder eingefügt
Eggu Geschrieben 26. Oktober 2021 Autor Geschrieben 26. Oktober 2021 Hallo Götz, ja, das stimmt. Das hatte ich am Ende unter "Hinweis" ja auch beschrieben. Bei der "herkömmlichen" Programmierung könnte ich so die Teilanlage mehrfach einfügen und hierdurch quasi Kopien erzeugen, und jede Kopie hätte auch ihren eigenen Code, das würde meist funktionieren. Ich hatte ja nach eine Lsg. gesucht, wo alle Modell-Kopien mit dem gleichen gemeinsamen Code arbeiten. weitere Anmerkung: Das "Reduzieren" geht doch nur, wenn ich alle Teile, die nicht zu meinem Teilbereich gehören, weglösche. Komfortabler wäre die Option, direkt einen markierten Teilbereich abspeichern zu können (wie bei Katalog - 3dModelle - Neu-aus-Selektion, aber hierbei wird ja kein EV-Code gespeichert). Gruß Eggu
Goetz Geschrieben 26. Oktober 2021 Geschrieben 26. Oktober 2021 vor 2 Minuten schrieb Eggu: Das hatte ich am Ende unter "Hinweis" ja auch beschrieben. Oh, Entschuldigung Eggu - den Absatz hatte ich übersehen.
Eggu Geschrieben 26. Oktober 2021 Autor Geschrieben 26. Oktober 2021 vor 11 Minuten schrieb Goetz: Oh, Entschuldigung Eggu - den Absatz hatte ich übersehen. Schon ok, nichts zu entschuldigen. Bin immer wieder erfreut, wie schnell Du auf neue Beiträge reagierst. Gruß Eggu
Goetz Geschrieben 26. Oktober 2021 Geschrieben 26. Oktober 2021 vor einer Stunde schrieb Eggu: wie schnell Du auf neue Beiträge reagierst. Wenn ich kann. Das wird in der nächsten Zeit etwas anders sein, weil ich privat mehr gefordert bin.
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden