Jump to content

Empfohlene Beiträge

Geschrieben

Danke. In der Langfassung habe ich es kapiert. Ich habe nämlich nicht nachvollziehen können, was da mit der Text-Liste in dem Beispiel passiert. 

Noch mal für ganz Dumme: Wenn ich von einem Ereignis aus ein anderes Ereignis aufrufe, das eine Verzögerung in sich enthält, dann wird die Verzögerung zwar in dem zweiten (aufgerufenen) Ereignis logisch abgearbeitet, aber das erste (aufrufende) Ereignis wird derweil weiter abgearbeitet, dass ja keine Verzögerung hat.

Das ist aber streng genommen unlogisch, weswegen ich so lange zum Kapieren brauchte. Denn ein aufgerufenes Programm (Ereignis) ist ja von der Logik ein Unterprogramm. Und das Unterprogramm wird durch den Aufruf in die Abfolge des Hauptprogramms eingeschoben, so dass rein logisch das Hauptprogramm anhalten müsste, bis das aufgerufene Unterprogramm vollständig abgearbeitet ist. Die Zeitverzögerung des Unterprogramms wird im Hauptprogramm ignoriert.

Geschrieben
vor einer Stunde schrieb Swen44:

Das ist aber streng genommen unlogisch

Nein, das ist es nicht. Es gibt auf der Anlage ständig Ereignisse, welche alle sofort vollständig abgearbeitet werden müssen, sonst gäbe es Chaos.

vor einer Stunde schrieb Swen44:

Die Zeitverzögerung des Unterprogramms wird im Hauptprogramm ignoriert.

Es gibt keine Haupt- und Unterprogramme. Jedes Ereignis, auch das benutzerdefinierte, ist gleichwertig.

Die Verzögerung ist keine Pause. Vielmehr wird dadurch das gleiche Ereignis nach der eingestellten Zeit nochmals aufgerufen. Innerhalb eines solchen Ereignisses sorgen Bedingungen dafür, dass das so verarbeitet wird, dass es aussieht wie eine Verzögerung. Das kannst Du sofort sehen, wenn Du auf Lua umschaltest.

Geschrieben

Hallo @Swen44,

Vielleicht hilft Dir diese Betrachtungsweise weiter:
Das was Du zu einem bestimmten Ereignis in der EV festlegst, ist eine Liste von Aktionen, die ausgeführt werden sollen, wenn das Ereignis ausgelöst wird und hat mit "Hauptprogramm" und eventuellen "Unterprogrammen" nichts zu tun... die Liste wird einfach nur abgearbeitet.

Gruß
EASY

Geschrieben

Hallo Phrontistes und Easy,

das ist schon alles klar. Es gibt kein Haupt- und Unterprogramm in dem Sinne. Das richtet sich ganz nach der Art des Aufrufs. -

Jedes Ereignis in der Steuerung ist quasi ein kleines Programm. Und es ist auch klar, dass diese Ereignisse parallel abgearbeitet werden müssen, wenn da mehrere Züge unterwegs sind. Sonst würde das Alles ja auch nicht funktionieren.

Wenn ich aber von einem dieser Ereignisse ein anderes Ereignis aufrufe, was vor allen bei den benutzerdefinierten Dingern meist der Fall ist, dann ist das aufgerufene Ereignis dem Ereignis untergeordnet, wovon ich es aufgerufen habe. Und das ist dann mit anderen Begriffen ein Hauptprogramm, was ein Unterprogramm aufruft und im Hauptprogramm nutzt. Die Art des Aufrufs definiert, wie das jeweilige Ereignis einzuordnen ist. Ob jetzt Ereignis oder Programm - das sind nur Begriffe für die selbe Sache. 

Mich hat irritiert, dass das aufrufende Programm (was dadurch zum Hauptprogramm wird) weiter abgearbeitet wird, obwohl das dort aufgerufene sozusagen Unterprogramm noch gar nicht fertig ist. In einer normalen Programmiersprache stopp das aufrufende Programm die Abarbeitung an der Stelle des Aufrufs des anderen (Unter-)Programms, bis das Aufgerufene (Unterprogramm) fertig ist und setzt dann die Abarbeitung des eigenen Programms fort. Es sei denn, man programmiert direkt, dass das ursprüngliche Programm parallel weiter laufen soll. 

Ich habe es ja verstanden. Hier ist das das eben so, wie ihr das beschreibt. Da kamen aber meine Missverständnisse her.

Danke für eure Erklärungen.

LG Swen.

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